- 博客(31)
- 收藏
- 关注
原创 在 .NET 中获取 AD 上帐号密码过期时间
原文:http://www.blogcn.com/User8/flier_lu/blog/4371854.html .NET Framework 提供了 System.DirectoryServices 名字空间用于操作 AD 等支持 LDAP 接口的服务器,通过这组类我们能够很容易实现通过 AD 验证用户帐号,以及向 AD 查询域用户及其所在组的信息,是在 Web 应用中集成 AD 以实现
2005-01-31 13:03:00
3185
原创 使用嵌入式 Tomcat 简化程序调试
原文:http://www.blogcn.com/User8/flier_lu/blog/4740621.html 在开发基于 Tomcat 的 Web 程序时,一个比较头痛的问题就是如何将以接口分离的后台服务与前台页面进行联调。以 Tomcat 为中心的运行环境中虽然能够支持 IDE 直接进行跟踪调试,但配置麻烦、速度较慢且限制很多,总不如直接对后台程序进行调试来的方便。 一个较好的
2005-01-31 12:58:00
1159
原创 Eclipse 的字符串分区共享优化机制
原文:http://www.blogcn.com/User8/flier_lu/blog/6018564.html 在 Java/C# 这样基于引用语义处理字符串的语言中,作为不可变对象存在的字符串,如果内容相同,则可以通过某种机制实现重用。因为对这类语言来说,指向内存中两块内存位置不同内容相同的字符串,与同时指向一个字符串并没有任何区别。特别是对大量使用字符串的 XML 文件解析类似场合,这样的
2005-01-31 12:52:00
1126
原创 DACL, NULL or not NULL
原文:http://www.blogcn.com/User8/flier_lu/index.html?id=3024613 上周 hBifTs 在折腾他的文件映射封装类的时候,碰到了不能在 ASP.NET 中直接打开由桌面程序创建的内核对象的问题。 内存映射文件与用户权限 他当时是的方法是修改 ASP.NET 配置文件,让 ASP.NET 扮演系统管理员帐号运行来
2004-08-22 23:34:00
3188
1
原创 通过 DPAPI 获取当前帐号保存的 MSN Messenger 密码
原文:http://www.blogcn.com/User8/flier_lu/index.html?id=3300158 tomekeeper昨天在水木上贴了一个通过 DPAPI 获取保存的 MSN 密码的代码。其核心思想是从 MSN 加密保存在注册表中的键里,把加密后字符串抠出来,然后使用 DPAPI 的函数 CryptUnprotectData 解密之。关键代码如下:
2004-08-22 23:32:00
1901
1
原创 浅谈 C# 中的代码协同 (Coroutine) 执行支持
原文:http://www.blogcn.com/User8/flier_lu/index.html?id=3409568 几个月前我曾大致分析过 C# 2.0 中 iterator block 机制的实现原理,《C# 2.0 中Iterators的改进与实现原理浅析》,文中简要介绍了 C# 2.0 是如何在不修改 CLR 的前提下由编译器,通过有限状态机来实现 iterator blo
2004-08-22 23:30:00
1927
1
原创 在 C# 中处理结构内的数组
原文:http://www.blogcn.com/User8/flier_lu/index.html?id=3318394 在 C/C++ 代码中,大量掺杂着包括普通类型和数组的结构,如定义 PE 文件头结构的 IMAGE_OPTIONAL_HEADER 结构定义如下:以下内容为程序代码:typedef struct _IMAGE_DATA_DIRECTO
2004-08-22 23:29:00
2441
1
原创 用WinDbg探索CLR世界 [8] InternalCall 的使用与实现
原文:http://www.blogcn.com/User8/flier_lu/index.html?id=3270482 在使用 Reflector.NET 或者 Rotor 源码查看 BCL 库的实现时,经常会碰到一些被标记为 InternalCall 的方法。如 System.String 中用于获取字符串长度的 Length 属性,实现上就是调用被标记为 InternalCall
2004-08-22 23:28:00
1560
原创 ASP.NET 中 Session 实现原理浅析 [2] 状态管理器
原文:http://www.blogcn.com/User8/flier_lu/index.html?id=3213970 状态管理本来是一件很美好的事情,嘿嘿,只可惜总是有些厂商在实现的时候考虑得不那么周全。例如 MS 在 ASP 中的状态管理实现就比较烂,因为只实现了一个进程内的基于内存的状态管理,故而存在很多问题: 1.所有的 Session 数据都保存在 Web 服务的进程
2004-08-22 23:26:00
1256
原创 ASP.NET 中 Session 实现原理浅析 [1] 会话的建立流程
http://www.blogcn.com/User8/flier_lu/index.html?id=3183314 HTTP 协议之所以能够获得如此大的成功,其设计实现的简洁性和无状态连接的高效率是很重要的原因。而为了在无状态的 HTTP 请求和有状态的客户端操作之间达到平衡,产生了服务器端会话 (Session) 的概念。客户端在连接到服务器后,就由 Web 服务器产生并维护一个客户
2004-08-22 23:23:00
1188
原创 用WinDbg探索CLR世界 [6] AppDomain 的创建过程
原文:http://www.blogcn.com/User8/flier_lu/index.html?id=3024651 我们知道 CLR 中 Assembly 是在名为 AppDomain 的逻辑空间中被载入运行的,而 AppDomain 是介于操作系统层面进程和线程概念之间,同时具有线程的轻便和进程的封闭性,使用者可以通过 AppDomain.CreateDomain 创建新的 A
2004-08-22 23:21:00
1813
原创 使用未公开关键字在 C# 中导入外部 printf 等参数数量可变函数
http://www.blogcn.com/user8/flier_lu/index.html?id=2602611http://www.blogcn.com/user8/flier_lu/index.html?id=2602647 C++ 语言因为缺省使用 cdecl 调用方式,故而可以很方便实现参数可变参数。详细的原理可以参考我另外一篇文章《The history of calling
2004-07-07 20:11:00
1843
原创 新的 Windows 驱动框架 WDF (Windows Driver Foundation)
http://www.blogcn.com/user8/flier_lu/index.html?id=2507847 WDM (Windows Driver Model) 都还没有完全弄明白,M$ 居然在 WinHEC 上又推出了将全面取代 WDM 的 WDF (Windows Driver Foundation)。OSR Online 上几篇文章简要地介绍了 WDF 的一些新特性,并在
2004-07-07 20:09:00
2950
原创 另一种 WinDbg 插件编写方法 - Debugger Engine Extension
http://www.blogcn.com/user8/flier_lu/index.html?id=2178387 在仔细阅读 scz 的《MSDN系列(11)--给SoftICE写插件》一文后,忍不住自己动手试试 WinDbg 插件的编写,呵呵。不过我选择的是与小四不同的另一种 WinDbg 插件编写方法。 WinDbg 最新版本的 sdkhelp 目录下有一个 debugext
2004-07-07 20:08:00
3422
1
原创 NT 环境下用户态直接读写端口原理浅析
http://www.blogcn.com/user8/flier_lu/index.html?id=1957096 关于 NT 环境下用户态直接读写端口这码子事,本应该是95-96年 NT 架构刚刚出来时讨论的东西,现在翻出来炒现饭,实在是不得已的事情。因为前几天有朋友问起 TSS 中 IOPM 表的问题,而网上这方面的可用文章大多只是泛泛而谈,空有实现方法没有原理分析,没办法直接引用。而
2004-07-07 20:06:00
2070
原创 Win32 调试接口设计与实现浅析 [3] 创建调试子系统
http://www.blogcn.com/user8/flier_lu/index.html?id=1618917 在本系列文章的前两篇文章中,简要地介绍了 Win32 调试接口中用户态调试器结构和调试事件的相关知识 Win32 调试接口设计与实现浅析 [1] 用户态调试器结构初探 Win32 调试接口设计与实现浅析 [2] 调试事件 在这一小节中,将进一步
2004-07-07 20:05:00
1290
原创 CLR 调试接口的架构与应用 [3] 调试事件
http://www.blogcn.com/user8/flier_lu/index.html?id=2042872 在上一节中简单介绍了 CLR 调试器的框架结构,其中提到 CLR 调试环境同时支持 Native 和 Managed 两种模式的调试事件。这一节将从整体上对调试事件做一个概括性的介绍。 首先看看 CLR 通过 ICorDebugManagedCallback
2004-07-07 20:01:00
958
原创 CLR 调试接口的架构与应用 [2] 调试框架
http://www.blogcn.com/user8/flier_lu/index.html?id=1894812 如 Don Box 在《.NET本质论 第1卷:公共语言运行库》一书的第10章中介绍, CLR 调试框架是一个由 CLR 提供的,面向工具开发商的,支持调试功能的最小功能集。与 JVM 的 JDI (Java Debug Interface)不同,CLR 调试框架不仅仅关注
2004-07-07 20:00:00
1195
原创 CLR 调试接口的架构与应用 [1] 背景资料
http://www.blogcn.com/user8/flier_lu/index.html?id=1819166 折腾 CLR 调试接口也有几周了,可是在将 C++ 代码移植到 C# 时总是有问题,直到刚刚才灵机一动有所突破,呵呵,总算可以开始写这个系列文章了。:D 虽然需要实际用到 CLR 调试接口的人可能非常少,但通过对 CLR 调试接口和 Profiler 接口的了解,可
2004-07-07 19:59:00
925
原创 用WinDbg探索CLR世界 [4] 方法的调用机制
http://www.blogcn.com/user8/flier_lu/index.html?id=1745355http://www.blogcn.com/user8/flier_lu/index.html?id=1745373http://www.blogcn.com/user8/flier_lu/index.html?id=1745407 Don Box在《.NET本质论 第1卷:
2004-07-07 19:56:00
962
原创 用WinDbg探索CLR世界 [3] 跟踪方法的 JIT 过程
http://www.blogcn.com/blog/cool/main.asp?uid=flier_lu&id=1678453本来想按照 sos 的帮助文件上命令的分类逐步介绍 WinDbg 下使用 sos 调试 CLR 程序,但发现这样实在不够直观。索性改成根据我分析 CLR 的实际案例,step by step 介绍功能,这样结构上虽然混乱一点,但更加直观,也易于上手 :P前面两篇文章里
2004-04-22 14:46:00
1542
原创 内存拷贝的优化方法
http://www.blogcn.com/blog/cool/main.asp?uid=flier_lu&id=1577430http://www.blogcn.com/blog/cool/main.asp?uid=flier_lu&id=1577440在复杂的底层网络程序中,内存拷贝、字符串比较和搜索操作很容易成为性能瓶颈所在。编译器自带的此类函数虽然做了一些通用性的优化工作,但因为在使用
2004-04-22 14:46:00
2607
3
原创 .NET 1.1中预编译ASP.NET页面实现原理浅析 [1] 自动预编译机制浅析
http://flier_lu.blogone.net?id=1544105.NET 1.1中预编译ASP.NET页面实现原理浅析 MS在发布ASP.NET时的一大功能特性是,与ASP和PHP等脚本语言不同,ASP.NET实际上是一种编译型的快速网页开发环境。这使得ASP.NET在具有开发和修改的简便性的同时,不会负担效率方面的损失。实现上ASP.NET与JSP的思路类似,引擎在第一次使
2004-04-07 16:26:00
1050
原创 CLR 中匿名函数的实现原理浅析
http://flier_lu.blogone.net/?id=1397624CLR 中匿名函数的实现原理浅析 C# 2.0中提供了通过delegate实现匿名函数功能,能有效地减少用户的薄记代码工作,例如以下为引用: ...button1.Click += new EventHandler(button1_Click);...void button1_Click
2004-04-07 14:37:00
1123
原创 在用户态进行虚拟空间地址向物理空间地址的转换
http://flier_lu.blogone.net/?id=1428057 在《自动获取 NT 系统服务描述表与函数名映射表》一文中,我给出了一个从虚地址向物理地址转换的经验函数。以下为引用: PHYSICAL_ADDRESS TPhysicalMemoryMapping::LinearAddressToPhysicalAddress(LPCVOID lpVi
2004-04-05 23:34:00
1817
原创 Win32 核心 DPC 设计思想和实现思路浅析
http://flier_lu.blogone.net/?id=1397656 x86架构设计在上是基于中断思想的,因而从DOS到Win32,操作系统中大量使用中断的概念来表达异步操作的行为。但与DOS下独占的情况不同,Win32下需要由系统对多任务进行调度,因此中断响应代码必须尽可能地简单,并且尽快的将控制权交还给系统。虽然这样一来系统调度的响应速度和实现过程方便了,但还是有很多功能需
2004-04-05 22:58:00
1577
原创 C# 2.0 中Iterators的改进与实现原理浅析
http://flier_lu.blogone.net/?id=1511638 C#语言从VB中吸取了一个非常实用的foreach语句。对所有支持IEnumerable接口的类的实例,foreach语句使用统一的接口遍历其子项,使得以前冗长的for循环中繁琐的薄记工作完全由编译器自动完成。支持IEnumerable接口的类通常用一个内嵌类实现IEnumerator接口,并通过IEnume
2004-04-05 22:56:00
881
原创 Win32 调试接口设计与实现浅析 [1] 用户态调试器结构初探
http://flier_lu.blogone.net/?id=1307208Win32 调试接口设计与实现浅析 所谓调试器实际上是一个很宽泛的概念,凡是能够以某种形式监控其他程序执行过程的程序,都可以泛称为调试器。在Windows平台上,根据调试器的实现原理大概可以将之分为三类:内核态调试器、用户态调试器和伪代码调试器。 内核态调试器直接工作在操作系统内核一级,在硬件与操作系统之
2004-04-05 22:56:00
1456
原创 用WinDbg探索CLR世界 [2] 线程
http://flier_lu.blogone.net/?id=1370342[2] 线程 在配置好WinDbg之后,我们载入一个CLR程序并执行至CLR被载入,然后开始我们的CLR探索之旅。 首先,使用!threads命令看看当前CLR中有哪些线程正在执行以下为引用: 0:004> !threadsThreadCount: 2UnstartedThread
2004-04-05 22:56:00
1030
原创 Win32 调试接口设计与实现浅析 [2] 调试事件
http://flier_lu.blogone.net/?id=1324316[2] 调试事件 前面说到 Win32 下的用户态调试器实际上就是一个while循环,循环体内先等待一个调试事件,然后处理之,最后将控制权交还给调试服务器,就好像一个窗口消息循环一样。调试事件的核心实际上就是一个DEBUG_EVENT结构,在WinBase.h文件中定义如下:以下为引用:
2004-04-05 22:53:00
1257
原创 用WinDbg探索CLR世界[1] - 安装与环境配置
http://flier_lu.blogone.net/?id=1270368 一直以来,我对CLR的分析都是基于MSDN、.NET Framework SDK自带文档和Rotor项目提供的源代码进行静态分析,辅以自己写的一些小例子或对Rotor的修修补补,来进行有限度的动态分析。虽然也用SoftIce跟踪过某些核心函数的机制,但感觉实在是太痛苦了,呵呵。 最近偶然之间发现我的偶像
2004-04-05 22:53:00
1268
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人