摘要: @(ThreadLocal使用) ThreadLocal概念 ThreadLocal 是 JDK 包提供的,它提供线程本地变量,如果创建 ThreadLocal 变量,那么访问这个变量的每个线程都会有这个变量的一个副本,在实际多线程操作的时候,操作的是自己本地内存中的变量,实现了线程的数据隔离,从而 阅读全文
posted @ 2022-02-22 09:44 yaomianwei 阅读(15) 评论(0) 推荐(0) 编辑
摘要: 理论 概念 建造者模式(Strategy): 指将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式。它是将一个复杂的对象分解为多个简单的对象,然后一步一步构建而成。它将变与不变相分离,即产品的组成部分是不变的,但每一部分是可以灵活选择的。 优缺点 阅读全文
posted @ 2022-02-16 22:47 yaomianwei 阅读(6) 评论(0) 推荐(0) 编辑
摘要: Netty 引导类 Netty 中有两个引导帮助器, Bootstrap 和 ServerBootstrap。其中 Bootstrap 用于引导客户端 Channel 使用, ServerBootstrap 用于引导服务端 Channel 使用。Netty 引导类使得创建客户端和服务只需要遵循模板编 阅读全文
posted @ 2022-01-24 00:18 yaomianwei 阅读(227) 评论(0) 推荐(0) 编辑
摘要: 为什么需要自定义线程处理 在Netty中,EventLoop 和 EventExecutorGroup 提供的普通任务不能解决长耗时业务处理引起的 I/O 线程阻塞问题,究其原因:在 Netty 中,一个 channel 在它的生命中期内只注册于一个 EventLoop,而一个 EventLoop 阅读全文
posted @ 2022-01-05 23:24 yaomianwei 阅读(975) 评论(0) 推荐(0) 编辑
摘要: Netty 解码器 为什么会有粘包拆包? 对于“套接字”来说,并非是我们调用 writer API 便将报文发送给接收方,而是系统底层根据一定的算法,对消息的大小进行拆解或拼装。这也是发送拆包粘包的最大原因。总体来讲,发生 TCP 粘包、拆包主要是由于下面一些原因: 1.应用程序写入的数据大于套接字 阅读全文
posted @ 2021-12-30 00:55 yaomianwei 阅读(13) 评论(0) 推荐(0) 编辑
摘要: 生产消费模型 RabbitMQ 整体上是一个生产者与消费者模型,主要负责接收、存储和转发消息。可以把消息传递的过程就如邮件投递何接受,投递人将一个包裹送到邮局,邮局会暂存并最终将邮件通过邮递员送到收件人的手上,RabbitMQ 就好比由邮局、邮箱和邮递员组成的一个系统。因此对于业务实现,通常转化为编 阅读全文
posted @ 2021-12-23 00:10 yaomianwei 阅读(26) 评论(0) 推荐(0) 编辑
摘要: Rabbitmq 死信队列详解 阅读全文
posted @ 2021-12-21 14:25 yaomianwei 阅读(8) 评论(0) 推荐(0) 编辑
摘要: Rabbitmq TTL消息详解 阅读全文
posted @ 2021-12-21 14:24 yaomianwei 阅读(5) 评论(0) 推荐(0) 编辑
摘要: Rabbitmq 消费端ACK和重回队列详解 阅读全文
posted @ 2021-12-21 14:23 yaomianwei 阅读(2) 评论(0) 推荐(0) 编辑
摘要: Rabbitmq 消费端限流策略 阅读全文
posted @ 2021-12-21 14:22 yaomianwei 阅读(2) 评论(0) 推荐(0) 编辑
摘要: Rabbitmq Return确认消息详解 阅读全文
posted @ 2021-12-21 14:21 yaomianwei 阅读(1) 评论(0) 推荐(0) 编辑
摘要: Rabbitmq Confirm确认消息详解 阅读全文
posted @ 2021-12-21 14:20 yaomianwei 阅读(6) 评论(0) 推荐(0) 编辑
摘要: Rabbitmq控制台使用 阅读全文
posted @ 2021-12-21 14:17 yaomianwei 阅读(3) 评论(0) 推荐(0) 编辑
摘要: Rabbitmq命令工具使用 阅读全文
posted @ 2021-12-21 13:33 yaomianwei 阅读(4) 评论(0) 推荐(0) 编辑
摘要: 环境要求 软件版本 名称 版本 说明 erlang erlang-18.3-1.el7.centos.x86_64.rpm 18.3 rabbitmq-server rabbitmq-server-3.6.5-1.noarch.rpm 3.6.5 socat socat-1.7.3.2-1.1.el 阅读全文
posted @ 2021-12-21 13:00 yaomianwei 阅读(124) 评论(0) 推荐(0) 编辑
摘要: 消息通信概念 RabbitMQ 概述 AMQ 是一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件同产品,不同的开发语言等条件的限制。高级消息队列协议使得遵从该规范的客户端应用和消息中间 阅读全文
posted @ 2021-12-14 23:48 yaomianwei 阅读(17) 评论(0) 推荐(0) 编辑
摘要: (策略模式 ) 理论 概念 策略模式(Strategy): 该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。策略模式属于对象行为模式,它通过对算法进行封装,把使用算法的责任和算法的实现分割开来,并委派给不同的对象对这些算法进行管理。 优缺点 策略 阅读全文
posted @ 2021-12-08 22:49 yaomianwei 阅读(15) 评论(0) 推荐(0) 编辑
摘要: CopyOnWriteArrayList 概述 ArrayList 为非线程安全,无法将其作为共享变量。当然 JDK 还提供了另外一种线程安全的 List,叫做 CopyOnWriteArrayList,这个 List 具有以下特征: 线程安全的,多线程环境下可以直接使用,无需加锁; 通过锁 + 数 阅读全文
posted @ 2021-12-05 15:30 yaomianwei 阅读(28) 评论(0) 推荐(0) 编辑
摘要: ArrayList 概述 ArrayList 我们几乎每天都会使用到,在接口中返回一个列表,通常使用 ArrayList 装载对象返回。可以说是开发中最为常用的数据结构工具。ArrayList 允许 put null 值,会自动扩容,可以简化很多工作,ArrayList 为非线程安全,适合作为函数局 阅读全文
posted @ 2021-12-03 18:03 yaomianwei 阅读(7) 评论(0) 推荐(0) 编辑
摘要: (synchronized ) 方法内变量是线程安全 关于“线程安全”和“非线程安全”相关的技术点,是学习多线程一定会遇到的经典问题。“非线程安全”通常发生在多个线程对同一个对象的实例变量进行并发访问。产生的后果就是“脏读”,也就是读取到的数据其实是被其他线程更改过的。synchronized 通过 阅读全文
posted @ 2021-12-01 19:17 yaomianwei 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 某个公司的客户热线火爆,拨打的人数一旦过多,拨打电话的人员就需要进入等待队伍进行排队,公司客户按照先排队先接通进行接通。 简单队列 每个拨打电话的人员抽象为一个节点,严格按照顺序进行排队形成一个队伍,出队时严格按照先进先出原则出队,这样形成的数据结构成为队列。对于简单队列,可以使用单向链表实现。出队 阅读全文
posted @ 2021-12-01 09:24 yaomianwei 阅读(13) 评论(0) 推荐(0) 编辑
摘要: 从上海到北京的高铁一路可能要经过苏州/无锡/常州/济南/天津/北京,如果将每个连接使用一个指向连接起来,可以形成一个链,这样就可以知道某个站的下一个站是哪个。 单向链表 每个站点抽象为一个节点,在每个节点中记录下一个站的名称,从而串成链条,这样的数据结构称为单向链表。其中指向称为指针域,指针域指向的 阅读全文
posted @ 2021-11-30 18:19 yaomianwei 阅读(20) 评论(0) 推荐(0) 编辑
摘要: 获取锁 获取锁最直观的感受就是使用 Lock.lock () 方法来获得锁,最终目的是想让线程获得对资源的访问权。 Lock 一般是 AQS 的子类,lock 方法根据情况一般会选择调用 AQS 的 acquire 或 tryAcquire 方法。acquire 方法 AQS 已经实现了,tryAc 阅读全文
posted @ 2021-11-29 23:42 yaomianwei 阅读(35) 评论(0) 推荐(0) 编辑
摘要: 从上海到北京的高铁一路可能要经过苏州/无锡/常州/济南/天津/北京;等我到了北京,一顿公办之后,想回上海了呢?如果使用单向链表显然回不去。聪明的人们便在每一个站都标上上一个站的站名,这样就可以反着找回原来的路了,从而回到上海。 双向链表 在单向链表的基础上添加一个指向,保存上一个节点的地址,从而可以 阅读全文
posted @ 2021-11-27 15:12 yaomianwei 阅读(12) 评论(0) 推荐(0) 编辑
摘要: 生活中,原始社会自给自足(没有工厂),农耕社会小作坊(简单工厂,民间酒坊),工业革命流水线(工厂方法,自产自销),现代产业链代工厂(抽象工厂,富士康)。人们不再关心产品时如何生产的,他们只需要知道自己要什么,工厂就会给什么。至于怎么生产,那是工厂的事情。 1. 概述 在日常开发中,凡是需要生成复杂对 阅读全文
posted @ 2021-11-21 15:06 yaomianwei 阅读(13) 评论(0) 推荐(0) 编辑