自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

初夏的阳光

菜鸟也有春天

  • 博客(22)
  • 收藏
  • 关注

原创 .Net 异常最佳做法

异常信息原因异常是易于滥用的那些构造之一。这可能包括不应该在应有的情况下引发异常或在没有充分理由的情况下捕获异常。还有一个引发错误异常的问题,它不仅无助于我们,而且会使我们困惑。另一方面,存在正确处理异常的问题。如果使用不当,异常处理会变得更糟。所以,在本文中,我将简单介绍一些有关引发和处理异常的最佳实践。展示如何抛出适当的异常可以为我们节省很多调试方面的麻烦。我还将讨论当我们想要查找错误时不良的异常处理如何引起误导。抛出异常何时抛出异常在很多情况下,抛出异常是有意义的,在这里,我将对其进行描述并讨

2020-08-06 17:34:50 251

原创 GRpc添加客户端的五种方式

随着微服务的发展,相信越来越多的.net人员也开始接触GRpc这门技术,大家生成GRpc客户端的方式也各不相同,今天给大家介绍一下依据Proto文件生成Rpc客户端的四种方式前提:需要安装4个Nuget包Google.Protobuf、Grpc、GRpc.Net.ClientFactory、GRpc.ToolsVS安装命令如下Install-Package Google.ProtobufInstall-Package GrpcInstall-Package GRpc.Net.ClientFac

2020-05-26 16:07:08 1221

原创 docker构建java镜像,运行镜像出现 no main manifest attribute, in /xxx.jar

主要是近期在构建一个镜像,在镜像构建成功后,运行一直提示"no main manifest attribute",但是还在想,是不是Dockerfile写错了,后来仔细检查了一下,发现是在pom文件下build节点下配置问题,修改配置后就解决了对应问题,下面是我修改后的build节点信息。本文主要是一个随笔,记录一下出现"no main manifest attribute"的解决办法。如有哪里讲得不是很明白或是有错误,欢迎指正。

2024-01-19 10:23:47 488 1

原创 SpringBoot+Redis实现接口级别缓存信息

近期因为一直在处理公司的老项目,恰好碰到产品说页面有一些信息展示慢,简单看了一下页面接口,发现查询的是系统中几张大表(数据量在千万级别),还会关联一些其他的表,导致接口性能极差,但是由于这些信息也不存在"及时性"这么一说,便想着通过接口缓存来控制。手动ps:可能很多人都会问为什么不用Spring自带的,而需要自己去写,主要原因还是这是一个老系统,压根找不全对数据进行修改、删除的地方。通过注解来标识需要缓存的接口,依据注解的内容去找到对应的建造者,通过建造者来找到具体去执行的类,最终达可扩展的效果。

2023-11-03 11:39:04 72

原创 Java替换RequestBody和RequestParam参数的属性

近期由于接手的老项目中存在所有接口中新增一个加密串来给接口做一个加密效果(项目历史原因,不方便上Jwt授权这套),所以就研究了一下Http请求链路,发现可以通过。主要思路就是通过获取Post中请求的输入流信息,解析输入流信息,按照对应的规则进行替换参数信息,最后将对应的流信息包装进行返回。去获取ServletRequest中参数的信息,并且定义对应规则,来实现替换参数。来达到获取和替换RequestParam中的参数信息,接下来我们通过。如有哪里讲得不是很明白或是有错误,欢迎指正。

2023-10-24 16:44:39 182

原创 Feign通过自定义注解实现路径的转义

SpringBoot通过自定义注解实现路径的转义

2022-06-27 20:14:30 267 1

原创 NetCore实现全局模型绑定异常信息统一处理

本文主要讲解NetCore如何使用中间件捕获模型绑定的异常信息场景在 .NET Core 中请求中,如果参数的类型错误,我们在控制器的定义的方法是不会执行的,当需要捕获模型绑定的异常信息时,需要使用ApiBehaviorOptions.,接下来通过一个小demo给大家讲解一下用法实现代码 public static void ConfigureModelBindingExceptionHandling(this IServiceCollection services) { .

2021-12-27 22:45:31 555

原创 使用zipKin构建NetCore分布式链路跟踪

本文主要讲解使用ZipKin构建NetCore分布式链路跟踪场景因为最近公司业务量增加,而项目也需要增大部署数量,K8S中Pod基本都扩容了一倍,新增了若干物理机,部分物理机网络通信存在问题,导致部分请求打入有问题的物理机时总会出现超时的情况,由于之前系统中没有使用链路跟踪,导致排查问题比较慢,所以就去研究了市面上的链路框架,结果发现了ZipKin这款比较轻量级的链路跟踪框架。实例代码本文日志系统采用Exceplesstion示例代码请求链路为SimpleZipkin(网关服务)—>W.

2021-09-17 22:11:10 236

原创 一文带你了解.Net读写锁

本文主要讲解.Net基于ReaderWriterLockSlim讲解读写锁基础概念读写锁是一个具有特殊用途的线程锁,适用于频繁读取且读取需要一定时间的场景,共享资源的读取操作通常是可以同时执行的,普通的互斥锁不管是获取还是修改操作无法同时执行,如果多个线程为了读取操作而获取互斥锁,那么同一时间只有一个线程可以执行读取操作,频繁读取的场景下回对吞吐量造成影响读写锁把锁分为读取锁和写入锁,线程可以根据对共享资源的操作类型获取读取锁还是写入锁,读取锁可以被多个线程同时获取,写入锁不可以被多个线程.

2021-07-05 20:42:16 188

原创 一文带你了解.Net信号量

本文主要讲解.Net基于Semaphore带大家了解信号量信号量举例大家去银行去银行取钱,互斥锁管理的时一个柜台是否正在处理业务,而信号量管理的是整个柜台是否正在处理业务,每当有一个柜台处理完成之后,A大堂经理则进行叫号喊下一位进行处理业务,B大堂经理则对进来的客户进行接待,当柜台全部都在办理业务时,新来的办理业务者则需要进行等待信号量的基础概念信号量是一个具有特殊用途的线程同步对象,相比互斥锁只有两个状态(未被获取/已被获取),信号量内部使用一个数值记录可用的数量,每个线程可以通过增加和减少数.

2021-07-05 20:10:07 380

原创 一文带你了解.Net混合锁和lock语句

本文主要讲解.Net基于Monitor.Enter和lock实现互斥锁Monitor.Enter实现相比前面的锁来说,混合锁的性能更高,任何引用类型的对象都可以做为锁对象,不需要事先创建指定类型的实例,并且设计的非托管的资源由.Net运行时自动释放,不需要手动调用释放函数,获取和释放混合锁需要使用System.Threading.Monitor类中的函数。使用Monitor使用混合锁的例子如下:using System;using System.Threading;namespace Mix.

2021-06-22 22:33:46 487

原创 一文带你了解.Net互斥锁

本文主要讲解.Net基于Threading.Mutex实现互斥锁基础互斥锁实现基础概念:和自旋锁一样,操作系统提供的互斥锁内部有一个数值表示锁是否已经被获取,不同的是当获取锁失败的时候,它不会反复进行重试,而且让线程进入等待状态,并把线程对象添加到锁关联的队列中,另一个线程释放锁时会检查队列中是否有线程对象,如果有则通知操作系统唤醒该线程,因为获取锁的线程对象没有进行运行,即使锁长时间不释放也不会消耗CPU资源,但让线程进入等待状态和从等待状态唤醒的时间比自旋锁重试的纳秒级时间要长windows.

2021-06-16 23:09:02 272

原创 一文带你了解.Net自旋锁

本文主要讲解.Net基于Thread实现自旋锁的三种方式###基于Thread.SpinWait实现自旋锁实现原理:基于Test–And–Set原子操作实现使用一个数据表示当前锁是否已经被获取 0表示未被索取,1表示已经获取 获取锁时会将_lock的值设置为1 然后检查修改前的值是否等于0,优点:不使用Thread.SpinWait方法,重试的方法体会为空,CPU会使用它的最大性能来不断的进行赋值和比较指令,会浪费很大的性能,Thread.SpinWait提示CPU当前正在自旋锁的循环中,可.

2021-06-15 22:56:45 147

原创 重新领略设计模式之美

本文主要讲解如何设计模式的一些优缺点和适用场景以及一些概念信息首先我们看一下设计模式的总览接下来我们开始逐个分析每个设计模式的优缺点和概念单例模式概念:保证一个类仅有一个实例,并提供一个访问它的全局访问优点:提供了对唯一实例的受控访问/允许可变数目的实例/避免对共享资源的多重占用缺点:扩展麻烦单例类的职责过重,在一定程度上违背了“单一职责原则”适用场景需要频繁实例化然后销毁的对象有状态的工具类对象。频繁访问数据库或文件的对象。工厂模式概念:定义一个用于.

2021-05-23 17:04:03 82

原创 C#通过rabbitmq实现定时任务(延时队列)

本文主要讲解如何通过RabbitMQ实现定时任务(延时队列)环境准备需要在MQ中进行安装插件 地址链接插件介绍地址:https://www.rabbitmq.com/blog/2015/04/16/scheduling-messages-with-rabbitmq/使用场景作为一个新的预支付订单被初始化放置,如果该订单在指定时间内未进行支付,则将被认为超时订单进行关闭处理;电商系统中应用较多,用户购买商品产生订单,但未进行支付,订单产生30分钟内未支付将关闭订单(且满足该场景数量庞大),不可能.

2021-04-26 17:29:40 303

原创 AutoMapper源码解析

研究AutoMapper源码前,我们先来看一下AutoMapper的作用官网解释:AutoMapper是一个简单的小程序库,旨在解决看似复杂的问题-摆脱将一个对象映射到另一个对象的代码 解释首先一个简单的使用AutoMapper方法演示ar config = new MapperConfiguration(cfg => cfg.CreateMap<ModelObject, ModelDto>() ); .

2021-01-31 15:42:27 477

原创 .NetCore依赖项注入:生命周期和最佳做法

DIP允许您将两个类解耦,否则它们会紧密耦合,这有助于提高可重用性和更好的可维护性

2020-11-17 22:39:07 2210

原创 .net core Configuration对象

前因:最近在阅读.net core源码,发现关于Configuration介绍的文档都比较多,但是都比较杂乱,(微软文档太官方),所以写下一些自己的感想主要通过三种使用情况来介绍Web应用程序使用控制台应用程序使用库类使用需要注意的点,假如我同时配置多个配置文件,程序使用的是最后加载的配置文件Web应用程序使用首先简述一下web主机创建配置对象的过程public class Program{ public static void Main(string[] args) .

2020-09-10 17:42:01 509

原创 GRpc异常处理Interceptors

全局错误处理服务端微软已经实施了Interceptors,它们类似于Filter或Middlewares在ASP.NET MVC的核心或的WebAPI,它们可以用于全局异常处理,日志记录,验证等。这是服务器端Interceptor自己的实现,Continuation是必须等待的Task,然后,如果引发了任何异常,则可以根据所获得的异常来控制RpcException和关联的StatusCodeusing Grpc.Core;using Grpc.Core.Interceptors;using Mic

2020-06-29 22:07:52 2341

原创 C#上下文管理

介绍:上下文的声明周期开始于实例化,结束于垃圾回收器回收并释放现有流行方法使用using来操作上下文(try/finally) 在使用上下文的过程中谨记一个原则:一个请求对应一个上下文 下面简单介绍三种使用上下文的方式 1、Using Patten 优点:自动释放上下文 缺点:不能在应用程序中共享上下文,代码复用性不高Using(v...

2020-05-26 16:09:06 669 1

翻译 C# 异步编程小技巧介绍

C#中异步/等待模式的出现引入了编写良好且可靠的并行代码的新方法,但是,随着创新不断发生,它也引入了将许多的的新方法。很多时候,当尝试使用async / await解决多线程问题时,程序员不仅不解决旧问题,还创建新的问题,当死锁,饥饿和竞争条件仍然存在时,甚至更难找到它们。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QKJUh4Kp-1590373590260)(https://img2020.cnblogs.com/blog/1373819/202005/1373819

2020-05-25 10:29:36 232

翻译 双向流传输和ASP.NET Core 3.0上的gRPC简介

原文相关 原文作者:Eduard Los 原文地址:https://medium.com/@eddyf1xxxer/bi-directional-streaming-and-introduction-to-grpc-on-asp-net-core-3-0-part-2-d9127a58dcdb Demo地址:https://github.com/f1xxxer/CustomerGrpc现...

2020-04-13 21:50:19 589

空空如也

空空如也

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

TA关注的人

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