2018年5月6日

回调函数

摘要: 1 模块间调用 模块间调用分为三种 1. 同步调用:A类的方法a()直接调用B类的b()方法。 2. 异步调用:类A的方法方法a()通过新起线程的方式调用类B的方法b(),代码接着直接往下执行。 3. 回调:类A在a()中调用类B的b()方法,b()方法中又调用了在类A中定义的方法。 2 阅读全文

posted @ 2018-05-06 01:02 吼吼吼的吼 阅读(981) 评论(0) 推荐(1) 编辑

2018年4月30日

kafka生产者网络层总结

摘要: 1 层次结构 负责进行网络IO请求的是NetworkClient,主要层次结构如下 ClusterConnectionStates报存了每个节点的状态,以node为key,以node的状态为value;inFlightRequets中保存了每个节点已经发送的请求,但是还没有返回的请求,以 阅读全文

posted @ 2018-04-30 22:21 吼吼吼的吼 阅读(357) 评论(0) 推荐(0) 编辑

2018年4月26日

Linux文件的时间

摘要: 1 概念 Linux的文件时间有三种 1. access time. atime, 是文档最后一次被读取的时间。cat、more 、less、grep、sed、tail、head这些命令都会修改文件的access时间。 2. modify time. mtime, 是文档内容被修改的时间。vim 阅读全文

posted @ 2018-04-26 22:54 吼吼吼的吼 阅读(392) 评论(0) 推荐(0) 编辑

2018年4月21日

kafka producer的batch.size和linger.ms

摘要: 1.问题 batch.size和linger.ms是对kafka producer性能影响比较大的两个参数。batch.size是producer批量发送的基本单位,默认是16384Bytes,即16kB;lingger.ms是sender线程在检查batch是否ready时候,判断有没 阅读全文

posted @ 2018-04-21 17:20 吼吼吼的吼 阅读(14497) 评论(0) 推荐(2) 编辑

kafka producer 源码总结

摘要: kafka producer可以总体上分为两个部分: 1. producer调用send方法,将消息存放到内存中 2. sender线程轮询的从内存中将消息通过NIO发送到网络中 1 调用send方法 其实在调用new KafkaProducer初始化一个producer实例的时候,已经初 阅读全文

posted @ 2018-04-21 15:04 吼吼吼的吼 阅读(640) 评论(0) 推荐(0) 编辑

2018年4月14日

kafka客户端打印日志

摘要: kafka 0.10.0 java客户端使用slf4j作为日志门面,需要我们加入具体的日志实现依赖才能打印日志,日志框架:http://www.cnblogs.com/set cookie/p/8836496.html 1 客户端依赖jar包 使用命令 mvn dependency:tree 阅读全文

posted @ 2018-04-14 23:31 吼吼吼的吼 阅读(4956) 评论(0) 推荐(0) 编辑

日志框架总结

摘要: 1 日志框架简介 (参考:http://xfhnever.com/2015/09/20/log java 2/) 各种日志框架可以分为两类: 1. 日志实现框架:jdk自带的logging(jul),log4j1、log4j2、logback 2. 日志门面,即提供统一的接口不提供实现:ap 阅读全文

posted @ 2018-04-14 23:10 吼吼吼的吼 阅读(618) 评论(0) 推荐(0) 编辑

2018年4月13日

双重检验锁思考

摘要: 最近在项目中写一个池子,用到了双重检验锁,联想到单例模式的双重检验锁。 1 单例模式 下面是一个懒加载的单例模式 需要判断两次instace == null是因为 1. 第一次为了减少锁了粒度,因为只有在instance == null的时候才需要上锁,其他情况可以直接返回 2. 第二次获取锁后 阅读全文

posted @ 2018-04-13 01:11 吼吼吼的吼 阅读(498) 评论(0) 推荐(0) 编辑

2018年4月6日

生产者消费者和虚假唤醒

摘要: 1 定义 虚假唤醒,即spurious wakeups。wait需要在while循环内使用,原因就是因为存在虚假唤醒。 2 Monitor 还是放上这个神图来复习下线程间通信 线程在竞争锁失败的情况下会放到Entry Set中,图中2表示线程可以获取锁 获取到锁的线程可以调用wait方法,让线程 阅读全文

posted @ 2018-04-06 21:07 吼吼吼的吼 阅读(467) 评论(0) 推荐(0) 编辑

JAVA DAEMON线程的理解

摘要: java线程分两种:用户线程和daemon线程。daemon线程或进程就是守护线程或者进程,但是java中所说的daemon线程和linux中的daemon是有一点区别的。 linux中的daemon进程实际是指运行在后台提供某种服务的进程,例如cron服务的crond、提供http服务的httpd 阅读全文

posted @ 2018-04-06 17:15 吼吼吼的吼 阅读(347) 评论(0) 推荐(0) 编辑

导航