2011年4月29日
摘要: 引言将 Java 对象序列化为二进制文件的 Java 序列化技术是 Java 系列技术中一个较为重要的技术点,在大部分情况下,开发人员只需要了解被序列化的类需要实现 Serializable 接口,使用 ObjectInputStream 和 ObjectOutputStream 进行对象的读写。然而在有些情况下,光知道这些还远远不够,文章列举了笔者遇到的一些真实情境,它们与 Java 序列化相关,通过分析情境出现的原因,使读者轻松牢记 Java 序列化中的一些高级认识。文章结构本文将逐一的介绍几个情境,顺序如下面的列表。序列化 ID 的问题静态变量序列化父类的序列化与 Transient 关 阅读全文
posted @ 2011-04-29 16:37 sun_kang 阅读(216) 评论(0) 推荐(0) 编辑
摘要: Definition and difference between Hardware interrupt, Software Interrupt, Exception, Trap and Signals?Answer:Interrupts can be categorized into two groups which are asynchronous interrupts (aka interrupt, hardware interrupt) and synchronous interrupts (aka exception). The former may arrive anytime, 阅读全文
posted @ 2011-04-29 10:15 sun_kang 阅读(692) 评论(0) 推荐(0) 编辑
2011年4月28日
摘要: 走进Linux 操作系统:http://www.kerneltravel.net/journal/i/linuxsys.htmlhttp://www.kerneltravel.net/journal/i/03.htm系统引导:http://www.kerneltravel.net/journal/i/04.htm内存管理:http://www.kerneltravel.net/journal/v/mem.htmhttp://www.kerneltravel.net/?p=450内核中的调度与同步:http://www.kerneltravel.net/journal/vi/syn.htm文件系 阅读全文
posted @ 2011-04-28 13:55 sun_kang 阅读(215) 评论(0) 推荐(0) 编辑
摘要: This article discusses: SystemDomain, SharedDomain, and DefaultDomain Object layout and other memory specifics Method table layout Method dispatching Contents Domains Created by the CLR Bootstrap System Domain SharedDomain DefaultDomain LoaderHeaps Type Fundamentals ObjectInstance MethodTable Base I 阅读全文
posted @ 2011-04-28 13:19 sun_kang 阅读(1093) 评论(0) 推荐(0) 编辑
摘要: JNI 编程简介JNI,Java Native Interface,是 native code 的编程接口。JNI 使 Java 代码程序可以与 native code 交互——在 Java 程序中调用 native code;在 native code 中嵌入 Java 虚拟机调用 Java 的代码。JNI 编程在软件开发中运用广泛,其优势可以归结为以下几点:利用 native code 的平台相关性,在平台相关的编程中彰显优势。对 native code 的代码重用。native code 底层操作,更加高效。然而任何事物都具有两面性,JNI 编程也同样如此。程序员在使用 JNI 时应当认 阅读全文
posted @ 2011-04-28 12:58 sun_kang 阅读(2691) 评论(1) 推荐(0) 编辑
2011年4月19日
摘要: 用有限的几句话就舒舒服服的建立起对驱动对象和设备对象的概念是不可能的。刚开始是一片模糊,了解的多了,慢慢就清楚。下面的内容会使你对他们了解的清楚些。为了后面的叙述方便,首先列出驱动对象和设备对象的结构。驱动对象结构 DRIVER_OBJECT ,定义如下struct _DRIVER_OBJECT (sizeof=168)+00 int16 Type+02 int16 Size+04 struct _DEVICE_OBJECT *DeviceObject+08 uint32 Flags+0c void *DriverStart+10 uint32 DriverSize+14 void *Driv 阅读全文
posted @ 2011-04-19 15:26 sun_kang 阅读(593) 评论(0) 推荐(0) 编辑
摘要: Scheduling, Thread Context, andIRQLAbstractThis paper presents information about how thread scheduling, thread context, and a processor’s current interrupt request level (IRQL) affect the operation of kernel-mode drivers for the Microsoft® Windows® family of operating systems. It is intend 阅读全文
posted @ 2011-04-19 11:36 sun_kang 阅读(1011) 评论(0) 推荐(0) 编辑
摘要: Locks, Deadlocks, and SynchronizationApril 5, 2006AbstractThis paper explains how to use synchronization mechanisms to protect shared memory locations in kernel-mode drivers for the Microsoft® Windows® family of operating systems. By following the guidelines in this paper, driver writers w 阅读全文
posted @ 2011-04-19 11:31 sun_kang 阅读(1004) 评论(0) 推荐(0) 编辑
摘要: 解开 Windows 下的临界区中的代码死锁Matt Pietrek和 Russ Osterlund 下载本文的代码:CriticalSections.exe (415KB) 摘要临界区是一种防止多个线程同时执行一个特定代码节的机制,这一主题并没有引起太多关注,因而人们未能对其深刻理解。在需要跟踪代码中的多线程处理的性能时,对 Windows 中临界区的深刻理解非常有用。 本文深入研究临界区的原理,以揭示在查找死锁和确认性能问题过程中的有用信息。它还包含一个便利的实用工具程序,可以显示所有临界区及其当前状态。在我们许多年的编程实践中,对于 Win32® 临界区没有受到非常多的“und 阅读全文
posted @ 2011-04-19 10:47 sun_kang 阅读(1975) 评论(0) 推荐(0) 编辑
2008年11月17日
摘要: %include"protect.inc"; 常量, 宏, 以及一些说明org 0x0500; 实模式jmpSetUp_seg;------------------------------------------------------------------------------------------times0x10-($-$$)db0KernelSizeequ512; 此处地址: $ -> 0x500MCRNumberDW:dd0MemChkBuf:times256db0MemSizeDW:dd0MemInfo1db"_______________ 阅读全文
posted @ 2008-11-17 23:13 sun_kang 阅读(207) 评论(0) 推荐(0) 编辑
摘要: Des_32EQU4000h; 32 位段Des_16EQU0000h; 16 位段Des_GEQU8000h; 段界限粒度, G=1 表示界限粒度为4K 字节Des_DPL0EQU 00h; DPL = 000 0 0000Des_DPL1EQU 20h; DPL = 101 0 0000Des_DPL2EQU 40h; DPL = 210 0 0000Des_DPL3EQU 60h; DPL = 311 0 0000Des_DREQU90h;1001 0000 存在的 只读 数据段类型值Des_DRWEQU92h;1001 0010 存在的 可读写 数据段属性值Des_DRWAEQU93h 阅读全文
posted @ 2008-11-17 23:06 sun_kang 阅读(167) 评论(0) 推荐(0) 编辑
摘要: org07c00h; 告诉编译器程序加载到7c00处jmpBootSeg;times 256db0BootSeg:movax, csmovds, axmoves, ax;置堆栈段指针movax, 08FC0hmovss, axmovesp, 0FFFFh;清屏movcx, 0000hmovdx, 1850hmovbh, 07hmovax, 0600hint10h;置光标为左上角movbh, 00hmovdx, 0000hmovah, 02hint10h;显示 BootMessage 信息movax, BootMessagemovbp, ax; ES:BP = 串地址movcx, BootMes 阅读全文
posted @ 2008-11-17 23:02 sun_kang 阅读(177) 评论(0) 推荐(0) 编辑
2008年4月16日
摘要: Array & Pointer Are they equivalent?Consider the following two pieces of code:int *p;...c = p[1];int p[10];...c = p[1];Are they equivalent? If not, which is faster? The answer is here:Disassembled for c = p[1]:mov eax,dword ptr[p]mov ecx,dword ptr[eax+4]mov dword ptr[c],ecxDisassembled for c = p 阅读全文
posted @ 2008-04-16 22:05 sun_kang 阅读(240) 评论(0) 推荐(0) 编辑
2007年7月14日
摘要: #include"stdafx.h"#include<string.h>#include<iostream>#include<vector>usingnamespacestd;//模式匹配,kmp算法,复杂度O(m+n)//返回匹配位置,-1表示匹配失败,传入匹配串和模式串和长度//可更改元素类型,更换匹配函数#defineMAXN100#define_match(a,b)((a)==(b))typedefcharelem_t;intkmp_match(intls,elem_t*str,intlp,elem_t*pat)...{intfa 阅读全文
posted @ 2007-07-14 19:32 sun_kang 阅读(165) 评论(0) 推荐(0) 编辑
2007年6月28日
摘要: kruskal.hkruskal.cpp#pragmaonce#include<iostream>#include<vector>#include<algorithm>#include<functional>#include<set>template<classVertex_Type,classEdge_Type>classKruskal...{typedefKruskal<Vertex_Type,Edge_Type>Self_Type;protected:structEdge_t...{typedeftype 阅读全文
posted @ 2007-06-28 23:20 sun_kang 阅读(922) 评论(0) 推荐(0) 编辑
2007年5月28日
摘要: 一、底层开发包和工具1.http://www.mesa3d.org/ Mesa是一个类OpenGL(http://www.opengl.org/ )的开源实现。2.http://openil.sourceforge.net/ DevIL(即以前的OpenIL)是一个跨平台的图形处理包,支持BMP、JPG、GIF等多种图形文件格式。二、2D游戏开发包1.http://www.libsdl.org/ http://www-900.ibm.com/developerWorks/cn/linux/theme/special/ SDL(SimpleDirectMediaLayer)是一个跨平台的多媒体和 阅读全文
posted @ 2007-05-28 22:42 sun_kang 阅读(287) 评论(0) 推荐(0) 编辑
2006年12月17日
摘要: ACM/ICPC在线题库集锦:网址:http://acm.uva.es/简称: uva全称: Valladolid Programming Contest Site所在国:西班牙提交方式:web方式和email方式说明:可能是世界上名气最大,最古老的在线题库了。收集了N卷的题目,许多国家队的高手都是从这里练出来的。题目包括历届ACM/ICPC分区赛试题、总决赛试题以及很多其他网友自己出的题目。题目类型比较全面,难度较平均,但是测试数据非常***钻,而且经常更新旧的数据,在别的地方能通过的程序到了uva就可能无法通过。定期有比赛,并且可以利用它的系统主办自己的比赛。唯一的缺点是系统太烂,比赛的时候经 阅读全文
posted @ 2006-12-17 23:45 sun_kang 阅读(361) 评论(0) 推荐(0) 编辑
2006年10月4日
摘要: 自从1993年BjarneStroustrup〔注1〕提出有关C++的RTTI功能之建议,以及C++的例外处理(exceptionhandling)需要RTTI;最近新推出的C++或多或少已提供RTTI。然而,若不小心使用RTTI,可能会导致软件弹性的降低。本文将介绍RTTI的观念和近况,并说明如何善用它。 什么是RTTI? 在C++环境中,标头档(headerfile)含有类别之定义(classdefinition)亦即包含有关类别的结构资料(representationalinformation)。但是,这些资料只供编译器(compiler)使用,编译完毕后并未留下来,所以在执行时期(at 阅读全文
posted @ 2006-10-04 13:44 sun_kang 阅读(401) 评论(0) 推荐(0) 编辑
2006年9月30日
摘要: C语言有五种基本数据类型:字符、整型、单精度实型、双精度实型和空类型。尽管这几种类型数据的长度和范围随处理器的类型和C语言编译程序的实现而异,但以b i t为例,整数与CPU字长相等,一个字符通常为一个字节,浮点值的确切格式则根据实现而定。对于多数微机,表2 - 1给出了五种数据的长度和范围。 表中的长度和范围的取值是假定C P U的字长为1 6 b i t。C语言还提供了几种聚合类型(aggregate types),包括数组、指针、结构、共用体(联合)、位域和枚举。这些复杂类型在以后的章节中讨论。除v o i d类型外,基本类型的前面可以有各种修饰符。修饰符用来改变基本类型的意义,以便更准 阅读全文
posted @ 2006-09-30 10:54 sun_kang 阅读(703) 评论(0) 推荐(0) 编辑
摘要: #include <stdio.h>int main(int argc, char *argv[]){ float p = 5.1f; int f = (int)(p*100); printf("%d", f); getch( ); return 0;}我想要输出 510,可是机器nnd居然输出509(竟然敢扣我工钱)。到底是what's wrong。我上看下看,左看又看,看了又看,就是发现不了错误。于是我试着把5.1改成5.5,一切正常啊。捣鼓了N个小时后猜想,莫非是浮点数的表示问题,于是花了很久找到浮点数的机器表示方法,照着规定克隆操作了一下。(据说 阅读全文
posted @ 2006-09-30 09:42 sun_kang 阅读(735) 评论(0) 推荐(1) 编辑