- 博客(505)
- 资源 (8)
- 收藏
- 关注
原创 WPF 自定义输入窗口
本文介绍了一个自定义的WPF输入对话框实现方案,可完美替代VB的Interaction.InputBox。该方案包含三个部分:1)通过XAML定义对话框窗口布局,包含提示文本、输入框和按钮;2)后台代码实现数据绑定和逻辑处理;3)调用示例展示使用方法。相比VB的InputBox,这个WPF版本能保持应用UI风格统一,支持主题化、MVVM绑定和样式控制。关键实现点包括设置Owner属性和WindowStartupLocation来确保窗口居中显示。该方案简单实用,能很好地融入WPF应用程序架构。
2026-02-27 14:22:01
309
原创 Python 提取本机连接过WiFi名称和密码
本文介绍如何在Windows系统上用Python获取历史连接过的WiFi名称及密码并导出为CSV文件。通过调用netsh wlan show profiles获取WiFi列表,再使用netsh wlan show profile命令解析各WiFi密码。代码兼容中英文系统,采用GBK编码处理输出,并添加错误处理机制。注意事项包括:需管理员权限运行、CSV导出时避免密码前导零被省略的处理技巧(添加制表符或等号前缀)。最终输出包含WiFi名称和密码的列表,并保存为CSV文件。
2026-02-02 09:04:41
335
1
原创 读《人类之旅:财富与不平等的起源》
如果我们把人类30万年的历史压缩成一天,那么在这一天里,绝大部分时间我们都在为了填饱肚子而挣扎。直到最后时刻,也就是近200年,世界财富才像坐了火箭一样直冲云霄。这中间究竟发生了什么?为什么有的国家富甲天下,有的国家却依然在贫困中挣扎?统一增长理论创始人、著名经济学家在《人类之旅:财富与不平等的起源》中,为我们拆解了这个关乎全人类命运的终极谜题。
2026-01-31 23:50:14
451
原创 一蓑烟雨任平生:从《定风波》读懂苏轼的人生智慧
苏轼《定风波》赏析:风雨中的人生境界 这首词写于苏轼被贬黄州期间,记录了一次春游遇雨的小事,却展现了三种人生境界:首先是以审美态度面对风雨,将困境转化为风景;其次是不被外界声音干扰,保持自己的节奏;最终达到"也无风雨也无晴"的超然境界。词中既有"竹杖芒鞋轻胜马"的豪迈,也有"微冷"的真实感受,展现了苏轼在逆境中的精神自由。这首词启示我们:无法避免人生风雨,但可以选择面对的姿态,最终获得内心的澄明与自由。
2026-01-24 11:32:52
427
原创 普通人最稳妥的长期成长路径
每日写作:最高级的复利投资 在不确定时代,写作是最稳妥的成长路径。它不仅是记录,更是积累复利资产:通过输出倒逼输入,持续提升能力与认知,同时放大个人影响力,让机会主动上门。构建五大底层能力(元认知、学习力、思考力、写作力、英语力)是关键,而写作是核心——它能将模糊思考清晰化,沉淀为可复用作品,并成为个人品牌的放大器。坚持高质量输入(终身受用、资产化、长期主义),日拱一卒,时间会带来超预期回报。慢即是快,方向对了,每天写一点就是最好的投资。
2026-01-23 08:12:44
81
原创 一次把字符编码讲清楚:从 ASCII / Unicode 到 C# 文件与 I/O 实战
本文系统梳理了字符编码的核心概念与工程实践。从字符编码的本质(字符与字节的映射规则)出发,分析了字符集与编码方式的区别,并探讨了不同编码存在的历史原因和适用场景。文章详细介绍了ASCII、GB系列、UTF-8/16/32等常见编码的特点,通过二进制示例直观展示了编码差异。在.NET开发层面,重点说明了Encoding类的使用、UTF-16的替代对问题,以及文件I/O和网络通信中的编码处理要点。最后针对工控、上位机等场景给出了实用建议:统一使用UTF-8作为现代标准,对遗留系统按协议处理,并强调必须显式指定编
2026-01-22 10:32:55
742
原创 如何用一天时间,彻底重启你的人生
改变失败的根源与重启人生的方法 大多数人改变失败的原因在于:他们只关注表面行为(二阶改变),而忽略了身份层面的根本转变(一阶改变)。真正的改变需要先成为"那个人",让理想行为自然发生。阻碍改变的心理因素包括:潜意识抗拒、身份认同的束缚和心智层级的局限。本文提出了一套"单日重启协议",通过反向愿景练习、行为打断和游戏化设计,帮助人们突破旧有模式。这套方法强调:改变不是靠意志力,而是通过重构身份认知和行为反馈系统来实现的。关键是要直面内心真实目的,设定清晰的生活镜头,将人
2026-01-19 09:54:46
1483
原创 .NET 基础 - StringBuilder 类
本文介绍了 .NET 中的 StringBuilder 类,主要内容包括: 基本概念:StringBuilder 是可变字符串容器,适用于需要频繁修改字符串的场景,如循环拼接、大文本处理等。 核心特性: 可变长度(Length)和容量(Capacity) 支持索引器直接修改字符 自动扩容机制 常用方法: 追加:Append(), AppendLine(), AppendFormat() 编辑:Insert(), Remove(), Replace() 输出:ToString() 应用场景: 循环拼接大文本
2026-01-17 13:36:20
491
原创 .NET基础-字符串
字符串操作摘要 System.String类提供多种静态方法处理字符串,包括创建、访问和处理操作。字符串是不可变的,所有方法返回新字符串而不修改原值。创建方式包括字面量赋值、构造器和字符数组转换。可通过索引或foreach遍历访问字符。常用方法包括判空检查(IsNullOrEmpty)、搜索(StartsWith/Contains/IndexOf)和处理(Substring/Replace/ToUpper)。典型应用场景涉及文件名检查、关键词搜索和字符串截取等。
2026-01-16 09:23:11
703
原创 .NET基础-字符
C#中的char类型表示一个16位的Unicode字符,是System.Char的别名。它支持基本多文种平面内的字符,超出范围需使用代理项对。System.Char提供丰富的静态方法,包括字符分类(IsDigit/IsLetter)、大小写转换(ToUpper/ToLower)、数值处理(GetNumericValue)和编码转换(ConvertFromUtf32)等功能。这些方法既可通过System.Char也可用char别名调用,其中ToUpper/ToLower受语言环境影响,建议使用Invarian
2026-01-15 08:07:48
539
原创 委托是 C# 中最常见的导致内存泄漏(Memory Leaks)的原因之一
委托本身不是内存泄漏,不清理不再需要的委托绑定才是。必死无疑(除非手动解绑)。安全。内存泄漏的头号通缉犯。委托这把瑞士军刀我们已经从头到尾解析完了。从基本概念、内置 Action/Func、异步应用到内存陷阱。
2026-01-14 08:34:51
426
原创 委托实战案例
摘要:本文展示了一个经典C#异步下载器案例,结合了Action<T>委托、Task异步操作和CancellationToken取消机制。通过FileDownloader类实现:1) 使用Action<int>委托回调进度;2) 采用CancellationTokenSource设置超时;3) 通过Task.Run实现异步非阻塞下载。代码演示了业务逻辑与UI展示的解耦,以及超时处理的优雅实现。这种设计具有非阻塞、资源可控和高度可复用等特点,是处理异步长任务的最佳实践。(148字)
2026-01-13 08:18:44
300
原创 复杂的异步编程(如 Task 或 BeginInvoke)中,委托是如何发挥作用
摘要:本文探讨了委托在C#异步编程中的关键作用及其演变历程。从早期的APM模式(BeginInvoke)到现代的Task-based模式,委托始终作为异步逻辑的载体:早期作为线程入口点(1.0),现代则用于任务封装(Task.Run)和状态管理(2.0)。重点分析了Action与Func<T>在Task中的差异,以及委托如何通过闭包捕获上下文、实现回调机制。文章指出,尽管async/await简化了异步编程,但其底层实现仍依赖于委托作为"逻辑接力棒"的本质特性,承担着定义任务
2026-01-12 13:43:41
682
原创 视觉、智能与人性的交响:读《我看见的世界》有感
李飞飞的自传《我看见的世界》展现了一位AI科学家的非凡旅程:从移民家庭的艰辛起步,到创立改变AI历史的ImageNet,再到倡导以人为本的技术伦理。书中不仅记录了她突破性的科研成就——通过数据革命重塑计算机视觉领域,更揭示了科技背后的人文关怀。李飞飞跨越地理、阶层和学科的边界,在算法与人性间寻找平衡,她的故事是对"科技向善"最生动的诠释,为技术时代提供了兼具理想主义与现实关怀的成长范本。
2026-01-10 23:09:13
583
原创 如何利用 C# 内置的 Action 和 Func 委托
本文介绍了C#中委托的进阶应用,重点讲解了内置委托Action和Func的使用方法及其与传统自定义委托的区别。Action适用于无返回值(void)方法,Func适用于有返回值方法,能大幅简化代码。文章还深入分析了事件(Event)机制,指出事件是对委托的安全封装,采用发布-订阅模式实现通知功能,相比直接使用委托更安全且职责分离。通过闹钟实例演示了事件的工作流程,最后总结了三者的关系:Action/Func是常用委托模板,委托提供方法指针能力,事件则实现了安全的观察者模式。
2026-01-10 11:49:51
471
原创 理解C#中的委托
摘要:C#中的委托(Delegate)是实现方法回调、事件处理和异步编程的核心机制,本质上是类型安全的方法引用。委托通过间接调用实现解耦,允许方法像变量一样传递和使用。使用步骤包括声明委托类型、实例化委托和调用委托。委托支持多播(链式调用)和Lambda表达式,编译器会生成继承自System.MulticastDelegate的类来维护调用列表。内置委托类型(如Action和Func)简化了开发。委托的核心价值在于逻辑的抽象与传递,为灵活架构(如插件式编程)提供基础。
2026-01-09 08:16:43
717
原创 关于C#编程中的async / await关键字
本文介绍了C#中async/await关键字的核心概念和实际应用。通过WPF示例直观展示了同步方法会阻塞UI线程导致界面卡顿,而异步方法则能保持UI响应流畅。文章指出async/await本质是"用同步写法写异步代码",通过状态机和回调机制实现线程释放,特别适合UI、IO等场景。重点强调了三条使用原则:await只能等待Task、async方法通常返回Task、避免中途使用.Result可能导致死锁。最后提供了模拟真实耗时操作的通用模板,区分了IO操作和CPU密集型任务的处理方式。
2026-01-08 08:29:08
983
原创 非公有构造器的核心应用场景
本文探讨了非公有构造器的应用场景及实现模式。首先分析了三大典型应用:控制实例创建、实现对象池和工厂模式。通过数据库连接管理器的代码示例,展示了私有构造器如何实现单例模式与对象池的结合。随后深入讲解了抽象工厂模式,以支付网关系统为例,演示了如何利用protected构造器和静态工厂方法实现多态返回和高度封装。技术要点包括:访问控制限制实例化、静态方法作为统一入口、内存优化机制,以及通过嵌套子类实现完全封装。这种模式在框架设计中广泛应用,既能保证安全性又具备良好的扩展性。
2026-01-07 08:17:54
456
原创 C# 核心进阶:深度解析继承(Inheritance)与多态机制
本文介绍了面向对象编程中的继承机制及其在C#中的实现方式。首先阐述了继承作为代码复用和构建类层次结构的核心作用,重点讲解了多态性、引用转换(向上/向下转换)及类型检查工具(as/is运算符)。其次详细说明了虚函数成员的重写机制(virtual/override关键字)和抽象类/密封类的特性。文章还涵盖了成员隐藏(new修饰符)、base关键字用法、构造器执行顺序等重要概念。最后通过Book/EBook类的继承示例,直观展示了代码复用、构造器链、方法重写和向上转换等核心技术。这些内容为构建灵活安全的类层次结构
2026-01-06 09:18:28
586
原创 C# 中类型转换与模式匹配核心概念
摘要:本文详细介绍了C#中类型转换与模式匹配的核心概念。向上转换(Upcasting)是隐式的子类到基类转换,向下转换(Downcasting)则需要显式操作且可能失败。as运算符提供安全的转换方式(失败返回null),而is运算符可检查类型并引入模式变量(推荐做法)。通过电子书与普通书的实例,展示了不同转换方式的使用场景与注意事项,帮助开发者正确处理类型转换和模式匹配。
2026-01-05 08:58:30
454
原创 C# 架构设计:接口 vs 抽象类的深度选型指南
摘要:C#中接口和抽象类都支持抽象和多态,但设计理念不同。抽象类定义"是什么"(is-a),提供共享代码和默认实现;接口定义"能做什么"(can-do),描述行为契约。关键区别在于:抽象类支持单继承、可含实现和字段;接口允许多实现、传统上不含实现。应用场景上,密切相关的类共享逻辑用抽象类,跨类族行为和解耦设计用接口。建议优先使用接口,必要时可结合两者,通过抽象基类提供接口的默认实现。
2026-01-05 08:28:29
341
原创 C# 核心进阶:深度解析继承(Inheritance)与多态机制
继承不仅是“获取父类的代码”,更是一种“是一个(is-a)”的逻辑关系。通过合理使用。
2026-01-03 11:48:43
630
原创 深度解析 C# 核心:类(Class)的设计精髓与高级特性
在 C# 编程世界中,是最基础且最强大的引用类型。它不仅是数据的容器,更是逻辑的封装体。本文将基于 C# 的最新特性,深度提炼类中的关键技术点,帮助开发者构建更健壮的对象模型。
2026-01-02 20:58:14
574
原创 pyAutoGUI 模块主要功能介绍-(4)消息框功能
本文介绍了PyAutoGUI库中的消息框功能及其他辅助功能。消息框包括警报框、确认框、输入框和密码输入框,分别用于显示警告信息、获取用户确认、接收文本输入和密码输入。辅助功能涉及安全机制(FAILSAFE)、操作间隔(PAUSE)和键盘按键支持。注意事项包括PyAutoGUI的阻塞特性、图像识别依赖库、跨平台差异等,建议参考官方文档获取完整信息。这些功能适用于自动化脚本开发中的用户交互场景。
2025-09-19 20:45:42
495
原创 pyAutoGUI 模块主要功能介绍-(3)截图与图像识别功能
本文介绍了PyAutoGUI的屏幕捕获与图像定位功能,主要包括6个核心功能:1)screenshot()捕获屏幕截图;2)locateOnScreen()查找图像位置;3)locateCenterOnScreen()获取图像中心坐标;4)locateAllOnScreen()查找所有匹配图像;5)pixel()获取指定像素颜色;6)pixelMatchesColor()验证像素颜色匹配。每个功能都配有示例代码,支持区域截图、图像定位、点击操作和颜色检测等自动化任务,适用于GUI自动化测试和操作场景。
2025-09-15 20:48:10
451
原创 pyAutoGUI 模块主要功能介绍-(2)键盘功能
文章摘要:pyAutoGUI提供多种键盘输入方式:1) write()支持带间隔的文本输入;2) press()可单次/多次按键;3) keyDown()/keyUp()实现组合键操作;4) hold()上下文管理器简化长按操作;5) hotkey()便捷执行多键组合。典型应用包括模拟复制粘贴(Ctrl+C/V)、输入带间隔文本等,适用于自动化测试和脚本开发场景。
2025-09-14 11:01:02
475
原创 pyAutoGUI 模块主要功能介绍-(1)鼠标功能
pyAutoGUI是一个跨平台的Python自动化库,支持鼠标键盘控制、屏幕截图和图像识别。摘要介绍其鼠标操作功能:获取屏幕分辨率(size())和鼠标位置(position());检查坐标是否在屏幕内(onScreen());绝对/相对移动鼠标(moveTo()/move());模拟点击(click()/doubleClick());拖拽操作(dragTo()/drag());以及滚轮控制(scroll())。所有功能均提供代码示例,并支持动画效果和左右键操作。
2025-09-06 14:34:08
1081
原创 C# FileInfo 类深度解析文件时间属性
本文介绍了C#中System.IO.FileInfo类处理文件时间属性的方法。重点讲解了三个核心时间属性:创建时间(CreationTime,受文件操作影响)、最后修改时间(LastWriteTime,最可靠)和最后访问时间(LastAccessTime,不推荐使用)。文章提供了代码示例,比较了本地时间与UTC时间的差异,并给出最佳实践建议:优先使用LastWriteTime和UTC时间,进行安全检查与异常处理。这些知识对开发文件管理系统和实现文件同步功能至关重要。
2025-09-04 20:49:35
1064
原创 WPF美观UI设计与资源继承技术总结
本文介绍了WPF界面美化技巧与资源字典管理方法。通过一个美观的登录界面示例,详细展示了Label、TextBox、Button等核心控件的样式定义,包括现代字体选择、统一风格管理、主色调搭配以及阴影圆角等视觉效果处理。同时讲解了ResourceDictionary的继承技术,演示了如何将样式封装到外部资源文件并通过MergedDictionaries实现复用,提升开发效率和界面一致性。这些技巧可帮助开发者快速构建专业美观的WPF应用程序界面。
2025-09-03 14:53:17
821
原创 DeepSeek 入门与精通
你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:撤销:Ctrl/Command + Z重做:Ctrl/Command + Y加粗:Ctrl/Command + B斜体:Ctrl/Command + I标题:Ctrl/Command + S
2025-02-22 10:45:03
869
原创 Python使用词云图展示
网上看到一个txt文本信息,共2351条饭否记录,据说是微信之父每天发的饭否记录,其实我不知道什么是饭否。我读取这个文本内容,展示到词语图上。
2023-10-03 17:29:50
650
原创 设计模式之访问者模式
该方法的目的是根据当前元素类将其调用重定向到相应访问者的方法。请注意, 即使元素基类实现了该方法, 所有子类都必须对其进行重写并调用访问者对象中的合适方法。访问者模式建议将新行为放入一个名为_访问者_的独立类中, 而不是试图将其整合到已有类中。现在, 需要执行操作的原始对象将作为参数被传递给访问者中的方法, 让方法能访问对象所包含的一切必要数据。(Visitor) 接口声明了一系列以对象结构的具体元素为参数的访问者方法。如果编程语言支持重载, 这些方法的名称可以是相同的, 但是其参数一定是不同的。
2022-11-02 19:43:11
587
原创 设计模式之模板方法模式
模板方法模式建议将算法分解为一系列步骤, 然后将这些步骤改写为方法, 最后在 “模板方法” 中依次调用这些方法。老师 批改作业 打分数。System.out.println(“老师:上课 讲课 解答问题 布置作业”);System.out.println(“学生:听课 学习 做笔记 提出问题”);System.out.println(“上课 去教室”);System.out.println(“学生:写作业 提交作业”);System.out.println(“老师:批改作业 打分数”);
2022-11-01 20:30:54
681
原创 设计模式之策略模式
实际上, 上下文并不十分了解策略, 它会通过同样的通用接口与所有策略进行交互, 而该接口只需暴露一个方法来触发所选策略中封装的算法即可。上下文不清楚其所涉及的策略类型与算法的执行方式。是一种行为设计模式, 它能让你定义一系列算法, 并将每种算法分别放入独立的类中, 以使算法的对象能够相互替换。策略模式建议找出负责用许多不同方式完成特定任务的类, 然后将其中的算法抽取到一组被称为_策略_的独立类中。(Strategy) 接口是所有具体策略的通用接口, 它声明了一个上下文用于执行策略的方法。
2022-10-31 21:05:13
485
原创 设计模式之状态模式
在任何一个特定状态中, 程序的行为都不相同, 且可瞬间从一个状态切换到另一个状态。不过, 根据当前状态, 程序可能会切换到另外一种状态, 也可能会保持当前状态不变。(Context) 保存了对于一个具体状态对象的引用, 并会将所有与该状态相关的工作委派给它。上下文通过状态接口与状态对象交互, 且会提供一个设置器用于传递新的状态对象。状态可以通过该引用从上下文处获取所需信息, 并且能触发状态转移。上下文和具体状态都可以设置上下文的下个状态, 并可通过替换连接到上下文的状态对象来完成实际的状态转换。
2022-10-30 20:50:28
316
原创 设计模式之观察者模式
实际应用中可能会有十几个不同的订阅者类跟踪着同一个发布者类的事件, 你不会希望发布者与所有这些类相耦合的。因此, 所有订阅者都必须实现同样的接口, 发布者仅通过该接口与订阅者交互。这并不像听上去那么复杂。现在, 无论何时发生了重要的发布者事件, 它都要遍历订阅者并调用其对象的特定通知方法。拥有一些值得关注的状态的对象通常被称为_目标_, 由于它要将自身的状态改变通知给其他对象, 我们也将其称为_发布者_ (publisher)。(Client) 会分别创建发布者和订阅者对象, 然后为订阅者注册发布者更新。
2022-10-29 21:08:16
242
AccessDatabase.7z
2021-04-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅