保姆级微信 AI 机器人教程:如何打造私人和群聊助手

大家好,我是木川 微信 AI 机器人是一种利用人工智能技术,为用户提供服务的自动化系统。它通常具备自然语言处理能力,能够理解用户的文本或语音输入,并给出相应的回复或执行特定的任务。 在微信这个庞大的社交平台上,AI 机器人能够提供 24 小时的实时服务,无论何时何地,用户都能获得即时的信息反馈和帮助。其次,AI 机器人的智能问答能力能够快速准确地解答用户的疑问,节省了用户搜索信息的时间,提高了效率,并且还可以帮助管理社群,提高社群的活跃度 本文将提供本地可运行并且免费的微信 AI 机器人群聊助手搭建教程,将一个普通的微信账号转变为一个能够进行自然语言交互、回答问题、提供信息甚至执行任务的智能机器人 一、效果展示 1、私聊对话 2、群聊对话 机器人的人设 查找天气 查找新闻 3、新人欢迎 新人近群后,机器人会自动欢迎新成员 二、准备大模型账号 本文演示的 AI 机器人使用的是讯飞大模型(你也可以使用其它大模型,申请相应的 api_key 即可),讯飞大模型相比其它模型的优点是免费,注册即赠送 200万 Token。 1、注册账号 打开链接 https://xinghuo.xfyun.cn/sparkapi?scr=price 点击免费试用即可,建议选择个人免费包 2、认证 未认证用户无法调用大模型接口,填写相关信息,几分钟就可以完成个人实名认证了,这是我见过最快的实名认证了 3、创建应用 填写应用名称、分类、描述创建应用 创建应用后,会得到服务接口认证相关信息,这 3 个参数在后面的服务配置中需要使用 4、领取 token 1、左侧选择 v3.5 模型,然后点击立即购买 2、选择上面创建的应用和免费套餐 3、下单 下单成功后回到 token 数量页面,这时候可以看到 剩余 token 数量已经加上了 三、服务搭建 1、环境安装 安装 python3 本项目需要使用 python 运行,建议安装 python3,按照官方教程安装即可 使用 Git 下载官方项目代码 git clone https://github.com/zhayujie/chatgpt-on-wechat 进入项目目录 cd chatgpt-on-wechat 安装依赖

【数据结构/C语言】深入理解 双向链表

💓 博客主页:倔强的石头的CSDN主页 📝Gitee主页:倔强的石头的gitee主页 ⏩ 文章专栏:数据结构与算法 在阅读本篇文章之前,您可能需要用到这篇关于单链表详细介绍的文章 【数据结构/C语言】深入理解 单链表-CSDN博客 目录 一、双向链表的基本概念 双向链表的简介 双向链表的特点 双向链表的优缺点 二、双向链表的结构 双向链表节点的结构 双向链表的整体结构 三、双向链表的实现方法 1.双向链表的初始化 2.双向链表的头插 3.双向链表的尾插 4.双向链表的头删 5.双向链表的尾删 6.查找节点 7.在指定位置之前插入节点 8.删除指定位置节点 9.打印链表数据 10.双向链表销毁 四、C语言实现代码及测试 DouSlist.h 双链表头文件 DouSList.c 双链表源文件 test.c 测试文件及测试结果 五、双向链表的应用场景 一、双向链表的基本概念 双向链表的简介 双向链表是一种常见的数据结构,与单向链表类似,但它允许我们从两个方向遍历链表:向前和向后。每个节点包含三个部分:一个数据元素和两个指针,一个指向链表中的前一个节点,另一个指向链表中的下一个节点。 一般情况下,我们所说的双向链表指的是带头节点,双向,循环链表,以下若无特殊说明,均代表此含义。 以下是常见的单链表与双链表的图示及区别 双向链表的特点 双向遍历:由于每个节点都包含指向前一个节点和下一个节点的指针,因此我们可以从链表的任何一个节点开始,向前或向后遍历链表。插入和删除操作:在双向链表中插入或删除节点通常比单向链表更加高效,因为我们可以直接访问要插入或删除节点的前一个和/或后一个节点,从而避免了对链表的遍历。空间效率:与数组相比,双向链表在内存使用上更加灵活。链表可以在运行时动态地分配和释放内存,而不需要预先分配固定大小的内存块。 双向链表的优缺点 优点 动态分配内存,空间效率高。插入和删除操作效率高,特别是当知道要操作节点的位置时。可以从两个方向遍历链表。 缺点 相对于数组,链表在内存使用上可能不够紧凑,因为每个节点都需要额外的空间来存储指针。访问链表中特定位置的元素需要从头或尾开始遍历链表,这可能导致效率较低(尽管可以使用哈希表等数据结构来优化访问速度)。 二、双向链表的结构 双向链表节点的结构 双向链表中的每个节点通常包含以下部分: 数据元素:可以是任何类型的数据,如整数、浮点数、字符串或对象。prev 指针:指向前一个节点的指针。next 指针:指向下一个节点的指针。 typedef int LTDataType;//数据类型重定义,可以是任意数据类型 typedef struct ListNode//双向链表节点结构 { LTDataType data;//数据 struct ListNode* prev;//指向前一个节点的指针 struct ListNode* next;//指向下一个节点的指针 }LTNode; 双向链表的整体结构 相比单链表只有独立存在的每个节点,双向链表多了哨兵位节点,该节点作为头结点,不存储有效数据,只有指向第一个有效节点的next指针和指向尾节点的prev指针。

C++:深入理解多态

一、多态的概念 多态的概念:通俗来说,就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会产生出不同的状态。 那究竟多态的实际价值体现在哪里呢?? 1、举个例子比如说购买高铁票这个行为,如果是普通人就是原价购买,如果是学生的话就是半价购买,如果是军人的话,可以优先走绿色通道购买…… 2、再举个例子比如说大数据杀熟(个人看法,不一定正确,只是为了方便解释多态) (1)在线支付市场,如果你平时经常用微信而很少用支付宝,那么在支付宝举办一些类似领取红包的活动的时候,他可能会有相关的算法去分析你的账户信息,对于很少用支付宝的用户,可能相对来说得到的红包金额就会更大,这是为了鼓励你去使用支付宝,可能你某一天在商场购物的时候,想起来自己有个红包没用,就会放弃使用微信而转而使用支付宝。同样是扫码动作,不同的用户扫得到的不一样的红包,这也是一种多态行为。 (2)游戏抽卡相信大家也体验过,充钱充的越少的可能反而抽卡的运气会更好,这样会使得你不至于跟氪佬的差距特别大,鼓励你继续玩游戏。而充值充得多可能运气就会越不好,因为你不缺钱,同样是抽卡,不同的玩家抽卡概率不同,这也是一种多态行为。 总而言之就是,我们生活中一件事情不同的群体去做需要有不同的反馈,那这就是多态!! 二、多态的定义和实现 2.1 构成多态的条件 首先多态现象的产生是在继承的基础上产生的。 多态是在不同继承关系的类对象,去调用同一函数,产生了不同的行为。比如Student继承了Person。Person对象买票全价,Student对象买票半价。 构成多态需要以下两个条件(重点): (1)对父类虚函数的重写->三同(函数名、参数、返回值) (2)必须是父类的指针或者引用去调用 是否构成多态的不同表现: 1、不满足多态 -- 看调用者的类型,调用这个类型的成员函数 2、满足多态 -- 看指向的对象的类型,调用这个类型的成员函数 满足多态: 不满足多态: 思考:你可能会有这样的疑惑->我直接用在函数体里面用if……else不也可以达到这样的效果吗??为什么非得用多态来完成呢??? ——>答:有些场景下必须得用多态才能解决,比如父类的指针或者引用调用析构函数 但是由于父类的指针或引用是可以指向子类的对象的,甚至在某些场景下子类的指针或引用也可以指向父类的对象(前提是父类的对象被子类对象给赋值过) ,如果没有发生多态的话,那么就会去看调用者的类型而不是去看指向对象的类型,从而导致指向对象没有被析构,造成内存泄露。 加了virtual之后,就可以解决这个问题了。 综上我们可以发现,if……else并不能替代多态!!! 2.2 虚函数的重写 虚函数:即被virtual修饰的类成员函数称为虚函数 虚函数的重写(覆盖):派生类中有一个跟基类完全相同的虚函数(即派生类虚函数与基类虚函数的返回值类型、函数名字、参数列表完全相同),称子类的虚函数重写了基类的虚函数。 虚函数重写有两个例外: (1)协变(返回值可以不同->但是必须是父子关系的指针或者引用(其实不一定是自己的父子类,其他的父子类也行)) class Person { public: virtual Person* f() { return this; } }; class Student : public Person { public: virtual Student* f() { return this; } }; int main() { return 0; } 返回值也可以是其他父子类的指针或者引用,也可以是协变。

redis查看一个key占用了多少内存

Redis 本身并没有直接提供一个命令来查看一个特定的 key 占用了多少内存。但是,你可以通过一些间接的方法来估算这个值。 以下是一些建议的方法: 使用 DEBUG OBJECT 命令: 虽然这不是一个官方推荐或稳定的命令,但在某些 Redis 版本中,你可以使用 DEBUG OBJECT <key> 命令来获取关于 key 的详细信息,包括其序列化后的长度(serializedlength)。这可以帮助你估算 key 的大小,但请注意这只是一个近似值,并且该命令可能会在未来的 Redis 版本中改变或被移除。 2. 使用 MEMORY USAGE 命令(Redis 4.0+): 在 Redis 4.0 及更高版本中,你可以使用 MEMORY USAGE <key> [SAMPLES <count>] 命令来获取 key 的近似内存使用情况。默认情况下,该命令会采样 5 个元素来估算 key 的内存使用情况。如果你需要更精确的结果,可以增加样本数量。 3. 手动计算: 如果你知道 key 的数据类型和值,你可以手动计算其内存使用情况。例如,对于字符串类型的 key,其内存使用情况大致等于字符串的长度(以字节为单位)加上一些额外的开销(如元数据、内部碎片等)。但是,对于更复杂的数据类型(如哈希、列表、集合、有序集合),计算起来可能会更复杂。 4. 使用第三方工具: 有一些第三方工具可以帮助你监控和分析 Redis 的内存使用情况,包括 key 的内存占用。这些工具通常提供了更详细和易于理解的报告。 5. 监控整体内存使用情况: 如果你只是想知道 Redis 实例的整体内存使用情况,而不是特定 key 的内存占用,你可以使用 INFO MEMORY 命令来获取相关信息。这个命令会返回许多关于 Redis 内存使用的有用指标。

springCloud升级springweb的问题

项目之前使用的时候springgboot-2.6.13,gateway-3.1.4。然后安全检查的时候说 软件:spring-web(jar) 5.3.23 命中:["spring-web(jar) version less than 5.3.32"] 路径:/opt/gateway-0.0.1-SNAPSHOT.jar(BOOT-INF/lib/spring-web-5.3.23.jar) 解决办法就是要升级spring-web的版本 因为springboot-2.6.13已经不再维护了,直接从gateway的依赖里面去掉spring-web,然后重新引入spring-web-5.3.33会报一个错误 [ctor-http-nio-5] reactor.netty.http.server.HttpServer : [49b02120-1, L:/0:0:0:0:0:0:0:1:10215 - R:/0:0:0:0:0:0:0:1:57712] java.lang.NoSuchMethodError: reactor.netty.http.server.HttpServerRequest.hostPort()I at org.springframework.http.server.reactive.ReactorServerHttpRequest.resolveBaseUrl(ReactorServerHttpRequest.java:84) ~[spring-web-5.3.33.jar:5.3.33] at org.springframework.http.server.reactive.ReactorServerHttpRequest.initUri(ReactorServerHttpRequest.java:79) ~[spring-web-5.3.33.jar:5.3.33] at org.springframework.http.server.reactive.ReactorServerHttpRequest.<init>(ReactorServerHttpRequest.java:71) ~[spring-web-5.3.33.jar:5.3.33] at org.springframework.http.server.reactive.ReactorHttpHandlerAdapter.apply(ReactorHttpHandlerAdapter.java:58) ~[spring-web-5.3.33.jar:5.3.33] at org.springframework.http.server.reactive.ReactorHttpHandlerAdapter.apply(ReactorHttpHandlerAdapter.java:40) ~[spring-web-5.3.33.jar:5.3.33] at reactor.netty.http.server.HttpServer$HttpServerHandle.onStateChange(HttpServer.java:985) ~[reactor-netty-http-1.0.24.jar:1.0.24] at reactor.netty.ReactorNetty$CompositeConnectionObserver.onStateChange(ReactorNetty.java:677) [reactor-netty-core-1.0.24.jar:1.0.24] 最终解决办法 升级springboot的版本到2.7.11 dependencyManagement { imports { mavenBom "org.springframework.boot:spring-boot-dependencies:2.7.11" // 使用最新的2.7.x版本 mavenBom "org.springframework.cloud:spring-cloud-dependencies:2021.0.7" // 使用最新的2021.0.x版本 } } implementation(group: 'org.springframework.cloud', name: 'spring-cloud-starter-gateway', version: '3.1.4'){ exclude group: 'org.springframework', module: 'spring-web' } implementation group: 'org.

【亲测有效】发现了适用于Mac用户的ChatGPT客户端登陆方法

项目场景: Mac用户的ChatGPT客户端登陆 问题描述 无法使用 解决方案: 1.下载登陆ChatGPT客户端 https://persistent.oaistatic.com/sidekick/public/C...https://persistent.oaistatic.com/sidekick/public/ChatGPT_Desktop_public_latest.dmg 2.登陆ChatGPT客户端账户 3.未出现“无法使用”的提示之前,快速按下「command + Q」 4.重新打开ChatGPT客户端就可以使用了 目前重新启动客户端还没有出现异常,也只测试过Mac可以使用,注意需要是Apple芯片的才可以哦

报错:Java.net.ConnectException: Connection timed out: connect

当我们用finalShell连接虚拟机时,报错:Java.net.ConnectException: Connection timed out: connect 遇到这种情况大概率是 主机ip错误。 我们可以在CentOS中输入ifconfig查看ip地址; ens33中的inet 192.168.179.128 才是IP地址。 但是有的问遇到这种情况:输入ifconfig时,显示如下(最好在root权限下) 可以看到ens33没显示出来。这时我们输入ifconfig ens33 up,再输入ifconfig。就能看到IP了。 但如果还是没看见ip地址;这时还需要检查防火墙 输入systemctl status firewalld查看防火墙状态,如果有绿色,说明打开了防火墙。 这时需要关闭防火墙,输入 systemctl stop firewalld 关闭防火墙。然后再次输入systemctl status firewalld如果没有绿色,则说明关闭了 再次输入ifconfig,就可以看到IP地址了 最后将ip正确输入到 编辑器中,连接即可

Android Studio 版本升级后 Gradle project sync failed(Android V 应用升级)

问题及解决方案 更新到蜥蜴 Android Studio Iguana 后,出现Gradle project sync failed的问题(IDE更新版本的常态了)。 背景:对应用进行Android V版本升级(SDK=35,gradle插件版本要 8.4.0) 1、Gradle 版本过低 报错信息: FAILURE: Build failed with an exception. * Where: Build file 'E:\code\Demo\app\build.gradle' line: 1 * What went wrong: A problem occurred evaluating project ':app'. > Failed to apply plugin 'com.android.internal.version-check'. > Minimum supported Gradle version is 8.6. Current version is 8.2. If using the gradle wrapper, try editing the distributionUrl in E:\code\Demo\gradle\wrapper\gradle-wrapper.properties to gradle-8.6-all.zip 2、应用项目没有gradle文件夹 因此并不能按提示配置版本号,正常Project文件夹如下:

鸿蒙系统中的Webview技术详解

在鸿蒙操作系统中,Webview是一个强大的组件,它允许开发者将网页内容嵌入到应用程序中,实现与原生应用的无缝集成。本文将详细介绍鸿蒙系统中Webview的使用,以及如何通过JavaScript接口实现H5页面与原生应用之间的通信。 Webview基础 Webview是鸿蒙系统中的一个核心组件,它提供了一个容器,可以在应用程序内部展示网页内容。通过WebviewController,开发者可以控制Webview的行为,如加载网页、处理页面导航等。 controller: web_webview.WebviewController = new web_webview.WebviewController() JavaScript接口调用 鸿蒙系统支持通过JavaScript接口实现H5页面与原生应用的交互。开发者可以通过window.ApiCore.invokeClientMethod()方法调用原生功能,该方法使用module + method的方式来调用特定的原生接口。 接口注册与管理 为了实现H5与原生应用的交互,需要注册和管理JavaScript接口。鸿蒙系统提供了多种注册JS接口的方法: 全局注册方法类 通过定义一个类,并使用注解标记方法,可以全局注册JS接口。 export class ClassOne { @JSAnnotation.Method('ui', 'showMessage') showMessage(message: string) { return `显示消息: ${message}` } } JSManager.registerMethodClass(ClassOne) 全局注册方法 也可以直接注册一个方法,而不需要定义类。 JSManager.registerMethod({ moduleName: 'data', methodName: 'getUserInfo', builder: () => { return { invoke: (param: JSParam) => { const userInfo = { name: '张三', age: 30 } if (param.callback) { param.callback(userInfo) } return userInfo } } } }) 通过CrossInterface注册方法 使用CrossInterface类可以在运行时注册JS方法。

数据仓库——ETL(详细教程)

目录 建模方式 ETL 新建etl项目,设置项目名称位置 新建数据源 新建SSLS包 做全量 双击编辑执行SQL任务 双击编辑数据流任务 编辑OLE DB源 编辑数据流转换 编辑OLE DB源目标 右键选择执行 做增量 编辑执行SQL任务 编辑任务条件 编辑数据流任务1 编辑数据流任务2 执行任务 数据类型不同不能转换的问题 建模模型:维度模型——生成维度表,事实表 事实表为什么叫事实表?——表里有需要被统计的列 建模方式 使用PowerDesigner建立数据模型导出sql文件 1》星模型。事实表关联相关维度表(开发时最多使用) 2》雪花模型。区别 维度表还关联了另一维度表(多张表关联【查询速度慢:通常做降维 >>维度合并 >> 变成星型模型 合并后有重复数据不再符合三段式】) 3》星座模型。多个事实表共同关联维 ETL 将源数据etl到数据仓库里 新建etl项目,设置项目名称位置 新建数据源 本地服务器名: . 新建SSLS包 做全量 当前数据量比较小,当数据量大时做增量 做全量的步骤,先清空再将数据移动过来 双击编辑执行SQL任务 执行第一步,先将表中的内容删除 双击编辑数据流任务 创建传输流程 编辑OLE DB源 编辑数据流转换 编辑OLE DB源目标 右键选择执行 变绿执行成功 下面是对事实表做增量 做增量 创建增量序列容器 编辑执行SQL任务 编辑任务条件 选中左边线路 选中右边线路 编辑数据流任务1 假设是15号开始建立数据仓库 第一步是将14号及之前的所有数据做全量 同样在数据源中选择出符合数据仓库列的内容 其余步骤与做全量一样 编辑数据流任务2 保存过14号之前的数据这里从第15号开始

2024年向量数据库推荐榜单之MongoDB

Einat Orr 博士在博客中盘点了2024年最值得推荐的16款向量数据库,我们很高兴看到MongoDB以出色的高认可度名列其中。文中还介绍了向量数据库的优势,并辨析了向量库与向量数据库。一起来看看吧! 向量数据库自面世以来,致力于借助神经网络为新一代搜索引擎注入新活力。如今,这些数据库又扮演全新的角色:助力组织依托GPT4等大语言模型,高效部署应用程序。 向量数据库与 PostgreSQL 等标准关系数据库不同,后者是将表格数据存储到行和列中。向量数据库也不同于较晚面世的 NoSQL 数据库,它们无法像 MongoDB 一样将数据存储为 JSON。原因在于,向量数据库经过专门设计,只能存储和检索一类数据:向量嵌入。 向量嵌入能够提取并展示训练数据(即机器学习训练阶段的输出成果)的精华。它们将作为推演阶段处理新鲜数据的筛选条件。 向量搜索:数据查询的未来|语义搜索 目前市面上有哪些向量数据库解决方案,可协助您存储和检索高维向量? 在推荐优选的几款向量数据库和库之前,我们需要厘清以下这两种技术的差异。 向量库与向量数据库 专业向量数据库是为高效管理密集向量而开发的存储系统,而向量库则会集成到现有数据库管理系统 (DBMS) 或搜索引擎以提供相似性搜索。 向量库适用于要处理静态数据的应用程序,例如学术信息检索基准。向量数据库则适用于需要频繁变更数据的应用程序,例如,电子商务建议、图像搜索和语义搜索。 哪个向量数据库最适合您的项目?目前市面上的主流向量数据库有哪些?Einat Orr 博士在博客中推荐了市面上 16 款高人气向量数据库,其中就包含MongoDB。 MongoDB:2024 年不应错过的高人气向量数据库 MongoDB:https://www.mongodb.com/zh-cn GitHub 星数:25,400 个 MongoDB 能够解决哪方面的问题? MongoDB Atlas 是人气最高的托管型开发者数据平台,能够处理多种事务型负载和搜索负载。Atlas Vector Search(向量搜索)使用专业向量索引,会自动与核心数据库同步,经过配置之后可在不同基础设施上运行。这些特性既能够提供集成数据库的优势,也能够独立扩展,这也是用户青睐向量数据库的原因。 关键功能 ●集成数据库 + 向量搜索功能 ●独立配置 - 可实现数据库和搜索索引 ●每个文档可存储 16 MB 数据 ●高可用性、强事务保证、多层数据持久性、归档和备份 ●交易数据加密领域的行业领袖 ●混合搜索 15min深入探索MongoDB Atlas的强大功能 MongoDB Atlas MongoDB Atlas 是 MongoDB 公司提供的 MongoDB 云服务,由 MongoDB 数据库的开发团队构建和运维,可以在AWS、Microsoft Azure、Google Cloud Platform 云平台上轻松部署、运营和扩展。MongoDB Atlas 内建了 MongoDB 安全和运维最佳实践,可自动完成基础设施的部署、数据库的构建、高可用部署、数据的全球分发、备份等即费时又需要大量经验运维工作。让您通过简单的界面和 API 就可以完成这些工作,由此您可以将更多宝贵的时间花在构建您的应用上。

labelimg遇到的标签修改问题:修改一张图像的标签时,保存后导致classes.txt改变

问题描述:修改一张图像的标签时候, classes.txt 会同步更新,导致重新生成了 classes.txt 但是这个 classes.txt 只有你现在写的那个类别名,以前的没有了。 找到安装的labelImg路径,将default_prefdef_class_file文件写成自己的classes.txt对应的路径即可, 建议此处的default_prefdef_class_file写成标签保存文件夹下的实际classes.txt 随后开启cmd窗口启动labelimg 选择图像文件夹和标签保存文件夹即可 图像文件夹 标签保存文件夹

Java中使用JDBC获取MySQL数据库的名称、表名和字段名及相关信息

目录 MySQL相关操作1. 加载JDBC驱动2. 获取连接3. 获取数据库列表名称4. 获取数据库表名称5. 获取表的字段及类型6. 获取表字段对应的内容7. 获取数据库相关信息8. 关闭连接 总体代码 MySQL相关操作 前置条件:1.项目中需添加MySQL依赖;2. 文件中导入SQL所需要的包; 1. 加载JDBC驱动 // 驱动名称 private static final String DRIVER = "com.mysql.cj.jdbc.Driver"; static { try { // 加载驱动 Class.forName(DRIVER); } catch (ClassNotFoundException e) { System.out.println("加载驱动失败:" + e); } } 2. 获取连接 /** * 获取MySQL连接 * * @param url 需连接的MySql对应的url, 如 "jdbc:mysql://127.0.0.1:3306" * @param userName 用户名 * @param password 密码 * @return Connection */ public static Connection getConnection(String url, String userName, String password) { Connection connection = null; try { // 创建连接 connection = DriverManager.

Spring系列一:spring的安装与使用

文章目录 💞 官方资料🍊Spring5下载🍊文档介绍 💞Spring5🍊内容介绍🍊重要概念 💞快速入门🍊Spring操作演示🍊类加载路径🍊Spring容器结构剖析🍊Debug配置 💞实现简单基于XML配置程序🍊Spring原生容器结构梳理🍊作业布置 💞基于XML配置Bean💖通过类型获取bean💖通过指定构造器配置bean💖通过p名称空间配置bean💖通过ref配置bean💖通过内部bean配置属性 💞 官方资料 🍊Spring5下载 进入官网: https://spring.io/这里的版本是Spring5 (Spring框架就是一系列jar包. 即引入jar包, 就可以使用spring) 进入Spring5的github(Spring本身也是GitHub的开源项目) 下拉找到Access to Binaries, 进入Spring Framework Artifacts 进入到Spring的仓库(这里有Spring的各个版本的jar包) 下图②处具体路径 snapshot->org->springframework->spring 下载网址 https://repo.spring.io/artifactory/snapshot/org/springframework/spring/ 如果下载太慢, 这里也有资源, 无需再去官网下载 各个jar包的含义 🍊文档介绍 在线文档https://docs.spring.io/spring-framework/reference/离线文档spring-framework-5.3.8\docs\reference\html\index.html (解压压缩包, 在文件夹里, 按照路径去找)离线APIspring-framework-5.3.8\docs\javadoc-api\index.html (解压压缩包, 在文件夹里, 按照路径去找) 💞Spring5 🍊内容介绍 Spring核心学习内容 IOC, AOP, jdbcTemplate, 声明式事务 IOC: 控制反转, 可以管理java对象AOP: 切面编程JDBCTemplate: 是spring提供的一套访问数据库的技术. 应用性强, 相对好理解声明式事务: 基于ioc/aop实现事务管理IOC, AOP 是重点同时是难点, 需要时间理解 🍊重要概念 Spring可以整合其它的框架(解读: Spring是管理框架的框架) Spring有两个核心的概念: IOC 和 AOP IOC [Inversion Of Control 反转控制]

深度图 + RGB图像 转点云 python

1、深度图(.png)转点云(有内参) import numpy as np import open3d as o3d from PIL import Image def depth_to_point_cloud(depth_map, fx, fy, cx, cy): # h, w = depth_map.shape h, w = 1184, 1600 points = [] for v in range(h): for u in range(w): Z = depth_map[v, u] X = (u - cx) * Z / fx Y = (v - cy) * Z / fy points.append([X, Y, Z]) return np.array(points) depth_path = r'.

rabbitmq问题汇总

目录 1、rabbitmq连不上,Connection reset原因: 2、Caused by: org.springframework.amqp.AmqpTimeoutException: java.util.concurrent.TimeoutException 1、rabbitmq连不上,Connection reset原因: rabbitmq开启了ssl,但是客户端的rabbitmq配置没有开启ssl。 2、看rabbitmq配置的auth_mechanisms没有开启对应的身份验证方式。 rabbitmqctl status 可以看到rabbitmq的配置文件,以及开启的端口。 5671为开启了ssl的端口,5672为没有开启ssl使用的端口。 看mq的配置: [{rabbit, [ {tcp_listeners, [5672]}, {ssl_listeners, [5671]}, {ssl_options, [ {cacertfile, "/data/rabbitmq-3.8.16/etc/rabbitmq/ssl/cacert.pem"}, {certfile,"/data/rabbitmq-3.8.16/etc/rabbitmq/ssl/rabbitmq-server.cert.pem"}, {keyfile,"/data/rabbitmq-3.8.16/etc/rabbitmq/ssl/rabbitmq-server.key.pem"}, {verify, verify_peer}, {fail_if_no_peer_cert, true}, {ciphers, [ "ECDHE-ECDSA-AES256-GCM-SHA384","ECDHE-RSA-AES256-GCM-SHA384", "ECDHE-ECDSA-AES256-SHA384","ECDHE-RSA-AES256-SHA384", "ECDHE-ECDSA-DES-CBC3-SHA","ECDH-ECDSA-AES256-GCM-SHA384", "ECDH-RSA-AES256-GCM-SHA384","ECDH-ECDSA-AES256-SHA384", "ECDH-RSA-AES256-SHA384","DHE-DSS-AES256-GCM-SHA384", "DHE-DSS-AES256-SHA256","AES256-GCM-SHA384", "AES256-SHA256","ECDHE-ECDSA-AES128-GCM-SHA256", "ECDHE-RSA-AES128-GCM-SHA256","ECDHE-ECDSA-AES128-SHA256", "ECDHE-RSA-AES128-SHA256","ECDH-ECDSA-AES128-GCM-SHA256", "ECDH-RSA-AES128-GCM-SHA256","ECDH-ECDSA-AES128-SHA256", "ECDH-RSA-AES128-SHA256","DHE-DSS-AES128-GCM-SHA256", "DHE-DSS-AES128-SHA256","AES128-GCM-SHA256", "AES128-SHA256","ECDHE-ECDSA-AES256-SHA", "ECDHE-RSA-AES256-SHA","DHE-DSS-AES256-SHA", "ECDH-ECDSA-AES256-SHA","ECDH-RSA-AES256-SHA", "AES256-SHA","ECDHE-ECDSA-AES128-SHA", "ECDHE-RSA-AES128-SHA","DHE-DSS-AES128-SHA", "ECDH-ECDSA-AES128-SHA","ECDH-RSA-AES128-SHA","AES128-SHA" ]} ]}, {auth_mechanisms,[ 'PLAIN','EXTERNAL']}, {ssl_cert_login_from,common_name} ]} tcp_listeners:tcp监听的端口,若开启了ssl则这个端口可以不开放。 ssl_listeners:开启ssl监听的端口。 auth_mechanisms:rabbitmq身份认证机制: RabbitMQ 支持多种身份验证机制,可以根据需要进行配置。以下是一些常见的身份验证机制: PLAIN:这是最常见的身份验证机制,使用明文的用户名和密码进行认证。 AMQPLAIN:这是一种使用二进制编码的身份验证机制,使用用户名和密码进行认证。 EXTERNAL:这是一种使用客户端提供的外部证书进行认证的身份验证机制。适用于使用 TLS/SSL 连接的客户端。 LDAP:这是一种使用 LDAP(轻量级目录访问协议)进行认证的身份验证机制,可以与现有的 LDAP 目录集成。

No JVM could be found on your system. 在您的系统上找不到JVM。 Please define EXE4J JAVA HOME to point to an ins

这个问题表明您正在尝试运行一个需要Java运行环境(JRE)或者Java开发工具包(JDK)的程序(特别是通过Exe4j打包的应用程序),但是您的系统上没有正确配置Java环境。 要解决此问题,您可以按照以下步骤操作: 检查是否已安装Java: 打开命令提示符(Windows上)或终端(macOS/Linux上)。输入 java -version 或 javac -version 命令并回车。如果已安装Java,这将显示您当前安装的Java版本。确保显示的是32位版本,因为错误信息指定需要32位JDK或JRE。 安装32位JDK或JRE: 如果您没有安装Java,或者安装的是64位而不是32位,您需要从Oracle官网或 Adoptium (https://adoptium.net/) 下载并安装32位的JDK或JRE。请注意,自Java 11起,Oracle对个人用户不再提供免费的商用JDK,您可以选择使用Adoptium的OpenJDK版本。 设置EXE4J JAVA HOME环境变量: 对于Windows: 右键点击“此电脑”或“我的电脑”,选择“属性”。点击“高级系统设置”。在“系统属性”窗口中,点击“环境变量”按钮。在“系统变量”区域,点击“新建”。变量名输入 EXE4J_JAVA_HOME,变量值设置为您的32位JDK或JRE的安装路径(例如,C:\Program Files (x86)\Java\jdk1.8.0_XXX 或 C:\Program Files (x86)\Java\jre1.8.0_XXX)。确认所有窗口并退出。 对于macOS或Linux: 在终端中,编辑相应的环境变量文件(如 ~/.bashrc, ~/.bash_profile, 或 ~/.zshrc,取决于您的shell),添加以下行: export EXE4J_JAVA_HOME=/path/to/your/32bit/jdk_or_jre 替换 /path/to/your/32bit/jdk_or_jre 为实际的安装路径。保存更改后,执行 source ~/.bashrc (或相应的配置文件)使改动生效。 重启计算机或重新加载环境变量: 为了使环境变量生效,可能需要重启计算机,或者如果支持,可以尝试重新加载shell环境。 完成上述步骤后,您应该能够运行之前报错的程序了。如果问题仍然存在,请检查环境变量设置是否正确无误。

AI绘画【comfyUI】两个自动蒙版操作,轻松实现一键更换背景

大家好!我是向阳 在SD-webui里有个segment_anything插件,只需输入想要提取的元素, 就能帮我们一键生成图片的前景、背景和蒙版。 这期我就分享两个,在ComfyUI里面轻松去背景和生成蒙版的节点。 第一个:segment_anything 插件地址:https://github.com/storyicon/comfyui_segment_anything 注意:需要科学上网,如无法下载,请看文末扫描获取插件安装包 其实它的原理采用GroundingDINO作为对象检测器,通过我们输入的类别名称或引用表达式,来检测目标, 然后再经过大量数据训练的segment_anything_model,简称SAM模型,来处理图像,最后生成对象蒙版。 使用时会自动下载模型。你也可以根据下表,手动下载它们。如果自动下载速度慢,可以设置 HTTP_PROXY 和 HTTPS_PROXY 环境变量来使用代理。 从 https://huggingface.co/bert-base-uncased/tree/main 下载模型到 ComfyUI 根目录下的models/bert-base-uncased 文件夹中,如下所示: ComfyUI models bert-base-uncased config.json model.safetensors tokenizer_config.json tokenizer.json vocab.txt 当然你也可以跳过此步骤。在推理过程中, bert-base-uncased 会通过 transformers 库自动下载, 其目录通常为 ~/.cache/huggingface/hub/models–bert-base-uncased 请直接将模型和配置文件下载到ComfyUI根目录下的 models/grounding-dino 目录中,无需修改文件名。 名称大小模型文件GroundingDINO_SwinT_OGC694MB请看文末扫描获取GroundingDINO_SwinB938MB请看文末扫描获取 SAM 模型 下载后放到ComfyUI根目录下的 models/sams 目录下,无需修改文件名。 根据自己的需要请看文末扫描获取模型,模型有大有小。 实操步骤 还是老规矩,先加载默认文生图工作流 默认文生图工作流 接着我们使用上面安装的segment_anything插件 可以看到,这个节点是要加载两个模型的,也就是上面我们下载的模型,并且需要一个图片作为参考图,它的输出则是一张图和一个遮罩。 我们按它的输入要求加载下需要的东西,并且我们希望他能扣出我的主体人物,所以我提示词给它:character,并且把图片和遮罩预览下,看看效果 小知识点:遮罩预览需要转成图像才能预览哦。 sam模型加载器处理模式,尽可能的选择GPU模式,速度更快。 可以看到,很简单就从图片了抠出了人物主体图像,并且生成了一个前景遮罩。 前景遮罩(Foreground Mask):前景遮罩用于标识图像中前景物体的区域。在图像分割中,前景通常是我们关注的对象,比如人、动物或物体。前景遮罩用于分离前景和背景,使我们能够对前景物体进行单独的处理,如提取、替换背景或进行图像合成。 背景遮罩(Background Mask):背景遮罩用于标识图像中背景区域的遮罩。它帮助我们确定哪些部分是背景,以便我们可以对背景进行操作,如替换、模糊或去除。背景遮罩在视频处理中特别有用,用于在动态场景中稳定背景或分离前景对象。 接下来我们把它接入文生图流程看看效果,这里我们其实已经是图生图的模式了,我们需要把遮罩和原图传给KSampler采样器,进行处理,图片进入latent我们都知道,只需要通过vae编码即可,遮罩我们需要使用到设置latent噪波遮罩这个节点,用户这个替换文生图中的空latent就可以了 我们再使用背景遮罩来试试效果,背景遮罩就是把前景遮罩反转即可,使用的节点是反转遮罩这个节点 这就是实现了,人物换背景了,而且整体来说还是很协调了。 第二种comfyui-was-node-suite中图像处理 was-node-suite-是comfyui中的一个泛节点套件,来源github作者:WAS-PlaiLabs 其中包含图像处理、文本处理等190个常用节点。部分节点如下图: GitHub地址:https://github.com/WASasquatch/was-node-suite-comfyui 需要确保/ComfyUI/custom_nodes、was-node-suite-comfyui、 和WAS_Node_Suite.py具有写入权限。 加载 效果是一样的,生成前景遮罩

0基础从前端到Web3 —— Vite + React + TS moveCall a + b

一:初始化项目 V i t e \mathit {Vite} Vite 作为近几年前端开发中常用的构建工具之一,具有启动速度快、更快的冷启动与热更新、按需加载等优势,极高提升了开发效率和体验,想要初始化一个项目也十分简单,本篇以 p n p m \mathit {pnpm} pnpm 为例: pnpm create vite 根据提示输入想要创建的项目名,再选择 R e a c t \mathit {React} React 框架和 T y p e S c r i p t \mathit {TypeScript} TypeScript 模板(请根据具体的开发需求选择合适的框架和模板)。cd进入你新建的项目,通过pnpm install安装必要的依赖,等待一会儿后即可通过pnpm run dev进行启动,这里可以选择打开浏览器预览初始化的页面(中央有一个点击计数的按钮)。本篇还需要使用到 S u i M o v e \mathit {Sui\ Move} Sui Move​ 的相关功能(例如通过浏览器连接钱包,链上调用等),所以还需要通过如下命令添加依赖: pnpm add -D @mysten/sui.js @mysten/dapp-kit @tanstack/react-query 至此,基础的内容都已经初始化完毕,让我们将功能进行拆解进行实现。 二:功能实现 2.1 基础组件 在项目中进入src文件夹,打开并修改main.

2024 年最新 Python 基于 itchat 开源框架搭建微信机器人详细教程(更新中)

概述 ntwork 开源框架 ItChat 是一个基于 Python 的微信个人号接口库。它通过封装微信 API,使得开发者可以使用 Python 来方便地与微信进行交互,实现一系列微信相关的功能。这些功能包括但不限于发送和接收消息、获取好友列表和详细信息、以及进行群聊操作等。ItChat 提供了一套简洁而强大的 API,让开发者能够轻松地在 Python 中执行微信相关的操作。 ItChat 支持 Python 2.x 和 3.x 版本,并且可以在多个操作系统平台上运行,包括 Windows、Mac 和 Linux 等。这使得开发者可以根据自己的需求和环境选择适合的 Python 版本和操作系统。 ItCha t的入门使用相对简单。首先,你需要通过 pip 命令安装 ItChat 库。安装完成后,你可以通过引入 ItChat 模块,并调用其提供的函数来实现所需的功能。例如,你可以使用 ItChat 的 login() 函数来扫码登录微信,然后使用 get_friends() 函数来获取好友列表和详细信息。此外 ItChat 还提供了发送消息、注册消息回复等功能,使开发者能够根据自己的需求定制微信机器人的行为。 ItChat 不仅是一个功能强大的工具,也是一个开源项目,这意味着开发者可以根据自己的需求对其进行扩展和定制。通过 ItChat,你可以开发出各种有趣的微信应用,如自动回复消息、数据采集、搭建微信聊天机器人等。 框架 API 文档:https://itchat.readthedocs.io/zh/latest/api/ 下载安装 itchat 库 使用 pip 进行安装下载 itchat 库 pip install itchat 清华大学开源软件镜像站 使用如下命令配置 pip 使用清华大学的镜像源: pip install itchat -i https://pypi.tuna.tsinghua.edu.cn/simple 如果永久设置这个镜像源,可以创建一个 pip 配置文件(例如:~/.