- 博客(17)
- 收藏
- 关注
原创 已知HWND或HDC 重画窗口
<br />示例代码如下,已知HWND或者HDC handler,想要在此窗口上重画或者贴图。<br />已知HDC必须得到这个窗口句柄然后重新获得一个HDC,因为HDC handler 只能用于创建它的进程.<br />http://msdn.microsoft.com/en-us/library/ms724291%28v=vs.85%29.aspx<br />http://stackoverflow.com/questions/2499487/sharing-hdc-between-different-
2011-01-25 18:30:00 837
原创 Seamless Window 原理
<br />很多RDP软件支持无缝窗口,例如Citrix, Windows terminal server, VirtualBox等,其原理如转摘的文中所讲:server 端通过Windows event hook得到窗口的位置和大小数据,数据通过RDP virtual channel等传输到Terminal service client, client有一个动态库负责剪切desktop背景。因此这种实现都要求server desktop是全屏的。<br /> <br />http://www.codepr
2011-01-25 18:13:00 1864
原创 数据库加速
<br />关系数据库<br />共享数据文件冗余方法,如Oracle RAC,性能与节点个数非线性,可扩展性差<br />数据按行分割,分布到多个节点,并行查询,如Greenplum,可扩展<br />按列存取,如Symbase IQ,SAND CMDBS等<br /> <br />NoSQL数据库<br />Key-Value 方式,不支持标准SQL, Join 等,应用程序实现Join, sort 等,支持更大范围扩展,如berkeley db, Amaze Dynamo<br /> <br />文件
2010-11-11 18:28:00 523
原创 mmap nopage
<br /> <br />http://www.cublog.cn/u3/90065/showart_1904292.html<br />如果 nopage 方法没有定义,内核分配一个空页.进程存取不在内存中有效 VMA 的页时,nopage 方法被调用(如果它被定义)
2010-10-19 17:52:00 569
转载 异步信号安全和线程安全
http://blog.csdn.net/littlehedgehog/archive/2009/04/23/4104210.aspx对于可重入、线程安全、异步信号安全几个概念的理解可重入与异步信号安全一个可重入的函数简单来说就是可以被中断的函数,也就是说,可以在这个函数执行的任何时刻中断它,转入OS调度下去执行另外一段代码,而返回控制时不会出现什么错误。《多线程编程指南》中定义,可以被信号控制器安全调用的函数被称为"异步信号安全"函数。因此,我认为可重入与异步信号安全是一个概念。有人将可重
2010-10-19 17:28:00 816
原创 xen kernel/module debug under RHEL5.4
<br />prepare kernel code:<br /><br /><br /> Download kernel-<>-src.rpm from http://ftp.redhat.com/pub/redhat/linux/enterprise/5Server/en/os/SRPMS/<br /><br /> Install the src package, go to /usr/src/redhat/SPECS/, <br />
2010-09-08 16:02:00 623
原创 TCP offload engine(TCP减负引擎网卡), TCP backlog/prequeue buffer (TCP后备预备队列)
TCP减负引擎网卡用TCP/IP协议处理网络流量,要占用大量服务器资源。为了减轻服务器的压力,一种称为TCP减负引擎(TCP Offload Engine :TOE)的技术应运而生。TCP减负引擎一般由软硬两部分组件构成,将传统的TIP/IP协议栈的功能进行延伸,把网络数据流量的处理工作全部转到网卡上的集成硬件中进行,服务器只承担TCP/IP控制信息的处理任务。这种为服务器减轻负担的技术,得到
2009-07-15 15:01:00 2966
原创 段页式内存管理(Previous article damaged after CSDN upgradte Blog system~)
1. CPU的段寄存器中存放段选择符(六个段寄存器cs,ds,ss等),通过段选择符中的偏移量在段描述符表中找到所要访问内存的段描述符,在段描述符中找到相应段的段基地址;2. 段基地址+(相加)逻辑地址(虚拟地址,指针)的偏移量=线性地址,线性地址经过页目录,页表转换成物理地址。Intel用寄存器CR3存放当前使用的页目录的物理地址,从而可以实现到物理地址的转化。系统中可以只有一个页目录,所有
2009-07-10 09:18:00 898
原创 内核中断处理
中断处理http://www.kerneltravel.net/?p=133中断处理将工作推后执行机制:中断处理的tasklet(小任务)机制http://www.lupaworld.com/26540/viewspace-85137.htmlhttp://www.kerneltravel.net/?p=130中断处理的工作队列机制http://www.lupaworld.com/2654
2009-07-10 09:16:00 420
转载 pmap command and /proc/PID/maps
# pmap -x 25382538: /usr/sbin/sshdAddress Kbytes RSS Anon Locked Mode Mapping00110000 8 - - - r-x-- libutil-2.5.so00112000 4 - - - r-x--
2009-07-06 14:19:00 1503
转载 线程的方法
线程的方法: 1. sleep() 让调用该方法的线程睡眠指定时间,sleep结束后,线程进入就绪状态,等待拿到CPU执行权后进入运行状态。调用sleep()方法只是交出CPU执行权并不会让线程释放它所持有的同步锁,而且在这期间它也不会阻碍其它线程的运行。 注意: 线程醒来之后不会马上运行,而要等待cpu给其分配时间片。因此sleep()中指定的时间并不是
2009-06-30 18:31:00 1575
原创 段页式内存管理
<br />1. CPU的段寄存器中存放段选择符(六个段寄存器cs,ds,ss等),通过段选择符中的偏移量在段描述符表中找到所要访问内存的段描述符,在段描述符中找到相应段的段基地址;<br />2. 段基地址+(相加)逻辑地址(虚拟地址,指针)的偏移量=线性地址,线性地址经过页目录,页表转换成物理地址。<br /> <br />Intel用寄存器CR3存放当前使用的页目录的物理地址,从而可以实现到物理地址的转化。<br />系统中可以只有一个页目录,所有任务共享;也可以有多个页目录,每个任务一个,任务页目录
2009-06-30 16:15:00 318
原创 debug information of executable
When use gdb to debug, we often get following error for "list" command:No symbol table is loaded. Use the "file" command It is because, didnt use gcc -g option to put debug information in execu
2009-06-26 10:11:00 967
原创 "killall" to kill a group of processes on linux
killall -gi crappfakerKill crappfaker(pgid 8870) ? (y/n) ncrappfaker: no process killed[root@ugnx40 log]# ps -ejf|grep 8870jcui 8933 1 8870 8870 0 16:59 ? 00:00:00 /bin/sh /opt/Clou
2009-06-24 17:05:00 413
原创 Find the memory usage, footprint, leak
Heap memory usage footprint:Windows: Microsoft has UMDH tool to dump memory usage in heap. It contains the memory allocation, size and where(call statck to alloc this memory)For example:490 byte
2009-06-24 16:21:00 494
转载 Sleep()函数的执行为什么不准确?
Sleep()函数的执行为什么不准确?在windows下是很难实现的。 1. windows不是实时操作系统。 2. Sleep(20)说明线程将自己放到阻塞队列当中,让操作系统在20ms后将其放入就绪队列当中 3. 但如果此时就绪的线程多于1个(一般是这样),它不一定会选中这个线程。 4. 软中断和硬件中断也做不到这点,因为cpu在做某些底层操作
2009-06-23 11:33:00 4197
原创 hash_pjw may exceed 32bit on a 64bit machine
#include using namespace std; u_long hash_pjw (const char *str, size_t len){ u_long hash = 0; for (size_t i = 0; i { const char temp = str[i]; hash = (hash u_long g = hash & 0
2008-11-25 21:41:00 517
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人