大多数情况下,大家使用的生成 JWT Token 代码是这样的: // 定义用户信息 var claims = new Claim[] { new Claim(ClaimTypes.Name, userName) }; SymmetricSecurityKey key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_tokenOption.SecurityKey));[......]继续阅读

2023年1月13日 0条评论 2094点热度 2人点赞 痴者工良 阅读全文

环境搭建和生成 首先安装 Java 8 以上的版本。 打开 https://www.antlr.org/download.html, 找到 "ANTLR tool itself ",或者直接点击 https://www.antlr.org/download/antlr-4.11.1-complete.jar 下载包。 然后打开 https://github.com/antlr/grammars-v4 下载对应语法分析模板。 执行命令生成 java 代码。 java -jar antlr-4.11…

2023年1月12日 0条评论 2779点热度 0人点赞 痴者工良 阅读全文

场景,访问 a.com/aaa 时,反向代理 127.0.0.1:9999/ 服务,自动将路径后缀路径转发。 如果访问 a.com/aaa/bbb,实际请求 127.0.0.1:9999/bbbb。 首先设置路径区配: 接着设置请求改写: ^/aaa(/|$)(.*) [......] 继续阅读

2023年1月6日 0条评论 3395点热度 0人点赞 痴者工良 阅读全文

首先在数据库中创建新的用户: CREATE USER 'exporter'@'%' IDENTIFIED BY 'promethues' WITH MAX_USER_CONNECTIONS 3; GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'%'; flush privileges; exporter 是用户名,promethues 是密码。 定义连接数据库的配置文件(my.cnf): [client] host=127.0.0.1 …

2023年1月6日 0条评论 1640点热度 0人点赞 痴者工良 阅读全文

单机版本 首先创建虚拟网络,以便应用之间通讯: docker network create apisix-network --driver bridge 创建 etcd 持久化存储卷: docker volume create --name etcd-data 启动单机版本的 etcd: docker run -d --name etcd \ --network apisix-network \ --volume=etcd-data:/etcd-data \ -p 2379:2379 \ -p 2380:2380 …

2023年1月5日 2条评论 5380点热度 0人点赞 痴者工良 阅读全文

连接 如果不想对外暴露密码,可以自行写一个 AuthorizationHeader,只使用 Base64 处理后的 Basic 认证密钥。 using Elastic.Clients.Elasticsearch; using Elastic.Transport; public class Program { public class Base64Auth : AuthorizationHeader { private readonly string _base; public Base64Auth(string b…

2022年12月29日 0条评论 2225点热度 0人点赞 痴者工良 阅读全文

Tauri 是一款应用构建工具包,让您能够为使用 Web 技术的所有主流桌面操作系统构建软件。 官网地址:https://tauri.app/zh-cn/ Tauri 可以构建跨平台的快速、安全、前端隔离应用,Tauri 支持多种创建项目模板的方式: 安装开发环境 Tauri 支持使用 Windows、Linux、Mac 系统进行开发,笔者将介绍在 Windows 下如何开发。 首先需要安装 C++ core desktop features 组件,到这里可以下载: https://learn.microsoft.…

2022年12月28日 3条评论 19476点热度 0人点赞 痴者工良 阅读全文

通常程序执行 IO 操作时,需要涉及用户空间和内核空间的两个缓冲区。 只有内核才能跟磁盘等硬件进行操作,因此数据在流向程序时,必定会先存在于内核缓冲区,内核缓冲区又称为 PageCache,不同操作系统的 PageCache 机制不一样。 内核缓冲区:系统内核在内核空间中定义的内核缓冲区,即 PageCache。 用户缓冲区:通过 C 语言或其它语言提供的标准 IO 读写函数在用户空间定义的缓冲区。 从上图中可以看到,IO 操作有两种方式: 缓冲IO:同时使用用户缓冲区和内核缓冲区。需要 3 次数据复制以及 1 次…

2022年12月22日 0条评论 1724点热度 29人点赞 痴者工良 阅读全文

1,一个字段是数组,如果数组中不存在这个记录时,向数组增加一个记录。 FilterDefinitionBuilder<WorkflowDo> fd = Builders<WorkflowDo>.Filter; var f = fd.And(fd.Eq(x => x.Id, record.Id), fd.Not(fd.ElemMatch(x => x.Definition, x => x.Version == newVersionStr))); UpdateDefinitio…

2022年12月7日 0条评论 1976点热度 28人点赞 痴者工良 阅读全文

背景: 查找了很多库,要么收费,要么太旧用不了。 经过大量测试,写了打印机的相关代码。 实现的代码不依赖于第三方库。 核心代码 引入这两个库: System.Drawing.Printing Vanara.PInvoke.Printing 这两个库用于使用 winspool.drv 服务,可以避免编写大量 库函数调用代码。 首先编写基础代码: public class PrinterBase { /// <summary> /// 获取默认打印机 /// </summary> /// �…

2022年12月3日 0条评论 3358点热度 4人点赞 痴者工良 阅读全文

goioc 介绍 goioc 是一个基于 GO 语言编写的依赖注入框架,基于反射进行编写。 支持泛型; 简单易用的 API; 简易版本的对象生命周期管理,作用域内对象具有生命; 延迟加载,在需要的时候才会实例化对象; 支持结构体字段注入,多层注入; 对象实例化线程安全,作用域内只会被执行一次。 下载依赖: go get -u github.com/whuanle/goioc v2.0.0 快速上手 定义接口: type IAnimal interface { Println(s string) } 实现接口: ty…

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

背景: 打不开远程设置。 也打不开 gpedit.msc。 修复命令(cmd): @echo off pushd "%~dp0" dir /b C:\Windows\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientExtensions-Package~3*.mum >List.txt dir /b C:\Windows\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientTools-Pack…

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

WorkflowDefinitionValidator 是整个验证入口,上一个非常复杂的对象结构。 参考:https://github.com/serverlessworkflow/specification/blob/main/specification.md 通过依赖注入,继续检查下一层的字段。 /// <summary> /// Represents the service used to validate <see cref="WorkflowDefinition"/>s /// &…

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

代码示例如下: System.Net.ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, sslPolicyErrors) => true; services.ConfigureAll<HttpClientFactoryOptions>(options => { options.HttpMessageHandlerBuilderActions.A[......]继续阅读

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

建立链路 SDK 官方仓库地址: https://github.com/open-telemetry/opentelemetry-go 设计一个这样的执行流程: Run 先后执行 Run1、Run2: a.Run1(newCtx) a.Run2(newCtx) Run1 中,还执行了另一个函数 Run1-1。 使用 opentelemetry SDK 的代码示例如下: package main import ( "context" "go.opentelemetry.io/otel" "io" "log" ) //…

2022年11月20日 0条评论 2992点热度 1人点赞 痴者工良 阅读全文

使用示例: package main import ( "fmt" "os" "os/signal" ) func main() { // Set up channel on which to send signal notifications. // We must use a buffered channel or risk missing the signal // if we're not ready to receive when the signal is sent. c := make(chan os…

2022年11月20日 0条评论 3966点热度 1人点赞 痴者工良 阅读全文

使用 Go 中常用的 log 方法: Print/Printf/Println : 打印日志信息 Panic/Panicf/Panicln : 打印日志信息后,以拼装好的字符串为参数调用 Panic Fatal/Fatalf/Fatalln : 打印日志信息后,os.Exit(1) 退出程序 New 一个 Logger 的定义如下: func New(out io.Writer, prefix string, flag int) *Logger { return &Logger{out: out, pref…

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

首先在要被执行的 类型 加上参数: [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条评论 1728点热度 0人点赞 痴者工良 阅读全文

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

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

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

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