mysql实战——Mysql8.0高可用之双主+keepalived

一、介绍 利用keepalived实现Mysql数据库的高可用,Keepalived+Mysql双主来实现MYSQL-HA,两台Mysql数据库的数据保持完全一致,实现方法是两台Mysql互为主从关系,通过keepalived配置VIP,实现当其中的一台Mysql数据库宕机后,应用能够自动切换到另外一台Mysql数据库上去,保证系统的高可用。 二、搭建前准备 mysql8.0.25keepalivedkeepalibed-2.2.8Mysql-master-1192.168.1.80Mysql-master-2192.168.1.81Mysql——vip192.168.1.82(这个只是虚拟IP,不用准备虚拟机) 准备两台机器都安装mysql。 三、搭建 3.1 关闭防火墙 两台机器都关闭firewalld systemctl stop firewalld systemctl disable firewalld systemctl status firewalld 3.2 搭建双主同步 3.2.1修改master-1配置文件 现在需要搭建两个机器的主主同步 vi /etc/my.cnf [mysqld] log-bin=mysql-bin #开启主从binlog(二进制日志),主库必须开启 binlog_format=mixed #指定二进制日志格式为mixed,即在语句和行两种模式之间自动切换 server-id=1 #配置server-id(唯一)标识主机,必须与从库不一致 relay-log=relay-bin #指定中继日志文件的名称为relay-bin,用于在主从复制中传输数据 relay-log-index=slave-relay-bin.index #指定中继日志索引文件的名称,用于记录中继日志文件的位置。 auto_increment_increment=2 #指定自增长ID的增量为2,用于在主从复制中避免ID冲突。 auto_increment_offset=1 #指定自增长ID的起始值为1,用于在主从复制中避免ID冲突。 ##保存退出,并重启MySQL服务 [root@skymachine ~]# service mysql restart Shutting down MySQL.. SUCCESS! Starting MySQL.. SUCCESS! 3.2.2修改master-2配置文件 vi /etc/my.cnf ​ [mysqld] ​ log-bin=mysql-bin #开启主从binlog(二进制日志),主库必须开启 binlog_format=mixed #指定二进制日志格式为mixed,即在语句和行两种模式之间自动切换 server-id=2 #配置server-id(唯一)标识主机,必须与从库不一致 relay-log=relay-bin #指定中继日志文件的名称为relay-bin,用于在主从复制中传输数据 relay-log-index=slave-relay-bin.index #指定中继日志索引文件的名称,用于记录中继日志文件的位置。 auto_increment_increment=2 #指定自增长ID的增量为2,用于在主从复制中避免ID冲突。

【安卓虚拟相机】OBS安卓虚拟实时相机插件

前言 最近好多人找我要这款安卓相机链接OBS实时播放素材的插件,这里给大家分享一下使用教程。 一、这款软件的原理是什么? 这款软件是基于Vcam虚拟摄像头插件进行改款的,Vcam是开源的项目,Vcamxs也是开源的,在GitHub上可以搜索得到,这款软件的可以选择OBS视频推流和本地视频选择,OBS推流需要手机和相机在同一IP地址上才可以。 二、部署环境搭建教程。 准备好OBS,SRS,VCAMXS插件,先安装好OBS,然后在安装SRS本地推流,手机上插件基本上都会安装,这里不过多演示。 1.查看本地网络IP地址,电脑运行CMD命令,输入:ipconfig,查看 IPv4 地址。如图: 2.打开OBS→设置→直播 在服务器里面输入,你的IPv4的地址,推流码相当于密码,自己随便设置一个即可。 rtmp://XXX.XXX.XXX.XXX/live/ 3.安装SRS本地推流,这个直接安装就可以了,安装好以后,电脑桌面会有一个图标,点击即可。 4.手机打开软件填写地址和OBS推流一样,手机端最后的后缀为OBS里面设置的那个密码。我设置的后缀密码为yinets,所以手机端后面填写yinets,电脑端一定不要忘记开启SRS!OBS在点击推流,就可以了。 rtmp://XXX.XXX.XXX.XXX/live/yinets 5.这样就设置完成了!图片展示: 总结 提示:基本上都是开源的软件,网上一搜就可以搜到,讲道理挺好用的,也能识别到,希望此篇文章能够帮助到大家。

#RAG | AIGC # RAG召回率提升的方法以及优劣势

RAG(Retrieval-Augmented Generation)是一种结合了检索(Retrieval)和生成(Generation)的模型,用于增强大型语言模型(LLMs)的性能。召回率(Recall)是衡量RAG系统性能的关键指标之一,它表示系统能够检索到的相关文档占所有相关文档的比例。提升RAG的召回率可以通过以下几种方法实现: 改进召回(Retrieval):通过改进召回过程来提高从大规模语料库中检索与给定查询相关的文档的准确性和效率[7]。 利用上下文信息:在召回过程中纳入查询和文档的上下文信息,可以更准确地判断文档与查询的相似度[7]。 引入多任务学习:将召回任务与其他相关任务(如分类、实体识别等)相结合,可以提高召回的准确性[7]。 使用知识图谱:知识图谱包含丰富的语义信息和实体关系,可以用于增强召回的准确性[7]。 引入重排(Reranking):对召回结果进行排序,旨在提高生成答案的质量[7]。 使用强化学习:通过试错来学习最优策略,从而提高重排的准确性[7]。 引入用户反馈:收集用户对生成答案的反馈,可以不断优化重排模型[7]。 使用知识蒸馏:将教师模型的输出作为软标签,用于训练学生模型,提高重排的准确性[7]。 优化文档读取器:通过优化文档读取器来提高文档加载的准确性和效率[6]。 重写用户查询:将自然语言查询通过大语言模型转换为优化后的自定义查询语句,提高准确性和召回率[8]。 模块化RAG:通过模块化RAG整合多种方法来增强RAG的不同组成部分[2]。 RAG融合:结合多查询检索和对检索到的文档进行重排的方法,提高搜索结果的相关性[2]。 这些策略可以帮助提升RAG系统在处理大型语言模型应用时的性能和效率,从而提高召回率。 优劣势 每种方法提升RAG系统召回率的优劣势如下: 改进召回(Retrieval): 优势:可以提高检索相关性的准确性,提升系统性能。劣势:可能需要复杂的算法和更多的计算资源。 利用上下文信息: 优势:增加上下文理解,提高检索的相关性。劣势:处理上下文信息可能增加计算复杂度。 引入多任务学习: 优势:通过共享表示来提升不同任务间的协同效果。劣势:设计合适的多任务学习框架可能具有挑战性。 使用知识图谱: 优势:提供丰富的语义信息,增强模型的推理能力。劣势:知识图谱的构建和维护需要持续的工作。 引入重排(Reranking): 优势:优化检索结果,提升最相关文档的排名。劣势:可能需要额外的模型和计算来执行重排。 使用强化学习: 优势:自动学习最优策略,适应性强。劣势:训练过程可能不稳定,需要大量数据。 引入用户反馈: 优势:实时调整,提高用户满意度。劣势:需要有效的机制来收集和整合用户反馈。 使用知识蒸馏: 优势:将复杂模型的知识迁移到简单模型,提高效率。劣势:可能损失一些细节信息。 优化文档读取器: 优势:提高文档加载的速度和准确性。劣势:可能需要针对特定数据源定制解决方案。 重写用户查询: 优势:通过优化查询来提高检索的相关性。劣势:自动重写查询可能需要复杂的自然语言处理技术。 模块化RAG: 优势:允许灵活地集成和优化RAG的不同组件。劣势:模块间的协调和集成可能复杂。 RAG融合: 优势:结合多种技术,提高整体性能。劣势:实现和维护可能较为复杂,需要平衡不同技术。 在实际应用中,选择哪种方法或组合取决于具体的业务需求、资源可用性以及系统的当前性能。通常,最佳策略是综合考虑多种方法,以达到召回率和系统性能的最佳平衡。 参考文献 深度探索:如何优化检索增强生成(RAG)流程中的检索器性能RAG性能优化终极指南 - 知乎RAG应用程序的12种调优策略:使用“超参数”和策略优化来提高检索性能如何优化 RAG 系统的性能表现?10 条实用策略 - InfoQ 写作社区【AI大模型应用开发】【RAG优化 / 前沿】0. 综述:盘点 …从召回与重排看RAG架构下的LLM应用效果提升-百度开发者中心借助这个开源项目,我将 RAG 的准确性和召回率都提高了两倍!改进召回(Retrieval)和引入重排(Reranking)提升RAG …NLP(八十四)RAG框架中的召回算法可视化分析及提升方法大语言模型的检索增强生成 (RAG) 方法 | Prompt Engineering …

安卓绕过限制直接使用Android/data无需授权,支持安卓14(部分)

大家都知道,安卓每次更新都会给权限划分的更细、收的更紧。 早在安卓11的时候还可以直接通过授权Android/data来实现操作其他软件的目录,没有之前安卓11授权的图了,反正都长一个样,就直接贴新图了。 后面到了安卓12~13的时候无法直接授权Android/data来进行操作,不过可以通过授权Android/data/包名来实现操作。 到了现在的安卓14,更是直接无法直接授权。 不过我们可以通过shizuku来获取shell权限进行操作。 但是,使用shizuku授权还是有些繁琐,用户需要多下载一个软件,还得进行连接、授权等操作,所以今天,可以像安卓11那样直接授权Android/data的源码,他来了! 现在直接利用上面漏洞实现免授权直接访问,像安卓11以下一样,资源已更新。

AI进化之路:解读大模型技术的四大技术架构

随着人工智能技术的不断发展,大模型技术架构也在不断演进和完善。在这篇文章中,我们将深入探讨四种主要的大模型技术架构:纯Prompt、Agent + Function Calling、RAG(检索增强生成)和Fine-Tuning。每一种架构都有其独特的特点和应用场景,让我们一一了解它们。 1. 纯Prompt:模拟对话的简单交互 纯Prompt技术架构可以看作是最原始、最直观的AI交互方式。它就像与一个人对话,你说一句,AI回应一句,你再继续说,AI再继续回应。这种交互方式的优点在于简单直接,不需要复杂的设置和调用。 应用场景: 当你问AI一个问题,比如“过年去哪玩”,AI会根据你的问题直接给出一个答案。这种方式适用于简单的对话场景,但在处理复杂任务时可能显得力不从心。 2. Agent + Function Calling:主动提问与功能调用 在Agent + Function Calling架构中,AI不仅能够被动回答问题,还可以主动提问以获取更多信息,并通过功能调用来完成特定任务。例如,你问AI“过年去哪玩”,AI可能会先反问你有几天假期,通过了解更多背景信息来提供更准确的建议。 应用场景: 这种架构适用于需要多轮交互和功能执行的复杂场景,比如智能家居控制、客户服务等。AI不仅能够理解用户需求,还能主动引导对话和调用具体功能来解决问题。 3. RAG(检索增强生成):结合向量数据库进行检索 RAG架构结合了Embeddings和向量数据库技术。Embeddings是将文字转换为便于相似度计算的向量编码,这些向量存储在向量数据库中,以便于快速查找。当接收到一个输入时,AI会根据输入向量在数据库中找到最相似的向量,从而提供相关信息。 应用场景: 例如在考试时,看到一道题目,可以通过RAG架构在相关资料中找到对应的内容,并结合题目生成答案。这种方法能够显著提高信息检索的效率和准确性。 4. Fine-Tuning:深入学习与长期记忆 Fine-Tuning是一种对大模型进行微调的技术,通过针对特定任务或领域进行进一步训练,使模型能够长期记住并活学活用这些知识。与前面提到的方法不同,Fine-Tuning能够使AI在特定领域表现得更加专业和准确。 应用场景: 这种技术适用于需要高准确度和专业知识的领域,如医学诊断、法律咨询等。通过Fine-Tuning,AI可以提供更加专业、可靠的建议和服务。 总结 大模型技术架构从纯Prompt的简单对话,到Agent + Function Calling的主动交互,再到RAG的高效检索,最终到Fine-Tuning的深入学习,每一种架构都有其独特的优势和应用场景。理解这些技术架构的特点和适用范围,有助于我们更好地利用人工智能技术来解决实际问题,提升工作和生活的效率。 希望通过这篇文章,你能对大模型技术架构有一个更清晰的认识,并在未来的工作和学习中灵活应用这些技术,让AI成为你的得力助手。 ​ 如何学习AI大模型? 现在社会上大模型越来越普及了,已经有很多人都想往这里面扎,但是却找不到适合的方法去学习。 作为一名资深码农,初入大模型时也吃了很多亏,踩了无数坑。现在我想把我的经验和知识分享给你们,帮助你们学习AI大模型,能够解决你们学习中的困难。 我已将重要的AI大模型资料包括市面上AI大模型各大白皮书、AGI大模型系统学习路线、AI大模型视频教程、实战学习,等录播视频免费分享出来,需要的小伙伴可以扫取。 一、AGI大模型系统学习路线 很多人学习大模型的时候没有方向,东学一点西学一点,像只无头苍蝇乱撞,我下面分享的这个学习路线希望能够帮助到你们学习AI大模型。 二、AI大模型视频教程 三、AI大模型各大学习书籍 四、AI大模型各大场景实战案例 五、结束语 学习AI大模型是当前科技发展的趋势,它不仅能够为我们提供更多的机会和挑战,还能够让我们更好地理解和应用人工智能技术。通过学习AI大模型,我们可以深入了解深度学习、神经网络等核心概念,并将其应用于自然语言处理、计算机视觉、语音识别等领域。同时,掌握AI大模型还能够为我们的职业发展增添竞争力,成为未来技术领域的领导者。 再者,学习AI大模型也能为我们自己创造更多的价值,提供更多的岗位以及副业创收,让自己的生活更上一层楼。 因此,学习AI大模型是一项有前景且值得投入的时间和精力的重要选择。

MySQL必看表设计经验汇总-上(精华版)

⛰️个人主页: 蒾酒 🔥系列专栏:《mysql经验总结》 本内容一共分上下两篇 上:MySQL必看表设计经验汇总-上(精华版)-CSDN博客 下:MySQL必看表设计经验汇总-下(精华版)-CSDN博客 目录 1.命名要规范 2选择合适的字段类型 3.主键设计要合理 4.选择合适的字段长度 5.优先考虑逻辑删除,而不是物理删除 6.每个表都需要添加通用字段 7.一张表的字段不宜过多 最近发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。 点击跳转到学习网站 前言 在数据库设计中,命名规范、合适的字段类型、主键设计、字段长度、逻辑删除、通用字段和表的字段数量都是非常重要的考虑因素。合理的数据库设计能够提高数据管理和查询效率,减少空间浪费和复杂性,并且符合命名规范能够使数据库结构更加清晰易懂。 1.命名要规范 数据库表名、字段名、索引名等都需要命名规范。命名可读性要高,尽量使用英文,采用驼峰或者下线分割的方式,让人见名知意。 反例:这些命名没有遵循统一规范,缺乏描述性,很难让人见名知意 表名yh(用户表),shangpin(商品表),yhdd(用户订单表)字段名yhm(用户名),mm(密码),sjh(手机号)索引名index1(用户id),index2(商品id),index3(订单id) 正例:见名知意 表名user_info,product_info,order_info字段名user_name,password,phone索引名idx_order_user,idx_product_id,idx_order_id 技巧: 表名,字段名必须使用小写字母,禁止数字开头,禁止用拼音,尽可能不用英文缩写 主键索引名为pk_字段名,唯一索引名为uk_字段名,普通索引名为idx_字段名。 2选择合适的字段类型 根据数据类型选择字段类型:不同的数据类型应该使用不同的字段类型。 整数型数据可以使用INT或BIGINT类型浮点型数据可以使用 FLOAT或DOUBLE类型字符型数据可以使用VARCHAR或CHAR类型 考虑数据长度: 字段类型应该根据所需存储的数据长度来选择。 如果某个字段的数据长度不会超过 10 个字符,则可以使用 CHAR(10)类型代替VARCHAR(50)类型,以节省空间。如果存储的值太大,建议字段类型修改为text,同时抽出单独一张表,用主键与之对应 注意精度和小数位数。 对于需要精确数值计算的字段(如货币和百分比),应该选择带有精度和小数位数的字段类型(如 DECIMAL)。 考虑数据完整性:字段类型也应该考虑到数据完整性。 日期型数据应该使用DATE或DATETIME类型,以确保输入的日期格式正确 3.主键设计要合理 主键的设计在数据库中非常重要,它用于唯一标识表中的每一行数据,并且在数据操作和查询中起到关键作用。通常主键的设计,不要与业务相关联,因为业务是会发生变化的,应当 使用自增的 id,并且保持主键的连续性。如果说是分布式系统可以使用优化的雪花id 等等 注意:不推荐使用uuid当主键(会带来性能、索引效率等问题) 4.选择合适的字段长度 在mysql中,varchar和char类型表示字符长度,而其他类型表示的长度都表示字节长度。 char(10)表示字符长度是10。(例如,存储 "hello" 时,剩余的 6 个字符会以空格符填充。) bigint (4)表示显示长度是4个字节,但是因为bigint实际长度是8个字节,所以bigint (4)的实际长度就是8个字节(位数不足时会在左侧填充 0 直到满足位数要求)。 所以在设计表时需要充分考虑一个字段的长度,比如一个用户名字段 (它的长度5~20个字符)可以考虑设置为 varchar (32)。需要注意字段长度一般设置为2的n次方。 5.优先考虑逻辑删除,而不是物理删除 物理删除:把数据从硬盘中删除,可释放存储空间逻删除:给数据添加一个字段,比如is deleted,以标记该数据已经逻辑删除 物理删除会带来以下问题: 数据恢复困难物理删除会导致索引树重构 6.

MySQL必看表设计经验汇总-下(精华版)

⛰️个人主页: 蒾酒 🔥系列专栏:《mysql经验总结》 本内容一共分上下两篇 上:MySQL必看表设计经验汇总-上(精华版)-CSDN博客 下:MySQL必看表设计经验汇总-下(精华版)-CSDN博客 目录 7.定义字段尽可能not null 8.合理添加索引 9.不需要严格遵守3NF,通过业务字段冗余来减少表关联 11.避免使用MySQL保留字 12.不搞外键关联,一般都在代码维护 13.字段要注释 14.时间类型的选择 附加内容 有关SQL编写的一些优化经验 最近发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。 点击跳转到学习网站 本内容共分上下两篇建议从上篇开始看,下篇衔接上篇 7.定义字段尽可能not null 如果没有特殊的理由,一般都建议将字段定义为NOT NULL。为什么呢? 首先,NOT NULL 可以防止出现空指针问题 其次,NULL值存储也需要额外的空间的,它世会导致比较运算更为复杂,使优化器难以优化SQL。 NULL值有可能会导致索引失效 如果将字段默认设置成一个空字符串或常量值并没什么不同,且都不会影响到应用逻辑,那就可以将这个字段设置为NOT NULL。 8.合理添加索引 当设计表时,需要考虑哪些字段需要加索引,可以遵循以下几个原则: 1.根据查询条件进行选择(高频使用)::如果在查询中使用了某个字段作为查询条件,那么这个字段就应该建立索引。例如,在用户表中,如果需要根据用户的姓名进行查询,那么就应该为姓名字段建立索引。 2.区分度高的字段优先:如果一字段的取值范围非常小,例如性别只有男女两种可能,那么这个字段就不适合建立索引。相反,如果一个字段的取值范围很大且区分度高,例如用户ID,那么这个字段就非常适合建立索引。 3.不要建立过多的索引:每个表所建立的索引数量应该控制在一个合理的范围内,一般不要超过5个。因为过多的索引会导致写入速度变慢,并占用更多的存储空间。 4.联合索引优化:在某些情况下,可以通过联合索引的方式来优化查询速度,减少所需的索引数量。例如,在用户表中,如果需要根据用户姓名和年龄进行查询,那么可以将这两个字段组合成联合索引。 假设你有一个订单表,包含订单ID、用户ID、订单金额、订单状态等字段。现在需要根据用户ID和订单状态进行查询,可以考虑为用户ID和订单状态这两个字段建立联合索引。 9.不需要严格遵守3NF,通过业务字段冗余来减少表关联 简单来说就是反范式设计常见形式是在第三范式(3NF)的基础上进一步进行冗余,从而减少表关联 数据库三范式(3NF): 第一范式:对属性的原子性,要求属性具有原子性,不可再分解第二范式::记录的唯一性,要求记录有唯一标识,即实体的唯一性,即不存在部分依赖第三范式:对字段的冗余性,要求任何字段不能由其他字段派生出来,它要求字段没有冗余,即不存在传递依赖 假设需要设计个产品订单表,包含以下字段: 订单ID、用户ID、订单日期、产品名称、产品价格品数量以及订单总价。正常情况下,可能会分别设计订单表和产品表,并使用外键进行关联,例如: create table orders ( id int(11) not null auto_increment, user_id int(11) not null, -- 用户ID order_date date not null, -- 订单日期 product_id int(11) not null, -- 产品ID quantity int(11) not null, -- 数量 primary key (id), foreign key (product_id) references product (id) ); create table product ( id int(11) not null auto_increment, name varchar(256) not null, -- 产品名称 price decimal(10, 2) not null, -- 价格 primary key (id) ); 这种设计在使用时会比较麻烦,你要先查订单表再查产品表通过数量跟单价才可以计算出总价。

Python 安装 Selenium 报错解决方案:全方位排错指南

引言 在尝试使用 pip 安装 Selenium 库时,您可能会遇到中断报错,这通常是由于多种原因造成的,如网络问题、权限问题或依赖项缺失等。本文将指导您如何解决这一常见问题。 一、检查网络连接 首先,确保您的网络连接稳定。pip 安装过程中需要从互联网下载包,因此网络不稳定可能导致安装失败。 二、使用管理员权限运行 在 Windows 系统中,尝试使用管理员权限运行命令提示符或 PowerShell。 右键点击命令提示符或 PowerShell 图标。选择“以管理员身份运行”。再次运行安装命令。pip install selenium 三、更新 pip、setuptools 和 wheel 确保您的 pip、setuptools 和 wheel 是最新版本,可以减少安装过程中的错误。 更新 pip:pip install --upgrade pip 更新 setuptools:pip install --upgrade setuptools 更新 wheel:pip install --upgrade wheel 四、检查 Python 版本兼容性 确保您安装的 Python 版本与 Selenium 兼容。例如,Selenium 4.x 支持 Python 3.7 及以上版本。 检查当前 Python 版本:python --version 如果需要,更新 Python 到兼容版本。 五、清除缓存 pip 的缓存有时可能导致安装问题。尝试清除缓存后重新安装。 清除 pip 缓存:pip cache purge 再次尝试安装 Selenium:pip install selenium 六、检查代理设置 如果您在使用代理服务器,确保 pip 配置正确。

Python筑基之旅-函数(Function)

目录 一、函数的概念 1、函数的组成 1-1、函数名(Function Name) 1-2、参数列表(Parameters) 1-3、函数体(Function Body) 1-4、返回值(Return Value) 2、函数的语法 3、函数的调用 二、函数的参数 1、形参(Parameters) 2、实参(Arguments) 3、注意事项 3-1、位置参数 3-2、关键字参数 3-3、默认参数 3-4、可变参数 三、函数的应用场景 1、代码复用 2、模块化编程 3、数据处理 4、事件处理 5、算法实现 6、回调函数 7、装饰器 8、生成器 9、闭包 10、库和框架开发 四、函数的注意事项 1、函数定义 2、参数传递 3、作用域和命名空间 4、文档字符串 5、错误处理 6、返回值 7、递归 8、函数测试 9、函数长度和复杂度 10、遵循PEP 8 11、函数式编程特性 12、性能考虑 五、如何学好函数? 1、理解函数的基本概念 2、动手实践 3、学习使用内置函数 4、编写可重用的函数 5、学习异常处理 6、编写文档字符串 7、学习并使用高阶函数 8、利用lambda函数 9、阅读并学习他人的代码 10、不断练习和反思 11、学习并使用模块和包 12、学习函数式编程概念 13、关注性能 14、参加编程社区和讨论 六、推荐阅读 1、Python函数之旅 2、Python算法之旅 3、个人博客主页 一、函数的概念 函数(Function)是编程中一个核心概念,它表示一段具有特定功能的代码块,这段代码块可以被多次调用执行相同的任务。函数通常用于封装一组相关的操作,以便在其他地方重复使用,通过定义和使用函数,可以使得代码更加模块化、可维护、可重用和易于理解。 1、函数的组成 1-1、函数名(Function Name) 用于标识和引用函数的名称,必须符合命名规则(例如,不能以数字开头,不能是Python的关键字等)。

我把我的声音训练成了AI模型,并让它唱了一首歌...(附超全面教程,你奶奶看了都会用)

我天生五音不全,对于所有需要唱歌的场合我都是抗拒的,因为只有一片笑声。 我一直有一个梦想,就是用我的声音,唱一首不跑调的歌。 得益于AI的井喷式发展,我的愿望实现了。 我把我的声音,训练成了模型,并让它唱了一首我非常喜欢的《富士山下》。 当梦想变成现实,当不需要我再开口就有我的声音,我的一切都变成模型被复刻下来。好像我也永远停在了这个时间点。 变成了真正的,数字生命。 我使用的项目是So-VITS-SVC,目前质量最高还原度最逼真的AI声音项目。 这里做个简单的小科普。 AI音频远没有AI绘图和AI文本技术成熟。目前主流有两种路线,SVC和TTS。 **SVC(Singing Voice Conversion),歌声转换,也就是类似变声器的玩意,抽取一个人的声音作为训练数据,训练一个神经网络模型,学习他的声线;然后用模型在目标歌曲上做推理,即可实现用自己的声线唱目标歌曲。**目前主要是两个项目顶着,So-VITS-SVC和Diff-SVC,我用的就是前者。然而可惜的是,So-VITS-SVC项目已经于4月23号正式停止维护了。 TTS(Text-to-Speech),文本生成音频,这玩意应用现在极其成熟,应用端各种什么微软腾讯都玩的66的。前几天大火的Bark项目就是TTS,而定制自己的声音TTS项目PaddleSpeech也是极其简单,在百度飞浆上可以直接跑,属于有手就行那种。后面我也会出一个TTS的PaddleSpeech教程,非常简单。 AI生成领域,四大模态:文案、图片、声音、视频。 文案和图片已经被完全攻陷,声音已经开始崭露头角,而视频仍然在坚守着属于人类的最后一块堡垒。 话不多说,直接开始我们的AI声音教程。 整个AI声音教程相比AI绘图会比较难一些,所以文章可能会比较长,我尽量写的细一些,让你奶奶来了都会自己训练模型~ 整体大概需要4步。 准备声音数据集。租云算力,上传数据集。在云上训练模型。本地进行推理模型重绘歌曲。 当然,万物起始,先下载傻瓜一站式整合包,关注我公众号:数字生命卡兹克,回复S就有了,此处感谢B站大佬@羽毛布団制作的的开源整合包,AI绘图有秋叶,AI声音有羽毛,都是一等一的大佬! 一. 准备数据集 声音模型对数据集的要求比较苛刻,因为声音越优质,越干净,效果一定越好。所以没有杂音、没有乱七八糟的混响等等的干声是必须的,而且音域越广越好。 **所以如果你想训练你自己的声音,尽量是1小时以上的无杂音的纯人声,WAV格式。**可以使用手机、电脑录音等等,直接录1段或者多段,都行,然后转成WAV格式。 再使用整合包里的工具Audio Slicer(音频切分)将其剪裁成10秒左右的分段文件,因为你1个小时的文件直接拿去训练是必爆的,所以我们需要将他拆成10秒左右的1小段1小段,我们把Audio Slicer(音频切分)下载下来,解压后打开Slicer-gui。 然后把Minimun Length那一项改成8000,把我们需要处理的音频直接拖到左边窗口,在右下角选择输出路径。同时此处注意,任何路径和文件命名,都一定不要带有中文和特殊的比如空格之类的字符!!! 扔进去以后,我们直接点最右下角的Start。速度非常块,十几秒就切割完了。我们去我们选择的输出路径就能看到我们的文件。 然后我们选择时长排序,把低于2秒的,超过15秒的都给删了。数据集就算是处理完毕了~ 当然,我相信任何人弄这一步都肯定很麻烦,毕竟玩之前还特么先得自己录1小时,人没了。所以我也为大家在整合包里准备了1个优质数据集,来自原神派蒙的近2小时的语音文件,我已经处理完了。打开即用。关注我公众号:数字生命卡兹克回复S就有了(注:派蒙的数据集下载解压后,上传到你的阿里云盘,第二步你就知道了)。希望大家能让大家最快速度感受AI声音的魅力~ 二. 租云算力,上传数据集 第二步当然就是开始我们的训练了,训练模型挺烧显卡的,而且大多人的显卡达不到训练的地步,所以我们直接上云,花个十几块钱,轻松便捷。 这里我推荐https://www.autodl.com/,目前非常便宜的云算力平台,注册好账号以后,自己充值,建议冲30~50左右,别太紧巴。然后我们点击控制台 - 容器实例,来到这个页面,再点击租用新实例(实例其实就是显卡的意思) 进到这个页面以后,就是租显卡了,直接选北京C区,找到V100 32G,租1张,记住,如果没有V100 32G,就刷新,刷到有为止,北京区的V100 32G,能把你后续训练的报错概率降到最低! 选中后,往下拖,找到社区镜像,点击。 在下面的输入框中输入so-v,找到后缀是v10的,选中,然后点立即创建,就能看到你的算力已经租好了。第一次创建时间会久一些,等等。 等到创建完毕,状态已经是运行中后,点击AutoPanel,把我们准备好的数据集传到租的服务器上。 进来以后,选择公网网盘,我们用网盘来当桥梁,第一次会先让你设置一个密码,随便设一个你自己能记得的就行。 然后此处我们选择阿里云盘来当桥梁,你懂的,不限速,而且百度网盘说实话在跟服务器的对接上太麻烦了。。。**如果你是用的自己的数据集,就把你自己的数据集传到你的阿里云盘上,如果用我的派蒙的例子,就直接下载解压,上传到你的阿里云盘,**然后用你的手机阿里云盘扫码登录。 登录成功以后,就能看到我们的文件了,点击要下载的数据集文件夹,我们的服务器就会开始下载了,这个地方下载确实会比较慢,需要等几分钟,大家别急,撒泡尿去遛遛弯,看看剧,一会就好。 下载完了以后,我们就直接把这个页面关了就行,给服务器上传数据,算是正式完成,接下来第3步,我们正式开始训练我们的模型~ 三. 在云上训练我们的模型 回到我们的控制台页面,点击JupyterLab 进入到一个文档页面,这个页面看着复杂,但是其实项目作者已经都整合好了,你只要傻瓜式的无脑点击下一步就可以啦~我们先点击下面的第1步这个区域,看到前面的蓝色横线跑到了这,然后我们再点击左上角的运行按钮。 弹出这么一个框以后,说明运行完毕。 我们直接点击,然后点击左上角这个圆圈,把这个文件丢弃掉,不用管了。 接下来我们进入autodl-tmp,就能看到我们的数据集在这里面。 我们剪切它,把它放到刚才跟它一起在autodl-tmp的so-vits-svc4/dataset_raw文件夹下,这样咱们的数据集就放在了正确的位置了。 接下来我们回到so-vits-svc4目录下,打开这个文件README-v4.ipynb,还需要点几个小步骤,把数据集变成能训练模型的规范。 就能看到跟之前一样的页面,这次我们下滑,找到将数据重新采样至44100hz,一样,点击区域后,再点击左上角运行。 当看到小蓝条下移,右上角的实心圆变空心之后,说明采样率处理已经完成,我们继续点击下一个需要运行的区域,划分数据集、验证集、测试集以及生成配置文件。跟之前一样,选中后,点击左上角运行。 速度非常快,几秒钟就把数据集给划分完毕。同时也生成了一个config.json这个配置文件。 我们按照config/config.json这个路径打开配置文件,把 "learning_rate"改成 0.0004,把 "batch_size"改成24,把 "keep_ckpts"改成10,然后按Ctrl+S保存!!! learning_rate和batch_size这两个参数可以理解为训练速度和训练质量,因为我们用的V100 32G显卡,这块直接固定死数值就可以,keep_ckpts是保存多少个模型,因为声音模型训练是不会自动停止的,每几千步就会给你保存一个模型,所以我们可以让他自动保存最新的10个模型让我们来选一个最好的。 接着回到我们刚才的步骤文件,执行准备数据集的最后一步操作!生成hubert和f0文件老规矩,点击区域,然后左上角运行即可这步会慢很多,需要几分钟时间,耐心等待。

MySQL表的增删改查(进阶)

博主主页: 码农派大星. 数据库专栏:MySQL数据库 关注博主带你了解更多MySQL数据库知识 1. 新增 create table student (id int, name varchar(20)); create table student2 (id int, name varchar(20)); insert into student values(1,'张三'),(2,'李四'),(3,'王五'),(100,'赵六'); insert into student2 select *from student where id<50; 2. 查询 1 聚合查询 1.1 聚合函数 count: select count(*) from exam; 插入一行空值,查询也会算一行,所以查询为8 如果查询实在的属性 ,null则不算一行. 还有以下操作,大家可以看看: sum: SELECT SUM(列名) FROM exam; 必须确保求和的每一列为数字. 求和不为数字时为0,并报告有警告: 并且在sum求和中,遇见null会直接跳过. sum也会逐个列相加求总和: avg: SELECT avg(列名) FROM exam; max和min也是如此操作. 2 GROUP BY子句 SELECT 中使用 GROUP BY 子句可以对指定列进行分组查询。需要满足:使用 GROUP BY 进行分组查询时,SELECT 指定的字段必须是“分组依据字段”,其他字段若想出现在SELECT 中则必须包含在聚合函数中。

Mac上地下城与勇士DNF手游如何通过微信登录?两种方式可选择

最近DNF手游刚刚推出,我迫不及待的就安装到我的 Mac 上了,但发现没有办法微信扫码登录,只有一个微信登录安装,点了也没反应,如下图: 很是苦恼,然后经过一番折腾,终于是发现了两种登录方式,我试了一下第一种可以,第二种我没成功,都分享给大家好了,如果大家还有没在 Mac 安装上 DNF 可以参看下方教程来进行安装,很简单的 Mac 安装DNF手游教程:https://macpa.cn/article/1793102069603438594 方法一: 先将 Mac 上的微信卸载掉,然后在 playCover 种安装微信,需要用到的微信的 IPA 安装文件可以在 macpa.cn 上找到,安装好微信以后,我们在 playCover 中右键点击微信图标选择设置-杂项-移除 playTools ,然后报错设置后双击微信图标就可以正常登录了 等录好微信以后,我们在打开提前安装好的地下城然后点击微信登录,就会跳转到刚刚安装的IOS 版微信了,点击授权登录就可以了 方法二: 通过接码器来登录,我们先通过手机 safari 浏览器进入站点 qq.xnh123.com 搜索地下城然后点击扫码,生成的二维码链接页面分享到电脑上打开,然后地下城点击微信登录,然后回到二维码手机扫码登录,登录成功后点击打开地下城就可以了,该方法不太稳定不一定有效,不行的话就只能用第一种方法了

JavaScript 中的数学与时光魔法:Math与Date对象大揭秘

个人主页:学习前端的小z 个人专栏:JavaScript 精粹 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结,欢迎大家在评论区交流讨论! 文章目录 🌟Math对象方法🍄1 Math静态属性🍄2 Math.abs()🍄3 Math.cos()🍄4 Math.sin()🍄5 Math.tan()🍄6 Math.max()🍄7 Math.min()🍄8 Math.pow()🍄9 Math.random()🍄10 Math.round()🍄11 Math.floor()🍄12 Math.ceil()🍄13 方法汇总 🌟Date对象方法🍄1 获取日期的毫秒形式🍄2 日期格式化方法🍄3 获取日期指定部分🍄4 案例 🌟Math对象方法 Math对象不是构造函数,它具有数学常数和函数的属性和方法,都是以静态成员的方式提供 跟数学相关的运算来找Math中的成员(求绝对值,取整) 🍄1 Math静态属性 Math.E //属性表示自然对数的底数(或称为基数),e,约等于 2.718。 Math.LN10 //属性表示 10 的自然对数,约为 2.302: Math.LN2 // 属性表示 2 的自然对数,约为 0.693: Math.LOG10E //属性表示以 10 为底数,e 的对数,约为 0.434: Math.LOG2E //属性表示以 2 为底数,e 的对数,约为 1.442: Math.PI //表示一个圆的周长与直径的比例,约为 3.14159: Math.SQRT1_2 // 属性表示 1/2 的平方根,约为 0.707: Math.SQRT2 //属性表示 2 的平方根,约为 1.414: 🍄2 Math.

X-D-Lab/MindChat-Qwen-7B-v2模型向量化出现llama runner process has terminated: signal: aborted (core dumpe问题

Error: llama runner process has terminated: signal: aborted (core dumped)详细错误日志: 2024-05-21T06:24:45.266916811Z time=2024-05-21T06:24:45.266Z level=INFO source=memory.go:127 msg="offload to gpu" layers.real=-1 layers.estimate=41 memory.available="23.2 GiB" memory.required.full="8.3 GiB" memory.required.partial="8.3 GiB" memory.required.kv="800.0 MiB" memory.weights.total="6.8 GiB" memory.weights.repeating="6.1 GiB" memory.weights.nonrepeating="741.9 MiB" memory.graph.full="301.8 MiB" memory.graph.partial="606.0 MiB" 2024-05-21T06:24:45.267462488Z time=2024-05-21T06:24:45.267Z level=INFO source=memory.go:127 msg="offload to gpu" layers.real=-1 layers.estimate=41 memory.available="23.2 GiB" memory.required.full="8.3 GiB" memory.required.partial="8.3 GiB" memory.required.kv="800.0 MiB" memory.weights.total="6.8 GiB" memory.weights.repeating="6.1 GiB" memory.weights.nonrepeating="741.9 MiB" memory.graph.full="301.8 MiB" memory.graph.partial="606.0 MiB" 2024-05-21T06:24:45.267705557Z time=2024-05-21T06:24:45.267Z level=INFO source=server.go:318 msg="starting llama server"

《Spark 编程基础(Scala 版)》第 6 章 Spark SQL 实验 5 Spark SQL 编程初级实践 (超级详细版)

一、实验目的 (1)通过实验掌握 Spark SQL 的基本编程方法; (2)熟悉 RDD 到 DataFrame 的转化方法; (3)熟悉利用 Spark SQL 管理来自不同数据源的数据。 二、实验平台 操作系统: Ubuntu16.04 Spark 版本:2.1.0 数据库:MySQL 三、实验内容和要求 1.Spark SQL 基本操作 将下列 JSON 格式数据复制到 Linux 系统中,并保存命名为 employee.json。 { "id":1 , "name":" Ella" , "age":36 } { "id":2, "name":"Bob","age":29 } { "id":3 , "name":"Jack","age":29 } { "id":4 , "name":"Jim","age":28 } { "id":4 , "name":"Jim","age":28 } { "id":5 , "name":"Damon" } { "id":5 , "name":"Damon" } 为 employee.json 创建 DataFrame,并写出 Scala 语句完成下列操作:

开源的在线JSON数据可视化编辑器jsoncrack本地部署与远程访问

文章目录 1. 在Linux上使用Docker安装JSONCrack2. 安装Cpolar内网穿透工具3. 配置JSON Crack界面公网地址4. 远程访问 JSONCrack 界面5. 固定 JSONCrack公网地址 JSON Crack 是一款免费的开源数据可视化应用程序,能够将 JSON、YAML、XML、CSV 等数据格式可视化为交互式图表。凭借其直观且用户友好的界面,JSON Crack 可以轻松探索、分析和理解即使是最复杂的数据结构。使用JSONCrack并结合cpolar内网穿透工具还能实现团队在公网上进行远程协作,能更好的提高工作效率! 1. 在Linux上使用Docker安装JSONCrack 下载JSONCrack源代码: wget https://github.com/AykutSarac/jsoncrack.com/archive/refs/tags/v3.2.0.zip 进行解压缩 unzip v3.2.0.zip 本地编译容器 sudo docker build -t jsoncrack . 在本地运行端口号为8888的 JSONCrack docker-compose up -d 浏览器访问 http://localhost:8888 我们运行 JSON Crack 后,在浏览器输入Linux局域网IP加8888端口,即可成功访问 JSON Crack 管理界面,下面安装介绍安装Cpolar内网穿透工具,实现无公网也可以远程访问本地 JSON Crack 界面 2. 安装Cpolar内网穿透工具 上面在本地Docker中成功部署了 JSON Crack ,并局域网访问成功,下面我们在Linux安装Cpolar内网穿透工具,通过Cpolar 转发本地端口映射的http公网地址,我们可以很容易实现远程访问,而无需自己注册域名购买云服务器.下面是安装cpolar步骤 cpolar官网地址: https://www.cpolar.com 使用一键脚本安装命令 curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash 向系统添加服务 sudo systemctl enable cpolar 启动cpolar服务 sudo systemctl start cpolar Cpolar安装成功后,在外部浏览器上访问Linux 的9200端口 即:【http://局域网ip:9200】,使用Cpolar账号登录,登录后即可看到cpolar web 配置界面,结下来在web 管理界面配置即可

超市进销存|基于SprinBoot+vue的超市进销存系统(源码+数据库+文档)

超市进销存系统 目录 基于SprinBoot+vue的超市进销存系统 一、前言 二、系统设计 三、系统功能设计 1 登录注册 2 管理员功能模块 3员工功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍:✌️大厂码农|毕设布道师,阿里云开发社区乘风者计划专家博主,CSDN平台Java领域优质创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。✌️ 主要项目:小程序、SpringBoot、SSM、Vue、Html、Jsp、Nodejs等设计与开发。 🍅文末获取源码联系🍅 基于SprinBoot+vue的超市进销存系统 一、前言 本超市进销存系统以springboot作为框架,b/s模式以及MySql作为后台运行的数据库,同时使用Tomcat用为系统的服务器。本系统主要包括首页、个人中心、员工管理、客户管理、供应商管理、承运商管理、仓库信息管理、商品类别管理、 商品信息管理、采购信息管理、入库信息管理、出库信息管理、销售订单管理、部门管理、岗位管理等功能,通过这些功能的实现基本能够满足日常超市进销存管理的操作。 本文着重阐述了超市进销存系统的分析、设计与实现,首先介绍开发系统和环境配置、数据库的设计,接着说明功能模块的详细实现,最后进行了总结。 关键词:超市进销存; springboot;MySql数据库;Tomcat; 二、系统设计 系统功能结构如图 三、系统功能设计 1 登录注册 登录,管理员和员工通过填写用户名、密码等信息,选择角色进行登录等操作,如图4-1所示。 图4-1登录界面图 2 管理员功能模块 管理员登录进入超市进销存系统可以查看首页、个人中心、员工管理、客户管理、供应商管理、承运商管理、仓库信息管理、商品类别管理、 商品信息管理、采购信息管理、入库信息管理、出库信息管理、销售订单管理、部门管理、岗位管理等功能进行详细操作;如图4-3所示。 图4-3管理员功能界面图 3员工功能模块 员工登录进入超市进销存系统可以查看首页、个人中心、仓库信息管理、 商品信息管理、采购信息管理、入库信息管理、出库信息管理、销售订单管理等功能进行详细操作;如图4-14所示。 图4-14员工功能界面图 四、数据库设计 员工注册实体属性图如下所示: 图3-2员工注册实体属性图 数据库表的设计,如下表: 表3-1:部门 字段名称 类型 长度 字段说明 主键 默认值 id bigint 主键 主键 addtime timestamp 创建时间 CURRENT_TIMESTAMP bumen varchar 200 部门 bumenjianjie longtext 4294967295 部门简介

11个大数据在日常生活中的应用场景

在我们的日常生活围绕着智能手机、智能相机、智能标签、智能手表和智能扬声器等小工具的时代,从这些不同的数字来源中积累了大量数据。 然而,人们应该如何分析和检查这些大量令人困惑的数据呢?这就是大数据发挥魔力的地方。大数据技术和工具的出现有助于应对这些挑战,使世界认识到该技术提供的广泛应用,企业从中受益以进行扩张。 什么是大数据? 通俗地说,大数据描述了每天吞噬企业的大量结构化和非结构化数据。它主要被定义为三个v——体积、速度和变化。 曾经是一个时髦的概念,现在是一项技术,极大地影响了人们的生活和工作方式。大数据为消费者需求等概念提供了衡量标准,并促进了归纳推理。有趣的是,几乎每个行业都利用这项技术来预测人们的生活方式和购买方式,从而规划未来。 大数据的应用 我们重点介绍了11个正在采用大数据的垂直行业,以及他们如何应用该技术,以及有效的例子。 银行业 无论是现金催收还是财务管理,大数据都让银行在每个行业都更有效率。该技术的应用减少了客户的挣扎,为银行带来了更多的收入,并使他们的最终见解更加清晰易懂。 从识别欺诈到简化交易处理,增强对客户的了解,优化交易执行以及促进高级客户体验,大数据提供了一系列应用。 在这一领域利用大数据的一个有趣的例子是西联汇款。该组织推行一种全渠道方法,通过每秒处理超过29个事务并将所有数据编译到一个公共平台上进行统计建模和预测分析,从而定制消费者体验。 摩根大通作为一家大型银行,产生了大量的数据,并应用了大数据技术(主要是Hadoop)来处理这些数据。大数据分析使银行能够洞察客户趋势,并向客户提供这些报告,以及进行个人检查并生成快速报告。 教育 在教育行业,从学生、教师、课程和结果中收集的数据是巨大的,对这些数据的分析可以产生有效的见解,以提高教育机构的运营和工作。 从促进有效学习、加强大学国际招生、帮助学生制定职业目标、减少大学辍学率、允许精确的学生评估、改进决策过程、提高学生成绩,大数据在这一领域发挥着不可或缺的作用。 佛罗里达大学就是一个很好的例子。该大学采用IBM InfoSphere通过多个资源提取、加载和传输数据,IBM SPSS Modeler用于预测分析和数据建模,IBM Cognos analytics用于分析和预测学生成绩。 从学生的成绩,背景,人口统计以及经济背景等不同的变量有助于衡量学生的评估退学机率。这有助于大学制定政策,并为处于退学边缘的学生提供及时的干预。 媒体 随着通过电子设备在线消费内容的现代方式成为新趋势,对传统媒体消费方式的大肆宣传正在慢慢消失。随着海量数据的产生,大数据已经成功地进入了这个行业。 它可以帮助预测受众的需求,根据类型,音乐和内容以及他们的年龄群体,为他们提供有关客户流失的见解,优化客户的媒体流媒体时间表,使产品更新在时间和成本方面更有效,并有助于有效的广告定位。 Netflix是大数据在媒体平台革命中发挥作用的一个很好的例子。这一技术不仅影响着平台投资的电视剧,也影响着平台如何将电视剧分配给用户。用户的观看历史,甚至包括他们为任何特定节目暂停视频的点,影响从自定义缩略图到我们在“Netflix热门”部分观察到的内容的一切。 另一个有效的例子是Viacom18。该公司的大数据平台建立在微软Azure上,并在那里试验多种即将推出的技术。 该公司一直在利用大数据分析技术,通过确定适当的广告时间,确保节目之间的休息时段的观众留存率。因此,即使在广告时间,该平台也成功地保留了观众,为自己和广告商带来了可观的收入。 医疗保健 大数据在提升现代医疗运营水平方面发挥着不可或缺的作用。从降低治疗成本、预测流行病爆发、避免可预防疾病、提高整体生活质量、预测日常患者获得的收入以安排人员、使用电子健康记录、采用实时警报以促进即时护理、采用健康数据进行更有效的战略规划、到减少欺诈和错误,该技术已经彻底改变了医疗保健行业。 大数据在医疗领域的一个可信例子是Mayo Clinic。该平台采用大数据分析,帮助发现多种疾病患者,提高他们的生活质量。这种分析还可以发现有风险的患者,并为他们提供更好的健康控制和基本的医疗干预。 另一个例子是MedAware。这是一家以色列初创公司,正试图对抗提前发现错误的令人不安的趋势,这将有助于节省资金,商誉,当然还有病人的生命。 农业 在农业等领域,大数据分析推动了智慧农业和精准农业运营,从而节省了成本,释放了新的商机。 大数据在一些重要领域发挥了作用,包括通过向农民提供有关降雨、天气和影响作物产量的因素的任何变化的最新信息来满足粮食需求,在推动农药的智能和准确使用方面发挥作用,帮助农民准确地做出与农药有关的决策,管理农场设备,确保供应链效率,规划何时使用,何时使用。在哪里以及如何播种和使用化学品,以及通过收集湿度、温度和化学品的数据来检查生长中的植物的健康状况,以确保食品安全。 拜耳集团旗下的拜耳数字农业(Bayer Digital Farming)开发了一款采用机器学习和人工智能进行杂草识别的应用程序。 农民们在应用程序中分享杂草的照片,然后将照片与拜耳的一个综合数据库进行比对,以检测杂草的种类。该应用程序在适当的时间进行调解,保护作物并提高产量。 施耐德电气旗下的数字传输网络(DTN)为其客户提供农业信息解决方案和市场情报。通过DTN,农民和商品交易商可以跟踪最新的天气和价格数据,以便更好地处理他们的业务。 旅行 大数据在使交通更加完美和高效方面发挥了关键作用。 无论是帮助管理获得的收入,管理赢得的声誉,开展更具战略性的营销,进行先进的市场研究,还是进行有针对性的营销,大数据都对这个行业产生了相当大的影响。 大数据还可以根据用户的需求规划路线,帮助他们有效地减少等待时间,通过谷歌地图等工具来管理拥堵和交通控制,从而检测出最不容易发生交通事故的路线,甚至可以检测出容易发生事故的地区,以提高交通安全水平。 Uber是大数据在这个行业应用的一个有效例子。该平台生成并采用大量的司机、地点、车辆、每辆车的行程等数据,然后对这些数据进行检查和采用,以预测需求、供应、司机的位置,并确定行程费用。 另一个例子是Hipmunk,这是一家提供旅游预订服务的初创公司,它根据每位购物者的需求,检查航空公司的数据、客户档案、社交图谱和餐饮搜索结果的评论,并帮助加快预订航班的过程。该平台通过检查所有提供的数据,为客户提供他们在照顾旅行住宿时所需要的东西,而不是强迫客户自己发现这些。 制造业 制造业不再像过去那样是艰苦的手工过程。数据分析和技术已经成功地彻底改变了制造过程。大数据已经在提升制造、定制产品设计、确保适当的质量维护、管理供应链以及评估和跟踪潜在风险方面发挥了作用。 大数据在汽车行业应用的一个有趣例子是劳斯莱斯。劳斯莱斯采用大数据分析来改进设计流程,缩短产品开发周期,在降低成本的同时提高产品的性能和质量。该平台还通过消除设计过程中出现的故障,简化了生产流程。 制造业采用大数据的另一个例子是宝马。宝马采用大数据进行预测分析,致力于建立自动驾驶汽车。为了实现这一目标,该平台还与英特尔合作,采用了人工智能。英特尔收购Mobileye后,宝马得以使用其计算机视觉技术。 政府 无论哪个国家,政府每天都要面对大量的数据。这在很大程度上是由于他们必须对不同的公民记录和数据库进行深入的更新,包括他们的增长、地理调查、能源资源等等。这些数据需要被检查和研究,成为政府运作的盟友。 政府将这些数据主要用于两个领域,福利计划和网络安全。 就福利计划而言,这些数据用于在政治项目中做出更快和最新的决策,用于发现需要关注的领域,用于跟踪主要土地和牲畜的农业领域,以及用于克服恐怖主义、失业或贫困等国家挑战。 在网络安全的案例中,分析被用于识别欺骗和诱捕逃税者等任务。 政府应用大数据的一个有用的例子是国土安全部(DHS)。为了保障安全,国土安全部利用传感器的入侵识别系统,除了识别恶意软件和未经批准的访问企图外,该系统还具有分析进出联邦系统的互联网流量的能力。 美国国家海洋和大气管理局(NOAA)是一个通过天基传感器、陆地和海洋持续收集数据的平台。该平台使用大数据方法收集和检查大量数据,以得出正确的信息。 零售 就零售而言,大数据在预测新兴趋势、在适当的时间瞄准合适的客户、削减营销费用和提高客户服务质量方面发挥着重要作用。 从全面了解每个消费者并促进个人参与,优化定价以从即将到来的趋势中获得最大价值,简化后台运营以及增强客户服务,大数据在零售方面提供了广泛的应用。 作为加拿大最大的零售商之一,鞋类和配饰公司Aldo利用大数据在黑色星期五这样的场合生存下来。该平台运行在面向服务的大数据架构上,集成了涉及支付、计费和欺诈检测的多个数据源,使其能够促进完美的电子商务体验。 亚马逊利用从客户那里获得的大数据来开发他们的推荐引擎。平台对用户了解得越多,他们就越能预测用户想买什么,知道哪些东西可以简化流程并说服用户购买,比如推荐某些产品,而不是让用户浏览整个目录。 该平台的推荐技术基于协同过滤,这意味着它通过创建用户的形象,并提供具有相似个人资料的人带来的产品,来确定它假设用户想要什么。 能源和公用事业 能源和公用事业平台采用一系列大数据源,包括智能电表、电网设备、天气数据、电力系统测量、风暴数据和GIS数据。这些平台采用这些数据的目的是降低成本,提高运营效率,减少碳排放,并处理终端消费者增加的能源需求。 大数据在能源和公用事业行业应用的一个有利可图的例子是谷歌的超级风暴桑迪危机地图。该地图不仅收集、呈现和分层了来自不同来源的天气数据,还整合了来自不同地点、疏散路线、应急中心和交通状况的视频馈送。 另一个有效的例子是非营利组织“国际直接救济”,它为美国和世界各地受到民事逮捕、贫困和灾难影响的人们提供医疗援助。 该平台与Palantir Technologies合作,目标是标记暴露在风暴中的高危人群,评估可能的紧急情况,并检测洪水风险地区的医疗诊所,以确保医疗援助和物资能够适当地分发给需要它们的人,并整合和检查各种数据集,如庇护所位置以及红十字会和政府机构几乎实时的流行病学警报。

基于Python的社交媒体评论数据挖掘,使用LDA主题分析、文本聚类算法、情感分析实现

思路步骤: 数据清洗: 使用pandas读取数据文件,并进行数据清洗和预处理,包括去除重复值、正则清洗和分词。 主要关注点分析: 计算词频并生成词云图,统计文本中词语的出现频率,并使用WordCloud库生成词云图展示结果。 主题分析: 进行一致性和困惑度计算,通过改变主题数量范围,计算不同主题数量下的一致性和困惑度,并绘制折线图展示结果。 使用TF-IDF模型提取文本的关键词,计算每个关键词在文本中的权重,并输出前30个关键词。 进行先验分布的计算,将文本转换为词袋形式,并使用gensim库计算单词的先验分布。 进行主题建模和关键词提取,使用LDA模型对分词结果进行主题建模,并提取每个主题的关键词。 对主题建模结果进行可视化,使用pyLDAvis库生成LDA主题模型的可视化结果,并保存为HTML文件。根据LDA模型计算主题之间的相关性和关键词之间的权重。 数据处理实现: 数据处理的过程如下: 数据清洗主要包括去重和正则清洗两个步骤。 首先,通过使用drop_duplicates函数对原始数据进行去重操作。在代码中,根据内容这一列进行去重,并将去重后的结果重新赋值给新的DataFrame。这样可以确保每条内容的唯一性,避免出现重复的数据。 接下来,进行正则清洗的步骤。正则清洗主要是针对内容,去除除了中英文字符和数字以外的其他字符。具体实现通过使用正则表达式的方式,调用re.sub函数进行替换。在代码中,使用正则表达式[^\u4e00-\u9fa5^a-z^A-Z^0-9^,.,。!:]|,将博文全文中除了中英文字符、数字和部分标点符号(逗号、句号、感叹号、冒号)以外的字符都替换为空格,从而实现清洗效果。 清洗后的结果保存为新的DataFrame,并将其写入Excel文件。通过这样的数据清洗过程,可以确保数据的准确性和一致性,使得后续的数据分析和处理更加可靠和有效。 数据清洗是数据分析的前提和基础,通过去重和正则清洗等步骤,可以对原始数据进行初步的处理和整理,为后续的数据分析和挖掘提供高质量、准确的数据基础。清洗后的数据具有更好的可用性和可靠性,能够提供更准确、可靠的结果和结论,从而支持决策和解决实际问题的需求。 主要关注点分析(词频分析): 实现主要关注点的词频分析可以按照以下步骤进行: 读取经过数据清洗的微博博文数据。 使用jieba库对每条内容进行分词处理,得到分词后的结果。 创建一个空的列表或字典用于存储词频统计结果。 遍历分词结果列表,对每个词语进行词频统计,将词语及其出现次数添加到词频统计结果中。 对词频统计结果进行排序,可以按照词频降序排列。 根据需求选择关注的主题,筛选出与该主题相关的词语。 可以根据需要设定阈值,过滤掉低频词语,只保留出现频率较高的词语。 将词频统计结果进行可视化展示,可以使用柱状图、词云图等方式进行展示。 分析词频统计结果,根据高频词语来了解内容的关键关注点和问题。 通过词频分析,可以了解内容的关注度和热度,找出内容被用最多的关键词,从而揭示出内容的主要关注点和议题。结果如下: 根据词频分析结果,可以看出项目涉及的关键词主要集中在与小红书、品牌、时尚、设计、生活、消费等相关的领域。这些关键词反映了项目所涉及的主题和内容,可以帮助了解用户关注的热点话题和行业趋势。通过词频分析,可以更好地了解用户需求和兴趣,为产品推荐、内容创作、营销策略等提供参考。在数据处理和挖掘的基础上,可以进一步分析关键词之间的关联性,发现潜在的关键词组合规律,为项目的发展和优化提供有益的指导和决策依据。 Lda主题分析 LDA主题分析的实现过程如下: 准备好经过数据清洗和预处理的文本数据。 使用gensim库构建语料库和词袋模型,将文本数据转换为可用于LDA模型的格式。 设置LDA模型的参数,包括主题数量、迭代次数、词频阈值等。 使用LDA模型训练语料库,并得到主题-词语分布和文档-主题分布。 根据需求,选择合适的方法获取每个主题的关键词,可以是按照权重排序或者设定阈值筛选。 可以使用pyLDAvis库对LDA模型进行可视化,生成交互式的主题模型可视化图表,并保存为HTML文件。 分析LDA主题分析结果,根据关键词和文档-主题分布了解每个主题的含义和特点,理解文本数据中不同主题的分布情况。 可以进一步对文本数据进行主题分析,根据文档-主题分布确定每个文档最可能的主题,并将主题信息添加到原始数据中。 通过LDA主题分析,可以发现文本数据中的主题结构和主要内容。主题分析可以帮助我们了解文本数据的内在关联性和分布情况,从而更好地理解文本数据的内容和意义。此外,LDA主题分析还可以用于文本分类、信息检索和推荐系统等领域,提供有关文本数据的深入洞察和应用价值。结果如下: 由一致性和困惑度分析曲线图可知,最优主题数8效果最好。 主题分析结果,可以看出各主题下的关键词权重反映了不同主题的核心内容和关注点。例如,主题1涉及用户需求、消费行为、市场营销等方面,主题2涵盖品牌、设计、时尚、文化等内容,主题3关注婚礼、酒店、时尚潮流等话题,而主题8则以话题、潮流活动、年轻人、时尚为主要关键词。通过主题分析,可以更好地了解不同主题下的关键词分布及权重,帮助识别用户需求、行业趋势和内容热点,为项目的内容策划、营销推广等提供重要参考,有助于精准定位目标受众和内容方向,提升用户体验和内容吸引力。 聚类分析: 聚类分析是一种常用的数据挖掘技术,旨在将数据集中的样本划分为具有相似特征的群组,以便发现数据中的潜在模式和结构。在给定文本数据集中,聚类分析可以帮助识别文本之间的相似性,从而将文本聚合成不同的类别或簇。在上述Python代码中,首先对文本数据进行了预处理,包括分词、去除特殊字符和停用词等操作,然后构建了文本特征矩阵,使用TF-IDF方法表示文本特征。接着通过KMeans算法对文本数据进行聚类,根据不同的K值寻找最优的聚类数量,然后获取每个聚类的关键特征和所属文本样本。最后通过降维和可视化技术,将聚类结果展示在二维空间中,以便更直观地观察不同聚类之间的关系和文本分布情况。通过聚类分析,可以帮助用户理解文本数据的结构和相似性,发现潜在的文本主题和群组,为进一步的文本分类、信息检索和内容推荐提供有益的参考。 聚类分析结果 根据给定的聚类结果和代码实现,可以看出数据集中的文本样本被划分为了四个不同的聚类。在聚类1中,出现了"冰西"、"龚俊"、"工现"、"州王"、"工丰"等关键词,这些关键词可能代表了某种主题或话题;而在聚类2、3、4中,也分别出现了不同的关键词组合,反映了不同的文本特征和聚类结构。通过观察不同聚类中的关键词,可以推测不同聚类之间的主题或内容差异,有助于理解文本数据的潜在结构和特征。聚类分析可以帮助用户更好地理解文本数据之间的相似性和差异性,发现隐藏在数据背后的模式和规律,为进一步的文本分类、主题提取和内容推荐提供参考和指导。 情感分析实现与结果可视化 情感分析是一种通过自然语言处理技术来识别文本中的情感倾向的方法。在给定的代码中,首先使用 SnowNLP 库对微博内容进行情感分析,将情感分数划分为积极、中性和消极三种情感类别。然后,通过对各类别的微博数量进行统计,生成了情感分析占比的可视化图表。通过遍历微博内容并使用 SnowNLP 库进行情感分析,将分数划分为不同的情感类别,并将结果存储在新的列表中。随后,利用 Pandas 的 groupby 方法对情感分析结果进行分组统计,得到各情感类别下微博数量的统计结果。最后,利用 Matplotlib 库绘制了饼图,展示了不同情感类别在微博内容中的占比情况。 通过这一系列操作,实现了对微博内容进行情感分析并可视化呈现不同情感类别的占比情况,为进一步分析用户情感倾向提供了重要参考。这样的分析和可视化有助于了解用户对特定话题或事件的情感态度,为舆情监控和情感分析提供了有益的信息支持。

Java网络编程:Socket与NIO的高级应用

在现代软件开发中,网络通信是不可或缺的一部分。Java提供了强大的网络编程支持,包括传统的Socket API和更高级的NIO(New Input/Output)库。本文将详细介绍如何使用Java Socket进行网络通信,并深入探讨NIO的高级特性,如通道、缓冲区和选择器。 使用Socket进行网络通信 Socket是网络通信的基础,它允许两台计算机通过网络交换数据。Java的Socket API提供了客户端和服务器端的通信机制。 客户端Socket: 创建Socket:Socket socket = new Socket("hostname", port);获取输入输出流:InputStream in = socket.getInputStream(); OutputStream out = socket.getOutputStream();读写数据:使用BufferedReader和PrintWriter包装输入输出流,进行数据的读取和写入。 服务器端Socket: 创建ServerSocket:ServerSocket serverSocket = new ServerSocket(port);接受客户端连接:Socket clientSocket = serverSocket.accept();处理客户端请求:与客户端Socket类似,获取输入输出流并进行数据交换。 Socket编程简单直观,但它是阻塞式的,即在读写数据时会阻塞当前线程,这在高并发场景下可能导致性能问题。 NIO的高级特性 Java NIO提供了非阻塞I/O操作,它使用通道(Channel)和缓冲区(Buffer)来处理数据,并引入了选择器(Selector)来管理多个通道的I/O事件。 通道(Channel): 通道是双向的,可以同时进行读写操作。常见的通道类型包括FileChannel、SocketChannel、ServerSocketChannel和DatagramChannel。通道与缓冲区配合使用,数据总是先写入缓冲区,然后从缓冲区读取。 缓冲区(Buffer): 缓冲区是固定大小的容器,用于存储数据。常见的缓冲区类型有ByteBuffer、CharBuffer、IntBuffer等。缓冲区提供了位置(position)、容量(capacity)和限制(limit)等属性,用于控制数据的读写。 选择器(Selector): 选择器允许单个线程监视多个通道的I/O事件。通过选择器,可以实现非阻塞I/O,即在等待I/O事件时不会阻塞线程。选择器可以注册通道,并监听OP_READ、OP_WRITE、OP_CONNECT和OP_ACCEPT等事件。 NIO网络编程示例 非阻塞客户端: 创建SocketChannel并设置为非阻塞模式。连接服务器:socketChannel.connect(new InetSocketAddress("hostname", port));使用选择器监听连接完成事件。一旦连接建立,使用缓冲区进行数据交换。 非阻塞服务器: 创建ServerSocketChannel并设置为非阻塞模式。绑定端口:serverSocketChannel.bind(new InetSocketAddress(port));注册到选择器,监听OP_ACCEPT事件。当有新的客户端连接时,接受连接并注册到选择器,监听读写事件。使用缓冲区处理客户端数据。 NIO的优势与挑战 NIO的优势在于其非阻塞特性,可以提高I/O密集型应用的性能。然而,NIO的编程模型比传统的Socket API更为复杂,需要处理更多的细节,如缓冲区的管理、选择器的轮询等。此外,NIO的错误处理也更为复杂,需要开发者有更深入的理解。 结论 Java的Socket和NIO提供了强大的网络编程能力。Socket适合简单的网络通信场景,而NIO则适合需要高性能和非阻塞I/O的复杂应用。理解这两种技术的原理和使用方法,可以帮助开发者构建出高效、稳定的网络应用程序。希望本文能帮助你深入理解Java网络编程,并在实际开发中发挥其潜力。