-
JDK 源码阅读 : FileDescriptor
原文出处:木杉的博客操作系统使用文件描述符来指代一个打开的文件,对文件的读写操作,都需要文件描述符作为参数。Java虽然在设计上使用了抽象程度更高的流来作为文件操作的模型,但是底层依然要使用文件描述符与操作系统交互,而Java世界里文件描述符的对应类就是FileDescriptor。Java文件操作的三个类:FileIntputStream,FileOutputStream,RandomAcces......1,183 0 2018-06-07 14:52
-
深入 Spring Boot :实现对 Fat Jar jsp 的支持
原文出处:Hengyunabcspringboot对于jsp支持的限制对于jsp的支持,SpringBoot官方只支持了war的打包方式,不支持fatjar。参考官方文档: https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-developing-web-applications.html#boo......1,169 0 2018-06-05 09:29
-
使用 JITWatch 查看 JVM 的 JIT 编译代码
原文出处:刘正阳背景我们知道Java代码通过编译器编译成字节码,一般是class文件,有JVM的各个类加载器加载后,根据JVM的启动配置可以进行解释执行和编译执行,编译执行是由JIT(JustInTime)Compiler将字节码编译成本地代码来提高执行速度,缺点是编译本身会消耗时间并且会占用堆外空间(codecache中),但是一般Server应用内存足够且能够忍受启动时的略微缓慢。查看Java......1,569 0 2018-06-05 09:29
-
linux 重要日志说明
原文出处:暗无天日从 https://linuxtechlab.com/important-logs-monitor-identify-issues/ 看到的/var/log/boot.log存储了与系统启动相关的信息。当启动有问题,或者系统莫名其妙的关机或重启,则可以查看该日志。/var/log/secure(RHEL/CentOS)&/var/log/auth.log(Debian/u......17,366 0 2018-06-05 09:29
-
RocketMQ 源码学习 4 : 消息发送
原文出处:谢晞鸣1.Client端,三种发送方式RocketMQ支持常见的三种发送方式,SYNCproducer.send(msg)同步的发送方式,会等待发送结果后才返回。可以用send(msg,timeout)的方式指定等待时间,如果不指定,就是默认的3000ms.这个timeout最终会被设置到ResponseFuture里,再发送完消息后,用countDownLatch去awaittimeo......1,118 0 2018-06-05 09:29
-
深入Spring Boot :怎样排查 java.lang.ArrayStoreException
原文出处:Hengyunabcjava.lang.ArrayStoreException分析这个demo来说明怎样排查一个springboot1应用升级到springboot2时可能出现的java.lang.ArrayStoreException。demo地址:https://github.com/hengyunabc/spring-boot-inside/tree/master/demo-Arr......1,264 0 2018-06-05 09:29
-
透过现象看原理:详解 Spring 中 Bean 的 this 调用导致 AOP 失效的原因
原文出处:光闪前言在我们使用Spring时,可能有前辈教导过我们,在bean中不要使用this来调用被@Async、@Transactional、@Cacheable等注解标注的方法,this下注解是不生效的。那么大家可曾想过以下问题为何致this调用的方法,注解会不生效这些注解生效的原理又是什么如果确实需要调用本类方法,且还需要注解生效,该怎么做?代理是否可以做到this调用注解就直接生效?通过......1,302 0 2018-06-04 15:43
-
Service Mesh 及其主流开源实现解析
原文出处:行思錄什么是ServicemeshServiceMesh直译过来是 服务网格,目的是解决系统架构微服务化后的服务间通信和治理问题。服务网格由sidecar节点组成。在介绍servicemesh之前,我们先来看一下什么是sidecar.Sidecar在软件系统架构中特指边车模式。这个模式的灵感来源于我们生活中的边三轮:即在两轮摩托车的旁边添加一个边车的方式扩展现有的服务和功能。在绝地求生吃......1,716 0 2018-06-04 15:43
-
Http 持久连接与 HttpClient 连接池
原文出处:kingszelda一、背景HTTP协议是无状态的协议,即每一次请求都是互相独立的。因此它的最初实现是,每一个http请求都会打开一个tcpsocket连接,当交互完毕后会关闭这个连接。HTTP协议是全双工的协议,所以建立连接与断开连接是要经过三次握手与四次挥手的。显然在这种设计中,每次发送Http请求都会消耗很多的额外资源,即连接的建立与销毁。于是,HTTP协议的也进行了发展,通过持久......1,101 0 2018-06-04 15:43
-
Kafka 源码分析2 : Network相关
原文出处:刘正阳背景我们直接跑到最底层,看看kafka的网络层处理是怎么处理的。因为Java的NIO还是偏底层,不能直接用来做应用开发,所以一般都使用像netty的框架或者按照自己的需要封装一些nio,让上层业务不用关心网络处理的细节,只需要创建服务监听端口、接受请求、处理请求、写返回就可以了。我在看netty、thrift等涉及到网络的Java框架时比较喜欢去看他们的nio是怎么封装的,这里也是......1,388 0 2018-06-04 15:43
-
numfmt : 让数字变得更容易理解
原文出处:暗无天日像 ls, df, du 这类命令都带有一个选项可以将数字直接转换成人类容易阅读的形式来展现。比如,直接执行 df 时,容量显示的是多少个块,而当用 df-h 时,容量会根据块的数量转换成G/M/K的形式。[lujun9972@T520~]$df文件系统1K-块已用可用已用%挂载点dev1900280019002800%/devrun190693286819060641%/run......17,005 0 2018-06-04 15:43
-
kafka 源码分析3: Producer
原文出处:刘正阳ProducerProducer是生产者的接口定义常用的方法有publicFuture<RecordMetadata>send(ProducerRecord<K,V>record);publicFuture<RecordMetadata>send(ProducerRecord<K,V>record,Callbackcallback);......1,020 0 2018-06-04 15:43
-
深入探索并发编程系列1 : 锁不慢;锁竞争慢
原文出处:Yebangyu译者按Preshing 的博客是学习并发编程的不可多得的资料,讲解比较详细。身边的很多朋友从中受益良多。我们在和作者沟通后,获得了授权,着手翻译了他的博客,刊登在这里,以飨朋友诸君。和一般的翻译不同,我们加上了独家的注释。注释要么是纠正错误,要么是辅助理解,要么是补充扩展;相信对大家会大有裨益。正文翻译:@Diting0x审校&&注释:@睡眼惺忪的小叶先森......1,161 0 2018-06-04 15:43
-
kafka源码分析3 : Producer
原文出处:刘正阳ProducerProducer是生产者的接口定义常用的方法有publicFuture<RecordMetadata>send(ProducerRecord<K,V>record);publicFuture<RecordMetadata>send(ProducerRecord<K,V>record,Callbackcallback);......850 0 2018-06-04 15:43
-
记一次内存溢出的分析经历 — thrift带给我的痛
原文出处:Janti说在前面的话朋友,你经历过部署好的服务突然内存溢出吗?你经历过没有看过Java虚拟机,来解决内存溢出的痛苦吗?你经历过一个BUG,百思不得其解,头发一根一根脱落的烦恼吗?我知道,你有过!但是我还是要来说说我的故事………………背景:有一个项目做一个系统,分客户端和服务端,客户端用c++写的,用来收集信息然后传给服务端(客户端的数量还是比较多的,正常的有几千个),服务端用Java写......1,001 0 2018-06-04 15:32