core文件的生成和调试

上一篇文章匆忙地记录了一次分析core文件报错的过程,今天则花点时间来认真总结下Linux下core文件的开启,生成,调试,以及堆栈定位。

一、什么是core文件?
进程在运行时可能会因为各种各样的原因(后面会细说)崩溃,而在崩溃前的一瞬间操作系统会像拍照片一样生成一个core文件,这个文件记录了程序运行时的状态,主要包括内存信息,堆栈指针,寄存器状态等,生成core文件的这一过程俗称为coredump。开发人员可以通过对core文件的分析来排查,定位问题,找到程序崩溃的原因。

二、core文件设置

a).如何开启

这条命令输出的是允许生产core文件的最大size,如果是0则表示你没有开启coredump,如果是unlimited则表示不限制大小。所以如果要开启coredump,只需要输入:

其中,unlimited可以换成具体的数字,比如1024(单位是KB)。

b).文件名及目录
默认设置下,
1.core文件是[……]

继续阅读

Can’t attach to the core file

今天在使用jsadebugd调试core文件的时候又报错了:
Error attaching to core file or starting server: sun.jvm.hotspot.debugger.DebuggerException: Can’t attach to the core file
堆栈如下:

之前碰到这个报错的时候甚至去看了jdk的源码,但还是一无所获。今天灵光一现,通过分析和不断尝试,大致可以总结出有以下几个原因:
1.core文件损坏

2.调试的command不正确,这个工具的使用格式是这样的:

executable必须是java的全路径,而不能是java
所以这样使用是会报错的:

正确的使用方式是:

3.调试用的jdk版本和当时出core的jdk版本[……]

继续阅读

戒烟

印象中这应该是博客里第一篇跟技术无关的文章,关于戒烟。
我第一次抽烟应该是在大一或者大二的某个时刻,具体时间我记不清了,至今已经有5年了。跟所有烟民一样,刚开始吸烟只是年少时觉得抽烟特别酷,感觉自己好像是大人了一样。现在想起来特别naive,我记得我在上大学之前闻到烟草的味道就想吐,搞不懂为什么这世上会有人喜欢抽这么难闻的烟,发誓自己长大之后肯定不要抽烟。只可惜,人的想法总是会变。
刚开始的3年可能还不会抽,也可能是一起抽烟的小伙伴也不多,所以烟瘾并不大,大概一个礼拜一包的样子。然后慢慢的就变成一个礼拜两包,一个礼拜三包,到现在两天一包。烟瘾就这样一步一步加重了,毫无防备。
第一次有了戒烟这个想法是因为我看了一本书叫《这本书能让你戒烟》,确实有很多人看了这本书把烟戒了。书中说了好多吸烟的弊端我感同身受,比如:在禁止吸烟的公共场所会找借口去厕所吸烟,因为实在是憋不住了。这会让你不能集中注意力,总是想着要吸一根烟才能安定下来。抽完之后回来满身烟味,还要被朋友们鄙视一通。这大概是我想戒烟的最大原因和动机吧,因为有太多的人不喜欢烟味了,不,应该是没有人会喜欢闻这该死的香烟味。
之前尝试[……]

继续阅读

浅析MySql Innodb引擎的加锁机制

MySQL数据库提供了好几种引擎,比如ISAM、MyISAM、HEAP、InnoDB和Berkley DB(BDB),比较常用的就是Innodb了。Innodb主要有以下几种锁,分别用在不同的场景里。

共享锁和排它锁(Shared and Exclusive Locks)
意图锁(Intention Locks)
记录锁(Record Locks)
区间锁(Gap Locks)
Next-Key Locks

共享锁和排它锁
首先需要指出的是这两种锁都是针对行(row)而言的,是innodb在行级锁(row-level locking)方面的两个实现。共享锁(shared (S) locks),每当读取一行记录时会加上一个共享锁。排它锁(exclusive (X) lock ),每当update或者delete一条记录时都会加上一个排它锁。当事务T1对某一行R拥有了一个读锁时,另一个事务T2对该条记录可以立即获得共享锁,但是不能获得排他锁。当事务T1对某一行R拥有了一个排他锁时,另一个事务T2无论是申请排他锁还是共享锁都需要等待T1释放锁。他们之间的关系如下表所示:[……]

继续阅读

使用Apache POI生成Word文档不能被office读取的问题

近期应一个妹子的邀请做一些跟了一些和Word,excel相关的读写研究。需求很简单,就是从excel表格里读取一些白名单,然后在Word表格里找到这些匹配项再做相应的处理。因为每次手动操作很麻烦,所以呢妹子就找到了我,问下我能不能写个程序来做这件事。我一想这玩意儿应该挺简单的啊,肯定有开源的库来读写excel和Word,而且能提高妹子的工作效率,所以就欣然答应下来了。
之后就Google了一番看看有木有什么开源的库可以用,果不其然第一个就是Apache的POI项目,然后去官网看API文档。总的来说这个库使用起来还是蛮方便,下面介绍下读写Word和excel的代码:

这个只是读取excel的代码,值得一提是由WorkbookFactory创建出来的Workbook是支持xls和xlsx两种格式的文档,开发者不再需要区分是03还是07格式的excel文件,非常方便。然后读取Word文档却不像读取excel这么方便,他有两套API,一个是HWPFDocument只支持03格式的Word(后缀:doc)[……]

继续阅读