- 博客(56)
- 收藏
- 关注
原创 Item_field、Field、Table下面的record关系
class Field下的ptr等于Table->record[0]的值 这个比较复杂,可以从 key_part_info->field= new Field_string(table->record[0], (uint32) key_part_in...
2013-11-08 15:39:19
817
原创 游标fetch源码分析
嵌入式sql采用游标编程,一般有几步曲1、EXEC SQL PREPARE sSql FROM :sql ;2、EXEC SQL DECLARE cSql CURSOR FOR sSql ;3、EXEC SQL OPEN cSql ;4、EXEC SQL FETCH cSql INTO ...while(sqlca.sqlcode....){ //判断结束条件EX...
2013-10-31 11:12:27
356
原创 smp下cpu cache并行测试
今天在看CPU cache时候,根据上面的例子做了个练习,发现了一个怪事情,没想明白 例子如下,在powerpc下面跑,多个power7的CPU:例子一test:#include <stdio.h>#include <sys/time.h>#include <unistd.h>int main(){ ...
2013-09-16 15:42:12
539
原创 yacc介绍
在mysql源码中,解析sql在sql_yacc.yy中实现,这个文件是一个硕大的文件,用bison来转换为c文件。 在《编译原理及实践》中有yacc介绍,编译原理是很深奥的科目,学好了对编程技术好很大的帮助,可惜当初没好好学,需要回炉一下。 这里是从《编译原理及实践》的摘录。 一个简单的算术表达式的计算器。calc.y,BN...
2013-09-15 20:10:22
1133
原创 mysql存储过程执行跟踪
学习mysql存储过程执行解析过程,执行一下存储过程 create procedure aa() begin declare x varchar(10); select count(*) from test where aaa = x ; end ...
2013-09-13 14:16:55
1572
原创 java转码及页面乱码原因分析
近日,一个同事问我,在windows下面用tomcat跑,不乱码,在linux下面用websphere跑乱码,是怎么回事,笼统的回答是windows和linux默认编码不一致造成,感觉没说清楚,没能说清楚,就代表自己还没掌握。好好梳理一下。 几个基本的知识点: 1、String其实和char数组等价,保存为2个字节,为unicode编码。存放在str...
2013-09-07 22:20:05
314
原创 latencytap.stp学习
如何知道系统延迟的主要原因,是因为磁盘操作,网络原因还是锁竞争?latencytop可以比较清楚指示延迟的原因。systemtap也有个脚本latencytap.stp,具体分析一下他的具体实现,学习一下原理。 主要就是从任务切换时候,找出处于睡眠状态的任务,从堆栈中找出对应的函数,再根据预设好的优先级往上追溯延迟原因。还是挺巧妙的。#!/usr/bin/...
2013-08-18 15:15:51
307
原创 synchronized错误用法
翻起tomcat5的源码,看到standardServer.java中的addservice方法: public void addService(Service service) { service.setServer(this); synchronized (services) { Servic...
2013-08-12 14:09:13
283
原创 systemtap学习笔记
systemtap的注意事项:1、 函数和探针是在关中断情况下运行 Note that all SystemTap functions and probes run with interrupts disabled,thus you cannot call functions that might sleep within the embedded C.2、全局变量是...
2013-07-31 21:52:20
140
原创 在websphere下面手工产生HeapDump
查找 JVM objectName:<wsadmin> set objectName [$AdminControl queryNames WebSphere:type=JVM,process=<servername>,node=<nodename>,*] 对 JVM MBean 调用 generateHeapDump 操作:<wsad...
2013-07-31 11:59:07
490
原创 systemtap学习笔记
在学习systemtap过程中使用show_trace,这个函数在/proc/kallsyms中存在,表示这是个有效的函数,用systemtap执行时候报错unkown symbol in module,用dmesg看错误比较明显Unkown symbol show_stack,显然说明这个函数没有导出,导出的符号表存在那里呢,看一下内核源码中的modules.txt,导出的符号...
2013-07-29 19:03:07
219
原创 vim使用笔记
:TlistOpen /*打开taglist*/ctrl+w /*在多个窗口间切换*/:cd 目录 /*进入工作目录*/:set tags=/目录/tags /*这个是用ctags -R预先产生的tags文件*/:/pattern /*查找 n N 向前、向后查找*/:vimgrep /查找的单词或者正则表达式/ 文件名 /*多个文件查找*/:ts /...
2013-06-09 15:33:08
107
原创 systemtap监控磁盘操作
怎么在linux系统下面找到,对磁盘操作最多的进程,systemtap自带的例子disktop.stp,就能实现这个功能,在doc/systemtap/examples/io目录里面,运行一下看看stap -v disktop.stp,显示如下 由上图可以看出最繁忙的进程和磁盘了,贴一下代码,------后面为我写的备注 # Copyrigh...
2013-05-01 15:01:00
442
原创 systemtap监控用户文件操作
近来学习了下systemtap,忽然想了个问题,怎么在linux下面监控一个用户对那些文件进行操作?准备用它来学习一下内核。 文件操作主要是open,read、write,是不是监控这3个系统调用就可以了?说干就干,上代码。 下面是程序filemon.stp %{#include <linux/file.h>#incl...
2013-04-29 16:40:48
593
原创 性能调优小结
刚好项目快要上线,怎么查找系统的瓶颈?性能问题比崩溃这类问题来得复杂得多,作为以后查找问题的一个摘要,好好梳理一下。我们的系统一般都是bs系统,就以bs系统为例子。 客户反映慢,第一反应先检查网络,以前还真遇到网络原因造成某个客户慢的情况,先找个机器连接上去,检查一下网络状况。ping一下服务器。 接着检查一下,是否为系统的瓶颈。 ...
2013-04-04 15:47:15
156
原创 mysql锁释放时机(二)
上篇,跟踪了select在事务和非事务下的调用路径,本次跟踪insert下的执行路径。 insert into test1(aa) values('hello world'); 断点显示的堆栈#0 lock_release_off_kernel (trx=0xb512ac68) at lock/lock0lock.c:3853#1 0xb5d...
2013-03-14 11:10:57
931
mysql释放锁时机跟踪
近几年学得比较迷茫,好像什么都学,一直想好好剖析一个好产品, 好好提升一下自我,好像进展蛮慢,博客也少写了。 人的精力是有限的,还是得在某一行深入。 近来对mysql有些兴趣,专门学习了一下。 我们都知道,数据库事务隔离级别下和普通sql加锁和释放锁的时机是不同的, mysql是如何实现的呢。(以mysql-6.0.11-alpha为例) m...
2013-03-14 10:24:19
538
gSoap的使用
由于在c++中需要调用其他语言提供的webservice,而微软提供的的确不怎么样,下载了gsoap学习一下。 函数名GetCigInfo功能返回最新的卷烟品牌列表原形CigInfo[] GetCigInfo(String corpCode)URL 输入参数...
2011-06-02 10:07:47
163
原创 synchronized、wait、notifyAll学习
这几个用法是很多公司都考的问题,下面再复习一下 package test;public class MyThread extends Thread { public static Object lock = new Object() ; //全局的锁,在这用来说明问题 public static int i = 0 ; public void run(){ synchronize...
2011-02-11 09:15:36
120
spring中链式处理
近来复习了一下spring代码,感觉好的代码还是需要经常看看,从中还是能学到很多东西,虽然我并不看好开源的市场,总觉得开源的东西过于理想,但正因为开源,使我辈等能从中学到一流程序员的设计思路,还是非常感激。 由于项目的需要,不用java也有一年多的时间,个人还是经常看看java项目的源码,从中吸取其中的思路,在项目中也剽窃了一些。个人觉得思路是相通的,不必在乎编程语言。 在spri...
2010-04-25 22:58:18
700
java动态代理
在java里面使用动态代理,一般有以下流程 定义接口 public interface ISample{ public void test(); } 定义实现类 public class SampleImple implements ISample{ public void test(){ ...
2009-11-19 16:21:57
118
原创 质疑软件工厂
下面摘录《C++沉思录》里面一段: 我们很容易就会注意到:很多最成功的、最有名的软件最初是由少数人开发出来的。这些软件后来可能逐渐成长,然而,令人吃惊的是许多真正的赢家都是从小系统做起的。UNIX操作系统就是最好的例子,C编程语言也是。其他的例子还包括:电子表格、Basic和FORTRAN编程语言、MS-DOS和IBM的VM/370操作系统。VM/370尤其有趣,因为它完全是在IBM正...
2009-08-04 12:27:23
128
原创 Windows SDK笔记(B)
(接上章)五、子窗口的管理1.概述给MDI客户区窗口发控制消息即可如:case WM_COMMAND:switch (LOWORD (wParam)){ case IDM_WINDOW_TILE: SendMessage (hwndClient, WM_MDITILE, 0, 0) ; return 0 ; ...
2009-06-20 14:52:46
117
原创 [转载]Windows SDK笔记(A)
下面转一篇windows的文章,sdk很早时候看过一下,当时如读天书,现在回看,当做补课了! [转载]Windows SDK笔记 应程序需求需要重写窗体内子控件某一特定消息,可怜我苦苦找了二天也没找到资料,到CDSN提问也没有得到满意答案。终归是上天不负有心人啊,终于被我发现了博主的一篇文章,总算是满意的解决问题了;在此感谢作者!!原文:http://www.cppblog....
2009-06-20 14:47:18
92
原创 db2参数调整
上图为db2采用集中连接器时的情况 当一个连接连到db2数据库时候,db2监听器(db2tcpcm、db2icpcm)为客户端连接创建一个代理,如果代理的总数不超过max_connections,超过max_connections会返回SQL1226N错误。 当应用程序发送一个sql语句,执行下面的步骤 1、分配通讯代理,...
2009-02-17 16:53:33
220
小议偏向锁
java SE6采用偏向锁以提高性能。 个人理解,偏向锁能提高性能,其理论基础是建立在绝大部分时间内,需要同步的代码其实只是一个线程在运行,正因为是单个线程在运行,所以尽量采用轻量的代码以提高性能,原子操作那是肯定需要的,但不需要采用切换上下文这类的重型操作。如果是很多线程同时运行到同步代码地方,同步代码稍长的话,采用偏向锁反而影响性能。 如果是我设计锁,首先会考虑在内存内放置锁的标...
2009-02-02 22:18:05
234
java中调用接口及调用继承类效率区别
都说调用接口要比调用继承类要慢,但慢在何处? 先看byteCodeInterpreter.cpp里面对这invokevirtual和invokeInterface的区别。 CASE(_invokeinterface): { //调用接口 u2 index = Bytes::get_native_u2(pc+1); ConstantPoolCac...
2009-01-19 22:34:14
393
stl::allocator析构函数调用
近来由于项目需要,采用c++编程,学习了一下stl,对stl::allocator粗略研究了一下,allocator其实就是一个工厂模式,对它的几个方法粗略分析一下 pointer allocate(size_type n, const_pointer = 0) { void* p = std::malloc(n * sizeof(T)); //只分配对象占用的内存,并不初始...
2009-01-06 09:54:06
195
IBM红皮书《DB2 Performance Guide》学习笔记
在书的第6章问题检侧的情景中,列出db2问题检测的先后次序 1、Connection constraints 2、Sorting constraints 3、Locking constraints 4、Buffer pool problems 5、Cache size problems 6、Miscellaneous problems 此1-5有专门...
2008-11-23 00:41:31
191
原创 DB2通用数据库性能调整的常用方法
DB2通用数据库性能调整的常用方法Agenda 统计值更新--runstats 调整Buffer pool 调整日志缓冲区大小 应用程序堆大小 排序堆大小和排序堆值 代理程序的数目 锁 活动应用程序的最大数目 页清除程序的数目 I/O服务器的数目 编入组的提交数目统计信息更新 当对SQL 查询进行优化时,SQL 编译器所做出的决定会受到优化器的数据库内容模型的重大影...
2008-11-19 14:13:21
421
原创 DB2十佳性能调优技巧
DB2十佳性能调优技巧 Document #: 2407544E28000 Body: [标题] DB2十佳性能调优技巧 作 者 Scott Hayes Database-Guys Inc. 总裁,DB2 UDB Advanced Certified Technical Expert 2003 年 8 月 内容提要: 本文总结了针对DB2性能调优的十个宝典,对于DBA非常有帮助...
2008-11-19 13:46:43
414
原创 使用 db2pd 工具确定并发问题的原因
分析 DB2 for Linux, UNIX, and Windows 中的锁等待情形使用 db2pd 工具确定并发问题的原因文档选项<script type="text/javascript"></script><noscript></noscript><script typ...
2008-11-19 13:37:24
368
hotsphot中的ResourceArea
在ClassLoader::load_classfile中,下面的代码引起了我的注意。 ClassFileStream* stream = NULL; int classpath_index = 0; { PerfTraceTime vmtimer(perf_accumulated_time()); ClassPathEntry* ...
2008-11-09 21:38:30
419
athrow程序执行代码
看看openjdk中的athrow处理流程 { oop except_oop = STACK_OBJECT(-1); //从栈中弹出异常的引用 CHECK_NULL(except_oop); //检查异常引用是否为空 THREAD->set_pending_exception(except_oo...
2008-10-10 14:38:57
505
1
Object中notify方法
Object.java类中notify调用的是share/vm/prims/jvm.cpp中的JVM_MonitorNotify。 void JVM_MonitorNotify(JNIEnv* env, jobject handle) { Handle obj(THREAD, JNIHandles::resolve_non_null(handle)...
2008-10-08 10:48:13
268
Object中wait方法
Object.wait调用的是share/vm/prims/jvm.cpp中的JVM_MonitorWait。 void JVM_MonitorWait(JNIEnv* env, jobject handle, jlong ms) { Handle obj(THREAD, JNIHandles::resolve_no...
2008-09-18 10:59:17
276
自定义类加载器loadClass
自定义类加载器继承ClassLoader类,使用自定义类加载器是通过loadClass方法实现。 protected synchronized Class loadClass(String name, boolean resolve) throws ClassNotFoundException { // 查找类是否已经加载 Class c = fi...
2008-09-17 15:43:17
221
学习感悟
工作以来,陆陆续续看了一些代码,从中是学到了不少知识,也更加意识到自己的无知。一直想进一步提高自己,就象这次看openjdk,只能囫囵吞枣,知道个皮毛,但也获取了不少的知识。从openjdk里面,涉及到了很多知识,操作系统、编译原理、数据结构、设计模式、汇编语言。 有很多技巧值到学习。把庞大的数据结构是组织在一起的,没有深厚的知识底蕴是不可能的。openjdk里面所用到的知识,感觉并没...
2008-09-17 11:17:41
131
openjdk中的同步代码
在java虚拟机中的方法同步synchronized,是通过使用monitorenter和monitorexit这两个操作码,当虚拟机遇到monitorenter的时候,它会获得栈中objectref所引用的对象的锁。如果线程已经拥有那个对象的锁,锁的计数器加1,线程中每个monitorexit会引起计数器减1,当计数器为0时候,监视器就释放了。 先看看openj...
2008-09-16 15:24:18
194
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人