• DAnalyzer 1.2发布啦 -- Weblogic与Directory协议分析工具

  • SQLView -- 可视化的Weblogic JDBC DEBUG

/Articles

线程分析-CPU过高使用

Java线程问题中有一类现象很常见,就是CPU过高使用。有时你能看到400%的使用率,这是因为多核的原因,实际也就是100%或者99%而已。什么样的情况导致CPU过高,很难讲,情况太多,比如硬件资源、不好的算法、太过持久的IO吞吐等,都可能是成因。下面通过简单的例子,演示如何从Thread Dump中找到有问题的那个线程,直到有问题的代码行。 代码例子 这个代码只是演示而已,没人会这么写。 package zigzag.research.threaddump; public class HighCPU { public static void main(String[]...

Into Agile SDK Class Loader Logic

When you use Agile API to develop SDK customization to extend your functionality, you may not care about how SDK architecture is designed by Agile smart engineers and you only focus attention on your own code. As the software engineer and Agile implementation developer, it's better to understand...

Oracle数据库学习-PMON后台进程

PMON主要做的事情包括连接进程异常中止后的资源清理,后台进程状态的监控与恢复,以及将实例注册到Listener上。本文通过一些调试例子来分析背后的工作原理。 连接进程的异常清理 我们使用10246事件来调试。由于10246只能用在initSID.ora中而不能动态地alter system,因此我们通过pfile方式启动数据库,启动前先在initSID.ora文件中加入这样的调试参数: event='10246 trace name context forever, level 10' 服务器上启动数据库并确认Event生效。 [oracle@localhost ~]$...

使用Checksum对文件校验

企业应用中有时会使用到文档类文件的上传和下载。为了保证文档在传输和存储过程中没有被恶意篡改过,就可以使用Checksum对文件进行校验。比如在上传文件的同时,计算出文件的Checksum,保存到数据库中。当其他用户需要下载该文件时,对服务器上保存的该文件进行第二次的Checksum计算并和数据库中的值进行比较验证。 对于文件的checksum校验有非常多的方法,常见的有SHA1, MD5和CRC32。在Agile PLM中,文件的Checksum使用CRC32。对CRC算法感兴趣的可以查看此文:...

用$*和$@读取全部参数的细节测试

写完用getopts处理全部的选项和参数后,我注意到了获取所有参数的特殊变量$@,要不要加双引号,对参数的处理有很大影响。另外linux还是有个也是读取所有参数的特殊变量$*,引用他们时,加不加双引号变化很大。索性一并测试一下,总结一下它们的规律特点,分别是: $* "$*" $@ "$@" $* 不加双引号:参数列表会被作为一个单词列表处理 加双引号:参数列表会被作为一个整体字符串 $@ 无论加不加双引号,行为都是一样。表现差异取决于参数列表本身有没有双引号。 参数列表整体没有双引号:参数列表会被作为一个单词列表处理...

用getopts处理全部的选项和参数

用getopts可以编写出像模像样的很规范的获取命令行参数/选项的参数。根据它的使用方法,命令参数列表存放在 optstring 中,变量名为name,后续还可以跟上参数。 getopts: usage: getopts optstring name [arg] 命令行的选项还分两种 带值的选项 不带值得选项(其实就是flag开关) 所以获取命令行需要处理三种数据 带值的选项 不带值得选项 参数列表 比如构造一段opt.sh,带值的选项有 -a -b -c, flag选项有 -x -y -z ,参数列表为 hello和world 执行opt.sh可能的情形为:...

权限转换的Shell脚本

使用chmod可以使用+,-或者=符号给u,g和o三组赋予权限。虽然字面上非常好理解,但是我还是最喜欢直接用八进制组一次性赋值。分享2个自己写的脚本,用来解析权限在字面和八进制之间的快速换算。 字面到八进制组的转换 命令方式为: p2o.sh permission_text 比如:p2o.sh rwxr-xr-- # p2o.sh # permission to octal # usage: p2o.sh rwxr-xr-- # author: jiechencn@qq.com permission=$1 for (( i=0; i<${#permission};...

标准输入和参数的管道传输

一个进程通过管道把自己的标准输出流作为标准输入流传输给第二个进程,这是最常用的。但是有时候第二个进程不支持接受标准输入流,只接受普通参数,这就需要对标准输入流做转换。 pipe 假设当前目录下有几个txt文件 $ find *.txt chinese.txt english.txt maths.txt name.txt 通过管道传输,find *.txt 的结果成为标准输出流,管道转换后,成为 grep 的标准输入流vvvv。这相当于把find的结果(多行字符串)作为输入流,传输给grep。所以grep对这个输入流(字符串)进行正则查找。 $ find *.txt | grep...

grep或sed快速定位大日志文件

客户的系统日志常常几个G以上,全部拿过来再分析的话网络传输非常耗时间,而且里面大部分日志都是很早之前的。介绍有两个非常简单好用又快速的方法,只截取大文件中有用的部分数据。 grep关键字的正则查询 我们总能知道一些错误日志的关键字。所以grep首先是最先想到。下面的过程就是怎么一步步优化grep命令,精确找到匹配项。 比如我们有个错误 “Node -1 does not exist in the cache”。找到它,很容易。 $ grep "^.\+Node -1 does not exist in the cache." stdout.log...

用Join像SQL Outer Join一样合并多文件

曾今处理过一个问题,帮助用户合并多个CSV文件,不需要编程(编程一定会涉及到又是循环又是匹配再填充),Linux下一个join命令,逐步调优,再重定向输出。 Shell一定是一个逐步调整优化的过程,没有人能完整记住所有参数 join命令的设计和SQL中的等值连接非常类似,默认它是一个自然联结。它支持: 默认:自然联结 - 以两个文件的第一列字段为key进行等值联结 inner join -a 1: 左外联结 left outer join -a 2: 右外联结 right outer join -a 1 -a 2: 全联结 full outer join...

cd目录的快速跳转

cd命令非常简单,日常使用其实也没有什么需要特别技巧的东西。但是下面的一些小技巧,非常有利于操作效率。 回到主目录 cd ~ 回到前一个访问过的目录 cd - 多次执行 'cd -',只会在当前目录和前一个目录中来回切换。 跨目录快速跳转 CDPATH环境变量为cd命令定义一个cd自己的查找目录。然后如果想要进入这个目录的子目录,可以直接 'cd 子目录',无论当前pwd是在哪个目录下。 比如,定义CDPATH的查找目录列表为:当前目录;主目录;/home/oracle/temp/p1/目录和/home/oracle/temp/p2/目录 export...

用/dev/null和/dev/zero更改文件

/dev/null的行为和/dev/zero看起来,有相反的作用,有时又相似。/dev/null就像无底洞,吃掉被指定的重定向。而/dev/zero能为目标文件提供连续的数据流填空。他们的作用可能还不止这些。但是我一般用它们做下面最常用的用途。 /dev/null清空文件 /dev/null常常用来吞掉被重定向的数据。反过来,它可以被当作输入流的空文件。 在分析系统故障时,日志文件会有大量的数据产生。重现问题的时候,首先过滤掉无用的信息,再比对时间戳信息。日志文件太大,非常不好处理。最好的方法是:使用/dev/null把日志文件清空(不删除)。 cat /dev/null...

1 2 3 4 5 6 7 8 9 10 11