在Java中调企微机器人发送消息到群里
目录
如何使用群机器人
消息类型及数据格式
文本类型
markdown类型
图片类型
图文类型
文件类型
模版卡片类型
文本通知模版卡片
图文展示模版卡片
消息发送频率限制
文件上传接口
Java 执行语句
String url = "webhook的Url";
String result = HttpRequest.post(url)
.header("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36 Edg/118.0.2088.76")
.header("Content-Type", "application/json")
.body(json)
.execute().body();
摘自企微机器人开发说明
如何使用群机器人
- 在终端某个群组添加机器人之后,创建者可以在机器人详情页看的该机器人特有的webhookurl。开发者可以按以下说明a向这个地址发起HTTP POST 请求,即可实现给该群组发送消息。下面举个简单的例子.
假设webhook是:https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=693a91f6-7xxx-4bc4-97a0-0ec2sifa5aaa
特别特别要注意:一定要保护好机器人的webhook地址,避免泄漏!不要分享到github、博客等可被公开查阅的地方,否则坏人就可以用你的机器人来发垃圾消息了。
以下是用curl工具往群组推送文本消息的示例(注意要将url替换成你的机器人webhook地址,content必须是utf8编码):
curl 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=693axxx6-7aoc-4bc4-97a0-0ec2sifa5aaa' \-H 'Content-Type: application/json' \-d '{"msgtype": "text","text": {"content": "hello world"}}'
- 当前自定义机器人支持文本(text)、markdown(markdown)、图片(image)、图文(news)四种消息类型。
- 机器人的text/markdown类型消息支持在content中使用<@userid>扩展语法来@群成员
消息类型及数据格式
文本类型
{"msgtype": "text","text": {"content": "广州今日天气:29度,大部分多云,降雨概率:60%","mentioned_list":["wangqing","@all"],"mentioned_mobile_list":["13800001111","@all"]}}
| 参数 | 是否必填 | 说明 |
|---|---|---|
| msgtype | 是 | 消息类型,此时固定为text |
| content | 是 | 文本内容,最长不超过2048个字节,必须是utf8编码 |
| mentioned_list | 否 | userid的列表,提醒群中的指定成员(@某个成员),@all表示提醒所有人,如果开发者获取不到userid,可以使用mentioned_mobile_list |
| mentioned_mobile_list | 否 | 手机号列表,提醒手机号对应的群成员(@某个成员),@all表示提醒所有人 |

markdown类型
{"msgtype": "markdown","markdown": {"content": "实时新增用户反馈<font color=\"warning\">132例</font>,请相关同事注意。\n>类型:<font color=\"comment\">用户反馈</font>>普通用户反馈:<font color=\"comment\">117例</font>>VIP用户反馈:<font color=\"comment\">15例</font>"}}
| 参数 | 是否必填 | 说明 |
|---|---|---|
| msgtype | 是 | 消息类型,此时固定为markdown |
| content | 是 | markdown内容,最长不超过4096个字节,必须是utf8编码 |

目前支持的markdown语法是如下的子集:
- 标题 (支持1至6级标题,注意#与文字中间要有空格)
# 标题一## 标题二### 标题三#### 标题四##### 标题五###### 标题六
- 加粗
**bold**
- 链接
[这是一个链接](http://work.weixin.qq.com/api/doc)
- 行内代码段(暂不支持跨行)
`code`
- 引用
> 引用文字
- 字体颜色(只支持3种内置颜色)
<font color="info">绿色</font><font color="comment">灰色</font><font color="warning">橙红色</font>
图片类型
{"msgtype": "image","image": {"base64": "DATA","md5": "MD5"}}
| 参数 | 是否必填 | 说明 |
|---|---|---|
| msgtype | 是 | 消息类型,此时固定为image |
| base64 | 是 | 图片内容的base64编码 |
| md5 | 是 | 图片内容(base64编码前)的md5值 |
注:图片(base64编码前)最大不能超过2M,支持JPG,PNG格式

图文类型
{"msgtype": "news","news": {"articles" : [{"title" : "中秋节礼品领取","description" : "今年中秋节公司有豪礼相送","url" : "www.qq.com","picurl" : "http://res.mail.qq.com/node/ww/wwopenmng/images/independent/doc/test_pic_msg1.png"}]}}
| 参数 | 是否必填 | 说明 |
|---|---|---|
| msgtype | 是 | 消息类型,此时固定为news |
| articles | 是 | 图文消息,一个图文消息支持1到8条图文 |
| title | 是 | 标题,不超过128个字节,超过会自动截断 |
| description | 否 | 描述,不超过512个字节,超过会自动截断 |
| url | 是 | 点击后跳转的链接。 |
| picurl | 否 | 图文消息的图片链接,支持JPG、PNG格式,较好的效果为大图 1068*455,小图150*150。 |

文件类型
{"msgtype": "file","file": {"media_id": "3a8asd892asd8asd"}}
| 参数 | 是否必填 | 说明 |
|---|---|---|
| msgtype | 是 | 消息类型,此时固定为file |
| media_id | 是 | 文件id,通过下文的文件上传接口获取 |

模版卡片类型
文本通知模版卡片

{"msgtype":"template_card","template_card":{"card_type":"text_notice","source":{"icon_url":"https://wework.qpic.cn/wwpic/252813_jOfDHtcISzuodLa_1629280209/0","desc":"企业微信","desc_color":0},"main_title":{"title":"欢迎使用企业微信","desc":"您的好友正在邀请您加入企业微信"},"emphasis_content":{"title":"100","desc":"数据含义"},"quote_area":{"type":1,"url":"https://work.weixin.qq.com/?from=openApi","appid":"APPID","pagepath":"PAGEPATH","title":"引用文本标题","quote_text":"Jack:企业微信真的很好用~\nBalian:超级好的一款软件!"},"sub_title_text":"下载企业微信还能抢红包!","horizontal_content_list":[{"keyname":"邀请人","value":"张三"},{"keyname":"企微官网","value":"点击访问","type":1,"url":"https://work.weixin.qq.com/?from=openApi"},{"keyname":"企微下载","value":"企业微信.apk","type":2,"media_id":"MEDIAID"}],"jump_list":[{"type":1,"url":"https://work.weixin.qq.com/?from=openApi","title":"企业微信官网"},{"type":2,"appid":"APPID","pagepath":"PAGEPATH","title":"跳转小程序"}],"card_action":{"type":1,"url":"https://work.weixin.qq.com/?from=openApi","appid":"APPID","pagepath":"PAGEPATH"}}}
请求参数
| 参数 | 类型 | 必须 | 说明 |
|---|---|---|---|
| msgtype | String | 是 | 消息类型,此时的消息类型固定为template_card |
| template_card | Object | 是 | 具体的模版卡片参数 |
template_card的参数说明
| 参数 | 类型 | 必须 | 说明 |
|---|---|---|---|
| card_type | String | 是 | 模版卡片的模版类型,文本通知模版卡片的类型为text_notice |
| source | Object | 否 | 卡片来源样式信息,不需要来源样式可不填写 |
| source.icon_url | String | 否 | 来源图片的url |
| source.desc | String | 否 | 来源图片的描述,建议不超过13个字 |
| source.desc_color | Int | 否 | 来源文字的颜色,目前支持:0(默认) 灰色,1 黑色,2 红色,3 绿色 |
| main_title | Object | 是 | 模版卡片的主要内容,包括一级标题和标题辅助信息 |
| main_title.title | String | 否 | 一级标题,建议不超过26个字。模版卡片主要内容的一级标题main_title.title和二级普通文本sub_title_text必须有一项填写 |
| main_title.desc | String | 否 | 标题辅助信息,建议不超过30个字 |
| emphasis_content | Object | 否 | 关键数据样式 |
| emphasis_content.title | String | 否 | 关键数据样式的数据内容,建议不超过10个字 |
| emphasis_content.desc | String | 否 | 关键数据样式的数据描述内容,建议不超过15个字 |
| quote_area | Object | 否 | 引用文献样式,建议不与关键数据共用 |
| quote_area.type | Int | 否 | 引用文献样式区域点击事件,0或不填代表没有点击事件,1 代表跳转url,2 代表跳转小程序 |
| quote_area.url | String | 否 | 点击跳转的url,quote_area.type是1时必填 |
| quote_area.appid | String | 否 | 点击跳转的小程序的appid,quote_area.type是2时必填 |
| quote_area.pagepath | String | 否 | 点击跳转的小程序的pagepath,quote_area.type是2时选填 |
| quote_area.title | String | 否 | 引用文献样式的标题 |
| quote_area.quote_text | String | 否 | 引用文献样式的引用文案 |
| sub_title_text | String | 否 | 二级普通文本,建议不超过112个字。模版卡片主要内容的一级标题main_title.title和二级普通文本sub_title_text必须有一项填写 |
| horizontal_content_list | Object[] | 否 | 二级标题+文本列表,该字段可为空数组,但有数据的话需确认对应字段是否必填,列表长度不超过6 |
| horizontal_content_list.type | Int | 否 | 链接类型,0或不填代表是普通文本,1 代表跳转url,2 代表下载附件,3 代表@员工 |
| horizontal_content_list.keyname | String | 是 | 二级标题,建议不超过5个字 |
| horizontal_content_list.value | String | 否 | 二级文本,如果horizontal_content_list.type是2,该字段代表文件名称(要包含文件类型),建议不超过26个字 |
| horizontal_content_list.url | String | 否 | 链接跳转的url,horizontal_content_list.type是1时必填 |
| horizontal_content_list.media_id | String | 否 | 附件的media_id,horizontal_content_list.type是2时必填 |
| horizontal_content_list.userid | String | 否 | 被@的成员的userid,horizontal_content_list.type是3时必填 |
| jump_list | Object[] | 否 | 跳转指引样式的列表,该字段可为空数组,但有数据的话需确认对应字段是否必填,列表长度不超过3 |
| jump_list.type | Int | 否 | 跳转链接类型,0或不填代表不是链接,1 代表跳转url,2 代表跳转小程序 |
| jump_list.title | String | 是 | 跳转链接样式的文案内容,建议不超过13个字 |
| jump_list.url | String | 否 | 跳转链接的url,jump_list.type是1时必填 |
| jump_list.appid | String | 否 | 跳转链接的小程序的appid,jump_list.type是2时必填 |
| jump_list.pagepath | String | 否 | 跳转链接的小程序的pagepath,jump_list.type是2时选填 |
| card_action | Object | 是 | 整体卡片的点击跳转事件,text_notice模版卡片中该字段为必填项 |
| card_action.type | Int | 是 | 卡片跳转类型,1 代表跳转url,2 代表打开小程序。text_notice模版卡片中该字段取值范围为[1,2] |
| card_action.url | String | 否 | 跳转事件的url,card_action.type是1时必填 |
| card_action.appid | String | 否 | 跳转事件的小程序的appid,card_action.type是2时必填 |
| card_action.pagepath | String | 否 | 跳转事件的小程序的pagepath,card_action.type是2时选填 |
图文展示模版卡片

{"msgtype":"template_card","template_card":{"card_type":"news_notice","source":{"icon_url":"https://wework.qpic.cn/wwpic/252813_jOfDHtcISzuodLa_1629280209/0","desc":"企业微信","desc_color":0},"main_title":{"title":"欢迎使用企业微信","desc":"您的好友正在邀请您加入企业微信"},"card_image":{"url":"https://wework.qpic.cn/wwpic/354393_4zpkKXd7SrGMvfg_1629280616/0","aspect_ratio":2.25},"image_text_area":{"type":1,"url":"https://work.weixin.qq.com","title":"欢迎使用企业微信","desc":"您的好友正在邀请您加入企业微信","image_url":"https://wework.qpic.cn/wwpic/354393_4zpkKXd7SrGMvfg_1629280616/0"},"quote_area":{"type":1,"url":"https://work.weixin.qq.com/?from=openApi","appid":"APPID","pagepath":"PAGEPATH","title":"引用文本标题","quote_text":"Jack:企业微信真的很好用~\nBalian:超级好的一款软件!"},"vertical_content_list":[{"title":"惊喜红包等你来拿","desc":"下载企业微信还能抢红包!"}],"horizontal_content_list":[{"keyname":"邀请人","value":"张三"},{"keyname":"企微官网","value":"点击访问","type":1,"url":"https://work.weixin.qq.com/?from=openApi"},{"keyname":"企微下载","value":"企业微信.apk","type":2,"media_id":"MEDIAID"}],"jump_list":[{"type":1,"url":"https://work.weixin.qq.com/?from=openApi","title":"企业微信官网"},{"type":2,"appid":"APPID","pagepath":"PAGEPATH","title":"跳转小程序"}],"card_action":{"type":1,"url":"https://work.weixin.qq.com/?from=openApi","appid":"APPID","pagepath":"PAGEPATH"}}}
请求参数
| 参数 | 类型 | 必须 | 说明 |
|---|---|---|---|
| msgtype | String | 是 | 模版卡片的消息类型为template_card |
| template_card | Object | 是 | 具体的模版卡片参数 |
template_card的参数说明
| 参数 | 类型 | 必须 | 说明 |
|---|---|---|---|
| card_type | String | 是 | 模版卡片的模版类型,图文展示模版卡片的类型为news_notice |
| source | Object | 否 | 卡片来源样式信息,不需要来源样式可不填写 |
| source.icon_url | String | 否 | 来源图片的url |
| source.desc | String | 否 | 来源图片的描述,建议不超过13个字 |
| source.desc_color | Int | 否 | 来源文字的颜色,目前支持:0(默认) 灰色,1 黑色,2 红色,3 绿色 |
| main_title | Object | 是 | 模版卡片的主要内容,包括一级标题和标题辅助信息 |
| main_title.title | String | 是 | 一级标题,建议不超过26个字 |
| main_title.desc | String | 否 | 标题辅助信息,建议不超过30个字 |
| card_image | Object | 是 | 图片样式 |
| card_image.url | String | 是 | 图片的url |
| card_image.aspect_ratio | Float | 否 | 图片的宽高比,宽高比要小于2.25,大于1.3,不填该参数默认1.3 |
| image_text_area | Object | 否 | 左图右文样式 |
| image_text_area.type | Int | 否 | 左图右文样式区域点击事件,0或不填代表没有点击事件,1 代表跳转url,2 代表跳转小程序 |
| image_text_area.url | String | 否 | 点击跳转的url,image_text_area.type是1时必填 |
| image_text_area.appid | String | 否 | 点击跳转的小程序的appid,必须是与当前应用关联的小程序,image_text_area.type是2时必填 |
| image_text_area.pagepath | String | 否 | 点击跳转的小程序的pagepath,image_text_area.type是2时选填 |
| image_text_area.title | String | 否 | 左图右文样式的标题 |
| image_text_area.desc | String | 否 | 左图右文样式的描述 |
| image_text_area.image_url | String | 是 | 左图右文样式的图片url |
| quote_area | Object | 否 | 引用文献样式,建议不与关键数据共用 |
| quote_area.type | Int | 否 | 引用文献样式区域点击事件,0或不填代表没有点击事件,1 代表跳转url,2 代表跳转小程序 |
| quote_area.url | String | 否 | 点击跳转的url,quote_area.type是1时必填 |
| quote_area.appid | String | 否 | 点击跳转的小程序的appid,quote_area.type是2时必填 |
| quote_area.pagepath | String | 否 | 点击跳转的小程序的pagepath,quote_area.type是2时选填 |
| quote_area.title | String | 否 | 引用文献样式的标题 |
| quote_area.quote_text | String | 否 | 引用文献样式的引用文案 |
| vertical_content_list | Object[] | 否 | 卡片二级垂直内容,该字段可为空数组,但有数据的话需确认对应字段是否必填,列表长度不超过4 |
| vertical_content_list.title | String | 是 | 卡片二级标题,建议不超过26个字 |
| vertical_content_list.desc | String | 否 | 二级普通文本,建议不超过112个字 |
| horizontal_content_list | Object[] | 否 | 二级标题+文本列表,该字段可为空数组,但有数据的话需确认对应字段是否必填,列表长度不超过6 |
| horizontal_content_list.type | Int | 否 | 模版卡片的二级标题信息内容支持的类型,1是url,2是文件附件 |
| horizontal_content_list.keyname | String | 是 | 二级标题,建议不超过5个字 |
| horizontal_content_list.value | String | 否 | 二级文本,如果horizontal_content_list.type是2,该字段代表文件名称(要包含文件类型),建议不超过26个字 |
| horizontal_content_list.url | String | 否 | 链接跳转的url,horizontal_content_list.type是1时必填 |
| horizontal_content_list.media_id | String | 否 | 附件的media_id,horizontal_content_list.type是2时必填 |
| jump_list | Object[] | 否 | 跳转指引样式的列表,该字段可为空数组,但有数据的话需确认对应字段是否必填,列表长度不超过3 |
| jump_list.type | Int | 否 | 跳转链接类型,0或不填代表不是链接,1 代表跳转url,2 代表跳转小程序 |
| jump_list.title | String | 是 | 跳转链接样式的文案内容,建议不超过13个字 |
| jump_list.url | String | 否 | 跳转链接的url,jump_list.type是1时必填 |
| jump_list.appid | String | 否 | 跳转链接的小程序的appid,jump_list.type是2时必填 |
| jump_list.pagepath | String | 否 | 跳转链接的小程序的pagepath,jump_list.type是2时选填 |
| card_action | Object | 是 | 整体卡片的点击跳转事件,news_notice模版卡片中该字段为必填项 |
| card_action.type | Int | 是 | 卡片跳转类型,1 代表跳转url,2 代表打开小程序。news_notice模版卡片中该字段取值范围为[1,2] |
| card_action.url | String | 否 | 跳转事件的url,card_action.type是1时必填 |
| card_action.appid | String | 否 | 跳转事件的小程序的appid,card_action.type是2时必填 |
| card_action.pagepath | String | 否 | 跳转事件的小程序的pagepath,card_action.type是2时选填 |
消息发送频率限制
每个机器人发送的消息不能超过20条/分钟。
文件上传接口
素材上传得到media_id,该media_id仅三天内有效
media_id只能是对应上传文件的机器人可以使用
请求方式:POST(HTTPS)
请求地址:https://qyapi.weixin.qq.com/cgi-bin/webhook/upload_media?key=KEY&type=TYPE
使用multipart/form-data POST上传文件, 文件标识名为”media”
参数说明:
| 参数 | 必须 | 说明 |
|---|---|---|
| key | 是 | 调用接口凭证, 机器人webhookurl中的key参数 |
| type | 是 | 固定传file |
POST的请求包中,form-data中媒体文件标识,应包含有 filename、filelength、content-type等信息
filename标识文件展示的名称。比如,使用该media_id发消息时,展示的文件名由该字段控制
请求示例:
POST https://qyapi.weixin.qq.com/cgi-bin/webhook/upload_media?key=693a91f6-7xxx-4bc4-97a0-0ec2sifa5aaa&type=file HTTP/1.1Content-Type: multipart/form-data; boundary=-------------------------acebdf13572468Content-Length: 220---------------------------acebdf13572468Content-Disposition: form-data; name="media";filename="wework.txt"; filelength=6Content-Type: application/octet-streammytext---------------------------acebdf13572468--
返回数据:
{"errcode": 0,"errmsg": "ok","type": "file","media_id": "1G6nrLmr5EC3MMb_-zK1dDdzmd0p7cNliYu9V5w7o8K0","created_at": "1380000000"}
参数说明:
| 参数 | 说明 |
|---|---|
| type | 媒体文件类型,分别有图片(image)、语音(voice)、视频(video),普通文件(file) |
| media_id | 媒体文件上传后获取的唯一标识,3天内有效 |
| created_at | 媒体文件上传时间戳 |
上传的文件限制:
- 要求文件大小在5B~20M之间
相关文章:
在Java中调企微机器人发送消息到群里
目录 如何使用群机器人 消息类型及数据格式 文本类型 markdown类型 图片类型 图文类型 文件类型 模版卡片类型 文本通知模版卡片 图文展示模版卡片 消息发送频率限制 文件上传接口 Java 执行语句 String url "webhook的Url"; String result HttpReque…...
鸿蒙开发(四)UIAbility和Page交互
通过上一篇的学习,相信大家对UIAbility已经有了初步的认知。在上篇中,我们最后实现了一个小demo,从一个UIAbility调起了另外一个UIAbility。当时我提到过,暂不实现比如点击EntryAbility中的控件去触发跳转,而是在Entry…...
K8s(七)四层代理Service
Service概述 Service在Kubernetes中提供了一种抽象的方式来公开应用程序的网络访问,并提供了负载均衡和服务发现等功能,使得应用程序在集群内外都能够可靠地进行访问。 每个Service都会自动关联一个对应的Endpoint。当创建一个Service时,Ku…...
鼎捷软件获评国家级智能制造“AAA级集成实施+AA级咨询设计”供应商
为贯彻落实《“十四五”智能制造发展规划》,健全智能制造系统解决方案供应商(以下简称“供应商”)分类分级体系,推动供应商规范有序发展,智能制造系统解决方案供应商联盟组织开展了供应商分类分级评定(第一批)工作,旨在遴选一批专…...
(循环依赖问题)学习spring的第九天
Bean实例的属性填充 Spring在属性注入时 , 分为如下几种情况 : 注入单向对象引用 : 如usersevice里注入userdao , userdao里没有注入其他属性 注入双向对象引用 : 如usersevice里注入userdao , userdao也注入usersevice属性 二 . 着重看循环依赖问题 (搞清原理即可) 问题提出…...
Kotlin的数据类
引言 我们在做项目中涉及到各种数据类的处理,很多很杂乱。难免一个人的知识点有盲点,所以想着做个整理。 定义 在平时的使用中,我们会用到一些类来保持一些数据或状态,我们习惯上成为bean或者entity,也有的定义为mod…...
PTA 7-13 统计工龄
给定公司N名员工的工龄,要求按工龄增序输出每个工龄段有多少员工。 输入格式: 输入首先给出正整数N(≤105),即员工总人数;随后给出N个整数,即每个员工的工龄,范围在[0, 50]。 输出格式: 按工…...
算法常用思路总结
思路 1. 求数组中最大最小值思路代码 2. 计算阶乘思路:代码: 3. 得到数字的每一位思路代码 4. 计算时间类型5. 最大公约数、最小公倍数6. 循环数组的思想题目:猴子选大王代码 补充经典例题1. 复试四则运算题目内容题解 2. 数列求和题目内容题…...
Leetcode 3016. Minimum Number of Pushes to Type Word II
Leetcode 3016. Minimum Number of Pushes to Type Word II 1. 解题思路2. 代码实现 题目链接:3016. Minimum Number of Pushes to Type Word II 1. 解题思路 这道题的话思路其实还是蛮简单的,显然我们的目的是要令对给定的word在键盘上敲击的次数最小…...
node.js如何将webp转jpg图片
在Node.js中,可以使用一些库来实现将WebP图像转换为JPEG。一个常用的库是sharp,它是一个快速、高效的图像处理库。以下是一个简单的Node.js脚本示例,演示如何使用sharp库将WebP转换为JPEG: 首先,确保已经安装了sharp库…...
达梦数据库 忘记 SYSDBA 密码 处理方法
DM 提供数据库身份验证模式、基于操作系统的身份验证模式、外部身份验证模式和 UKEY 身份验证模式来保护对数据库访问的安全。数据库身份验证模式需要利用数据库口令, 即在创建或修改用户时指定用户口令,用户在登录时输入对应口令进行身份验证;基于操作 …...
SpringBoot ES 重建 Mapping
SpringBoot ES 重建 Mapping 1 复制数据2 删除老索引3 重建索引4 复制回数据 1 复制数据 POST http://elastic:123456127.0.0.1:9200/_reindex{"source": {"index": "老索引名称"},"dest": {"index": "备份索引名称&q…...
【51单片机】矩阵按键
0、前言 参考:普中 51 单片机开发攻略 1、硬件 2、软件 main.c #include <reg52.h> #include <intrins.h> #include "delayms.h"typedef unsigned int u16; //对数据类型进行声明定义 typedef unsigned char u8; #define GPIO_KEY P1 #d…...
Redis- AOF刷盘策略
在Redis中,appendfsync everysec 是一个与持久化相关的配置选项,它属于 Redis 的 AOF(Append Only File)持久化策略的一部分。 Redis支持两种主要的数据持久化方式:RDB(快照)和AOF(…...
标量、向量、矩阵和张量的区别?
标量、向量、矩阵和张量是数学和物理学中常用的概念,它们在多维数据表示和处理中扮演着关键角色。下面是这些概念的基本区别: 标量(Scalar): -标量是单个数字,用于表示单一的量。 -它没有方向。 -在数学中࿰…...
【51单片机】动态数码管
0、前言 参考: 普中51单片机开发攻略–A2.pdf 1、数码管介绍 上一章我们主要是介绍一位数码管的内部结构及控制原理。下面我们再来介 绍下多位数码管及动态显示原理的相关知识。 1.1 多位数码管简介 2、74HC245 和 74HC138 芯片介绍 2.1 74HC245 芯片简介 2.2 7…...
Webpack5入门到原理22:提升打包构建速度
HotModuleReplacement 为什么 开发时我们修改了其中一个模块代码,Webpack 默认会将所有模块全部重新打包编译,速度很慢。 所以我们需要做到修改某个模块代码,就只有这个模块代码需要重新打包编译,其他模块不变,这样…...
EXCEL VBA获取幸运数字号码
EXCELVBA获取幸运数字号码 以下就是VBA幸运号码产生的程序,复制粘贴到VBA代码框即可运行 Option Base 1 Sub 幸运号码()Dim n As Integer, i As Integer, j As IntegerDim l() As Integern Application.InputBox("请输入需要产生幸运号码的数量:…...
【标准IO】fseek函数、ftell函数、fflush函数、getline函数
目录 fseekftellrewindfflushgetline 橙色 当你在文件中写入了10个字符后,又想把这10个字符读出来,该怎么做呢?因为有文件操作符指针的存在,此时该指针已经指在了这10个字符末尾,所以需要把该指针重定向,这…...
VSCODE使用CMAKE显示命令无法找到
背景:使用了code server,安装CMAKE和CMAKE TOOLS,但是通过ctrlshiftp打开命令面板,运行随便一个cmake指令,都出现了指令无法找到。具体为“命令"CMake: 配置"导致错误 (command ‘cmake.configure’ not fou…...
浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)
✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...
使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...
AI Agent与Agentic AI:原理、应用、挑战与未来展望
文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...
聊聊 Pulsar:Producer 源码解析
一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台,以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中,Producer(生产者) 是连接客户端应用与消息队列的第一步。生产者…...
Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
LLM基础1_语言模型如何处理文本
基于GitHub项目:https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken:OpenAI开发的专业"分词器" torch:Facebook开发的强力计算引擎,相当于超级计算器 理解词嵌入:给词语画"…...
IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)
文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...
CSS | transition 和 transform的用处和区别
省流总结: transform用于变换/变形,transition是动画控制器 transform 用来对元素进行变形,常见的操作如下,它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...
通过 Ansible 在 Windows 2022 上安装 IIS Web 服务器
拓扑结构 这是一个用于通过 Ansible 部署 IIS Web 服务器的实验室拓扑。 前提条件: 在被管理的节点上安装WinRm 准备一张自签名的证书 开放防火墙入站tcp 5985 5986端口 准备自签名证书 PS C:\Users\azureuser> $cert New-SelfSignedCertificate -DnsName &…...
热烈祝贺埃文科技正式加入可信数据空间发展联盟
2025年4月29日,在福州举办的第八届数字中国建设峰会“可信数据空间分论坛”上,可信数据空间发展联盟正式宣告成立。国家数据局党组书记、局长刘烈宏出席并致辞,强调该联盟是推进全国一体化数据市场建设的关键抓手。 郑州埃文科技有限公司&am…...
