自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(111)
  • 收藏
  • 关注

原创 .NET 微服务 Ocelot 网关实现方案

Ocelot是.NET生态中常用的API网关,能够实现路由转发、负载均衡、限流和安全管控等核心功能。通过以上配置,Ocelot网关可以为.NET微服务架构提供统一的入口,简化客户端调用,并增强系统的安全性和可扩展性。

2025-09-01 09:23:11 288

原创 .NET 微服务日志系统:Serilog + Loki + Grafana 实践指南

点击左侧菜单;点击,选择 Loki 数据源;配置图表类型:日志列表:展示原始日志,适合实时查看;柱状图:统计不同日志级别的数量(如 Error/Warning/Info 的占比);表格:按字段(如 OrderId、UserId)汇总日志,便于排查特定业务问题;保存仪表盘,命名为“Order-Service 日志监控”,后续可直接访问。

2025-09-01 09:05:24 1093 1

原创 .net 微服务jeager链路跟踪

Route[HttpGet// 创建自定义跨度 using var customSpan = _tracer . StartActiveSpan("CustomWeatherProcessing");try {// 添加自定义标签 customSpan . SetAttribute("location" , "Beijing");

2025-09-01 08:55:42 492

原创 C# 日志写入loki

在 C# 中实现日志写入 Loki 最常用的方式是结合日志框架和扩展包。

2025-08-29 18:34:50 890 1

原创 不要在构造函数中进行数据库查询,io操作

保证对象创建的安全性:避免因外部操作失败导致对象处于无效状态。提升代码可维护性:分离初始化与业务逻辑,降低耦合度。增强可测试性:便于隔离外部依赖,编写稳定的单元测试。实际开发中,应优先通过“依赖注入+显式初始化方法”或“工厂模式”实现资源操作与对象构造的分离,让代码更健壮、更易扩展。

2025-08-29 08:35:57 481

原创 处理异常时,finally关键字有什么作用?

finally的核心价值是保证“清理逻辑的必然性”,尤其适用于需要手动管理的资源(文件、数据库连接等)。在实际开发中,结合using语句(自动资源管理)和finally块(手动特殊清理),可有效避免资源泄漏,提升程序的健壮性。

2025-08-29 08:32:44 260

原创 C#中常见的异常类有哪些?

抛出具体异常:避免直接抛出Exception,而是选择最匹配的子类(如参数为null时抛针对性捕获:根据业务场景捕获特定异常(如文件操作捕获),避免滥用。查看文档:不确定方法会抛出哪些异常时,可参考 .NET 官方文档(如的文档会说明可能抛出的异常)。通过合理使用异常类,能让错误信息更清晰,便于调试和问题定位。

2025-08-29 08:30:01 962

原创 Ocelot VS Nginx

Ocelot是 .NET 微服务的“最佳拍档”,功能丰富且贴近业务,适合中低流量、强业务定制场景。Nginx是性能优先的通用网关,适合高并发、跨语言架构,作为流量入口或基础反向代理。选择时需结合技术栈、流量规模和业务复杂度综合判断,必要时可采用分层网关架构发挥两者优势。

2025-08-26 16:52:16 458

原创 如何在C#中使用Ocelot构建微服务网关?

在C#中使用Ocelot构建微服务网关是一个常见且高效的方案,Core/.NET 5+设计,提供了完整的微服务网关功能。

2025-08-26 16:20:20 469

原创 在 C# 中使用 Consul 客户端库实现服务发现

在 C# 中使用 Consul 客户端库实现服务发现,主要通过查询 Consul 服务器获取指定服务的健康实例列表。

2025-08-26 15:16:17 257

原创 consul的作用

Consul 是 HashiCorp 公司推出的一款,核心作用是解决分布式系统中服务的“定位、通信、管控与安全”问题,确保微服务或分布式架构下各组件能高效、可靠地协同工作。其功能覆盖服务发现、配置管理、健康检查、分段隔离等核心场景,广泛应用于云原生、微服务、多数据中心等架构中。

2025-08-25 18:57:28 892

原创 Consul 在 Windows 上的启动方法

Consul 是一个支持服务发现和配置共享的工具,以下是如何在 Windows 系统上启动 Consul 的详细步骤。通过以上步骤,您可以轻松在 Windows 系统上启动并运行 Consul。consul agent -dev -client <你的IPv4地址>,如果能看到 Consul 的 Web UI,则启动成功。,点击“编辑”,添加 Consul 的安装路径(如。在“高级”选项卡中,点击“环境变量”。的访问,以便正常使用 Web UI。保存后,在任意命令行窗口中输入。并回车,打开命令行窗口。

2025-08-25 18:54:25 405

原创 ASP.NET Core 中的构建者模式

理解ASP.NETCore 框架中的构建者模式后,可尝试自定义构建者类,模拟框架设计思路。示例:自定义一个 "订单构建者"csharp// 复杂对象:订单set;set;set;set;// VIP打9折// 构建者接口// 构建者实现// 返回自身,支持链式调用// 构建最终对象前的计算// 使用构建者.SetProduct("笔记本电脑", 5000m).Build();构建者模式是ASP.NET。

2025-08-25 15:20:14 774

原创 领域驱动中IUnitOfWork是干什么的

在领域驱动设计(DDD)中,(工作单元接口)是一种设计模式,主要用于。它的核心作用是将一组相关的数据库操作(如新增、修改、删除)封装为一个 “原子单元”,要么全部成功提交,要么全部失败回滚,避免部分操作成功导致的数据不一致问题。

2025-08-21 17:41:03 654

原创 CQRS 的优缺点

CQRS 的价值在于解决复杂系统中读写场景的差异化需求,通过分离职责实现针对性优化,但代价是系统复杂度和一致性管理成本的上升。因此,它更适合高并发、读写压力不均衡、业务逻辑复杂的大型系统,而对于简单应用则可能 "得不偿失"。实际使用中,常结合 DDD、事件驱动等思想,平衡其优势与挑战。

2025-08-21 16:52:19 280

原创 在.NET 8 中使用中介模式优雅处理多版本 API 请求

首先我们定义中介者和处理器的核心接口:data);data);data);在.NET 8 中使用中介模式处理多版本 API 请求,为我们提供了一种优雅、可扩展的解决方案。它不仅解决了 API 版本管理的核心问题,还带来了松耦合、易扩展、易维护等诸多优势。这种设计模式特别适合中大型 API 项目,能够有效应对业务需求的变化和系统的长期演进。通过集中化的中介者协调不同版本的交互,我们可以更专注于业务逻辑的实现,而不必过多关注版本间的依赖和兼容性处理。

2025-08-21 10:02:47 761

原创 软件开发:一场精密的生命构建

忽视任何一环,系统便如残缺的生命:架构薄弱则“骨质疏松”;唯有深刻理解并精心雕琢每一部分,让骨骼强健、经络通畅、肌肉有力、血液鲜活、皮肤润泽,方能构建出真正强大、灵动、持久的软件生命体。想象构建一个生命体:它需要支撑的骨骼、传导能量的经络、驱动行动的肌肉、维系生机的血液、感知世界的皮肤。软件开发亦是如此,它并非冰冷代码的堆砌,而是一场精密、有机的系统构建工程。如同骨骼为人体的形态、运动与生长提供基础框架,架构是软件系统的核心骨架。业务逻辑如同遍布周身的经络,虽不可见,却是驱动系统行为的核心脉络。

2025-08-11 17:31:58 337

原创 win11 命令禁用客户体验改善计划

若问题持续,需进一步排查其他系统服务或硬件兼容性问题。重启系统后再次检查事件查看器,确认。的条目,双击进入属性窗口。并回车打开服务管理器。启动本地组策略编辑器。服务,最后确认退出。在右侧策略列表中双击。

2025-08-01 15:15:07 500

原创 使用 SourceTree 合并多次提交:轻松实现批量 Cherry Pick

本文介绍使用SourceTree合并多个提交的方法:首先找到待合并提交的共同祖先节点,通过"变基"功能进入合并模式;然后选中最后一个提交,使用"squash"功能批量合并相关提交;接着编辑合并后的统一提交信息;最后将整合后的提交通过cherrypick应用到其他分支。这一操作能简化提交历史,提升跨分支代码管理效率,特别适合功能开发完成后统一提交到测试或生产分支的场景。

2025-07-24 11:14:57 619

原创 避坑:C# json反序列化为float精度丢失

场景推荐做法需要高精度计算使用decimal需要保留原始字符串格式使用或字符串不需要精度(如图形坐标)floatdouble可接受如需进一步处理高精度 JSON 数值(如科学计数法或超长小数),建议使用decimal或自定义进行转换。

2025-07-23 15:46:06 327

原创 C# Linq 左关联查询详解与实践

在 C# 开发中,Linq(Language Integrated Query)提供了强大的数据查询能力,尤其是在处理集合间的关联操作时。本文将详细解析 C# Linq 中的左关联查询,并通过实际案例说明其用法。

2025-07-15 14:23:01 452

原创 C# IIncrementalGenerator干点啥

在依赖项=》分析器=》项目生成g.cs,注意变更源生成器需要重新打开工程来刷新新生成的代码。

2025-07-08 16:07:11 282

原创 具体类型的不同,占用的字节大小

本文详细介绍了C#中常见数据类型的内存占用情况。值类型包括整数(sbyte、short、int、long等)、浮点(float、double、decimal)、布尔(bool)和字符(char),其字节大小固定(1-16字节)。引用类型(string、class、array等)在32位系统中占用4字节,64位系统占用8字节。结构体作为值类型,其大小为各字段之和并受内存对齐影响。文章还说明了dynamic和void等特殊类型,并通过表格总结了各类型字节大小,强调了解这些信息对内存优化和性能调优的重要性。

2025-06-17 17:28:11 857

原创 OWASP Top 10

OWASPTop10揭示2024年Web应用十大安全威胁:注入攻击、身份验证失效、敏感数据泄露、XXE注入、权限控制缺陷、安全配置错误、XSS跨站脚本、反序列化漏洞、组件已知漏洞及监控不足。这些风险可能导致数据泄露、权限提升和系统入侵,开发者需重点防范。(148字)

2025-06-17 16:37:34 1897

原创 ABP中的模块概念详解

ABP框架的模块化系统详解:ABP通过模块机制实现应用功能解耦,每个模块继承AbpModule类并定义明确的生命周期方法(如ConfigureServices、OnApplicationInitialization)。模块通过[DependsOn]特性声明依赖关系,支持分层结构设计和动态加载。核心优势包括:功能隔离、依赖管理、扩展性强(支持服务替换和实体扩展)。典型模块包含领域层、应用层、API层等项目,遵循单一职责原则。这种模块化设计是构建可维护、可扩展企业应用的基础设施,有效支持领域驱动设计和微服务架构

2025-06-16 14:24:16 318

原创 如何在ABP中定义实体、值对象和聚合根?

ABP框架中定义领域对象需遵循DDD原则:实体(Entity)继承Entity<TKey>基类,包含唯一标识和业务逻辑;值对象(ValueObject)通过[ComplexType]标记,重写Equals方法实现相等性比较;聚合根(AggregateRoot)作为唯一入口,维护业务规则和数据一致性。设计时应遵循聚合边界、封装不变性约束、使用工厂模式创建对象,并通过领域事件处理跨聚合逻辑。EF Core映射时需配置实体关系和值对象所有权,保持聚合轻量级并合理封装业务方法。

2025-06-16 14:18:54 377

原创 Nginx负载均衡功能

Nginx负载均衡功能解析:通过反向代理实现流量分发,支持四层/七། photo: 轮询、加权、最少连接等策略material,提供健康检查和高可用方案。核心配置包括定义upstream组、设置权重参数,可通过IP哈希实现会话保持。优化建议涉及连接数调整、请求分流,并需注意会话丢失等问题。实践表明合理配置Nginx负载均衡能有效提升系统性能和可用性,需根据业务场景选择合适策略并配合监控调优。

2025-06-16 09:46:10 873

原创 Redis的持久化功能

Redis提供RDB和AOF两种持久化方式:RDB通过定时快照保存数据,速度快但可能丢失最新数据;AOF记录写操作更安全但性能较低。Redis 4.0支持混合模式(RDB+AOF),结合两者优势。建议根据数据安全需求选择配置:高安全性场景可同时启用RDB+AOF,注重性能则可单独使用RDB。通过合理配置save参数和appendfsync策略,可平衡数据安全与系统性能。

2025-06-16 09:37:00 317

原创 rabbitmq 交换机、队列和消息概念

RabbitMQ 是一个功能强大的消息中间件,它采用发布-订阅模式进行消息传递。下面为你详细介绍 RabbitMQ 中交换机、队列和消息的核心概念。

2025-06-16 09:33:47 687

原创 C#实现RabbitMQ消息持久化

摘要:本文展示了使用C#实现RabbitMQ消息持久化的完整方案。通过RabbitMQ.Client库创建持久化交换机(ExchangeDeclare设置durable:true)、持久化队列(QueueDeclare设置durable:true)和持久化消息(BasicProperties.Persistent=true)。代码包含生产者和消费者示例,强调三者必须同时持久化才能确保消息不丢失,并指出持久化会带来性能开销。关键步骤包括:声明持久化组件、设置消息属性、通过NuGet安装客户端库(RabbitM

2025-06-16 09:13:28 222

原创 在C#中乐观锁的实现

C#中实现乐观锁的几种方法:1.版本号机制:使用Interlocked.CompareExchange原子操作检查版本号是否变化;2.时间戳机制:类似版本号,通过比较时间戳检测修改;3.ConcurrentDictionary:利用其线程安全的AddOrUpdate方法;4.数据库实现:在SQL语句中检查版本号字段。这些方法都通过冲突检测而非直接锁定来保证线程安全,适用于读多写少的并发场景。实现时需根据具体需求选择合适方案。

2025-06-13 16:14:14 521

原创 在C#中的乐观锁和悲观锁

C#中的乐观锁与悲观锁是两种并发控制策略,核心区别在于对数据冲突的处理方式。悲观锁(如lock关键字)提前锁定资源,适合写操作频繁场景,但可能导致性能瓶颈;乐观锁(如版本号机制)仅在提交时检查冲突,适合读多写少场景,能提高并发性能但需处理冲突。数据库中分别对应SELECT FOR UPDATE和版本号检查的实现方式。开发者应根据具体场景(如银行转账用悲观锁、电商库存用乐观锁)选择合适机制,权衡并发性能与冲突处理成本。

2025-06-13 15:56:05 748

原创 在C#中的锁

lock关键字:最简单易用的锁机制,适合大多数场景。Monitor类:提供了更多控制能力,适合需要等待/通知的场景。Mutex类:适合跨进程同步。Semaphore类:适合限制并发数量的场景。类:适合读多写少的场景。在实际开发中,可以根据具体需求选择合适的锁机制。

2025-06-13 15:02:13 776 1

原创 对称加密和非对称加密

对称加密优点:加密效率高,适合处理大量数据。缺点:密钥分发和管理复杂,安全性依赖于密钥的保密性。非对称加密优点:密钥分发简单,安全性高,支持身份认证和数字签名。缺点:加密和解密速度慢,不适合处理大量数据。在实际应用中,通常会结合使用对称加密和非对称加密,发挥各自的优势。例如,在SSL/TLS协议中,使用非对称加密进行密钥交换,然后使用对称加密进行数据传输,既保证了密钥的安全性,又提高了数据传输的效率。

2025-06-13 14:52:02 757

原创 在Windows上搭建Kubernetes集群

根据你的需求和环境选择合适的方案,前三种方案适合开发和测试,第四种方案适合生产环境。

2025-06-10 14:38:34 636

原创 .NET 中 Task 和 Thread 的根本区别

都用于实现多线程编程,但它们代表了不同的抽象层次和设计理念。理解它们的根本区别对于编写高效、可扩展的代码至关重要。的本质区别,结合具体场景合理选择,是编写高性能、可维护异步代码的关键。

2025-06-10 13:04:13 824

原创 .NET 异步编程的核心优势

摘要:.NET异步编程通过async/await关键字显著提升应用性能与用户体验,主要优势包括:1)提高I/O密集型应用吞吐量;2)避免UI线程阻塞;3)减少线程资源消耗;4)简化异步代码结构;5)统一错误处理机制;6)全面兼容现代框架。其适用于网络请求、数据库操作等I/O场景,以及需要保持UI响应的客户端应用。开发者需注意区分I/O密集型与CPU密集型任务,合理使用Task.Run,避免在不必要场景过度使用异步。该模型有效平衡了性能、资源利用和代码可维护性。

2025-06-10 11:28:53 856

原创 Redis 发布订阅(Pub/Sub)模式详解

Redis发布订阅(Pub/Sub)是一种消息通信模式,支持发布者向频道发送消息,订阅者接收特定频道的实时消息。核心功能包括:通过SUBSCRIBE订阅频道、PUBLISH发布消息、PSUBSCRIBE模式匹配订阅。该模式适用于实时聊天、事件通知等场景,特点是一对多通信、消息不持久化。Python示例展示了如何使用redis-py实现发布/订阅功能。需注意消息可能丢失、性能影响等问题,建议根据业务需求考虑Redis Streams等替代方案。

2025-06-10 11:22:50 924

原创 容器那个端口是对外暴露的

连接到 Docker 中运行的 Redis 容器有多种方式,取决于你的客户端环境和网络配置。根据你的具体场景选择合适的连接方式,确保网络配置和认证信息正确。8000:6379 其中8000是对外暴露的。

2025-06-10 11:18:19 923

原创 使用 Docker Compose 编排本地容器

通过这些配置,你可以高效地使用 Docker Compose 管理本地开发环境中的多个容器。Docker Compose 是一个用于定义和运行多容器 Docker 应用的工具。文件,你可以轻松地将多个本地容器组合成一个完整的应用。

2025-06-10 10:22:01 279

elasticsearch-9.1.3-windows-x86-64

elasticsearch-9.1.3-windows-x86_64

2025-08-29

查看 Loki 版本的方法取决于 Loki 的安装方式,以下是几种常见的查看方法: 二进制安装:如果是通过下载二进制文件安装的 Loki,可以在命令行中通过执行loki -version命令来查看版本

查看 Loki 版本的方法取决于 Loki 的安装方式,以下是几种常见的查看方法: 二进制安装:如果是通过下载二进制文件安装的 Loki,可以在命令行中通过执行loki -version命令来查看版本信息。例如,你下载了loki-3.2.1.x86_64.rpm并安装,那么可以在终端输入该命令查看版本。

2025-08-29

jaeger-2.9.0-windows-amd64.tar

jaeger-2.9.0-windows-amd64.tar

2025-08-29

windows consul安装包

cmd运行 consul agent -dev

2025-08-26

consul.demo

consul.demo 服务发现示例

2025-08-26

SourceTreeSetup-3.4.24.exe

SourceTreeSetup-3.4.24.exe

2025-08-21

api fox 官方安装包

api fox 官方安装包

2025-08-21

ChristmasTree.html

圣诞树

2024-12-25

Christmas.html

圣诞树html网页代码

2024-12-25

Christmas.py

python圣诞树代码动态3d

2024-12-25

开源项目源码,openapi接口转markdown文档

## 感谢JetBrains 支持 ![](/docs/jb_beam.png) [OpenSourceSupport](https://jb.gg/OpenSourceSupport) # swagger2md 假如你编写了一个基于OpenAPI3.0规范 的WebAPI现在正想着如何编写文档以便于他人更方便调用它,那么swagger2md可以帮助你 ## 功能特性 - 将swagger.json生成markdown文档 - 请求参数example展示 - 请求body json格式化 - 返回response json格式化 - 大纲展示 - 接口summary展示 - 接口remark展示 - 接口参数字段展示 - 接口reponse 字段展示 ## 软件架构(可选) .NET 6 ## 快速开始 open OpenAPI2MD.CommunityToolkit.sln with vs ### 依赖检查 dotnet restore <!-- 描述该项目的依赖,比如依赖的包、工具或者其他任何依赖项 --> ### 构建 dotnet build <!-- 描述

2024-12-25

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除