自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 Java网络编程学习A轮_08_NIO的Reactor模型

参考资料:了解 Java NIO 的 Reactor 模型,大神 Doug Lea 的 PPT Scalable IO in Java 必看:http://gee.cs.oswego.edu/dl/cpjslides/nio.pdf示例代码:https://github.com/gordonklg/study,socket moduleA. 单线程版Reactor 相当于一个中...

2017-08-26 13:20:00 143

转载 Java网络编程学习A轮_07_基于Buffer的Socket编程

示例代码:https://github.com/gordonklg/study,socket moduleA. LineSeparate基于 Buffer 实现逐行读取的 EchoServer 比传统 Socket 编程困难,相当于需要自己通过 Buffer 实现 BufferedReader 的 readLine 功能。代码如下,假设单行不超过256字节,支持 Win 和 Li...

2017-08-26 10:14:00 145

转载 Java网络编程学习A轮_06_NIO入门

参考资料:老外写的教程,很适合入门:http://tutorials.jenkov.com/java-nio/index.html上面教程的译文:http://ifeve.com/overview/示例代码:https://github.com/gordonklg/study,socket moduleA. 摘要因为有现成的教程,本文只做摘要。NIO 有三宝,channel...

2017-08-26 09:55:00 164

转载 Java网络编程学习A轮_05_Socket编程

示例代码:https://github.com/gordonklg/study,socket moduleA. Socket 编程简单例子最简单的 Socket 编程是通过回车/换行符,整行读取字符串。网上代码随便抄抄便是。gordon.study.socket.basic.LineSeparateEchoServer.java代码略B. 简单的自定义协议对于传输内容包含回...

2017-08-26 09:50:00 120

转载 Spring IOC 源码简单分析 04 - bean的初始化

### 准备## 目标了解 Spring 如何初始化 bean 实例##测试代码gordon.study.spring.ioc.IOC04_Initialization.javapublic class IOC04_Initialization { public static void main(String[] ar...

2017-08-15 00:06:00 58

转载 Spring IOC 源码简单分析 03 - 循环引用

### 准备## 目标了解 Spring 如何处理循环引用##测试代码gordon.study.spring.ioc.IOC03_CircularReference.javaioc03.xml<beans ...> <bean id="chairman" ...

2017-08-14 21:53:00 85

转载 Spring IOC 源码简单分析 02 - Bean Reference

### 准备## 目标了解 bean reference 装配的流程##测试代码gordon.study.spring.ioc.IOC02_BeanReference.javaioc02.xml<beans ...> <bean id="chairman" class="gord...

2017-08-14 17:06:00 137

转载 Spring IOC 源码简单分析 01 - BeanFactory

### 准备## 目标了解 Spring IOC 的基础流程## 相关资源Offical Doc:http://docs.spring.io/spring/docs/4.3.9.RELEASE/spring-framework-reference/htmlsingle/Sample code:<https://github.com/gordo...

2017-08-14 16:59:00 65

转载 Java网络编程学习A轮_04_TCP连接异常

参考资料:https://huoding.com/2016/01/19/488示例代码:https://github.com/gordonklg/study,socket moduleA. CLOSE_WAIT有时会出现服务器响应极慢、假死的现象,查看 netstat 会发现服务器上存在大量未关闭的 CLOSE_WAIT 状态连接。我们分析下原因。首先,CLOSE_WAIT ...

2017-08-07 11:21:00 102

转载 Java网络编程学习A轮_03_抓包分析TCP四次挥手

参考资料: http://www.jellythink.com/archives/705示例代码: https://github.com/gordonklg/study,socket moduleA. TCP 四次挥手下图描述了 TCP 整个生命周期从建立连接到断开连接的逻辑: 下面的测试代码完美模拟了上图 gordon.study.socket....

2017-08-07 11:09:00 90

转载 Java网络编程学习A轮_02_抓包分析TCP三次握手过程

参考资料: https://huoding.com/2013/11/21/299 https://hpbn.co/building-blocks-of-tcp/#three-way-handshake示例代码: https://github.com/gordonklg/study,socket moduleA. Wireshark免费抓包工具,谁用谁知道。 根...

2017-08-07 10:52:00 134

转载 Java网络编程学习A轮_01_目标与基础复习

A. A轮目标复习网络编程基础知识,重点学习下TCP三次握手四次挥手,以及可能引发的异常情况。回顾 Socket 编程,好多年没写(chao)过相关代码了。重学 NIO,以前学的基本忘光了,毕竟从来没在项目中用过。学习 Netty,了解基本用法,写一个简单项目练手。扫读 Netty 核心源码,了解其线程模型,重点学习 Netty 如何使用 NIO。搜罗面试题,...

2017-08-07 10:40:00 95

转载 Spring AMQP 源码分析 08 - XML 配置

### 准备## 目标通过 XML 配置文件使用 Spring AMQP## 前置知识《Spring AMQP 源码分析 07 - MessageListenerAdapter》## 相关资源Sample code:<https://github.com/gordonklg/study>,rabbitmq m...

2017-07-18 18:04:00 108

转载 Spring AMQP 源码分析 07 - MessageListenerAdapter

### 准备## 目标了解 Spring AMQP 如何用 POJO 处理消息## 前置知识《Spring AMQP 源码分析 04 - MessageListener》## 相关资源Offical doc:<http://docs.spring.io/spring-amqp/docs/1.7.3.RELEASE/re...

2017-07-18 17:59:00 118

转载 Spring AMQP 源码分析 06 - 手动消息确认

### 准备## 目标了解 Spring AMQP 如何手动确认消息已成功消费## 前置知识《Spring AMQP 源码分析 04 - MessageListener》## 相关资源Offical doc:<http://docs.spring.io/spring-amqp/docs/1.7.3.RELEASE/re...

2017-07-18 17:56:00 98

转载 Spring AMQP 源码分析 05 - 异常处理

### 准备## 目标了解 Spring AMQP Message Listener 如何处理异常## 前置知识《Spring AMQP 源码分析 04 - MessageListener》## 相关资源Offical doc:<http://docs.spring.io/spring-amqp/docs/1.7.3....

2017-07-18 17:50:00 141

转载 缓存技术内部交流_05_Cache Through

参考资料:http://www.ehcache.org/documentation/3.2/caching-patterns.htmlhttp://www.ehcache.org/documentation/3.2/writers.html示例代码:https://github.com/gordonklg/study,cache moduleA. Cache-As-SoR前文...

2017-07-13 17:47:00 163

转载 缓存技术内部交流_04_Cache Aside续篇

额外参考资料:http://www.ehcache.org/documentation/3.2/expiry.htmlF. Cache Aside 模式的问题:缓存过期有时我们会在上线前给缓存系统来个预热,提前读取一部分用户信息到缓存中。默认情况下,这些缓存项拥有相同的 ttl 设置,会在一个很短的时间段内大批量的过期,导致这段时间后端 SoR 压力过大,可能会导致整个系统崩溃。...

2017-07-13 17:42:00 129

转载 缓存技术内部交流_03_Cache Aside

参考资料:http://www.ehcache.org/documentation/3.2/caching-patterns.htmlhttp://www.ehcache.org/documentation/3.2/usermanaged.html(optional)示例代码:https://github.com/gordonklg/study,cache moduleA. 缓...

2017-07-13 17:40:00 99

转载 缓存技术内部交流_02_Ehcache3 XML 配置

参考资料:http://www.ehcache.org/documentation/3.2/getting-started.html#configuring-with-xmlhttp://www.ehcache.org/documentation/3.2/xml.html示例代码:https://github.com/gordonklg/study,cache moduleA....

2017-07-13 17:38:00 235

转载 缓存技术内部交流_01_Ehcache3简介

参考资料:http://www.ehcache.org/documentation/3.2/getting-started.htmlhttp://www.ehcache.org/documentation/3.2/eviction-advisor.html示例代码:https://github.com/gordonklg/study,cache moduleA. HelloWo...

2017-07-13 17:32:00 194

转载 Spring AMQP 源码分析 04 - MessageListener

### 准备## 目标了解 Spring AMQP 如何实现异步消息投递(推模式)## 前置知识《RabbitMQ入门_05_多线程消费同一队列》## 相关资源Quick Tour for the impatient:<http://docs.spring.io/spring-amqp/docs/1.7.3.RELEA...

2017-07-04 10:06:00 109

转载 Spring AMQP 源码分析 03 - MessageConverter

### 准备## 目标了解 Spring AMQP 消息转化实现## 相关资源Quick Tour for the impatient:<http://docs.spring.io/spring-amqp/docs/1.7.3.RELEASE/reference/html/_reference.html#message-converte...

2017-06-22 18:38:00 215

转载 Spring AMQP 源码分析 02 - CachingConnectionFactory

### 准备## 目标了解 CachingConnectionFactory 在默认缓存模式下的工作原理## 前置知识《Spring AMQP 源码分析 01 - Impatient》## 测试代码同 《Spring AMQP 源码分析 01 - Impatient》### 分析#...

2017-06-21 20:48:00 461

转载 Spring AMQP 源码分析 01 - Impatient

### 准备## 目标了解 Spring AMQP 核心代码## 前置知识RabbitMQ 入门## 相关资源Quick Tour for the impatient:<http://docs.spring.io/spring-amqp/docs/1.7.3.RELEASE/refere...

2017-06-19 23:59:00 174

转载 RabbitMQ入门_15_访问控制

参考资料:https://www.rabbitmq.com/access-control.htmlA. 核心概念Virtual Host:虚拟主机为 RabbitMQ 中的资源提供了逻辑分组与隔离资源:资源是虚拟主机中的实体,例如队列和交换机。不同虚拟主机中的同名实体是不同的资源B. Rabbit 访问控制基本流程当客户端尝试建立到 RabbitMQ 的连接时,必须指定虚...

2017-06-13 17:50:00 423

转载 RabbitMQ入门_14_Policies

参考资料:https://www.rabbitmq.com/parameters.html#policiesA. Policies 的用途RabbitMQ 有很多可选参数(x-arguments),这些参数由客户端提供,决定是否使用各种可选特性,例如 TTL 和队列长度限制等。由客户端设定这些参数导致对这些参数的修改需要修改代码、重部署项目、重新创建队列。同时,我们也没法给一组队...

2017-06-12 16:20:00 359

转载 RabbitMQ入门_13_消息持久化

参考资料:https://www.rabbitmq.com/tutorials/tutorial-two-java.html默认情况下,队列中的消息是不持久化的。如果 RabbitMQ 崩溃,队列中的消息就全部消失了。为了防止 RabbitMQ 重启导致的消息丢失,我们需要对消息持久化,将消息保存在物理存储介质中。RabbitMQ 实现消息持久化需要:1. 消息所在的队列必须...

2017-06-12 14:19:00 97

转载 RabbitMQ入门_12_发布方确认

参考资料:https://www.rabbitmq.com/confirms.html通过 ack 机制,我们可以确保队列中的消息一定能被消费到。那我们有办法保证消息发布方一定把消息发送到队列了吗?遵照 AMQP 协议,RabbitMQ 提供了事务机制可以确保发布方消息必达。但是吞吐量会降为越来的 1/250,这个性能损耗是无法接受的。好在 RabbitMQ 提供了类似于消费方 ...

2017-06-10 17:05:00 77

转载 RabbitMQ入门_11_DLX

参考资料:https://www.rabbitmq.com/dlx.html队列中的消息可能会成为死信消息(dead lettered)。让消息成为死信消息的事件有:消息被取消确认(nack 或 reject),且设置为不重入队列(requeue = false)消息TTL过期队列达到长度限制死信消息会被死信交换机(Dead Letter Exchange, DLX)重新...

2017-06-10 15:46:00 86

转载 RabbitMQ入门_10_队列长度限制

参考资料:https://www.rabbitmq.com/maxlength.htmlRabbitMQ 有两种方式限制队列长度,第一种是对队列中消息总数进行限制:gordon.study.rabbitmq.features.TestQueueLengthLimit.javapublic class TestQueueLengthLimit { private sta...

2017-06-10 13:55:00 137

转载 RabbitMQ入门_09_TTL

参考资料:https://www.rabbitmq.com/ttl.htmlA. 为队列设置消息TTLTTL 是 Time-To-Live 的缩写,指的是存活时间。RabbitMQ 可以为每一个队列设置其内部消息的 TTL。gordon.study.rabbitmq.ttl.TestPerQueueMsgTtl Map<String, Object> a...

2017-06-06 21:39:00 109

转载 RabbitMQ入门_08_所谓的点对点与发布订阅模型

A. JMS 模型JMS 中定义了点对点和发布订阅两种消息模型,原来以为 AMQP 协议中 direct Exchange 对应点对点模型,topic Exchange 对应发布订阅模型,fanout Exchange 对应简化的发布订阅模型。可学习下来,发现根本不是那么一回事。实际上,用三种 Exchange 都可以实现点对点与发布订阅模型。点对点模型:direct Exch...

2017-06-06 20:07:00 166

转载 RabbitMQ入门_07_Fanout 与 Topic

A. 用广播的方式实现发布订阅参考资料:https://www.rabbitmq.com/tutorials/tutorial-three-java.htmlFanout 类型的 Exchange 以广播的方式向所有绑定到该 Exchange 的队列推送消息。下面样例代码试图使用 fanout 将状态变更消息推送给所有接入系统:gordon.study.rabbitmq.fano...

2017-06-06 19:45:00 71

转载 RabbitMQ入门_06_深入了解ack

A. Delivery Tag参考资料:https://www.rabbitmq.com/confirms.html仔细查看一下 Consumer 的回调方法: public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, b...

2017-06-06 18:13:00 79

转载 RabbitMQ入门_05_多线程消费同一队列

A. 多线程消费同一队列参考资料:https://www.rabbitmq.com/tutorials/tutorial-two-java.html消费一条消息往往比产生一条消息慢很多,为了防止消息积压,一般需要开启多个工作线程同时消费消息。在 RabbitMQ 中,我们可以创建多个 Consumer 消费同一队列。示意图如下:gordon.study.rabbitmq.work...

2017-06-04 20:14:00 1068

转载 RabbitMQ入门_04_Exchange & Binding

如果你比较细心,你会发现 HelloWorld 例子中的 Sender 只申明了一个 hello 队列,然后就开始向默认 Exchange 发送路由键为 hello 的消息。按照之前 AMQP 基本概念介绍,消息到了 Exchange 后需要按照 Binding 提供的分发依据将消息分发到队列中。那么问题来了,在这段代码中,Binding 在哪儿?在回答这个问题前,我们干脆先实现一个新...

2017-06-04 16:53:00 133

转载 RabbitMQ入门_03_推拉模式

我们知道,消费者有两种方式从消息中间件获取消息:推模式:消息中间件主动将消息推送给消费者拉模式:消费者主动从消息中间件拉取消息推模式将消息提前推送给消费者,消费者必须设置一个缓冲区缓存这些消息。好处很明显,消费者总是有一堆在内存中待处理的消息,所以效率高。缺点是缓冲区可能会溢出。拉模式在消费者需要时才去消息中间件拉取消息,这段网络开销会明显增加消息延迟,降低系统吞吐量。选...

2017-06-04 01:26:00 457

转载 RabbitMQ入门_02_HelloWorld

A. AMQP基础RabbitMQ 并不是基于 Java 开发人员熟悉的 JMS 规范设计开发的,而是基于一个比 JMS 更新更合理的 AMQP (Advanced Message Queuing Protocol) 协议。所以,在开始 RabbitMQ 之旅前,需要先对 AMQP 有一定的了解。毕竟,RabbitMQ 就是 AMQP 协议的第一个开源实现。a. AMQP messa...

2017-06-04 01:21:00 77

转载 RabbitMQ入门_01_简介与安装

A. 资源与参考文档官网:https://www.rabbitmq.com/ B. 学习目的部门目前使用其他部门维护的 WebLogic 的 JMS 消息服务,缺乏足够的技术支持与运维支持。随着基于 Spring Cloud 的微服务化改造的启动与团队技术能力提升,服务内部与服务之间将会更加依赖消息队列,因此部门需要维护自己的消息服务中间件。 在 WebLogic...

2017-06-03 17:05:00 63

空空如也

空空如也

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

TA关注的人

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