RocketMQ安装部署

news2025/1/25 4:43:26

RocketMQ的物理部署结构图如下:
在这里插入图片描述
Producer和Consumer对应的是我们的应用程序,多个NameServer实例组成集群,但相互独立,没有信息交换,所以对于NameServer来说部署两个或两个以上即可保证高可用,对于Broker来说,我们可以选择以下几种集群部署方式:

1.单Master模式
这种方式风险较大,一旦Broker重启或者宕机时,会导致整个服务不可用。不建议线上环境使用,可以用于本地测试。

2.多Master模式
一个集群无Slave,全是Master,例如2个Master或者3个Master,这种模式的优缺点如下:

优点:配置简单,单个Master宕机或重启维护对应用无影响,在磁盘配置为RAID10时,即使机器宕机不可恢复情况下,由于RAID10磁盘非常可靠,消息也不会丢(异步刷盘丢失少量消息,同步刷盘一条不丢),性能最高;

缺点:单台机器宕机期间,这台机器上未被消费的消息在机器恢复之前不可订阅,消息实时性会受到影响。

3.多Master多Slave模式-异步复制
每个Master配置一个Slave,有多对Master-Slave,HA采用异步复制方式,主备有短暂消息延迟(毫秒级),这种模式的优缺点如下:

优点:即使磁盘损坏,消息丢失的非常少,且消息实时性不会受影响,同时Master宕机后,消费者仍然可以从Slave消费,而且此过程对应用透明,不需要人工干预,性能同多Master模式几乎一样;

缺点:Master宕机,磁盘损坏情况下会丢失少量消息。

4.多Master多Slave模式-同步双写
每个Master配置一个Slave,有多对Master-Slave,HA采用同步双写方式,即只有主备都写成功,才向应用返回成功,这种模式的优缺点如下:

优点:数据与服务都无单点故障,Master宕机情况下,消息无延迟,服务可用性与数据可用性都非常高;

缺点:性能比异步复制模式略低(大约低10%左右),发送单个消息的RT会略高,且目前版本在主节点宕机后,备机不能自动切换为主机。

本篇文章介绍如何用两台服务器搭建双Nameserver、双主Broker、双从Broker、无单点故障的高可用RocketMQ集群,两台服务器IP分别为:192.168.31.186和192.168.31.231。

二、安装环境
Linux版本:CenterOS 7
RocketMQ版本:4.7.0
Java版本:jdk1.8
三、安装步骤
1.安装java环境,这里不再赘述
2.安装NameServer
在两台机器上分别安装启动NameServer,以其中一台为例。

下载解压安装包,创建data目录并进入到data目录

[root@rocketmq-2 data] mkdir /data
[root@rocketmq-2 data]# wget https://mirror.bit.edu.cn/apache/rocketmq/4.7.0/rocketmq-all-4.7.0-bin-release.zip
[root@rocketmq-2 data]# unzip rocketmq-all-4.7.0-bin-release.zip

启动NameServer

[root@rocketmq-2 data]# nohup sh /data/rocketmq-all-4.7.0-bin-release/bin/mqnamesrv &

验证NameServer是否启动成功

[root@rocketmq-2 data]# jps
1842 NamesrvStartup

停止NameServer

[root@rocketmq-2 rocketmq-all-4.7.0-bin-release]# sh /data/rocketmq-all-4.7.0-bin-release/bin/mqshutdown namesrv

3.安装Broker
每台机器上都要启动一个Master角色和Slave角色的Broker,并互为主备,即在A机器上启动broker-a的master节点、broker-b-s的slave节点;在B机器上启动broker-b的master节点、broker-a-s的slave节点。

在conf目录下提供了几种集群方式配置文件的示例,2m-noslave=双master模式;2m-2s-sync=双master双slave同步双写模式;2m-2s-async=双master双slave异步复制模式。

本次安装采用2m-2s-async模式

3.1 编辑broker配置文件
在192.168.31.186机器上的Master Broker的配置文件broker-a.properties

# 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=rocketmq-cluster
#broker名字,注意此处不同的配置文件填写的不一样  例如:在a.properties 文件中写 broker-a  在b.properties 文件中写 broker-b
brokerName=broker-a
#0 表示 Master,>0 表示 Slave
brokerId=0
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=120
#Broker 的角色,ASYNC_MASTER=异步复制Master,SYNC_MASTER=同步双写Master,SLAVE=slave节点
brokerRole=ASYNC_MASTER
#刷盘方式,ASYNC_FLUSH=异步刷盘,SYNC_FLUSH=同步刷盘 
flushDiskType=SYNC_FLUSH
#Broker 对外服务的监听端口
listenPort=10911
#nameServer地址,这里nameserver是单台,如果nameserver是多台集群的话,就用分号分割(即namesrvAddr=ip1:port1;ip2:port2;ip3:port3)
namesrvAddr=192.168.31.186:9876;192.168.31.231:9876
#每个topic对应队列的数量,默认为4,实际应参考consumer实例的数量,值过小不利于consumer负载均衡
defaultTopicQueueNums=8
#是否允许 Broker 自动创建Topic,生产建议关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,生产建议关闭
autoCreateSubscriptionGroup=true
#设置BrokerIP
brokerIP1=192.168.31.186
#存储路径
storePathRootDir=/data/rocketmq-all-4.7.0-bin-release/data/store-a
#commitLog 存储路径
storePathCommitLog=/data/rocketmq-all-4.7.0-bin-release/data/store-a/commitlog
#消费队列存储路径存储路径
storePathConsumerQueue=/data/rocketmq-all-4.7.0-bin-release/data/store-a/consumequeue
#消息索引存储路径
storePathIndex=/data/rocketmq-all-4.7.0-bin-release/data/store-a/index
#checkpoint 文件存储路径
storeCheckpoint=/data/rocketmq-all-4.7.0-bin-release/data/store-a/checkpoint
#abort 文件存储路径
abortFile=/data/rocketmq-all-4.7.0-bin-release/data/store-a/abort
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000

在192.168.31.186机器上的Slave Broker的配置文件broker-b-s.properties

# 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=rocketmq-cluster
#broker名字,注意此处不同的配置文件填写的不一样  例如:在a.properties 文件中写 broker-a  在b.properties 文件中写 broker-b
brokerName=broker-b
#0 表示 Master,>0 表示 Slave
brokerId=1
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=120
#Broker 的角色,ASYNC_MASTER=异步复制Master,SYNC_MASTER=同步双写Master,SLAVE=slave节点
brokerRole=SLAVE
#刷盘方式,ASYNC_FLUSH=异步刷盘,SYNC_FLUSH=同步刷盘 
flushDiskType=SYNC_FLUSH
#Broker 对外服务的监听端口
listenPort=11011
#nameServer地址,这里nameserver是单台,如果nameserver是多台集群的话,就用分号分割(即namesrvAddr=ip1:port1;ip2:port2;ip3:port3)
namesrvAddr=192.168.31.186:9876;192.168.31.231:9876
#每个topic对应队列的数量,默认为4,实际应参考consumer实例的数量,值过小不利于consumer负载均衡
defaultTopicQueueNums=8
#是否允许 Broker 自动创建Topic,生产建议关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,生产建议关闭
autoCreateSubscriptionGroup=true
#设置BrokerIP
brokerIP1=192.168.31.186
#存储路径
storePathRootDir=/data/rocketmq-all-4.7.0-bin-release/data/store-b
#commitLog 存储路径
storePathCommitLog=/data/rocketmq-all-4.7.0-bin-release/data/store-b/commitlog
#消费队列存储路径存储路径
storePathConsumerQueue=/data/rocketmq-all-4.7.0-bin-release/data/store-b/consumequeue
#消息索引存储路径
storePathIndex=/data/rocketmq-all-4.7.0-bin-release/data/store-b/index
#checkpoint 文件存储路径
storeCheckpoint=/data/rocketmq-all-4.7.0-bin-release/data/store-b/checkpoint
#abort 文件存储路径
abortFile=/data/rocketmq-all-4.7.0-bin-release/data/store-b/abort
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000

在192.168.31.231机器上的Master Broker的配置文件broker-b.properties

# 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=rocketmq-cluster
#broker名字,注意此处不同的配置文件填写的不一样  例如:在a.properties 文件中写 broker-a  在b.properties 文件中写 broker-b
brokerName=broker-b
#0 表示 Master,>0 表示 Slave
brokerId=0
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=120
#Broker 的角色,ASYNC_MASTER=异步复制Master,SYNC_MASTER=同步双写Master,SLAVE=slave节点
brokerRole=ASYNC_MASTER
#刷盘方式,ASYNC_FLUSH=异步刷盘,SYNC_FLUSH=同步刷盘 
flushDiskType=SYNC_FLUSH
#Broker 对外服务的监听端口
listenPort=10911
#nameServer地址,这里nameserver是单台,如果nameserver是多台集群的话,就用分号分割(即namesrvAddr=ip1:port1;ip2:port2;ip3:port3)
namesrvAddr=192.168.31.186:9876;192.168.31.231:9876
#每个topic对应队列的数量,默认为4,实际应参考consumer实例的数量,值过小不利于consumer负载均衡
defaultTopicQueueNums=8
#是否允许 Broker 自动创建Topic,生产建议关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,生产建议关闭
autoCreateSubscriptionGroup=true
#设置BrokerIP
brokerIP1=192.168.31.231
#存储路径
storePathRootDir=/data/rocketmq-all-4.7.0-bin-release/data/store-b
#commitLog 存储路径
storePathCommitLog=/data/rocketmq-all-4.7.0-bin-release/data/store-b/commitlog
#消费队列存储路径存储路径
storePathConsumerQueue=/data/rocketmq-all-4.7.0-bin-release/data/store-b/consumequeue
#消息索引存储路径
storePathIndex=/data/rocketmq-all-4.7.0-bin-release/data/store-b/index
#checkpoint 文件存储路径
storeCheckpoint=/data/rocketmq-all-4.7.0-bin-release/data/store-b/checkpoint
#abort 文件存储路径
abortFile=/data/rocketmq-all-4.7.0-bin-release/data/store-b/abort
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000

在192.168.31.231机器上的Slave Broker的配置文件broker-a-s.properties

# 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=rocketmq-cluster
#broker名字,注意此处不同的配置文件填写的不一样  例如:在a.properties 文件中写 broker-a  在b.properties 文件中写 broker-b
brokerName=broker-a
#0 表示 Master,>0 表示 Slave
brokerId=1
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=120
#Broker 的角色,ASYNC_MASTER=异步复制Master,SYNC_MASTER=同步双写Master,SLAVE=slave节点
brokerRole=SLAVE
#刷盘方式,ASYNC_FLUSH=异步刷盘,SYNC_FLUSH=同步刷盘 
flushDiskType=SYNC_FLUSH
#Broker 对外服务的监听端口
listenPort=11011
#nameServer地址,这里nameserver是单台,如果nameserver是多台集群的话,就用分号分割(即namesrvAddr=ip1:port1;ip2:port2;ip3:port3)
namesrvAddr=192.168.31.186:9876;192.168.31.231:9876
#每个topic对应队列的数量,默认为4,实际应参考consumer实例的数量,值过小不利于consumer负载均衡
defaultTopicQueueNums=8
#是否允许 Broker 自动创建Topic,生产建议关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,生产建议关闭
autoCreateSubscriptionGroup=true
#设置BrokerIP
brokerIP1=192.168.31.231
#存储路径
storePathRootDir=/data/rocketmq-all-4.7.0-bin-release/data/store-a
#commitLog 存储路径
storePathCommitLog=/data/rocketmq-all-4.7.0-bin-release/data/store-a/commitlog
#消费队列存储路径存储路径
storePathConsumerQueue=/data/rocketmq-all-4.7.0-bin-release/data/store-a/consumequeue
#消息索引存储路径
storePathIndex=/data/rocketmq-all-4.7.0-bin-release/data/store-a/index
#checkpoint 文件存储路径
storeCheckpoint=/data/rocketmq-all-4.7.0-bin-release/data/store-a/checkpoint
#abort 文件存储路径
abortFile=/data/rocketmq-all-4.7.0-bin-release/data/store-a/abort
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000

3.2 启动broker
启动时,先启动两台机器上的Master节点,再启动两台机器上的Slave节点。

192.168.31.186上启动broker-a

[root@rocketmq-1 rocketmq-all-4.7.0-bin-release]# nohup sh bin/mqbroker -c conf/2m-2s-async/broker-a.properties &

192.168.31.231上启动broker-b

[root@rocketmq-2 rocketmq-all-4.7.0-bin-release]# nohup sh bin/mqbroker -c conf/2m-2s-async/broker-b.properties &

192.168.31.231上启动broker-a-s

[root@rocketmq-2 rocketmq-all-4.7.0-bin-release]# nohup sh bin/mqbroker -c conf/2m-2s-async/broker-a-s.properties &

192.168.31.186上启动broker-b-s

[root@rocketmq-1 rocketmq-all-4.7.0-bin-release]# nohup sh bin/mqbroker -c conf/2m-2s-async/broker-b-s.properties &

3.3 注意事项
3.3.1 内存不足

Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000005c0000000, 8589934592, 0) failed; error='Cannot allocate memory' (errno=12)
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 8589934592 bytes for committing reserved memory.
# An error report file with more information is saved as:
# /data/rocketmq-all-4.7.0-bin-release/hs_err_pid1841.log

原因:broker的java启动内存参数配置的是8g,请根据服务器实际资源做调整。
解决方案:修改内存参数,在bin/runbroker.sh文件中

JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn512m"

3.3.2 开放RocketMQ相关端口
NameServer的9876端口、Broker的10911、11011、10909、11009端口

可以选择关闭服务器防火墙或者开放相应的端口

3.4 验证
查看broker.log日志文件输出正常,日志文件的目录在/data/rocketmq-all-4.7.0-bin-release/conf/logback_broker.xml可以查看/修改

测试

export  NAMESRV_ADDR=localhost:9876

启动生产者

sh /opt/rocketmq/bin/tools.sh org.apache.rocketmq.example.quickstart.Producer

启动消费者

sh /opt/rocketmq/bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer

3.5 mqadmin工具
查看集群情况

[root@rocketmq-1 rocketmq-all-4.7.0-bin-release]# sh bin/mqadmin clusterList -n "192.168.31.186:9876;192.168.31.231:9876"
RocketMQLog:WARN No appenders could be found for logger (io.netty.util.internal.PlatformDependent0).
RocketMQLog:WARN Please initialize the logger system properly.
#Cluster Name     #Broker Name            #BID  #Addr                  #Version                #InTPS(LOAD)       #OutTPS(LOAD) #PCWait(ms) #Hour #SPACE
rocketmq-cluster  broker-a                0     192.168.31.186:10911   V4_7_0                   0.00(0,0ms)         0.00(0,0ms)          0 441917.21 -1.0000
rocketmq-cluster  broker-a                1     192.168.31.231:11011   V4_7_0                   0.00(0,0ms)         0.00(0,0ms)          0 441917.21 0.1308
rocketmq-cluster  broker-b                0     192.168.31.231:10911   V4_7_0                   0.00(0,0ms)         0.00(0,0ms)          0 441917.21 -1.0000
rocketmq-cluster  broker-b                1     192.168.31.186:11011   V4_7_0                   0.00(0,0ms)         0.00(0,0ms)          0 441917.21 -1.0000

3.6 关闭服务
先关闭Broker、再关闭NameServer,服务启动的时候正好相反。

[root@rocketmq-1 rocketmq-all-4.7.0-bin-release]# sh bin/mqshutdown broker

[root@rocketmq-1 rocketmq-all-4.7.0-bin-release]# sh bin/mqshutdown namesrv

4.安装rocketmq-console(可选)
rocketmq-console是RocketMQ项目的扩展插件,是一个图形化管理控制台,提供Broker集群状态查看,Topic管理,Producer、Consumer状态展示,消息查询等常用功能,这个功能在安装好RocketMQ后需要额外单独安装、运行。

在本地有git+maven的开发环境可以自行在https://github.com/apache/rocketmq-externals克隆下载项目后,再通过maven打包rocketmq-console,或者可以在服务器上参考如下步骤进行。

4.1 安装maven
下载安装包

[root@rocketmq-1 data]#  wget http://mirrors.cnnic.cn/apache/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz

解压

[root@rocketmq-1 data]# tar zxvf apache-maven-3.5.4-bin.tar.gz

配置环境变量

[root@rocketmq-1 data]# vi /etc/profile

在最后输入:

export MAVEN_HOME=/data/apache-maven-3.5.4
export PATH=$PATH:$MAVEN_HOME/bin

保存后退出使之生效

[root@rocketmq-1 data]# source /etc/profile

验证

[root@rocketmq-1 data]# mvn -v

4.2 下载打包rocketmq-console
在https://github.com/apache/rocketmq-externals页面下载zip包上传至任意一个服务器上。

解压

[root@rocketmq-1 data]# unzip rocketmq-externals-master.zip

进入rocketmq-console目录

[root@rocketmq-1 data]# cd rocketmq-externals-master/rocketmq-console/

打包

[root@rocketmq-1 rocketmq-console]# mvn clean package -Dmaven.test.skip=true

4.3 启动rocketmq-console

[root@rocketmq-1 rocketmq-console]# java -jar target/rocketmq-console-ng-1.0.1.jar --rocketmq.config.namesrvAddr='192.168.31.186:9876;192.168.31.231:9876'

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

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

相关文章

AWS Skill Builder - 练习 ACF 认证的第一站

AWS Skill Builder - 练习 ACF 认证的第一站 AWS Skill Builder https://explore.skillbuilder.aws/learn 是 AWS 针对要想要自学 AWS 云计算技术所提供的网站,里面提了很多自学的课程,今天要展示的是在学习完 AWS Academy Cloud Foundations 课程后&am…

车牌识别停车场智能管理系统

摘 要 本论文主要论述了如何使用JSP技术开发一个车牌识别停车场智能管理系统 ,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发。在引言中,作者将论述车牌识别停车场智能管理系统的…

【Paraview教程】第一章安装与基础介绍

1 Paraview介绍 1.1基本介绍 ParaView是一个开源的,跨平台的数据处理和可视化程序。ParaView用户可以迅速的建立起可视化环境利用定量或者是定性的手段去分析数据。利用它的批量处理能力可以在三维空间内在工具栏和展示界面中进行交互操作,从而实现“数…

PDF中的某个图或表想几乎无损的插入ppt或者word里的方法

要使用ps打开pdf并另存为tiff或者,其他方法存储的tiff可能不如这种方法高清 0. 参考方法网址:PS导出符合投稿规范的图片 1. pdf可能很多页,一页内有很多图像文字,要先使用福昕阅读器(破解版本的)裁剪到想保留tiff的那张图或那个表…

四、nginx反向代理

一、反向代理 解释:nginx反向代理如正向代理原理类似,只是实现了不同的功能。客户端将请求发给服务端(代理服务器)后,服务端(代理服务器)并没有自己处理请求,而是交给被代理服务器&…

P4用软件实现和硬件实现的区别

摘要:我们目前看到从可配置性有限的固定功能网络设备向具有完全可编程处理流水线的网络设备的转变。这种发展的一个突出例子是P4,它提供了一种语言和参考架构模型来设计和编程网络设备。这个参考模型的核心元素是可编程匹配动作表,它定义了网…

[附源码]Python计算机毕业设计高校餐厅评价系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

Java多线程编程【一文全解】

文章目录01 线程简介02 进程的创建> 继承 Thread 类> 实现 Runnable 接口> 实现 Callable 接口※ Lambda表达式 λ※ 静态代理模式03 线程状态04 线程方法> 停止线程 stop( )> 线程休眠 sleep( )> 线程礼让 yield( )> 线程强行执行 join( )> 线程状态观…

【疑难攻关】——XXE漏洞快速入门

作者名:Demo不是emo 主页面链接:主页传送门创作初心:舞台再大,你不上台,永远是观众,没人会关心你努不努力,摔的痛不痛,他们只会看你最后站在什么位置,然后羡慕或鄙夷座右…

Redis快速上手神册,17W字详解其实Redis也就那么一回事!

开始使用Redis Redis是一个开源的数据库,经常被用来构建高性能的可扩展网络应用。它使用内存数据库,这使得它比其他数据库更快。 Redis用于我们的应用程序中的短期数据。它经常被用于会话或网页头数。 通过使用内存数据库,我们不需要有大的…

表空间的空间管理算法

存储结构 逻辑结构 物理结构 database tablespace --> datafile segment extent oracle --> os block block 表空间的空间管理: DMT(dictionary management tablespace): LMT(local management tablespace): SQL>…

[计算机毕业设计]远程监督的跨语言实体关系抽取

前言 📅大四是整个大学期间最忙碌的时光,一边要忙着准备考研,考公,考教资或者实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科同学来说是充满挑战。为帮助大家顺利通过…

代码随想录算法训练营day57 | 647. 回文子串,516.最长回文子序列

647. 回文子串: 暴力解法:两层for循环,遍历区间起始位置和终止位置,然后判断这个区间是不是回文。时间复杂度:O(n^3). Output Limit Exceeded class Solution:#时间复杂度:O(n^3)def countSubstrings(self, s: s…

线程与进程

目录 1.为什么使用线程? 2.什么是线程? 3.进程和线程的工作原理 3.1 进程 3.2 线程 4.线程安全问题 5.总结:线程和进程的区别(面试题) 1.为什么使用线程? 线程与进程都是用来解决并发编程问题的&…

推荐 5 个不错的 React Native UI 库

最近在做一个 React Native 的项目,调研了下 UI 库,下面列举 5 个: React Native Elements React Native Element 是相当闻名的 UI 库,它遵循 Material 设计规范,同时你还可以精细地控制每一个组件。 TL;DR 22.2k G…

朴素贝叶斯——垃圾邮件过滤

文章目录利用朴素贝叶斯进行文档分类1、获取数据集2、切分文本3、构建词表和分类4、构建分类器5、测试算法利用朴素贝叶斯进行垃圾邮件过滤1、导入数据集2、垃圾邮件预测总结利用朴素贝叶斯进行文档分类 1、获取数据集 下载数据集,获取到一些邮件文档。其中ham文件…

Intersoft WebUI Studio for asp.net/asp.mvc

企业 Web 开发的终极工具集。WebUI 建立在坚实的框架之上,为 ASP.NET 提供创新和先进的 40 多个优质 UI 组件,让您轻松及时地构建强大的业务 Web 应用程序。 不仅仅是全面的 UI 工具集。 在提供业界最佳网络体验的愿景的支持下,WebUI 提供了前…

AQS源码解析 8.共享模式_Semaphore信号量

AQS源码解析—共享模式_Semaphore信号量 简介 synchronized 可以起到锁的作用,但某个时间段内,只能有一个线程允许执行。 Semaphore(信号量)用来限制能同时访问共享资源的线程上限,非重入锁。 Semaphore 是什么&am…

377. 组合总和 Ⅳ【完全背包】求排列数:外层for背包,内层for物品;求组合数:外层for物品,内层for背包;

377. 组合总和 Ⅳ 给你一个由 不同 整数组成的数组 nums ,和一个目标整数 target 。请你从 nums 中找出并返回总和为 target 的元素组合的个数。 题目数据保证答案符合 32 位整数范围。 示例 1: 输入:nums [1,2,3], target 4 输出&#x…

如何利用快解析远程访问家庭智能网关

随着家庭宽带用户的暴增,涌现出了许多连接家居设备和控制中心的产品,如家庭智能网关。家庭智能网关是家居智能化的心脏,通过它实现系统的信息采集、信息输入、信息输出、集中控制、远程控制、联动控制等功能。 ​ 智能家庭网关具备智能家居控…