- 博客(104)
- 资源 (323)
- 问答 (1)
- 收藏
- 关注
原创 一文搞定NIO
转载请注明原创出处,谢谢!说在前面上篇NIO相关基础篇二,主要介绍了文件锁、以及比较关键的Selector,本篇继续NIO相关话题内容,主要谈谈一些Linux 网络 I/O模型、零拷贝等一些内容,目前能理解到的就这些了,后续还会继续有一到二篇左右与NIO内容相关,估计在后续netty等一些学习完成之后,在回过头来看看NIO系列,再补充补充。用户空间以及内核空间概念 我们知道现在操作系统都是采用
2017-12-26 08:17:45 980
原创 NIO相关基础篇二
转载请注明原创出处,谢谢!上篇NIO相关基础篇一,主要介绍了一些基本的概念以及缓冲区(Buffer)和通道(Channel),本篇继续NIO相关话题内容,主要就是文件锁、以及比较关键的Selector,后续还会继续有一到二篇左右与NIO内容相关。文件锁(FileLock) 在看RocketMQ源码中,发现有关于文件锁的import,但是具体使用代码里面注释调了[回头看看为什么,理解下,到时候会
2017-12-19 08:24:11 788
原创 NIO相关基础篇一
转载请注明原创出处,谢谢!说在前面NIO相关知识是很多后续的一些基础知识,所以今天这篇文章仅仅是简单介绍,后续会继续有一到二篇相关NIO内容。什么是NIOJava NIO( New IO) 是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java IO API。NIO与原来的IO有同样的作用和目的,但是使用的方式完全不同, NIO支持面向缓冲区的、基于通道的IO操作。 NIO
2017-12-10 14:23:47 1721
原创 面试题系列一
转载请注明原创出处,谢谢! 凡是含有面试系列的文章都能火一把(零度就想拉点粉丝,各位看官如果觉得不错,多帮忙宣传宣传,谢谢),零度也是抱着这个态度试第一篇,如果好后续继续系列文章,可能还会出分析篇!!!线程池相关单机上一个线程池正在处理服务,如果忽然断电了怎么办(正在处理和阻塞队列里的请求怎么处理)?为什么要使用线程池?线程池有什么作用?说说几种常见的线程池及使用场景。线程池都
2017-12-09 14:58:58 1848
原创 java二进制相关基础
转载请注明原创出处,谢谢!说在前面 之前在JVM菜鸟进阶高手之路十(基础知识开场白)的时候简单提到了二进制相关问题,最近在看RocketMQ的源码的时候,发现涉及二进制的内容蛮多,jdk源码里面也是有很多涉及到二进制相关的操作,今天这篇文章仅仅是扫盲篇,后续会介绍灵活运用篇。说明任何东西都有规范,提到JAVA就会提到2个规范,JAVA语言规范、JVM规范。JAVA语言规范主要定义JAVA的语
2017-12-05 12:12:02 735
原创 RocketMQ快速入门
前面几篇文章介绍了为什么选择RocketMQ,以及与kafka的一些对比: 阿里 RocketMQ 优势对比,方便大家对于RocketMQ有一个简单的整体了解,之后介绍了:MQ 应用场景,让我们知道MQ在什么时候可以使用,可以解决什么问题,之后介绍了:RocketMQ集群部署配置;本篇文章接着上篇内容之后,来给大家介绍下RocketMQ快速入门。如何使用1、引入 rocketmq-client<de
2017-11-24 22:32:50 10189 6
原创 RocketMQ集群部署配置
目标,使用2台机器部署RocketMQ多Master多Slave模式,异步复制集群模式。第一步,修改/etc/hosts文件192.168.116.115 rocketmq1192.168.116.116 rocketmq2 集群机器配置完成之后,集群内进行ping一下,确保都通。编译得到环境git clone -b develop https://github.com/apache/roc
2017-11-21 23:06:27 1787
原创 源码阅读技巧篇
转载请注明原创出处,谢谢!说在前面本人水平有限,下面的一些都是本人的思考与理解,如果有那里不对,希望各位大佬积极指出,欢迎在留言区进行评论交流、探讨。主题为什么要读源码读什么样的源码有什么技巧思考、交流坚持为什么要源码说到读源码,让我想起来了读书,古语有云:“读破万卷书,下笔如有神”。多读读大师的想法技巧通过大量阅读进行积累把一些零碎的知识点整合起来就拿RocketMQ来说,它
2017-11-17 18:06:47 1720 2
原创 阿里JAVA开发手册零度的思考理解(二)
简书 匠心零度 转载请注明原创出处,谢谢!说在前面 人生的大道上默默地走,就必须要有一盏灯亮着为你引导方向!而这盏灯抑或只是一句话,一句鼓励,一个赞美,一次承认,一次认可,一次相识一次交流……上篇文章:阿里JAVA开发手册零度的思考理解(一) 得到作者孤尽的肯定支持,那是一个小激动啊,我会继续努力,继续阅读和思考阿里JAVA开发手册,毕竟每一条都是前人踩过的坑,通过血的教训总结出来的。
2017-11-04 17:41:05 5059 18
原创 阿里JAVA开发手册零度的思考理解(一)
转载请注明原创出处,谢谢!缘由阿里JAVA开发手册已经发表有很长时间了,值得认真研究思考推广 阿里官方的Java代码规范标准,这份开发手册不仅规范了一些开发细节,也提出了很多工程开发的哲学,值得好好阅读。 可谓包罗万象,几乎日常Java开发中方方面面都有所涉及。 每一条都是前人踩过的坑,通过血的教训总结出来的。 能公布出来真是造福全部Java开发者。 开发手册详细列举如何
2017-10-27 07:53:21 5940 15
原创 史上最难的一道Java面试题 (分析篇)
简书 匠心零度 转载请注明原创出处,谢谢!无意中了解到如下题目,觉得蛮好。题目如下:public class TestSync2 implements Runnable { int b = 100; synchronized void m1() throws InterruptedException { b = 1000; T
2017-10-16 19:56:45 42409 104
原创 高可用的一些思考和理解
转载请注明原创出处,谢谢!在目前的互联网大时代,在高并发等冲击下,还必须保证服务高可用,如果服务不高可用那么意味着: - 系统不是7*24小时提供服务,那么用户体验就特别差了,可能用户下次不用了,留不住用户。 - 当系统不可用的时候,对公司的形象是有所影响的,BAT类似这种技术都是象征的。 - 最重要的一点,当系统不可用的时候,直接损失就是金钱!!!基本都是秒算损失的,依稀记得2015年5月
2017-10-08 17:24:34 1868
原创 动手实践-环境搭建
转载请注明原创出处,谢谢!缘由 现在java互联网技术栈的内容非常非常多,想要掌握并不是一件易事,只有一步一步来,理论知识继续学习,但是实践也不能丢,所以准备在自己电脑上面一步一步慢慢来进行这些实践操作,首先Linux系统、监控(open-falcon,zabbix等)、团队协作工具(Maven系列、Git系列、自动部署系列),Nginx、JDK、Tomcat、Keepalive、Mys
2017-10-01 19:32:22 1449
原创 JVM菜鸟进阶高手之路十二(jdk9、JVM方面变化, 蹭热度)
转载请注明原创出处,谢谢!经过 4 次跳票,历经曲折的 Java 9 正式版终于发布了!今天看着到处都是jdk9发布了,新特性说明,心想这么好的蹭热度计划能错过嘛,哈哈,所以就发了这篇文章。目前jdk9和jvm9的规范都还没有出来,很多细节估计还不清楚,基本就是通过官方介绍,看的。所以各位看官莫急去首页下载jdk9,你会发现:不这么吓唬我们,我们一般不会这么快用的之后下载页发现和以前的略有不同,没
2017-09-22 19:22:39 2396
原创 史上最难的一道Java面试题
转载请注明原创出处,谢谢!无意中了解到如下题目,觉得蛮好,准备拿来分析分析。题目如下:public class TestSync2 implements Runnable { int b = 100; synchronized void m1() throws InterruptedException { b = 1000; Thread.sleep(
2017-09-20 21:01:02 2661 2
原创 设计模式享元模式
转载请注明原创出处,谢谢!概念: 享元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式。 享元模式尝试重用现有的同类对象,如果未找到匹配的对象,则创建新对象。上面是很官方的说法,个人理解:在我的理解就是map、list等,或者就是缓存。JDK 里的享元模
2017-09-14 20:08:24 1158 2
原创 JVM 菜鸟进阶高手之路十一(eden survivor分配问题)
转载请注明原创出处,谢谢!问题这个Xmn设置为1G,,我用jmap -heap 看,这个Eden From To怎么不是一个整8:1:1的关系呢? 我看内存分配还是没变,我Xmn1g,感觉From、To应该都是102.4M才对,现在是102.375M。执行命令jstat -gc pid 1s 1结果:发现很奇怪,的确和我们相信的不一样,我觉得只有源码可以告诉我们他做了啥。查看源码:执行上面的例子
2017-09-13 22:59:10 2118 4
原创 sublime text 3 Three are no packages available
Sublime Text 无法使用Package Control或插件安装失败的解决方法。但是输入命令Shift + Ctrl + P之后输入install 之后回车,报错: 查看问题进行解决,首先打开 里面的地址https://sublime.wbond.net/channel.json 打开不了,网上查了变成https://sublime.wbond.net/channel_v3.j
2017-09-12 14:57:16 1075 2
原创 解决QQ群、讨论组上传文件,由于网络原因上传失败?
最近qq上传群文件老是失败,当时同事他们可以,目前已经解决QQ群、讨论组上传文件,由于网络原因上传失败?,做法如下:输入regedit,打开注册表,然后找到这个位置HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Connections,如下图:把这个位置下的第二、第三条目
2017-09-11 13:28:55 17385 4
原创 JVM菜鸟进阶高手之路十(基础知识开场白)
最近没有什么实战,准备把JVM知识梳理一遍,先以开发人员的交流来谈谈jvm这块的知识以及重要性,依稀记得2、3年前用solr的时候老是经常oom,提到oom大家应该都不陌生,那个时候也并没有从根本仅仅oom,由于对jvm不熟悉,只是去百度,到处都是配置jvm参数的,那个时候啥不懂,直接粘贴,但是并没有解决问题,通过这个就告诉我们作为开发人员也需要对jvm很熟悉才行,问题来了,很多人会说我的代码并没
2017-09-05 20:28:21 4855 13
转载 Major GC和Full GC的区别是什么?触发条件呢?
作者:RednaxelaFX链接:http://www.zhihu.com/question/41922036/answer/93079526来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。针对HotSpot VM的实现,它里面的GC其实准确分类只有两大种:Partial GC:并不收集整个GC堆的模式Young GC:只收集y
2017-08-31 17:12:59 3988 2
原创 JVM 菜鸟进阶高手之路九(解惑)
在第八系列最后有些疑惑的地方,后来还是在我坚持不懈不断打扰笨神,阿飞,ak大神等,终于解决了该问题。第八系列地址:http://blog.csdn.net/lirenzuo/article/details/77480092。关于MAT工具相关知识解惑MAT 不是一个万能工具,它并不能处理所有类型的堆存储文件。但是比较主流的厂家和格式,例如 Sun, HP, SAP 所采用的 HPR
2017-08-24 14:50:05 3818 4
原创 JVM菜鸟进阶高手之路八(一些细节)
gc日志问题 查看docker环境的gc日志,发现是下面这种情况,很奇怪,一直怀疑是docker环境那里是否有点问题,并没有怀疑配置,之前物理机上面的gc日志都是正常那种。 表示很奇怪,后来飞哥告诉我,有没有PrintGCDetails这个参数呀?一看果然,加上之后gc日志就和我们以前看的正常格式一样了。Xmn问题 -Xms4g -Xmx4g -Xmn3g 使用cms回收器,查看gc日志
2017-08-22 14:46:57 2306 3
转载 用于快速排查Java的CPU性能问题
show-busy-java-threads.sh用于快速排查Java的CPU性能问题(top us值过高),自动查出运行的Java进程中消耗CPU多的线程,并打印出其线程栈,从而确定导致性能问题的方法调用。PS,如何操作可以参见@bluedavy的《分布式Java应用》的【5.1.1 cpu消耗分析】一节,说得很详细:top命令找出有问题Java进程及线程id:
2017-08-17 20:37:49 3063 1
原创 JVM菜鸟进阶高手之路七(tomcat调优以及tomcat7、8性能对比)
因为每个链路都会对其性能造成影响,应该是全链路的修改压测(ak大神经常说全连路)。本次基本就是局域网,所以并没有怎么优化,其实也应该考虑进去的。Linux系统参数层面的修改:1、修改可打开文件数和用户最多可开发进程数命令:ulimit -n 655350 ulimit –u 655350可以通过ulimit –a查看参数设置,不设置时默认为1024,默认情况下,你
2017-08-14 17:33:19 22150 11
原创 JVM 菜鸟进阶高手之路六(JVM每隔一小时执行一次Full GC)
上次分析详细地址在:http://blog.csdn.net/lirenzuo/article/details/76257526以为结束了上次那个知识才想rmi问题,其实本次问题不是该问题但是也会有sys.gc fullgc问题。查看GC统计汇总情况:jstat -gcutil pid 3s 30参考gc,发现大概一小时运行一次FGC,特别奇怪,笨神一看这样的问题
2017-08-03 16:51:24 9854 6
转载 Btrace使用小结
BTrace是神器,每一个需要每天解决线上问题,但完全不用BTrace的Java工程师,都是可疑的。BTrace的最大好处,是可以通过自己编写的脚本,获取应用的一切调用信息。而不需要重启应用!只要定义脚本时不作大死(比如查看谁调用了HashMap的put方法),直接在生产环境打开也没影响。1.简介项目地址:http://github.com/btrace
2017-08-02 13:20:06 3129
原创 JVM菜鸟进阶高手之路五
参考gc,发现大概一小时运行一次FGC,特别奇怪,笨神一看这样的问题就知道是system gc导致的,rmi默认一小时主动触发一次,由于没有gc日志,通过jstat命令观察2小时发现通过观察的确是由于System.gc导致的。system.gc其实是做一次full gcsystem.gc会暂停整个进程1小时1次FGC问题,该问题在高并发情况下对性能产生很
2017-07-28 15:04:55 2670 3
原创 JVM菜鸟进阶高手之路四
由于很多的jvm分析最好是基于gc日志的,所以添加参数如下即可:-verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -Xloggc:/app/applogs/gc.log
2017-07-26 20:55:43 1710 3
原创 系统学习java高并发系列三
首先需要说说线程安全?关于线程安全一直在提,比如StringBuilder和StringBuffer有什么区别? 经常就会出现关于线程安全与线程非安全,可能一直在提自己没有细细想想,如果忽然问你啥是线程安全的概念?可能你需要短暂停顿几秒,线程不安全就是不提供数据访问保护,有可能出现多个线程先后更改数据造成所得到的数据是脏数据,其实关于线程安全的定义我想不到好的,百度了下,也没有发现一个特别好的解释
2017-07-23 16:00:05 3024 2
原创 JVM 菜鸟进阶高手之路三
笨神大大分享:在微信小程序里面搜索:JVMPocket,这个小程序是笨神大大提供的,里面可以搜索相关JVM参数,用法。-XX:MaxTenuringThreshold,这个参数主要是设置YGC的时候,新生代的对象正常情况下最多经过多少次YGC的过程会晋升到老年代,注意这里表达的是最多,意思就是说某个对象其实并不一定要达到这个值才会晋升到old的,具体经过多少次ygc进入到old,这个取决于
2017-07-22 10:09:31 2797 3
原创 JVM菜鸟进阶高手之路二(JVM的重要性,Xmn是跟请求量有关。)
今天看群聊jvm,通常会问ygc合适吗? 阿飞总结,可能需要2个维度,1.单位时间执行次数,2.执行时间ps -p pid -o eitme 查看下进程的运行时间,17天才这么点ygc,正常,-o后面可以加很多东西,可以通过ps L查看可以加哪些定义总结性,3s一次ygc的频率,甚至频率更低,5s一次,7s一次,这是正常的;如果超过1s一次y
2017-07-21 15:56:35 3103 2
原创 一次与笨神,阿飞近距离接触修改JVM
今天在JVMPocket群里面看见,阿牛发了一个gc截图,之后ak47截图了说特别恐怖,我就觉得好奇,去看看服务情况,截图日志如下高手就是高手,就通过这个,直接提出1,就是达到old的92%的阈值了 不断做cms gc 2.估计是不断做system gc这些都是猜测,让执行jstat -gccause pid 看看情况,为什么说要执行gccause呢?尤其ygc没有,只有fgc
2017-07-20 20:02:10 6002 7
原创 系统学习java高并发系列二
什么是线程? 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源。线程状态转换1、新建状态(New):新创建了一个线程对象。2、就绪状态(Runnable):线程对象创建后
2017-07-16 19:53:02 4432 9
原创 系统学习java高并发系列一
JAVA服务端或者后端需要大量的高并发计算,所以高并发在JAVA服务端或者后端编程中显的格外重要了。首先需要有几个概念:1.同步和异步 同步异步是来形容方法的一次调用的,同步必须等等方法调用结束后才可以继续后续的操作,而异步方法调用就会返回(真正的执行一般在另外一个线程中)就可以继续后续操作了。2.并发和并行 这两个概念都是表示2个或者多个任务一起执行
2017-07-02 12:42:40 3550 1
原创 代码评审
缘由初衷:不管多么高大尚的设计最后还是需要通过编码来落地,都是通过一行一行代码实现的,所以落地的代码的审查就显的格外的重要了。 卡珀斯·琼斯(Capers Jones)分析了超过12,000个软件开发项目,其中使用正式代码审查的项目,发现潜在缺陷率约在60-65%之间,若是非正式的代码审查,发现潜在缺陷率不到50%。大部份的测试,发现的潜在缺陷率会在30%左右。一般的代码审查
2017-06-08 19:22:45 5117 1
原创 JDK8 BufferedReader可以读多行文件 BufferedReader.lines
import java.io.BufferedReader;import java.io.FileReader;import java.io.IOException;import com.alibaba.fastjson.JSON;public class BufferedReaderDemo { public static void main(String[] args){
2017-06-06 19:35:01 10692
原创 java编写死锁代码
public class T5 { class MyLock { // 创建两把锁对象 public Object objA = new Object(); public Object objB = new Object(); } class DemoThread extends Thread { private boolean flag; private MyLo
2017-06-01 12:27:56 5506 1
Amino 框架所有源码
2017-07-25
Amino 框架
2017-07-24
Java性能权威指南
2017-07-11
AvatarMQ eclipse直接跑
2017-06-16
mysql-5.7.28-macos10.14-x86_64.dmg
2019-10-18
chrometools.zip
2019-10-06
.vimrc的设置
2019-05-22
windows下安装jekyll
2018-08-06
my-fastdfs-client
2018-05-16
rocketmq4.1.0管控台
2017-11-24
apache-maven-3.5.0-bin.tar.gz
2017-10-18
es2.4.6添加ik分词插件
2017-09-13
The Java Virtual Machine Specification, Java SE 8 Edition
2017-09-04
apache-tomcat-8.5.20.tar.gz
2017-08-20
apache-jmeter-2.11
2017-08-15
求写一条复杂SQL
2013-11-08
TA创建的收藏夹 TA关注的收藏夹
TA关注的人