- 博客(27)
- 收藏
- 关注
原创 【rocketmq系列】【四】【消息发送】
消息队列RocketMQ版提供三种方式来发送普通消息:同步(Sync)发送、异步(Async)发送和单向(Oneway)发送。了解点发送方式的原理应用场景消息队列如何进行负载消息发送如何实现高可用批量消息发送如何实现一致性3种发送方式同步发送原理同步发送是指消息发送方发出一条消息后,会在收到服务端返回响应之后才发下一条消息的通讯方式。应用场景应用场景非常广泛,例如重要通知邮件、报名短信通知、营销短信系统等。原理同步发送是指消息发送方发出一条消息后,
2021-03-30 17:53:50
474
原创 【rocketmq系列】【三】【NameServer-路由中心】
文章目录路由注册&故障剔除路由元信息参数解释路由元数据类图运行时数据结构路由注册发送心跳包处理心跳包路由剔除路由发现路由管理,服务注册,服务发现存储的是什么数据?避免单点故障,提供高可用?接口scheduleAtFixedRate原型定义及参数说明接口scheduleAtFixedRate原型定义及参数说明 public ScheduledFuture<?> scheduleAtFixedRate(Runnable command, long initialDela
2021-03-29 20:31:31
253
原创 【rocketmq系列】【二】【设计理念和目标】
文章目录设计理念1、NameServer设计简单2、高效的IO存储机制3、容忍设计缺陷设计目标1、架构模式2、顺序消息3、消息过滤4、消息存储5、消息高可用性6、消息到达(消费)低延迟7、确保消息必须被消费一次8、回溯消息9、消息堆积10、定时消息11、消息重试机制设计理念 RocketMQ基于主题的发布和订阅模式。其核心功能包括消息发送消息存储(Broker)消息消费。性能体现在三个方面:1、NameServer设计简单NameServer设计简单,摒弃Zookeeper当注册中心
2021-03-29 16:07:03
167
原创 【rocketmq系列】【一】【获取&并调试源代码】
文章目录获取源代码源码目录结构一、准备环境二、启动NameServer三、启动Broker四、启动 Consumer五、启动 Producer六、参考获取源代码在idea中打开项目,执行命令git clone https://github.com/apache/rocketmqmvn clean install -DskipTests运行代码步骤1、启动NameServer2、启动Broker3、运行Consumer4、运行Producer源码目录结构一、准备环境新建rocket
2021-03-29 15:31:41
360
原创 ubuntu18.04安装redis
sudo apt-get install redis-serversudo apt-get install redis-server设置密码首先打开Redis配置文件redis.confsudo vi /etc/redis/redis.conf找到# requirepass foobared这一行,将注释符号#去掉,将后面修改成自己的密码,例如,设置密码为123456requirepass 123456开启远程访问默认情况下,Redis服务器不允许远程访问,只允许本机访问,所以我们需要设
2021-02-17 21:26:29
132
原创 Ubuntu18.04安装zookeeper
下载zookeeperhttp://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.6.2/ wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.6.2/apache-zookeeper-3.6.2-bin.tar.gz使用apache-zookeeper-3.6.2.tar.gz 会报错,所以使用apache-zookeeper-3.6.2-bin.tar.gzError: Coul
2021-02-17 21:00:08
221
原创 JVM-线程上下文类加载器
文章目录SPI是什么线程上下文类加载器(TCCL)总结参考SPI是什么Java提供了很多SPI,允许第三方为这些接口提供实现,最常见的SPI实现有JDBC、JNDI等等,根据类加载器的双亲委派模型,加载ServiceLoader的 BootstrapClassLoader 是不能加载SPI的实现类的,因为SPI的实现类是由 AppClassLoader 加载的,而 BootstrapClassLoader 是不能委派 AppClassLoader 来加载类的,那该怎么办呢?SPI约定为:当服务的提供
2020-09-25 23:18:21
1052
1
原创 操作
所有操作都要连校园网http://10.171.123.122:8080/xkp/student/batchDELETE选这个,点Body, 那边有个JSON这个选上去{ "studentNumbers" : ["2018220229","2017223974","2017212358"]}这是学生学号,一个列表,按照我这个格式把学号填进去然后复制到下面的空白处,和图里边保持一样这个Header,填一下,key就是token,value是需要你用xkpzx账号登陆一下,然后如图,打开
2020-09-24 00:36:44
119
原创 阿里巴巴2020.3.20春招暑期实习笔试题
参考自 :https://blog.youkuaiyun.com/qq_41999455/article/details/105040128第一题题目描述:有一叠扑克牌,每张牌介于1和10之间有四种出牌方法:单出一张出两张相同的牌(对子)出五张顺子(如12345)出三连对子(如112233)给10个数,表示1-10每种牌有几张,问最少要多少次能出完?题目解析:采用暴力回溯法求解:1、...
2020-04-12 10:16:02
774
原创 idea使用git提交与合并代码
自己分支合并到主分支将gith或者Gitee上的项目clone到本地创建自己的分支点击右下角的git小窗口,然后点击+new branch,输入分支的名称、版本号,然后就会自动创建一个分支创建后自动切换到新建的分支在当前分支修改代码,修改完之后点击提交,此时代码提交到了新建的分支当中点击右下角的git窗口,点击master分支,点击checkout切换到maste...
2020-04-08 10:05:16
1158
原创 Dubbo源码分析-服务导出
本篇文章,我们来研究一下 Dubbo 导出服务的过程。Dubbo 服务导出过程始于 Spring 容器发布刷新事件,Dubbo 在接收到事件后,会立即执行服务导出逻辑。整个逻辑大致可分为三个部分,第一部分是前置工作,主要用于检查参数,组装 URL。第二部分是导出服务,包含导出服务到本地 (JVM),和导出服务到远程两个过程。第三部分是向注册中心注册服务,用于服务发现。...
2020-04-01 22:26:48
242
原创 编译Dubbo2.6.x源码
下载地址 :https://github.com/apache/dubbo/tree/2.6.x解压文件,进入dubbo目录依次执行系列命令可以通过以下的构建命令来跳过单元测试mvn clean install -Dmaven.test.skip通过以下命令以构建 Dubbo 的源代码 jar 包,这个看需要,不是必须执行的mvn clean source:jar install -...
2020-03-29 23:18:02
350
原创 dubbo源码分析-自适应扩展机制
本文紧接上一篇博文dubbo源码分析-Dubbo SPI参考自Dubbo官方文档在 Dubbo 中,很多拓展都是通过 SPI 机制进行加载的,比如 Protocol、Cluster、LoadBalance 等。有时,有些拓展并不想在框架启动阶段被加载,而是希望在拓展方法被调用时,根据运行时参数进行加载。这听起来有些矛盾,但是Dubbo通过自适应拓展机制很好的解决了。自适应拓展机制的实现比较复...
2020-03-29 21:46:57
351
原创 SpringBoot整合RocketMQ入门案例
ubuntu环境搭建RocketMQ我在win10安装一直找不到dt.jar,so只能去linus装了。RocketMQ官网说这样安装,但是不太行,而且很慢。自己下载的bin格式文件。最后终于成功。详细步骤下载RocketMQ的源码(上图示),并解压缩unzip rocketmq-all-4.2.0-bin-release.zip在解压缩的目录中,进入bin目录,视情况修...
2020-03-29 17:03:21
938
原创 线上服务CPU100%问题快速定位实战
功能问题 :通过日志,单步调试相对比较好定位。性能问题 :例如线上服务器CPU100%,如何找到相关服务,如何定位问题代码,更考验技术人的功底。某服务器上部署了若干tomcat实例,即若干垂直切分的Java站点服务,以及若干Java微服务,突然收到运维的CPU异常告警。问:如何定位是哪个服务进程导致CPU过载,哪个线程导致CPU过载,哪段代码导致CPU过载?步骤一、找到最耗CPU的进程工...
2020-03-28 21:21:32
416
原创 如何解决引用计数的循环引用问题
循环引用public class MyObject { public Object ref = null; public static void main(String[] args) { MyObject myObject1 = new MyObject(); MyObject myObject2 = new MyObject(); ...
2020-03-28 17:06:43
3603
2
原创 dubbo源码分析-Dubbo SPI
package org.apache.dubbo.demo.consumer;import org.apache.dubbo.common.extension.ExtensionLoader;public class DubboSPITest { public static void main(String[] args) { // 获取 extensionLoader...
2020-03-28 15:26:35
181
原创 Java的SPI是什么
Java 中区分 API 和 SPI,通俗的讲:API 和 SPI 都是相对的概念,他们的差别只在语义上,API 直接被应用开发人员使用,SPI 被框架扩展人员使用API Application Programming Interface大多数情况下,都是实现方来制定接口并完成对接口的不同实现,调用方仅仅依赖却无权选择不同实现。SPI Service Provider Interfa...
2020-03-27 18:57:49
588
原创 剖析slf4j原理并实现自己的日志框架
本文项目已开源欢迎各位看官前来指出错误并优化。日志系统slf4j作用及其实现原理slf4j是门面模式的典型应用,因此在讲slf4j前,我们先简单回顾一下门面模式门面模式门面模式,其核心为外部与一个子系统的通信必须通过一个统一的外观对象进行,使得子系统更易于使用。用一张图来表示门面模式的结构为:门面模式的核心为Facade即门面对象,门面对象核心为几个点:知道所有子角色...
2020-03-27 15:44:49
1226
原创 Java数据比较Integer
Java数据比较IntegerIntegerCache.low = -128 , IntegerCache.high = 127Integer类型与int类型通过==比较,Integer会自动拆箱,转换成int数值进行比较equals方法更是读取对应的int数值进行比较。因此引用类型与值类型之间的比较,使用equals与==都可以。最好是equals不仅仅...
2019-10-19 21:55:17
167
原创 删数问题
#include<iostream>#include<string>using namespace std;int main(){ /* string n; int s,i,x,l,m; while(cin>>n>>s) { i=-1,m=0,x=0; l=n.length();...
2019-10-08 13:00:41
198
原创 最优分解问题
#include <iostream>#include<string>#include<vector>#include<cstdlib>#include<cstdio>#include<cmath>using namespace std;void taixin(int n){ int a[100];...
2019-10-08 12:59:54
237
原创 收集样本问题
方法一/**思路:从起点到终点找到两条最优的路线,且不能重复,用DP思想的话可以通过四维数组来实现设dp[x1][y1][x2][y2]表示从起点(1,1)开始到点(x1,y1)(x2,y2)的最优路线,则它上一步有四种状态:1.第一个点从上走来,第二个点也从上走来,则此时好感度为dp[x1-1][y1][x2-1][y2]+mp[x1][y1]+mp[x2][y2]2.第一个点从左走...
2019-10-07 22:08:41
2393
7
原创 c++对二叉树的先序,后序,中序递归,非递归先序,后序,中序,层次遍历
树的总结#include <iostream>#include<vector>#include<cstdio>#include<cstdlib>#include<string>#include<cstring>#include<queue>#include <sstream>#incl...
2019-10-04 18:59:15
199
原创 SpringBoot之RabbitMQ实现延时队列(订单延迟取消,消费端丢失消息的防止)
**SpringBoot之RabbitMQ实现延时队列(订单延迟取消,消费端丢失消息的防止)**1.1. 什么是死信队列DLX,全称为 Dead-Letter-Exchange,可以称之为死信交换器,也有人称之为死信邮箱。当消息在一个队列中变成死信 (dead message) 之后,它能被重新被发送到另一个交换器中,这个交换器就是 DLX,绑定 DLX 的队列就称之为死信队列。消...
2019-07-28 13:48:04
1385
原创 阿里云Ubuntu18.04配置jdk 8,tomcat 8.5,mysql 5.7,并把Javaweb项目部署到服务器上附xshell和winscp下载地址
阿里云Ubuntu18.04配置jdk 8,tomcat 8.5,mysql 5.7,并把Javaweb项目部署到服务器上附xshell和winscp下载地址1. 阿里云Ubuntu18.04位学生机购买和配置2. 以下是基于linus的 !!!3. 配置jdk83.1. 去官网下载jdk包,目前公司用的还是jdk8,所以下载linus的jdk8。3.2. 配置java环境变量4. 安装配置Tom...
2019-07-21 20:44:52
874
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人