【Nginx】Nginx 最新社区稳定版-1.26.1-发布

时隔一年多(2023/4/11~2024/4/23),Nginx终于发布了其最新社区稳定版,版本号为:1.26.0 本次发布的1.26.0版本,在1.25.x开发版分支基础上,修复了众多Bug,并且还带来了一些新的实验性的功能,如: 对http/3的支持模块ngx_http_v3_module(默认不构建,需在编译时添加--ngx_http_v3_module参数引入)。在per-server基础上的http/2,该指令最早在1.11.0版本上出现。 语法: http2_body_preread_size size;默认值: http2_body_preread_size 64k; 上下文:http, serverstream模块里面的virtual servers,该指令最早出现在1.25.5版本。server_name还支持正则表达式。 配置样例: stream{ server { server_name example.com www.example.com; } } 将stream模块已接受的连接传递(pass)给pass模块配置的任何监听端口。 配置样例: http { server { listen 8000; location / { root html; } } } stream { server { listen 12345 ssl; ssl_certificate domain.crt; ssl_certificate_key domain.key; pass 127.0.0.1:8000; } } Nginx-1.26.0社区稳定版官方下载地址: CHANGES-1.26nginx-1.26.0 pgpnginx/Windows-1.26.0 pgp Nginx-1.26.1社区稳定版官方下载地址: CHANGES-1.26nginx-1.26.1 pgpnginx/Windows-1.26.1 pgp 备注:1.26.1版本解决了1.26.0版本中存在的一处涉及HTTP/3的安全问题,并修复了两处Bug。

微信公众号发送模板消息,并且点击可以直接转到小程序。(开发篇)

1、微信侧文档 模板消息 | 微信开放文档 参数说明: 说明:发送模板消息,是一个post请求。 touser:是接收者openid,这个openid是公众号h5网页获取的openid,与小程序侧的openid是不一样的。(必填)如果开通了开放平台会有一个UnionID。 ( 如果开发者拥有多个移动应用、网站应用、和公众账号(包括小程序),可通过 UnionID 来区分用户的唯一性,因为只要是同一个微信开放平台账号下的移动应用、网站应用和公众账号(包括小程序),用户的 UnionID 是唯一的。换句话说,同一用户,对同一个微信开放平台下的不同应用,unionid是相同的。UnionID 机制说明 | 微信开放文档 ) template_id:模板ID,这个就是公众号--模板消息--我的模板--类目模板。 url:跳转的url,这个可以是一个h5的页面。(非必填) miniprogram:设置跳转到小程序(非必填)。 appid:小程序的appid(必填,如果你指定要跳转小程序。) appid,是要在公众号平台里进行绑定的,那小程序是一定要发布一版本的。 公众号-- 小程序管理--进行绑定,输入小程序appid,然后就可以。 pagepath:小程序的访问位置+参数,比如pages/index/index?id=1,传入参数id=1,然后我们在小程序里就可以接收id参数,并且进行相关数据的获取直接展示或者进行页面的跳转等等。 data:上述模板消息中的详情中的页面的相关参数(必填): client_msg_id:(非必填),可以不传。 2、根据文档,我们进行编码。 1) pom.xml中加入fastjson <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.73</version> </dependency> 2) 编写相关发送工具类中的方法: /** * 公众号模板消息发送 * * @param openid 接收用户openid * @param access_token 全局访问令牌 * @param data 测试模板:发送的内容 * @param rdate 时间 * @param id 维修单id * @param fybxdh 申请单号 * @param realname 申请人 * @param result 审批结果 * @param companyname 所在单位 * @return */ public static String sendMsg2WeChat(String path, String openid, String rdate, Integer id, String result, String fybxdh, String realname, String companyname) { // SvrPrint.

源码编译安装LNMP

目录 LNMP包含: LNMP的工作原理 : 编译安装: nginx服务器配置 安装依赖包 创建用户 上传软件包至/opt目录下并解压 编译安装 设置软链接,可以直接调用nginx命令来进行管理 添加Nginx系统服务 配置Nginx支持php解析(7 8 9 的操作是在配置完后面的mysql和php才开始的) ​编辑 ​编辑 验证php测试页 动态页面 静态页面 在本服务器中安装NFS 挂载目录 php服务器进行操作 验证mysql测试页 Mysql服务器配置 上传压缩包至/opt目录中并解压 安装环境依赖包 创建用户 配置软件模块 编译安装 清除mariadb缓存 修改mysql配置文件 更换mysql配置文件和安装目录的属主属组 在环境变量中添加mysql的bin和lib目录 mysql初始化操作 添加mysqld系统服务 修改mysql密码 授权并刷新 php服务器配置 上传压缩包至/opt目录中并解压 ​编辑 安装环境依赖包 配置软件模块 编译安装 路径优化 修改php配置文件(共三个) 修改主配置文件 修改进程服务配置文件 ​编辑 修改扩展配置文件 ​编辑​编辑​编辑创建用户 启动php-fpm 安装论坛 上传压缩包到Nginx服务器的/opt目录下并解压 设置属主属组 ​编辑创建数据库 LNMP包含: linux、Nginx、Mysql、php LNMP的工作原理 : 由客户端发送页面请求给Nginx,Nginx会根据location匹配用户访问请求的URL路径判断是静态还是动态,静态的一般是以 .html .htm .css .shtml结尾,动态的一般是以 .php .jsp .py结尾。

java中如何灵活使用mysql中的json类型字段存储数据

日常数据库存储数据时经常会碰见一对多的数据结构类型,例如一笔订单中包含多个商品数据,一般情况下,可能会设计一个order表,一个sku表,但如果就想用一个表去存储这些订单和商品数据,那么应该如何去设计order表呢?这种情况下就可以使用万能json类型字段进行存储订单与商品一对多的数据结构了. 建表语句: CREATE TABLE `bd_order` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `orderId` varchar(55) DEFAULT NULL COMMENT '订单id', `nick` varchar(55) DEFAULT NULL COMMENT '用户昵称', `skuInfo` json DEFAULT NULL COMMENT '商品信息', PRIMARY KEY (`id`) USING BTREE ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='订单表'; 数据如下: 存入数据: 商品实体类: @Data public class SkuInfo { private String name; private String price; private String skuId; } 订单实体类: @Data public class BdOrder { private Long id; private String orderId; private String nick; @TableField(value = "

大佬 Ilya Sutskever 的神级论文清单,学完掌握当前AI 90%的知识!

文章目录 1. Transformer 架构2. 循环神经网络(RNN)3. 长短期记忆网络(LSTM)4. 神经网络的复杂度5. 计算机视觉 近日,一份网传 OpenAI 联合创始人兼首席科学家 Ilya Sutskever 整理的一份机器学习研究文章清单火了。 Ilya Sutskever 向 John Carmack 推荐了一份精选的阅读清单,内含约30篇尖端的研究论文。 John Carmack,这位电子游戏史上的传奇程序员,通过他开创性的游戏引擎技术,不仅定义了第一人称射击游戏的标准,还持续推动着虚拟现实的边界。 Ilya Sutskever,作为深度学习领域的领航者,不仅在学术界树立了里程碑,更通过在谷歌大脑、OpenAI及DeepMind的领导角色,引领着人工智能技术向更加智能、安全的方向迈进。 Sutskever 相信,如果 Carmack 能够深入理解并吸收这些论文的精髓,他将掌握当今科技界(人工智能领域)最为关键的90%的知识。 从研究主题上看,Ilya Sutskever 重点关注 Transformer 架构、循环神经网络(RNN)、长短期记忆网络(LSTM)、神经网络的复杂度、计算机视觉等。 推荐清单地址:https://arc.net/folder/D0472A20-9C20-4D3F-B145-D2865C0A9FEE 我们一睹为快。 1. Transformer 架构 在 Transformer 架构方面,Ilya 推荐谷歌在 2017 年发表的经典论文《Attention Is All You Need》,这是 Transformer 架构的问世之作。Transformer 架构今天已经成为人工智能领域的主流基础架构,特别是它是生成式 AI 模型的核心架构。 ! 论文地址:https://arxiv.org/abs/1706.03762 Ilya 还推荐了一篇由康奈尔大学副教授 Alexander Rush 等研究者在 2018 年撰写的博客文章 ——《The Annotated Transformer》。 作为 Transformer 新手入门教程,这个教程从最基础的理论开始,手把手教你按照最简单的python代码实现Transformer,一经推出就广受好评。2022年,这个入门教程有了新的版本。 博客地址:http://nlp.seas.harvard.edu/annotated-transformer/

植物大战僵尸杂交版 2.0.8 Mac畅玩详细教程

前言 最近一段时间,【植物大战僵尸杂交版】很火热,它是由B站的一个UP主进行在植物大战僵尸的基础上开发的一款版本。 有很多用户不知道该如何进行安装,如果大家和我一样使用的是Mac电脑的话,您又想玩这个【植物大战僵尸杂交版】的游戏。那么请您别着急,我会详细的交给大家该如何进行下载并安装后畅玩。 在这里给大家透露一下,只要是PC端的用户。教程都会很简单,难点在于移动端。 好了,我废话不多说,让我们直接进入教程吧! 教程开始 下载安装包 首先,我们得需要下载一个安装包进行安装游戏 下载地址,我会放在教程的末尾,方便大家点击后直接下载! 安装下载完成后,你会得到一个.dmg文件,现在让我来教一下如何进行把.dmg文件里面的应用程序安装进来吧。 首先,打开.dmg文件,然后鼠标左键点击【植物大战僵尸:杂交版】按住不要松开,然后拖动到应用程序文件夹里去: 拖动完成以后,我们找到程序坞栏菜单 -> 找到启动台 -> 然后打开【植物大战僵尸:杂交版】 打开游戏 打开游戏之后需要的一些情况 如果你能正常的打开游戏并进入游戏游玩的话,那么恭喜您已经成功安装了【植物大战僵尸:杂交版】了 但是有一个问题需要注意是: 首次进入游戏后,会以全屏模式状态进行的,如果您不想使用全屏模式,打开游戏中的【选项】 然后把全屏的对勾取消掉即可 然后我们点击确定就可以让它以窗口的形式进行显示了,如果您点击确定以后,出现标题条的话,那么你只需要鼠标左键按住这个标题条然后随意晃动直到窗口正常显示为止: 可能会出现上述图片中的问题,一个标题条 教程结束 本次教程到这里已经谢幕了,如果有任何问题可以随时在下方留言,我看到后会第一时间帮您解决您所提出的问题! 此次教程相对来说还是非常简单的,后期有任何改动或者游戏更新,本文章教程将会随着游戏更新而跟随更新 软件下载包请点击我进行查看

C# 的可空条件操作符 “?“

可空条件操作符 “?” ?操作符是 C# 的可空操作符。它用于在调用方法或访问属性之前检查对象是否为 null。如果对象为 null,则整个表达式的结果将为 null,而不会抛出 NullReferenceException。 例子 以下是一个简单的示例,说明 ? 操作符如何工作: List<int> numbers = null; // 使用 ? 操作符,如果 numbers 为 null,则 ToList() 不会被调用,结果为 null var result = numbers?.ToList(); // result 为 null // 不使用 ? 操作符,如果 numbers 为 null,则会抛出 NullReferenceException var resultWithoutNullCheck = numbers.ToList(); // 这里会抛出异常

【会议征稿,ACM独立出版】第四届大数据、人工智能与风险管理国际学术会议 (ICBAR 2024, 6/28-30)

第四届大数据、人工智能与风险管理国际学术会议(ICBAR2024)将于2024年6月28-30日在中国成都隆重举行。大会由四川省人工智能学会、中国民用航空飞行学院联合主办,中国民航飞行学院计算机学院、中国民航飞行学院理学院、吉隆坡大学、AEIC学术交流中心共同协办。 进入21世纪以来,大数据、人工智能与风险管理科学的进步,推动了社会经济的繁荣发展,众多高校与企业研发了许多相关的技术和产品,取得了丰硕的学术成果和应用转化。大会旨在为从事大数据、人工智能与风险管理科技研究的专家学者、工程技术人员、研发人员提供一个共享科研成果和前沿技术,了解学术发展趋势,拓宽研究思路,加强学术研究和探讨,促进学术成果产业化合作的平台。大会诚邀国内外高校、科研机构专家、学者、企业界人士及其他相关人员参会交流。 1. 会议官方 会议官网:http://www.icbar.net/(参会/投稿) 最终截稿时间:2024年6月24日(早投稿早录用) 大会时间:2024年6月28-30日 大会地点:中国-成都 收录检索:EI Compendex,Scopus 2. 主办单位 3. 主席嘉宾 荣誉主席: 大会主席: 4. 征稿主题 5. 论文出版 会议投稿经过2-3位组委会专家严格审核后,最终所录用的论文将被ACM ICPS (ACM International Conference Proceeding Series) 出版论文集,并提交至ACM Digital library,EI Compendex, Scopus检索。目前该会议论文检索非常稳定。往届会议已检索。 Association of Computing Machinery (简称 ACM,美国计算机学会), 创立于1947年,是世界上最大的科学性及教育性计算机学术机构,“计算机届诺贝尔奖”——图灵奖由ACM颁发,ACM Fellow也被认为是计算机、信息领域的重要荣誉之一。 ISBN: 979-8-4007-0975-3 投稿说明 论文不得少于8页 会议论文模板下载→ 前往“资料下载”栏目下载 会议仅接受全英稿件。如需翻译服务,请联系会议负责人 会议采用在线方式进行投稿,全程由艾思科蓝进行技术支持 6. 会议日程 7. 参会方式 作者参会:一篇录用文章允许一名作者免费参会;主讲嘉宾:申请主题演讲,由组委会审核;口头演讲:申请口头报告,时间为15分钟;海报展示:申请海报展示,A1尺寸;听众参会:不投稿仅参会,也可申请演讲及展示;报名参会:本会议由艾思科蓝支持【在线报名】。 6. 更多会议 想要了解更多更全的学术会议,请前往会议官网:https://www.ais.cn/如有意愿参会或投稿,可以找我获取邀请码,享受参会、投稿优惠,优先审核 创作不易,麻烦点点赞和关注咯!

智能体应用开发:构建各类垂直领域的ai智能体应用

最近在做个类似的项目,有用到这方面的知识,顺便做一些记录和笔记吧,希望能帮到大家了解智能体应用开发 目录 引言 AI原生应用的兴起 智能体在AI中的角色 实现原理详解 机器学习基础 数据管理与关联数据库 数据结构 Embedding 检索方案 部分实践代码 强化学习与决策制定 首先,我们需要定义MDP的几个关键元素: 智能体的设计与开发 需求分析与场景定义 智能体架构设计 开发工具与平台 零代码/低代码开发平台 开源框架与库 引言 AI原生应用的兴起 随着人工智能技术的飞速发展,AI原生应用逐渐成为创新的前沿。这些应用从设计之初就将AI技术作为核心,与传统的应用程序相比,它们能够提供更加智能化、个性化的服务。AI原生应用正在改变我们与技术的互动方式,从简单的工具使用转变为与智能助手的协作,这些助手能够理解我们的需求,预测我们的行动,并提供定制化的解决方案。 智能体在AI中的角色 智能体(Agent)是AI领域中一个关键的概念,它指的是能够在特定环境中自主运作并执行任务的软件实体。智能体不仅可以感知其环境,还能做出决策并采取行动以达成目标。在AI原生应用中,智能体充当着用户与复杂AI系统之间的桥梁,它们使得AI技术更加易于访问和使用。 实现原理详解 机器学习基础 机器学习是智能体实现智能行为的关键技术之一。它使智能体能够从数据中学习并改进其性能。 监督学习:智能体通过已标记的训练数据学习预测或决策任务。非监督学习:智能体在没有明确标记的数据中寻找模式和结构。强化学习:智能体通过与环境的交互学习最优行为策略以最大化某种累积奖励。 数据管理与关联数据库 智能体需要有效的数据管理来支持其学习和决策过程。 数据库的类型与选择:根据智能体的需求选择合适的数据库系统,如关系型数据库、NoSQL数据库等。 关联规则与数据挖掘:使用数据挖掘技术发现数据中的关联规则,帮助智能体做出更好的决策。 数据结构 Embedding 人类的文字、图片、视频等媒介是无法直接被计算机理解的,要想让计算机理解两段文字是否有相似性、相关性,通常需要将它们转成计算机可以理解的语言,向量是其中的一种方式。 向量可以简单理解为一个数字数组,两个向量之间可以通过数学公式得出一个距离,距离越小代表两个向量的相似度越大。从而映射到文字、图片、视频等媒介上,可以用来判断两个媒介之间的相似度。向量搜索便是利用了这个原理。 而由于文字是有多种类型,并且拥有成千上万种组合方式,因此在转成向量进行相似度匹配时,很难保障其精确性。在向量方案构建的知识库中,通常使用topk召回的方式,也就是查找前k个最相似的内容,丢给大模型去做更进一步的语义判断、逻辑推理和归纳总结,从而实现知识库问答。因此,在知识库问答中,向量搜索的环节是最为重要的。 影响向量搜索精度的因素非常多,主要包括:向量模型的质量、数据的质量(长度,完整性,多样性)、检索器的精度(速度与精度之间的取舍)。与数据质量对应的就是检索词的质量。 检索器的精度比较容易解决,向量模型的训练略复杂,因此数据和检索词质量优化成了一个重要的环节。 检索方案 通过改进问题处理来实现消除指代和扩展问题,这将增强对话的连贯性以及语义的深度。使用Concat查询技术来提升连续对话的重排序过程,从而提高排序的准确性。利用RRF合并策略,整合多个来源的搜索结果,以提升整体的搜索效果。通过重排序机制,对结果进行再次排序,以提升搜索结果的精确度。 部分实践代码 import re # 假设我们有以下对话历史和问题 dialog_history = ["今天天气怎么样?", "明天会下雨吗?", "北京的天气如何?"] current_question = "北京明天的天气怎么样?" # 指代消除和问题扩展 def expand_question(question, history): # 这里简单用正则表达式匹配和替换,实际情况可能需要更复杂的NLP处理 for q in history: question = re.sub(r"\b北京\b", q, question, flags=re.

机器学习数据挖掘Rapidminer决策树、随机森林、SVM——预测企业员工离职以及原因分析

一、问题 从Kaggle网站上获取了一个公司一年内的员工离职情况,这份数据一共有1470份样本(记录),其中237份为离职样本,共有35个属性,包括年龄、性别、收入等。现在通过在Rapidminer软件上采用决策树、随机森林、支持向量机(SVM)三种机器学习算法,以及逻辑回归算法对员工离职原因进行挖掘,在35个属性中筛选出主要原因后再通过Tableau软件进行可视化分析。 目标:通过训练模型调整参数尽可能使得模型有实际应用意义(可迁移性);在较多的数据属性中挖掘关键的变量(影响员工离职的因素)并做可视化分析。 二、结果概览(部分) 三、机器学习挖掘过程 1.数据预处理 ①数据的分离与抽样 由于该数据集中正例与负例的样本数量存在不均衡的情况,因此将原数据集根据预测值分为两个数据集,并且对样本量较多的负例进行抽样,抽样后再与正例的数据集进行连接。 ②属性筛选 有一些属性没有方差,对实际的预测没有意义,例如“over 18”指的是员工年龄是否超过18岁,而数据集中所有样本的这一属性均为“Yes”,因此需要把这些无意义的属性筛选出去。 ③设置标签 将是否离职设置为标签。 2.决策树 ①流程 ②参数优化算子 参数 范围 生成指标 Gain ratio,information gain,gini index,accuracy 层数 5-10层 信度 0.1-0.5,10个 最小信息增益率 0.01-0.05,10个 ③模型运行性能指标 经过多种参数优化后,决策树的结果准确率达到70%,达到合格水平,AUC值为0.662,只比0.5高了一点,所以该模型的拟合效果一般,泛化应用意义不大,但是其生成的决策树解释力较强,可用于员工离职原因的分析。 PerformanceVector: accuracy: 70.21% precision: 69.46% recall: 84.67% AUC: 0.662 ④模型运行结果 在属性权重图中,过去一年培训次数、年龄、环境满意度权重占比较高,表明这些属性在决策树分支中出现次数最多,在存在某些条件的情况下往往是决定是否离职的较为关键因素。决策树结果表明,过去一年培训次数往往与工作角色、工作年数组合起来考虑,尤其是当工作角色为经理、总监这类高级管理人员时,如果培训次数较少可能造成较高的员工流失率,这可能是因为这类员工需要不断提升自身知识储备和能力来适应岗位需求的变化。 ⑤生成决策树 决策树的分支中,“是否加班”成为决策树分支的第一个节点,决定了后面决策树的走向,说明加班是对离职造成影响的重要原因之一。从决策树后续分支来看,加班对离职的影响程度还受到其它因素的综合作用。 在不加班的员工中,如果环境满意度、人资关系满意度较低,离家距离较远,也可能导致离职,并且这些因素也会与工作角色共同产生影响。 在加班的员工中,不同的工作角色离职的原因也会有所区别,比如销售主管更在意股票期权级别、培训次数等;而技术人员在意工作参与程度。 以上决策树的因素分析也说明企业需要针对具体的工作岗位了解员工的离职因素,制定相关合理的政策应对员工流失,尤其是要保留住高级和关键的员工。 3.随机森林 ①预实验-确立最佳参数设置 负例“no”样本数不变,保持237个样本;正例样本“yes”抽样300个。 运用Optimize Parameters算子,对随机森林的三个主要参数进行调节:树的最大深度(Maximal depth),树的总数(Number of trees),决策树生成的指标(criterion)。 树的深度设置 100,150,200,250,300 最大深度设置 5层-20层 决策树生成指标 Gain ratio,information gain,gini index,accuracy 运行流程如图 最佳参数设置解读 a.树的数量 以树的数量为横轴,分别以准确率和AUC值为纵轴,左图颜色代表树的层数,右图颜色代表树的生成指标。 可以看到,准确率和AUC值与树的数量并没有必然的线性联系,但是从颜色分布上,准确率和AUC值可能与树的层数和生成指标更加相关,这一点将在后续讨论。

推荐ChatGPT4.0——Code Copilot辅助编程、Diagrams: Show Me绘制UML图、上传PDF并阅读分析

5月14日凌晨1点、太平洋时间的上午 10 点,OpenAI的GPT-4o的横空出世,再次巩固了其作为行业颠覆者的地位。GPT-4o的发布不仅仅是一个产品的揭晓,它更像是向世界宣告AI技术已迈入了一个全新的纪元,连OpenAI的领航者萨姆·奥特曼也不禁感慨,这如同直接从科幻电影情节走进现实。 今天发布的GPT-4o以及ChatGPT产品的快速总结:图片GPT-4o(“o”代表“全能”)它可以接受任意组合的文本、音频和图像作为输入,并生成任意组合的文本、音频和图像输出。 👉 GPT功能:ChatGPT4.0知识问答、DALL-E生成AI图片、Code Copilot辅助编程、毕设去重、BUG解决、代码优化、精读分析PDF+Word… 👉使用地址:我的GPT4 👉也可以私信哪吒,备注:AI,抢先使用ChatGPT4o GPT-4o的问世,标志着AI技术的一个巨大飞跃,它不再局限于单一媒介的交互,而是开创性地实现了文本、语音、图像三者间的无缝融合。 这种跨媒介的即时响应能力,彻底打破了传统人机交流的界限,使得沟通变得更加自然、流畅,引领了一场前所未有的交互革命。用户不再需要在不同应用间切换以适应不同类型的输入输出,GPT-4o能够一站式处理所有形式的信息,无论是文字询问、语音指令还是图像识别,都能即刻给出精准反馈,极大地提升了效率与体验,真正将沟通带入了一个全新时代。 在最新的ChatGPT迭代中,这种能力被进一步强化,使得处理各种媒体形式的输入输出变得轻松自如。无论是日常的聊天娱乐,还是专业领域的工作任务,如编写代码、分析数据、设计图形或编辑视频,GPT-4o都能游刃有余,成为用户不可或缺的生产力工具。 Code Copilot 目前最强的AI编程大模型 用Java编写一个二分查找的代码,添加中文注释。 好友问的技术问题,10秒钟搞定。 Diagrams: Show Me 画一个用户登录鉴权的UML图 上传PDF并阅读分析 好用的功能太多太多,我就不在这个一一列举了,有兴趣的可以自行尝试。 👉 GPT功能:ChatGPT4.0知识问答、DALL-E生成AI图片、Code Copilot辅助编程、毕设去重、BUG解决、代码优化、精读分析PDF+Word… 👉使用地址:我的GPT4 👉也可以私信哪吒,备注:AI,抢先使用ChatGPT4o

大数据—数据分析概论

一、什么是数据分析 数据分析是指使用统计、数学、计算机科学和其他技术手段对数据进行清洗、转换、建模和解释的过程,以提取有用的信息、发现规律、支持决策和解决问题。数据分析可以应用于各种领域,包括商业、医学、工程、社会科学等。 二、数据分析步骤 数据分析的关键步骤包括定义问题和目标、数据收集、数据清洗、数据探索、数据转换和特征工程、数据建模、模型评估和验证、结果解释和报告,以及行动和监控。 1. 定义问题和目标 确定问题:明确要解决的问题或要回答的业务问题。设定目标:定义分析的具体目标和期望的结果,如提高销售额、降低成本、优化运营等。 2. 数据收集 识别数据源:确定哪些数据源(内部数据库、外部数据源、调查等)可以提供所需数据。收集数据:从各个数据源中提取相关数据。 3. 数据清洗 处理缺失值:识别并处理数据中的缺失值,可以选择删除、填补或保留缺失值。处理异常值:识别并处理数据中的异常值,决定是否删除或调整这些值。数据一致性检查:确保数据格式和内容的一致性,如日期格式、单位统一等。 4. 数据探索 统计描述:计算数据的基本统计量,如均值、中位数、标准差等。数据可视化:使用图表(如直方图、散点图、箱线图等)探索数据的分布和关系。发现模式和关系:通过可视化和统计方法发现数据中的模式和变量之间的关系。 5. 数据转换和特征工程 数据转换:对数据进行必要的转换,如归一化、标准化等。特征提取:从原始数据中提取新的有用特征,提高模型的表现。编码分类变量:将分类变量转换为数值形式,如独热编码(One-Hot Encoding)。 6. 数据建模 选择模型:根据分析目标选择适当的建模方法(如回归、分类、聚类等)。训练模型:使用训练数据集构建模型。调参优化:通过交叉验证和超参数调整优化模型性能。 7. 模型评估和验证 评估模型:使用测试数据集评估模型的性能,计算评估指标(如准确率、精确率、召回率、F1分数、均方误差等)。验证模型:确保模型的泛化能力,避免过拟合或欠拟合。 8. 结果解释和报告 解释结果:解读模型结果,理解模型的预测和发现的规律。生成报告:编写分析报告,使用可视化工具展示关键发现和建议。汇报结果:向决策者和相关利益者汇报分析结果,以支持决策。 9. 行动和监控 实施行动:根据分析结果采取相应的业务行动。持续监控:监控实施效果,收集反馈并进行持续优化。 三、数据分析常用的方法 数据分析常用的方法可以根据不同的分析目标和数据类型分为多种。 1. 描述性分析 描述性分析用于总结和描述数据的基本特征,帮助理解数据的分布和趋势。 统计描述:均值、中位数、众数、标准差、方差等。数据可视化:直方图、条形图、折线图、散点图、箱线图等。 2. 探索性数据分析(EDA) 探索性数据分析旨在发现数据中的模式、关系和异常,通常是数据分析的初始步骤。 分布分析:了解数据的分布情况。相关性分析:使用相关矩阵和散点图查看变量之间的关系。异常值检测:识别数据中的异常值和离群点。 3. 推断性分析 推断性分析通过从样本数据推断总体特征,通常涉及假设检验和置信区间。 假设检验:t检验、卡方检验、ANOVA等。置信区间:估计总体参数的范围。 4. 预测性分析 预测性分析用于预测未来的趋势或事件,常用于时间序列分析和回归模型。 回归分析:线性回归、逻辑回归、多元回归等。时间序列分析:ARIMA模型、指数平滑法等。 5. 分类和聚类 这些方法用于将数据分组或分类,常用于机器学习和模式识别。 分类:决策树、随机森林、支持向量机(SVM)、k近邻(k-NN)、朴素贝叶斯等。聚类:k均值聚类、层次聚类、DBSCAN等。 6. 关联分析 关联分析用于发现数据中变量之间的关联规则,常用于市场篮子分析。 关联规则:Apriori算法、FP-Growth算法等。 7. 因果分析 因果分析用于确定变量之间的因果关系,而不仅仅是相关性。 随机对照试验(RCT):通过随机分配实验组和对照组来确定因果关系。结构方程模型(SEM):用于复杂变量关系的建模。 8. 文本分析 文本分析用于处理和分析非结构化文本数据。 自然语言处理(NLP):分词、词性标注、命名实体识别等。情感分析:分析文本情感倾向(正面、负面、中性)。主题模型:LDA(潜在狄利克雷分配)等。 9. 数据可视化 数据可视化用于直观展示数据和分析结果,帮助理解和决策。

mac电脑: nvm安装、配置和使用

一、nvm是什么 nvm是node版本管理工具,类似conda管理python版本 与npm不同,npm是依赖管理工具。 二、nvm安装 brew install nvm 三、nvm环境配置 nvm安装成功有提示如何配置,不要直接复制其他地方配置 要做2个步骤, 检查目录~/.nvm ,没有要创建: mkdir ~/.nvm 查看nvm成功界面的配置建议 如果界面消失重新安装一遍: brew reinstall nvm 配置 vi ~/.bash_profile 或 vi ~/.zshrc,然后source 生效 检验是否安装成功: nvm -v # 校验nvm node -v # 安装node后在校验 npm -v # 安装node后在校验 四、nvm简单使用 以某个版本为例,安装和使用自己需要的版本。 nvm list / nvm ls # 查看可安装版本 nvm install 20.14.0 # 安装 nvm use 20.14.0 # 使用 nvm version # 查看当前版本 nvm uninstall 20.14.0 # 卸载

【AIGC调研系列】chatTTS与GPT-SoVITS的对比优劣势

ChatTTS和GPT-SoVITS都是在文本转语音(TTS)领域的重要开源项目,但它们各自有不同的优势和劣势。 ChatTTS 优点: 多语言支持:ChatTTS支持中英文,并且能够生成高质量、自然流畅的对话语音[4][10][13]。细粒度控制:该模型可以预测和控制细粒度的韵律特征,如笑声、停顿和语气词,增加了可玩性[1][2]。适用于对话场景:专门为对话任务设计,适用于LLM助手对话任务、对话音频和视频介绍等[4][16]。社区反响:ChatTTS在GitHub上迅速获得了大量关注,短时间内斩获了9k的Star量[1][8]。 缺点: 长文本处理能力有限:目前版本不能生成超过30秒的音频,处理较长的文本时会出现分词问题[8]。训练数据量:最大的模型使用了10万小时以上的中英文数据进行训练,而开源版本使用了4万小时的数据[10][13]。伦理限制:为了防止滥用,开发者在训练过程中添加了少量额外的高频噪音,并压低了音质[15]。 GPT-SoVITS 优点: 少样本中文声音克隆:GPT-SoVITS在少样本中文声音克隆方面表现出色,能够生成具有人类语言细微差别、情感和独特性的声音[3][12]。硬件要求较低:相比其他模型,GPT-SoVITS对硬件配置的要求较低,一般只需6GB显存以上的GPU即可满足[6]。跨语言推理能力:支持中文、英文和日文,未来还将扩展更多语言[20]。 缺点: API调用支持较差:原版API在调用方面存在一些问题,如不能中英混合、无法按标点切分句子等,因此需要对API进行改良[3]。训练和推理复杂性:虽然云端模型训练工具可以简化操作,但本地训练和推理仍然需要较高的算力[5]。 ChatTTS在多语言支持、细粒度控制和对话场景应用方面表现出色,但在处理长文本和伦理限制方面存在一定的局限。GPT-SoVITS则在少样本中文声音克隆和跨语言推理能力方面有显著优势,但其API调用支持较差且训练和推理过程较为复杂。根据具体需求选择合适的模型是关键。 ChatTTS在处理超过30秒长文本时的具体技术限制是什么? ChatTTS在处理超过30秒长文本时的具体技术限制主要包括以下几个方面: 生成时间和资源消耗:当输入文本较长时,ChatTTS需要更多的计算资源来进行语音合成,这可能导致生成过程时间过长或资源消耗过大[22]。合成质量:输入文本的复杂性和长度会影响合成语音的质量。对于超过30秒的长文本,合成质量可能会下降,因为系统需要处理更多的数据并进行更复杂的计算[22][23]。技术实现:初始版本的ChatTTS无法生成超过30秒的音频。这表明其内部算法和优化机制可能还不够成熟,需要进一步的手动修复和优化才能支持更长的文本[21]。 ChatTTS在处理超过30秒长文本时面临的技术限制主要包括计算资源需求高、合成质量下降以及算法优化不足等问题。 GPT-SoVITS的API改良版本有哪些,以及它们如何改善了中英混合和标点切分的问题? GPT-SoVITS的API改良版本主要包括以下几个方面的改进: 中英混合支持:原版GPT-SoVITS的API在调用方面存在一些问题,特别是不能处理中英混合的情况[25]。为了解决这一问题,改良后的API增加了对中英文混合文本的支持,使得用户可以输入包含中英文混合的文本,并且能够正确地进行声音克隆[28][30]。标点切分优化:在原版API中,标点符号的处理不够完善,导致在某些情况下无法正确地按照标点进行句子分割[25]。改良后的API对标点符号的处理进行了优化,确保了在进行声音克隆时能够根据标点符号正确地切分句子,从而提高了语音的自然度和准确性[24]。 ChatGPT-SoVITS在跨语言推理能力方面的具体表现和限制是什么? GPT-SoVITS在跨语言推理能力方面表现出色,但也有一些限制。 具体表现如下: 支持多种语言:GPT-SoVITS支持与训练数据集不同语言的推理,目前支持英语、日语和中文[32][33][34]。这意味着用户可以将这些语言的文本转换为相应的语音。高质量的语音合成:该工具能够生成非常自然和连贯的文本到语音转换结果,具有很高的语言质量[33]。便捷的操作流程:用户只需输入5秒的声音样本即可体验文本到语音的转换,这大大简化了操作流程[32][38]。 然而,GPT-SoVITS在跨语言推理能力方面也存在一些限制: 有限的语言范围:尽管支持三种主要语言,但其跨语言能力仍然局限于这些语言之内。对于其他语言的支持可能需要额外的训练和调整[32][33][34]。硬件要求:虽然GPT-SoVITS对硬件配置的要求相对较低,但在处理大量数据或进行复杂推理时,仍然需要一定的计算资源[39]。 GPT-SoVITS在跨语言推理能力方面表现出色,尤其是在英语、日语和中文这三种语言上。 如何优化GPT-SoVITS的训练和推理过程以降低硬件要求? 为了优化GPT-SoVITS的训练和推理过程以降低硬件要求,可以采取以下几种策略: 模型结构优化: 通过深度压缩技术减少模型大小,从而降低显存需求[44]。使用DSD(Deep Shrink and Denoise)正则化技术提高预测准确度,同时减少模型复杂度[44]。数据和训练策略优化: 采用数据最优化和阶段训练方法,通过精心筛选的数据集来提高训练效率[42]。使用Colossal-AI框架进行模型并行处理,这可以显著减少每张显卡的占用,从而降低总体硬件需求[43][46]。显存管理和量化: 在Colossal-AI中,通过对模型进行Int8量化,可以将模型总体显存占用从352.3GB(FP16)降低到185.6GB[43]。使用Colossal-AI的模型并行技术,将每张显卡的占用减少到了23.2GB[43]。硬件加速和异构计算: 利用GPU优化,例如通过改进显存管理策略来提高GPU利用率[41]。考虑使用异构硬件加速,如结合NPU(Neural Processing Unit)等专用硬件来进一步提升计算能力[45]。推理速度优化: 使用TorchScript进行推理速度优化,这可以显著提高推理速度[47]。硬件选择和配置: GPT-SoVITS相对较低的硬件要求一般只需6GB显存以上的GPU即可满足[48]。因此,在选择硬件时应考虑性价比高的GPU。在硬件升级方面,可以考虑使用成本效益高的GPU或其他专用硬件来进一步降低硬件成本[45]。 ChatGPT和GPT-SoVITS在伦理限制方面的具体措施有哪些,以及它们如何影响用户体验? ChatGPT和GPT-SoVITS在伦理限制方面采取了多种措施,这些措施对用户体验有着显著的影响。 ChatGPT的伦理限制措施 ChatGPT不应创造与实际情况脱节的虚假内容。这一措施旨在确保生成的信息真实可靠,避免误导用户[51]。 在教育领域,英国等国家的高校严格限制ChatGPT等生成式人工智能在撰写学术论文时的使用,以防止抄袭和其他不当行为[52]。 OpenAI通过过滤有害内容并使用自己的提示修改输出,确保用户体验的安全性和适宜性[53]。 ChatGPT的道德限制基于伦理准则和社会价值观设计,适用于其在各个领域的应用,包括但不限于教育、媒体和商业等[54]。 如果用户试图绕过ChatGPT的道德限制,平台提供商会进行监测和打击,一旦发现违规行为,就会采取相应的措施,包括封禁账户。这种措施不仅会影响用户当前的项目和工作,还可能对其未来的职业生涯产生负面影响[55]。 GPT-SoVITS的伦理限制措施 虽然证据中没有直接提到GPT-SoVITS的具体伦理限制措施,但可以推测其也会类似地采取一些基本的伦理限制措施,以确保其应用不会造成伤害或不当影响。 对用户体验的影响 ChatGPT通过自然语言交互,使得用户可以直接向模型提问或表达需求,从而拓宽了人们获取信息的渠道,不再局限于传统的搜索引擎或应用[57]。 ChatGPT能够产生吸引人的、与上下文相适应的回应,这有助于激发用户的热情,提高用户的参与度和保留率[58]。 用户通过亲身体验ChatGPT的功能,可能会与其他人分享他们的积极经验,传播意识并推动进一步采用[59]。 许多国家和地区对ChatGPT的发展施加了数据安全和隐私保护政策的限制。这些措施确保用户在使用过程中不会透露过多个人信息,如姓名、年龄等[60]。 参考资料 1. 爆火ChatTTS突破开源语音天花板,3天斩获9k的Star量_澎湃号·湃客_澎湃新闻-The Paper [2024-05-31] 2. GitHub - 2noise/ChatTTS at upstract.com [2024-05-29] 3. GPT-SoVITS项目的API改良与使用_gpt-sovits api-CSDN博客 [2024-05-05]

8 款 Stable Diffusion 最新写实风格 SDXL 大模型推荐!

以上推荐模型可在liblibai或Civitai自行下载即可。排名不分先后。 1、9realisticSDXL:触发词:xxmixgirl;图片尺寸:768*1280;全身:建议开hires,用ad修脸。肖像照:可以不开hires,可以用ad修脸 采样次数:30;CFG Scale:8-10 2、麻袋realistic_XL:基于兔佬LEOSAM HelloWorld 新世界为底模,采用最新GPT4V打标训练的模型,可以不使用LoRA,用prompt,出各种风格图
3、LEOSAM HelloWorld 新世界:HelloWorld 5.0采用GPT4V打标,并在科幻、动物、建筑、插画等领域均进行了不小幅度的微调训练。在使用Hello World模型时请务必记得使用触发词leogirl,这样可以确保SDXL模型更稳定地触发训练集效果。 4、Hotpot_SDXL 麻瓜火锅 | 超真实大模型:Hotpot_SDXL在【光影】和【肢体】两方面做了加强特训。带来了很专业的画面质感,脸上的阴影、头发的背光、人物的轮廓都有着很高级的摄影镜头感;触发词mugglelight。 5、SDXL 1.0 ArienMixXL 亚洲人像:基于ArienRealWordV1的定向微调,改变底层对亚洲人的刻板印象。本版本加入了很多古风妆容,能够很好的还原古风妆容。 6、YFilter_SDXL_RealMix:建议配合 YFilter 系列滤镜 LoRA 一起使用,不需要质量相关提示词,对新手十分友好。只需简单的描述,就能出图。更真实地(人脸)皮肤纹理,减弱人像“AI感”。 7、XXMixSDXL_LiblibOnly:肖像和稍微远一些的半身像出图效果较好。配合高清修复和afterdetailer扩展插件出全身图。 8、国风 | 汉服 | 写实 SDXL:模型注重写实,画面唯美,一花一景诉柔情,古韵今风叙汉服; stable diffusion模型下载 stable diffusion往往一开始使用时图片等无法达到理想的生成效果,这时则需要通过使用大量训练数据,调整模型的超参数(如学习率、训练轮数、模型大小等),可以使得模型更好地适应数据集,并生成更加真实、准确、高质量的图像。 stable diffusion提示词 提示词是构建由文本到图像模型解释和理解的单词的过程。可以把它理解为你告诉 AI 模型要画什么而需要说的语言,整个SD学习过程中都离不开这本提示词手册。 SD从0到落地实战演练 如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名SD大神的正确特征了。 这份完整版的stable diffusion资料我已经打包好,需要的点击下方插件,即可前往免费领取!

1V1音视频实时互动直播系统

李超老师的项目 先肯定分为两个两个端,一个是服务器端一个是客户端。客户端用于UI界面的显示,服务器端用于处理客户端发来的消息。 我们先搭建stun和turn服务器 首先介绍一下什么是stun协议, 它是用来干什么的? stun协议存在的目的就是进行NAT穿越。stun是典型的客户端、服务器模式。客户端发送请求,服务器进行响应。 那么是什么NAT穿越呢? 首先我们先了解一下为什么要进行NAT穿越。下面举个例子,在两个浏览器之间进行实时的音视频互动,对于底层来说,这就是两个端点之间进行高效的网络传输。 为了解决音视频网络传输的问题,webrtc引入了一些网络传输协议。 1.NAT:那么此时我们介绍NAT,简单理解为将内网的地址转换为公网的地址,内网地址无法通讯,通过NAT转换为公网之后,才有通信的可能。 2.说到这里那么顺便介绍一下stun,这个stun充当的是中介的作用,在NAT的基础上,交换两个公网的信息,使得;两个公网之间可以建立连接。 3.turn,stun是有一定几率是不成功的,因此turn会在云端架设一个服务器,在p2p连接不成功的情况下,保证音视频的互通,它就相当于一个中转站。 4.ICE, 罗列所有通信可能性,选择最优解。 NAT又分为四种类型: 完全锥型 地址限制锥型 端口限制锥型 对称型 根据图中所示很好理解,caller与信令服务器连接,同时callee也跟信令服务器连接,第二个callee也跟信令服务器连接;caller向信令服务器发出join请求,信令服务器响应返回joined信息,第一个callee同理,但是第二个callee发送完join之后服务器发现成员已满,因此返回一个full信息,该callee不能join。然后caller和callee进行媒体协商,协商成功之后进行媒体流的数据传输。之后callee主动发出leave请求,服务器响应跟caller发出bye信息并返回callee leaved信息。 我们来看一下服务器端的代码。主要就是处理客户端发来的信令消息。也就是以上的流程转换为代码。 io.sockets.on('connection', (socket)=> { socket.on('message', (room, data)=>{ socket.to(room).emit('message',room, data); }); socket.on('join', (room)=>{ socket.join(room); var myRoom = io.sockets.adapter.rooms[room]; var users = (myRoom)? Object.keys(myRoom.sockets).length : 0; logger.debug('the user number of room is: ' + users); if(users < USERCOUNT){ socket.emit('joined', room, socket.id); //发给自己 if(users > 1){ socket.to(room).emit('otherjoin', room, socket.id);//发给除自己之外的房间内的所有人 } }else{ socket.

SD NAND(贴片式TF卡)在储能领域的应用

储能系统(Energy Storage System,简称ESS)是指能将电能以化学能、势能、动能等形式储存起来,并在需要时将其转化为电能供应给用户的设备。主要由电池管理系统(BMS)、能量管理系统(EMS)、电池组、储能变流器(PCS)以及其他电气设备构成。随着储能技术的不断进步,SD NAND(贴片式TF卡)在储能领域的应用将也更加广泛和深入。 SD NAND在储能领域的应用: SD NAND在储能领域中扮演着关键角色,它们不仅用于数据存储和记录,还涉及到系统的智能控制、优化管理、安全监控、通信接口以及维护和诊断等多个方面。 数据记录与管理:储能系统中的电池管理系统(BMS)需要记录和管理电池的充电状态、健康状况、温度等关键参数。SD NAND可以存储这些数据,帮助系统进行实时监控和长期数据记录。 智能控制:储能系统通常配备有能量管理系统(EMS),它需要对储能系统的充放电策略、与电网的交互等进行智能控制。SD NAND可以存储控制算法、参数设置等信息,是实现智能控制的基础。 系统优化:通过对历史数据的分析,可以优化储能系统的运行策略,提高效率和寿命。存储芯片可以保存这些历史数据,供系统分析使用。 安全性:SD NAND可以记录电池的使用情况,帮助系统及时发现异常情况,如过充、过放或温度异常,从而提高系统的安全性。 通信与接口:储能系统需要与外部设备(如电网、监控系统等)进行通信,SD NAND可以存储通信协议和接口信息,确保数据交换的准确性和安全性。 维护与诊断:SD NAND可以存储系统的维护日志和诊断信息,帮助技术人员进行故障分析和系统维护。 MK 米客方德工业级SD NAND在储能领域的优势: 高可靠性与稳定性:工业级SLC存储颗粒,保证了存储器的高可靠性和稳定性。这对于储能系统来说至关重要,因为它们需要在各种环境条件下稳定运行。 耐用性:SD NAND具有较高的写入/擦除次数,可达到100000次,这确保了产品的长期稳定运行,适合需要频繁更新数据的储能系统。 智能监控:产品配备有Smart Function智能动态监测系统,能够实时反馈Flash状态信息,包括总写入数据量、坏块数、使用寿命等关键指标。这有助于提前识别问题,优化系统性能,实现更高效的维护和升级。 高IOPS性能:SD NAND的高IOPS(每秒输入/输出操作数)性能意味着它能够更高效、更快速地处理小容量文件的随机读写请求,显著提高了数据访问速度,适合对速度有高要求的储能应用。 低功耗:产品通常具有较低的功耗,这对于储能系统来说是一个优势,因为它有助于提高整体能效。 易于集成:由于SD NAND可以直接贴片,它将传统的TF卡技术转变为可嵌入式解决方案,便于集成到各种储能系统中。

C++第二十三弹---深入理解STL中list的使用

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C++详解】 目录 1、list的介绍 2、list的使用 2.1、构造函数 2.2、赋值操作符重载 2.3、迭代器使用 2.4、容量操作 2.5、元素访问 2.6、修改操作 2.7、其他操作 总结 1、list的介绍 1. list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。 2. list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素。 3. list与forward_lis非常相似:最主要的不同在于forward_list是单链表,只能朝前迭代,已让其更简单高效。 4. 与其他的序列式容器相比(array,vector,deque),list 通常在任意位置进行插入、移除元素的执行效率更好。 5. 与其他序列式容器相比,list和forward_list最大的缺陷是不支持任意位置的随机访问,比如:要访问list的第6个元素,必须从已知的位置(比如头部或者尾部)迭代到该位置,在这段位置上迭代需要线性的时间开销;list还需要一些额外的空间,以保存每个节点的相关联信息(对于存储类型较小元素的大list来说这可能是一个重要的因素) 因此list的本质就是双向循环链表。 2、list的使用 2.1、构造函数 1. Default constructor (构造一个没有元素的空容器。) explicit list (const allocator_type& alloc = allocator_type()); 2. Fill constructor (构造了一个含有 n 个元素的容器,每个元素都是 val 的副本。 ) explicit list (size_type n, const value_type& val = value_type(),const allocator_type& alloc = allocator_type()); 3. Range constructor (使用两个迭代器 first 和 last,这两个迭代器指定了一个序列的范围,来构造一个容器。这个范围包括从 first 到 last 之间的所有元素,但不包括 last 指向的元素。)

超级详细Spring AI+ChatGPT(java接入OpenAI大模型)

Spring AI 对接各种AI大模型(AI工程领域的应用程序框架) 前期准备 API-Key:sk-3sfER03LDLG3SDFsdlwe283JSdw023lkrmrHDND32fmREKFD (格式长这样,这个不可用) 免费使用 🚀申请领取内测免费API Key免费版支持gpt-3.5-turbo, embedding, gpt-4。其中gpt-4由于价格过高,每24小时限制10次调用,且不支持流式传输。需要更稳定快速的gpt-4请使用付费版。转发Host1: https://api.chatanywhere.tech (国内中转,延时更低,host1和host2二选一)转发Host2: https://api.chatanywhere.com.cn (国内中转,延时更低,host1和host2二选一)转发Host3: https://api.chatanywhere.cn (国外使用,国内需要全局代理) 创建项目 ​ ​ pom文件配置 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>3.2.5</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.zzq</groupId> <artifactId>spring-ai-chat01</artifactId> <!-- 快照版本--> <version>1.0.1-SNAPSHOT</version> <name>spring-ai-chat01</name> <description>spring-ai-chat01</description> <properties> <java.version>17</java.version> <spring-ai.version>1.0.0-SNAPSHOT</spring-ai.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- spring ai-starter依赖 启动依赖--> <dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-openai-spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </dependency> <dependency> <groupId>org.

程序性能优化

索引 没加索引(where条件字段、order by字段,常用字段添加索引)索引没生效选错索引SQL优化 SQL数据库性能优化-CSDN博客远程调用 并行调用数据异构重复调用 循环查数据库死循环无限递归异步处理 线程池mq服务器(全称消息队列服务器)避免大事务(大事务引发的问题:死锁、锁等待、回滚时间长、接口超时、并发情况下数据库连接池被占满、数据库主从延迟) 少用@Transactional注解将查询(select)方法放到事务外事务中避免远程调用事务中避免一次性处理太多数据有些功能可以非事务执行有些功能可以异步处理锁粒度 加锁(synchronized),方法上加锁,代码块上加锁redis分布式锁数据库分布式锁(数据库锁优化方向:优先使用行锁,其次使用间隙锁,最后使用表锁) 表锁:加锁快,不会出现死锁,但锁定粒度大,发生锁冲突的概率最高,并发度最低 行锁:加锁慢,会出现死锁,但锁定粒度最小发生锁冲突的概率最低,并发度也最高 间隙锁:开销和加锁时间介于表锁和行锁之间,它会出现死锁锁定粒度介于表锁和行锁之间,并发度一般分页处理 同步调用 异步调用(多个线程异步调用远程接口,最后汇总结果统一返回)加缓存 redis缓存 二级缓存分库分表 辅助功能 开启慢查询日志 加监控(Prometheus) 链路跟踪(skywalking)