DocTemplateTool - 可根据模板生成word或pdf文件的工具
你是否经常遇到这样的场景:产品运营有着大量的报告需求,或者给客户领导展现每周的运营报告?这些文档类的任务可以交给运营同事,他们负责文档排版和样式,你作为开发人员你只需要提供数据源,和一个映射表,告诉制作文档的人哪些字段可供使用。这样一来分工明确,减少了很多不必要的沟通成本。
Document T...[2023/11/8]
c#中适配器模式详解c#中适配器模式详解
基础介绍:
??想象这样一个场景,原项目中接口返回的数据是XML格式的数据,但现在来了一个新客户,它期望接口返回的数据类型为json格式的。
??想要实现要么就是改原有接口,但这样就违反了开闭原则,容易出现未知bug,影响到老客户的正常使用。
??而如果写一个适配器类也就是转换类(第三方类)...[2023/11/8]
C#版字节跳动SDK - SKIT.FlurlHttpClient.ByteDance
前言
在我们日常开发工作中对接第三方开放平台,找一款封装完善且全面的SDK能够大大的简化我们的开发难度和提高工作效率。今天给大家推荐一款C#开源、功能完善的字节跳动SDK:SKIT.FlurlHttpClient.ByteDance。
项目官方介绍
可能是全网唯一的 C# 版字节跳动 SDK,...[2023/11/6]
NativeBuffering,一种高性能、零内存分配的序列化解决方案[性能测试续篇]
在《NativeBuffering,一种高性能、零内存分配的序列化解决方案[性能测试篇]》我比较了NativeBuffering和System.Text.Json两种序列化方式的性能,通过性能测试结果可以看出NativeBuffering具有非常明显的优势,有的方面的性能优势甚至是“碾压式”的,...[2023/11/6]
c#享元模式详解c#享元模式详解
基本介绍:
??享元模式的定义:运用共享技术有效地支持大量细粒度的对象重复使用。适用于大量小粒度的对象造成的运行效率和内存使用效率低下的情况。
??“享元”顾名思义,“享”共享的意思,“元”单元,最小对象,零部件的意思。
??即从字面意思不难看出,该模式旨在共享一些零部件供其使用。
??想...[2023/11/3]
不可复制的PDF转成双层可复制PDF
有些PDF是通过扫描或者虚拟打印机生成的,这些PDF不可复制里边的内容
市面上的工具一般都是收费或者有水印,所以就萌生了自己搞一个的想法:
使用了以下三个开源库
PdfiumViewer PDF预览及可编辑PDF的提取
PDFsharp 生成PDF
PaddleSharp 对图片OCR识别...[2023/11/3]
c#中单例模式详解
基础介绍:
??确保一个类只有一个实例,并提供一个全局访问点。
??适用于需要频繁实例化然后销毁的对象,创建对象消耗资源过多,但又经常用到的对象,频繁访问数据库或文件的对象。
??其本质就是保证在整个应用程序的生命周期中,任何一个时刻,单例类的实例都只存在一个。
特性和功能:确保一个类只有...[2023/11/3]
NativeBuffering,一种高性能、零内存分配的序列化解决方案[性能测试篇]
第一版的NativeBuffering([上篇]、[下篇])发布之后,我又对它作了多轮迭代,对性能作了较大的优化。比如确保所有类型的数据都是内存对齐的,内部采用了池化机器确保真正的“零内存分配”等。对于字典类型的数据成员,原来只是“表现得像个字段”,这次真正使用一段连续的内存构架了一个“哈希表”...[2023/11/3]
C#/.NET/.NET Core优秀项目和框架2023年10月简报
前言
公众号每月定期推广和分享的C#/.NET/.NET Core优秀项目和框架(公众号每周至少推荐两个优秀的项目和框架当然节假日除外),公众号推文有项目和框架的介绍、功能特点以及部分截图等(打不开或者打开GitHub很慢的同学可以优先查看公众号推文,文末一定会附带项目和框架源码地址)。注意:排...[2023/11/3]
c#中工厂模式详解
总体介绍:
??工厂模式主要有三种类型:简单工厂、工厂方法和抽象工厂,该模式用于封装和管理对象的创建,是一种创建型模式。
??万物皆对象,创建对象时必然需要new该对象,当需要更改对象时,需要把项目中所有地方都修改一遍,这显然违背了软件设计的开闭原则。
??如果使用工厂来生成对象,那么我们只...[2023/11/3]
【算法】十一月阳光下的阴影面积
十一月的阳光透过窗户,照射在一位笑起来甜美、青春洋溢的女子的办公桌上。小悦,一个总是以高马尾造型亮相的软件工程师,展现出她的干练与活力。那乌黑亮丽的长发轻盈飘动,仿佛在诉说着她的独特魅力。她的眉眼如画,那双明亮的眼睛里闪烁着对知识的渴望和对技术挑战的热情。
这一天,她收到了一封来自医院的邮件,...[2023/11/3]
Util应用框架核心(三) - 服务注册器Util应用框架核心(三) - 服务注册器
本节介绍服务注册器的开发.
如果你不需要扩展Util应用框架,直接跳过.
当你把某些功能封装到自己的类库,并希望启动时自动执行初始化代码进行配置时,定义服务注册器.
服务注册器概述
服务注册器是Util项目启动时自动执行的代码块.
Util应用框架的某些类库使用服务注册器进行配置,比如 ...[2023/11/1]
Util应用框架快速入门(5) - 权限入门
本文将引导你运行Util权限管理模块,并对UI按钮和API操作进行访问控制.
Util平台介绍
Util应用框架是一组类库,它们提供了有用的功能.
虽然Util配套代码生成器能够帮助你创建项目基架,但直接使用它们的成本依然高昂.
第一个挡在前面的障碍是权限功能,它是任何业务项目的基石.
...[2023/10/30]
浅析 C# 控制台的 Ctrl+C 是怎么玩的
一:背景
1. 讲故事
上一篇我们聊到了 Console 为什么会卡死,读过那篇文章的朋友相信对 conhost.exe 有了一个大概的了解,这一篇更进一步聊一聊窗口的特殊事件 Ctrl+C 底层流转到底是什么样的,为了方便讲述,让 chagtgpt 给我生成一段Ctrl+C 的业务代码。
...[2023/10/25]
【分段传输】c#使用IAsyncEnumerable实现流式分段传输【分段传输】c#使用IAsyncEnumerable实现流式分段传输
引言
在使用SSE的时候,前端可以实现流式传输,但是有个问题就是这是一个独占的连接,相当于如果你不手动关闭连接,就会一直请求,一直连接调用接口,而且发送的数据格式也是按照定义好的协议来,而使用c#自带的IAsyncEnumerable也可以实现流式传输,不过返回的数据是在之前返回的基础上...[2023/10/23]
VS Code C# 开发工具包正式发布VS Code C# 开发工具包正式发布
前言
微软于本月正式发布Visual Studio Code C#开发工具包,此前该开发套件已经以预览版的形式在6月份问世。经过4个月的测试和调整,微软修复了350多个问题,其中大部分是用户反馈导致的问题。此外,微软还对产品进行了300多项有针对性的改进。
VS Code C#开发工具包介绍
...[2023/10/23]
C#经典十大排序算法(完结)C#经典十大排序算法(完结)
C#冒泡排序算法
简介
冒泡排序算法是一种基础的排序算法,它的实现原理比较简单。核心思想是通过相邻元素的比较和交换来将最大(或最小)的元素逐步"冒泡"到数列的末尾。
详细文章描述
https: mp.weixin.qq.com z_LPZ6QUFNJcwaEw_H5qbQ
代码实现
&nbs...[2023/10/23]
C#基数排序算法
前言
基数排序是一种非比较性排序算法,它通过将待排序的数据拆分成多个数字位进行排序。
实现原理
首先找出待排序数组中的最大值,并确定排序的位数。
从最低位(个位)开始,按照个位数的大小进行桶排序,将元素放入对应的桶中。
将各个桶中的元素按照存放顺序依次取出,组成新的数组。
接着按照十位数进行桶...[2023/10/20]
如何通过SK集成chatGPT实现DotNet项目工程化?
智能助手服务
以下案例将讲解如何实现天气插件
当前文档对应src/a istant/Chat.SemanticServer项目
首先我们介绍一下Chat.SemanticServer的技术架构
SemanticKernel 是什么?
Semantic Kernel是一个SDK,它将Open...[2023/10/19]
C# 实现MD5加密
C#MD5加密
日常程序开发中,涉及到敏感数据内容,通常会采取加密处理以保证数据安全,本篇文章讲述了在C#中使用MD5方法加密数据
MD5介绍
MD5的全称是me age-digest algorithm 5,MD5算法属于hash算法的一类,对消息进行运算,产生一个128位的消息摘要(...[2023/10/19]
再学Blazor——组件
Blazor 应用基于组件,组件可以复用和嵌套。本文内容如下:
组件类
组件嵌套
组件参数
组件对象
1. 组件类
所有组件都是继承 ComponentBase 组件基类,razor 文件默认继承 ComponentBase 类。 ComponentBase 实现组件的最低抽象,IComp...[2023/10/18]
探究——C# .net 代码混淆/加壳探究——C# .net 代码混淆/加壳
背景:
保密。
过程:
先查询一下常见的加壳工具:
DotFuscator,官方自带,据说免费版混淆程度不高
Virbox Protector,很好很优秀,但是收费
NET Reactor,可能会被识别为病毒
Obfuscar,开源,可以用dotnet tool或项目构建的方式进行使...[2023/10/18]
C#学习笔记--数据结构、泛型、委托事件等进阶知识点
C#进阶
简单数据结构类
ArrayList
元素类型以Object类型存储,支持增删查改的数组容器。
因而存在装箱拆箱操作,谨慎使用。
ArrayList
ArrayList array=new ArrayList();
增=================
array.Add("He...[2023/10/18]
C#/.NET/.NET Core优秀项目和框架精选(2023年10月更新,项目分类已整理完成欢迎大家踊跃提交PR一起完善让优秀的项目和框架不被埋没)
前言
帮助开发者发现功能强大、性能优越、创新前沿、简单易用的C#/.NET/.NET Core优秀项目和框架,无论你是寻找灵感、学习新技术、改进代码质量,还是想拓展自己的技术视野,都能为你提供有价值的参考和指导。关注优秀项目和框架精选能让你及时了解C#、.NET和.NET Core领域的最新动态...[2023/10/17]
分享教学项目:开源一个对象映射框架
Maomi.Mapper
项目地址:https: github.com/whuanle/Maomi.Mapper
注:本项目用于教学目的,性能较差,请勿用于生产环境。
MaomiMapper 是一个使用表达式树构造生成对象成员映射的框架,即对象映射框架,用于配合笔者其它系列文章,用于教学目的...[2023/10/16]
再学Blazor——扩展方法
上篇提到 Blazor 组件的高级写法,是采用扩展方法对 HTML 元素和组件进行扩展,以便于书写组件结构和代码阅读。本篇主要介绍扩展方法实现的思路。
什么是扩展方法
要扩展哪个类
扩展方法的实现
1. 什么是扩展方法
若要对一个 C# 类型添加新方法,一是修改源码,二是派生类,三是扩展方...[2023/10/16]
C#学习笔记--面向对象三大特征
C#核心
面向对象--封装
用程序来抽象现实世界,(万物皆对象)来编程实现功能。
三大特性:封装、继承、多态。
类与对象
声明位置:namespace中
样式:cla 类名{}
命名:帕斯卡命名法(首字母大写)
实例化对象:根据类来新建一个对象。Person p=new Person...[2023/10/13]
C#学习笔记--复杂数据类型、函数和结构体C#学习笔记--复杂数据类型、函数和结构体
C#基础
复杂数据类型
特点:多个数据变量地一个集合体,可以自己命名
种类:枚举、数组和结构体
枚举:整型常量的集合
数组:任意变量类型的顺序存储的数据集合
结构体:任意变量类型的数据组合成的数据块
枚举:
枚举可以方便表示对象的各种状态,本质还是一种变量。
例如我们可以用枚举来表示怪...[2023/10/13]
【算法】游戏中的学习,使用c#面向对象特性控制游戏角色移动【算法】游戏中的学习,使用c#面向对象特性控制游戏角色移动
最近,小悦的生活像是一首繁忙的交响曲,每天忙得团团转,虽然她的日程安排得满满当当,但她并未感到充实。相反,她很少有时间陪伴家人,这让她感到有些遗憾。在周五的午后,小悦的哥哥突然打来电话,他的声音里充满了焦虑。
“小悦,我有个事情想拜托你。”哥哥的声音传来。
小悦不禁有些疑惑,哥哥有什么事情需...[2023/10/13]
造轮子之EventBus
前面基础管理的功能基本开发完了,接下来我们来优化一下开发功能,来添加EventBus功能。 EventBus也是我们使用场景非常广的东西。这里我会实现一个本地的EventBus以及分布式的EventBus。 分别使用MediatR和Cap来实现。
现在简单介绍一下这两者: MediatR是一个...[2023/10/13]
C#归并排序算法
前言
归并排序是一种常见的排序算法,它采用分治法的思想,在排序过程中不断将待排序序列分割成更小的子序列,直到每个子序列中只剩下一个元素,然后将这些子序列两两合并并排序,最终得到一个有序的序列。
归并排序实现原理
将待排序序列分割成两个子序列,直到每个子序列中只有一个元素。
将相邻的两个子序列合...[2023/10/9]
使用Blazor WASM实现可取消的多文件带校验并发分片上传
前言
上传大文件时,原始HTTP文件上传功能可能会影响使用体验,此时使用分片上传功能可以有效避免原始上传的弊端。由于分片上传不是HTTP标准的一部分,所以只能自行开发相互配合的服务端和客户端。文件分片上传在许多情况时都拥有很多好处,除非已知需要上传的文件一定非常小。分片上传可以对上传的文件进行快...[2023/10/9]
一种对数据库友好的GUID的变种使用方法
概述
.NET生成的GUID唯一性很好,用之方便,但是,缺少像雪花算法那样的有序性。虽然分布式系统中做不到绝对的有序,但是,相对的有序对于目前数据库而言,索引效率等方面的提升还是有明显效果的(当然,我认为,这是数据库的问题,而非编程的问题,数据库应该处理好任何类型数据作为主键索引时的性能,除非...[2023/10/9]
C#/.NET/.NET Core优秀项目和框架2023年9月简报
前言
公众号每月定期推广和分享的C#/.NET/.NET Core优秀项目和框架(公众号每周至少推荐两个优秀的项目和框架当然节假日除外),公众号推文有项目和框架的介绍、功能特点以及部分截图等(打不开或者打开GitHub很慢的同学可以优先查看公众号推文,文末一定会附带项目和框架源码地址)。注意:排...[2023/10/9]
C# 12 中的新增功能C# 12 中的新增功能
新的 C# 12 功能在预览版中已经引入. 您可以使用最新的 Visual Studio 预览版或最新的 .NET 8 预览版 SDK 来尝试这些功能。以下是一些新引入的功能:
主构造函数
集合表达式
默认 Lambda 参数
任何类型的别名
内联数组
拦截器
使用nameof访问实例成员...[2023/10/9]
理解并掌握C#的Channel:从使用案例到源码解读(一)
引言
在C#的并发编程中,Channel是一种非常强大的数据结构,用于在生产者和消费者之间进行通信。本文将首先通过一个实际的使用案例,介绍如何在C#中使用Channel,然后深入到Channel的源码中,解析其内部的实现机制。
使用案例一:文件遍历和过滤
在我们的使用案例中,我们需要遍历一个文...[2023/9/25]
【c#版本Openfeign】Net8 自带OpenFeign实现远程接口调用
引言
相信巨硬,我们便一直硬。Net版本到现在已经出了7了,8也已经在预览版了,相信在一个半月就会正式发布,其中也有很多拭目以待的新功能了,不仅仅有Apm和Tap的结合,TaskToAscynResult,以及UnsafeAcce or用来获取私有变量,性能比反射,EMIT更高,还有针对...[2023/9/25]
在C#中如何自定义配置上周和本周起始日来查询业务数据?
作者:西瓜程序猿
主页传送门:https: www.cnblogs.com/kimiliucn
前言
在做某个报表管理功能时,有一个需求:需要根据自定义配置的[周起始日]来统计上周、本周的订单数据。在C#中并没有封装的方法根据我们需要来直接获取上一周某天到某天、本周某天到某天,所...[2023/9/20]
【逆向专题】【危!!!刑】(一)使用c#+Win32Api实现进程注入到wechat
引言
自从上篇使用Flaui实现微信自动化之后,这段时间便一直在瞎研究微信这方面,目前破解了Window微信的本地的Sqlite数据库,使用Open l,以及Win32Api来获取解密密钥,今天作为第一张,先简单写一下,获取微信的一些静态数据,以及将自己写的c语言dll通过Api注入到微...[2023/9/20]
【解惑】孜孜不倦,用足球赛程详解c#中的yield return用法
在一个知名企业赞助的足球联赛中,有256支球队参赛。为了确保比赛的顺利进行,企业指派了小悦负责熬夜加班制定每一个球队的赛程。尽管她对足球的了解并不多,但是她对待工作的认真态度却让人钦佩。
在小悦的努力下,她顺利完成了第一轮、第二轮和第三轮的比赛安排。然而,在大赛开始前的模拟比赛中,她发现了一个...[2023/9/19]
Blazor前后端框架Known-V1.2.15
V1.2.15
Known是基于C#和Blazor开发的前后端分离快速开发框架,开箱即用,跨平台,一处代码,多处运行。
Gitee: https: gitee.com/known/Known
Github:https: github.com/known/Known
概述
基于C#和Blaz...[2023/9/18]
10分钟理解契约测试及如何在C#中实现
在软件开发中,确保微服务和API的可靠性和稳定性非常重要。 随着应用程序变得越来越复杂,对强大的测试策略的需求也越来越大,这些策略可以帮助团队在不牺牲敏捷性的情况下交付高质量的代码。 近年来获得广泛关注的一种方法是契约测试(Contract Testing)。 在本文中,我将揭开契约测试的神秘面...[2023/9/15]
升讯威在线客服系统的并发高性能数据处理技术:PLINQ并行查询技术
我在业余时间开发维护了一款免费开源的升讯威在线客服系统,也收获了许多用户。对我来说,只要能获得用户的认可,就是我最大的动力。
最近客服系统成功经受住了客户现场组织的压力测试,获得了客户的认可。
客户组织多名客服上线后,所有员工同一时间打开访客页面疯狂不停的给在线客服发消息,系统稳定无异常无...[2023/9/14]
webapi开发框架实践
项目链接以及目录结构
liuzhixin405/efcore-template (github.com)
这是一个纯webapi的开发框架。
1、支持的orm有efcore6、dapper,可以灵活切换数据库。
using Microsoft.CodeAnalysis.CSharp...[2023/9/13]
.NET C#基础(9):资源释放 - 需要介入的资源管理
1. 什么是IDisposable?
??IDisposable接口是一个用于约定可进行释放资源操作的接口,一个类实现该接口则意味着可以使用接口约定的方法Dispose来释放资源。其定义如下:
public interface IDisposable
{
void Dispose();...[2023/9/13]
【算法】湖心岛上的数学梦--用c#实现一元多次方程的展开式
每天清晨,当第一缕阳光洒在湖面上,一个身影便会出现在湖心小岛上。她坐在一块大石头上,周围被茂盛的植物环绕,安静地沉浸在数学的世界中。
这个姑娘叫小悦,她的故事在这个美丽的湖心小岛上展开。每天早晨,她都会提前来到湖边,仔细观察水下的植物,然后抽出时间来钻研一元x次方程。她身上的气息混合着湖水的清...[2023/9/11]
C#开发的基础工具类集合 - 开源研究系列文章
今天发布一个基础工具类代码集合。
以前有发布过一个类似的类库(见博文: Magical平台类库代码分享 ),不过那个版本有点久了,也没有这次这个全...[2023/9/10]
C#希尔排序算法C#希尔排序算法
前言
希尔排序简单的来说就是一种改进的插入排序算法,它通过将待排序的元素分成若干个子序列,然后对每个子序列进行插入排序,最终逐步缩小子序列的间隔,直到整个序列变得有序。希尔排序的主要思想是通过插入排序的优势,减小逆序对的距离,从而提高排序效率。
希尔排序实现原理
首先要确定一个增量序列(初始间...[2023/9/9]
C#中的ConcurrentExclusiveSchedulerPair类
为什么使用ConcurrentExclusiveSchedulerPair?
现实生活中的例子是一个停车场的入口和出口,多辆车可以同时进入和离开停车场,但是只有一个车辆可以进入或离开一次。
这时候就需要保证同时只有一个车辆能够访问停车场的入口或出口,避免出现多辆车同时进出停车场的竞态条件和导致...[2023/9/6]
C#/.NET/.NET Core优秀项目和框架8月简报C#/.NET/.NET Core优秀项目和框架8月简报
前言
公众号每月定期推广和分享的C#/.NET/.NET Core优秀项目和框架(公众号每周至少推荐两个优秀的项目和框架当然节假日除外),公众号推文有项目和框架的介绍、功能特点以及部分截图等(打不开或者打开GitHub很慢的同学可以优先查看公众号推文,文末一定会附带项目和框架源码地址)。注意:排...[2023/9/4]