内存泄露案例1: Eclipse MAT&IBM HeapAnalyzer-由于错使用循环变量导致WHILE死循环的OOM 有更新!

  |   0 评论   |   1,272 浏览

本文介绍了一次测试环境的开发过程的OOM问题排查,期间使用到了内存dump分析工具: Eclipse MAT和IBM HeapAnalyzer 两种分析工具.
最终结合代码找到了具体问题代码. 此文章会涉及到dump内存的基本分析. 以及分析内存泄漏的过程.

在分析完并定位到内存泄露后,定位到代码. 反过来再复盘之前的过程. 实际上也可以不用使用内存Dump这个终极工具. 也可以比较方便的
定位内存泄露的地方. 更多的可能是需要更详细的分析代码.(也就是要对源代码更熟悉一些)

LLBRT ( Left-Leaning Red Black Tree ) - 红黑树学习笔记 有更新!

  |   0 评论   |   1,469 浏览

这是一次关于基础算法红黑树的学习备忘. 如果你也是想彻底搞懂红黑树. 或者想落地写出他. 可以一起看看这篇文摘.

注1: 这篇文摘主要是参考算法第四版或者是这本书里面对于这一章的读书笔记. 如果你有兴趣和时间,更推荐你直接阅读它. 它真的值得你去细细品读.

注2: 通过查阅其它的资料, 这里所说的红黑树更主要指的是 LLBR: 也就是左倾红黑树.( Left-Leaning Red Black Tree ) , 如果想学习更一般的红黑树. 请参考 算法导论. 我暂时还没有时间去学习它.

使用sed去除maven项目中xml文件中的注释-支持单行&多行处理 有更新!

  |   0 评论   |   1,537 浏览

场景:
在做一些自动化的脚本处理. 现在要提取Maven工程中的pom.xml文件中的引用jar包的版本定义.
如:

<properties>
        <leo.pdf.version>1.0.2</leo.pdf.version>
</properties>

此时需要准确为别标签 properties内部的内容. 同时还要对里面可能存在的注释进行识别. 以便进行区分过滤.最终得到一个真正的版本定义.
可能遇到的问题:

  • 被注释掉的内容
<!-- <leo.pdf.version>1.0.2</leo.pdf.version> -->
  • 正文部分后面包含注释内容
<leo.pdf.version>1.0.2</leo.pdf.version><!--  跟在右边的注释-->
  • 多行注释
<leo.pdf.version>1.0.2</leo.pdf.version>
<!--  第一行
        第二行
跟在右边的注释
-->
  • 行内多注释注释
<leo.pdf.version>1.0.2</leo.pdf.version><!--  第一个注释 -->  <leo.auth.version>1.0.0</leo.auth.version><!--  第二个注释 -->

虽然这些问题可以规范大家的编码规则 .但是对于一个写自动化处理脚本来说,还是要尽可能的兼容所有的场景才是.