一篇综述洞悉医学大型语言模型的原理,应用和挑战

在过去的一年中,随着 GPT-4、LLaMA、Mistral,PaLM 等先进技术的突飞猛进,大型语言模型(Large Language Models)已经引领全球人工智能进入了一个全新的基础模型时代,这一时代不仅开启了技术创新的新篇章,也彻底重塑了各行各业的运作模式。特别是在医疗领域,这些变革显得尤为突出。医疗领域不仅是全球各国竞相投资的重点研究领域,而且与一个国家的医疗水平和综合国力密切相关。在这样的背景下,大型语言模型在医疗领域究竟能带来怎样的变革和影响?

近日,牛津大学的David A. Clifton,罗切斯特大学的罗杰波(Jiebo Luo)和亚马逊的Zheng Li领导的一个联合团队发布了一篇综述报告,介绍了医学大型语言模型在原理、应用和面临的挑战方面的最新进展(截止至2024年),通过深入探讨相关技术发展,提供宝贵的见解,为构建更加实用和高效的医学大型模型奠定坚实的基础。

论文题目: A Survey of Large Language Models in Medicine: Principles, Applications, and Challenges 
论文地址:  https://arxiv.org/abs/2311.05112 
项目地址:  https://github.com/AI-in-Health/MedLLMsPracticalGuide

近期,通用大型语言模型(LLMs)如PaLM、LLaMA、GPT系列和ChatGLM在多种自然语言处理(NLP)任务中展现出前所未有的进展。这些任务包括文本生成、文本摘要和问题回答等。受到这些模型在自然语言处理领域的成功启发,研究者们开始尝试将通用LLM调整应用于医学领域,从而催生了一系列医学专用的大型模型。例如,基于PaLM开发的MedPaLM和MedPaLM-2在美国医学许可考试(USMLE)上的表现,几乎与人类专家(87.0)持平,达到了86.5的竞争性准确率。此外,基于公开可用的LLM (例如LLaMA)衍生出的几个医学LLM包括ChatDoctor、MedAlpaca、PMC LLaMA、BenTsao和Clinical Camel等,正引发越来越多的关注,它们在协助医疗专业人员改善患者护理方面展现出巨大潜力。

尽管这些医学LLMs取得了令人鼓舞的成果,但在其开发和应用过程中,仍面临一些挑战。首先,许多模型主要关注生物医学NLP任务,如对话和问题回答,但其在临床实践中的实际应用价值往往被忽视。近期的研究开始探讨医学LLM在不同临床场景中的应用潜力,例如,电子健康记录(EHRs)的出院结论生成、健康教育和护理计划等。然而,这些研究多为案例研究,并依赖于临床医生对少量样本的人工评估,因此缺乏全面的评估数据集来衡量模型在实际临床场景中的表现。其次,大多数现有医学LLM的研究主要聚焦于医学问题回答的生物医学NLP性能,而忽略了文本摘要、关系提取、信息检索和文本生成等其他生物医学任务。这些研究空白激发了我们进行这项调查,旨在全面回顾LLM的发展及其在医学领域的应用,并探讨面临的挑战和机遇。

如图1所示,本综述旨在回答以下问题:

  • LLMs是什么?如何有效地构建医学LLMs?(第一章节)
  • 当前医学LLM的评估方式是什么?它们相较于传统模型有何独特之处?(第二章节)
  • 医学LLMs在临床环境中应如何应用?(第三章节)
  • 在临床实践中实施医学LLMs时, 需要解决哪些挑战?(第四章节)
  • 如何优化医学LLMs的构建,以增强其在临床环境中的适用性,最终为医学界带来积极的社会影响?(第五章节)

对于第一个问题,我们总结了现有医学LLMs的关键原则,详细介绍了它们的基本结构、参数数量以及用于模型开发的数据集。此外,我们还提供了这些模型构建过程中的关键见解,这对于希望根据特定需求(如计算限制、私有数据和本地知识库)定制医学LLM的研究人员和医疗从业者极具价值。

对于第二个问题,我们通过广泛的调查,对现有医学LLMs在十种生物医学NLP任务(包括判别和生成)上的性能进行了评估。这种全面的分析帮助我们理解医学LLMs在多个方面是如何超越传统医学人工智能模型的。通过展示它们的能力,我们旨在阐明医学LLMs在临床环境中部署时所带来的优势。

第三个问题着重于医学LLMs在临床环境中的实际应用。我们为七个临床应用场景提供了指南,详细说明了医学LLM的具体实施方式,并强调了在每个场景中能够发挥的能力。

第四个问题强调了在临床实践中部署医学LLM时必须克服的挑战。这些挑战包括生成幻觉(即产生连贯但事实不正确的输出)、模型的可解释性问题、伦理考量,以及医学LLM的法律和安全问题。我们还提倡对医学LLM进行更广泛的评估,比如信任度,以确保其在临床环境中的负责任和有效使用。

最后一个问题,我们展望了医学LLM的未来发展方向,并为那些希望推动该领域发展、最大化医学LLMs潜力的研究人员和从业者提供了指导。

通过回答这些问题并提供对医学LLM的全面视角,我们希望能促进对医学人工智能领域的更深入理解,更广泛的合作以及更快的进展。总结而言,本综述做出了以下贡献:

  1. 我们对医学领域中的大型语言模型进行了全面回顾,并总结了它们在十个生物医学下游任务中的表现。
  2. 我们强调了医学LLMs的临床应用,并为其在各种临床环境中的部署提供了实用指南。
  3. 我们识别并讨论了在临床实践中应用医学LLM时面临的挑战,旨在激励该领域的进一步研究和发展。
图 1: 医学大语言模型综述的整体结构

一、医学大型语言模型的原理 

为了清晰起见,本节重点总结医学大语言模型的原理。现有的医学LLM主要是包括三种类型(1)从头开始进行预训练,(2)从现有的通用LLM中进行微调,或者(3)通过提示将普通LLM与医学领域对齐直接获得。因此,我们从预训练、微调和提示三种方法介绍了医学LLM的原理。

预训练

预训练是医学大型语言模型开发中的一个关键过程,它涉及在庞大的医学文本库上训练模型,以吸收和学习丰富的医学知识。这些文本通常包括结构化和非结构化的数据,如电子健康记录(EHR)、临床笔记、DNA序列和医学文献等。特别值得一提的是,PubMed、MIMIC-III临床笔记和PubMed Central(PMC)文献是医学LLM预训练中常用的三个主要医学语料库。模型可以选择在单一语料库或多个语料库的组合上进行预训练。例如,PubMedBERT和ClinicalBERT分别在PubMed和MIMIC-III上进行预训练。而BlueBERT结合了这两个语料库,BioBERT则同时在PubMed和PMC上进行预训练。此外,佛罗里达大学健康EHR也被用于GatorTron和GatorTronPT的预训练中。而MEDITRON则是在临床实践指南(CPG)上接受预培训,CPG主要用于指导医疗从业者和患者进行循证决策。

在预训练医学LLM时,通常会对通用LLM中常用的训练目标进行细化,包括掩蔽语言建模、下一句预测和下一个标记预测。例如,BERT系列模型如BioBERT、PubMedBERT、ClinicalBERT和GatorTron,主要采用掩蔽语言建模和下一句预测进行预训练。而GPT系列模型,如BioGPT和GatorTronGPT,则主要采用下一个令牌预测进行预训练。

预训练完成后,医学LLM通常会进行微调,然后在不同的生物医学人工智能任务中进行评估,以检验其理解和生成相关文本的能力。一旦经过预训练,LLM将掌握丰富的通用语言表示,这些表示可用于各种下游任务。为了在这些任务上获得强大的性能,LLM可以在一个小型、特定于任务的数据集上进行微调,即进一步训练。这使得模型能够使其通用语言表示适应目标任务的特定要求。大规模预训练与微调结合,已被证明能有效实现最先进的性能。

微调

从头开始训练医学LLMs是高成本和耗时的,因为它需要大量(例如几天甚至几周)的计算能力和体力。一种解决方案是用医学数据对通用语言大模型进行微调,研究人员提出了不同的微调方法,用于学习特定领域的医学知识并获得医学LLM。当前的微调方法包括监督微调(SFT)、指令微调(IFT)和参数有效调整。

  • 监督微调(SFT): 旨在利用高质量的医学语料库,可以是医患对话、医学问答和知识图谱。所构建的SFT数据用作预训练数据的延续,以进一步预训练具有相同训练目标的一般LLM,例如下一个令牌预测。SFT提供了一个额外的预培训阶段,使普通LLM能够学习丰富的医学知识并与医学领域保持一致,从而将其转变为专业的医学LLM。
  • 指令微调(IFT): 首先构建基于指令的训练数据集,这些数据集通常由指令输入输出三元组组成,例如指令问答。IFT的主要目标是增强模型遵循各种人工/任务指令的能力,使其输出与医学领域保持一致,从而生成专门的医学LLM。
  • 参数高效调整: 旨在大幅降低微调通用LLM的计算和内存需求。主要思想是通过仅微调这些LLM中的最小参数子集(或附加参数),保持预训练LLM中大多数参数不变。常用的参数有效微调技术包括低秩自适应(LoRA)、前缀微调和适配器微调。

提示工程

与预训练相比,微调大大降低了计算成本,但它需要进一步的模型训练和高质量数据集的收集来进行微调,因此仍需要消耗一些计算资源和人工。相反,“提示”方法有效地将一般LLM(如PaLM)与医学领域(如MedPaLM)对齐,而无需训练任何模型参数。流行的提示方法包括零/少样本提示、思想链提示、自一致性提示和提示调整。

  • 零/少样本提示旨在直接给出指令,提示LLM按照给定指令有效执行任务。零样本提示没有提供示例。在要求LLM执行任务之前,很少有样本提示会向LLM提供少量示例或任务演示。
  • 思想链提示进一步提高了模型输出的准确性和逻辑性。具体来说,通过提示词,思维链提示旨在提示模型在处理下游(复杂)问题时生成推理的中间步骤或路径。
  • 自一致性提示建立在思维链提示之上,以进一步增强回复的稳健性。它鼓励模型多次尝试生成同一问题的多个答案,然后在不同的尝试中选择最一致的答案,从而提高模型性。
  • 提示调整旨在通过采用提示和微调技术来提高下游模型的性能。提示调整方法引入了可学习的提示,即。可训练的连续向量,可以在微调过程中进行优化或调整,以更好地适应不同的下游场景和任务。
图 2: 医学大语言模型的进化树

为了进一步展现医学大型语言模型的发展现状,我们制作了医学大模型在不同分支上的进化树(图 2)。此外,我们还尝试通过MedQA (USMLE-style) 数据集性能图(图 3)洞察医学大语言模型的能力发展,来分析现有的医学LLMs是否已经超过人类专家判断水平。

图 3: 通过MedQA (USMLE-style)性能图洞察医学大语言模型的发展

我们尝试通过不同结构的参数进化图(图 4)洞察医学大语言模型的发展。随着模型规模的扩大,哪种结构有可能在医学任务上能够出现类似于通用LLM模型的“涌现”(GPT 2 -> GPT 3),从而实现超级医学大型语言模型。

图 4: 通过不同结构的参数进化图洞察医学大语言模型的发展

二、下游生物医学自然语言处理任务 

在本节中,我们将介绍两种流行的下游任务:生成任务和判别任务,包括十种有代表性的下游任务,这些任务将进一步构建临床应用。我们首先描述了下游任务及其广泛使用的评估数据集,然后讨论了适用于这些任务的LLM,并比较了它们的性能。

  • 判别任务:用于根据给定的输入数据将数据分类或区分为特定的类别。它们涉及对不同类型的数据进行区分,通常是对结构化文本或非结构化文本中的相关信息进行分类、分类或提取。具有代表性的判别任务包括问答、实体提取、关系提取、文本分类、自然语言推理、语义文本相似性和信息检索。
  • 生成任务:与专注于理解和分类输入文本的判别性任务不同,生成性任务需要一个模型来根据给定的输入准确地生成流畅和合适的新文本。这些任务包括医学文本摘要、医学文本生成和文本简化。
图 5: GPT-3.5 turbo、GPT-4、最先进的任务特定微调模型和人类专家在11个数据集的7个下游生物医学NLP任务上的性能比较

图 5 中呈现的是各种医学LLM之间的性能对比。在这个对比中,我们观察到某些通用LLM(例如GPT-3.5-turbo和GPT-4)在多种下游任务上展现出了卓越的性能。这一点在问答任务中尤为突出,如图中的蓝线所示,GPT-4的表现不仅始终优于专门针对特定任务微调的模型,甚至与人类专家的表现(如紫线所示)相媲美。所评估的问答数据集包括MedQA(USMLE)、PubMedQA和MedMCQA等。

然而,当我们转向非问答任务时,发现通用LLM的性能往往不如特定任务微调的模型。例如,在使用NCBI疾病数据集进行的实体提取任务中,专门微调的BioBERT模型取得了89.36的F1分数,而GPT-4的表现仅为56.73。这种差异可能是因为问答任务本质上是封闭式的,即正确答案已经在有限的选项中提供。而在开放式的非问答任务中,模型必须在广泛的可能选项中预测正确答案,有时甚至没有任何候选答案可供参考。

总体来看,这些比较结果明确显示,当前的通用LLM在问答任务上具有强大的能力,但在其他任务类型上仍有改进空间。因此,我们建议在评估医学LLM时,应将其应用范围扩展到包括非问答任务在内的更广泛的任务类型,而不应仅限于医学问答任务。这种全面的评估方式将更好地反映医学LLM的真实能力和潜在的应用价值。

三、医学大型语言模型的临床应用 

  • 医学诊断:包括医生使用来自测试的客观医学数据和自我描述的主观症状来总结患者最可能出现的健康问题。
  • 格式化和ICD编码:国际疾病分类(ICD)是一种标准化临床会议的诊断和程序(如手术)信息的方法。
  • 临床报告生成:是指医护人员在每次患者就诊后必须完成的标准化文件。
  • 医学教育:医疗保健专业领域特定角色的培训至关重要。医学教育既适用于专业人员,也适用于普通公众。大型语言模型可以通过不同的方式融入医学教育系统,包括回答问题、帮助学生准备医学考试以及担任苏格拉底式导师。
  • 医疗机器人:医疗机器人可用于医学的许多方面,包括手术、运送病人、协助护士和医疗康复。
  • 医学语言翻译:医学语言翻译主要有两个方面。一种是将医学术语从一种语言翻译成另一种语言。另一种是将专业医学对话翻译成非专业人员易于理解的表达。
  • 心理健康支持:心理健康支持包括诊断和治疗。抑郁症是一种常见的心理健康问题,通过多种疗法进行治疗,包括认知行为疗法、人际心理疗法、心理动力疗法等。

四、医学大型语言模型的当前挑战 

  • 幻觉:LLM的幻觉是指生成的输出包含不准确或不真实信息的现象。
  • 缺乏评估基准和指标:目前的基准和指标往往无法评估LLM的整体能力,尤其是在医疗领域。例如,MedQA(USMLE)和MedMCQA对问答任务提供了广泛的覆盖,但未能评估重要的LLM特定指标,包括可信度、有用性、可解释性和忠诚度。因此,必须开发特定于领域和LLM的基准和指标。
  • 领域数据限制:与用于训练通用LLM的数据集相比,医学领域中的当前数据集仍然相对较小。
  • 新知识适应:LLM接受广泛数据训练以学习知识。一旦经过训练,通过再训练将新知识注入LLM昂贵且低效。
  • 人类行为对齐:行为一致性是指确保LLM的行为与其任务目标一致的过程。现有工作已用于将LLM与一般人类行为相一致,但一般人类和医疗专业人员之间的行为存在差异,因此在医疗领域采用LLM仍然具有挑战性。
  • 道德、法律和安全问题:人们对在医学领域使用大语言模型提出了担忧,重点关注伦理、问责制和安全性。

五、医学大型语言模型的未来方向 

  • 引入新的评测基准: 传统的基准主要衡量医学问答的准确性,但不能充分掌握医学大型预览模型所需的全方位临床技能。人们对使用以人为中心的标准化医学考试进行评估提出了批评,认为通过这些考试并不一定反映LLM在现实世界临床环境中所需的细微专业知识方面的熟练程度。因此,人们正在就需要更全面的基准达成共识。这些能力应包括从权威医学参考文献中获取信息、适应不断发展的医学知识以及明确传达不确定性等。此外,考虑到医疗保健的敏感性,这些基准还应评估公平、道德和公平等因素,这些因素虽然至关重要,但会带来量化挑战。其目的是创建更有效地反映实际临床场景的基准,从而更准确地衡量LLM是否适合担任医疗顾问角色。
  • 集成时间序列、视觉和音频数据集成的多模态医学大模型:现有方法提出了集成视觉和语言的各种基于多模态医学大模型的框架,以采用医学图像-文本对进行微调,从而使医学大模型能够有效地理解输入的医学图像。近来研究者认为将视觉、音频和语言输入集成在大模型中中会极大地帮助牙科诊断,然而,只有极少数的医学LLM可以处理时间序列数据,如心电图(ECG)和血压计(PPG),尽管这些数据对医学诊断和监测很重要。
  • 医学代理(Agents):基于LLM的代理(即设计用于执行特定医疗任务或功能的智能系统或软件)通过类似人类的行为,如角色扮演和通信,在解决复杂任务(如软件设计、分子动力学模拟)方面取得了重大进展。然而,在医学领域内有效地整合这些Agents仍然是一个挑战。医学领域涉及许多角色和决策过程,尤其是在疾病诊断中,通常需要一系列研究,包括CT扫描、超声波、心电图和血液测试。
  • 大语言模型在医学子领域发展:目前医学大模型的研究主要集中在普通医学上,这可能是因为该领域的数据可用性更高。这导致医学大模型在“康复治疗”和“运动医学”等专业领域的应用代表性不足。鉴于不运动对全球健康构成的挑战,后者尤其具有巨大的潜力。世界卫生组织将不运动确定为非传染性疾病的主要风险因素,影响了全球四分之一以上的成年人口。
  • 跨学科合作:正如跨学科合作在核能生产等安全关键领域至关重要一样,医学和技术界之间开发医学大模型的合作对于确保人工智能在医学中的安全性和有效性至关重要。医学界主要由科技公司提供大模型,而不质疑他们的数据训练,这是一种次优情况。因此,需要鼓励相关医务人员积极参与创建和部署医疗大模型,提供相关的训练数据,定义医学大模型的预期收获,并在现实世界中进行测试以评估这些优势。

关于TechBeat人工智能社区

TechBeat(www.techbeat.net)隶属于将门创投,是一个荟聚全球华人AI精英的成长社区。

我们希望为AI人才打造更专业的服务和体验,加速并陪伴其学习成长。

期待这里可以成为你学习AI前沿知识的高地,分享自己最新工作的沃土,在AI进阶之路上的升级打怪的根据地!

更多详细介绍>>TechBeat,一个荟聚全球华人AI精英的学习成长社区 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/240523.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

opencv多张图片实现全景拼接

最近camera项目需要用到全景拼接,故此查阅大量资料,终于将此功能应用在实际项目上,下面总结一下此过程中遇到的一些问题及解决方式,同时也会将源码附在结尾处,供大家参考,本文采用的opencv版本为3.4.12。 首…

Base64编码原理解析

文章目录 一、Base64Base64编码的原理如下:以字符串"hello world"为例,它的ASCII码为(下面👇是ASCII码对照表):将这些ASCII码转换为二进制(对照上表):将上述二…

Pyside6入门教学——编写一个UI界面并显示

1、安装Pyside6 输入下列命令安装Pyside6。 pip install Pyside6 2、设计UI 打开Qt设计工具(在安装Pyside6包的目录下)。 【注】我这用的是anaconda虚拟环境,所以我的路径是D:\App\Anaconda3\envs\snake\Lib\site-packages\PySide6。设计…

前端(html+css+javascript)作业--展现家乡的网页

期末期间,老师布置了前端作业,现在放到这里,给各位同志参考。 桂平市是广西壮族自治区的一个美丽的城市,拥有丰富的历史文化和自然景观,属于贵港市管辖,那为什么是看起来是市级而不是县级,其实他…

GaussDB(DWS)查询优化技术大揭秘

GaussDB(DWS)查询优化技术大揭秘 大数据时代,数据量呈爆发式增长,经常面临百亿、千亿数据查询场景,当数据仓库数据量较大、SQL语句执行效率低时,数据仓库性能会受到影响。本文将深入讲解在GaussDB(DWS)中如何进行表结构设计&#…

uni-app 经验分享,从入门到离职(年度实战总结:经验篇)——上传图片以及小程序隐私保护指引设置

文章目录 🔥年度征文📋前言⏬关于专栏 🎯关于上传图片需求🎯前置知识点和示例代码🧩uni.chooseImage()🧩uni.chooseMedia()📌uni.chooseImage() 与 uni.chooseMedia() 🧩uni.chooseF…

5D动感影院新奇体验丰富环境特效7D互动影院

5D动感影院太火啦!凭借真实互动感、全视景高清屏幕、立体环绕音效、D打造新颖沉浸式观影体验,成为年轻人/家长/小朋友的新晋打卡聚集地,时刻上演着精彩绝伦的视觉盛宴! 1、5D动感影院【硬件组成】:动感平台、金属银幕、…

Alinx ZYNQ 7020 LED调试--in RAM

设置拨码开关为JTAG方式 烧写LED bit stream a. 点击“Program device”烧录程序到FPGA中(重新上电程序就丢失了) b. /01_led/led.runs/impl_1/led.bit 程序烧录到Flash中 ZYNQ与以往的直接烧录Flash不同,首先必须PS,然后烧…

PXE和kickstart无人值守安装

PXE高效批量网络装机 引言 1.系统装机的引导方式 启动 操作 系统 1.硬盘 2.光驱(u盘) 3.网络启动 pxe 重装系统? 在已有操作系统 新到货了一台服务器, 装操作系统 系统镜像 u盘 光盘 pe: 小型的 操作系统 在操…

HTTP/HTTPS代理IP在多线程爬虫项目中的实践

在多线程爬虫项目中,HTTP/HTTPS代理IP的实践主要包括以下几个关键步骤: 1. 收集代理IP资源: - 从免费或付费代理IP提供商、公开代理列表网站(如西刺代理、无忧代理等)抓取代理IP和端口信息。 - 存储这些IP到数据库或者…

统计学-R语言-5.3

文章目录 前言分位数统计量的标准误总结 前言 本篇文章即为概率与分布的最后一篇文章。 分位数 分位数函数是累积分布函数的反函数。 p-分位数是具有这样性质的一个值:小于或等于它的概率为p。 根据定义,中位数即50%分位数。 分位数通常用于置信区间的…

RT-Thread 15. list_timer与软定时器

1. 代码 void rt_thread_usr1_entry(void *parameter) {/* set LED2 pin mode to output */rt_pin_mode(LED2_PIN, PIN_MODE_OUTPUT);while (1){rt_pin_write(LED2_PIN, PIN_HIGH);rt_thread_mdelay(2000);rt_pin_write(LED2_PIN, PIN_LOW);rt_thread_mdelay(3000);} }int ma…

前端公共组件库优化

背景 前段时间入职了新公司后,做一些内部前端基建的工作,其中一个工作就是优化现有的frontend-common公共组件库。之前的组件库一直是以源码依赖的形式存在,即各个项目通过git submodule的方式将该仓库引入到各个项目中,作为一个…

【K8S 云原生】K8S的对外服务—ingress

目录 一、K8S的Service 1、Service的作用 2、Service类型: 二、ingress 1、ingress的组成: 2、ingress资源的定义项: 3、ingress暴露服务端的方式 3.1、DeploymentLoadBalancer模式: 1、工作流程图: 3.2、Dae…

PDF转PowerPoint - Java实现方法

通过编程实现PDF转PPT的功能,可以自动化转换过程,减少手动操作的工作量,并根据需要进行批量转换。将PDF文件转换为PPT文档后,可以利用PPT的丰富功能和动画效果,达到更好的演示效果。 在Java中,我们可以使用…

PyTorch损失函数(二)

损失函数 5、nn.L1Loss nn.L1Loss是一个用于计算输入和目标之间差异的损失函数,它计算输入和目标之间的绝对值差异。 主要参数: reduction:计算模式,可以是none、sum或mean。 none:逐个元素计算损失,返…

清晰光谱空间:全自动可调波长系统的高光谱成像优势

高光谱成像技术 高光谱成像技术是一种捕获和分析宽波长信息的技术,能够对材料和特征进行详细的光谱分析和识别。高光谱成像技术的实现通过高光谱相机,其工作原理是使用多个光学传感器或光学滤波器分离不同波长的光,并捕获每个波段的图像&…

Node+Express编写接口---服务端

开始: 个人兴趣爱好,欢迎大家多多指教!(点击直达源码!) node_vue_admin: 第一个以node为后端,vue为前端的后台管理项目https://gitee.com/ah-ah-bao/node_vue_admin.git 第一步:安装 安装Node.js 点击直达Node.js (nodejs.org) 安装Navic…

点赞模块设计 - Redis缓存 + 定时写入数据库实现高性能点赞功能

点赞模块设计 - Redis缓存 定时写入数据库实现高性能点赞功能 源码地址:github.com/cachecats/c… 点赞是作为整个系统的一个小模块,代码在 user-service 用户服务下。 本文基于 SpringCloud, 用户发起点赞、取消点赞后先存入 Redis 中,再…

WordPress回收站自动清空时间?如何关闭回收站或设置自动清理天数?

我们在WordPress后台的文章、页面、评论等页面都可以看到有回收站,意思就是我们不能直接删除某篇文章、页面、评论,而是需要现将它们移至回收站,然后再到回收站永久删除,或等回收站自动清理。 如上图所示,WordPress 6.…