摘要: redis持久化的意义当然是 故障恢复, 当遇到为什么要用的问题时候,想一想没有用的场景怎么样,再想一想用了的场景怎么样 1. 如果redis不做持久化,它是保存在内存中的,如果机器宕机了,数据就直接没有了,要恢复数据,只能大批量的读取数据库数据,这样的动作很慢,增大了数据库的压力。因此,不做持久化 阅读全文
posted @ 2019-12-28 15:50 默月 阅读(253) 评论(0) 推荐(0) 编辑
摘要: 传统的同步阻塞式IO编程、伪异步IO实现 Socket Socket即套接字,通过TCP3次握手,4次挥手实现,建立连接的过程分为4个步骤 服务器监听 服务端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络的状态 客户端请求服务器 客户端的套接字提出连接请求,要连接的目标是服务 阅读全文
posted @ 2019-12-28 15:44 默月 阅读(119) 评论(0) 推荐(0) 编辑
摘要: JVM虚拟机:JVM上不只能运行java程序,scalar等其他语言也可以在jvm上运行,只要能生成jvm上可以理解的字节码文件就行。 类的生命周期 加载、连接、初始化、使用和卸载 类的加载 加载:查找并加载类的二进制数据,class文件,类型的加载就是将类型所在的class文件/字节码文件从磁盘上 阅读全文
posted @ 2019-12-28 15:28 默月 阅读(148) 评论(0) 推荐(0) 编辑
摘要: * Disruptor是什么? * Disruptor是一个高性能的异步处理框架,或者可以认为是最快的消息框架(轻量的JMS),也可以认为是一个观察者模式的实现,或者事件监听模式的实现 * Disruptor入门程序 * 在Disruptor中实现HelloWorld入门程序的步骤: * 1.建立一 阅读全文
posted @ 2019-12-28 15:24 默月 阅读(208) 评论(0) 推荐(0) 编辑
摘要: * JDK多任务执行框架 * Executor框架 Executor是一个线程工厂,可以创建特定功能的线程池 Executor创建线程池的方法: * newFixedThreadPool() 创建一个【固定数量】的线程池,该线程池的线程数量始终不变 * 当有一个任务提交时,若线程池中空闲,则立即执行 阅读全文
posted @ 2019-12-28 15:23 默月 阅读(137) 评论(0) 推荐(0) 编辑
摘要: * 解决脏读 * 造成脏读的原因是在写入数据(set)的时候,调用了读取数据(get)的方法,造成读到修改的数据的现象。 * 解决的办法是:使用synchronize同时对get方法和set方法加锁,这样set的时候就无法get * 锁重入 * 概念:对于拿到某个锁的线程,它由可能再拿到其他的锁。对 阅读全文
posted @ 2019-12-28 15:22 默月 阅读(135) 评论(0) 推荐(0) 编辑
摘要: redis持久化的意义当然是 故障恢复,当遇到为什么要用的问题时候,想一想没有用的场景怎么样,再想一想用了的场景怎么样1. 如果redis不做持久化,它是保存在内存中的,如果机器宕机了,数据就直接没有了,要恢复数据,只能大批量的读取数据库数据,这样的动作很慢,增大了数据库的压力。因此,不做持久化处理 阅读全文
posted @ 2019-12-28 15:08 默月 阅读(290) 评论(0) 推荐(0) 编辑
摘要: 轮询调度: 一次性分发所有消息,保证消息平均分配,不管消费者是否能正常消费消息应答: 保证消费端能确实消费,不丢失公平转发: 一个一个分发所有消息,在保证分发到的线程确认回复后,才分发下个消息给下个空闲的消费者,消息持久化: 保证队列中的消息不丢失,包括3要素:交换器、消息队列、消息都必须声明持久化 阅读全文
posted @ 2019-12-28 15:04 默月 阅读(169) 评论(0) 推荐(0) 编辑