RocketMQ-RocketMQ部署(Linux、docker)

news2024/12/24 11:27:34

文章目录

    • 一、Linux
      • 1、单机部署RocketMQ
        • > 前置条件
        • 第一步、官网下载 并 上传至服务器
        • 第二步、配置jdk环境
        • 第三步、修改初始内存
        • 第四步、启动 NameServer
        • 第五步、启动 Broker
        • 第六步、关闭RocketMQ
        • Demo:发送与接收消息测试 (Linux端)
      • 2、部署可视化管理工具—rocketmq-console 管理控制台
        • 第一步、官网下载 并 解压
        • 第二步、修改配置
        • 第三步、添加依赖
        • 第四步、打包
        • 第五步、启动
        • 第六步、线上部署
    • 二、Docker

本篇博客主要阐述了如何单机部署RocketMQ,以及可视化管理工具rocketmq-console。涉及两种方式,分别是Linux部署和Docker部署~(小伟使用腾讯云CentOS6.7、本机M1P芯片Mac演示)

一、Linux

1、单机部署RocketMQ

> 前置条件

开启端口: 10911 10912 10909 9876
在这里插入图片描述

第一步、官网下载 并 上传至服务器

RocketMQ4.9.0下载链接

mac推荐一款工具,用于FTP文件上传~
Alt
以上步骤自行脑补一下,略~

[root@hgwtencent RocketMQ]# pwd
/soft/RocketMQ
[root@hgwtencent RocketMQ]# ll
总用量 17764
-rw-r--r-- 1 root root 18186461 1129 16:15 rocketmq-all-4.9.0-bin-release.zip
[root@hgwtencent RocketMQ]# unzip rocketmq-all-4.9.0-bin-release.zip

RocketMQ目录结构 :

[root@hgwtencent RocketMQ]# cd rocketmq-all-4.9.0-bin-release/
[root@hgwtencent rocketmq-all-4.9.0-bin-release]# ll
总用量 48
drwxr-xr-x 2 root root  4096 611 2021 benchmark	# 启动脚本,包括shell脚本和cmd脚本
drwxr-xr-x 3 root root  4096 611 2021 bin				# 实例配置文件,包括broker配置文件、logback配置文件等
drwxr-xr-x 6 root root  4096 611 2021 conf				# 依赖jar包,包括netty、commons-lang、FastJSON等
drwxr-xr-x 2 root root  4096 611 2021 lib
-rw-r--r-- 1 root root 17327 69 2021 LICENSE
-rw-r--r-- 1 root root  1338 69 2021 NOTICE
-rw-r--r-- 1 root root  5132 69 2021 README.md

第二步、配置jdk环境

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ya1ztIKO-1669962286957)(RocketMQ-RocketMQ部署(Linux、docker)].assets/image-20221129201046483.png)

[root@hgwtencent rocketmq-all-4.9.0-bin-release]# cd bin
[root@hgwtencent bin]# echo  $JAVA_HOME
/usr/java/jdk1.8.0_311-amd64
[root@hgwtencent bin]# vim tools.sh

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6ajzKeq1-1669962286958)(RocketMQ-RocketMQ部署(Linux、docker)].assets/image-20221129201436553.png)

在红框后面追加上本机jdk环境/jre/lib/ext

如:

JAVA_OPT="${JAVA_OPT} -Djava.ext.dirs=${BASE_DIR}/lib:${JAVA_HOME}/jre/lib/ext:${JAVA_HOME}/lib/exti:/usr/java/jdk1.8.0_311-amd64/jre/lib/ext"

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zmXNDQfk-1669962286958)(RocketMQ-RocketMQ部署(Linux、docker)].assets/image-20221129201758968.png)

第三步、修改初始内存

Rocketmq默认的虚拟机内存较大,启动broker如果因为内存不足失败,需要编辑如下两个配置文件,去修改JVM内存大小 (根据自身服务器配置决定是否修改)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ecyzP6VH-1669962343667)(RocketMQ-RocketMQ部署(Linux、docker)].assets/image-20221129170150070.png)
1、修改 runserver.sh 内存大小

[root@hgwtencent bin]# vim runserver.sh
#参考设置
JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn512m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=256m"

原先
在这里插入图片描述
修改为下图的配置:
在这里插入图片描述
2、修改 runbroker.sh 内存大小

[root@hgwtencent bin]# vim runbroker.sh
#参考设置
JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn256m"

原先
在这里插入图片描述
修改为下图的配置:
在这里插入图片描述

第四步、启动 NameServer

启动NameServer

# 以后台进程运行,日志输出到namesrv.log 将错误信息重定向到标准输出
[root@hgwtencent rocketmq-all-4.9.0-bin-release]# touch namesrv.log
[root@hgwtencent rocketmq-all-4.9.0-bin-release]# nohup sh bin/mqnamesrv > namesrv.log 2>&1 &

以后台运行后的方式去执行启动脚本,查看日志 :

[root@hgwtencent rocketmq-all-4.9.0-bin-release]# tail -f ~/logs/rocketmqlogs/namesrv.log	

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1qjbz9sw-1669962424917)(RocketMQ-RocketMQ部署(Linux、docker)].assets/image-20221129175812064.png)

第五步、启动 Broker

启动Broker一共有两种方式,分别是 本地部署(linux)外网部署,这里主要演示外网部署,命令贴在下面

本地部署

[root@hgwtencent rocketmq-all-4.9.0-bin-release]# nohup sh bin/mqbroker -n localhost:9876 &

外网部署

1、首先需求修改一下配置文件:

[root@hgwtencent conf]# pwd
/soft/RocketMQ/rocketmq-all-4.9.0-bin-release/conf
[root@hgwtencent conf]# vim broker.conf
[root@hgwtencent conf]# cat broker.conf
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
#  Unless required by applicable law or agreed to in writing, software
#  distributed under the License is distributed on an "AS IS" BASIS,
#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#  See the License for the specific language governing permissions and
#  limitations under the License.

brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
namesrvAddr=124.222.223.222:9876
brokerIP1=124.222.223.222

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3AnZPeHs-1669962471999)(RocketMQ-RocketMQ部署(Linux、docker)].assets/image-20221201164429836.png)

 23 namesrvAddr=服务器外网ip:9876
 24 brokerIP1=服务器外网ip

2、启动Broker

[root@hgwtencent rocketmq-all-4.9.0-bin-release]# touch broker.log
[root@hgwtencent rocketmq-all-4.9.0-bin-release]# nohup bin/mqbroker -c conf/broker.conf > broker.log 2>&1 &
[2] 4718

以后台运行后的方式去执行启动脚本,查看日志 :

[root@hgwtencent rocketmq-all-4.9.0-bin-release]# tail -f ~/logs/rocketmqlogs/broker.log

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QuHgLFC9-1669962471999)(RocketMQ-RocketMQ部署(Linux、docker)].assets/image-20221201170438719.png)

第六步、关闭RocketMQ

# 1.关闭 Broker
[root@hgwtencent rocketmq-all-4.9.0-bin-release]# sh bin/mqshutdown broker
The mqbroker(14968) is running...
Send shutdown request to mqbroker(14968) OK

# 2.关闭 NameServer
[root@hgwtencent rocketmq-all-4.9.0-bin-release]# sh bin/mqshutdown namesrv
The mqnamesrv(14826) is running...
Send shutdown request to mqnamesrv(14826) OK
[2]+  退出 143              nohup sh bin/mqbroker -n localhost:9876

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-deMsdnrw-1669962510060)(RocketMQ-RocketMQ部署(Linux、docker)].assets/image-20221129185950708.png)

Demo:发送与接收消息测试 (Linux端)

​ 在发送或接收消息之前,开发者需要通知客户端name servers 的位置。RocketMQ提供多种 实现方式。为了简单起见下方展示环境变量NAMESRV_ADDR的用法 :

# 设置环境变量:
export NAMESRV_ADDR=localhost:9876

使用安装包的Demo发送消息:

> sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
 SendResult [sendStatus=SEND_OK, msgId= ...

接受消息 (bin目录下) :

 > sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
 ConsumeMessageThread_%d Receive New Messages: [MessageExt...

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



2、部署可视化管理工具—rocketmq-console 管理控制台

RocketMQ有一个可视化的dashboard,通过该控制台可以直观的查看到很多数据。

​ RocketMQ有一个对其扩展的开源项目: incubator-rocketmq-externals,这个项目中有一个子模块叫 rocketmq-console。这个便是管理控制台项目。

​ 步骤是先将 incubator-rocketmq-externalsgit 拉到本地,然后对 rocketmq-console进行操作(编译打包运行)

git地址 : https://github.com/SummerUnfair/rocketmq-externals/tags

第一步、官网下载 并 解压

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0ejT8zKU-1669962721088)(RocketMQ-RocketMQ部署(Linux、docker)].assets/image-20221201173955887.png)

gwh@GWdeMacBook-Pro [13:43:43] [~/Documents/Software/tools/rocketmq]
-> % pwd
/Users/gwh/Documents/Software/tools/rocketmq

gwh@GWdeMacBook-Pro [13:43:44] [~/Documents/Software/tools/rocketmq]
-> % unzip rocketmq-externals-rocketmq-console-1.0.0.zip

第二步、修改配置

修改其src/main/resources中的application.properties配置文件 :

  • 原来的端口号为8080,修改为一个不常用的
  • 指定RocketMQ的name server地址
gwh@GWdeMacBook-Pro [13:45:20] [~/Documents/Software/tools/rocketmq/rocketmq-externals-rocketmq-console-1.0.0/rocketmq-console/src/main/resources]
-> % pwd
/Users/gwh/Documents/Software/tools/rocketmq/rocketmq-externals-rocketmq-console-1.0.0/rocketmq-console/src/main/resources

gwh@GWdeMacBook-Pro [13:45:21] [~/Documents/Software/tools/rocketmq/rocketmq-externals-rocketmq-console-1.0.0/rocketmq-console/src/main/resources]
-> % ll
total 16
-rw-r--r--@ 1 gwh  staff   741B  6 15  2017 application.properties
-rw-r--r--@ 1 gwh  staff   1.1K  6 15  2017 logback.xml
drwxr-xr-x@ 7 gwh  staff   224B  6 15  2017 static

gwh@GWdeMacBook-Pro [13:45:32] [~/Documents/Software/tools/rocketmq/rocketmq-externals-rocketmq-console-1.0.0/rocketmq-console/src/main/resources]
-> % vim application.properties

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AXyRLKgH-1669962749829)(RocketMQ-RocketMQ部署(Linux、docker)].assets/image-20221202140528365.png)
大家自行修改为自己的部署的RocketMQ的ip:端口。

第三步、添加依赖

在解压目录rocketmq-console的pom.xml中添加如下JAXB依赖。

JAXB,Java Architechture for Xml Binding,用于XML绑定的Java技术,是一个业界标准,是一 项可以根据XML Schema生成Java类的技术

依赖如下:

<!--JAXB-->
<dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
    <version>2.3.0</version>
</dependency>
<dependency>
    <groupId>com.sun.xml.bind</groupId>
    <artifactId>jaxb-impl</artifactId>
    <version>2.3.0</version>
</dependency>
<dependency>
    <groupId>com.sun.xml.bind</groupId>
    <artifactId>jaxb-core</artifactId>
    <version>2.3.0</version>
</dependency>
<dependency>
    <groupId>javax.activation</groupId>
    <artifactId>activation</artifactId>
    <version>1.1.1</version>
</dependency>

在这里插入图片描述

第四步、打包

在rocketmq-console目录下运行maven的打包命令。

/rocketmq-externals-rocketmq-console-1.0.0/rocketmq-consol 项目目录下,执行以下打包命令

mvn clean package -Dmaven.test.skip=true

在这里插入图片描述
出现 BUILD SUCCESS 即打包成功~


第五步、启动

/rocketmq-externals-rocketmq-console-1.0.0/rocketmq-console/target 执行以下启动命令~

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

第六步、线上部署

在云服务器上开辟端口,并将本地jar包上传并运行(大家也可以将其打成Docker镜像运行)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-K5tjhKjX-1669962965401)(RocketMQ-RocketMQ部署(Linux、docker)].assets/image-20221202141247093.png)

[root@hgwtencent rocketmq-console]# touch rocketmq-console.log
[root@hgwtencent rocketmq-console]# ll
总用量 30300
-rw-r--r-- 1 root root        0 122 14:14 rocketmq-console.log
-rw-r--r-- 1 root root 31025914 122 14:14 rocketmq-console-ng-1.0.0.jar

run起来!

[root@hgwtencent rocketmq-console]# nohup java -jar rocketmq-console-ng-1.0.0.jar &> rocketmq-console.log &

查看一下:

[root@hgwtencent rocketmq-console]# ps -ef|grep "java -jar"
root     22657 21241 84 14:15 pts/0    00:00:21 java -jar rocketmq-console-ng-1.0.0.jar
root     22809 21241  0 14:16 pts/0    00:00:00 grep --color=auto java -jar

访问http://你的服务器ip:7777/#/topic
在这里插入图片描述



二、Docker

第一步、启动 NameServer

docker run -d -p 9876:9876 --name rmqserver  foxiswho/rocketmq:server-4.5.1

第二步、启动broker

docker run -d -p 10911:10911 -p 10909:10909\
 --name rmqbroker --link rmqserver:namesrv\
 -e "NAMESRV_ADDR=namesrv:9876" -e "JAVA_OPTS=-Duser.home=/opt"\
 -e "JAVA_OPT_EXT=-server -Xms128m -Xmx128m"\
 foxiswho/rocketmq:broker-4.5.1

Broker容器中默认的配置文件的路径为:

/etc/rocketmq/broker.conf

也可以通过-v参数指定本机的配置文件:

docker run -d -p 10911:10911 -p 10909:10909\
 --name rmqbroker --link rmqserver:namesrv\
 -e "NAMESRV_ADDR=namesrv:9876" -e "JAVA_OPTS=-Duser.home=/opt"\
 -e "JAVA_OPT_EXT=-server -Xms128m -Xmx128m"\
 -v /conf/broker.conf:/etc/rocketmq/broker.conf \
 foxiswho/rocketmq:broker-4.5.1

第三步、启动 rocketmq console

如果一切正常,NameServer和Broker一会儿就会安装好,为了管理上的方便,rocketmq console也是必不可少的工具了,通过上面查询的方式找到需要启动的版本,启动方式如下:

docker run -d --name rmqconsole -p 8180:8080 --link rmqserver:namesrv\
 -e "JAVA_OPTS=-Drocketmq.namesrv.addr=namesrv:9876\
 -Dcom.rocketmq.sendMessageWithVIPChannel=false"\
 -t styletang/rocketmq-console-ng

然后通过如下命令检查一下启动情况:

docker ps|grep rocketmq

结果如下:
在这里插入图片描述
再通过浏览器访问http://你的服务器ip:8180/#/,console的页面显示如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6CTStcsd-1669963036064)(RocketMQ-RocketMQ部署(Linux、docker)].assets/image-20220210223505659.png)

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

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

相关文章

tictoc 例子理解 13-15

tictoc13-tictoc13 子类化cMessage生成消息&#xff0c;随机目标地址tictoc 14 在13的基础上增加两变量显示于仿真界面tictoc 15 模型数据输出为直方图tictoc13 子类化cMessage生成消息&#xff0c;随机目标地址 在这一步中&#xff0c;目标地址不再是节点2——我们绘制了一个…

[附源码]计算机毕业设计springboot现代诗歌交流平台

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

MySQL存储过程

目录 存储过程 1、存储过程的概念 2、存储过程的优点 3、创建存储过程 格式&#xff1a; 4、调用存储过程 格式 5、查看存储过程 格式&#xff1a; 6、存储过程的参数 7、删除存储过程 格式&#xff1a; 8、存储过程的控制语句 准备a表 &#xff08;1&#xff09;条…

Spring基础篇:注入

第一章&#xff1a;注入 一&#xff1a;什么是注入 &#xff08;Injection&#xff09;注入就是通过Spring的工厂类和spring的配置文件&#xff0c;对spring所创建的对象进行赋值&#xff0c;为成员变量进行赋值 二&#xff1a;为什么注入 为什么需要Spring工厂创建对象的时…

[附源码]Python计算机毕业设计SSM开放式在线课程教学与辅助平台(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

[附源码]计算机毕业设计JAVA校园闲置物品租赁系统

[附源码]计算机毕业设计JAVA校园闲置物品租赁系统 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM my…

Maven使用指南(超详细)

Maven高级 目标 理解并实现分模块开发能够使用聚合工程快速构建项目能够使用继承简化项目配置能够根据需求配置生成、开发、测试环境&#xff0c;并在各个环境间切换运行了解Maven的私服 1&#xff0c;分模块开发 1.1 分模块开发设计 (1)按照功能拆分 我们现在的项目都是在…

Delay Penalty for RNN-T and CTC

1. 背景 之前介绍了如何在 RNN-T 流式模型上应用时延正则&#xff0c;以及在 Conformer 和 LSTM 上的实验结果。 本期公众号重点带大家回顾下具体的思路&#xff0c;以及如何类似地在 CTC 流式模型上应用时延正则。 有些内容可能有所重复&#xff0c;读者可适当跳过。2. Dela…

iwebsec靶场 SQL注入漏洞通关笔记12-等价函数替换绕过

系列文章目录 iwebsec靶场 SQL注入漏洞通关笔记1- 数字型注入_mooyuan的博客-CSDN博客 iwebsec靶场 SQL注入漏洞通关笔记2- 字符型注入&#xff08;宽字节注入&#xff09;_mooyuan的博客-CSDN博客 iwebsec靶场 SQL注入漏洞通关笔记3- bool注入&#xff08;布尔型盲注&#…

Ajax学习:同源策略(与跨域相关)ajax默认遵循同源策略

同源策略&#xff1a;是浏览器的一种安全策略 同源意味着&#xff1a;协议、域名、端口号必须相同 违背同源便是跨域 当前网页的url和ajax请求的目标资源的url必须协议、域名、端口号必须相同 比如&#xff1a;当前网页&#xff1a;协议http 域名 a.com 端口号8000 目标请求…

python——spark入门

Hadoop是对大数据集进行分布式计算的标准工具&#xff0c;这也是为什么当你穿过机场时能看到”大数据(Big Data)”广告的原因。它已经成为大数据的操作系统&#xff0c;提供了包括工具和技巧在内的丰富生态系统&#xff0c;允许使用相对便宜的商业硬件集群进行超级计算机级别的…

Android Poco初始化时,不大起眼但可能存在坑点的参数们

1. 前言 进行Android poco初始化的时候&#xff0c;可能大多数同学都是直接在Poco辅助窗里选择Android模式&#xff0c;然后选择自动帮我们补充poco的初始化脚本&#xff1a; 这种情况下&#xff0c;我们大多数都不会关注初始化的参数。但如果我们不了解这些参数的含义&#x…

Spring之@RequestMapping、@GetMapping、 @PostMapping 三者的区别

我的理解&#xff1a;其实RequestMapping、GetMapping、 PostMapping 三者就是父类和子类的区别&#xff0c;RequestMapping是父类&#xff0c;GetMapping、 PostMapping为子类集成了RequestMapping更明确了http请求的类型 分析三者的源码&#xff1a; RequestMapping .class&…

C#教务管理大数据平台系统源码

校务管理系统是专门针对幼儿园、培训学校的业务应用而设计研发的一款行业应用软件。校管家校务管理系统融入先进的协同管理理念&#xff0c;运用领先的信息化、网络化处理技术&#xff0c;结合丰富的教育培训行业经验&#xff0c;切实有效的解决幼儿园、培训学校日常工作中的关…

[附源码]计算机毕业设计-菜篮子系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

KVM虚机添加磁盘

KVM虚拟机添加磁盘两种方法&#xff1a; 1、添加虚拟磁盘文件 2、添加物理磁盘 需求 1、/kvm/kvms目录是我们KVM磁盘镜像集中管理的位置&#xff0c;我们需要在/kvm/kvms下给ceph1虚拟机创建名为ceph1-vdb.qcow2的磁盘文件&#xff0c;大小为80G&#xff0c;作为ceph1的vdb磁盘…

Python和labview先学哪个

前言 在这之前&#xff0c;先跟大家分享个身边的故事。 大学同学小宏&#xff0c;在北京一家电子设备公司做运维&#xff0c;上周四刚被升为运维部经理&#xff0c;薪资涨了35%。 但你一定想不到&#xff0c;他平时从不加班&#xff0c;甚至还经常迟到。 &#xff08;文末送…

Qt入门总结

文章目录Qt一、各文件基本概念1、main.cpp文件2、XXX.pro文件3、XXX.h文件二、基本知识1、命名规范2、快捷键三、入门操作1、添加按钮2、重置窗口大小3、设置窗口标题4、设置固定的窗口大小5、对象树6、添加源文件/头文件7、窗口坐标系四、信号与槽1、让按钮附带功能2、自定义信…

浅谈affine_trans_point_2d与affine_trans_pixel

先看下两个坐标图谱&#xff1a; 变换前&#xff1a; 变换后&#xff1a; 我们根据1号点和9号点前后的关系&#xff0c;计算变换后其他点的坐标&#xff1a;这其实就是根据MARK点进行定位的原理 halcon代码&#xff1a; 执行结果&#xff1a; 我们发现&#xff0c;两种变换方…

湘江新区:金融活水赋能实体经济

湘江早报全媒体记者 黄荣佳 通讯员 易芳 吴硕 4月26日&#xff0c;艾布鲁环保在创业板首发上市&#xff1b; 10月28日&#xff0c;“国产操作系统第一股&#xff02;麒麟信安敲响上市钟声&#xff0c;成为今年全省第一家在科创板上市的公司&#xff1b; 11月24日&#xff0c;…