自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(343)
  • 收藏
  • 关注

原创 C#七大设计原则

原则名称英文名称核心思想主要目的C#实现方式常见应用场景单一职责原则一个类只负责一项职责降低类的复杂度,提高可读性和可维护性将功能拆分到不同的类中用户管理、日志记录、数据处理等开放封闭原则对扩展开放,对修改关闭提高代码的可扩展性和稳定性使用抽象类、接口和多态支付系统、插件架构、算法实现等里氏替换原则子类必须能替换基类确保继承的正确性,避免程序错误正确使用继承,不破坏基类行为形状计算、动物行为、设备控制等接口隔离原则客户端不应依赖不使用的接口。

2025-08-14 12:12:04 1016

原创 .NET Core MVC中CSHTML

CSHTML是ASP.NET Core MVC中的视图文件,结合HTML与C#代码,通过Razor语法动态生成网页内容。核心特点包括:使用@符号嵌入变量/表达式,@{}包裹代码块,支持条件判断和循环;功能涵盖布局复用(_Layout.cshtml)、模型绑定(@model)和HTML辅助方法。典型应用如商品详情页,通过强类型模型、条件渲染和循环实现动态数据展示。CSHTML有效分离逻辑与展示层,是构建动态Web界面的关键组件。

2025-08-11 19:09:50 584 1

原创 MVVM Light 的 Messenger 实现组件间通信的类

摘要:MVVM Light 的 Messenger 是实现组件间通信的核心类,采用订阅-发布模式解耦 View 和 ViewModel 的交互。其核心功能包括:通过泛型指定消息类型、支持目标类型过滤、提供注册/发送/解注册机制。典型应用场景包括 ViewModel 间数据同步和界面逻辑解耦,使用时需注意及时解注册避免内存泄漏。该机制通过消息中心间接通信,适合 WPF 等复杂应用的开发,能有效降低组件耦合度。

2025-08-11 17:39:01 660

原创 在C#中 属性(Properties)get 和 set

本文详细介绍了C#中属性的访问修饰符设置方法。通过为get和set访问器单独设置不同的访问级别(如public、private、protected),可以实现更精细的属性访问控制。文章展示了四种典型应用场景:只读属性(外部仅读取)、只写属性(外部仅修改)、set设为private(类内部修改)以及set设为protected(派生类修改)。这些技巧能有效增强代码封装性,同时提供示例代码说明具体实现方式,适用于需要灵活控制属性访问权限的开发场景。

2025-06-29 12:10:32 1127

原创 WPF中获取主窗体

WPF MVVM模式中访问主窗体的推荐方法主要包括:1)依赖注入(通过接口注入窗体服务);2)事件聚合器(使用Prism库解耦通信);3)命令参数传递(简单场景适用)。其中依赖注入和事件聚合器解耦程度最高,符合MVVM原则,而直接查找窗体会破坏模式。建议优先使用前两种方法,仅在简单需求时考虑命令参数传递。这些方法有效实现了ViewModel与View的解耦,避免直接引用主窗体实例。

2025-06-28 07:56:48 339

原创 Java中的finalize()方法

Java的finalize()方法是Object类的一个protected方法,用于在对象被垃圾回收前执行清理工作。其主要用途包括释放资源(如文件句柄、数据库连接)、重置对象状态和自我清理。但使用时需注意:调用时机不确定(可能永远不会被调用),存在性能开销,异常会被忽略,且存在"对象复活"的可能性。示例代码展示了如何关闭文件资源,但实际开发中建议使用try-with-resources或显式关闭方法替代finalize(),因其可靠性不高。

2025-06-28 07:55:00 938

原创 Java 中 Vector 集合类

摘要:Java中的Vector是线程安全的动态数组实现,位于java.util包,继承自AbstractList并实现List等接口。它与ArrayList类似但具备同步方法(如synchronized add()),适合多线程环境,但性能较低。构造方法可指定初始容量和增量,常用操作包括添加/获取/删除元素。相比非线程安全的ArrayList,Vector适用于并发场景但单线程时效率较差。开发者应根据线程需求选择合适集合类。示例代码展示了Vector的基本用法,包括遍历和元素操作。

2025-06-27 06:27:55 318

原创 C# 中 == 和 Equals()

本文详细介绍了C#中==运算符与Equals()方法的区别及自定义实现方式。核心差异在于:==默认比较引用,可被重载;Equals()默认比较引用但可被重写为值比较。文章通过完整的Person类示例,展示了如何同时重写Equals()方法和重载==运算符(需配套实现!=和GetHashCode()),使对象既支持值比较又保持引用比较功能。关键点包括处理null值、类型检查,以及确保哈希一致性。最终示例验证了自定义比较逻辑的正确性,为开发人员提供了对象比较的标准化实现范式。

2025-06-27 06:21:36 571 1

原创 C# 中 string.Equals 以及 StringComparison 枚举的不同选项

默认选择Ordinal或:除非你有明确的理由需要考虑文化差异(如本地化 UI),否则优先使用序号比较。它们性能更好,行为更可预测,不受用户文化设置影响。何时使用文化相关比较 (CurrentInvariant:主要用于用户可见的文本处理,如排序、搜索、显示。适用于与用户当前环境交互,适用于需要跨文化环境一致性的非显示逻辑。区分大小写 vs 不区分大小写:根据具体需求选择。安全敏感操作(如密码验证)通常需要区分大小写。用户输入搜索通常不区分大小写。避免隐式比较:不要依赖默认的==

2025-06-25 19:07:14 725

原创 C# 中 逻辑运算符 - 逻辑与,短路

C#中的逻辑运算符分为两类:非短路运算符(|、&)和短路运算符(||、&&)。|和&执行按位或逻辑运算,始终计算两个操作数,适用于需要完整计算的场景。||和&&具有短路特性:||在第一个操作数为true时跳过第二个操作数,&&在第一个操作数为false时跳过第二个操作数,提高了逻辑运算效率。按位运算符主要用于整数二进制位操作,而短路运算符更适合布尔逻辑判断。开发者应根据是否需要完整计算来选择合适的运算符。

2025-06-25 19:00:26 928

原创 C# 中 string.Compare 比较两个字符串的字典顺序

C#中的string.Compare方法用于比较两个字符串的字典顺序(Unicode值排序),返回整数表示相对关系:小于0表示第一个字符串在前,等于0表示相等,大于0表示第一个字符串在后。该方法有多种重载形式,支持大小写敏感/不敏感比较、部分字符串比较和区域性设置。常用于排序、查找和字符串匹配等场景,是高效的字符串处理工具。通过StringComparison枚举可灵活控制比较方式,如忽略大小写(OrdinalIgnoreCase)。

2025-06-20 14:58:27 490

原创 C#中用于控制自定义特性(Attribute)

摘要:[AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = false)]是C#中用于定义自定义特性使用规则的元特性。它包含三个关键参数:1) AttributeTargets指定适用目标(如仅限类),2) AllowMultiple控制是否允许多次应用同一特性(false表示禁止),3) Inherited决定特性是否被继承(false表示不继承)。例如,一个DeveloperInfo特性若按此配置,就只能用于

2025-06-09 15:09:44 475

原创 Java String 与 StringBuffer 深入解析:特性、实现与最佳实践

在 Java 编程语言中,字符串处理是一项基础且频繁的操作。Java 提供了 String、StringBuffer 和 StringBuilder 三个类来处理字符串,每个类都有其特定的特性和适用场景。本报告将详细解析 String 和 StringBuffer 的区别、实现原理及最佳实践,帮助开发者在不同场景下做出合理的选择。

2025-03-30 21:44:58 707

原创 Java String 与 StringBuffer 深入解析:特性、实现与最佳实践

0] Java String、StringBuffer 和StringBuilder 的区别 - 菜鸟教程. http://www.runoob.com/w3cnote/java-different-of-string-stringbuffer-stringbuilder.html.的各种修改操作(append、insert、reverse)都直接在同一个对象上进行,避免了频繁创建新对象的开销,展示了。的内部实现原理和性能特点,开发者可以做出更明智的决策,编写出性能更优、可维护性更高的代码。

2025-03-30 19:54:51 919

原创 欢迎使用Markdown编辑器

你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:撤销:Ctrl/Command + Z重做:Ctrl/Command + Y加粗:Ctrl/Command + B斜体:Ctrl/Command + I标题:Ctrl/Command + S

2025-03-30 19:53:44 758

原创 .NET CAD 二次开发中的 Transform 与数学矩阵详解

在 .NET CAD 二次开发中,Transform是通过矩阵运算实现几何变换的核心技术,涉及线性代数中的缩放、旋转、位移等操作。开发者需掌握齐次坐标与矩阵乘法的原理,并熟练使用等 API 方法。代码示例展示了如何通过矩阵旋转实体,体现了矩阵在图形操作中的高效性与灵活性。“矩阵是图形世界的语言,理解它,便能驾驭 CAD 的无限可能。🚀。

2025-03-08 18:24:12 1202

原创 .NET CAD 二次开发中的图形数据库详解与示例

图形数据库是 AutoCAD 二次开发的核心数据结构,负责存储和管理 CAD 图纸中的所有信息,包括几何实体(如直线、圆)、符号表(如块表、层表)、对象字典等。它本质上是一个分层的树形结构,通过事务机制确保操作的安全性和一致性。图形数据库是 CAD 二次开发的核心,通过事务机制和分层结构管理数据。开发者需熟悉块表、事务操作及第三方库(如 CAD.NET)的使用。代码示例展示了从创建实体到提交事务的完整流程,体现了数据库操作的严谨性。掌握这些技术,可高效实现自定义绘图工具、自动化批处理等功能,提升开发效率。

2025-03-08 18:15:04 921

原创 作为 .NET CAD 二次开发工程师的核心知识与建议

作为 .NET CAD 二次开发工程师,需在编程、数学和行业知识之间找到平衡。技术深度(如掌握 AutoCAD 底层 API)与领域广度(如跨平台开发)同样重要。保持对新技术的好奇心,积极参与社区讨论,才能在这个高度专业化的领域持续成长。“代码是设计的语言,而 CAD 开发是连接想象与现实的桥梁。坚持实践,未来可期!🚀。

2025-03-08 18:07:28 756

原创 C# 初学者的系统学习路径与职业规划指南

学习是一个持续的过程,保持好奇心和热情,你一定能成为优秀的 .NET 开发者!🚀。

2025-03-08 17:58:31 1712

原创 Windows CMD 命令大全(综合开发整理版)

• 这是微软官方提供的 Windows 命令参考,包含所有内置命令的详细说明和用法。• 如果需要更强大的命令行工具,可以参考 PowerShell 的官方文档。:注意查看文档的适用 Windows 版本,避免使用过时或不兼容的命令。• 这是一个非官方的命令参考网站,内容简洁明了,适合快速查找命令用法。:大多数命令文档都附有示例,可以直接复制到 CMD 中测试。• 旧版文档,但内容依然适用,适合查找特定命令的详细说明。如需进一步探索,可参考来源文档中的命令详解。:将命令输出作为另一个命令的输入(如。

2025-03-08 17:32:37 2379

原创 提升博客流量的核心SEO策略以及AI工具推荐

2025年的SEO竞争将更注重内容质量、技术适配与用户意图理解。建议定期监控Google算法更新(如核心算法或E-A-T调整),并利用工具(如SEMrush、Screaming Frog)持续优化。

2025-03-08 17:11:43 1416

原创 Java初级入门学习

通过系统学习和项目实践,逐步从初级开发者成长为全栈工程师。建议结合开源社区资源(如GitHub、Gitee)和实际需求选择技术方向。编程是一场马拉松,不是短跑。每天进步一点点,终有一天你会站在自己曾经仰望的高度!:变量与数据类型、流程控制、面向对象编程(OOP)、异常处理、集合框架。:Servlet、JSP、Tomcat服务器、HTTP协议。:SQL基础(增删改查)、JDBC连接数据库。:类与对象、继承、封装、多态、接口。

2025-03-08 16:32:26 795

原创 WPF —— MVVM(Model-View-ViewModel)模式详解

MVVM 是的缩写,是一种设计模式,目的是将和分离,让代码更容易维护和测试。

2025-03-08 01:52:04 1337

原创 C++ 数据结构详解及学习规划

存储固定大小、同类型元素的连续内存结构。•。

2025-03-06 23:35:16 1131

原创 静态成员不依赖于特定对象的内容

静态成员不依赖于特定对象的内容,意味着它们属于类本身,而不是类的任何特定实例。这使得静态成员可以在没有对象实例的情况下使用,并且在整个类的所有实例之间共享。这种特性在编程中非常有用,可以用于实现全局功能、共享数据等。

2025-03-06 22:59:17 920

原创 SDK(Software Development Kit)

它是一系列开发工具的集合,用于帮助开发者创建应用程序。

2025-03-06 22:53:01 390

原创 充分必要条件

在数学中,充分必要条件是逻辑关系的一种表达,用于描述两个命题之间的条件关系。

2025-03-05 22:26:23 900

原创 微信小程序开发 中 “安全区域“

随着手机屏幕的多样化,尤其是iPhone X等带有刘海屏或底部操作区域的手机,开发者需要确保小程序的内容不会被这些系统组件遮挡。因此,微信小程序提供了一些API和CSS样式规则来帮助开发者适配这些特殊屏幕。在微信小程序开发中,"安全区域"是指在小程序页面中,不会被系统组件(如状态栏、标题栏、iPhone X 系列的刘海屏等)遮挡的可视区域。开发者应该根据获取到的安全区域信息来调整小程序页面的布局,确保内容不会被遮挡。例如,可以通过设置页面的。使用上述CSS,可以确保页面内容不会被状态栏和底部操作区域遮挡。

2025-03-05 21:08:14 721

原创 ES6(ECMAScript 2015)中的 扩展运算符(Spread Operator)

..在 Vue 3 中是 ES6(ECMAScript 2015)中引入的扩展运算符(Spread Operator)。扩展运算符可以用于数组或对象,允许将一个数组或对象中的元素展开到另一个数组或对象中。在 Vue 3 中,这个运算符通常用于模板中的列表渲染、组件传参、合并数组或对象等场景。

2025-03-04 21:20:00 333

原创 Vue3详解

Vue3是Vue.js的第三个主要版本,它是一个用于构建用户界面的渐进式JavaScript框架。这个例子展示了如何使用Vue3进行组件化开发,包括父子组件的通信和props的使用。这个例子展示了Vue3的基本用法,包括模板中的数据绑定和创建Vue应用的基本步骤。这个例子展示了Vue3的组合式API的使用,包括setup函数、ref和事件处理。

2025-03-04 20:54:13 897

原创 HTML5

H5指的是HTML5,即第五代超文本标记语言。它是构建和呈现网页内容的一种语言标准,结合了HTML4.01的相关标准并进行了一系列革新,以适应现代网络的发展需求。标签来绘制一个红色矩形。)来构建网页结构,使得网页内容更加清晰,有利于搜索引擎优化。属性添加了播放控件,用户可以控制视频的播放、暂停和音量。这个例子展示了如何使用HTML5的本地存储功能()来存储和读取数据。这个例子使用了HTML5的语义化标签(这个例子展示了如何使用HTML5的。// 输出:John Doe。标签在网页中嵌入视频。

2025-03-04 20:43:30 1335

原创 C#中修饰符

在C#中,修饰符用于定义类、结构体、成员变量、方法等的访问权限、行为特性或约束条件。C#修饰符通过控制访问性和行为特性,增强了代码的封装性、安全性和灵活性。理解这些修饰符的用途和限制,是编写高质量C#代码的关键。控制类或成员的可见性和访问范围。定义类或成员的行为特性或约束。

2025-02-17 22:30:38 833

原创 Python 中的一种调试工具 assert

assert是一种简单而有效的调试工具,用于确保代码中的某些条件为真。它适合在开发和测试阶段使用,但不适合用于生产环境中的输入验证或错误处理。

2025-02-16 20:47:15 525

原创 Python 内置函数 isinstance

是 Python 中用于类型检查的常用工具,特别适合需要处理继承关系或多类型检查的场景。

2025-02-16 20:43:09 344

原创 C# 中用于比较两个字符串的方法string.Compare

DWORD: 双字(Double Word),通常为32位(4字节)。QWORD: 四字(Quad Word),通常为64位(8字节)。DWORD是32位,适用于32位系统或处理较小数据。QWORD是64位,适用于64位系统或处理较大数据。选择使用哪种类型取决于具体需求和系统架构。

2025-02-13 22:55:37 1581

原创 DWORD 和 QWORD

DWORD: 双字(Double Word),通常为32位(4字节)。QWORD: 四字(Quad Word),通常为64位(8字节)。DWORD是32位,适用于32位系统或处理较小数据。QWORD是64位,适用于64位系统或处理较大数据。选择使用哪种类型取决于具体需求和系统架构。

2025-02-09 15:56:19 1481

原创 Python中元组(tuple)内置的数据类型

元组是通过将元素用圆括号()括起来,并用逗号分隔来定义的。元组中的元素可以是不同的数据类型。# 空元组# 包含不同数据类型的元组# 单个元素的元组需要有一个尾随逗号。

2024-12-30 21:52:06 493

原创 Python中切片操作符

在Python中,切片是一种操作符,允许你获取序列(如列表、元组、字符串)的一部分。切片操作返回序列的一个子集,这个子集是一个新的对象,与原始序列是独立的。切片操作通常用于列表、元组、字符串等。

2024-12-30 21:48:14 575

原创 Python中__getitem__ 魔法方法

方法定义在类的内部,当对象使用索引操作符[]时被调用。# 实现代码其中,self是当前对象的实例,key是传递给[]操作符的索引。

2024-12-30 21:46:10 484

原创 Python中zip

在Python中,zip是一个内建函数,它用于将两个或多个迭代器(比如列表、元组、字符串等)作为参数,返回一个zip对象。这个zip对象是一个迭代器,它在内部将输入的迭代器的元素组合成一个个元组(tuple),每个元组包含来自每个输入迭代器的一对元素。下面是zipzipzipzipzipzipzipzipzip。

2024-12-24 22:32:35 485

Cad二次开发封装起来的工具

Cad封装一些起来的常用的工具,图形实体、图层、块等操作...持续更新中

2023-12-12

Cad二次开发图形小工具

Cad二次开发编辑图形小工具...

2023-03-26

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除