- 博客(99)
- 资源 (3)
- 收藏
- 关注
原创 数据库Microsoft Access、SQL Server和SQLite三者对比及数据库的选型建议
摘要: Access、SQL Server和SQLite是三类不同层级的数据库系统。Access是桌面级文件型数据库,适合小型单机应用;SQL Server是企业级C/S架构数据库,支持高并发和大数据量;SQLite是嵌入式轻量引擎,适合移动端和单机应用。三者核心差异在于:架构设计(文件型/C/S/嵌入式)、并发能力(低/高/中)、数据量支持(2GB/TB级/GB级)、功能完整性(基础/丰富/精简)和适用场景(个人工具/企业系统/移动应用)。选择依据应基于用户规模、数据量、并发需求和预算,没有绝对优劣,只有
2025-08-16 15:43:49
1864
原创 Winform控件开发时LicenseManager.UsageMode和DesignMode属性的使用
Winform控件开发中,构造函数内数据加载会影响设计器性能且可能导致错误。传统DesignMode属性在构造函数中不可靠,因其依赖控件层次结构初始化。更可靠的解决方案是使用LicenseManager.UsageMode静态属性,该属性独立于控件生命周期,能准确判断设计时环境。原理是设计器会设置特殊的LicenseContext标记为Designtime模式。建议在控件开发中采用IsDesignTime属性结合两种检测方式(LicenseManager.UsageMode和DesignMode),并在运行
2025-08-16 11:33:41
1017
原创 pdb文件的功能与作用
调试符号文件(PDB)是程序调试的核心组件,包含符号表、源代码映射和调试上下文信息。PDB文件由编译器生成(MSVC需启用/Zi选项,GCC/Clang使用-g参数),必须与可执行文件的版本严格匹配。调试器会依次在可执行文件目录、符号缓存和服务器(如微软符号服务器)中搜索PDB文件。文件采用分层结构存储符号、类型定义和源代码信息。在Windbg中可通过"Symbol File Path"菜单配置PDB路径。注意访问微软符号服务器可能需要特殊网络设置。
2025-08-13 13:36:03
497
原创 CALL与 RET指令及C#抽象函数和虚函数执行过程解析
本文深入解析了CALL/RET指令和C#虚函数调用的底层机制。CALL指令执行时会将返回地址压栈并跳转目标函数,RET指令则弹出返回地址恢复执行流程。在C#中,虚函数和抽象函数通过虚表(vtable)实现多态,每个对象包含虚表指针(vptr),调用时通过间接寻址访问实际函数地址。文章详细剖析了虚表生成原理、调用指令的底层逻辑,并通过反汇编示例展示了实际执行过程,同时对比了不同语言的实现差异,为理解函数调用和多态机制提供了底层视角。
2025-08-08 14:05:07
1062
原创 IDA简单使用教程
IDA Pro是Hex-Rays公司开发的逆向工程专业工具,支持静态反汇编与交互分析,广泛应用于安全研究、漏洞挖掘和恶意代码分析。该工具提供丰富的功能模块(cfg/plugins/procs等)和高效操作快捷键(F5反汇编/X交叉引用等),支持数据库管理(.idb/.i64格式)保存分析痕迹。
2025-08-07 16:00:17
1789
原创 Visual Studio Image Library
Visual Studio图像库提供数千个应用程序图标,适用于多个VS版本(2012-2022),帮助开发者创建视觉统一的软件。该库包含微软各类产品的标准图像资源,还提供传统版本(VS2010及更早)的图标获取方式。
2025-07-08 19:41:49
329
原创 .Net十大必备工具
通过编写各种类型脚本(C#,VB.Net,JScript,VBScript)的模板,通过数据库的表内容,生成你需要的各种代码。它还可通过反射处理汇编源代码,并在代码中使用XML注释生成MSDN形式的文档,这种文档比难以解读的XML更易于理解。LINQ是Language Integrated Query的简称,是集成在.NET编程语言的特性,是编程语言的一个组成部分。NAnt是基于.NET的生成工具,与版本Visual Studio.NET 不同,它使得你的项目创建生成过程变得容易。.Net十大必备工具。
2024-12-07 16:51:30
295
原创 C#中的同步和异步回调
本文帮助您理解C# 中的同步和异步回调及其适当的用例,包括有效处理短期任务、 I/O 操作、并发性、响应性和可伸缩性的示例和注意事项。
2024-11-05 08:57:51
1183
原创 C# 8.0属性模式 (Property Patterns)
在C# 8.0及更高版本中,属性模式使得代码更加简洁和易读,因为它允许你在一个表达式中同时检查对象的类型和它的属性。这减少了需要编写的代码量,并提高了代码的可维护性。
2024-09-07 10:16:38
725
原创 使用IoC容器--Ninject
Ninject是一个流行的.NET依赖注入(Dependency Injection, DI)框架。依赖注入是一种软件设计模式,用于实现控制反转(Inversion of Control, IoC)。在依赖注入中,对象的依赖关系不是由对象本身在内部创建,而是由外部传入。这样做的好处包括提高代码的模块性、可测试性和可维护性。
2024-09-02 19:39:31
726
原创 了解依赖反转原则(DIP)、控制反转(IoC)、依赖注入(DI)及 IoC容器
在软件开发中,依赖反转原则(DIP)、控制反转(IoC)、依赖注入(DI)及IoC容器是几个重要的概念,它们相互关联且对于提高软件的可维护性、可扩展性和灵活性具有重要意义。
2024-08-31 13:57:03
1995
原创 软件设计原则之迪米特发则
迪米特法则(Law of Demeter,简称LoD),也称为最少知识原则(Least Knowledge Principle,LKP),是面向对象设计中的一个重要原则。其核心思想是尽量降低类之间的耦合度,提高模块的相对独立性。具体来说,一个对象应该对其他对象有最少的了解,即一个对象应该尽可能少地了解其他对象的内部细节,只与直接的"朋友"(某个特定的对象)进行交互。
2024-08-29 08:59:30
1260
原创 软件设计原则之依赖倒置原则
依赖反转原则是 SOLID 原则之一。这个原则是关于软件组件之间的依赖关系(例如两个模块,两个类)。该原则指出,高级模块应该依赖于低级模块的抽象,而不是细节,换句话说,不是低级模块的实现。抽象不应该依赖于细节。细节应该取决于抽象。简单地说,原则就是软件的组件(换句话说,两个模块,两个类)之间不应该存在紧密耦合,为了避免这种情况,组件应该依赖于抽象,换句话说,一个契约(接口或抽象类)。
2024-08-28 19:52:25
1375
原创 软件设计原则之接口隔离原则
接口隔离原则(Interface Segregation Principle, ISP)是面向对象设计中的一个重要原则,它属于SOLID原则之一。这个原则强调客户端(即接口的调用者)不应该被迫依赖于它们不使用的方法。换句话说,一个类对另一个类的依赖应该建立在最小的接口上。接口隔离原则的主要目的是使系统更加模块化,易于维护和扩展。
2024-08-27 19:33:40
1408
原创 软件设计原则之开闭原则
在软件设计中,开闭原则(Open Closed Principle)是编程中最基础、最重要设计原则。开闭原则是指一个软件实体(如类、模块、函数等)应该对扩展开放,对修改关闭。也就是说,如果要改变一个程序的功能或增加新的功能,应该尽量通过增加代码来实现,而不是通过修改原有的代码来实现。编程中遵循其它原则,以及使用设计模式的目的就是遵循开闭原则。
2024-08-26 18:58:53
1565
原创 软件设计原则之单一职责原则
单一职责原则(Single Responsibility Principle, SRP)是面向对象设计中的一个基本原则,它规定一个类应该仅有一个引起它变化的原因,即一个类应该负责一组相对独立且内聚的职责。这个原则的目的是降低类的复杂度,提高代码的可读性、可维护性和可扩展性。
2024-08-24 14:42:22
1118
原创 软件设计原则之组合优于继承
“组合优于继承”是一个面向对象编程的设计原则,它建议我们在需要复用代码的时候,尽量使用组合(has-a)的方式,而不是继承(is-a)的方式。组合是指一个类包含另一个类的对象作为自己的属性,而继承是指一个类直接从另一个类派生出来,拥有其所有的属性和方法。
2024-08-22 19:16:19
1830
原创 用关系图和示例解释异步/等待
这个文档解释了 Async/Await 是如何工作的。这可能是一个令人困惑的话题。我们将从一些简单的基本概念开始,然后慢慢地向更高级的概念发展。希望这些可视化图表能够帮助那些学习者。
2024-08-17 17:01:28
1635
原创 解决C++读写中文乱码问题, UTF-8与GBK字符的转换 —基于Windows.h
C++ UTF-8与GBK字符的转换 —基于Windows (MultiByteToWideChar WideCharToMultiByte),解决中文乱码问题
2024-08-15 19:06:46
2143
翻译 .NET Threadpool饥饿,以及队列是如何使它更糟糕的
.NET Threadpool 饥饿问题,以及队列是如何使它更糟的。在同步方法里面调用异步方法,线程饥饿导致的线程池“死锁 ”
2024-08-13 17:26:54
156
WPF学习必备-WPF揭秘(WPF-Unleashed)中英文版+源码
2024-11-02
utf-8有中文无法解析或乱码提供了一个将读取的内容从utf-8转换为GBK的方法,通过MultiByteToWideChar
2024-08-15
C# 网络调试助手 源码 (内有串口、TCP、UDP、http服务)20230612.zip
2023-11-04
VC++实例源码基础入门学习c++必备。从浅入深
2022-07-09
串口调试小助手 1.3 For WIN9X/NT/2000/XP/2003。
2022-07-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅