Freezable ---探索WPF中Freezable承载数据的原理
引言
在之前写的一篇文章【WPF --- 如何以Binding方式隐藏DataGrid列】中,我先探索了 DataGridTextColumn 为什么不在可视化树结构内?又给出了解决方案,使用 Freezable ,该抽象类是 DependencyObject 的子类,能使用依赖属性在 Xaml...[2024/1/5]
马某 说c# 不开源,他是蠢还是坏?
马某在视频 计算机主流开发语言的现状和未来3-5年的发展前景——Java、Golang、Python、C\C#\C++、JS、前端、AI、大数据、测试、运维、网络安全 点评各种语言,其中说到C# 的时候,居然说C# 是不开源的,而且还说局限于微软平台。 一个不蠢的人深刻的理解什么叫“屁股决定脑袋...[2024/1/5]
聊一聊 C# 的线程本地存储TLS到底是什么
一:背景
1. 讲故事
有朋友在后台留言让我说一下C#的 ThreadStatic 线程本地存储是怎么玩的?这么说吧,C#的ThreadStatic是假的,因为C#完全是由CLR(C++)承载的,言外之意C#的线程本地存储,用的就是用C++运行时提供的 __declspec(thread) 或 ...[2024/1/3]
一个WPF版的Layui前端UI库一个WPF版的Layui前端UI库
前言
相信做.NET后端开发的很多小伙伴都用过Layui前端UI组件库,今天我们分享一个WPF版的Layui前端UI样式库:Layui-WPF。
WPF介绍
WPF 是一个强大的桌面应用程序框架,用于构建具有丰富用户界面的 Windows 应用。它提供了灵活的布局、数据绑定、样式和模板、动画效...[2024/1/3]
实现一个事件总线
使用 C# 实现一个 Event Bus
Event Bus(事件总线)是一种用于在应用程序内部或跨应用程序组件之间进行事件通信的机制。它允许不同的组件通过发布和订阅事件来进行解耦和通信。
在给定的代码片段中,我们可以看到一个使用C#实现的Event Bus。它定义了一些接口和类来实现事件的发...[2024/1/2]
【类型转换】使用c#实现简易的类型转换(Emit,Expression,反射)
引言
哈喽。大家好,好久不见,最近遇到了一个场景,就是在FrameWork的asp.net mvc中,有个系统里面使用的是EntityFramework的框架,在这个框架里,提供了一个SqlQuery的方法,这个方法很好用啊,以至于在EFCORE8里面又添加了回来,不过不知道性能怎么样,...[2023/12/29]
使用C#如何监控选定文件夹中文件的变动情况?使用C#如何监控选定文件夹中文件的变动情况?
目录?
1、前言
2、效果
3、具体实现
? 页面设计
? 全部代码
? FileSystemWatcher的介绍
? FileSystemWatcher的构造函数
? FileSyste...[2023/12/29]
JWT 简介与 C# 示例
〇、什么是 JWT ?
JWT,即 JSON Web Token,是一种基于 JSON 的开放标准(RFC 7519),主要用于在网络应用环境间安全地传递声明。这种声明被进行了数字签名,可以验证和信任,因此,它适用于各种需要信息安全性和无状态的应用。
在具体加密过程中,客户端会使用 RSA 算...[2023/12/27]
ThreadLocal底层源码解析
ThreadLocal底层源码解析
ThreadLocal:顾名思义的意思是本地线程或者局部线程的意思,其真正含义是希望多个线程之间拥有自己的局部变量,多个线程间拥有自己的私人变量,在多线程间不被共享,被线程单独享用,这就是ThreadLocal设计之初的原衷
因此,无论是操作系统级别还是...[2023/12/27]
数据智慧:C#中编程实现自定义计算的Excel数据透视表
前言
数据透视表(Pivot Table)是一种数据分析工具,通常用于对大量数据进行汇总、分析和展示。它可以帮助用户从原始数据中提取关键信息、发现模式和趋势,并以可视化的方式呈现。
在数据透视表中,数据分析师通常希望进行自定义计算。 例如,组合“数量”和“单价”字段即可获得“销售额”。 但是...[2023/12/26]
用C#也能做机器学习?
前言?
说到机器学习,大家可能都不陌生,但是用C#来做机器学习,可能很多人还第一次听说。其实在C#中基于ML.NET也是可以做机器学习的,这种方式比较适合.NET程序员在项目中集成机器学习模型,不太适合专门学习机器学习,本文我将基于ML.NET Model Builder(低代码、入门简单)构建...[2023/12/22]
聊一聊 C# 线程切换后上下文都去了哪里
一:背景
1. 讲故事
总会有一些朋友问一个问题,在 Windows 中线程做了上下文切换,请问被切的线程他的寄存器上下文都去了哪里?能不能给我挖出来?这个问题其实比较底层,如果对操作系统没有个体系层面的理解以及做过源码分析,其实很难说明白,这篇我们就从.NET高级调试的角度试着分析一下吧。
二...[2023/12/22]
Blazor入门100天 : 自做一个支持长按事件的按钮组件
好长时间没继续写这个系列博客了, 不知道大家还记得我吗? 话不多说,直接开撸.
配套源码
demo https: blazor.app1.e b19LongPre Button
1. 新建 net8 blazor 工程 b19LongPre Button
至于用什么模式大家各取所需, 我创建的...[2023/12/21]
Kernel Memory 入门系列:快速开始
Kernel Memory 入门:Quick Start
了解了用户问答和文档预处理的流程之后,我们就可以直接开始使用Kernel Memory了。
1. 安装
项目中只需要通过NuGet安装Microsoft.KernelMemory.Core包即可。
dotnet add package...[2023/12/21]
关于C#反射概念,附带案例!
反射
C#中的反射是一种使程序在运行时能够动态地获取类型信息并调用其成员的技术。通过反射,程序可以在运行时进行类型的动态加载、创建对象、调用方法和属性,以及访问和修改字段等。反射可以使程序更加灵活,但也增加了一定的性能开销。
在C#中,反射主要是通过System.Reflection命名空间中...[2023/12/15]
# C# 重新认识一下 IEnumerable<T>,IAsyncEnumerable<T> 以及搭配异步可能遇到的问题
C# 重新认识一下 IEnumerable<T>,IAsyncEnumerable<T> 以及搭配异步可能遇到的问题
前言
为啥会想到写这个
为了这碟醋,包了这顿饺子
作为老鸟不免犯迷糊
因为 在使用异步中使用IEnumerable<T>,IAsyncE...[2023/12/15]
关于C#接口的用法详细解答,附上案例说明!
接口
C#中的接口是一种定义了一组方法、属性和事件的类型。它只包含成员的声明,而不包含任何实现。接口可以被类通过实现的方式使用,从而使类能够具有接口定义的行为。
接口在C#中被定义为使用interface关键字,接口的成员默认是公共的。类通过使用implements关键字实现接口,并提供接口中...[2023/12/13]
TIOBE 12月榜单: C# 即将成为2023 年度编程语言TIOBE 12月榜单: C# 即将成为2023 年度编程语言
TIOBE 公布了 2023 年 12 月的编程语言排行榜。 2022年C# 在挑战成为年度编程语言,但在最后一刻,C++出人意料地夺得了冠军。今年,我们确信 C# 将获胜成为2023年度编程语言。它在 1 年内上涨了 2.38%,而其最接近的竞争者 Fortran 和 F# 分别仅上涨了 +0...[2023/12/11]
从0到1,手把手带你开发截图工具ScreenCap------001实现基本的截图功能
ScreenCap---Version:001
说明
从0到1,手把手带你开发windows端的截屏软件ScreenCap
当前版本:ScreenCap---001
支持全屏截图
支持鼠标拖动截图区域
支持拖拽截图
支持保存全屏截图
支持另存截图到其他位置
警告
注:博主所有...[2023/12/8]
渐进式web全栈:blazor web app渐进式web全栈:blazor web app
前言
本文要说的这种开发模式,这种模式并不是只有blazor支持,js中有一样的方案next.js nuxt.js;blazor还有很多其它内容,本文近关注渐进式开发模式。
是的,前后端是主流,不过以下情况也许前后端分离并不是最好的选择:
小公司,人员不多,利润不高,创业阶段能省则省
个人开...[2023/12/8]
WPF应用框架中工作流模块的介绍
在前面的随笔,我对我们开发的审批工作流做了不少的介绍,其中有包括WInform的、Vue+Element、Bootstrap Asp.net的,在各个框架上,我们都尽量争取界面能够一致化,以便客户能够在不同的前端上有相同的用户体验,并结合不同的前端特点,做了一些优化处理,本篇随笔对WPF应用框架...[2023/12/8]
c# 高并发必备技巧(三)
前面两篇文章主要是介绍了如何解决高并发情况下资源争夺的问题。但是现实的应用场景中除了要解决资源争夺问题,高并发的情况还需要解决更多问题,比如快速处理业务数据等,
本篇文章简要罗列一下与之相关的更多技术细节。
1、异步编程:使用async和await关键字进行异步编程,这可以避免阻塞线程,提高...[2023/12/8]
从0到1,手把手带你开发截图工具ScreenCap------003实现最小化程序到托盘运行
ScreenCap---Version:003
说明
上一篇:实现默认位置设置
为了方便截图干净,实现最小化程序到托盘运行,简洁,勿扰
实现最小化程序到托盘运行
实现托盘菜单功能
实现回显主窗体
实现托盘开始截屏
实现气泡信息提示
实现托盘程序提示
实现托盘退出程...[2023/12/8]
深度解析C#中LinkedList<T>的存储结构 - 彭-泽
本文承接前面的3篇有关C#的数据结构分析的文章,对于C#有关数据结构分析还有一篇就要暂时结束了,这个系列主要从Array、List、Dictionary、LinkedList、 SortedSet等5中不同类型进行介绍和分析。废话不多说,接下来我们来最后看一下这个系列的最后一种数据...[2023/12/5]
C#12新功能有哪些?
前言
作为.NET 8发布会的一部分,微软于11月14日发布了C#12的新功能,这也是目前.NET的最新版本。正如之前公布的那样,最显著的改进包括了集合表达式、主构造函数、任何类型的别名以及lambda表达式中参数提供默认值。
主构造函数
C#12扩展了主构造函数,现在可以在任何cla 和...[2023/12/5]
C#/.NET/.NET Core优秀项目和框架2023年11月简报
前言
公众号每月定期推广和分享的C#/.NET/.NET Core优秀项目和框架(公众号每周至少推荐两个优秀的项目和框架当然节假日除外),公众号推文有项目和框架的介绍、功能特点以及部分截图等(打不开或者打开GitHub很慢的同学可以优先查看公众号推文,文末一定会附带项目和框架源码地址)。注意:排...[2023/12/5]
MAUI+Masa Blazor APP 各大商店新手发布指南-华为篇
目录前言准备材料一、企业认证二、审核资料审核注意事项总结
前言
AppGallery Connect(简称AGC)是华为应用市场推出的应用一站式服务平台,致力于为开发者提供应用创意、开发、分发、运营、分析全生命周期服务,构建全场景智慧化的应用生态。
AppGallery Connect深...[2023/12/5]
C#中的并行处理、并行查询的方法你用对了吗?C#中的并行处理、并行查询的方法你用对了吗?
Parallel.ForEach
Parallel.ForEach 是一个用于在集合上并行执行迭代操作的强大工具。它通过有效地利用多核处理器的能力来提高性能。Parallel.ForEach 不仅能够简化并行编程,而且它在执行简单循环时可以提供比传统迭代更好的性能。
下面是...[2023/12/5]
环形缓冲区 Ring Buffer 的实现
环形缓冲区(Circular Buffer 或 Ring Buffer)是一种数据结构,它在逻辑上形成一个闭环。这种结构非常适用于需要固定大小的缓冲区的情况,如音频处理、网络通信、实时数据传输等。环形缓冲区的主要特点和用途包括:
固定大小:环形缓冲区的大小在创建时确定,并且在其生命周期内保持不...[2023/12/1]
通过Span实现高性能数组,实例解析
Span<T> 是 C# 7.2 引入的一个强大的数据结构,用于表示内存中的一块连续数据。它可以用于实现高性能的数组操作,而无需额外的内存分配。在本文中,我将详细介绍如何使用 Span<T> 来实现高性能数组操作,并提供一些示例代码来说明其用法。
什么是 Span?
S...[2023/12/1]
深入解析C# List<T>的源码 - 彭-泽
前面的文章中解释了Array的初始化和元素插入,以及数组整体的存储结构(《深度分析C#中Array的存储结构》)。这里我们再来详细的了解另一种存储结构List<T>, List <T>是 ArrayList 泛型版本,是一个泛型集合类,用于表示动态大...[2023/12/1]
C#中HttpWebRequest发起HTTP请求,如何设置才能达到最大并发和性能
在C#中使用HttpWebRequest发起HTTP请求时,达到最大并发和性能可以从以下几个方面改进:
1. ServicePointManager设置
ServicePointManager 类是一个静态类,它提供了用于管理HTTP连接的属性和方法。为了提升并发性能,你需要调整以下...[2023/12/1]
C#/.NET/.NET Core推荐学习书籍(已分类)
前言
古人云:“书中自有黄金屋,书中自有颜如玉”,说明了书籍的重要性。作为程序员,我们需要不断学习以提升自己的核心竞争力。以下是一些优秀的C#/.NET/.NET Core相关学习书籍,值得.NET开发者们学习和专研。书籍已分类,欢迎大家PR分享自己觉得不错的C#/.NET/.NET Core...[2023/11/29]
CPF C#跨平台UI框架开源了
介绍
C#跨平台UI框架
提供NETStandard2.0和net4的库,通过Netcore可以跨平台,支持Windows、Mac、Linux,Net4的可以支持XP。
各个平台运行效果一致,不依赖系统控件。 支持窗体,控件任意透明,支持异形窗体,支持SVG图标显示。
支持动画,数据绑定,M...[2023/11/29]
一篇学会cron表达式
1、定义
Cron表达式是一种用于定义定时任务的格式化字符串。它被广泛用于Unix、Linux和类Unix系统中,用于在指定的时间执行预定的任务。Cron表达式由6个字段组成,每个字段通过空格分隔开。
在本文中,我们将学习如何理解和编写Cron表达式。
Cron表达式的格式如下:
* * ...[2023/11/29]
小心C#中的只读结构体成员
示例
我们先来看一段结构体的代码 (基于 VS2022 + .NET 8.0)
public struct MyStruct(int number)
{
public int Number = number;
public void SetNumber(int number)...[2023/11/29]
MAUI Blazor 如何通过url使用本地文件 - Yu-Core
前言
上一篇文章 MAUI Blazor 显示本地图片的新思路 中, 提出了通过webview拦截,从而在前端中显示本地图片的思路。不过当时还不完善,随后也发现了很多问题。比如,
不同平台上的url不统一。这对于需要存储图片路径并且多端互通的需求来说,并不友好。至少 FileSystem.Ap...[2023/11/29]
C#简化工作之实现网页爬虫获取数据C#简化工作之实现网页爬虫获取数据
公众号「DotNet学习交流」,分享学习DotNet的点滴。
1、需求
想要获取网站上所有的气象信息,网站如下所示:
目前总共有67页,随便点开一个如下所示:
需要获取所有天气数据,如果靠一个个点开再一个个复制粘贴那么也不知道什么时候才能完成,这个时候就可以使用C#来实现网页爬虫获...[2023/11/29]
C# 泛型编译特性对性能的影响
C#作为一种强类型语言,具有丰富的泛型支持,允许开发者编写可以应对不同数据类型的通用代码。然而,在泛型编译时,针对结构和类作为泛型参数时,会对性能产生不同的影响。
泛型编译行为
在C#中,泛型编译行为取决于泛型参数的类型。具体而言,当泛型参数是结构(Struct)时,编译器会针对每个具体的结构...[2023/11/29]
深度分析C#中Array的存储结构
数组是C#中最基础的存储结构之一,很多的存储结构其底层的实现中都是基于数组实现的,如:List、Queue、Stack、Dictionary、Heap等等,如果大家读过这些类型的底层实现源码,其实就可以发现,这些存储结构都是在其内部维护了一个或多个数组。本文重点来学习一下数组存储结构的实现逻辑...[2023/11/22]
C#操作Microsoft.Office.Interop.Word类库完整例子C#操作Microsoft.Office.Interop.Word类库完整例子
使用Microsoft.Office.Interop.Word类库操作wor文档
一.准备工作
首先在工厂中,引用【Microsoft.Office.Interop.Word】,本地安装了world,就能找到这个类库,如下图。Form1系统自动生成的
Form1的界面很简单,就一个按钮
...[2023/11/17]
如何通过 wireshark 捕获 C# 上传的图片如何通过 wireshark 捕获 C# 上传的图片
一:背景
1. 讲故事
这些天计划好好研究下tcp/ip,以及socket套接字,毕竟工控中设计到各种交互协议,如果只是模模糊糊的了解,对分析此类dump还是非常不利的,而研究协议最好的入手点就是用抓包工具 wireshark,废话不多说,这篇通过 wireshark 提取一个小图片作为入手。
...[2023/11/17]
C#12中的Primary Constructors(主构造函数)
什么是主构造函数
把参数添加到cla 与record的类声明中就是主构造函数。例如
cla Person(string name)
{
private string _name = name;
}
这种写法与以下代码写法一样
cla Person
{
p...[2023/11/17]
c#中责任链模式详解
基本介绍:
??“责任链”顾名思义,是指一个需要负责处理请求的链条。
??每个链条节点都是一个单独的责任者,由责任者自己决定是否处理请求或交给下一个节点。
??在设计模式中的解释则为:为请求创建了一个接收者对象的链。适用于有多个对象可以处理同一个请求,但具体由哪个对象处理则在运行时动态决定的...[2023/11/15]
支持C#的开源免费、新手友好的数据结构与算法入门教程
前言
前段时间完成了C#经典十大排序算法(完结)然后有很多小伙伴问想要系统化的学习数据结构和算法,不知道该怎么入门,有无好的教程推荐的。今天给大家推荐一个支持C#的开源免费、新手友好的数据结构与算法入门教程:Hello算法。
Hello算法介绍
Hello算法一个开源免费、新手友好的数据结构与...[2023/11/13]
c#桥接模式详解c#桥接模式详解
基础介绍:
??将抽象部分与它的实现部分分离,使它们都可以独立地变化。适用于不希望在抽象和实现部分之间有固定的绑定关系的情况,或者类的抽象以及它的实现都应该可以通过生成子类的方法加以扩充的情况。
??将抽象部分与实现部分分离,使它们都可以独立地变化。
??其实两个都是抽象的部分,更准确的说,...[2023/11/13]
c#装饰器模式详解
基础介绍:
??动态地给一个对象添加一些额外的职责。适用于需要扩展一个类的功能,或给一个类添加多个变化的情况。
??装饰器,顾名思义就是在原有基础上添加一些功能。
??大家都只知道如果想单纯的给原有类增加一些功能,可以直接继续该类生成一个子类就可以。
??举个例子,如果现在有个手机类,想给...[2023/11/10]
C#判断字符串的显示宽度
C#判断字符串的显示宽度
起因:
公司有一个使用项目使用HTML转换为PDF,其中有一个表格,表格的最后一列中的单元格,其字符串超长后会被丢弃,而不是换行到下一行展示(HtmlToPdf渲染引擎导致的,没办法更改)
解决方案:
根据字符串长度手动添加<br/>换行
var sou...[2023/11/10]
c#组合模式详解
基础介绍:
??组合模式用于表示部分-整体的层次结构。适用于希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的所有对象的情况。
??顾名思义,什么叫部分-整体,比如常见的前端UI,一个DIV标签中可以存在多个A标签、P标签、DIV标签等等。
??相较于DIV这个容器整体而言,...[2023/11/10]
编写高性能C#代码 —— Span<T>
Span 提供任意内存的连续区域的类型安全和内存安全表示形式。它是在堆栈而不是托管堆上分配的ref结构,是对任意内存块的抽象 。
1.关于Span
在NET Core 2.1中首次引入
提供对任意内存上的连续区域的读写视图
利用索引/迭代来修改范围内的内存
几乎无开销
...[2023/11/8]