自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(95)
  • 收藏
  • 关注

原创 动态代理(JDK、CGLIB)

【代码】动态代理(JDK、CGLIB)

2023-11-10 15:48:41 118

原创 自定义类加载器

【代码】自定义类加载器。

2023-11-10 14:11:42 135

原创 propertyEditor

2、向Spring中(CustomEditorConfigurer)注册PropertyEditor。继承PropertyEditorSupport,实现PropertyEditor。整合了PropertyEditor和ConversionService的功能。2、向DefaultConversionService注册该实现类。1、实现ConditionalGenericConverter。最终实现 @Value的功能。spring自带的类型转化类。1、JDK自带的工具类。

2023-11-02 14:32:35 133

原创 beanDefinition读取器

3、ClassPathBeanDefinitionScanner 扫描某个包路径,对扫描到的类进行解析,扫描到的类上如果存在@Component注解,1、AnnotatedBeanDefinitionReader :可以直接把某个类转换为BeanDefinition,并且会解析该类上的注解。那么就会把这个类解析为一个BeanDefinition。编程式定义 BeanDefinition:自定义一个BeanDefinition,设置beanClass。BeanDefinition读取器。

2023-11-01 18:21:21 164

原创 dubbo-router

3、新建 ReadyRestartInstances。2、新建工具类 ZookeeperClients。1、引入 jar 包。

2023-06-18 02:27:09 398

原创 dubbo-async

2、消费组配置 consumer.xml。1、接口及实现类定义超时时间。

2023-06-16 20:45:23 106

原创 dubbo-loadbalance

1、生产组模拟多个服务,同时复制多个生产类及相关配置文件,每次启动生产类时,修改实现类,这样每次访问不同的服务打印的日志也不同。指定文件名:org.apache.dubbo.rpc.cluster.LoadBalance。① 新建 dubbo-spi-loadbalance 子模块。指定包名:META-INF/dubbo。② 自定义负载均衡类,按照一定规范。3、除了以上提供的负载均衡策略,也可以自定义。③ 在配置文件中注册该负载均衡类。④ 消费组定义负载均衡策略。2、主要修改消费组实现负载均衡。

2023-06-16 01:11:23 227

原创 dubbo-filter

1、编写模块 dubbo-filter,引入 dubbo jar 包。文件名:org.apache.dubbo.rpc.Filter。4、在 demo-base 中引入该过滤器模块,进行测试。2、编写 filter 类,按照规范。在指定文件夹下创建指定文件名称的文件。包名:META-INF/dubbo。3、在配置文件中注册过滤器。

2023-06-16 01:08:28 86

原创 dubbo-spi 示例

4、新建 dubbo-spi 启动模块 java-dubbo-spi-demo-main ,pom 引入 dubbo-api、dubbo-impl、 dubbo 组件。3、新建子模块 dubbo-spi-impl ,pom 文件引入 dubbo-api 接口模块。③ 该文件中具体内容为实现类的全路径。2、新建子模块 dubbo-api,pom 文件引入 dubbo 组件。1、新建父工程:java-dubbo-spi-demo。新建文件路径:如何找到具体的实现类?

2023-05-24 15:40:12 95

原创 java-spi-demo 简介

3、新建子模块,实现类模块 java_spi_demo_impl , pom 文件中引入 子接口模块 java_spi_demo_api,新建实现类 HelloServiceImpl。3、文件中内容是实现类全路径:com.deppon.impl.HelloServiceImpl。2、新建子接口模块 java_spi_demo_api ,再建接口类 HelloService。4、新建子模块 java-spi-demo-main ,pom 文件引入 接口类 和 实现类。

2023-05-24 13:57:37 181

原创 dubbo xml 工程搭建

备注:当生产者和消费者都设置了超时时间,以消费者超时时间为准。配置文件:dubbo-provider.xml。配置文件:dubbo-consumer.xml。配置文件:log4j.properties。配置文件:log4j.properties。2、新建子模块,公共api,主要是接口。3、新建子模块生产者,pom 文件如下。

2023-05-14 21:45:41 786

原创 dubbo 注解搭建工程

2、新建子模块,公共api 即 service-api ,主要是接口类。配置文件:dubbo-provider.properties。配置文件:dubbo-consumer.properties。1、新建主工程 demo-base , pom 配置如下。配置文件:log4j.properties。3、新建子模块,生产者 pom 文件如下。4、新建消费者 pom 文件如下。

2023-05-14 21:37:26 398

原创 curator-api 简单操作

【代码】curator-api 简单操作。

2023-05-12 16:35:30 48

原创 zkClient 客户端的日常使用

【代码】zkClient 客户端的日常使用。

2023-05-12 14:09:21 244

原创 zookeeper 删除节点信息

【代码】zookeeper 删除节点信息。

2023-05-10 10:47:31 408

原创 zookeeper 修改节点数据

【代码】zookeeper 修改节点数据。

2023-05-10 10:39:27 471

原创 zookeeper 读取节点及其下一级子节点信息

【代码】zookeeper 读取节点信息。

2023-05-10 09:57:02 150

原创 zookeeper 创建节点

创建临时顺序化节点: create -e -s /节点路径 值。创建持久序列化节点: create -s /节点路径 值。创建临时节点: create -e /节点路径 值。创建持久节点: create /节点路径 值。

2023-05-10 09:44:56 485

原创 ZNode 的状态信息

pZxid 表示该节点的子节点列表最后一次被修改的事务ID。只有子节点列表更新才会更新 pZxid,子节点内容变更不会更新。整个 ZNode 节点内容包括两部分:节点数据内容和节点状态信息。ephemeralOwner 表示创建该临时节点时的会话 sessionID,如果是持节性节点那么值为 0。mZxid 就是 Modified ZXID ,表示节点最后一次被修改时的事务 ID。cZxid 就是 Create ZXID ,表示节点被创建时的事务 ID。aclVersion 标识 acl 版本。

2023-05-09 09:31:15 441

原创 ZNode的类型

2、持久顺序节点:就是顺序的持久节点,节点特性和持久节点是一样的,只是额外特性表现在顺序上。3、临时节点:就是自动会被清理掉的节点,它的生命周期和客户端会话绑在一起,客户端会话结束,节点会被删除掉。与持久节点不同的是,临时节点不能创建子节点。1、持久节点:是 Zookeeper 中最常见的一种节点类型,所谓持久节点,就是指节点被创建后会一直存在服务器,直到删除操作主动清除。4、临时顺序节点:就是有顺序的临时节点,和持久顺序节点相同,在其创建的时候会在名字后面加上数字后缀。

2023-05-09 08:57:37 396

原创 zookeeper 处理写请求流程

2、leader接收到follower发送过来的写请求后,会把该写请求转换成带有各种状态的事务,会把该 事务进行广播(发送 proposal)3、所有接收到 proposal 的 follower 就要进行投票,都需要像 leader 返回 ACK。1、follower接收到客户端发送过来的写请求后,会把该写请求转发给leader来处理。备注:observer 只是不参与投票,其他功能跟 follower 一样。4、发送事务提交请求。

2023-05-04 16:55:55 256

原创 Rpc 的远程通信 Demo

1、新建三个模块,第一公共模块。

2023-04-19 09:43:25 72

原创 Netty 的网络通信 demo

2、Netty 服务端。3、Netty 客户端。1、引入 jar 包。

2023-04-17 17:24:36 120

原创 NIO 远程通信 demo

【代码】NIO 远程通信 demo。

2023-04-17 16:49:42 77

原创 BIO 远程通信 demo

【代码】BIO 远程通信 demo。

2023-04-17 14:46:40 46

原创 RMI 远程通信 demo

1、定义实体,实现序列化接口。2、定义接口和实现类。3、定义RMI服务端。

2023-04-17 14:23:30 40

原创 Mybatis设置sql打印日志

备注:log4j 运行级别调到DEBUG,可以在控制台打印出mybatis运行的sql语句。第一种:使用 mybatis 自带的打印。第三种:springboot 增加配置。第二种:使用 log4j 日志打印。

2023-04-14 10:47:41 4982

原创 Paxos算法和Raft算法有什么区别?

3.日志复制:在Paxos算法中,每个节点都可以提议一个值,但只有一个值会被选中,而在Raft算法中,Leader节点负责接收客户端请求并将其转化为日志条目,然后将日志条目复制到其他节点。2.Leader选举:在Paxos算法中,Leader的选举是通过多轮消息交互来完成的,而在Raft算法中,Leader的选举是通过心跳机制和超时机制来完成的。1.算法复杂度:Paxos算法相对来说比较复杂,需要理解多个阶段的消息交互过程,而Raft算法则相对简单,只需要理解Leader选举和日志复制两个基本概念。

2023-04-13 10:25:09 1086

原创 Paxos 算法推导过程

(a)如果Proposer收到半数以上 Accpetor 对其发出的编号为N的Prepare请求的回应,那么它就会发送一个针对【N,V】提案的Accpetor请求给半数以上的 Accpetor。(b)如果一个 Acceptor 收到一个编号为N 的Prepare请求,且N大于该 Accpetor 已经响应过的所有Prepare请求的编号,那么它就会将它已经接受过的编号是最大的提案(如果有的话)作为响应反馈给 Proposer ,同时该 Accpetor 承诺不再接受任何编号小于N的提案。

2023-04-13 10:14:03 438

原创 分布式job

insert into resume values(10,'小亮','本科','未归档');insert into resume values(11,'小明','本科','未归档');insert into resume values(1,'张三','博士','未归档');insert into resume values(2,'张二','博士','未归档');insert into resume values(7,'赵六','本科','未归档');

2023-04-06 16:07:51 389

原创 Quartz 单例定时任务

5、Month(月) 0~11 ,或者 JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC。6、Day of Week(周) 1~7,1=SUN或者 SUN,MON,TUE,WEB,THU,FRI,SAT。4、Day of Month (天) 1~31 ,有的月份不足31天。0 0 11 * *?1、继承 Job 接口,编写需要执行的业务逻辑。2、Minutes(分) 0~59。1、Second(秒) 0~59。3、Hours (小时) 0~23。

2023-04-06 10:31:43 965

原创 雪花算法说明

4、序列号:12位,用来记录某个机器同一个毫秒内产生的不同序列号,代表同一个机器同一个毫秒可以产生的ID序号。1、符号位:固定为0,二进制表示最高位是符号位,0代表正数,1代表负数。2、时间戳:41个二进制数用来记录时间戳,表示某一个毫秒(毫秒级)3、机器id:代表当前算法运行机器id。

2023-04-05 16:41:01 35

原创 一致性hash算法

场景二:一致性hash算法,hash闭环。场景三:一致性hash算法,虚拟节点。场景一:普通hash算法。

2023-04-05 16:06:47 37

原创 集群时钟同步场景

同步ntp服务器时间:ntpdate -u ntp.api.bz。2、只有一个节点连接上互联网,或者都无法连接互联网,指定一个节点为同步节点。1、如果有 restrict default ignore,注释掉它。修改当前时间:date -s '08:00:00'其他服务器就可以同步时间:ntpdate 172.17.0.17。安装ntp指令:yum install ntp。1、各个服务器连接互联网,各自同步互联网时间服务器。上面两行,是保障网络时间和硬件时间保持同步。查看当前时间:date。

2023-04-05 15:42:23 292

原创 try catch finally return 示例

【代码】try catch finally return 示例。

2023-03-30 15:31:01 34

原创 tomcat 类加载机制

4、未加载到,则依次从 System、Common、Shared 加载(该步骤使用双亲委派机制)1、首先从 Bootstrap Classloader 加载指定的类。3、未加载到,从WEB-INF/lib/*.jar 加载。2、未加载到,从WEB-INF/classes 加载。tomcat 8.5 默认改变了严格的双亲委派机制。

2023-03-29 15:02:10 60

原创 Nginx简介

Http服务器(web服务器):性能非常高,非常注重效率,不仅如此,CPU和内存的占用也非常的低,10000个没有活动的连接才占用2.5M的内存。跨平台:Nginx可以在大多数unix操作系统上编译运行,而且也有windows版本。1、Nginx是一个高性能的HTTP和反向代理web服务器,核心特点是占有内存少,并发能力强。Nginx 的上手非常容易,配置也比较简单。稳定性也特别好,宕机概率很低。2、Nginx能做什么?

2023-03-29 14:56:57 221

原创 Tomcat8.5源码安装过程

1、下载apache-tomcat-8.5.87-src源码包,解压以后新建文件夹 source,将 conf 和 webapps 放入。2、新建 pom.xml 文件 (jdk 11)添加://初始化 jsp 引擎。3、IDEA 配置环境变量。

2023-03-23 09:34:21 249

原创 手写tomcat使用多线程及线程池

1、继承Thread,在run()方法中写业务逻辑。2、使用多线程及线程池。

2023-03-21 18:10:40 160

原创 Tomcat3.0

7、Bootstrap 启动类。4、web.xml 配置、2、封装静态输出页面对象。3、servlet 对象。6、response对象。5、request对象。

2023-03-21 15:42:02 53

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除