付威 付威的网络博客

Netty02--Netty实现心跳

心跳机制 心跳机制是常用的一个健康监测的机制,说白了就是每隔一段时间向服务器发送一个心跳的报文,服务收到报文后,就认为当前的客户端在活动的状态,否则会进入异常的机制,比如说主从切换。 既然存在一个通信,就一定会有服务端和客户端。服务端开启监听,客户端发起心跳报文,然后服务就再次响应。 系统的设计 消息的类型 在服务端和客户端进行通信的时候,需要区分消息的类型...

select,poll,epoll的区别

在多路复用的IO的模型中,存在三种机制,分别是select,poll和epoll.为了便于理解,可以使用简单的伪代码来表示一个原始的IO的读写: while(true) { for(Stream i: streamArr) { if(i.isNotReady()){ continue; } doSom...

网络IO模型

IO本质上是对数据缓冲区的读写,主要分为文件IO和网络IO,基本模型有很多,可以从两个方面去认识 同步和异步,阻塞和非阻塞。根据上面分类可以分为下面五类: 阻塞I/O(blocking I/O) 非阻塞I/O (nonblocking I/O) I/O复用(select 、poll和epoll) (I/O multiplexing) 信号驱动I/O (signal dri...

Spring学习笔记-06. 如何与Spring集成

全局组件初始化 对于组件的全局的初始化,可以使用前面所说的ImportBeanDefinitionRegistrar这个方法来指定初始化方法,以开源的队列QMQ的源码为例: @EnableQmq实现方式 @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) @Documented @Import(QmqConsume...

Netty01--- Netty实现简单通信

这个Demo的功能是客户端向服务端发送一个Hello Netty的消息,然后服务端又把消息返回给客户端 Server端 这些都是一些公共的代码,代码比较简单,服务端负责监听端口,Handler负责处理业务逻辑 public class ServerProcessor { public void process(){ EventLoopGroup bossG...

Spring学习笔记-05. Spring事务的使用

配置HikariDataSource测试环境 @Configuration public class RzConfig { @Bean public DataSource dataSource() { //此处也可以写到配置文件中 final HikariConfig cpConfig = new HikariConfig(); cpConfig.setDr...

ServiceLoader的使用

获得接口的实现类有点困难 在Java中,由于反射的局限性,无法直接获取一个接口的所有实现子类,所以为了能够实现一个接口动态的注入实现的子类对象,需要借助ServiceLoader 简单的Demo使用 public interface IService { void doSomeThing(); } public class DefalutService implements IS...

Spring学习笔记-04.Spring AOP的使用

AOP的使用 所谓AOP的思想是现在程序设计中常用的一种设计思想,主要是为了能够更好的监控程序的运行的情况。 在Spring中AOP的思想展现的淋漓尽致。 实现一个简单的AOP。 @Component public class OrderBiz { public void doSomething(int x, int y) { System.out.println(x +...

Spring学习笔记-03.Bean的生命周期

Bean的生命周期 在Spring容器中,实例对象都会有三个过程,创建,初始化和消亡。 实现Bean生命周期的方式 @Bean注解指定方法 @Bean(initMethod = "init",destroyMethod = "destroy") public Dog getDog(){ return new Dog(); } InitializingBean和Di...

Spring学习笔记-02.Spring 实体的注入

IOC的使用 @Configuration是入口 在Spring中,在一个类的上面增加@Configuration注解,这个就表示当前为配置类,可以代替xml形式的配置形式。在类中可以定义各种bean的定义,这些定义会被AnnotationConfigApplicationContext容器扫描。 @Configuration public class RzConfig { } ...

Spring学习笔记-01.注入的方法的大纲


一个有效的收拾程序运行残局的方法--ShutdownHook

发现addShutdownHook 在阅读QMQ的源码的时候,在Server端启动的时候,注册了一个shutdown的代码,具体的代码如下: Runtime.getRuntime().addShutdownHook(new Thread(wrapper::destroy)); addShutdownHook作用 addShutdownHook方法可以添加一个指定的线程来在Java程...

最近的学习的技术路线

最近研究的东西有点杂,也有点乱,有点不太成体系,也不够深入,收获还是有的,但是并没有想象中的多。总感觉最近在憋着一股劲准备写点什么东西,但是心里总感觉不踏实,总有一种危机感在身边。 本着越是乱 越是要整理的原则,自己列了下学习和复习的技术路线: 基础知识 Kafka的原理机制 Spring cloud 原理 和服务降级Hytrix Dubbo和CDubbo的部署和原理 ...

分布式队列的几个名词和解释--以kafka为例

Topic 或者Subject 每一个生产者都需要向队列中生产消息,不同的生产者生产消息需要有所区别,供对应的消费者消费消息,这个是队列名称之为 Topic或者Subject MessageLog,ConsumerLog 队列的消息需要一个存储的介质,Kafka的对应的存储为文件存储,生产者生产的消息存储在MessageLog, 然后根据不同的消费和路由规则路由,投递到对应的服务器上面...

设计模式--01.单例模式

在程序设计中,需要保证一个只有一个对象实例,就是所谓的单例模式。在java中,有很多单例模式的实现,这篇博客是对这几种单例模式的优缺点进行分析和优化: 饿汉模式 所谓饿汗模式,就是优先创建对象,对象在类加载的时候就已经创建好了,具体的代码如下: private static Singleton01 instance = new Singleton01(); public st...

Guava学习笔记--01. Joiner使用

对于Guava的认识来自于阅读QMQ源码的时候,有很多没有使用过的Java方法和集合,所以就查了查,发现是用的是Guava的类库,所以就有了下面的博客: 1. 字符串的拼接 private final List<String> stringList = Arrays.asList("Google", "Guava", "Java", "Scala", "Kafka...

作者:付威

真正的热爱是不图回报

推广信息

付威星球 知识星球
付威公众号 公众号

信息

推荐博客

如需添加到列表,请邮件到laofu_online@163.com