kafka0.10client使用实例

2017-10-05
阅读 4 分钟
3k
可以看到跟0.8版本的不一样,不需要topicCountMap了This client transparently handles the failure of Kafka brokers, and transparently adapts as topic partitions it fetches migrate within the cluster.The consumer is not thread-safe.

docker运行kafka manager

2017-10-04
阅读 1 分钟
7k
序 本文简单介绍下docker运行kafka以及kafka manager 镜像 {代码...} 启动 {代码...} 也可以compose启动 {代码...} 访问 192.178.99.100:9000,然后添加cluster即可,其中zk地址填写zookeeper:2181 bug,明明docker是kafka0.9的,这个manager界面确只有0.8版本的可供选择 doc DockerKafka/kafka-manager-docker

聊聊kafka的group coordinator

2017-10-03
阅读 2 分钟
9.9k
本文主要来讲一个kafka的group coordinator。在kafka0.9.0版本的时候,开始启用了新的consumer config,这个新的consumer config采用bootstrap.servers替代之前版本的zookeeper.connect,主要是要渐渐弱化zk的依赖,把zk依赖隐藏到broker背后。

kafka0.8生产者配置参数解析

2017-10-02
阅读 19 分钟
5.7k
默认是true,也就是当memory buffer耗尽的时候阻塞等待;如果为false则抛出BufferExhaustedException异常

kafka0.8生产者异常处理

2017-10-01
阅读 12 分钟
7.2k
序 本文简单解析一下kafka0.8.2.2版本中的java producer的异常处理。 概况 kafka的java producer的发送是异步,主要的分几步: append到RecordAccumulator sender从RecordAccumulator取出RecordBatch,交给client去发送 NetworkClient跟broker打交道,把RecordBatch发送出去 这里就涉及到了几个步骤的异常,append的时候...

java重写equals及hashcode方法

2017-09-30
阅读 1 分钟
4.5k
序 本文介绍一下几种重写equals和hashcode的方法。 规则 如果两个对象相等的话,它们的hash code必须相等; 但如果两个对象的hash code相等的话,这两个对象不一定相等。 方法 使用lombok的注解 lombok-1.16.16.jar!/lombok/EqualsAndHashCode.class比如 {代码...} 使用apache的方法 {代码...} 如果仅仅是根据所有字段来...

spring event发布及监听实例

2017-09-29
阅读 3 分钟
7.7k
序 本文主要介绍下如何在spring中进行发布时间以及接收事件 定义事件 {代码...} 发布事件 {代码...} 这里在mvc中发布,仅仅是为了演示。 接收事件(默认同步) {代码...} 这里是同步接收 异步处理事件 {代码...} 加上这个配置就ok了,不然要注意,这里自己new的task executor,要优雅关闭的话,需要自己shutdown SimpleApp...

kafka0.8生产者实例

2017-09-28
阅读 2 分钟
2.9k
序 本文简单介绍下kafka0.8的client的producer的实例。 maven {代码...} 初始化 {代码...} 准备消息 {代码...} 发送 同步发送 {代码...} 异步发送(默认) {代码...} 使用callback {代码...} doc kafka08-documentation Kafka Clients (At-Most-Once, At-Least-Once, Exactly-Once, and Avro Client)

kafka0.8消费者实例

2017-09-27
阅读 2 分钟
4.2k
序 这里简单展示一下如何使用kafka0.8的client去消费一个topic。 maven {代码...} 初始化客户端 {代码...} 并发消费 {代码...} 注意事项 消费者实例数*每个实例的消费线程数 <= topic的partition数量,否则多余的就浪费了。

springboot定制404错误信息

2017-09-26
阅读 1 分钟
7.5k
序 本文简单介绍一下,在springboot中怎么个性化404错误信息。 返回json {代码...} 然后定义个404的request {代码...} 返回页面 {代码...} 然后将404.html放在resources/static目录下 这样就大功告成了 doc spring boot中自定义错误提示页面

聊聊spring的async注解

2017-09-25
阅读 11 分钟
18k
这里讨论一下getAsyncExecutor这里定义null的情况。spring-context-4.3.9.RELEASE-sources.jar!/org/springframework/scheduling/annotation/AbstractAsyncConfiguration.java

java9系列(二)docker运行java9

2017-09-24
阅读 1 分钟
4.7k
序 本文介绍下如何在docker运行java9 镜像 {代码...} 启动 {代码...} 然后就可以正常使用jshell了,比如 {代码...} 退出 {代码...} 查看此镜像的java版本 {代码...} doc Start using Java 9 shell — jshell with docker

java9系列(一)安装及jshell使用

2017-09-23
阅读 2 分钟
7.3k
序 本文介绍下mac下面的java9版本安装使用。 下载 官网地址[链接] 安装路径 下载袭来是个pkg文件,双击安装,默认装到了/Library/Java这里,java9的Home地址是 {代码...} 看下版本 {代码...} jshell {代码...} 有了jshell就可以快速做一些验证,比如 {代码...} imports 查看导入的类库 {代码...} 方法定义及调用 {代码.....

聊聊kafka0.8的topic的partition以及topicCountMap

2017-09-21
阅读 6 分钟
4.9k
物理上把topic分成一个或多个partition,每个partition在物理上对应一个文件夹,该文件夹下存储 这个partition的所有消息和索引文件。

spring-cloud-stream-binder-kafka属性配置

2017-09-20
阅读 4 分钟
15.4k
spring-cloud-stream-1.0.3.RELEASE-sources.jar!/org/springframework/cloud/stream/config/ChannelBindingServiceProperties.java

TransferQueue实例

2017-09-19
阅读 3 分钟
5.4k
TransferQueue(java7引入)继承了BlockingQueue(BlockingQueue又继承了Queue)并扩展了一些新方法。生产者会一直阻塞直到所添加到队列的元素被某一个消费者所消费(不仅仅是添加到队列里就完事)。

spring mvc中的几类拦截器对比

2017-09-18
阅读 6 分钟
11.5k
是servlet规范中的Filter,spring中有一个基本的实现叫做org/springframework/web/filter/GenericFilterBean.java

SynchronousQueue使用实例

2017-09-17
阅读 4 分钟
23k
SynchronousQueue,实际上它不是一个真正的队列,因为它不会为队列中元素维护存储空间。与其他队列不同的是,它维护一组线程,这些线程在等待着把元素加入或移出队列。

java降低竞争锁的一些方法

2017-09-16
阅读 7 分钟
7.5k
降低发生竞争可能性的一种有效方式就是尽可能缩短锁的持有时间。例如,可以将一些与锁无关的代码移出同步代码块,尤其是那些开销较大的操作,以及可能被阻塞的操作,例如I/O操作。

SpringBoot配置文件日期属性转换实例

2017-09-15
阅读 4 分钟
14k
序 本文展示一下如何在springboot中配置文件指定日期,在java里头用LocalDateTime接收。 配置文件 {代码...} value注入 {代码...} 正常情况,这样注入会报错 {代码...} 解决 配置ConversionService {代码...} 指定格式 {代码...} 这样就大功告成了 doc boot-features-external-config-conversion

java取消线程实例

2017-09-14
阅读 2 分钟
2.6k
这里试图用一个标志来跳出while循环,理论上貌似可行,但是这里使用的是阻塞的操作,那么就出现一种场景,线程永远阻塞在put方法,根本就没来得及下个循环去判断cancelled这个条件,造成永远无法停止掉线程。

java加解密实例

2017-09-13
阅读 5 分钟
4.7k
AES算法下,key的长度有三种:128、192和256 bits。由于历史原因,JDK默认只支持不大于128 bits的密钥,而128 bits的key已能够满足商用安全需求。

使用spring mail发送html邮件

2017-09-12
阅读 3 分钟
8.5k
序 本文展示一下如何使用spring mail来发送html邮件。 maven {代码...} 发送图片 {代码...} 测试 发送实例 {代码...} 异常 {代码...} 错误码554 {代码...} 被网易邮箱识别为垃圾邮件了,有个歪招,就是把发送邮箱添加到cc里头 {代码...} doc springboot发送邮件的实现例子 企业退信的常见问题?

线程池工作窃取实例

2017-09-11
阅读 5 分钟
4.1k
这里根据cpu的数量建立了几个deque,然后每次put的时候,根据hashcode取模放到对应的队列。然后获取的时候,先从随机一个队列取,没有的话,再robbin round取其他队列的,还没有的话,则阻塞等待指定队列的元素。

ArrayBlockingQueue与LinkedBlockingQueue

2017-09-10
阅读 8 分钟
5.7k
序 本文主要简单介绍下ArrayBlockingQueue与LinkedBlockingQueue。 对比 queue 阻塞与否 是否有界 线程安全保障 适用场景 注意事项 ArrayBlockingQueue 阻塞 有界 一把全局锁 生产消费模型,平衡两边处理速度 用于存储队列元素的存储空间是预先分配的,使用过程中内存开销较小(无须动态申请存储空间) LinkedBlockingQu...

ConcurrentLinkedQueue使用实例

2017-09-09
阅读 2 分钟
6.8k
ConcurrentLinkedQueue是一个基于链接节点的无界线程安全队列,它采用先进先出的规则对节点进行排序,当我们添加一个元素的时候,它会添加到队列的尾部,当我们获取一个元素时,它会返回队列头部的元素。

Deque的使用实例

2017-09-08
阅读 2 分钟
4.3k
双向队列(Deque),是Queue的一个子接口,双向队列是指该队列两端的元素既能入队(offer)也能出队(poll)。使用场景比如工作窃取,比如限流。

lamport面包店算法简介

2017-09-07
阅读 4 分钟
7.5k
序 Lamport面包店算法是解决多个线程并发访问一个共享的单用户资源的互斥问题的算法。由莱斯利·兰波特发明。 算法类比 Lamport把这个并发控制算法非常直观地类比为顾客去面包店采购。 面包店一次只能接待一位顾客的采购。 已知有n位顾客要进入面包店采购,按照次序安排他们在前台登记一个签到号码。该签到号码逐次增加1...

高性能SPSC无锁队列设计之路

2017-09-06
阅读 9 分钟
16.4k
序 本文整理了Single Producer/Consumer lock free Queue step by step这篇文章里头关于高性能的SPSC无锁队列使用遵循的几个原则: 单写原则 使用lazySet替代volatile set 使用位运算替代取模运算 避免伪共享 减少缓存一致性冲突 1.Single Writer Principle(单写原则) 如果只有一个线程对资源进行写操作,它实际上是比你...

缓存的Cache Aside模式

2017-09-05
阅读 6 分钟
5.6k
序 本文主要讲述下缓存的Cache Aside模式。 Cache Aside 有两个要点: 应用程序先从cache取数据,没有得到,则从数据库中取数据,成功后,放到缓存中。 更新是先更新数据库,成功后,让缓存失效.为什么不是写完数据库后更新缓存?主要是怕两个并发的写操作导致脏数据。 {代码...} 脏数据 一个是读操作,但是没有命中缓存...