当前位置: 首页 > news >正文

基于moonshot模型的Dify大语言模型应用开发核心场景

基于moonshot模型的Dify大语言模型应用开发核心场景学习总结

一、Dify环境部署
1.Docker环境部署
这里使用vagrant部署,下载vagrant之后,vagrant up登陆,vagrant ssh,在vagrant 中使用 vagrant centos/7 init 快速创建虚拟机
安装完成之后,修改vagrant配置文件的网络,保证本地与虚拟机网络连通
在这里插入图片描述

在centos7上部署dokcer环境

1、卸载系统之前的 docker

sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine

2、安装必须的依赖 Docker-CE
启用 EPEL 源
Extra Packages for Enterprise Linux(EPEL)源包含了许多额外的软件包,可能会包含你需要的软件包。你可以通过以下命令安装 EPEL 源:

sudo yum install -y epel-release
sudo yum install -y yum-utils \ device-mapper-persistent-data \ lvm2

3、设置 docker repo 的 yum 位置
阿里云镜像

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

4、安装 docker 以及 docker-cli

sudo yum install docker-ce docker-ce-cli containerd.io

5、启动 docker

sudo systemctl start docker

6、设置 docker 开机自启

sudo systemctl enable docker

bug:安装docker时显示空间不足
解决办法:在VirtualBox界面右键删除centos7所有数据,重新安装即可
安装docker时空间不足的问题,去VirtualBox里面删除centos7,从新安装就行了,而且必须使用阿里云镜像

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

其他步骤都一样,第一此我装cenos7直接占了40G硬盘,卸载后第二次装才正常只占5G硬盘
第二次装centos7的时候先要删除pc目录下的Vagrantfile文件,然后再执行vagrant init centos/7
完成之后记得改Vagrantfile文件的配置地址config.vm.network “private_network”, ip: “192.168.56.10”
2.Centos7安装dify
在docker安装git,配置pub公钥至github

如果git无法下载,临时忽略 SSL 验证

git config --global http.sslVerify false

下载完后恢复 SSL 验证

git config --global http.sslVerify true

如果出现类似Error response from daemon: Get “https://registry-1.docker.io/v2/”: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers) 的错误,说明镜像源网站不可用,需要更换镜像源网址

sudo vi /etc/docker/daemon.json
填入

{
"registry-mirrors":[ 
"https://docker-0.unsee.tech",
"https://docker.imgdb.de", 
"https://docker.h1mirror.com" 
]
}

当Dify版本更新后,你可以克隆或拉取最新的Dify源代码,并通过命令行更新已经部署的Dify环境。‍‍‍‍‍‍‍‍‍‍‍‍
进入dify源代码的docker目录,按顺序执行以下命令:
更新dify,如过更新了.env配置文件需同步至复制的配置文件

cd dify/docker
docker compose down
git pull origin main
docker compose pull
docker compose up -d

docker compose ps 查看已运行服务
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3.Dify compose环境验证
3.1 Dify调试命令

#停止容器下所有服务
docker compose stop
cd /root/dify/docker
#启动
docker compose start
#停止并移除
docker compose down
#安装并启动 
docker compose up -d

在这里插入图片描述

3.2 502Gateway问题
安装完成后访问首页,本地vagrant服务器ip为192.168.56.10,访问dify注册地址:http://192.168.56.10/install,出现一直加载的问题,始终无法访问,最后使用卸载、重装、更新等操作,在次访问还是同样的问题,最后等待了一会就可以成功访问了,可能是dify在下载相关查询或者是nginx转发ip的问题
在这里插入图片描述

http://192.168.56.10/console/api/setup
502 Bad Gateway

3.3 修改nginx服务配置
通过下列命令获取api-1、web-1服务的ip,将新的ip更新至nginx配置文件中

 docker ps -q | xargs -n 1 docker inspect --format '{{ .Name }}: {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}'

在这里插入图片描述

/docker-api-1: 172.18.0.8172.19.0.5
/docker-web-1: 172.18.0.5

在这里插入图片描述

docker inspect --format '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' docker-api-1
172.18.0.9172.19.0.4docker inspect --format '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' docker-web-1
}
172.18.0.3#重启nginx
docker compose restart nginx

3.4 启动Dify
更新nginx配置无效,重装dify即可,若还是访问一直在加载,就多等待一会

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、Dify学习

  1. 聊天助⼿Demo:创建基于知识库的问答机器⼈,⽀持PDF⽂档检索

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

获取api key
在这里插入图片描述

Api-key在kimi月之暗面上新建
在这里插入图片描述

Api-base:https://api.moonshot.cn/v1
在这里插入图片描述

设置成功
在这里插入图片描述

给聊天助手配置大模型
在这里插入图片描述

提示词编写完成之后,点击发布
在这里插入图片描述

点击重新开始
在这里插入图片描述

开始聊天
在这里插入图片描述

使用变量
在这里插入图片描述

在提示词中输入“/”导入变量,然后替换所有变量
在这里插入图片描述

刷新
在这里插入图片描述

开始提问

在这里插入图片描述
在这里插入图片描述

通过上述操作,可以实现智能面试大模型,可以嵌入网站、并且可以提供访问API等
在这里插入图片描述

在这里插入图片描述

使用ai生成知识库文档,导入文档至机器人
在这里插入图片描述
在这里插入图片描述

预览
在这里插入图片描述

将创建的知识库,导入给聊天机器人
在这里插入图片描述

开始提问,基于知识库中的元数据标签提出问题,机器人回答知识库中标签对应的答案

在这里插入图片描述

  1. Agent Demo:开发调⽤天⽓API的智能体,实现动态数据获取。

创建心知天气账号
在这里插入图片描述

创建免费API KEY
在这里插入图片描述

使用账号API KEY拼接API
在这里插入图片描述

https://api.seniverse.com/v3/weather/daily.json?key=SIl3naRjcyTKgfT7m&location=wuhan&language=zh-Hans&unit=c&start=0&days=5
在这里插入图片描述

API参数定义
在这里插入图片描述

创建自定义工具

在这里插入图片描述

使用ai生成OPen API Schema
在这里插入图片描述

{ "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "properties": { "results": { "type": "array", "items": { "type": "object", "properties": { "location": { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "country": { "type": "string" }, "path": { "type": "string" }, "timezone": { "type": "string" }, "timezone_offset": { "type": "string" } }  , "required": ["id", "name", "country", "path", "timezone", "timezone_offset"] }, "daily": { "type": "array", "items": { "type": "object", "properties": { "date": { "type": "string", "format": "date" }, "text_day": { "type": "string" }, "code_day": { "type": "string" }, "text_night": { "type": "string" }, "code_night": { "type": "string" }, "high": { "type": "string" }, "low": { "type": "string" }, "rainfall": { "type": "string", "pattern": "^[0-9.]+$" }, "precip": { "type": "string", "pattern": "^[0-9.]+$" }, "wind_direction": { "type": "string" }, "wind_direction_degree": { "type": "string" }, "wind_speed": { "type": "string", "pattern": "^[0-9.]+$" }, "wind_scale": { "type": "string", "pattern": "^[0-9]+$" }, "humidity": { "type": "string", "pattern": "^[0-9]+$" } }, "required": ["date", "text_day", "code_day", "text_night", "code_night", "high", "low", "rainfall", "precip", "wind_direction", "wind_speed", "wind_scale", "humidity"] } }, "last_update": { "type": "string", "format": "date-time" } }, "required": ["location", "daily", "last_update"] } } }, "required": ["results"] }

我这里可以优化为只传城市location这一个参数,目前是全量传参

把自定义工具添加到agent的工具中
在这里插入图片描述

在这里插入图片描述

在语言交互阶段,输入参数

测试:武汉天气
API参数:
key=SIl3naRjcyTKgfT7m
location=wuhan
language=zh-Hans
unit=c
start=0
days=5
在这里插入图片描述

测试:宜昌天气
API参数:
key=SIl3naRjcyTKgfT7m
location=yichang
language=zh-Hans
unit=c
start=0
days=5
在这里插入图片描述

在“探索”中打开,这里动态数据获取完成,只需要传入不同的查询参数,比如location所查询的位置传入需要查询的城市即可返回当前城市的天气信息,实现了动态传参查询的效果,这里的天气查询API可以使用现有的天气网址提供,也可以延申一下,将自己开发的API提供给Dify,灵活的在Dify的业务中使用。
在这里插入图片描述

  1. Chatflow Demo:设计多轮对话流程(如⽤户身份验证→需求收集→服务推荐)
    1.Dify工作流分为两种类型:
    (1)Chatflow:面向对话类情景,包括客户服务、语义搜索、以及其他需要在构建响应时进行多步逻辑的对话式应用程序。
    (2)Workflow:面向自动化和批处理情景,适合高质量翻译、数据分析、内容生成、电子邮件自动化等应用程序。

2.用户身份验证→需求收集→服务推荐的多轮对话流程。
(1)用户身份验证:用户输入用户名和密码,程序通过authenticate_user函数检查输入的信息是否与模拟的用户数据库匹配,验证用户身份。
(2)需求收集:身份验证成功后,通过collect_requirements函数与用户进行多轮对话,收集用户的需求信息,用户可以输入多个需求类型及其具体内容,输入done结束需求输入。
(3)服务推荐:根据收集到的用户需求,通过recommend_services函数向用户推荐相应的服务。

创建Chatflow
在这里插入图片描述
在这里插入图片描述

新增变量
username
password
hobby

定义问题分类器

在这里插入图片描述

创建http请求模块
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

#编写分类API接口
@GetMapping("/handle")
public String handle(@RequestParam String username,@RequestParam String password,@RequestParam String hobby){//用户校验if (!username.equals("1") || !password.equals("2")) {return "用户名或密码错误";}List<String> list;String message;Random random = new Random();switch (hobby) {//摄影服务推荐case "1":list = Arrays.asList("视觉中国:是一家知名的视觉内容服务提供商,拥有丰富的图片、视频等视觉资源,也提供专业的摄影服务,涵盖广告摄影、产品摄影、活动摄影等领域。","图虫网:聚集了大量专业摄影师和摄影爱好者,可以在这里找到各种风格的摄影师,提供商业摄影、旅拍、人像摄影等服务,还能购买摄影作品的版权。","桔子拾光:是一家专注于餐饮视觉传播的机构,在厦门、广州设有分公司,主营美食摄影、美食短视频等服务,合作过百草味、圣农食品等国内食品一线品牌以及众多本地知名餐饮品牌");int randomIndex1 = random.nextInt(list.size());message  = list.get(randomIndex1);break;case "2"://// 旅游服务推荐list = Arrays.asList("携程:提供全方位的旅游服务,包括机票预订、酒店预订、旅游度假产品预订、火车票预订、汽车票预订、景点门票预订等,还有用户点评和攻略分享,能帮助用户规划行程。","去哪儿网:专注于旅游产品的搜索和比较,提供机票、酒店、度假、门票等产品的预订服务,其价格比较功能可以帮助用户找到性价比高的旅游产品。","马蜂窝:以旅游攻略和游记分享为特色,用户可以在平台上查看其他旅行者的经验和建议,了解目的地的景点、美食、住宿等信息,还能预订酒店、机票、当地游等产品。");int randomIndex2 = random.nextInt(list.size());message  = list.get(randomIndex2);break;case "3"://美食服务推荐list = Arrays.asList("舌尖上的美食地图:集美食推荐、点评、交流于一体的附近美食推荐平台,覆盖全国众多城市和县区,通过权威推荐和用户真实点评,帮助用户发现身边的特色美食和品质餐厅。","大众点评:是一个生活消费点评平台,提供美食、酒店、购物、休闲娱乐等各类商家的信息和用户点评,用户可以根据评分、评价、距离等筛选餐厅,还能查看餐厅的菜单、地址、电话等详细信息。","小红书:虽然不是专门的美食推荐平台,但有大量的美食博主分享美食探店、美食制作、地方特色美食等内容,用户可以通过搜索关键词或浏览相关话题,发现各种美食推荐和美食攻略。");int randomIndex3 = random.nextInt(list.size());message  = list.get(randomIndex3);break;default://发送至默认客户支持邮箱message = "已发送至默认客户支持邮箱";break;}return message;
}

定义变量聚合器,将所有请求接口的响应返回到这里

定义结束节点收纳变量聚合器的返回,结束节点变量为output(变量聚合器输出)
在这里插入图片描述
在这里插入图片描述

输入用户名和密码开始交互,用户输入”摄影“,会根据用户需求通过收集器进行分类,然后传入类型参数(hobby :摄影=1,旅游=2,美食=3),开始http请,首先API接口会校验账号和密码,如果校验失败会返回”用户名或密码错误”,如果校验通过,根据类型像API传入不同的参数

在这里插入图片描述

流程如下:
通过下面可知,需求收集器根据用户的输入自动分类为”摄影”,然后去触发摄影接口

在这里插入图片描述

响应结果:
"桔子拾光:是一家专注于餐饮视觉传播的机构,在厦门、广州设有分公司,主营美食摄影、美食短视频等服务,合作过百草味、圣农食品等国内食品一线品牌以及众多本地知名餐饮品牌

  1. ⼯作流Demo:构建⾃动化文章⽣成流程(LLM提示词生成章节→章节json解析&格式转换→迭代节点生成完整文章)
    创建工作流
    在这里插入图片描述

使用ai生成提示词

##角色 文章撰写专家
##技能 根据用户输入的文章标题 /title 和各章节名称 /chapter,生成各个章节下的子章节。
##目标 确保生成的每个子章节和父章节紧密相关。 纵观整体章节,必须保证各章节过渡连贯流畅。 最终输出 json 字符串。
##限制 输出的 json 字符串必须是标准 json 字符串,不要包含任何 XML 标签和转义字符,如\n 。 严格按照输出示例中的例子输出 json 字符串,不要输出其他任何文本。
#输出示例 [ { “chapter”: “引言”, “subchapter”: “1. 气候变化对沿海城市影响的概述 2. 理解这些影响的重要性 3. 研究范围与方法简述” }, { “chapter”: “气候变化对沿海城市的具体影响”,
“subchapter”: “1. 海平面上升引发的洪水风险 2. 极端天气事件频率增加的冲击 3. 海洋生态变化对渔业的影响” }, {
“chapter”: “应对策略与措施”, “subchapter”: “1. 基础设施加固与防洪工程建设 2. 生态保护与修复举措 3.
城市规划中的气候适应性调整” }, { “chapter”: “结论”, “subchapter”: “1.
总结气候变化对沿海城市影响的关键要点 2. 展望未来沿海城市应对的方向 3. 强调跨部门合作的必要性” } ]

将提示词填入user处
在这里插入图片描述

嵌入提示词变量

在这里插入图片描述

验证LLM

在这里插入图片描述

生成成功
在这里插入图片描述

[ { “chapter”: “关于评价的故事”, “subchapter”:
“1.庄子如何评价事物2.超越常规的评价标准3.评价与个人成长的关联4.如何从评价中获得启发5.评价对人际关系的影响” }, {
“chapter”: “关于得失的故事”, “subchapter”:
“1.庄子对得失的看法2.得失对心态的影响3.如何在得失中寻找平衡4.得失观与生活哲学5.得失中的道德考量” }, { “chapter”:
“关于困境的故事”, “subchapter”:
“1.庄子如何看待困境2.困境中的自我反思3.通过困境实现自我超越4.困境与逆境中的创造力5.困境中的人际关系” }, {
“chapter”: “关于选择的故事”, “subchapter”:
“1.庄子的选择哲学2.如何在复杂环境中做出选择3.选择对人生道路的影响4.选择与责任的关系5.选择中的道德挑战” }, {
“chapter”: “关于心态的故事”, “subchapter”:
“1.庄子的心境观2.心态对生活质量的影响3.如何在变化中保持平和心态4.心态与幸福感的关系5.心态的修炼与提升” } ]

在这里插入图片描述

Json格式转换,并将text文本类型转换为object数组进行输出

def main(arg1: str) -> dict:import jsondata=json.loads(arg1)result=[{"chapter":item["chapter"], "subchapter":item["subchapter"]}for item in data]return {"result":result}

迭代节点
在这里插入图片描述

提示词:
system:
你是一个文章撰写专家,你是工作是写长形式有吸引力的文章。
user:
你正在编写一篇名为/title的文章,根据一下信息/item写一个章节
生成全文时以完整的大纲作为参考/chapter

迭代输入输出

在这里插入图片描述

def main(arg1: list):
data = articleSections
return {
“result”: “\n”.join(data)
}

节点编排完成
在这里插入图片描述

可以使用下列title和标题自动生成小说了!!!

文章标题
武侠修仙:5 个秘籍,开启超凡修行之路
章节
1.关于功法的秘籍
2.关于法宝的秘籍
3.关于奇遇的秘籍
4.关于心境的秘籍
5.关于突破的秘籍

三、主机巡检场景学习

(1)Apifox Mock数据配置
1.创建mock接口
获取义主机监控指标(CPU、内存、磁盘)/getItemVal
在这里插入图片描述

2.定义主机监控指标JSON数据结构

在这里插入图片描述

利用率:usage
阈值:threshold
异常:warning
危险:critical

响应定义

{"host": "example_host","metrics": {"cpu": {"usage": 20,"threshold": {"warning": 70,"critical": 90},"status": "normal"},"memory": {"usage": 94,"threshold": {"warning": 80,"critical": 95},"status": "warning"},"disk": {"usage": 99,"threshold": {"warning": 85,"critical": 98},"status": "critical"}}
}

在这里插入图片描述
在这里插入图片描述

3.定义期望
在这里插入图片描述

4.配置Mock脚本
在这里插入图片描述

apifox_host_monitoring_mock.js脚本内容如下:

// 获取当前时间戳,用于模拟周期性波动
const timestamp = new Date().getTime();// 模拟 CPU、内存、磁盘使用率的波动
function getUsage(metric) {let baseUsage;switch (metric) {case 'cpu':baseUsage = 50;break;case 'memory':baseUsage = 60;break;case 'disk':baseUsage = 70;break;default:baseUsage = 0;}// 模拟周期性波动,波动范围在 -20 到 20 之间const fluctuation = Math.sin(timestamp / 10000) * 20; let usage = baseUsage + fluctuation;// 确保使用率在 0 到 100 之间usage = Math.max(0, Math.min(100, usage)); return usage;
}// 根据使用率和阈值判断状态
function getStatus(usage, thresholds) {if (usage >= thresholds.critical) {return 'critical';} else if (usage >= thresholds.warning) {return 'warning';}return 'normal';
}// 生成 Mock 数据
const mockData = {"host": "example_host","metrics": {"cpu": {"usage": getUsage('cpu'),"threshold": {"warning": 70,"critical": 90},"status": getStatus(getUsage('cpu'), { warning: 70, critical: 90 })},"memory": {"usage": getUsage('memory'),"threshold": {"warning": 80,"critical": 95},"status": getStatus(getUsage('memory'), { warning: 80, critical: 95 })},"disk": {"usage": getUsage('disk'),"threshold": {"warning": 85,"critical": 98},"status": getStatus(getUsage('disk'), { warning: 85, critical: 98 })}}
};// 返回 Mock 数据
mockData;    

运行接口:
在这里插入图片描述

{"host": "227.41.194.179","metrics": {"cpu": {"usage": 12,"threshold": {"warning": 32,"critical": 77},"status": "veniam quis ut"},"memory": {"usage": 71,"threshold": {"warning": 6,"critical": 37},"status": "ex ad ea"},"disk": {"usage": 12,"threshold": {"warning": 9,"critical": 60},"status": "laboris fugiat nisi"}}
}

5.定义未云端接口,提供外网访问
https://m1.apifoxmock.com/m1/3316678-2786266-default/m1/3316678-2786266-default/getItemVal
在这里插入图片描述

浏览器访问
在这里插入图片描述

(2)Dify⾃定义⼯具开发

1.创建自定义工具
调⽤ApifoxMock接⼝获取数据
在这里插入图片描述

2.使用ai生成JSON Schema

{"openapi": "3.1.0","info": {"title": "Untitled","description": "Your OpenAPI specification","version": "v1.0.0"},"servers": [{"url": ""}],"paths": {"/m1/3316678-2786266-default/m1/3316678-2786266-default/getItemVal": {"get": {"summary": "Get data from the specified API","responses": {"200": {"description": "Successful response","content": {"application/json": {"schema": {"type": "object","properties": {"host": {"type": "string"},"metrics": {"type": "object","properties": {"cpu": {"type": "object","properties": {"usage": {"type": "number"},"threshold": {"type": "object","properties": {"warning": {"type": "number"},"critical": {"type": "number"}},"required": ["warning", "critical"]},"status": {"type": "string"}},"required": ["usage", "threshold", "status"]},"memory": {"type": "object","properties": {"usage": {"type": "number"},"threshold": {"type": "object","properties": {"warning": {"type": "number"},"critical": {"type": "number"}},"required": ["warning", "critical"]},"status": {"type": "string"}},"required": ["usage", "threshold", "status"]},"disk": {"type": "object","properties": {"usage": {"type": "number"},"threshold": {"type": "object","properties": {"warning": {"type": "number"},"critical": {"type": "number"}},"required": ["warning", "critical"]},"status": {"type": "string"}},"required": ["usage", "threshold", "status"]}},"required": ["cpu", "memory", "disk"]}},"required": ["host", "metrics"]}}}}}}}},"components": {"schemas": {}}
}

2.获取主机监控指标(CPU、内存、磁盘)测试
在这里插入图片描述

3.编写Python⼯具获取主机监控指标

在这里插入图片描述

相关文章:

基于moonshot模型的Dify大语言模型应用开发核心场景

基于moonshot模型的Dify大语言模型应用开发核心场景学习总结 一、Dify环境部署 1.Docker环境部署 这里使用vagrant部署&#xff0c;下载vagrant之后&#xff0c;vagrant up登陆&#xff0c;vagrant ssh&#xff0c;在vagrant 中使用 vagrant centos/7 init 快速创建虚拟机 安装…...

系统设计应优先考虑数据流还是控制流?为什么优先考虑数据流?数据流为主、控制流为辅的架构原则是什么?控制流优先会导致哪些问题?

在当代软件工程的复杂演化中,每个现代系统,不论是处理金融交易的平台、智能家居系统,还是自动驾驶系统,都面临同一个核心问题:设计者该以“数据流”为主导,还是以“控制流”为主导? 在系统设计过程中,工程师所面对的核心问题不仅是代码的堆叠与组织,更是信息流动模式…...

Redis Cluster动态扩容:架构原理与核心机制解析

一、哈希槽的数学本质与拓扑重构 核心图示&#xff1a;哈希槽分配演变 #mermaid-svg-YmcBfipoPA8LvxYF {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-YmcBfipoPA8LvxYF .error-icon{fill:#552222;}#mermaid-svg-Y…...

高考之外,英国国际大一:开启本科留学新征程

在竞争激烈的教育赛道上&#xff0c;高考一直被视为通向高等学府的重要关卡。然而&#xff0c;当千军万马挤在国内升学这座独木桥时&#xff0c;越来越多有远见的学生和家长将目光投向海外&#xff0c;英国本科留学凭借其灵活的录取机制和多元的升学路径&#xff0c;成为众多学…...

UML 图的细分类别及其应用

统一建模语言&#xff08;UML&#xff0c;Unified Modeling Language&#xff09;是一种用于软件系统建模的标准化语言&#xff0c;广泛应用于软件工程领域。UML 图分为多种类别&#xff0c;每种图都有其特定的用途和特点。本文将详细介绍 UML 图的细分类别&#xff0c;包括 类…...

Android10如何设置ro.debuggable=1?

说明&#xff1a;仅供学习使用&#xff0c;请勿用于非法用途&#xff0c;若有侵权&#xff0c;请联系博主删除 作者&#xff1a;zhu6201976 目录 一、背景 二、如何解决&#xff1f; 三、操作步骤 一、背景 Android 10 开始的限制&#xff1a;ro.debuggable 是只读属性 从 …...

每日算法刷题计划Day12 5.21:leetcode不定长滑动窗口求最短/最长3道题,,用时1h40min(有点长了)

求最短/最小 一般题目都有「至少」的要求。 想窗口成立的条件&#xff0c;right右移增强条件&#xff0c;然后while循环left右移最终破坏条件 模版套路 在while循环内更新答案 class Solution { public:int minSubArrayLen(int target, vector<int>& nums) {int …...

JUC高并发编程

1. JUC概述 1.1 什么是JUC JUC时java.util.concurrent工具包的简称。这是一个处理线程的工具包&#xff0c;JDK1.5开始出现的。 1.2 进程和线程的概念 1.2.1 进程与线程 打开一个软件&#xff0c;就开启了一个进程&#xff0c;一个进程会包括很多个线程&#xff0c;线程是…...

算法--js--电话号码的字母组合

题&#xff1a;给定一个仅包含数字 2-9 的字符串&#xff0c;返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下&#xff08;与电话按键相同&#xff09;。注意 1 不对应任何字母。 function letterCombinations (digits){if (!digits.length)…...

数据库blog4_数据库软件的设计方法与实际架构

&#x1f33f;数据库的设计 由上一章可以得出数据库着重关注数据的逻辑结构和存储结构。即这是数据库设计的核心&#xff0c;但详细的设计结构也要研究。以下是介绍 &#x1f342;数据库架构思路 ● 数据库本身 数据(Data) 数据&#xff1a;数据库中存储的实际信息,是用户存储…...

Kubernetes中runnable接口的深度解析与应用

在 Kubernetes 或其他 Go 项目中&#xff0c;runnable 接口定义了一个通用的运行契约&#xff0c;允许不同类型的组件通过统一的接口启动和管理生命周期。以下是详细解析&#xff1a; 1. 接口定义分析 type runnable interface {RunWithContext(ctx context.Context) error }关…...

curl: (35) Peer reports incompatible or unsupported protocol version.

这个错误信息表明在使用 curl 命令时遇到了 TLS 协议版本不兼容的问题。这通常是因为 curl 和服务器之间在协商 TLS 协议版本时出现了问题。在 CentOS 7 中&#xff0c;你可以尝试以下解决方案&#xff1a; 一、使用--tlsv1.2选项 尝试在 curl 命令中添加 --tlsv1.2 选项&…...

算法竞赛板子

算法竞赛板子 目录 1. ST表_区间最值_gcd_按位与_按位或 2. 树状数组 3. 快读 4. 带权并查集 5. 欧拉筛 6. 组合数 7. lucas定理求组合数 8. 离散化 9. 线形基 10. 主席树 11. 约瑟夫环 12. tarjan 求静态LCA 13. tarjan 求无向图割点 14. tarjan 求无向图割点后的连通块 15.…...

Vulkan 动态渲染

前言 开发环境&#xff1a;Vulkan 1.3.2 Vulkan SDK VS 2022。语言 C vulkan.hpp。依赖vk-bootstrap&#xff0c;SDL3。 很久以前学Vulkan学得不彻底&#xff0c;写引擎的时候才发现那么困难&#xff0c;于是重新回来巩固一下Vulkan基础。并发现了很多小细节大学问。 动态渲…...

【亲测有效】Ubuntu22.04安装黑屏重启进入系统卡死

一&#xff1a;进入U盘安装引导时黑屏 问题描述&#xff1a;选择 ‘try or install ubuntu’ &#xff0c;开始安装&#xff0c;出现黑屏。 解决方案&#xff1a; 1.安装时&#xff0c;先选择" try or install ubuntu", 此时不要按enter&#xff0c;按"e&quo…...

wps编辑技巧

1、编辑模式 2、图片提取方法&#xff1a;右键保存图片 可以直接右键保存下来看看是否是原始图&#xff0c;如果歪着的图&#xff0c;可能保存下来是正的&#xff0c;直接保存试下 3、加批注...

磁盘分区与挂载——笔记

1.磁盘分区 磁盘分区是将物理磁盘划分为多个逻辑区域的过程。每个分区可视为独立的存储单元&#xff0c;拥有独立的文件系统&#xff0c;可安装不同操作系统或存放不同类型数据。例如&#xff0c;将硬盘分为系统盘&#xff08;存放操作系统&#xff09;、数据盘&#xff08;存…...

安卓基础(代码解析)

Build.VERSION.SDK_INT > Build.VERSION_CODES.M && !Settings.canDrawOverlays(this) Build.VERSION.SDK_INT > Build.VERSION_CODES.M Build.VERSION.SDK_INT&#xff1a;获取当前Android系统的API版本号&#xff0c;每个Android版本都有一个对应的API版本号…...

基于Android的XX校园交流APP

开发语言&#xff1a;Java框架&#xff1a;ssmAndroidJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7数据库工具&#xff1a;Navicat12开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;Maven3.3.9 系统展示 APP登录 APP首页…...

tshark的使用技巧(wireshark的命令行,类似tcpdump):转换格式,设置filter

tshark的使用技巧&#xff08;wireshark的命令行&#xff0c;类似tcpdump&#xff09;&#xff1a;转换格式&#xff0c;设置filter tshark一般在 C:\Program Files\Wireshark 使用管理员权限 打开cmd tshark -D 列出支持抓包的接口&#xff1a; c:\Program Files\Wiresh…...

TCP全连接和tcpdump抓包实现

1.全连接队列 listen函数的第二个参数backlog1&#xff0c;就是TCP全连接队列的长度。 客服端进行连接进入established状态后&#xff0c;服务器如果处于忙碌状态没有调用accept函数将连接取走&#xff0c;这个连接就会呆在TCP全连接队列中&#xff0c;直到上层调用函数accep…...

Windows安装Jenkins Jenkins打包部署

1、 start.cmd echo off title jenkins SET JENKINS_HOMED:\tools\Jenkins\home SET JAVA_HOMED:\developtools\jdk-11.0.8 D:\developtools\jdk-11.0.8\bin\java.exe -jar D:\tools\Jenkins\jenkins.war --httpPort8089 pause执行start.cmd 报错&#xff1a;是因为原来jdk8…...

目标检测:YOLO 模型详解

目录 一、YOLO&#xff08;You Only Look Once&#xff09;模型讲解 YOLOv1 YOLOv2 (YOLO9000) YOLOv3 YOLOv4 YOLOv5 YOLOv6 YOLOv7 YOLOv8 YOLOv9 YOLOv10 YOLOv11 YOLOv12 其他变体&#xff1a;PP-YOLO 二、YOLO 模型的 Backbone&#xff1a;Focus 结构 三、…...

85本适合AI入门的人工智能书籍合集免费资源

宝藏资源&#xff01;分享85本适合AI初学者入门人工智能的书籍合集给大家下载&#xff0c;都是epub格式的&#xff0c;方便大家阅读&#xff0c;文末给大家提供免费下载方式&#xff0c;主要包括如下电子书&#xff1a; Julia机器学习核心编程&#xff1a;人人可用的高性能科学…...

Zabbix开源监控的全面详解!

一、zabbix的基本概述 zabbix&#xff0c;这款企业级监控软件&#xff0c;能全方位监控各类网络参数&#xff0c;确保企业服务架构的安全稳定运行。它提供了灵活多样的告警机制&#xff0c;帮助运维人员迅速发现并解决问题。此外&#xff0c;zabbix还具备分布式监控功能&#…...

[杂学笔记]浏览器多进程与多线程架构、wstring类型、哈希表、红黑树与哈希表的对比、C++标准库Random类

目录 1. 浏览器多进程与多线程架构 2. wstring类型 3. 哈希表 4. 红黑树与哈希表的对比 5. C标准库Random类 1. 浏览器多进程与多线程架构 现代的浏览器&#xff08;如Chrome&#xff09;采用的是多进程与多线程结合的架构设计的。 多进程机制&#xff1a;Browser主进程用…...

AI+MCP 自动发布小红书笔记

分享一个超赞的效率工具—小红书MCP发布器&#xff08;xhs-mcp-server&#xff09;&#xff0c;让你轻松实现AI内容一键发布到小红书&#xff01; Cursor配置 在 Cursor 的 Cursor Settings 中找到 MCP&#xff0c;点击右侧上方的 Add new global MCP server 按钮&#xff0c…...

02_redis分布式锁原理

文章目录 一、redis如何实现分布式锁1. 使用 SETNX 命令2. 设置过期时间3. 释放锁4. 注意事项5. 示例代码 二、Java中分布式锁如何设置超时时间1. Redis分布式锁2. 基于Zookeeper的分布式锁3. 基于数据库的分布式锁注意事项 一、redis如何实现分布式锁 Redis 实现分布式锁是一…...

07SpringMVC底层形象解析

目录 一、基于餐厅比喻的代码示例 &#xff0c;帮助你理解各组件间的协作关系 1. DispatcherServlet 配置&#xff08;服务员&#xff09; 2. HandlerMapping 配置&#xff08;菜单索引&#xff09; 3. Controller 实现&#xff08;厨师&#xff09; 4. Service 层&#x…...

jvm调优以及常见jvm问题解决等

1、通过top命令查询异常的进程 top 2、通过 使用top -Hp<PID>命令查看该进程内各个线程的CPU占用情况&#xff1a; top -Hp PID 记录下占用CPU较高的线程ID。 3、转换线程ID为十六进制 使用printf命令将线程ID 19664 转换为十六进制&#xff0c;结果为 0x4cd0&#xff1…...

深入理解万维网:URL、HTTP与HTML

深入理解万维网&#xff1a;URL、HTTP与HTML 统一资源定位符&#xff08;URL&#xff09; 1.1 什么是URL&#xff1f; 统一资源定位符URL&#xff08;Uniform Resource Locator&#xff09;是万维网上用于标识和定位各种文档的标准方法&#xff0c;它使每个资源在互联网范围内…...

RPC 协议详解、案例分析与应用场景

一、RPC 协议原理详解 RPC 协议的核心目标是让开发者像调用本地函数一样调用远程服务&#xff0c;其实现过程涉及多个关键组件与流程。 &#xff08;一&#xff09;核心组件 客户端&#xff08;Client&#xff09;&#xff1a;发起远程过程调用的一方&#xff0c;它并不关心调…...

唯创安全优化纸业车间安全环境:门口盲区预警报警器的应用与成效

一、客户现场 客户主要从事于卷烟纸、成型纸、烟草制造业用纸及其他特定用途纸类制品的加工、生产与销售。在其厂区内&#xff0c;叉车频繁作业&#xff0c;车间环境复杂。经实地查看&#xff0c;发现几大安全隐患&#xff1a; 门口拐角隐患&#xff1a;门口拐角处因卷帘门阻…...

解决dedecms织梦系统{dede:arclist keyword=‘动态获取关键词‘}只生效一次

当我们通过{dede:arclist keyword关键词}来调用文章列表时&#xff0c;你会发现只在其中一个栏目里生效&#xff0c;在其他栏目&#xff0c;仍然显示上一次的关键词。 原因是由于arclist的缓存导致的。 只需修改/include/taglib/arclist.lib.php文件&#xff0c;大概在384行&a…...

高级学习算法(神经网络 决策树)

目录 神经网络 (Neural networks)神经网络的介绍需求预测 (Demand Prediction)例子&#xff1a;图像识别人脸识别&#xff08;Face recognition&#xff09;汽车分类&#xff08;Car classification&#xff09; 神经网络中的层更复杂的神经网络推理&#xff1a;前向传播 (Forw…...

labview硬件部分——温度测量

硬件连接&#xff1a; &#xff08;1&#xff09;温度测量的电压采集&#xff1a;&#xff08;电压的单位为V&#xff09; 温度采集程序图&#xff1a; 运行结果&#xff1a; 我们可以在显示控件中&#xff0c;看到温度采集的电压值 &#xff08;2&#xff09;温度采集的电压…...

labview——控制继电器模块

高电平——5V 超过一定的电压值&#xff0c;LED打开、继电器打开。&#xff08;结合模拟电压采集与LED控制&#xff09; 控制继电器是数字信号控制。程序与LED控制一致。 &#xff08;1&#xff09;我们先来看看继电器的控制 使用布尔按键&#xff0c;按键按下时&#xff0…...

ArcGIS Pro 3.4 二次开发 - 核心主机

环境&#xff1a;ArcGIS Pro SDK 3.4 .NET 8 文章目录 核心主机1 核心主机1.1 初始化核心主机 核心主机 1 核心主机 1.1 初始化核心主机 using ArcGIS.Core.Data; //必须引用 ArcGIS.CoreHost.dll using ArcGIS.Core.Hosting; class Program { //应用程序入口点必须包含 [S…...

IntelliJ IDEA 接入 DeepSeek帮助你更好编码

适配 IDEA 版本为了更好的使用插件&#xff0c;这里推荐使用一个代理插件——CodeGPT&#xff0c;CodeGPT是一个AI驱动的代码助手&#xff0c;旨在帮助开发者进行各种编程活动&#xff0c;它是GitHub Copilot、AI Assistant、Codiumate和其他JetBrains插件的强大替代品。安装之…...

如何使用Java生成pdf报告

文章目录 一、环境准备与Maven依赖说明二、核心代码解析1. 基础文档创建2. 中文字体处理3. 复杂表格创建4. 图片插入 三、完整代码示例四、最终效果 这篇主要说一下如何使用Java生成pdf&#xff0c;包括标题&#xff0c;文字&#xff0c;图片&#xff0c;表格的插入和调整等相关…...

Memory模块是agent的一个关键组件

Memory 2.6.1 简介 在Agent系统中&#xff0c;Memory模块是一个关键的组件&#xff0c;其主要功能是存储和检索信息&#xff0c;以支持agent的学习和决策过程。该模块模拟人类记忆的某些特征&#xff0c;能够动态地保存和更新信息&#xff0c;使agent能够利用过去的经验进行推…...

初级社会工作者考试难点总结

初级社会工作者考试难点总结 初级社会工作者&#xff08;助理社会工作师&#xff09;考试是进入社会工作行业的入门级资格认证&#xff0c;考试内容涵盖社会工作理论、实务技能及相关法规政策。虽然考试难度相对适中&#xff0c;但部分知识点和题型仍让考生感到棘手。本文总结…...

mapbox进阶,手写放大镜功能

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:mapbox 从入门到精通 文章目录 一、🍀前言1.1 ☘️mapboxgl.Map 地图对象1.1 ☘️mapboxgl.Map style属性二、🍀手写放大镜功能1. ☘️实现思路2. ☘️…...

EasyRTC嵌入式音视频通信SDK一对一音视频通信,打造远程办公/医疗/教育等场景解决方案

一、方案概述​ 数字技术发展促使在线教育、远程医疗等行业对一对一实时音视频通信需求激增。传统方式存在低延迟、高画质及多场景适配不足等问题&#xff0c;而EasyRTC凭借音视频处理、高效信令交互与智能网络适配技术&#xff0c;打造稳定低延迟通信&#xff0c;满足基础通信…...

微信小程序中,解决lottie动画在真机不显示的问题

api部分 export function getRainInfo() {return onlineRequest({url: /ball/recruit/getRainInfo,method: get}); }data存储json数据 data&#xff1a;{rainJson:{} }onLoad方法获取json数据 onLoad(options) {let that thisgetRainInfo().then((res)>{that.setData({r…...

基于Flink的数据中台管理平台

基于Flink做的数据中台工程项目。数据从source到clickhouse全流程的验证。集成元数据管、数据资产、数据发现功能&#xff0c;自主管理元数据变更&#xff0c;集成元数据版本管理。 同时&#xff0c;对整个大数据集群使用到的组件或者是工具进行管理。比如nacos、kafka、zookee…...

Flink-Yarn运行模式

Yarn的部署过程 Yarn上部署的过程是&#xff1a;客户端把Flink应用提交给Yarn的ResourceManager,Yarn的ResourceManager会向Yarn的NodeManager申请容器&#xff0c;在这些容器上&#xff0c;Flink会部署JobManager和TaskManager的实例&#xff0c;从而启动集群&#xff0c;Flin…...

Java---斐波那契那数列

一、斐波那契数列的定义与起源 1. 数学定义 斐波那契数列&#xff08;Fibonacci Sequence&#xff09;又称黄金分割数列&#xff0c;其定义为&#xff1a; 初始项&#xff1a; F(0)0F(1)1 递推公式&#xff1a; 当 n≥2 时&#xff0c;F(n)F(n−1)F(n−2) 前 10 项数列&…...

通过AIoTedge或ThingsKit物联网平台内置的Node-RED读取OPC-UA

《通过AIoTedge或ThingsKit物联网平台内置的Node-RED读取OPC-UA》 一、引言 随着工业物联网&#xff08;IIoT&#xff09;的快速发展&#xff0c;设备之间的互联互通变得至关重要。OPC-UA&#xff08;Open Platform Communications Unified Architecture&#xff09;作为一种…...

《大模型开源与闭源的深度博弈:科技新生态下的权衡与抉择》

开源智能体大模型的核心魅力&#xff0c;在于它构建起了一个全球开发者共同参与的超级协作网络。想象一下&#xff0c;来自世界各个角落的开发者、研究者&#xff0c;无论身处繁华都市还是偏远小镇&#xff0c;只要心怀对技术的热爱与追求&#xff0c;就能加入到这场技术狂欢中…...