振弦采集仪在大型工程安全监测中的应用探索

振弦采集仪在大型工程安全监测中的应用探索 振弦采集仪是一种用于监测结构振动和变形的设备,它通过采集振弦信号来分析结构的动态特性。在大型工程安全监测中,振弦采集仪具有重要的应用价值,可以帮助工程师和监测人员实时了解结构的状况,及时发现潜在的安全隐患。 一,振弦采集仪可以用于监测工程的结构健康状况。大型工程如桥梁、大楼等长期承受各种荷载和环境影响,容易出现疲劳、老化、裂缝等问题。通过安装振弦采集仪,可以实时监测结构的振动状态,发现结构的异常变化,预测结构的使用寿命,及时采取维修或加固措施,保证工程的安全可靠运行。 二,振弦采集仪还可以用于监测工程的变形情况。在施工过程中,工程结构的变形是常见的现象,如地基下沉、变形引起的裂缝等。振弦采集仪可以实时监测结构的变形情况,通过对变形数据的分析,可以判断结构的稳定性,避免结构的过度变形导致安全事故的发生。 三,振弦采集仪还可以用于监测工程中的风险隐患。大型工程通常承受着各种不确定的风险,如风灾、地震、洪水等自然灾害。通过安装振弦采集仪,可以实时监测结构的振动,及时了解工程受到的外部影响,预测风险隐患,并做出相应的防范和应对措施,提高工程的安全性。 在实际应用中,振弦采集仪的安装和使用相对简单,只需将振弦传感器固定在结构上,通过数据线将其连接到采集仪上即可。采集仪可以通过有线或无线方式将数据传输到监测中心,工程师和监测人员可以通过电脑或手机等设备实时获取数据,并进行分析和判断。 总结,振弦采集仪在大型工程安全监测中的应用具有重要意义。它可以实时监测结构的振动和变形情况,帮助工程师和监测人员预测结构的健康状况,发现和解决潜在的安全隐患,保障工程的安全运行。随着科技的不断进步,振弦采集仪在大型工程安全监测中的应用将会越来越广泛,为工程安全提供更加可靠的保障。

从 iPhone 传输到Android 3 种简单方法

使用 iPhone 多年后,也许您想切换到Android并尝试一些新的东西?不管您是否相信,如果您确实做出了这样的决定,您很可能会遇到将数据从 iPhone 传输到Android的问题。由于手机数据对于当今的人们来说非常重要,因此当您切换到另一部手机时丢失它是不明智的。 在本指南中,您将学习 3 种如何从 iPhone 转移到Android简单方法。它们将帮助您将所有数据(例如联系人、短信、照片、视频、音乐、应用程序、日历等)从旧 iPhone 传输到新Android。 方法 1:如何一键将所有数据从 iPhone 传输到Android Coolmuster Mobile Transfer(Windows / Mac)是最好的 iPhone 到Android传输应用程序,旨在在手机之间传输数据。只需一键,您就可以轻松地将几乎所有数据从 iPhone 传输到Android ,包括联系人、短信、音乐、视频、照片、电子书(PDF 和 ePub)等。除了 iPhone 到Android传输外,它还支持传输从iPhone到iPhone,从Android到Android ,还可以从Android传输到iPhone。 下面是详细的指南,向您展示如何逐步从 iPhone 转移到Android。 第 1 步:在 PC 上启动程序 在计算机上安装并启动该程序,您将看到如下所示的初始界面。 第 2 步:将您的设备连接到计算机 使用 USB 线将您的设备连接到计算机。当iDevice和Android设备都成功连接到电脑上的程序时,您将看到如下界面。 第 3 步:选择您要传输的数据 可传输的数据将显示在中间面板上。选择您想要从 iPhone 传输到Android数据,然后单击“开始复制”按钮开始传输。 方法 2:如何使用云存储服务从 iPhone 传输到Android 一般来说,如果你想切换到Android ,将iPhone的所有内容备份到国内云存储服务并将其下载到新的Android是一个好主意。它支持档案、音频、图像、文本和视频等一般文件。此方法非常简单,您只需按照下面提供的指南即可继续。 以下是将数据从 iPhone 传输到Android方法: 第 1 步:下载并安装云存储服务应用程序 首先,您需要在设备上下载并安装国内云存储服务应用程序。您必须确保应用程序是最新版本,以便支持设备从iPhone切换到Android及其新的相关功能。 第2步:运行应用程序并使用账户登录 在 iPhone 上打开该应用程序并使用您的账户登录。然后您将看到位于左上角的菜单。单击它,然后转到“设置”>“备份”。

力扣每日一题 6/27 字符串 贪心

博客主页:誓则盟约系列专栏:IT竞赛 专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ 2734.执行子串操作后的字典序最小字符串【中等】 题目: 给你一个仅由小写英文字母组成的字符串 s 。在一步操作中,你可以完成以下行为: 选择 s 的任一非空子字符串,可能是整个字符串,接着将字符串中的每一个字符替换为英文字母表中的前一个字符。例如,'b' 用 'a' 替换,'a' 用 'z' 替换。 返回执行上述操作 恰好一次 后可以获得的 字典序最小 的字符串。 子字符串 是字符串中的一个连续字符序列。 现有长度相同的两个字符串 x 和 字符串 y ,在满足 x[i] != y[i] 的第一个位置 i 上,如果 x[i] 在字母表中先于 y[i] 出现,则认为字符串 x 比字符串 y 字典序更小 。 示例 1: 输入:s = "cbabc" 输出:"baabc" 解释:我们选择从下标 0 开始、到下标 1 结束的子字符串执行操作。 可以证明最终得到的字符串是字典序最小的。 示例 2: 输入:s = "acbbc" 输出:"abaab" 解释:我们选择从下标 1 开始、到下标 4 结束的子字符串执行操作。 可以证明最终得到的字符串是字典序最小的。 示例 3:

PyCharm 2024.1最新变化

PyCharm 2024.1 版本带来了一系列激动人心的新功能和改进,以下是一些主要的更新亮点: Hugging Face 模型和数据集文档预览:在 PyCharm 内部快速获取 Hugging Face 模型或数据集的详细信息,通过鼠标悬停或使用 F1 键打开文档工具窗口来预览。 JavaScript 和 TypeScript 全行代码补全:基于机器学习技术的全行代码补全功能扩展到了 JavaScript 和 TypeScript,提供基于当前文件上下文的智能补全建议。 编辑器中的粘性行功能:在滚动代码时,类或方法的起始行会自动固定在编辑器顶部,保持关键代码结构的可视性。 编辑器内代码审查集成:为 GitHub 和 GitLab 用户提供了增强的代码审查体验,审查模式与编辑器深度集成,提升了审查效率。 新终端 Beta:PyCharm 2024.1 版本重做了终端,提供了一系列可视化和功能改进,简化命令行任务。 AI Assistant 功能:PyCharm Professional 新增了 AI Assistant 功能,可以一键创建包含生成代码的文件,以及生成架构感知型 SQL 查询。 自定义 PyCharm IDE 界面大小:新增了界面缩放功能,用户可以调整整个 IDE 的显示比例,以适应不同视觉需求和屏幕尺寸。 前端开发增强:支持 Vue、Svelte 和 Astro 文件中组件的用法提示,以及对 GraphQL 和 TypeScript 的改进。 数据库工具优化:PyCharm Professional 功能优化,包括简化的会话方式、数据编辑器中的本地筛选等。 增强的 Terraform 支持:PyCharm 2024.1 显著提升了对 Terraform 的支持,简化了基础架构的创建和管理流程。 这些更新使得 PyCharm 2024.1 成为了一个更加强大和全面的开发工具,无论是在机器学习、Web 开发还是数据库管理方面,都能提供高效的支持和体验 。

一键进阶ComfyUI!懂AI的设计师现在都在用的节点式Stable Diffusion!内附安装包

大家好,我是设计师阿威 目前使用 Stable Diffusion 进行创作的工具主要有两个:WebUI 和 ComfyUI。而更晚出现的ComfyUI凭借超高的可定制性和复现性迅速火遍全球。有设计师表示SD发布了XL1.0后,ComfyUI用它优秀的底层逻辑率先打击了臃肿不稳定的WebUI1.6,成为更适合“体验”XL的SD生图工具。 本文就来具体介绍一下ComfyUI是什么?为什么好?怎么用? 一、ComfyUI 简介 ComfyUI是一个专为Stable Diffusion设计的基于节点的图形用户界面(GUI),简单来说就是将整个图像生成过程分解为多个独立的节点,每个节点都有自己独立的功能,例如加载模型,文本提示,生成图片等等。每个模块通过输入和输出的线连在一起变成一个完整的工作流。 整个过程用户可以灵活的调整和配置不同的功能节点,这就代表整个模型更加自由,控制更加精准。 二、LDM底层逻辑 相比于WebUI,ComfyUI的工作流模式更加贴近Stable Diffusion的底层运行逻辑,这对于新手来说有一定的学习门槛,但是在完全掌握以后使用ComfyUI将会变得非常轻松,同时在AI盛行的时代,懂得一些底层逻辑也有助于设计师后续的发展。所以本文将结合SD的底层逻辑和大家简单解释ComfyUI的基础节点。 Stable Diffusion之所以叫Stable,是因为公司叫StabilityAI。其基础模型是Latent Diffusion Model(LDM),翻译为潜在扩散模型,可以理解为主要的图片生成流程都在一个叫「latent space(潜在空间)」的魔法盒子里进行。 图片在这个空间存在的方式是我们无法识别的向量,我们只需要知道这些我们无法识别的东西所表示的信息和图片相差无几,但是数据尺寸却变得非常小就行,这是一个类似于压缩的过程,所以在这个空间中进行运行可以大大缩小运行内存。 这个过程可以简单理解为,向潜在空间输入文件,数据经过处理生成图片并输出 三、与WebUI的差异 作为现在最火爆的两大创作工具, WebUI 开箱即用,基本功能齐全,社区也有很多的插件支持,入门比较简单,适合新手,但是可定制性稍微差点,很多作品不容易传播复现,使用API进行操作也有一定的难度。 ComfyUI 虽然出来的晚一点,但是它的可定制性很强,可以让创作者搞出各种新奇的玩意,通过工作流的方式,也可以实现更高的自动化水平,创作方法更容易传播复现,发展势头特别迅猛。两者对比有非常多显著的差别。 · ComfyUI对显卡比较友好 即使是GPU小于3G的情况下也能正常工作。它占用的显存更少,在相同显存条件下能够生成更大尺寸的图像。同时,Mac电脑也能顺利运行ComfyUI(建议M1以上的电脑使用),虽然依旧达不到Windos的运行效率,但这也给Mac用户提供了一个可以使用SD生图的机会。而WebUI近乎抛弃了12G显存以下的用户,显存使用效率较低,更不提Mac用户。 · ComfyUI运行效率极大的提高 设计师通过 ComfyUI 和 Automatic1111 WebUI 运行了一批 20 张图像,以查看每张图像的总时间。这些图像基于Stable Diffusion 1.5模型,分辨率为 512x768。作为参考,使用的是 RTX 3060(12GB VRAM)。最后的结果如下 WebUI要花费ComfyUI两倍多的时间,这是一个相当大的的差距。当你使用SD生成视频渲染每一帧时这种时间差异会更加明显。 · ComfyUI可以实现实时预览 用户能够即时看到生成结果。这归功于节点拼接的高自由度,你可以在任何一个位置插入图片生成的功能节点,这样就可以在你想要预览图片的位置实时预览图片生成效果。 · ComfyUI可以完全实现工作流的复用 ComfyUI的工作流可以单独作为Json文件保存,你可以通过下载的工作流文件直接使用理想效果的工作流,也可以在这份文件上进行任意的修改和添加。值得注意的是,通过ComfyUI生成的图片原文件也保留着工作流数据,也就是说,你只要下载社交媒体上设计师上传的图片原文件拖拽放入ComfyUI中,工作流会被立刻复现。 · 与WebUI共通模型 WebUI与ComfyUI本质都是使用Stable Diffusion大模型进行生图,只是使用方式不同,所以如果你是WebUI的老用户,你可以直接将WebUI中使用的模型与ComfyUI共通,过程非常简单,后面会提到。 四、使用技巧 在这里为新手的设计师提供一些你一定会用到的使用技巧 · ComfyUI Manager ComfyUI是完全通过节点组成,所以下载不同的节点是最开始就会遇到的问题。ComfyUI Manager作为一个节点,你可以将它看作一个插件,它可以下载几乎所有你能使用到的节点,并且提供了更新、管理自定义节点等等的功能。下载了它几乎等于你不会再通过Github安装节点。 安装完成ComfyUI Manager后,重启ComfyUI,在右边可以找到一个「manager」点击就可以进入插件界面。 其中有两个最常用的功能就是搜索安装节点和一键安装工作流中的所有缺失节点。

pyspark从0开始的入门教程

Apache Spark 简介 Apache Spark 是一种分布式处理系统,用于在大型数据集上执行大数据和机器学习任务。 作为数据科学爱好者,您可能熟悉在本地设备上存储文件并使用 R 和 Python 等语言进行处理。但是,本地工作站有其局限性,无法处理非常大的数据集。 这就是像Apache Spark这样的分布式处理系统的用武之地。分布式处理是使用多个处理器来运行应用程序的设置。无需尝试在一台计算机上处理大型数据集,而是可以在相互通信的多个设备之间分配任务。 借助 Apache Spark,用户可以对 PB 级数据运行查询和机器学习工作流,这在本地设备上是无法做到的。 这个框架甚至比以前的数据处理引擎(如Hadoop)更快,并且在过去八年中越来越受欢迎。IBM、亚马逊和雅虎等公司正在使用 Apache Spark 作为他们的计算框架。 如果您想成为一名数据科学家,在大规模数据集上分析数据和训练机器学习模型的能力是一项宝贵的技能。拥有使用 Apache Spark 等大数据框架的专业知识将使您在该领域的其他人中脱颖而出。 什么是 PySpark? PySpark 是 Python 中 Apache Spark 的接口。使用 PySpark,您可以编写类似 Python 和类似 SQL 的命令,以在分布式处理环境中操作和分析数据。这是一个初学者程序,将引导您使用 PySpark 操作数据、构建机器学习管道和调整模型。 PySpark是做什么用的? 大多数数据科学家和分析师都熟悉 Python,并使用它来实现机器学习工作流。PySpark允许他们在大规模分布式数据集上使用熟悉的语言。 为什么选择 PySpark? 收集TB级数据的公司将拥有像Apache Spark这样的大数据框架。要使用这些大规模数据集,仅了解 Python 和 R 框架是不够的。 你需要学习一个框架,允许你在分布式处理系统之上操作数据集,因为大多数数据驱动的组织都会要求你这样做。PySpark 是一个很好的入门点,因为它的语法很简单,如果您已经熟悉 Python,则可以轻松上手。 公司选择使用像PySpark这样的框架的原因是因为它可以快速处理大数据。它比 Pandas 和 Dask 等库更快,并且可以处理比这些框架更多的数据。例如,如果您要处理超过 PB 的数据,Pandas 和 Dask 将失败,但 PySpark 将能够轻松处理它。 虽然也可以在像Hadoop这样的分布式系统上编写Python代码,但许多组织选择使用Spark并使用PySpark API,因为它速度更快,可以处理实时数据。使用 PySpark,您可以编写代码从不断更新的源中收集数据,而数据只能使用 Hadoop 以批处理模式进行。

【数据结构】--栈

👌个人主页: 起名字真南 🤣个人专栏:【数据结构初阶】 【C语言】 目录 1 栈1.1 栈的概念和结构1.2 栈的实现1.2.1 头文件1.2.2 初始化1.2.3 销毁1.2.4 打印所有元素1.2.5 入栈1.2.6 出栈1.2.7 获取栈顶数据1.2.8 判空1.2.9 获取元素个数 1 栈 1.1 栈的概念和结构 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除操作,进行数据插入和删除的一端叫做栈顶,另一端叫做栈底。栈中的数据元素遵循后进先出LIFO(Last In First Out)的原则。 压栈:栈的插入操作叫做压栈/ 进栈。 出栈:栈的删除操作叫做出栈。 不管是压栈还是出栈都在栈顶 1.2 栈的实现 栈的实现一般可以用数组或者链表进行实现,但相对而言使用数组的结构实现更优越些,因为数组在尾插数据比较方便。 1.2.1 头文件 #include<stdio.h> #include<assert.h> #include<stdlib.h> #include<stdbool.h> typedef int StackDataType; typedef struct Stack { StackDataType* arr; int top; //记录栈顶的数据 int capacity; //记录空间的大小 }Stack; //初始化 void StackInit(Stack* ST); //销毁 void StackDestroy(Stack* ST); //打印数据 void StackPrint(Stack ST); //插入数据 void StackPush(Stack* ST, StackDataType data); //删除数据 void StackPop(Stack* ST, StackDataType data); //取栈顶数据 StackDataType StackTop(Stack* ST); //判空 bool StackEmpty(Stack* ST); //获取数据个数 int STSize(Stack* pst); 1.

【ONLYOFFICE 8.1】的安装与使用——功能全面的 PDF 编辑器、幻灯片版式、优化电子表格的协作

🔥 个人主页:空白诗 文章目录 一、引言二、ONLYOFFICE 简介三、安装1. Windows/Mac 安装2. 文档开发者版安装安装前准备使用 Docker 安装使用 Linux 发行版安装配置 ONLYOFFICE 文档开发者版集成和开发 四、使用1. 功能全面的 PDF 编辑器PDF 查看和导航PDF 编辑表单处理安全和保护文件转换协作功能集成与兼容性 2. 无缝切换文档编辑、审阅和查看模式文档编辑模式审阅模式查看模式无缝切换和使用体验 3. 改进从右至左语言的支持 & 新的本地化选项全面支持从右至左语言增强的用户体验增加了多种新的本地化选项用户定制化 五、总结 一、引言 ONLYOFFICE 8.1 是 Ascensio System SIA 推出的最新版本,这是一款综合性的办公套件,涵盖文档、表格和演示文稿编辑功能。ONLYOFFICE 一直以来因其强大的在线协作功能和广泛的兼容性而受到用户青睐。8.1 版本在延续前一版本的基础上,进一步优化了用户体验,增加了新功能,提升了性能和安全性,使其在办公软件领域更加突出。 链接直达: 随时随地创建并编辑文档,还可就其进行协作 在线 PDF 编辑器、阅读器和转换器 二、ONLYOFFICE 简介 ONLYOFFICE 是由 Ascensio System SIA 开发的一款开源办公软件套件,旨在为用户提供集成化的办公解决方案。它包括文档、电子表格、演示文稿编辑器,以及项目管理、邮件、CRM 和日历功能,适用于个人、团队和企业用户。ONLYOFFICE 的设计目标是简化办公流程、提高协作效率并保障数据安全。 ONLYOFFICE 支持多平台使用,包括 Web 端、桌面端(Windows、Mac、Linux)和移动端(iOS、Android)。它还与多种第三方服务集成,如 Google Drive、Dropbox、OneDrive 等,用户可以方便地在不同平台和设备间同步文件。作为一个功能全面、易于使用的办公软件套件,ONLYOFFICE 广泛适用于个人、团队和企业用户。它不仅提供了强大的文档编辑和管理工具,还通过集成项目管理、邮件、CRM 等功能,帮助用户实现高效的办公和协作。无论是日常办公还是复杂的项目管理,ONLYOFFICE 都能为用户提供全面的解决方案。 三、安装 ONLYOFFICE 提供适用于 Windows、Mac 和 Linux 的桌面端应用程序,用户可以在本地安装和使用这些应用程序进行文档编辑、电子表格处理和演示文稿制作。以下是不同操作系统上的详细安装步骤:

活动|华院计算受邀参加2024全球人工智能技术大会(GAITC),探讨法律大模型如何赋能社会治理

6月22至23日,备受瞩目的2024全球人工智能技术大会(GAITC)在杭州市余杭区未来科技城隆重举行。本届大会以“交叉、融合、相生、共赢”为主题,集“会、展、赛”为一体,聚“产、学、研”于一堂。值得一提的是,大会已连续五年在杭州市余杭区未来科技城盛大举行,今年共有20余位中外院士在内的200多位专家学者齐聚一堂,探讨人工智能的前沿技术和未来趋势,实现学术思想的深度交汇与碰撞。此次大会不仅为人工智能技术的学术交流和知识传播提供了一个高层次的平台,更在推动跨学科研究创新、推动新成果转移转化方面发挥了举足轻重的作用。 华院计算技术(上海)股份有限公司(以下简称“华院计算”)受邀出席此次大会,华院计算创始人、董事长宣晓华在“法律与人工智能”专题活动中,发表了关于“法律人工智能赋能社会治理”的精彩演讲,深入探讨了法律大模型在赋能社会治理上的巨大潜力。赋能各行各业数字化升级及智能化转型,一直都是华院计算矢志不渝的使命。 法律大模型虽然拥有强大的能力,但在实际应用中仍然会面临一系列的挑战,包括模型目前的能力还不足以完成需要数据驱动和知识指导相结合的法律任务;法律大模型的可解释性欠缺导致用户往往难以理解其决策过程;模型可能出现的“幻觉”现象导致生成不真实或虚构的法律内容和案例,往往会造成误导用户、对法律实践产生负面的影响的结果。面对这些挑战,宣晓华表示华院计算的算法技术团队也在积极努力地寻求解决方案。 幸运的是,随着技术的不断进步和团队的努力,法律大模型以更全面、更完整的形式呈现在社会大众面前,为法律实践和社会治理带来更大的便利和效率。宣晓华在大会上特此介绍了此前与浙江大学、阿里巴巴达摩院共同发布的法律大模型,该模型旨在通过技术赋能,推动社会治理向更便捷、更高效的方向发展。在原有的基础上,华院计算进一步利用检索知识增强(RAG)能力,通过知识注入,即将法条库、案例库、工作条例、相关政策等多元数据导入大模型中后,可以自动理解、学习、沉淀,并转化为知识,最后通过大模型总结归纳的能力,完成知识的增强,精准回答特定业务场景的法律问题。无论是案情分析、法条推荐、法律文书生成还是法律问答,该法律大模型都能够快速、准确地提供解决方案,极大地提高了社会治理的效率和水平。其不仅能为法律从业者提供强大的工具支持,还可为大众提供更加便捷、高效的法律咨询服务。 宣晓华还分享了法律大模型的实际应用案例,进一步展示了其强大的功能。模型可依托数字档案中的“案例库”,将案件分析总结后形成参考依据,同时也可以给予相关的智能法条推荐及自定义法条检索,为基层工作人员提高工作处理的效率和准确率,增强办理人员的权威性。此外,法律大模型可以通过导入案件相关的材料,形成相应的案件判决书。这一功能不仅提高了判决书的精度,减少了人为错误的可能性,还大幅提高工作人员的办公效率。 未来,华院计算将继续秉持着“让世界更智慧”的愿景,以算法研究和创新应用为核心,着力发展认知智能技术,为智能制造、社会治理、零售金融和数字文旅等行业提供智能化的产品和服务,推动行业智能化的转型和升级。尤其在社会治理上,华院计算将以“人文精神”和“法治精神”为本,以“高水平治理”与“高质量发展”为锚,依托认知智能引擎平台,以此构建基层治理的数字化产品体系,全面赋能基层智治、平安法治、产业发展、乡村振兴,持续提升基层社会治理的可塑性、客观性、便利性,全力推动社会治理实现社会化、法治化、智能化、专业化。

奥特曼:AI模型能解决所有物理问题;开源模型排行全体重测,中国Qwen2卫冕冠军 | AI头条

整理 | 王启隆 出品 | AI 科技大本营(ID:rgznai100) 一分钟速览新闻点! Sam Altman:我们能让 AI 模型解决所有物理问题 人工智能对小企业影响有限:只有 5% 的美国企业正在使用 AI Hugging Face 推出新版开源大模型排行榜,中国模型 Qwen-72B 夺冠 人工智能作弊横行,研究发现大学居家考试中 94% 的 AI 答案未被发现 微信输入法重磅更新:上线“一键 AI 问答” 联想集团发布多款 AI PC,支持 24 小时续航、多模态创作 商汤科技将发布 「日日新 5.5」 大模型,全面升级产品矩阵 Figma 推新 AI 功能,一键生成创意设计初稿 亚马逊市值首次突破 2 万亿美元,AI 狂潮与降息预期助推涨势 虚拟体育主播 「上岗」,美国 NBC 广播公司将在巴黎奥运会期间启用 AI 解说 全球 AI 要闻 Sam Altman:我们能让 AI 模型解决所有物理问题 在第 20 届 Aspen Ideas Festival 上,OpenAI 首席执行官 Sam Altman 与 Airbnb 首席执行官 Brian Chesky 接受 NBC 新闻主播 Lester Holt 访谈,共同探讨人工智能(AI)的未来前景及潜在挑战。两位受访者 Altman 与 Chesky 的深厚友谊源于 Y Combinator 创业加速器,Chesky 在去年 Altman 遭解雇后的那场“宫斗风波”提供了巨大帮助。

05 threeJs基础---阵列立方体和相机适配体验立方体

1.增加相机视角fov 注: 范围更大,意味着可以看到渲染范围更大,远小近大的视觉效果更明显 fov:眼球张开的角度,0°时相当于闭眼。aspect:可视区域横纵比。near:眼睛能看到的最近垂直距离。far:眼睛能看到的最远垂直距离。 fov: 一般在45-90之间 aspect:窗口的宽高比 near:根据窗口的宽高比自动计算 far:默认为1000 new THREE.PerspectiveCamera(ov, aspect, near, far) 2.相机位置 注: 值越大看到的内容越多 x: x轴y:可视区域横纵比。z:眼睛能看到的最近垂直距离position.set(x y, z) 3.注意相机控件OrbitControls会影响 注意手动设置OrbitControls的目标与lookAt的值一致,设置后需要更新 注:controls.target.设置的坐标,是需要在视觉区中间显示的目标坐标点 需要在视觉区中间显示的目标坐标点 target.set(camera.lookAt.x, camera.lookAt.y, camera.lookAt.z) 相机控件更新事件 .update()

医药研发项目管理系统:适合CRO/CDMO企业使用的项目管理系统有哪些?

近日,北京民康百草医药科技有限公司(以下简称“民康百草”)与北京瑞杰智能科技有限公司(以下简称“瑞杰科技”)宣布达成战略合作,双方将共同打造一套符合民康百草企业特色的研发项目管理系统。该系统将基于瑞杰科技自主研发的“SuperProject”平台,以项目管理为核心,全面覆盖项目进度、预算成本、状态报告、流程与变更、知识库、工时以及查询统计等功能,以推动民康百草研发项目的高效管理和精准决策。 了解瑞杰科技 SuperProject 项目管理系统: http://www.luckjay.com/ 民康百草一直致力于医药科技领域的创新与发展,拥有多个在研项目和丰富的研发经验。然而,随着企业规模的扩大和项目复杂性的增加,传统的项目管理方式已难以满足其高效、精准的管理需求。因此,民康百草急需一套能够支持其研发项目全流程管理的系统,以提升项目管理的效率和质量。 瑞杰科技作为医药研发项目管理软件领域的领军企业,其自主研发的“SuperProject”药研项目管理平台已广泛应用于多个行业和领域,得到了用户的高度认可。该平台具备强大的项目管理功能和灵活的定制化能力,能够根据不同的企业需求进行快速定制和部署。此次与民康百草的合作,将充分发挥“SuperProject”平台的优势,为民康百草打造一套符合其企业特色的研发项目管理系统。 了解瑞杰科技SuperProject 项目管理系统: http://www.luckjay.com/ 该系统将实现以下主要功能: **项目管理:**支持项目的创建、分配、跟踪和关闭等全流程管理,确保项目的顺利进行和高效完成。 **进度管理:**实时跟踪项目的进度情况,通过图表和报告展示项目进度信息,帮助项目经理及时发现问题并采取措施。 **预算成本管理:**对项目预算进行精细化管理,实时控制项目成本,确保项目在预算范围内完成。 **状态报告:**自动生成项目状态报告,包括项目进度、成本、风险等方面的信息,为管理层提供决策支持。 **流程与变更管理:**规范项目流程,确保项目按照既定的流程和规范进行;同时支持项目变更的申请、审批和执行,确保项目变更的合规性和有效性。 **工时管理:**记录项目成员的工时信息,包括工作内容、工作时长等,为项目绩效评估和人员考核提供依据。 **查询统计:**提供丰富的查询统计功能,帮助用户快速获取项目信息,为决策提供支持。 此次合作将为民康百草带来以下价值: **提升项目管理效率:**通过系统化管理,减少人工操作,降低管理成本,提升项目管理效率。 **精准决策支持:**通过实时数据监控和分析,为管理层提供精准决策支持,确保项目目标的顺利实现。 **推动企业创新发展:**通过优化项目管理流程,提升研发效率和质量,推动企业创新发展和竞争力提升。 双方表示,将共同努力推动项目的顺利实施和运营,为医药科技领域的创新发展贡献更多力量。 召开项目管理系统项目启动会 近日,民康百草 & 瑞杰科技“研发项目管理系统项目启动会”在北京顺利召开,民康百草管理层和研发部门核心人员,以及瑞杰科技项目组成员等30余人参加了此次项目启动会议。 会上,民康百草负责人刘总强调了项目管理系统建设的重要性。她提到,随着企业发展和行业变化的加速,现有管理模式已不能满足业务需求,现计划搭建一套全新的研发管理平台。在决定与瑞杰科技合作之前,民康百草对瑞杰科技的产品进行了充分的市场调研和行业评估。通过业内调研,以及参考行业用户的反馈与评价,民康百草最终选择瑞杰 SuperProject 医药项目管理系统作为应用产品。 值得一提的是:本次合作不仅是基于瑞杰产品功能与技术实力的选择,更是基于瑞杰市场口碑和用户满意度的调研结果。 接下来,瑞杰科技项目负责人从项目实施方角度对项目管理系统实施方案和计划作了详细阐释。首先,提出了项目总体建设目标。然后,明确了项目管理系统实施功能模块和实施日程计划,以及项目组织分工,并重点强调了项目实施的风险与对策以及面对的挑战。详尽部署了解决方案的实施步骤。 最后,双方项目组成员就目前研发项目管理方面遇到的问题做了深入且细致的交流。 医药研发项目管理软件厂商 - 瑞杰科技介绍 北京瑞杰智能科技有限公司,是国内专业的生命健康领域研发管理软件厂商,致力于医药、医疗器械、基因、保健品等领域的研发管理数字化服务。前身是国内领先的企业级研发项目管理软件公司-北京奥博思软件技术有限公司医药研发事业部。 瑞杰科技咨询团队为从事医药研发项目管理多年的人才,对项目管理体系及信息化系统建设有着丰富的实践经验。 凭借多年的技术积累、前瞻性资源布局与不断完善的业务体系,瑞杰科技现已成为医药数字化项目管理领域业务规模大、自主创新能力强的企业。已签约客户超过100家,其中不乏众多医药工业百强企业,包括:华润医药控股有限公司、江西济民可信集团有限公司、威高集团有限公司、长春高新技术产业(集团)股份有限公司、石家庄以岭药业股份有限公司、山东步长制药股份有限公司、武汉明德生物科技股份有限公司、天士力控股集团有限公司、深圳市东阳光实业发展有限公司、信达生物制药(苏州)有限公司、烟台绿叶医药控股(集团)有限公司、浙江京新药业股份有限公司、苏中药业集团股份有限公司、国药太极等。 公司总部位于北京,在上海、武汉、青岛、深圳设有分支机构,为全国客户提供一站式服务。

【JD-GUI】MacOS 中使用Java反编译工具JD-GUI

希望文章能给到你启发和灵感~ 如果觉得文章对你有帮助的话,点赞 + 关注+ 收藏 支持一下博主吧~ 阅读指南 开篇说明概念理解一、基础环境说明1.1 硬件环境1.2 软件环境 二、下载与安装2.1 选择对应版本2.2 解压运行排除异常:2.3 关于使用 三、最后 开篇说明 现在的反编译软件繁多,Apktool,JD-GUI,dedexer,IDA Pro等等,每种反编译工具都有各自使用的场景,例如Apktool我们在反编译apk类型文件时会用到,JD-GUI则是常用来反编译Java中的class文件,或者Jar等源文件; 概念理解 【1】什么是反编译? 简单的说,就是将机器语言转换成我们能看懂的语言,这个过程就叫反编译,例如Java中的class文件反编译后,就能变成我们日常开发写的代码xxx.java文件; 【2】反编译是否一定能成功? 不一定,随着现在很多代码编译中都会加入代码混淆,加密,或是加壳等等技术,加大反编译的难度和降低反编译代码的可读性,不过如果想完全避免反编译也是不可能的。只是反编译的还原度的大小问题了; 一、基础环境说明 考虑环境因素,大家适当的对比自己的软硬件环境情况分析~请仔细阅读硬件、软件环境 1.1 硬件环境 MacOS Monterey 版本 12.6.8 Apple M1 1.2 软件环境 JD-GUI版本:jd-gui-osx-1.6.6 二、下载与安装 Github下载JD-GUI软件github java-decompiler/jd-gui Public 2.1 选择对应版本 macOS系统我们选择jd-gui-osx-1.6.6.tar压缩包即可; 2.2 解压运行排除异常: 解压后,进入文件打开JD-GUI; 【注】运行时,需要注意自己环境已经安装了JDK,否则你可能会遇到这样的错误: 若是确认JDK安装后,仍然提示该错误,需要修改文件->显示包内容->Contents->MacOs->universalJavaApplicationStub.sh; 将内容替换成下面的内容: #!/bin/bash ################################################################################## # # # universalJavaApplicationStub # # # # A BASH based JavaApplicationStub for Java Apps on Mac OS X # # that works with both Apple's and Oracle's plist format.

深入分析 Android BroadcastReceiver (七)

文章目录 深入分析 Android BroadcastReceiver (七)1. 高级应用场景1.1 示例:动态权限请求1.2 示例:应用内通知更新 2. 安全性与性能优化2.1 示例:设置权限防止广播攻击2.2 示例:使用 LocalBroadcastManager2.3 示例:在生命周期中注册和取消注册广播接收器 3. 总结 深入分析 Android BroadcastReceiver (七) 1. 高级应用场景 动态权限请求 在 Android 6.0(API 23)及以上,应用需要在运行时请求权限。BroadcastReceiver 可以用来监听权限变化,并在权限授予或拒绝后采取相应的措施。 1.1 示例:动态权限请求 请求权限: ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CAMERA}, REQUEST_CAMERA_PERMISSION); 处理权限请求结果: @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); if (requestCode == REQUEST_CAMERA_PERMISSION) { if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { // 权限授予,发送广播 Intent intent = new Intent("

MySQL 窗口函数

MySQL 窗口函数 1,窗口函数1.1,什么是窗口函数1.2,基本语法 2,函数详解2.1,聚合函数2.2,排序函数2.3,偏移函数2.4,值函数 3,进阶用法 1,窗口函数 1.1,什么是窗口函数 MySQL窗口函数是一种强大的工具,用于在查询中执行复杂的统计分析,而不需要改变表的结构或数据。MySQL从8.0版本开始支持窗口函数,这些函数也被称为分析函数,因为它们能够处理相对复杂的报表统计分析场景。 窗口的意思是将数据进行分组,每个分组即是一个窗口,这和使用聚合函数时的group by分组类似,但与聚合函数不同的地方是: 聚合函数(例如:sum/avg/min/max)会针对每个分组(窗口)聚合出一个结果(每一组返回一个结果)。 窗口函数会对每一条数据进行计算,并不会使返回的数据变少(每一行返回一个结果) 1.2,基本语法 -- 匿名窗口 SELECT <窗口函数> over (partition by <分组列名> order by <排序列名>) FROM `表名` -- 显式窗口 SELECT <窗口函数> OVER w FROM `表名` WINDOW w AS (partition by <分组列名> order by <排序列名>) <窗口函数>的位置,可以放以下两种函数: 聚合函数:如SUM、AVG、COUNT、MAX、MIN等,可以在不合并行的情况下计算每行的聚合值。专用窗口函数: 排序函数:包括RANK、DENSE_RANK、ROW_NUMBER等,用于为数据集中的每行分配一个唯一的排名或编号。偏移函数:包括LAG和LEAD等,用于获取当前行之前的或之后的指定偏移量的值值函数:FIRST_VALUE和LAST_VALUE返回窗口分区中第一行或最后一行的值,而NTH_VALUE则返回窗口内偏移指定offset后的值。 因为窗口函数是对where或者group by子句处理后的结果进行操作,所以窗口函数一般出现在select子句或者order by子句中。 where, group by, having都不可引用该列,因为这些语句执行在select之前,此时函数尚未计算出值。 2,函数详解 原始数据如下,表名:class 2.1,聚合函数 窗口操作不会将多组查询行折叠成单个输出行。相反,它们为每一行产生一个结果: SELECT *, -- 总计 SUM(score) OVER () AS sum1, -- 按course分组求和 SUM(score) OVER (PARTITION BY course) AS sum2, -- 按course分组累计求和 SUM(score) OVER (PARTITION BY course ORDER BY score DESC) AS sum3 FROM `class` SELECT *, SUM(score) OVER w AS sum, AVG(score) OVER w AS avg, MIN(score) OVER w AS min, MAX(score) OVER w AS max, COUNT(score) OVER w AS count FROM `class` WINDOW w AS (PARTITION BY course ORDER BY score DESC) 注意分数相同时,分组累计(标黄处)的处理逻辑(见:《3,进阶用法》)

基于SpringBoot养老院管理系统设计和实现(源码+LW+调试文档+讲解等)

💗博主介绍:✌全网粉丝10W+,CSDN作者、博客专家、全栈领域优质创作者,博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗 🌟文末获取源码+数据库🌟 感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人 Java精品实战案例《600套》 2023-2025年最值得选择的Java毕业设计选题大全:1000个热门选题推荐✅✅✅ 详细视频演示: 请联系我获取更详细的演示视频 具体实现截图: 系统介绍: 使用旧方法对养老院管理系统的信息进行系统化管理已经不再让人们信赖了,把现在的网络信息技术运用在养老院管理系统的管理上面可以解决许多信息管理上面的难题,比如处理数据时间很长,数据存在错误不能及时纠正等问题。这次开发的养老院管理系统对安全管理、客服聊天管理、字典管理、公告管理、健康信息管理、留言板管理、入住退房信息管理、设备管理、生活信息管理、医疗信息管理、疫情防控信息管理、用户管理、志愿者管理、用户表管理等进行集中化处理。经过前面自己查阅的网络知识,加上自己在学校课堂上学习的知识,决定开发系统选择B/S模式这种高效率的模式完成系统功能开发。这种模式让操作员基于浏览器的方式进行网站访问,采用的主流的Java语言这种面向对象的语言进行养老院管理系统程序的开发,在数据库的选择上面,选择功能强大的Mysql数据库进行数据的存放操作。养老院管理系统的开发让用户查看老人健康信息变得容易,让管理员高效管理老人健康信息。 关键词:养老院管理系统;老人健康信息;公告;自助资讯程序上交给用户进行使用时,需要提供程序的操作流程图,这样便于用户容易理解程序的具体工作步骤,现如今程序的操作流程都有一个大致的标准,即先通过登录页面提交登录数据,通过程序验证正确之后,用户才能在程序功能操作区页面操作对应的功能。 部分代码参考: /** * 登录相关 */ @RequestMapping("users") @RestController public class UserController{ @Autowired private UserService userService; @Autowired private TokenService tokenService; /** * 登录 */ @IgnoreAuth @PostMapping(value = "/login") public R login(String username, String password, String role, HttpServletRequest request) { UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username)); if(user != null){ if(!user.getRole().equals(role)){ return R.error("权限不正常"); } if(user==null || !user.getPassword().equals(password)) { return R.error("账号或密码不正确"); } String token = tokenService.

增强大型语言模型(LLM)可访问性:深入探究在单块AMD GPU上通过QLoRA微调Llama 2的过程

Enhancing LLM Accessibility: A Deep Dive into QLoRA Through Fine-tuning Llama 2 on a single AMD GPU — ROCm Blogs 基于之前的博客《使用LoRA微调Llama 2》的内容,我们深入研究了一种称为量化低秩调整(QLoRA)的参数高效微调(PEFT)方法。本次重点是利用QLoRA技术在单块AMD GPU上,使用ROCm微调Llama-2 7B模型。通过使用QLoRA,可以解决内存和计算能力限制方面的挑战。本次探索旨在展示如何利用QLoRA来增强对开源大型语言模型的可访问性。 QLoRA微调 QLoRA是一种结合了高精度计算技术和低精度存储方法的微调技术。这有助于在确保模型仍然高性能和精确的同时,保持模型大小的小巧。 QLoRA如何工作? 简而言之,QLoRA在不牺牲性能的前提下,优化了LLM微调的内存使用,与标准的16位模型微调形成了对比。具体来说,QLoRA采用4位量化压缩预训练语言模型。然后冻结语言模型参数,并引入少量的可训练参数,以低秩适配器(Low-Rank Adapters)的形式。在微调过程中,QLoRA通过冻结的4位量化预训练语言模型反向传播梯度到低秩适配器中。值得注意的是,在训练期间,只有LoRA层进行更新。要更深入了解LoRA,请参阅原始的LoRA论文。 QLoRA与LoRA的比较 QLoRA和LoRA都是两种参数高效的微调技术。LoRA作为一个独立的微调方法运作,而QLoRA则结合了LoRA作为一个辅助机制,以解决量化过程中引入的错误,并在微调期间进一步最小化资源需求。 一步步使用QLoRA对Llama 2进行微调 本节将指导您通过QLoRA一步步对具有70亿参数的Llama 2模型进行微调,该模型可以在单个AMD GPU上运行。实现这一成就的关键在于QLoRA的关键支持,它在有效减少内存需求方面发挥了不可或缺的作用。 为此,我们将使用以下设置: - 硬件 & 操作系统:请访问此链接,查看与ROCm兼容的硬件和操作系统列表。 - 软件: - ROCm 6.1.0+ - Pytorch for ROCm 2.0+ - 库:`transformers`、`accelerate`、`peft`、`trl`、`bitsandbytes`、`scipy` 在这篇博客中,我们使用单个MI250GPU以及Docker镜像rocm/pytorch:rocm6.1_ubuntu20.04_py3.9_pytorch_2.1.2进行了实验。 您可以在Github仓库中找到这篇博客中使用的完整代码。 1. 开始 我们的第一步是确认GPU的可用性。 !rocm-smi --showproductname ========================= ROCm System Management Interface ========================= =================================== Product Info =================================== GPU[0] : 系列: AMD INSTINCT MI250 (MCM) OAM AC MBA GPU[0] : 型号: 0x0b0c GPU[0] : 制造商: Advanced Micro Devices, Inc.

Spring Boot中使用Thymeleaf进行页面渲染

Spring Boot中使用Thymeleaf进行页面渲染 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将探讨如何在Spring Boot应用中使用Thymeleaf模板引擎进行页面渲染,这是构建现代化Web应用不可或缺的一部分。 Spring Boot中使用Thymeleaf进行页面渲染 Thymeleaf是一款优秀的Java模板引擎,特别适合用于构建Spring MVC Web应用。它不仅提供了强大的模板功能,还能与Spring Boot完美集成,使得开发者可以通过简单的标记语言构建动态页面,同时保持良好的可维护性和扩展性。 第一步:配置Spring Boot集成Thymeleaf 添加Thymeleaf依赖 在Spring Boot项目的pom.xml文件中添加Thymeleaf依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> 配置Thymeleaf模板位置 默认情况下,Thymeleaf会自动查找位于src/main/resources/templates/目录下的HTML模板文件。您可以在application.properties中配置自定义的模板路径: # Thymeleaf模板配置 spring.thymeleaf.prefix=classpath:/templates/ spring.thymeleaf.suffix=.html spring.thymeleaf.cache=false 创建Thymeleaf模板文件 在src/main/resources/templates/目录下创建Thymeleaf模板文件,例如index.html: <!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>Spring Boot Thymeleaf Demo</title> </head> <body> <h1>Welcome to Spring Boot Thymeleaf Demo</h1> <p th:text="'Hello, ' + ${user.name} + '!'" /> </body> </html> 第二步:在Spring Boot控制器中使用Thymeleaf 编写控制器 创建一个简单的控制器类,处理HTTP请求并返回Thymeleaf模板: package cn.juwatech.springbootthymeleaf.controller; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import cn.

SiftDB2024 华为-CCF胡杨林基金数据库专项研讨会精彩报告集锦

华为-CCF胡杨林基金是华为面向泛计算领域的综合科研基金,旨在通过搭建产学合作平台,连接产业实践问题与学术科研问题,支持海内外优秀青年学者开展与产业结合的前沿科研工作。目前已经覆盖数据库、系统软件、形式化方法、高性能计算、软件工程、区块链等多个领域。 华为携手来自各大院校的老师,开展华为-CCF胡杨林基金&胡杨林挑战基金数据库专项中期进展交流,诚意满满奉上精彩报告集锦,欢迎点击观看。 1、【烟台大学 于自强】面向视频数据的时空结构化查询问题研究 【烟台大学 于自强】面向视频数据的时空结构化查询问题研究 2、【昆明理工大学 游进国】融合大语言模型的数据库自然语言查询关 【昆明理工大学 游进国】融合大语言模型的数据库自然语言查询关 3、【北京大学 高军】数据库字符串Like匹配模式的基数预估研究 【北京大学 高军】数据库字符串Like匹配模式的基数预估研究 4、【东华大学 王洪亚】基于openGauss的的向量近邻搜索技术研究实现 【王洪亚】基于openGauss的的向量近邻搜索技术研究实现 5、【浙江大学 伍赛】面向云化HTAP的混合负载执行优化与资源管 【浙江大学 伍赛】面向云化HTAP的混合负载执行优化与资源管 6、【华中科技大学 丁晓锋】基于openGauss的数据安全流通 【华中科技大学 丁晓锋】基于openGauss的数据安全流通 7、【哈尔滨工业大学 王宏志】数据库轻量化自适应基数估计算法 【哈尔滨工业大学 王宏志】数据库轻量化自适应基数估计算法 8、【中山大学 刘玉葆】基于强化学习的数据库负载自适应缓存页面淘汰算法 【刘玉葆】基于强化学习的数据库负载自适应缓存页面淘汰算法 9、【东北大学 张岩峰】存算分离架构下分布式页面缓存管理策略的研究与实现 【张岩峰】存算分离架构下分布式页面缓存管理策略的研究与实现 10、【武汉大学 王黎维】基于强化学习的分布式优化器模型 【武汉大学 王黎维】基于强化学习的分布式优化器模型 11、【清华大学 张超】面向混合负载处理的自适应内存管理与隔离技术 【清华大学 张超】面向混合负载处理的自适应内存管理与隔离技术 欢迎小伙伴们交流~

消息队列选型之 Kafka vs RabbitMQ

在面对众多的消息队列时,我们往往会陷入选择的困境:“消息队列那么多,该怎么选啊?Kafka 和 RabbitMQ 比较好用,用哪个更好呢?”想必大家也曾有过类似的疑问。对此本文将在接下来的内容中以 Kafka 和 RabbitMQ 为例分享消息队列选型的一些经验。 一、什么是消息队列 消息队列即 Message+Queue,消息可以说是一个数据传输单位,它包含了创建时间、通道/主题信息、输入参数等全部数据;队列(Queue)是一种 FIFO(先进先出)的数据结构,编程语言一般都内置(内存中的)队列实现,可以作为进程间通讯(IPC)的方法。使用队列最常见的场景就是生产者/消费者模式:生产者生产消息放到队列中,消费者从队列里面获取消息消费。典型架构如下图所示: 准确的说,消息队列是一种能实现生产者到消费者单向通信的通信模型,而一般大家说 MQ 是指实现了这个模型的中间件,比如 RabbitMQ、RocketMQ、Kafka 等。我们所要讨论的选型主要是针对消息中间件。 二、消息队列的应用场景 既然要选,那他们有什么应用场景呢?可以总结为 6 个字:异步、解耦、削峰。 2.1 异步 首先消息队列支持异步通信,发送方可以快速将消息放入队列中并立即返回,而不需要等待接收方的响应。这种异步通信模式可以减少请求等待,能让服务异步并行处理,提高系统的吞吐量和响应时间。 上图以支付会员红包系统交互过程为例,红包 Platform 通过 MQ 通知红包 Consumer 实现异步转账,同时有兜底 Task 查询转账所有未到终态领取单并通过 MQ 异步发送转账消息。 2.2 解耦 其次通过使用消息队列,发送方和接收方可以解耦,彼此之间不直接通信。发送方只需将消息发送到队列中,而不需要关心消息的具体处理方式和接收方的可用性。 上图通过举例账户和红包的消息队列说明,通过解耦不同服务,可以使整个系统更加灵活和可扩展。 2.3 削峰 最重要的优势就是能用来平滑处理系统中的高峰流量。当系统面临瞬时高流量时,消息队列可以作为一个缓冲层,将大量的请求消息存储在队列中,然后按照系统处理能力逐渐消费这些消息,平稳地处理高峰流量。 上图通过举例在秒杀活动中的利用消息队列实现流量削峰。通过在后台启动若干个队列处理程序,消费消息队列中的消息,再执行校验库存、下单等逻辑。因为只有有限个队列处理线程在执行,所以落入后端数据库上的并发请求是有限的 。而请求是可以在消息队列中被短暂地堆积, 当库存被消耗完之后,消息队列中堆积的请求就可以被丢弃了。 三、消息队列发展历程 言归正传,先看看有哪些主流消息队列可选。 ActiveMQ 是 Apache 出品的、采用 Java 语言编写的完全基于 JMS1.1 规范的面向消息的中间件,为应用程序提供高效的、可扩展的、稳定的和安全的企业级消息通信。不过由于历史原因包袱太重,目前市场份额没有后面三种消息中间件多,其最新架构被命名为 Apollo,号称下一代 ActiveMQ,有兴趣的同学可自行了解。RabbitMQ 是采用 Erlang 语言实现的 AMQP 协议的消息中间件,最初起源于金融系统,用于在分布式系统中存储转发消息。RabbitMQ 发展到今天,被越来越多的人认可,这和它在可靠性、可用性、扩展性、功能丰富等方面的卓越表现是分不开的。Kafka 起初是由 LinkedIn 公司采用 Scala 语言开发的一个分布式、多分区、多副本且基于 Zookeeper 协调的分布式消息系统,现已捐献给 Apache 基金会。它是一种高吞吐量的分布式发布订阅消息系统,以可水平扩展和高吞吐率而被广泛使用。目前越来越多的开源分布式处理系统如 Cloudera、Apache Storm、Spark、Flink 等都支持与 Kafka 集成。RocketMQ 是阿里开源的消息中间件,目前已经捐献个 Apache 基金会,它是由 Java 语言开发的,具备高吞吐量、高可用性、适合大规模分布式系统应用等特点,经历过双十一的洗礼,实力不容小觑。Pulsar 是 Apache 软件基金会的顶级项目,是下一代云原生分布式消息流平台,集消息、存储、轻量化函数式计算为一体,采用计算与存储分离架构设计,支持多租户、持久化存储、多机房跨区域数据复制,具有强一致性、高吞吐、低延时及高可扩展性等流数据存储特性。 目前市面上的消息中间件还有很多,比如腾讯系的 PhxQueue、CMQ、CKafka,又比如基于 Go 语言的 NSQ,有时人们也把类似 Redis 的产品也看做消息中间件的一种,当然它们都很优秀,但是本文篇幅限制无法穷尽所有。