面向云技术架构 - 痴者工良

  • 首页
  • 工良写的电子书
    • kubernetes 教程
    • 从 C# 入门 Kafka
    • 多线程和异步
    • 动态编程-反射、特性、AOP
    • 表达式树
  • 本站文章导航
  • 隐私政策
愿有人陪你颠沛流离
遇到能让你付出的事物或者人,都是一种运气。
能遇到,就该珍惜。或许你们最终没能在一起,但你会切实地感受到力量。
正因为这样,那段相遇才变得有价值,才没有辜负这世间的每一段相遇。
.NET

C# RulesEngine 规则引擎:从入门到看懵

说明 RulesEngine 是 C# 写的一个规则引擎类库,读者可以从这些地方了解它: 仓库地址: https://github.com/microsoft/RulesEngine 使用方法: https://microsoft.github.io/RulesEngine 文档地址: https://github.com/microsoft/RulesEngine/wiki 什么是规则引擎? 照搬 https://github.com/microsoft/RulesEngine/wiki/Introduction…

2022年10月26日 1条评论 284点热度 2人点赞 痴者工良 阅读全文
.NET

C# 结构体在数组中传递时保持引用

因为结构体或者值类型在传递时,是值复制,导致传递后修改其值,原先的值不会发生改变。 即使使用 ref 做参数,也没法改变传递数组是值复制的问题。 阅读 .NET 源码是发现了 .NET 6 的一个 API,可以很方便完成这个任务,让结构体像引用类型一样。 using System.Runtime.InteropServices; public class Progarm { static void Main() { var a = new A[100]; var span = a.AsSpan(); ref A c…

2022年10月25日 0条评论 334点热度 1人点赞 痴者工良 阅读全文
.NET

C# 对象池算法

使用的类型是 结构体,如果是对象,则在创建内存块的时候,需要使用别的方式。 子所以使用块的形式而不是直接管理一个对象,是基于多个方面考虑的。 1,使用块的形式,可以一次性分配连续的内存;如果逐个分配,会导致碎片太多、每次分配都需要时间; 缺点: 1,不能扩增或减少对象数量、块大小; 2,以块的形式存在,用户用完一个块后,需要切换到下一个块; 这两个缺点都是很容易解决的。 然后笔者后面发现了几个不得了的 API,因此改进了对象池算法,对结构体做了优化。 可以看:https://www.whuanle.cn/archi…

2022年10月24日 0条评论 592点热度 3人点赞 痴者工良 阅读全文
.NET

C# 逐个解析 JSON

后面改进了对象池算法,使用结构体来存储,其性能变得非常强。 参考对象池算法:https://www.whuanle.cn/archives/20888 新版本 定义结构体存储每个字段: public struct JsonField { public string? Name { get; set; } public JsonValueKind ValueKind { get; set; } public object? Value { get; set; } pu[......]继续阅读

2022年10月24日 0条评论 296点热度 1人点赞 痴者工良 阅读全文
笔记和吹水

kubernetes Fluentd 接入 Elasticsearch

我的 Elasticsearch 是单机部署的,因此要将 kubernetes Fluentd 接入 Elasticsearch,需要改点配置项。 首先是在 kubernetes 上安装 Fluentd。 下载 yaml 模板仓库: git clone https://github.com/fluent/fluentd-kubernetes-daemonset 修改 fluentd-daemonset-elasticsearch-rbac.yaml 文件,替换 env: - name: FLUENT_ELASTIC…

2022年10月20日 0条评论 304点热度 0人点赞 痴者工良 阅读全文
笔记和吹水

Docker 安装 Elasticsearch

参考文章: https://blog.csdn.net/UbuntuTouch/article/details/120524770 创建网络、存储卷: docker network create elastic docker volume create elasticsearch 创建容器: docker run -itd --name elasticsearch \ --publish 9200:9200 --net elastic \ --env discovery.type=single-node \ --e…

2022年10月20日 0条评论 386点热度 1人点赞 痴者工良 阅读全文
.NET

Utf8JsonReader 和 JsonNode 解析 JSON 性能测试

数据: 格式: { "a_tttttttttttt": 1001, "b_tttttttttttt": "邱平", "c_tttttttttttt": "Nancy Lee", "d_tttttttttttt": "buqdu", "e_tttttttttttt": 81.26, "f_tttttttttttt": 60, "g_tttttttttttt": "1990-04-18 10:52:59", "h_tttttttttttt": "35812178", "i_tttttttttttt": "1893533…

2022年10月20日 0条评论 242点热度 0人点赞 痴者工良 阅读全文
未分类

动态 IP (DDNS)自动绑定腾讯云域名

DDNS 这是一个根据当前公网 IP 动态修改腾讯云域名记录的工具,如果宽带不是专线,那么 IP 会隔几天变化一次,这样给域名绑定带来麻烦。 此工具通过动态识别当前网络的公网 IP 地址,将变化的 IP 推送到腾讯云已有的域名解析中,实现域名动态绑定 IP。 注意:国内未经备案的机器,不能对外提供服务! http://www.gov.cn/gongbao/content/2005/content_93018.htm 非经营性互联网信息服务备案管理办法 在中华人民共和国境内提供非经营性互联网信息服务,应当依法履行备案…

2022年10月18日 4条评论 724点热度 1人点赞 痴者工良 阅读全文
.NET

C# 高性能 Stream 处理

可复用Stream 需要安装 Microsoft.IO.RecyclableMemoryStream。 internal class StreamHandler { // Stream pool private static readonly RecyclableMemoryStreamManager Manager = new(); private readonly RecyclableMemoryStream _stream; private volatile bool _disposed;[......]继续…

2022年10月18日 0条评论 422点热度 0人点赞 痴者工良 阅读全文
笔记和吹水

实现 caddy 非 80/443 端口访问 以及泛域名证书

背景 最近要将域名跟家庭宽带的公网 IP 打通,出现了一系列的问题。 注意:国内未经备案的机器,不能对外提供服务! http://www.gov.cn/gongbao/content/2005/content_93018.htm 非经营性互联网信息服务备案管理办法 在中华人民共和国境内提供非经营性互联网信息服务,应当依法履行备案手续。 未经备案,不得在中华人民共和国境内从事非经营性互联网信息服务。 在国内的家庭宽带中,80/443 端口是不开放的,但是 caddy 需要使用这两个端口才能访问,如果设置其他端口,会导…

2022年10月18日 0条评论 1442点热度 3人点赞 痴者工良 阅读全文
.NET

MAUI 实现前后端分离开发

背景 最先采用的是 Maui + Blazor 开发,使用社区热度比较高的 Blazor UI 框架。 可是开发进行过程中, Maui 巨多坑,Blazor UI 框架也是巨多坑,使用 Blazor UI 写的页面和样式,过不了设计师和产品经理的是法眼。 最终决定使用原生前端结合,生成静态内容放到 Maui 中,然后将两者结合起来打包发布。 先搞前端 对于前端来说,按照正常的开发模式就行,不对对前端的代码产生污染。 可以使用 VS 创建前端项目,将其放到解决方案中,也可以单独创建一个目录,将前端代码放到里面。 创建…

2022年10月17日 0条评论 528点热度 2人点赞 痴者工良 阅读全文
.NET

C# 检查一个枚举的值是否在另一个枚举中

bool IsDefine<T1, T2>(T2 t) where T1 : Enum where T2 : Enum { var value = Unsafe.As<T2, T1>(ref t); var array = Enum.GetValues(typeof(T1)); return (Array.BinarySearch(array, value) >= 0); } public static class EnumTool<T1, T2> where T1 : E…

2022年10月13日 0条评论 226点热度 0人点赞 痴者工良 阅读全文
.NET

.NET 6 开始输出 .g.cs 文件

在项目使用分部类,如 Razor、Blazor、Wpf 等项目中,编译会生成 .g.cs 文件,但是因为出现了问题,不能编译成功,查看源代码,找不出错误,只能开始输出 .g.cs ,查看文件进行检查。 <PropertyGroup> <EmitCompilerGeneratedFiles>true</EmitCompilerGeneratedFiles> </PropertyGroup> https://stackoverflow.com/questions/7117…

2022年10月13日 0条评论 208点热度 0人点赞 痴者工良 阅读全文
代码片段

通过 DNS 服务商获取公网 IP

通过 DNS 方式,速度快,性能好。 dig ANY +short @resolver2.opendns.com myip.opendns.com dig ANY +short @resolver2.opendns.com myip.opendns.com dig ANY +short @ns1-1.akamaitech.net ANY whoami.akamai.net [......] 继续阅读

2022年10月12日 0条评论 204点热度 0人点赞 痴者工良 阅读全文
.NET

C# 将 JSON 转换为键值

// json => Dictionary static Dictionary<string, string> Read(string jsonData) { var reader = new Utf8JsonReader(Encoding.Default.GetBytes(jsonData), _jsonReaderOptions); var map = new Dictionary<string, string>(); BuildMap(r[......]继续阅读

2022年10月10日 0条评论 296点热度 0人点赞 痴者工良 阅读全文
.NET

C# 调用 Powershell 执行命令

private static void RunPowershellScript(string scriptFile) { ProcessStartInfo ps = new ProcessStartInfo(@"powershell.exe",scriptFile) { RedirectStandardOutput = true }; //ps.CreateNoWindow = true; var proc = Process.Start(ps); proc.OutputDataReceived += (s, e)…

2022年10月9日 0条评论 248点热度 0人点赞 痴者工良 阅读全文
.NET

.NET 获取资源文件的字符串

using System.Resources; var assembly = typeof(Program).Assembly; ResourceManager resourceManager = new ResourceManager("update.Properties.Resources", assembly); var host = resourceManager.GetString("host"); 可以通过 typeof(Program).Assembly.GetManifestResourceName…

2022年10月8日 0条评论 258点热度 0人点赞 痴者工良 阅读全文
.NET

.NET AOT 参数

项目发布参数: dotnet publish -c Release -r win-x64 -p:PublishProfile=FolderProfile --no-self-contained dotnet publish -c Release -r win-x64 -p:PublishProfile=FolderProfile -p:PublishReadyToRun=true -p:PublishTrimmed=true --self-contained false 开启裁剪: 关闭反射: <IlcDis…

2022年10月8日 0条评论 510点热度 2人点赞 痴者工良 阅读全文
.NET

ASP.NET Core 如何修改 Response Stream

ASP.NET Core Response.Body 默认是 HttpResponseStream,其主要特征是只能追加写,不能读取也不能修改。 所以最根本方法是替换 HttpResponseStream。 随便设置一个中间件,或者将 HttpContext 拿出来,定义变量 context。 替换 Body: var responseOriginalBody = context.Response.Body; var memStream = new MemoryStream(); context.Response.…

2022年9月30日 0条评论 436点热度 0人点赞 痴者工良 阅读全文
.NET

C# 单元测试 Mock 如何获取返回结果

做单元测试的时候往往会使用 Moq 等库,对代码进行 Mock。 但是有些过程,我们希望除了 Mock 方法之外,能够在 Mock 方法中,判断传递的参数是否正确。 因为常规的 Mock ,是返回一个值。 var mock = new Mock<Test>(); mock.Setup<xxxx>(x => Get).... var obj = mock.Object; var result = obj.Get(); 在这个时候,是忽略参数和计算过程,返回一个值。 但是我们如果需要一个参…

2022年9月26日 0条评论 494点热度 0人点赞 痴者工良 阅读全文
12345…23

痴者工良

高级程序员劝退师

站长简介

一个逗B,爱好技术交流,目前专注于后端开发、Devops、微服务架构、持续交付、容器化、Kubernetes 等。擅长 .NET(C#)、Go 语言。






友情链接
  • 懒得勤快
  • 路遥工具箱

COPYRIGHT © 2022 whuanle.cn. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

粤ICP备18051778号

粤公网安备 44030902003257号