【公众号开发】图像文字识别 · 模板消息推送 · 素材管理 · 带参数二维码的生成与事件的处理

【公众号开发】(4)

在这里插入图片描述

文章目录

  • 【公众号开发】(4)
    • 1. 图像文字识别功能
      • 1.1 百度AI图像文字识别接口申请
      • 1.2 查看文档学习如何调用百度AI
      • 1.3 程序开发
        • 1.3.1 导入依赖:
        • 1.3.2 公众号发来post请求格式
        • 1.3.3 对image类型的消息做好分支处理
        • 1.3.4 访问百度AI的必要参数配置
        • 1.3.5 访问百度AI(根据文档写就完事了)
        • 1.3.6 封装回复消息
        • 1.3.7 测试
    • 2. 模板消息
      • 2.1 设置所属的行业
      • 2.2 获取设置的行业消息
      • 2.3 发送模板消息
        • 2.3.1 获得模板id
        • 2.3.2 访问接口发送模板消息
    • 3. 素材管理
      • 3.1 上传文件资源方法
      • 3.2 发送临时素材
      • 3.3 获得临时素材
    • 4. 二维码的生成与获取信息
      • 4.1 生成带参数二维码
      • 4.2 获取二维码
      • 4.3 分支处理扫描二维码触发的事件

【公众号开发】(4)

1. 图像文字识别功能

我们的需求就是

实现读取图片文本信息

在这里插入图片描述

实现原理:

在这里插入图片描述

发送图片给公众号,开发者服务器会收到这个消息:

A

包含图片url:

1.1 百度AI图像文字识别接口申请

我们当然很难自己去实现一个图片识别功能,我们要借助强大的已有接口:

在这里插入图片描述

我们现在要实现的功能是图片的文字识别功能,首先我们在百度搜索一下“百度AI”:

在这里插入图片描述

百度AI开放平台给我们提供了很多人工智能相关的接口让我们去直接使用

在这里插入图片描述

登录一下(顺便实名认证):

在这里插入图片描述

找到满足我们需求,我们要用到的接口:

在这里插入图片描述

在这里插入图片描述

点击技术文档可以进行学习:文字识别OCR (baidu.com)

点击立即使用/在控制台前往文字识别:

在这里插入图片描述

创建一个应用:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

我们不经常使用,所以就开通一下,来练习一下,按量计费,购买的话可以访问很久很多次,但是我觉得没啥必要

  • 百度智能云-管理中心 (baidu.com)

在这里插入图片描述

在列表中查看信息,这些信息等一下我们的程序里是要用到的,有了这些信息,百度才允许你访问接口

在这里插入图片描述

1.2 查看文档学习如何调用百度AI

进入文档:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

快速入门:

  • 快速入门 - 文字识别OCR (baidu.com)

在里面我们可以查看如何实现这个功能

1.3 程序开发

1.3.1 导入依赖:

Maven Central: Search (sonatype.com)

在这里插入图片描述

<dependency><groupId>com.baidu.aip</groupId><artifactId>java-sdk</artifactId><version>4.16.16</version>
</dependency>

tips:版本冲突运行不了的话,可以这样排除

在这里插入图片描述

<exclusions><exclusion><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId></exclusion><exclusion><groupId>org.slf4j</groupId><artifactId>slf4j-simple</artifactId></exclusion>
</exclusions>
1.3.2 公众号发来post请求格式

基础消息能力 / 接收普通消息 (qq.com)

在这里插入图片描述

在这里插入图片描述

1.3.3 对image类型的消息做好分支处理

在这里插入图片描述

1.3.4 访问百度AI的必要参数配置

在这里插入图片描述

public class ImageUtils {//设置APPID/AK/SKpublic static final String APP_ID = "你的 App ID";public static final String API_KEY = "你的 Api Key";public static final String SECRET_KEY = "你的 Secret Key";
}
1.3.5 访问百度AI(根据文档写就完事了)

在这里插入图片描述

响应json的格式:

在这里插入图片描述

把word_result读出来就行了(其他两个一个记录id,一个结果数)

public static String getImageText(String picUrl) {// 初始化一个AipOcrAipOcr client = new AipOcr(APP_ID, API_KEY, SECRET_KEY);System.out.println(picUrl);// 调用接口JSONObject jsonObject = client.webImageUrl(picUrl, new HashMap<String, String>());// 解析json字符串Map<String, Object> map = JsonUtils.jsonToMap(jsonObject.toString());// 获取单词集List<Map<String, Object>> wordsResult = (List<Map<String, Object>>) map.get("words_result");if(wordsResult == null || wordsResult.size() == 0) {return "";}List<String> words = new ArrayList<>();for(Map<String, Object> m : wordsResult) {words.add((String) m.get("words"));}System.out.println(words);// 返回识别结果return words.toString();
}
1.3.6 封装回复消息
private String handleImage(Map<String, Object> map) {String picUrl = (String) map.get("PicUrl");String content = ImageUtils.getImageText(picUrl);map.put("Content", content);TextMessage textMessage = TextMessage.getReplyTextMessage(map);String message = XmlUtils.objectToXml(textMessage);return message;
}
1.3.7 测试

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

成功啦😊~

补充,之前我们做的上拉菜单,点击里面的发送图片按钮,发送的并不是事件类型的消息:

  1. 点击它弹出子菜单:选择拍照或者相册选择
  2. 反正选择图片确认后,都相当于发送了图片类型的消息

这个只是示例,其他的自行研究,举一反三~

试玩了之后,把那个服务终止了,少花点钱🤭

2. 模板消息

在我们可以获得Access Token后就可以使用模板消息了

文档:基础消息能力 / 模板消息接口 (qq.com)

这个是公众号主动的向用户发送重要的消息

例如这种,就是模板消息

在这里插入图片描述

使用规则也要注意:

在这里插入图片描述

2.1 设置所属的行业

我们要想实现这个模板消息的发送的话,就要先设置所属的行业

在这里插入图片描述

参数:

  • id1与id2,可以理解为主业和副业

在这里插入图片描述

行业编码可以在文档里查找:

在这里插入图片描述

public class TextModelMessage {public static void setTradeInfo() {String url = "https://api.weixin.qq.com/cgi-bin/template/api_set_industry" + HttpUtils.getQueryString(new HashMap<String, Object>() {{this.put("access_token", TokenUtils.getToken());}});Map<String, Object> param = new HashMap<String, Object>() {{this.put("industry_id1", "1");this.put("industry_id2", "2");}};System.out.println(HttpUtils.doPost(url, JsonUtils.objectToJson(param)));}public static void main(String[] args) {setTradeInfo();}}

结果:

在这里插入图片描述

🆗啦😊~

2.2 获取设置的行业消息

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

公众号开发这么久了,套路都差不多~

public static String getTradeInfo() {String url = "https://api.weixin.qq.com/cgi-bin/template/get_industry" + HttpUtils.getQueryString(new HashMap<String, Object>() {{this.put("access_token", TokenUtils.getToken());}});return HttpUtils.doGet(url, null);
}public static void main(String[] args) {//setTradeInfo();System.out.println(getTradeInfo());
}

信息获取正确:

在这里插入图片描述

2.3 发送模板消息

2.3.1 获得模板id

首先我们要先获取模板id

在我们的测试公众平台界面,有这个模板消息接口:

在这里插入图片描述

新增测试模板:

在这里插入图片描述

模板消息运营规范:

基础消息能力 / 模板消息运营规范 (qq.com)

目前允许发的模板消息示例:

[微信模板消息测试 - 漂泊雪狼 - 博客园 (cnblogs.com)](https://www.cnblogs.com/weiweictgu/p/4933186.html#:~:text=目前允许发的模板消息示例 1.1资料变更类通知示例如下: 1.2政务服务类通知示例如下:,1.3物品 (含虚拟类)收取类通知示例如下: 1.4消费交易类通知示例如下:)

以一个很常见的为例子:

在这里插入图片描述

填入模板信息:

在这里插入图片描述

复制模板ID

在这里插入图片描述

这里测试公众号阶段,直接这样获取模板id(此模板也只在此阶段能用),之后需要通过请求的方式获取,再回头来学!

  • 基础消息能力 / 模板消息接口 (qq.com)

包括获取模板列表,删除模板,等等这些动作感兴趣的同学可以去研究一下,之后需要用到回头再学!

2.3.2 访问接口发送模板消息

在这里插入图片描述

data属性的值对象的各个 属性就是刚才的模板内容中的xxx.DATA

在这里插入图片描述

更详细的json字符串示例:

在这里插入图片描述

可见,first和remark也在其中,并且属性值不仅有value(String)这个属性,还有color(String),也就是表现颜色(#六位十六进制的格式)

json字符串各个参数的介绍:

在这里插入图片描述

openid就是微信用户的id,这个用户肯定做了些事情我们才发模板消息给他,我们肯定有记录他的标识,也就是openid~

在这里插入图片描述

  • 也就是这里的“微信号”
  • 之后我们可以从数据库或者其他手段,也能获取到openid的,那个时候再说

小程序相关的和防止重入的这里不考虑(小程序不填了的话,其appid虽然必填,也因为miniprogram不填而不需要填写,pagepath也不需要)

返回码,简单了解即可

在这里插入图片描述

public static void sendModelMessage() {String url = "https://api.weixin.qq.com/cgi-bin/message/template/send" + HttpUtils.getQueryString(new HashMap<String, Object>() {{this.put("access_token", TokenUtils.getToken());}});String data ="{" +"    \"first\":{\n" +"         \"value\":\"你好,你申请参加活动报名成功。\",\n" +"         \"color\":\"#101010\"" +"     },\n" +"     \"keyword1\":{\n" +"         \"value\":\"张三\",\n" +"         \"color\":\"#101010\"" +"     },\n" +"     \"keyword2\":{\n" +"         \"value\":\"13333333333\"\n" +"     },\n" +"     \"keyword3\": {\n" +"         \"value\":\"2023-10-21 17:43\"\n" +"     },\n" +"     \"keyword4\": {\n" +"         \"value\":\"你选择的是足球队员\"\n" +"     },\n" +"     \"remark\": {\n" +"         \"value\":\"感谢您 的使用,祝你生活愉快!\",\n" +"         \"color\":\"#FF0000\"" +"     }" +"}";Map<String, Object> param = new HashMap<String, Object>() {{this.put("touser", "otfI46nw4BoHVoOjivoWmEamB494");this.put("template_id", "jDrr4sGQBOgI7uTliXajxbaTTXMxhf2RzTXlwq3DBWY");this.put("url", "https://blog.csdn.net/Carefree_State?type=blog");this.put("data", JsonUtils.jsonToMap(data));}};// 发送请求System.out.println(HttpUtils.doPost(url, JsonUtils.objectToJson(param)));
}public static void main(String[] args) {//setTradeInfo();//System.out.println(getTradeInfo());sendModelMessage();
}

效果:

在这里插入图片描述

为什么不显示首行内容、尾部/备注内容、颜色?

  • 参考公告:关于规范公众号模板消息的再次公告 (qq.com)

在这里插入图片描述

可能是很多违规案例的出现导致的(诈骗、营销、骚扰用户等等不良行为)

点此查看违规案例

这里的data,我直接偷懒给个写死了的~

  • 之后我们只需要自己将我们的模板,封装成对象,再动态地获取和设置数据进去就行了

3. 素材管理

素材管理 / 新增临时素材 (qq.com)

有时候,我们需要将一些素材上传到公众号内进行缓存,所以我们需要学习一些素材管理的内容

在这里插入图片描述

差不多就这样吧,之后就是向公众号服务器发送请求

3.1 上传文件资源方法

这个方法比较万能,可以解决上传资源的各个文件问题,但是文件要满足限制!

//httpClient发送携带⽂件的post请求
public static String doPostByFile(String url, Map<String,Object> map, String localFile, String fileParamName) {HttpPost httpPost = new HttpPost(url);CloseableHttpClient httpClient = HttpClients.createDefault();String resultString = "";CloseableHttpResponse response = null;try {// 把⽂件转换成流对象FileBodyFileBody bin = new FileBody(new File(localFile));MultipartEntityBuilder builder =MultipartEntityBuilder.create();builder.addPart(fileParamName, bin);if (map != null) {for (String key : map.keySet()) {builder.addPart(key,new StringBody((String) map.get(key),ContentType.create("text/plain", Consts.UTF_8)));}}HttpEntity reqEntity = builder.build();httpPost.setEntity(reqEntity);// 发起请求 并返回请求的响应response = httpClient.execute(httpPost, HttpClientContext.create());resultString = EntityUtils.toString(response.getEntity(), "utf-8");} catch (Exception e) {e.printStackTrace();} finally {try {if (response != null)response.close();} catch (IOException e) {e.printStackTrace();}}return resultString;
}

需要的依赖:

<!--httpClient需要的依赖-->
<dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.2</version>
</dependency>
<!--//httpclient缓存-->
<dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient-cache</artifactId><version>4.5</version>
</dependency>
<!--//http的mime类型都在这⾥⾯-->
<dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpmime</artifactId><version>4.3.2</version>
</dependency>

3.2 发送临时素材

这里以发送图片为例,其他参考文档!

在这里插入图片描述

在这里插入图片描述

public static String sendImage() {// 构造urlString url = "https://api.weixin.qq.com/cgi-bin/media/upload" + HttpUtils.getQueryString(new HashMap<String, Object>() {{this.put("access_token", TokenUtils.getToken());this.put("type", "image");}});// 发起请求String response = HttpUtils.doPostByFile(url, null, "D:/马图/瞪眼.jpg", "");System.out.println(response);return (String) JsonUtils.jsonToMap(response).get("media_id");
}

测试:

public static void main(String[] args) {System.out.println(sendImage());
}

成功了😊:

在这里插入图片描述

  • 这个就是临时的media_id(所有资源统一的字段)

3.3 获得临时素材

这里以发送图片为例,其他参考文档!

在这里插入图片描述

通过身份标识和media_id确认对于的临时资源

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

对于非视频消息素材,返回的就是素材的二进制序列!

  • 在浏览器访问的话,会触发文件下载
public static String getImage(String mediaId) {// 构造urlString url = "https://api.weixin.qq.com/cgi-bin/media/get" + HttpUtils.getQueryString(new HashMap<String, Object>() {{this.put("access_token", TokenUtils.getToken());this.put("media_id", mediaId);}});System.out.println(url);return HttpUtils.doGet(url, null);
}

测试:

public static void main(String[] args) {String ret = getImage(sendImage());
}

成功啦😊:

在这里插入图片描述

访问一下这个链接:

  • 触发下载了

在这里插入图片描述

打开后,就是刚才我们发的文件:

在这里插入图片描述

4. 二维码的生成与获取信息

账号管理 / 生成带参数的二维码 (qq.com)

这里生成带参数的二维码,扫二维码后是跳转到公众号,是公众号的宣传手段之一

带的参数有这些:

在这里插入图片描述

二维码分为四类:

  1. QR_SCENE为 临时的整型参数值
  2. QR_STR_SCENE为 临时的字符串参数值
  3. QR_LIMIT_SCENE为 永久的整型参数值
  4. QR_LIMIT_STR_SCENE为 永久的字符串参数值

在这里插入图片描述

4.1 生成带参数二维码

在这里插入图片描述

在这里插入图片描述

反正就字面意思,我这里就不封装对象,直接写死一个data:

    public static String createTicket() {String url = "https://api.weixin.qq.com/cgi-bin/qrcode/create" + HttpUtils.getQueryString(new HashMap<String, Object>() {{this.put("access_token", TokenUtils.getToken());}});//生成临时二维码的数据
//        Map<String, Object> param = new HashMap<String, Object>(){{
//
//        }};String data = "{\"expire_seconds\": 3600, \"action_name\": \"QR_STR_SCENE\", \"action_info\": {\"scene\": {\"scene_str\": \"test\"}}";// 发送请求String ret = HttpUtils.doPost(url, data);System.out.println(ret);return (String) JsonUtils.jsonToMap(ret).get("ticket");}

测试:

public static void main(String[] args) {System.out.println(createTicket());
}

在这里插入图片描述

4.2 获取二维码

这里就不需要access_token了,毕竟这个二维码要拿去宣传的

public static String getTicket() {String url = "https://mp.weixin.qq.com/cgi-bin/showqrcode" + HttpUtils.getQueryString(new HashMap<String, Object>() {{this.put("ticket", createTicket());}});//System.out.println(HttpUtils.doGet(url, null));return url;
}

测试:

public static void main(String[] args) {System.out.println(getTicket());
}

在这里插入图片描述

在这里插入图片描述

访问成功!

4.3 分支处理扫描二维码触发的事件

在这里插入图片描述

基础消息能力 / 接收事件推送 (qq.com)

如果未关注,扫码后进入公众号简介界面(可选择关注),关注后触发的事件类型为:

在这里插入图片描述

如果已关注,扫码后就直接触发的事件类型为:

在这里插入图片描述

对于EventKey,就是二维码所带参数相关,可进一步做分支,这里不做演示!

编写代码处理事件:

在这里插入图片描述

private String handleEvent(Map<String, Object> map) {String message = "";// 获取event值String event = (String) map.get("Event");// 事件分支switch (event) {case "CLICK":message = EventUtils.handleClick(map);break;case "VIEW":System.out.println("view");break;case "SCAN":message = EventUtils.handleScan(map);break;case "subscribe":message = EventUtils.handleSubscribe(map);break;default:break;}return message;
}

handleScan方法:

public static String handleScan(Map<String, Object> map) {map.put("Content", "欢迎光临! " + map.get("FromUserName"));TextMessage textMessage = TextMessage.getReplyTextMessage(map);return XmlUtils.objectToXml(textMessage);
}

handleSubscribe方法:

public static String handleSubscribe(Map<String, Object> map) {map.put("Content", "感谢关注!  " + map.get("FromUserName"));TextMessage textMessage = TextMessage.getReplyTextMessage(map);return XmlUtils.objectToXml(textMessage);
}

测试:

关注状态下扫码:

在这里插入图片描述

非关注状态下扫码:

在这里插入图片描述


文章到此结束!谢谢观看
可以叫我 小马,我可能写的不好或者有错误,但是一起加油鸭🦆

代码:wx-demo · 游离态/马拉圈2023年10月 - 码云 - 开源中国 (gitee.com)


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/113602.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python---死循环概念---while True

在编程中一个靠自身控制无法终止的程序称为“死循环”。 在Python中&#xff0c;我们也可以使用while True来模拟死循环&#xff1a; 代码&#xff1a; while True: print(每天进步一点点) 图示 应用&#xff1a; 比如&#xff0c;在测试里面&#xff0c;自动化测试用例…

解析Apache Kafka中的事务机制

这篇博客文章并不是关于使用事务细节的教程&#xff0c;我们也不会深入讨论设计细节。相反&#xff0c;我们将在适当的地方链接到JavaDocs或设计文档&#xff0c;以供希望深入研究的读者使用。 为什么交易? 我们在Kafka中设计的事务主要用于那些显示“读-进程-写”模式的应用…

jenkins 原理篇——pipeline流水线 声明式语法详解

大家好&#xff0c;我是蓝胖子&#xff0c;相信大家平时项目中或多或少都有用到jenkins&#xff0c;它的piepeline模式能够对项目的发布流程进行编排&#xff0c;优化部署效率&#xff0c;减少错误的发生&#xff0c;如何去写一个pipeline脚本呢&#xff0c;今天我们就来简单看…

laravel中锁以及事务的简单使用

一、首先来说一下什么是共享锁&#xff1f;什么是排他锁&#xff1f; 共享&#xff1a;我可以读 写 加锁 , 别人可以 读 加锁。 排他&#xff1a;只有我 才 可以 读 写 加锁 , 也就是说&#xff0c;必须要等我提交事务&#xff0c;其他的才可以操作。 二、简单例子实现加锁 锁…

C#中List、Dictionary、HashSet用法以及区别

前言 在C#编程中&#xff0c;List、Dictionary和HashSet是常用的集合类型,它们都有自己的特点和适用场景。本篇博客将介绍它们的用法、区别及常见操作。深入了解这些集合类型&#xff0c;能够帮助我们更好地组织和处理数据。 1. List: List是一个有序可重复集合&#xff0c;可…

【mysql】关于mysql的数据结构特点 索引特点

文章目录 二叉树红黑树 b treehash结构b tree索引存放特点myisamInnoDB 最左原则主键相关知识点缓存池淘汰机制 前言&#xff1a;翻自己博客 发现缺少mysql数据结构和索引相关内容 两年前整理的mysql知识点 一直存在于博主的笔记本里面 &#xff08;是的 纸质的那种笔记本 不是…

List.of() Vs Arrays.asList()

java中list.of和Arrays.asList方法有什么区别&#xff1f; 简介 Java 提供了几种用于创建列表的方便方法&#xff0c;包括 List.of 和 Arrays.aslist。尽管这两种方法都可以很简单的创建集合对象&#xff0c;但它们实际上是有一些显著差异的。本文将介绍 Java 中的 List.of()…

百分点科技再度亮相GITEX全球大会

10月16-20日&#xff0c;全球最大科技信息展会之一 GITEX Global 2023在迪拜世贸中心开展&#xff0c;本届展会是历年来最大的一届&#xff0c;吸引了来自180个国家的6,000家参展商和180,000名技术高管参会。 百分点科技作为华为生态合作伙伴&#xff0c;继去年之后再度参展&a…

C++:类的默认成员函数------构造函数析构函数(超详细解析,小白一看就懂!)

目录 一、前言 二、为什么会出现构造函数和析构函数 三、构造函数 &#x1f34e;构造函数的概念 &#x1f350;构造函数特性 &#x1f4a6;解释特性3&#xff1a;对象实例化时编译器自动调用对应的构造函数 &#x1f4a6;解释特性4&#xff1a;构造函数支持重载 &…

平板有必要买触控笔吗?推荐的ipad手写笔

iPad之所以能吸引这么多人&#xff0c;主要是因为它的功能出色。用来画画、做笔记&#xff0c;也是一种不错的体验。但如果只是用来看电视和打游戏的话&#xff0c;那就真的有点大材小用了。如果你不需要昂贵的苹果电容笔&#xff0c;也不需要用来专业的绘图&#xff0c;那你可…

经典题型---旋转数组

经典题型—旋转数组 文章目录 经典题型---旋转数组一、题目二、代码实现 一、题目 给定一个整数数组 nums&#xff0c;将数组中的元素向右轮转 k 个位置&#xff0c;其中 k 是非负数。 示例 1: 输入: nums [1,2,3,4,5,6,7], k 3 输出: [5,6,7,1,2,3,4] 解释: 向右轮转 1 步…

2021年03月 Python(三级)真题解析#中国电子学会#全国青少年软件编程等级考试

Python编程&#xff08;1~6级&#xff09;全部真题・点这里 一、单选题&#xff08;共25题&#xff0c;每题2分&#xff0c;共50分&#xff09; 第1题 下列代码的输出结果是&#xff1f;&#xff08; &#xff09; x 0x10print(x)A&#xff1a;2 B&#xff1a;8 C&#xff…

读《Gaitset: Regarding gait as a set for cross-view gait recognition》

2019在AAAI&#xff08;还有一版叫GaitSet: Regarding Gait as a Set for Cross-View Gait Recognition&#xff0c;大体上一样&#xff09; 摘要 现有的步态识别方法要么利用步态模板&#xff0c;难以保存时间信息&#xff0c;要么利用保持不必要的顺序约束的步态序列&#x…

免费Scrum管理工具-Leangoo领歌

Leangoo领歌是一款永久免费的专业的敏捷开发管理工具&#xff0c;提供端到端敏捷研发管理解决方案&#xff0c;涵盖敏捷需求管理、任务协同、进展跟踪、统计度量等。 
 Leangoo领歌上手快、实施成本低&#xff0c;可帮助企业快速落地敏捷&#xff0c;提质增效、缩短周期、加速…

MySQL -- 环境安装(CentOS7)

MySQL – 环境安装&#xff08;CentOS7&#xff09; 文章目录 MySQL -- 环境安装&#xff08;CentOS7&#xff09;一、环境安装1.卸载不必要的环境2.检查系统安装包3.卸载默认安装包4.获取MySQL官方yum源6.看看yum源能不能正常工作7.安装mysql服务 二、MySQL登录与配置1.启动My…

项目经理之识别项目干系人

项目干系人管理是项目管理中的重要一环&#xff0c;识别和管理好项目干系人是成功实施项目的关键之一。本文将介绍4321项目干系人识别方法、干系人等级册以及五步判断法等工具&#xff0c;帮助项目经理更好地识别和管理项目干系人。同时&#xff0c;本文还将介绍干系人能量方格…

智慧矿山矿山安全生产:皮带撕裂识别AI算法不用激光,能迅速识别皮带纵撕!

近些年来&#xff0c;智慧矿山在煤矿行业中发挥着越来越重要的作用。皮带的功能对于矿山运营至关重要&#xff0c;而皮带撕裂是造成生产中断、人身伤害等问题的重要原因之一。为了准确、及时地检测皮带撕裂的情况&#xff0c;AI算法的应用成为智慧矿山的关键。 ​​​​​​​…

软件报错msvcr120.dll丢失怎么办?五个有效修复方法分享

msvcr120.dll是一个动态链接库文件&#xff0c;它是Microsoft Visual C 2012 Redistributable Package的一部分。如果你的电脑在运行一些需要这个文件的程序时出现了“msvcr120.dll丢失”的错误&#xff0c;那么就意味着你的电脑缺少了这个文件&#xff0c;或者这个文件已经损坏…

3、Kafka Broker

4.1 Kafka Broker 工作流程 4.1.1 Zookeeper 存储的 Kafka 信息 &#xff08;1&#xff09;启动 Zookeeper 客户端。 [hadoop102 zookeeper-3.5.7]$ bin/zkCli.sh&#xff08;2&#xff09;通过 ls 命令可以查看 kafka 相关信息。 [zk: localhost:2181(CONNECTED) 2] ls /kaf…

Three.js + Tensorflow.js 构建实时人脸点云

本文重点介绍使用 Three.js 和 Tensorflow.js 实现实时人脸网格点云所需的步骤。 它假设你之前了解异步 javascript 和 Three.js 基础知识&#xff0c;因此不会涵盖基础知识。 该项目的源代码可以在此 Git 存储库中找到。 在阅读本文时查看该代码将会很有帮助&#xff0c;因为…