IDEA的微服务启动的控制台 对于公司一般采用的微服务架构的项目来说因为服务比较多 所以不可能每一个 项目都启动一个控制台这样对于统一管理来说是个灾难所以统一的管理 是比较简洁和有条理的 非常方便分析问题怎么设置呢?view-tool windows - services然后出现控制台设置选项勾选一下最后设置服务类别打开列表 往下找选择Spring boot就可以了看到所以需要启动的服务入口了后面启动就在这里 很方便...
RocketMQ事务消息 RocketMQ事务消息的实现原理基于两阶段提交和定时事务状态回查来决定消息最终是提交还是回滚。应用程序在事务内完成相关业务数据落库后,需要同步调用RocketMQ消息发送接口,发送状态为prepare的消息。消息发送成功后,RocketMQ服务器会回调RocketMQ消息发送者的事件监听程序,记录消息的本地事务状态,该相关标记与本地业务操作同属一个事务,确保消息发送与本地事务的原子性。 RocketMQ在收到类型为prepare的消息时,会首先备份消息的原主题与原消息消费队列,然后将消息存储在主
RocketMQ消息消费(三) 顺序消息RocketMQ支持局部消息顺序消费,可以确保同一个消息消费队列中的消息被顺序消费,如果需要做到全局顺序消费则可以将主题配置成一个队列,例如数据库BinLog等要求严格顺序的场景。根据并发消息消费的流程,消息消费包含如下4个步骤:消息队列负载、消息拉取、消息消费、消息消费进度存储。消息队列负载RocketMQ首先需要通过RebalanceService线程实现消息队列的负载,集群模式下同一个消费组内的消费者共同承担其订阅主题下消息队列的消费,同一个消息消费队列在同一时刻只会被消费组内一个
RocketMQ消息消费(二) 消息队列负载与重新分布机制RocketMQ消息队列重新分布是由RebalanceService线程来实现的。一个MQClient-Instance持有一个RebalanceService实现,并随着MQClientInstance的启动而启动。RebalanceService#run @Override public void run() { log.info(this.getServiceName() + " service started");
ElasticSearch基础篇 为什么要用ElasticSearch?完全把数据放在内存中是不可靠的,实际上也不太现实,当我们的数据达到PB级别时,按照每个节点96G内存计算,在内存完全装满的数据情况下,我们需要的机器是:1PB=1024T=1048576G节点数=1048576/96=10922个实际上,考虑到数据备份,节点数往往在2.5万台左右。成本巨大决定了其不现实!从前面讨论我们了解到,把数据放在内存也好,不放在内存也好,都不能完完全全解决问题。全部放在内存速度问题是解决了,但成本问题上来了。为解决以上问题...
SpirngBoot集成验证码生成EasyCaptcha POM依赖 <dependency> <groupId>com.github.whvcse</groupId> <artifactId>easy-captcha</artifactId> <version>1.6.2</version> </dependency>DEMOimport javax.
RocketMQ消息消费(一) 消息消费以组的模式开展,一个消费组内可以包含多个消费者,每一个消费组可订阅多个主题,消费组之间有集群模式与广播模式两种消费模式。集群模式,主题下的同一条消息只允许被其中一个消费者消费。广播模式,主题下的同一条消息将被集群内的所有消费者消费一次。消息服务器与消费者之间的消息传送也有两种方式:推模式、拉模式。所谓的拉模式,是消费端主动发起拉消息请求,而推模式是消息到达消息服务器后,推送给消息消费者。RocketMQ消息推模式的实现基于拉模式,在拉模式上包装一层,一个拉取任务完成后开始下一个拉取任务。Rock
调试RocketMQ的源代码 GitHub代码库链接:https://github.com/apache/rocketmq.git进行编译下载依赖mvn clean install -Dmaven.test.skip=true调试RocketMQ源码1.启动NameServer1.在RocketMQ运行主目录中创建conf、logs、store三个文件夹。2.配置 ROCKETMQ_HOMEROCKETMQ_HOME=E:\rocketmq3.从RocketMQ distribu..
求两个字符串的最长公共子串(动态规划) 最长公共子串问题是寻找两个或多个已知字符串最长的子串。此问题与最长公共子序列问题的区别在于子序列不必是连续的,而子串却必须是。public class A { private static int getCommonStrLength(String str1, String str2) { //创建一个二维数组大小,行列为str1.length()+1,str2.length() //这一步主要是为了生成网格数组 int len1 = str
RocketMQ消息存储篇(一) 存储概要设计RocketMQ主要存储的文件包括Comitlog文件、ConsumeQueue文件、IndexFile文件。RocketMQ将所有主题的消息存储在同一个文件中,确保消息发送时顺序写文件,尽最大的能力确保消息发送的高性能与高吞吐量。但由于消息中间件一般是基于消息主题的订阅机制,这样便给按照消息主题检索消息带来了极大的不便。为了提高消息消费的效率,RocketMQ引入了ConsumeQueue消息队列文件,每个消息主题包含多个消息消费队列,每一个消息队列有一个消息文件。IndexFile索引文
RocketMQ消息发送篇 RocketMQ支持3种消息发送方式:同步(sync)、异步(async)、单向(oneway)。同步:发送者向MQ执行发送消息API时,同步等待,直到消息服务器返回发送结果。 异步:发送者向MQ执行发送消息API时,指定消息发送成功后的回调函数,然后调用消息发送API后,立即返回,消息发送者线程不阻塞,直到运行结束,消息发送成功或失败的回调任务在一个新的线程中执行。 单向:消息发送者向MQ执行发送消息API时,直接返回,不等待消息服务器的结果,也不注册回调函数,简单地说,就是只管发,不在乎消息是否
RocketMQ路由中心NameServer篇 RocketMQ物理部署图Broker消息服务器在启动时向所有NameServer注册,消息生产者(Producer)在发送消息之前先从NameServer获取Broker服务器地址列表,然后根据负载算法从列表中选择一台消息服务器进行消息发送。NameServer与每台Broker服务器保持长连接,并间隔30s检测Broker是否存活,如果检测到Broker宕机,则从路由注册表中将其移除。但是路由变化不会马上通知消息生产者。NameServer启动流程NameServer启动类:org.ap
算法——归并排序 归并排序算法是基于归并(Merge)操作的一种有效排序算法,是采用分治法(Divide and Conquer)的典型应用。基本思想:归并排序的原理是先将原始数组分解为多个子序列,然后对每个子序列进行排序,最后将排好序的子序列合并起来。/** * @Classname A * @Description TODO * @Date 2020/12/30 11:15 * @Created zzf */public class A { public static void main
算法——插入排序 插入排序的基本思路是将一个数据插入已经排好序的序列中,从而得到一个新的有序数据,该算法适用于少量数据的排序,是稳定的排序方法。代码: for (int i = 1; i < a.length; i++) { //插入的数 int val = a[i]; //被插入的位置和前面一个数比较 int index = i - 1; //只要index值>=0
Java集成MinIO 官方文档地址:https://docs.min.io/cn/java-client-api-reference.html#setBucketPolicy1.pom依赖 <dependency> <groupId>io.minio</groupId> <artifactId>minio</artifactId> <version>3.0.10&
Maven 加载外部依赖解决方式 1.pom文件修改:此时我要引入一个名为jna和examples的jar。 <dependency> <groupId>com.sun</groupId> <artifactId>jna</artifactId> <version>1.0</version> </dependency>
海康NVR-SDK对接技术方案 1.下载SDKhttps://www.hikvision.com/cn/download_61.html2.DEMO使用1.修改SDK和LIB的PATH路径如: static HCNetSDK INSTANCE = (HCNetSDK) Native.loadLibrary("D:\\NVR\\CH-HCNetSDKV6.1.4.42_build20200527_win64\\Demo示例\\4- Java 开发示例\\1-ClientDemo\\ClientDemo