摘要: CAP集成到项目 添加Package 数据库使用Sqlserver,消息队列使用RabbitMQ <PackageReference Include="DotNetCore.CAP" Version="3.1.2" /> <PackageReference Include="DotNetCore.C 阅读全文
posted @ 2021-01-28 20:38 .Neterr 阅读(666) 评论(0) 推荐(0) 编辑
摘要: 简介 CAP 是一个EventBus,同时也是一个在微服务或者SOA系统中解决分布式事务问题的一个框架。它有助于创建可扩展,可靠并且易于更改的微服务系统。 分布式事务是在分布式系统中不可避免的一个硬性需求,CAP 没有采用两阶段提交(2PC)这种事务机制,而是采用的 本地消息表+MQ 这种经典的实现 阅读全文
posted @ 2021-01-04 23:43 .Neterr 阅读(1144) 评论(0) 推荐(0) 编辑
摘要: 概述 传统的单体应用一般采用的是数据库提供的事务一致性,通过数据库提供的提交以及回滚机制来保证相关操作的ACID,这些操作要么同时成功,要么同时失败。各个服务看到数据库中的数据是一致的,同时数据库的操作也是相互隔离的,最后数据也是在数据库中持久存储的。 在分布式环境下由于各个服务访问的数据是相互分离 阅读全文
posted @ 2020-08-08 19:03 .Neterr 阅读(434) 评论(0) 推荐(1) 编辑
摘要: 本文简介 本文将为你介绍一款在 .NET 环境下功能全面的 Cron 表达式解析库——TimeCrontab。这个库不仅支持 Cron 的所有特性,还提供了易于使用的 API,帮助开发者轻松构建和管理定时任务。无论你是开发 Web 应用、后台服务还是桌面程序,TimeCrontab 都能满足你的需求 阅读全文
posted @ 2024-02-27 15:47 .Neterr 阅读(19) 评论(0) 推荐(0) 编辑
摘要: Intro ASP.NET 8 中引入了 IExceptionHandler,我们可以针对某一类的 exception 做单独的处理, 可以将不同类型的异常有不一样的逻辑做不同的处理,异常处理可以变得更加灵活 Sample 来看一个简单的示例: 我们可以实现 IExceptionHandler 来处 阅读全文
posted @ 2024-01-18 14:00 .Neterr 阅读(21) 评论(0) 推荐(0) 编辑
摘要: 有时候我们会将一段 JSON 字符串存入数据库,以期在某个接口被调用时将其返回给客户端。这种返回一般不是原样返回:我们可能需要对结果包装一下,比如将数据包在 data 字段里同时提供 code 和 message 字段。 { "code": 200, "message": "OK", "data": 阅读全文
posted @ 2024-01-16 15:22 .Neterr 阅读(24) 评论(0) 推荐(0) 编辑
摘要: 同一类型存在于多个项目中,并且它们的命名空间也相同问题,解决方法就是给程序集起别名,引用类型时使用别名 项目文件中给程序集加别名: <PackageReference Include="IPNetwork2" Version="xxxx" > <Aliases>IPNetworkAlias</Ali 阅读全文
posted @ 2024-01-12 10:12 .Neterr 阅读(33) 评论(0) 推荐(0) 编辑
摘要: 在面对 生产者-消费者 的场景下, netcore 提供了一个新的命名空间 System.Threading.Channels 来帮助我们更高效的处理此类问题,有了这个 Channels 存在, 生产者 和 消费者 可以各自处理自己的任务而不相互干扰,有利于两方的并发处理,这篇文章我们就来讨论下如何 阅读全文
posted @ 2023-12-19 15:01 .Neterr 阅读(56) 评论(0) 推荐(0) 编辑
摘要: using System.Collections.Concurrent; using System.Diagnostics; { int threadCount = 20; List<Task> tasks = new List<Task>(); ConcurrentQueue<int> queue 阅读全文
posted @ 2023-10-08 14:45 .Neterr 阅读(38) 评论(0) 推荐(0) 编辑
摘要: 你是否有这样的经历,在与ChatGPT对话时,写出的文章总是缺乏情感,内容生硬?如果你的答案是肯定的,那么这篇文章可能会帮到你。今天给大家分享几个实用技巧,让你和ChatGPT的对话更加顺畅和高效,写出有人味,有创意、自己想要的内容。 首先我们先来了解一下ChatGPT是什么?它是一个基于人工智能的 阅读全文
posted @ 2023-08-04 15:29 .Neterr 阅读(215) 评论(0) 推荐(0) 编辑
摘要: ``` { var collection = new ServiceCollection(); //Registering Kernel collection.AddTransient((serviceProvider) => { return Kernel.Builder .WithOpenAIT 阅读全文
posted @ 2023-07-10 18:46 .Neterr 阅读(45) 评论(0) 推荐(0) 编辑
摘要: # ChatGPT ``` //chatGPT { var chatGPT = kernel.GetService(); var chatHistory = chatGPT.CreateNewChat("你是图书管理员"); Console.WriteLine("请提问:"); while (tru 阅读全文
posted @ 2023-07-10 17:27 .Neterr 阅读(97) 评论(0) 推荐(0) 编辑
摘要: # 为什么需要Memory LLM对自然语言的理解和掌握在知识内容的解读和总结方面提供了强大的能力。 但是由于训练数据本身来自于公共领域,也就注定了无法在一些小众或者私有的领域能够足够的好的应答。 因此如何给`LLM `提供足够多的信息上下文,就是如今的`LLM AI应用`可以充分发挥能力的地方了。 阅读全文
posted @ 2023-07-08 18:10 .Neterr 阅读(262) 评论(1) 推荐(1) 编辑
摘要: # 基础定义 最基本的Native Function定义只需要在方法上添加 `SKFunction `的特性即可。 ``` using Microsoft.SemanticKernel.SkillDefinition; using Microsoft.SemanticKernel.Orchestra 阅读全文
posted @ 2023-07-08 09:35 .Neterr 阅读(113) 评论(0) 推荐(0) 编辑
摘要: 如果把提示词也算作一种代码的话,那么`Semantic Function`所带来的将会是全新编程方式,自然语言编程。 通常情况下一段`prompt`就可以构成一个`Semantic Function`,如此这般简单,如果我们提前可以组织好一段段prompt的管理方式,甚至可以不需要写任何的代码,就可 阅读全文
posted @ 2023-07-06 19:57 .Neterr 阅读(164) 评论(0) 推荐(0) 编辑
摘要: `Semantic Kernel `是一种轻量级应用开发框架,用于快速开发融合 `LLM AI`的现代应用。以下简称`SK` # 名词解释 LLM:大语言模型 Prompt:简单的理解它是给 AI 模型的指令。 Prompt Engineering:中文意思为提示工程,是一种人工智能(AI)技术,它 阅读全文
posted @ 2023-07-06 15:12 .Neterr 阅读(606) 评论(0) 推荐(0) 编辑
摘要: 在C#中,可以使用CancellationToken来优雅地关闭线程。CancellationToken是一个结构体,用于向线程发送信号以请求线程停止运行。以下是一个使用CancellationToken的示例代码: ``` using System; using System.Threading; 阅读全文
posted @ 2023-06-27 16:17 .Neterr 阅读(132) 评论(0) 推荐(0) 编辑
摘要: .NET 是一个非常强大的框架,它允许开发人员管理来自各种源(如 JSON 文件、环境变量等)的应用程序设置。但是,有时开发人员需要一种方法来引用和替换其他设置中的配置值,以避免在多个地方维护相同的值,从而使配置文件变得混乱和难以维护。 为了解决这个问题,我们可以使用 GSoft.Extension 阅读全文
posted @ 2023-06-20 17:34 .Neterr 阅读(28) 评论(0) 推荐(0) 编辑
摘要: 在 ASP.NET Core 中,内置了非常强大的依赖注入容器功能。但是,如果不正确使用,也可能会引起一些问题。 问题 下面我们通过一段示例代码来说明这个问题。 public interface IServiceA{ string Get();}public interface IServiceB{ 阅读全文
posted @ 2023-06-20 17:26 .Neterr 阅读(18) 评论(0) 推荐(0) 编辑
摘要: 在这个系列中,我将探索一下 .NET 6 中的一些新特性。已经有很多关于 .NET 6 的内容,包括很多来自 .NET 和 http://ASP.NET 团队本身的文章。在这个系列中,我将探索一下这些特性背后的一些代码。 在这第一篇文章中,来研究一下 ConfigurationManager 类,讲 阅读全文
posted @ 2023-06-20 15:42 .Neterr 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 前言 我们知道在 ASP.NET Core 中,内置了一个依赖注入容器,可用于注册和解析服务。 在注册服务时,我们需要指定服务的生命周期: Transient:每次请求服务时都会创建一个新的实例。 Scoped:每次请求服务时都会创建一个新的实例,但在同一个请求内,每次请求服务时都会使用同一个实例。 阅读全文
posted @ 2023-06-19 20:54 .Neterr 阅读(10) 评论(0) 推荐(0) 编辑
摘要: 获取数据类型 type(val) if type(1) == int: print('1是int类型') if type('hello') == str: print('1是字符串类型') if type(1.5) == float: print('1是float类型') if type([1,2] 阅读全文
posted @ 2023-05-05 13:59 .Neterr 阅读(28) 评论(0) 推荐(0) 编辑
摘要: python包 python包用于管理python模块,将一批模块归为一类,方便使用 从物理上看,包就是一个文件夹,文件夹中必须包含一个__init__.py文件,该文件夹可用于包含多个模块文件; 从逻辑上看,包的本质依然是模块 导入包 import 包名.模块名 from 包名 import 模块 阅读全文
posted @ 2023-04-22 23:07 .Neterr 阅读(27) 评论(0) 推荐(0) 编辑
摘要: 对于我们程序员来说,在日常开发项目中,调用外部的命令是非常常见的,比如调用批处理命令、调用其他应用,这里面就涉及到进程的通讯、管理、启动、取消等一些操作,今天给大家推荐一个C#库,就可以满足这些日常的需求,避免重复造轮子。 项目简介 这是基于.NetCore 开发的C#库,一个用于与外部命令行界面交 阅读全文
posted @ 2023-04-11 14:27 .Neterr 阅读(300) 评论(0) 推荐(0) 编辑
摘要: Intro dotnet-exec是一个可以执行 C# 程序而不需要项目文件的命令行工具,并且你可以指定自定义的入口方法不仅仅是Main方法 在 python/NodeJs 里,可以使用python xx.py/node xx.js来运行代码,在 C# 中一般是需要项目文件才能dotnet run运 阅读全文
posted @ 2023-04-11 09:51 .Neterr 阅读(101) 评论(0) 推荐(0) 编辑
摘要: 访问者模式介绍 最复杂的设计模式,并且使用频率不高 访问者模式是一种将数据操作和数据结构分离的设计模式。 访问者模式的使用场景 对象结构比较稳定,但经常需要在此对象结构上定义新的操作。 需要对一个对象结构中的对象进行很多不同的并且不相关的操作,而需要避免这些操作“污染”这些对象的类,也不希望在增加新 阅读全文
posted @ 2023-04-07 15:00 .Neterr 阅读(11) 评论(0) 推荐(0) 编辑
摘要: 背景 在三方接口对接中,偶尔会遇到需要传递证书的情况,这种方式其实是在SSL握手过程中会同时验证客户端和服务器的身份,这就是我们常说的 双向认证。 双向认证需要服务器和客户端提供身份认证,只能是服务器允许的客户方能访问,安全性相对于要高一些。 下面老黄用几个小例子来演示一下双向认证的简单应用。 准备 阅读全文
posted @ 2023-04-06 15:02 .Neterr 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 简介 ImageSharp 是一个全新的、功能齐全的、完全托管的、跨平台的 2D 图形库。ImageSharp 旨在简化图像处理,为您带来了一个功能强大而又非常简单的 API。 可以实现很多功能,如:缩放,裁剪,绘画,组合图片等 支持的图像格式: Bmp Gif Jpeg Pbm Png Tiff 阅读全文
posted @ 2022-12-22 18:23 .Neterr 阅读(3125) 评论(0) 推荐(0) 编辑
摘要: 基于非对称加密实现接口的安全开放(openapi的实现) 方案一:仅采用非对称加密 方案二:采用非对称加密+对称加密 iOS App签名原理 一、简单的签名原理: 目的:保证每个App都是经过苹果公司官方认证的 背景:因为手机和系统都是苹果公司生产的,所以苹果公司可以在手机上内置公钥,然后在App 阅读全文
posted @ 2022-11-26 09:30 .Neterr 阅读(104) 评论(0) 推荐(0) 编辑
摘要: Portainer Docker图形化界面管理工具 docker run -d -p 8087:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portain 阅读全文
posted @ 2022-11-13 15:16 .Neterr 阅读(25) 评论(0) 推荐(0) 编辑
摘要: 通过docker安装 docker run -d -p 27017:27017 --name mongo01 -v /docker/mongo/config:/data/configdb -v /docker/db:/data/dbmongo -e MONGO_INITDB_ROOT_USERNAM 阅读全文
posted @ 2022-11-03 17:44 .Neterr 阅读(23) 评论(0) 推荐(0) 编辑
摘要: 操作流程 1. 安装Nodejs 2. 配置npm镜像源、缓存目录 3. 安装vue cli脚手架 vue2: npm install -g vue-cli vue3: npm install -g @vue/cli # OR yarn global add @vue/cli 4. 创建vue项目 阅读全文
posted @ 2022-11-01 00:01 .Neterr 阅读(25) 评论(0) 推荐(0) 编辑
摘要: 介绍 在 ASP.NET Core MVC 应用程序中调用AddMvc()或AddMvcCore()添加的标准服务之一是 ApiExplorer。通过调用services.AddApiExplorer()将 ApiExplorer 服务添加到您的应用程序中 ApiExplorer 功能是Micros 阅读全文
posted @ 2022-10-16 16:17 .Neterr 阅读(273) 评论(0) 推荐(0) 编辑
摘要: `Swashbuckle.AspNetCore.Annotations`包括一组可应用于Controller、Action和Model的自定义属性,以丰富生成的 Swagger #### 安装Nuget ``` install-package Swashbuckle.AspNetCore.Annot 阅读全文
posted @ 2022-10-16 09:24 .Neterr 阅读(840) 评论(0) 推荐(0) 编辑
摘要: 生成器将在单个 Swagger 文档中包含所有 API 操作。但是,如有必要,您可以创建多个文档。例如,您可能希望每个 API 版本都有一个单独的文档。 案例 添加服务、中间件(v1、v2) builder.Services.AddSwaggerGen(options => { //定义多个Swag 阅读全文
posted @ 2022-10-16 08:41 .Neterr 阅读(284) 评论(0) 推荐(0) 编辑
摘要: 什么是Swagger/OpenAPI Swagger是为帮助我们生成webapi文档的工具,可以直接从您的路由、控制器和模型生成漂亮的 API 文档 Swagger 是一个与语言无关的规范,用于描述 REST API。Swagger 项目已捐赠给 OpenAPI 计划,现在它被称为OpenAPI。 阅读全文
posted @ 2022-10-16 08:37 .Neterr 阅读(473) 评论(0) 推荐(1) 编辑
摘要: 概念 RPC 远程过程调用(远程函数调用) GRPC google开发,跨语言RPC,用来解决微服务通信性能和扩展问题 跨语言:通过Protobuffer文件(通用文件)解决跨语言问题的 高并发:GRPC基于http/2协议,多路复用机制(服务端一个线程可以连接任意数量客户端请求) webapi缺陷 阅读全文
posted @ 2022-09-03 22:10 .Neterr 阅读(280) 评论(0) 推荐(0) 编辑
摘要: 后台运行项目 安装dotnet core sdk https://dotnet.microsoft.com/en-us/download/dotnet/6.0 创建项目 dotnet new mvc -o ./app1 cd app1 # 发布项目 dotnet publish -o ../app1 阅读全文
posted @ 2022-08-28 23:44 .Neterr 阅读(208) 评论(0) 推荐(0) 编辑
摘要: grep命令 grep是行过滤工具;用于根据关键字进行行过滤 语法: grep [选项] '关键字' 文件名 常见选项 -i: 不区分大小写 -v: 查找不包含指定内容的行,反向选择 -w: 按单词搜索 -o: 打印匹配关键字 -c: 统计匹配到的行数 -n: 显示行号 -r: 逐层遍历目录查找 - 阅读全文
posted @ 2022-08-07 09:55 .Neterr 阅读(306) 评论(0) 推荐(0) 编辑
摘要: API Demo 查数量 //count:数量 { var countResponse1 = client.Count<ElasticUserModel>(c => c.Index("index13")); var countResponse2 = client.Count<ElasticUserM 阅读全文
posted @ 2022-07-31 22:48 .Neterr 阅读(590) 评论(0) 推荐(0) 编辑
摘要: API Demo 索引(添加) var settings = new ConnectionSettings(new Uri("http://****:9200/")).DefaultFieldNameInferrer(name => name); var client = new ElasticCl 阅读全文
posted @ 2022-07-28 20:42 .Neterr 阅读(294) 评论(0) 推荐(0) 编辑
摘要: NEST映射方式 自动映射(从POCO属性类型推断) 在创建索引或通过Put Mapping API创建映射时,NEST提供了一个称为自动映射的功能,可以从您正在映射的CLR POCO属性类型自动推断出正确的Elasticsearch字段数据类型。 //自动映射(AutoMap()) { var s 阅读全文
posted @ 2022-07-27 21:03 .Neterr 阅读(327) 评论(0) 推荐(0) 编辑
摘要: # 介绍 JSON Schema是一个用于验证JSON数据的强大工具,可校验json格式和数据值 # 入门案例 安装Nuget ``` Install-package Newtonsoft.Json.Schema ``` 代码: ``` { string json = @"{ 'name':'fan 阅读全文
posted @ 2022-07-16 08:39 .Neterr 阅读(699) 评论(0) 推荐(1) 编辑