- 博客(17)
- 收藏
- 关注
转载 2.RabbitMQ 的可靠性消息的发送
本篇包含1、 RabbitMQ 的可靠性消息的发送2、 RabbitMQ 集群的原理与高可用架构的搭建3、 RabbitMQ 的实践经验上篇包含1、MQ 的本质,MQ 的作用2、RabbitMQ 的特性,工作模型,交换机详解3、Java API 编程,UI 管理界面4、进阶知识:TTL、死信队列、延迟队列,服务端流控和消费端限流5、Spri...
2019-09-22 10:28:00 448
转载 1.RabbitMQ工作模型与基本原理
1、了解 MQ 的本质和 RabbitMQ 的特性;2、掌握 RabbitMQ 的 Java API 编程和 Spring 集成 RabbitMQ1. MQ 了解1.1. 消息队列简介1.1.1.MQ 的诞生历程我们要去用 MQ,先来了解一下 MQ 是怎么诞生的,这样对于它解决了什么问题理解会更加深刻。世界上第一个 MQ 叫什么名字,是什么时候诞生的?...
2019-09-19 23:15:00 1068
转载 2.Netty 与 NIO 之前世今生
2.Netty 与 NIO 之前世今生本文围绕一下几点阐述:1、 NIO 的核心组件 Buffer、Selector、Channel。2、何谓多路复用?3、Netty 支持的功能与特性。2.1 Java NIO 三件套在 NIO 中有几个核心对象需要掌握:缓冲区(Buffer)、选择器(Selector)、通道(Channel)。2.1.1 缓冲区...
2019-09-15 12:45:00 215
转载 1.IO的演进
1.Java IO 演进之路本文围绕着一下几个问题1、Java 中 BIO、NIO、AIO 之间的区别及应用场景。2、阻塞(Block)与非阻塞(Non-Block)区别。3、同步(Synchronization)和异步(Asynchronous)的区别。1.1 几个概念1.1.1 阻塞(Block)和非阻塞(Non-Block)阻塞和非阻塞是进程...
2019-09-15 11:07:00 178
转载 2.序列化与反序列化
Java 领域的对象如何传输基于 socket 进行对象传输先举个简单的例子,基于我们前面几次课程的只是,写一个 socket 通信的代码Userpublic class User { private String name; public String getName() { return name; } public void...
2019-09-15 09:47:00 274
转载 1.http 协议和 https 协议的原理
首先,我们得知道应用层是 OSI 七层网络模型的第七层,不同类型的网络应用有不同的通信规则,因此应用层协议是多种多样的,比如 DNS、FTP、Telnet、SMTP、HTTP、 等协议都是用于解决其各自的一类问题。http 通信协议的基本原理http 协议在远程通信场景中的应用还是挺广泛的,包括现在主流的微服务架构的通信都是基于 http 协议。由于经常使用的关系,所以大家对 h...
2019-09-14 16:13:00 720
转载 2.远程通信协议
一个 http 请求的整个流程那么在分布式架构中,有一个很重要的环节,就是分布式网络中的计算机节点彼此之间需要通信。这个通信的过程一定会涉及到通信协议相关的知识点,当然大家也可能知道一些,但是我会尽可能的把通信这一块的内容串起来,加深大家的理解。我们每天都在用浏览器访问各种网站,作为用户来说,只需要需要输入一个网址并且正确跳转就行。但是作为程序员,看到的可能就是这个响应背后的整体流程...
2019-09-14 11:48:00 331
转载 1.分布式架构的来源演进
架构的本质一个软件系统随着功能越来越多,调用量急剧增长,整个系统逐渐碎片化,越来越无序,最终无法维护和扩展,所以系统在一段时间的野蛮生长后,也需要及时干预,避免越来越无序。架构的本质就是对系统进行有序化重构,使系统不断进化那架构是如何实现无序到有序的呢? 基本的手段就是分和合,先把系统打散,然后重新组合。分的过程是把系统拆分为各个子系统 / 模块 / 组件,拆的时候,首先要解决每...
2019-09-14 10:15:00 258
转载 线程池原理及分析
什么是线程池在 Java 中,如果每个请求到达就创建一个新线程,创建和销毁线程花费的时间和消耗的系统资源都相当大,甚至可能要比在处理实际的用户请求的时间和资源要多的多。如果在一个 Jvm 里创建太多的线程,可能会使系统由于过度消耗内存或“切换过度”而导致系统资源不足为了解决这个问题,就有了线程池的概念,线程池的核心逻辑是提前创建好若干个线程放在一个容器中。如果有任务需要处理,...
2019-09-11 15:46:00 214
转载 阻塞队列,原子操作的原理分析
生产者消费者的实际使用我相信大家都有使用过分布式消息队列,比如 ActiveMQ、kafka、RabbitMQ 等等,消息队列的是有可以使得程序之间实现解耦,提升程序响应的效率。如果我们把多线程环境比作是分布式的话,那么线程与线程之间是不是也可以使用这种消息队列的方式进行数据通信和解耦呢?阻塞队列的使用案例注册成功后增加积分假如我们模拟一个场景,就是用户注册的时候,在注册...
2019-09-10 14:09:00 244
转载 并发工具的使用以及原理
线程这块的一些工具类,基本都会以原理为主,通过分析别人代码的设计和实现,给自己提供积累一些方法和工具。Condition在前面学习 synchronized 的时候,有讲到 wait/notify 的基本使用,结合 synchronized 可以实现对线程的通信。那么这个时候我就在思考了,既然 J.U.C 里面提供了锁的实现机制,那 J.U.C 里面有没有提供类似的线程通信的...
2019-09-10 00:44:00 176
转载 AQS底层原理分析
J.U.C 简介Java.util.concurrent 是在并发编程中比较常用的工具类,里面包含很多用来在并发场景中使用的组件。比如线程池、阻塞队列、计时器、同步器、并发集合等等。并发包的作者是大名鼎鼎的 Doug Lea。我们在接下来剖析一些经典的比较常用的组件的设计思想。LockLock 在 J.U.C 中是最核心的组件,前面我们讲 synchronized 的时候说过...
2019-09-09 21:32:00 655
转载 多线程基本原理-2
初步认识 Volatile一段代码引发的思考下面这段代码,演示了一个使用 volatile 以及没使用volatile 这个关键字,对于变量更新的影响public class VolatileDemo { public /*volatile*/ static boolean stop=false; public static void main(Str...
2019-09-07 17:58:00 237
转载 多线程基本原理-1
多线程基本原理-1由一个问题引发的思考线程的合理使用能够提升程序的处理性能,主要有两个方面: 第一个是能够利用多核 cpu 以及超线程技术来实现线程的并行执行; 第二个是线程的异步化执行相比于同步执行来说,异步执行能够很好的优化程序的处理性能提升并发吞吐量同时,也带来了很多麻烦,举个简单的例子。多线程对于共享变量访问带来的安全性问题一个变量 i. 假如...
2019-09-07 15:37:00 226
转载 并发基础-初步认识
并发基础-初步认识线程的应用如何应用多线程在 Java 中,有多种方式来实现多线程。继承 Thread 类、实现 Runnable 接口、使用 ExecutorService、Callable、Future 实现带返回结果的多线程。继承 Thread 类创建线程Thread 类本质上是实现了 Runnable 接口的一个实例,代表一个线程的实例。启动线程的唯一方法就是...
2019-09-05 18:20:00 136
转载 ConcurrentHashMap
ConcurrentHashMap 的初步使用及场景CHM 的使用ConcurrentHashMap 是 J.U.C 包里面提供的一个线程安全并且高效的 HashMap,所以 ConcurrentHashMap 在并发编程的场景中使用的频率比较高,从 ConcurrentHashMap 的使用上以及源码来分析 ConcurrentHashMap 到底是如何实现 安全性的。api 使...
2019-09-05 11:50:00 163
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人