java
匠心零度
对技术非常热爱,特别是JVM,高并发、锁系列,以及全链路相关优化方面。
展开
-
学习高效编程之 Vim 方法
为什么学习 Vim通过模式,Vim 赋予了同一个按键多种功能,大大提高了按键的功效,可以让我们释放鼠标和主键盘到方向键的切换,从而让我们双手集中在键盘中央区域,提高效率。学习 Vim 就是为了显著提升编码效率,对自己要求严格点,坚持做正确的事情,而不是容易的事情!!!我学习 Vim 的思路系统的看书学习 Vim多处不断练习 Vim(包括 idea、浏览器、iTerm2等)读书系统学...原创 2019-10-19 13:02:25 · 820 阅读 · 1 评论 -
rocketmq番外篇(一):开发命令行
匠心零度 转载请注明原创出处,谢谢!说在前面虽然是以rocketmq引出的开发命令行,但是任何java应用如果需要都可以借鉴引用,也是通用技术。主题rocketmq使用例子Apache Commons CLI简介 总览开发使用rocketmq借助Apache Commons CLI如何开发结尾rocketmq使用例子usage: m...原创 2018-04-18 08:24:59 · 551 阅读 · 0 评论 -
集群容错概念
匠心零度 转载请注明原创出处,谢谢!说明分布式系统越来越多,很多概念都是通用的,涉及到分布式的时候,集群的容错就特别重要的,刚刚好偶然看到dubbo的集群容错模式,觉得非常不错,其高度抽象和总结,对于分布式的系统都是适用的,特此拿来分享以及学习下。分类集群容错一般有如下模式: - Failover Cluster - Failfast Cluster - Fa...原创 2018-04-10 08:06:58 · 1647 阅读 · 0 评论 -
CRC 校验
匠心零度 转载请注明原创出处,谢谢!说明上篇RocketMQ(二):RPC通讯介绍了rocketmq的一些rpc细节,其实这些内容不仅仅是rocketmq内容,任何通信模块基本都是类似的,这块内容是高度公用的,今天我们来看看 CRC 校验,也是通信模块里面常常使用到的技术。CRC简介CRC即[循环冗余校验码]:是数据通信领域中最常用的一种查错校验码,其特征是信息字段...原创 2018-04-09 12:28:49 · 2147 阅读 · 0 评论 -
面试为什么需要了解JVM
匠心零度 转载请注明原创出处,谢谢!说在前面如果你经常注意面试题,你会发现现在面试题多多少少会含有jvm相关的面试题,之前也把一些jvm面试题汇总了下:面试题系列一,那么为什么现在面试需要了解或者问面试题呢?主题谈谈自己的理解,概括为以下几个方面: - 的确很重要。 - 供大于求。 - 面试风气。下面就针对这几点谈谈。的确很重要随着互联网的发展...原创 2018-03-06 08:21:00 · 4863 阅读 · 1 评论 -
Netty(二):Netty为啥去掉支持AIO?
匠心零度 转载请注明原创出处,谢谢!疑惑我们都知道bio nio 以及nio2(也就是aio),如果不是特别熟悉可以看看我之前写的网络 I/O模型,那么netty为什么还经常看到类似下面的这段代码呢?EventLoopGroup ……= new NioEventLoopGroup();………… b.group(……).channel(NioSocketChann...原创 2018-03-07 08:39:02 · 16509 阅读 · 6 评论 -
分布式唯一id:snowflake算法思考
匠心零度 转载请注明原创出处,谢谢!缘起为什么会突然谈到分布式唯一id呢?原因是最近在准备使用RocketMQ,看看官网介绍: 一句话,消息可能会重复,所以消费端需要做幂等。为什么消息会重复后续RocketMQ章节进行详细介绍,本节重点不在这里。为了达到业务的幂等,必须要有这样一个id存在,需要满足下面几个条件: - 同一业务场景要全局唯一。 - 该id必须是在消...原创 2018-02-11 08:46:21 · 8665 阅读 · 1 评论 -
二进制实战技巧
匠心零度 转载请注明原创出处,谢谢!说在前面 看过稍微底层点的源码的人应该都会了解、熟悉里面多多少少会碰到二进制相关操作,因为这个之前还写了一篇java二进制相关基础的基础篇,本篇准备写一些二进制实战技巧相关内容。主题判断一个数是否是2的幂次方的方法。操作位代表类型。非2的幂次方转换为2的幂次方。判断一个数是否是2的幂次方的方法如果该数是无符原创 2018-01-13 17:15:11 · 1015 阅读 · 0 评论 -
NIO中的易筋经
匠心零度 转载请注明原创出处,谢谢!前言 《易筋经》。天下武功出少林,而易筋经是少林寺的镇寺之宝。学好了易筋经就可以轻易地学好其它武功,只不过很少人学到了它的全部精髓。游坦之只是碰巧学了一点点就变成了武林高手,从中可以看出易筋经的威力的确很大。之前以及写过三篇NIO文章,NIO相关基础篇一、NIO相关基础篇二、NIO相关基础篇三,今天我们来提下NIO中的易筋经Reactor模型。说明不会说故原创 2018-01-04 08:30:09 · 947 阅读 · 0 评论 -
推荐几款实用工具
匠心零度 转载请注明原创出处,谢谢!说在前面 工欲善其事 ,必先利其器。巧妙的使用好工具,会得到意想不到的效果,不仅不会变慢反而会事半功倍。零度推荐几款平时使用觉得不错的工具给大家。搜索公众号【匠心零度】或者扫描最下方二维码进行关注,回复:tools,获取工具(这些工具都是适合windows,如果其他平台直行网上搜索进行,有些本地也没有安装文件了,大家自己搜索下就行)。原创 2018-01-12 17:34:03 · 2154 阅读 · 1 评论 -
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 · 3126 阅读 · 2 评论 -
java操作Dropwizard Metrics简单篇
系统监控一直都是很重要的内容,可以让应用主动通知你系统现在的允许状况。Java世界里面Dropwizard Metrics提供了系统监控的功能,个人觉得非常好用。首先在pom.xml里面添加 io.dropwizard.metrics metrics-core 3.1.3 io.dropwizard.metrics metrics-health原创 2017-04-26 17:01:53 · 6163 阅读 · 0 评论 -
NIO相关基础篇二
转载请注明原创出处,谢谢!上篇NIO相关基础篇一,主要介绍了一些基本的概念以及缓冲区(Buffer)和通道(Channel),本篇继续NIO相关话题内容,主要就是文件锁、以及比较关键的Selector,后续还会继续有一到二篇左右与NIO内容相关。文件锁(FileLock) 在看RocketMQ源码中,发现有关于文件锁的import,但是具体使用代码里面注释调了[回头看看为什么,理解下,到时候会原创 2017-12-19 08:24:11 · 834 阅读 · 0 评论 -
google Dapper自己实现Demo
google Dapper自己实现Demo原创 2017-06-07 17:31:09 · 5923 阅读 · 3 评论 -
JVM菜鸟进阶高手之路七(tomcat调优以及tomcat7、8性能对比)
因为每个链路都会对其性能造成影响,应该是全链路的修改压测(ak大神经常说全连路)。本次基本就是局域网,所以并没有怎么优化,其实也应该考虑进去的。Linux系统参数层面的修改:1、修改可打开文件数和用户最多可开发进程数命令:ulimit -n 655350 ulimit –u 655350可以通过ulimit –a查看参数设置,不设置时默认为1024,默认情况下,你原创 2017-08-14 17:33:19 · 22220 阅读 · 11 评论 -
一文搞定NIO
转载请注明原创出处,谢谢!说在前面上篇NIO相关基础篇二,主要介绍了文件锁、以及比较关键的Selector,本篇继续NIO相关话题内容,主要谈谈一些Linux 网络 I/O模型、零拷贝等一些内容,目前能理解到的就这些了,后续还会继续有一到二篇左右与NIO内容相关,估计在后续netty等一些学习完成之后,在回过头来看看NIO系列,再补充补充。用户空间以及内核空间概念 我们知道现在操作系统都是采用原创 2017-12-26 08:17:45 · 1019 阅读 · 0 评论 -
RocketMQ(五):namesrv初探
匠心零度 转载请注明原创出处,谢谢!RocketMQ网络部署图NameServer:在系统中是做命名服务,更新和发现 broker服务。Broker-Master:broker 消息主机服务器。Broker-Slave: broker 消息从机服务器。Producer: 消息生产者。Consumer: 消息消费者。说明: rocke...原创 2018-04-10 08:07:40 · 1052 阅读 · 0 评论 -
RocketMQ(六):namesrv再探
匠心零度 转载请注明原创出处,谢谢!RocketMQ网络部署图NameServer:在系统中是做命名服务,更新和发现 broker服务。Broker-Master:broker 消息主机服务器。Broker-Slave: broker 消息从机服务器。Producer: 消息生产者。Consumer: 消息消费者。说明: rocke...原创 2018-04-18 08:24:24 · 1288 阅读 · 0 评论 -
jdk13快来了,jdk8的这几点应该看看!
说明jdk8虽然出现很久了,但是可能我们还是有很多人并不太熟悉,本文主要就是介绍说明一些jdk8相关的内容。主要会讲解:lambda表达式方法引用默认方法Stream用Optional取代null新的日志和时间CompletableFuture去除了永久代(PermGen) 被元空间(Metaspace)代替我们来看看阿里规范里面涉及到jdk8相关内容:[外链图片转...原创 2019-09-04 08:58:38 · 18211 阅读 · 6 评论 -
看完这篇还不清楚Netty的内存管理,那我就哭了!
说明在学习Netty的时候,ByteBuf随处可见,但是如何高效分配ByteBuf还是很复杂的,Netty的池化内存分配这块还是比较难的,很多人学习过,看过但是还是云里雾里的,本篇文章就是主要来讲解:**Netty分配池化的堆外内存的细节,**期待可以让你明白!!!由于为了更好的表达,文章中的图我最少画了6小时,画的不熟悉,并且也强调一些细节上。由于该源码中涉及到大量的二进制操作,建议看看我...原创 2019-08-11 08:08:14 · 1138 阅读 · 0 评论 -
IntelliJ IDEA 2019.2最新解读:性能更好,体验更优,细节处理更完美!
idea 2019.2 准备idea 2019.2正式版是在2019年7月24号发布的,本篇文章,我将根据官方博客以及自己的理解来进行说明,总体就是:性能更好,体验更优,细节处理更完美!支持jdk13提示更加智能了。比如之前录制的 万能键 alt enter 现在在idea 2019.2里面提示更加智能了:新版本的光标定位到该行,就有提示并且提示你原因和快捷键操作。重复代...原创 2019-07-29 20:25:49 · 5283 阅读 · 17 评论 -
idea万能快捷键(alt enter),你不知道的17个实用技巧!!!
说明IDEA里有一个万能快捷键(alt enter),功能非常强大,同一个快捷键,可以根据不同的语境提示你不同的操作,很多人可能还不了解这些功能,在处理代码的时候还手动处理,了解这些技巧之后,你编码也是一种享受。万能快捷键(alt enter)可以帮你做很多事情,我大概总结了17点:转换lambda表达式equals的翻转自动导包异常捕获SimpleDateFormat转换为Th...原创 2019-07-19 21:12:05 · 5223 阅读 · 9 评论 -
惊:FastThreadLocal吞吐量居然是ThreadLocal的3倍!!!
说明接着上次手撕面试题ThreadLocal!!!面试官一听,哎呦不错哦!本文将继续上文的话题,来聊聊FastThreadLocal,目前关于FastThreadLocal的很多文章都有点老有点过时了(本文将澄清几个误区),很多文章关于FastThreadLocal介绍的也不全,希望本篇文章可以带你彻底理解FastThreadLocal!!!FastThreadLocal是Netty提供的,在...原创 2019-07-02 23:10:14 · 9064 阅读 · 4 评论 -
阿里一道Java并发面试题 (详细分析篇)
说明前天分享了一篇关于阿里的“Java常见疑惑和陷阱”的文章,有人说这个很早就有了,可能我才注意到,看完之后发现内容非常不错,有几个我也是需要停顿下想想,如果后续有机会我录制一个视频把这个ppt里面的所有内容,根据我的理解和知道的给大家分享一遍。如果你之前还没有看过建议好好看一遍:Java常见疑惑和陷阱,如果你需要获取完整ppt,可以在公号对话框回复: “PPT” 即可获取完整文件,只要你发...原创 2019-05-10 07:06:52 · 7739 阅读 · 8 评论 -
佩服,主动让自己不舒服的人
个人特别喜欢金庸的武侠,零度曾也梦想仗剑走天涯,奈何bug太多,最后就没去了!金庸武侠里面的主角有一个特点(主角都是从最底层开始并且开始条件不好,最后成功走向巅峰的)由于反差极大,也特别励志,现实中有没有那种开始条件不好,后来走向巅峰的呢?个人比较喜欢的一个演员:彭于晏就是一个典型的例子。彭于晏他觉得自己不能再胖了,后来情况就是:后来为了把戏里角色塑造的更好,主动要求自己!最后的结果...原创 2019-05-19 11:04:32 · 999 阅读 · 1 评论 -
确实有必要好好学英语
前言工作已经6年多了,最近忽然明悟一些道理,零度觉得分享出来可能可以帮助一些人,这些道理可能很多成功的、牛逼的人早就知道这些了。随着技术的迭代更新越来越快,新技术不断产生,很多很多人都在焦虑,但是有一个道理的确是这样的,你不学习,未来终将被淘汰,依稀记得自己大学的时候,我们老师说他大学的时候,就稍微学习会点html、css在大学期间接点私活就可以挣好几万了,而现在一般的没有学习接触过的,一天也...原创 2019-04-22 20:39:11 · 974 阅读 · 5 评论 -
winsw 控制日志大小
工具准备工具github地址:https://github.com/kohsuke/winsw/releases进行exe文件下载:主要用到winsw其中的WinSW.NET4.exe,把它改名成跟你的jar相同的名字,比如我这里改为test.exe。然后创建test.xml如下:test.xml配置:<configuration> <id>t...原创 2019-03-22 11:04:29 · 7064 阅读 · 0 评论 -
RocketMQ集群消费的那些事
说明RocketMQ集群消费的时候,我们经常看到类似注释里面 (1,(2 的写法,已经有时候有同学没注意抛异常的情况就是(3 模拟的情况。那么这3种情况到底是怎么样的呢?你是否都了然于心呢?下面我们一起来看看吧,本文主要在讲解RocketMQ集群消费有些内容会提到但是不会深入讲解(以后有机会讲其他的)。RocketMQ集群消费执行过程虽然说是PushConsumer其实本质还是拉。...原创 2018-12-27 22:37:17 · 2724 阅读 · 4 评论 -
Netty推荐addListener回调异步执行
说明Netty推荐使用addListener的方式来回调异步执行的结果,这种方式优于Future.get,能够更精确地把握异步执行结束的时间。错误理解使用addListener的方式代码如下:代码运行结果:**疑惑:**很疑惑啊,按照上面Netty推荐使用addListener的方式来回调异步执行的结果,这种方式优于Future.get,能够更精确地把握异步执行结束的时间。而且也...原创 2018-12-27 21:55:26 · 7755 阅读 · 1 评论 -
RocketMQ(九):消息发送(续)
匠心零度 转载请注明原创出处,谢谢!RocketMQ网络部署图NameServer:在系统中是做命名服务,更新和发现 broker服务。Broker-Master:broker 消息主机服务器。Broker-Slave: broker 消息从机服务器。Producer: 消息生产者。Consumer: 消息消费者。说明: rocke...原创 2018-06-23 16:16:53 · 940 阅读 · 0 评论 -
RocketMQ部分数据消费不了问题排查
问题现象今天忽然收到RocketMQ预警信息如下:提醒有部分数据没有消费,产生堆积情况。打开RocketMq-Console-Ng查看如下图形式: 备注:第一反应是Consumer Group内订阅了多个topic?(为什么这么怀疑,下次分析)。 通过命令statsAll 作用是查询Topic and Consumer tps stats: ...原创 2018-05-17 08:25:08 · 15460 阅读 · 0 评论 -
JVM菜鸟进阶高手之路十四:分析篇
以一个奇怪的题目现象作为切入点,把jvm相关知识融合分析给你一个不一样的体验。原创 2017-11-26 14:38:33 · 1176 阅读 · 0 评论 -
RocketMQ快速入门
前面几篇文章介绍了为什么选择RocketMQ,以及与kafka的一些对比: 阿里 RocketMQ 优势对比,方便大家对于RocketMQ有一个简单的整体了解,之后介绍了:MQ 应用场景,让我们知道MQ在什么时候可以使用,可以解决什么问题,之后介绍了:RocketMQ集群部署配置;本篇文章接着上篇内容之后,来给大家介绍下RocketMQ快速入门。如何使用1、引入 rocketmq-client<de原创 2017-11-24 22:32:50 · 10231 阅读 · 6 评论 -
JVM菜鸟进阶高手之路四
由于很多的jvm分析最好是基于gc日志的,所以添加参数如下即可:-verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -Xloggc:/app/applogs/gc.log原创 2017-07-26 20:55:43 · 1734 阅读 · 3 评论 -
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 · 10767 阅读 · 0 评论 -
JVM菜鸟进阶高手之路八(一些细节)
gc日志问题 查看docker环境的gc日志,发现是下面这种情况,很奇怪,一直怀疑是docker环境那里是否有点问题,并没有怀疑配置,之前物理机上面的gc日志都是正常那种。 表示很奇怪,后来飞哥告诉我,有没有PrintGCDetails这个参数呀?一看果然,加上之后gc日志就和我们以前看的正常格式一样了。Xmn问题 -Xms4g -Xmx4g -Xmn3g 使用cms回收器,查看gc日志原创 2017-08-22 14:46:57 · 2368 阅读 · 3 评论 -
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 · 2707 阅读 · 3 评论 -
Btrace使用小结
BTrace是神器,每一个需要每天解决线上问题,但完全不用BTrace的Java工程师,都是可疑的。BTrace的最大好处,是可以通过自己编写的脚本,获取应用的一切调用信息。而不需要重启应用!只要定义脚本时不作大死(比如查看谁调用了HashMap的put方法),直接在生产环境打开也没影响。1.简介项目地址:http://github.com/btrace转载 2017-08-02 13:20:06 · 3149 阅读 · 0 评论 -
系统学习java高并发系列三
首先需要说说线程安全?关于线程安全一直在提,比如StringBuilder和StringBuffer有什么区别? 经常就会出现关于线程安全与线程非安全,可能一直在提自己没有细细想想,如果忽然问你啥是线程安全的概念?可能你需要短暂停顿几秒,线程不安全就是不提供数据访问保护,有可能出现多个线程先后更改数据造成所得到的数据是脏数据,其实关于线程安全的定义我想不到好的,百度了下,也没有发现一个特别好的解释原创 2017-07-23 16:00:05 · 3041 阅读 · 2 评论 -
系统学习java高并发系列二
什么是线程? 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源。线程状态转换1、新建状态(New):新创建了一个线程对象。2、就绪状态(Runnable):线程对象创建后原创 2017-07-16 19:53:02 · 4459 阅读 · 9 评论