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

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

C# 一个命令行库:McMaster.Extensions.CommandLineUtils

首先在要被执行的 类型 加上参数: [Option(Description = "CloudEvents 'source' (default: urn:example-com:mysource:abc)", LongName = "source", ShortName = "s")] private string Source { get; } = "urn:example-com:mysource:abc"; [Option(Description = "CloudEvents 'type' (default: …

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

C# YAML 解析

引入这个库: YamlDotNet 配置示例: services.AddYamlDotNetSerializer( serializer => serializer .IncludeNonPublicProperties() .WithTypeConverter(new OneOfConverter()) .WithEmissionPhaseObjectGraphVisitor(args => new Cha[......]继续阅读

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

C# Json 序列化 反序列化,一个有趣的配置

从 ServerlessWorkflow 中学习到一个有趣的 NewtonsoftJson 配置。 var newtonsoftJsonDefaultConfig = (JsonSerializerSettings settings) => { settings.ContractResolver = new NonPublicSetterContractResolver(); settings.NullValueHandling = NullValueHandling.Igno[......]继续阅读

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

C# 中的 ISO8601 时间格式

ISO8601 规定了时间格式。 在 Go 语言中,Duration 就实现了这种时间格式。 package main import ( "fmt" "time" ) func main() { t := time.Now() fmt.Println(t) } 输出: 2022-11-19 02:59:28.201938781 +0000 UTC m=+0.000051897 在 C# 中,可以通过引用 Iso8601DurationHelper 来实现 Duration。 var duration = Durat…

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

从 ServerlessWorkflow 学习到了什么

背景 突然了解到有个项目叫 ServerlessWorkflow 。 https://github.com/serverlessworkflow 这个项目有什么用,并不重要,重要的是可以从这里了解到云原生中间件开发的一些现状和需要学习的知识。 因为这个项目是 CNCF 项目,里面使用到的规范、思想、协议,也可以很好地体现当前 CNCF 的趋势。 ServerlessWorkflow 是一个 CNCF 发起的工作流协议,然后现在使用了 C# 实现了这个协议。 https://github.com/serverless…

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

Kubernetes 允许外网域名访问 APIServer

首先打开 /etc/kubernetes/pki 目录,里面会有很多证书。 执行命令查看当前证书允许通过哪些地址访问 APIServer: openssl x509 -in apiserver.crt -noout -text|grep -A 2 'Alternative' 可以看到证书允许的都是些内网 IP、本地 DNS 等。 备份好当前的密钥和客户端证书: mv apiserver.crt apiserver.crt.bak mv apiserver.key apiserver.key.bak 修改 kubea…

2022年11月18日 0条评论 262点热度 0人点赞 痴者工良 阅读全文
踩坑笔记

Windows 激活进程,让其窗口显示在最前面

示例代码如下: void Main() { string pName = "程序的名称"; Process[] temp = Process.GetProcessesByName(pName); if (temp.Length > 0) { IntPtr handle = temp[0].MainWindowHandle; SwitchToThisWindow(handle, true); } } [DllImport("user32.dll")] public static extern void Swit…

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

MAUI 属性元素绑定

创建一个元素: <Label x:Name="Label1" Text="111" VerticalOptions="Center" HorizontalOptions="Center" /> <Button Text="点击" Clicked="OnButtonClicked"></Button> 定义一个模型,继承 INotifyPropertyChanged。 public class A : INotifyPrope[......]继续阅读

2022年11月14日 0条评论 280点热度 0人点赞 痴者工良 阅读全文
Golang

Kubernetes client-go 连接示例

package main import ( "context" "fmt" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/kubernetes" "k8s.io/client-go/tools/clientcmd" "os" ) func main() { kubeconfig := "config" config, err := clientcmd.BuildConfigFromFlags("", kubeconfig) if err !=…

2022年11月13日 0条评论 156点热度 0人点赞 痴者工良 阅读全文
Golang

Golang channel 基于 select 的多路复用

在下面这个示例中,定时器每 1 秒向 channel 发生一次消息。当数量达到 10 次时,会自动终止。 func main() { fmt.Println("Commencing countdown.") tick := time.Tick(1 * time.Second) for countdown := 10; countdown > 0; countdown-- { v := <-tick fmt.Println(countdown, v) } } 但是,如果需要中途取消,则需要使用 selec…

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

MYSQL 数据库事务

MYSQL 数据库事务支持以下几种隔离级别: Read Uncommitted(读取未提交内容) Read Committed(读取提交内容) Repeatable Read(可重读) Serializable(可串行化) 每个会话中,都可以设置事务的隔离级别,如果不设置,就会使用数据库默认的隔离级别。 查询数据库默认隔离级别: show variables like 'transaction_isolation'; SELECT @@transaction_isolation 在当前会话中,设置事务的隔离级别: …

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

配置 MAUI 项目使用管理员权限启动

问题背景 在 Windows 中,开发的应用可以使用 app.manifest 资产文件配置程序启动时,使用何种角色权限启动。 效果如下: 正常情况下,在 app.manifest 加上以下配置即可: 如果项目中没有这个文件,可以在项目中新建项-清单文件。 <trustInfo xmlns='urn:schemas-microsoft-com:asm.v2'> <security> <requestedPrivileges xmlns='urn:schemas-microsoft-co…

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

.NET 7 AOT 的使用以及 .NET 与 Go 互相调用

[TOC] 背景 其实,规划这篇文章有一段时间了,但是比较懒,所以一直拖着没写。 最近时总更新太快了,太卷了,所以借着 .NET 7 正式版发布,熬夜写完这篇文章,希望能够追上时总的一点距离。 本文主要介绍如何在 .NET 和 Go 语言中如何生成系统(Windows)动态链接库,又如何从代码中引用这些库中的函数。 在 .NET 部分,介绍如何使用 AOT、减少二进制文件大小、使用最新的 [LibraryImport] 导入库函数; 在 Go 语言部分,介绍如何使用 GCC 编译 Go 代码、如何通过 syscal…

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

C# 自动化生成证书、本地安装证书、解决信任证书问题

背景 因为本地开发时,内网的 https 是不安全的 https。 会导致 js 发不出请求。 为了让 https 安全,这里实现了本地 localhost 自动生成证书以及安装的过程。 写代码 生成证书使用的是 .NET 自带的库,不需要引入第三方包。 using System.Security.Cryptography; using System.Security.Cryptography.X509Certificates; using System.Text; 生成证书的方法参考 https://github…

2022年11月9日 0条评论 678点热度 3人点赞 痴者工良 阅读全文
踩坑笔记

Fluentd 在 Kubernetes 下收集日志不可读等问题

Fluentd 在 Kubernetes 下部署时,需要使用 fluentd-daemonset-elasticsearch-rbac.yaml 文件,里面配置了 RABC 权限等,但是启动起来后,查看 Fluentd 日志,发现 unread ,原因是日志位置的问题。 原版日志收集配置: volumeMounts: - name: varlog mountPath: /var/log # When actual pod logs in /var/lib/docker/containers, the followi…

2022年11月9日 0条评论 208点热度 0人点赞 痴者工良 阅读全文
踩坑笔记

openssl sc pfx 证书

地址: https://devblogs.microsoft.com/dotnet/configuring-https-in-asp-net-core-across-different-platforms/ 创建一个 https.config 文件: [ req ] default_bits = 2048 default_md = sha256 default_keyfile = key.pem prompt = no encrypt_key = no distinguished_name = req_distin…

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

MAUI 全屏时保留任务栏

默认情况下,MAUI 全屏的时候,任务栏会被屏蔽掉。 参考解决方法:https://github.com/dotnet/maui/issues/5478 获取窗口对象: IntPtr nativeWindowHandle = WinRT.Interop.WindowNative.GetWindowHandle(window); WindowId win32WindowsId = Win32Interop.GetWindowIdFromWindow(nativeWindowHandle);[......]继续阅读

2022年11月7日 0条评论 342点热度 1人点赞 痴者工良 阅读全文
Kubernetes和Docker

ubuntu 使用 kubeadm 安装 kubernetes 问题

由于新版本的 docker 跟 kubernetes 对系统有要求,因此首先要做以下操作,确保 docker、kubelet 可以正常工作。 首先修改或添加 /etc/docker/daemon.json,内容替换如下: { "registry-mirrors": ["https://94zlnekp1.mirror.aliyuncs.com"], "log-driver": "json-file", "log-opts": { "max-size": "10m", "max-file": "1" }, "exec…

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

C# 多维笛卡尔积、组合算法

有以下 N 个因子: new List<string>{"A","B","C"}, // 位置 0 new List<string>{"1","2","3"}, // 位置 1 new List<string>{"①","②","③"}, new List<string>{"Ⅰ","Ⅱ","Ⅲ"}, new List<string>{"一","二","三"}, 可以组成多个 n 长度的数组,如: A 1 ① Ⅰ 一 M[......]继续阅读

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

通过生命周期管理 MAUI 窗口(Windows)

在 Microsoft.Maui 的 Microsoft.Maui.LifecycleEvents 中,有个管理 MAUI 窗口生命周期的扩展。 public static MauiAppBuilder ConfigureLifecycleEvents( this MauiAppBuilder builder, Action<ILifecycleBuilder>? configureDelegate); 本文目的是在 Windows 下,使用 WinUI 的方式将窗口控制的接口。 参考资料: https…

2022年10月31日 0条评论 446点热度 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号