实践点滴
横云断岭
在国内大型互联网公司负责6K+应用,80K+机器的Spring Boot微服务技术落地,关注开发体验,微服务,APM,应用诊断,dubbo开源。
Github: https://github.com/hengyunabc
展开
-
在文档中嵌入对话框,在style 中记得要选child
。。。。。调试了好久。。好久。。终于发现。。。。悲剧。。。。。原创 2010-01-04 18:40:00 · 1144 阅读 · 0 评论 -
Arthas实践--使用redefine排查应用奇怪的日志来源
背景随着应用越来越复杂,依赖越来越多,日志系统越来越混乱,有时会出现一些奇怪的日志,比如:[] [] [] No credential found那么怎样排查这些奇怪的日志从哪里打印出来的呢?因为搞不清楚是什么logger打印出来的,所以想定位就比较头疼。下面介绍用Alibaba开源的应用诊断利器Arthas的redefine命令快速定位奇怪日志来源。Arthas: https://...原创 2018-11-01 00:19:51 · 2292 阅读 · 2 评论 -
Arthas实践--抽丝剥茧排查线上应用日志打满问题
现象在应用的 service_stdout.log里一直输出下面的日志,直接把磁盘打满了:23:07:34.441 [TAIRCLIENT-1-thread-1] DEBUG io.netty.channel.nio.NioEventLoop - Selector.select() returned prematurely 14 times in a row.23:07:34.460 [TA...原创 2018-11-01 00:17:41 · 3212 阅读 · 0 评论 -
Java中的几个HashMap/ConcurrentHashMap实现分析
一、HashMap,即java.util.HashMap标准链地址法实现。这个不用多解析,下图十分明了。(图片来自网络)二、Collections.synchronizedMap() 函数返回的线程安全的HashMap这个的实现比较简单。代码中有: private final Map m; // Backing Map final Object原创 2012-04-10 01:31:33 · 8960 阅读 · 5 评论 -
为什么Java中的HashMap<K, V>的get函数是get(Object key),而不是get(K key)?
帮别人的代码改bug,发现有一大堆bug是由get或者remove传递进去的参数类型不匹配而造成的。比如: Map m = new HashMap(); m.put(new Short((short) 2), "2222"); System.out.println(m.get(2));上面的代码输出是null。一般人很难发现传递进去的int和Short类型不匹配,而原创 2012-06-27 16:16:58 · 8832 阅读 · 6 评论 -
测试多线程对多核cpu的分支预测的影响
前言:现代的cpu都有流水线,分支预测功能,CPU的分支预测准确性可以达到98%以上,但是如果预测失败,则流水线失效,性能损失很严重。CPU使用的分支预测技术可以参考:处理器分支预测研究的历史和现状.pdf同时多线程处理器上的动态分支预测器设计方案研究.pdf正确地利用这些特性,可以写出高效的程序。比如在写if,else语句时,应当把大概率事件放到if语句中原创 2012-07-09 00:47:54 · 4614 阅读 · 3 评论 -
Mysql Java驱动代码阅读笔记及JDBC规范笔记
一前言:以前刚开始用java连接mysql时,都是连猜带蒙的。比如:一个Statement,Connection何时关闭?Connection能不能先于Statement关闭?ResultSet是怎样存放数据的?怎样才能高效操纵ResultSet?PrepareStatement到底是怎样回事?连接池是怎样工作的?二、从JDBC driver代码分析:在原创 2012-07-06 15:32:11 · 4545 阅读 · 2 评论 -
测试Java的synchronize和ReentrantLock在单线程下的效率
ReentrantLock 在多线程情况下要远胜synchronize,这点没有疑问。最近要写个程序,有个变量是有多数情况下是一个线程读写,有少数情况下是多个线程并发读写。所以要测试下ReentrantLock 在单线程下和synchronize的效率对比。在测试的过程中发现一个有意思的现象。测试代码见后面。测试代码1结果:noLockTime: 0:00:00.004no原创 2012-06-14 02:40:21 · 3246 阅读 · 0 评论 -
Java中long类型容易出现的bug
static long defaultSendSpeed = 1024 * 1024 * 1024 * 1024;这段代码,实际上 defaultSendSpeed是0!在Eclipse里也没有提示信息。应该在后面加上“L"。static long defaultSendSpeed = 1024 * 1024 * 1024 * 1024L;遇到好几次了,记之。在看了《J原创 2011-07-21 14:21:17 · 2262 阅读 · 1 评论 -
Windows下Qt 重新编译库文件
<br />首先要设置好环境变量,因为重新编译要调用cl.exe 和nmake.exe。<br />最简单的设置方法是运行,D:/Microsoft Visual Studio 9.0/Common7/Tools/vsvars32.bat <br />再运行,D:/Qt/4.6.3/configure.exe 。按照提示一步步选择就行了。也可以看下一些选项。<br />据说 -static 参数可以编译静态链接库。(未测试,因为下面运行nmake一次时间很久!!我用了好几个小时……)<br /> <br /原创 2010-10-18 19:38:00 · 3068 阅读 · 0 评论 -
git 错误 fatal: Not a valid object name: 'master'.
<br />想新建立一个分支时出现这错误。<br />后来发现,要先commit一次才会真正建立master分支,此时就可以新建立分支了。。原创 2010-12-06 14:13:00 · 35630 阅读 · 4 评论 -
关于MAP文件的使用
<br /> 关于MAP文件的使用 - j2mefans 收藏<br />导读: <br />在看《深入理解计算机系统》的时候总会看到MAP文件,一直不懂,今天看到一片相关的文章,收录下来,大家一起看看吧。毕竟有些时候我们的IDE提示的信息不够明白,使用MAP文件是一个调试的好帮手。<br /><br />仅通过崩溃地址找出源代码的出错行<br /><br />作为程序员,我们平时最担心见到的事情是什么?是内存泄漏?是界面不好看?……错啦!我相信我的看法是不会有人反对的——那就是,程序发生了崩溃!<br /转载 2010-09-29 22:44:00 · 3665 阅读 · 0 评论 -
代码备份
写得很烂,自己看看就好了……typedef int debug_int [50];debug_int* p;void print(int a[], int length){ for (int i = 0; i原创 2010-09-18 22:36:00 · 816 阅读 · 0 评论 -
解决单文档滚动条程序中显示图像闪烁问题
<br />1、class CPictureProcessView : public CScrollView<br />如果原来是继承自CView,则把程序中所有的CView替换成CScrollView。<br />注意,一定要重载 virtual void OnInitialUpdate(); 否则可能出错。<br /> <br />2、添加内存DC,内存位图成员。<br /> <br />CDC m_MemDC; //内存DC<br />CBitmap m_MemBitmap; //内存位图原创 2010-07-21 16:49:00 · 2511 阅读 · 0 评论 -
深入Spring Boot:利用Arthas排查NoSuchMethodError
前言有时spring boot应用会遇到java.lang.NoSuchMethodError的问题,下面以具体的demo来说明怎样利用arthas来排查。Demo: https://github.com/hengyunabc/spring-boot-inside/tree/master/demo-NoSuchMethodError在应用的main函数里catch住异常,保证进程不退出很多...原创 2018-11-01 00:21:18 · 2525 阅读 · 1 评论