自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Taro框架完美使用Axios

前言众所周知,在H5前端开发中,axioshttp库几乎是必选。大部分人都对它的使用非常熟悉。然而在小程序开发中,axios怎么没法用,需要使用对应平台提供的http接口,如微信小程序的wx.request,在这时,自然不需要也无法使用axios,这一切都看似没毛病,实则有一大痛点:H5项目基于axios封装的一些通用类,在小程序开发中不能使用,不同的项目不同的框架,可能都要封装一遍,无疑增大维护成本,而且由于封装的效果不一致,团队也存在更多的学习成本。门面模式上面的痛点有一种设计模式可以很好的解决,

2022-07-21 22:36:20 1684 1

原创 【初级算法】删除排序数组中的重复项

给你一个 升序排列 的数组 ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。由于在某些语言中不能改变数组的长度,所以必须将结果放在数组nums的第一部分。更规范地说,如果在删除重复项之后有 个元素,那么 的前 个元素应该保存最终结果。将最终结果插入 的前 个位置后返回 。不要使用额外的空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。判题标准:系统会用下面的代码来测试你的题解:如果所有断言都通

2022-06-01 19:19:30 300

原创 Jwt隐藏大坑,通过源码揭晓

前言JWT是目前最为流行的接口认证方案之一,有关JWT协议的详细内容,请参考:https://jwt.io/introduction今天分享一下在使用JWT在项目中遇到的一个问题,主要是一个协议的细节,非常容易被忽略,如果不是自己遇到,或者去看源码的实现,我估计至少80%的人都会栽在这里,下面来还原一下这个问题的过程,由于这个问题出现有一定的概率,不是每次都会出现,所以才容易掉坑里。集成JWT在Asp.Net Core中集成JWT认证的方式在网络上随便一搜就能找到一堆,主要有两个步骤:在IOC容

2022-05-25 00:18:07 1088 1

原创 跨平台.NET MAUI框架 正式版GA发布

借助 .NET MAUI,您可以从单个代码库构建适用于 Android、iOS、macOS 和 Windows 的本机应用程序,并使用与在 .NET 中实践的相同的生产力模式。.NET MAUI 的精简且解耦的 UI 和布局体系结构以及单个项目功能使您能够专注于一个应用程序,而不是同时处理多个平台的独特需求。借助 .NET 6,我们不仅为 Android 提供了性能改进,而且还为整个平台目标提供了性能改进。

2022-05-24 10:19:49 1371 1

原创 这个设计原则,你认同吗?

前言我们都知道依赖注入的方式常见的主要有三种构造函数注入属性注入接口注入在大名鼎鼎的Spring框架中大量使用属性注入的方式,属性注入的方式写起来那是真的爽;而在Asp.NetCore中则不支持属性注入,如果不使用第三方库,我们就只能在构造函数上写上一堆参数,比较麻烦,有些人是非常讨厌这种注入方式,选择使用第三方IOC框架。思考一个问题Asp.Net Core框架哪哪都牛逼,可偏偏不支持很多人崇尚的属性注入呢?如果你还在期待什么时候支持这一特性,可能会让你失望了。但也不排除社区呼声很高的情

2022-05-22 23:38:15 127

原创 干掉RedisHelper,请这样用分布式缓存

前言我们在项目中使用Redis时通常是写一个单例模式的RedisHelper静态类,暴露一些常用的Get、Set等操作,在需要使用地方直接RedisHelper.StringGet(xx,xx)就可以了,这样虽然简单粗暴地满足我们对Redis的所有操作需要,但是这在Asp.Net Core的项目显得不是那么优雅了。首先你的RedisHelper静态类无法使用Asp.Net Core容器,又如何优雅的通过依赖注入获取IConfiguration中的配置项呢?既然我们使用Asp.Net Core这么优秀的框架

2022-05-19 23:55:03 677

原创 HttpContext.TraceIdentifier那严谨的设计

前言Asp.Net Core中有一个不受人重视的属性HttpContext.TraceIdentifier,它在链路追踪中非常有用,下面是官方的定义:在项目中一般会将该字段输出到每一条日志中,也可以将此Id作为通用响应字段返回前端,后续可以根据该属性和日志匹配,快速定位整个链路日志。在本地开发时我通常观察到该值的格式大概如下长这个样子0HLEACIU86PT6:0000000D,在生产环境中查看日志时,却不是这种格式,而是Guid格式,虽然都是唯一标识,都能满足我的需要,但是为什么会产生这一差

2022-05-17 23:13:48 617

原创 字符串拼接这个隐藏大坑,我表示不服~

前言先看写个简单的代码,看看你能不能答对// See https://aka.ms/new-console-template for more informationConsole.WriteLine("Hello, World!");string v1 = null;string v2 = null;var v3 = v1 + v2;Console.WriteLine();请问上面这段代码v3的值是什么?A:nullB:string.EmptyC:异常请读者好好思考一下再往下

2022-05-13 23:31:02 177

原创 Asp.Net Core 7 preview 4 新特性--限流中间件

前言限流是应对流量暴增或某些用户恶意攻击等场景的重要手段之一,然而微软官方从未支持这一重要特性,AspNetCoreRateLimit这一第三方库限流库一般作为首选使用,然而其配置参数过于繁多,对使用者造成较大的学习成本。令人高兴的是,在刚刚发布的.NET 7 Preview 4中开始支持限流中间件。UseRateLimiter尝鲜安装.NET 7.0 SDK(v7.0.100-preview.4)通过nuget包安装Microsoft.AspNetCore.RateLimiting创建.Net

2022-05-12 23:14:58 448

原创 AspNetCore开源中间件-VueRouterHistory

前言用过VueRouter路由组件的应该都知道,VueRouter有hash和history两种模式。hash模式会在url中插入#,history模式下url则看上去更加简洁美观。如果想要支持history模式则必须要后端服务进行配合。常用后端服务器配置方式请参考 后端配置例子后端配置例子注意:下列示例假设你在根目录服务这个应用。如果想部署到一个子目录,你需要使用 Vue CLI 的 publicPath 选项 (opens new window)和相关的 router base property

2022-05-09 23:09:21 394

原创 AspNetCore7.0源码解读之UseMiddleware

Use​Middleware​Extensions前言本文编写时源码参考github仓库主分支。aspnetcore提供了Use方法供开发者自定义中间件,该方法接收一个委托对象,该委托接收一个RequestDelegate对象,并返回一个RequestDelegate对象,方法定义如下:IApplicationBuilder Use(Func<RequestDelegate, RequestDelegate> middleware);委托RequestD

2022-05-07 21:02:51 548

原创 AsyncLocal<T>在链路追踪中的应用

前言在项目生产中日志的记录是必不可少的,在.net项目中,要说日志组件,log4net绝对可有一席之地,随着公司业务的发展,微服务则必定无可避免。在跨服务中通过日志进行分析性能或者排查故障点,如何快速定位日志尤为关键。链路追踪技术的出现正是解决这些痛点的。分布式链路追踪需要收集单次请求所经过的所有服务,而且为了知道请求细节,还需要将具体的业务日志进行串联,而这一切的基础就是要通过一个traceid从头传到尾,相当于将该次请求过程产生的所有日志都关联其traceid,事后排查问题只需要知道traceid,

2022-04-28 23:56:54 248

原创 Enum枚举类型实战总结,保证有用。

一般在我们开发时如果能使用枚举罗列的,一般都会定义一个枚举类型。将枚举类型作为方法的参数,可以方便的进行调用,给我们带来不少的遍历,当然有时候它还不如直接用一个int类型带来,带来一定灵活性。但只要能满足业务咱们就怎么方便怎么来吧。基本使用我们业务中会经常遇到订单状态的枚举,它罗列出了所有订单状态的可能值,下面是我刚刚编的一个订单状态枚举public enum OrderStatus{    /// <summary&gt

2022-04-24 23:51:36 791

原创 使用aspnetcore前后端分离开发,你一定要知道这个。

前言用过Vue单页面应用开发的,一定都知道Vue-router这个路由组件,它支持hash和history两种模式。HTML5 History 模式vue-router 默认 hash 模式 —— 使用 URL 的 hash 来模拟一个完整的 URL,于是当 URL 改变时,页面不会重新加载。如果不想要很丑的 hash,我们可以用路由的 history 模式,这种模式充分利用 history.pushState API 来完成 URL 跳转而无须重新加载页面。

2022-04-22 00:01:15 3276

原创 C# 11的这个新特性-原始字符串文本 我等了太久了

前言在日常开发中我们经常会将JSON、XML、HTML、SQL、Regex等字符串拷贝粘贴到我们的代码中,而这些字符串往往包含很多的引号",我们就必须将所有引号逐个添加转义符\进行转义。这个转义十分麻烦,且容易出错,而当我们们需要替换这些字符串时,重新粘贴进来的文本仍需要再次进行转义,简直让人崩溃。在我的工作中经常会遇到这么一个场景,对于某核心业务的方法,业务执行前一般会进行日志输出参数对象(Json格式),这样可在业务出现故障时追溯到当时的参数值,有利于事后补偿或复现bug等。假设故障发生了,我从日

2022-04-20 23:27:37 1952

原创 AspNetCore配置多环境log4net配置文件

前言在之前的文章中有讲到AspNetCore多环境配置文件的应用,我们根据自己多种环境分别配置多个appsettings.$EnvironmentName.json文件。在实际的开发中我们可能会遇到不只一个配置文件,如当我们使用log4net日志库时,喜欢使用单独的log4net.config配置文件。并且我们还遇到不同环境下的配置文件还存在差异。这时我们可能可以效仿appsettings.json多环境配置的风格实现多环境配置文件。配置log4net新建Web项目安装Microsoft.Ext

2022-04-18 23:38:32 1692

原创 ASP.NET和ASP.NETCore多环境配置对比

前言多环境配置应该都很熟悉了,最为常见的环境便是Debug和Release,例如下图是新建的一个asp.net项目,配置文件展开共有三个文件组成有些开发者从来没了解过Web.Debug.config和Web.Release.config,始终是一个Web.config文件改来改去来切换不同的配置,但凡有点追求都不能忍受这种煎熬。asp.net下的多环境配置双击打开Web.Debug.config和Web.Release.config任何一个,看看里面的内容。Web.Debug.config&

2022-04-18 19:12:52 266

原创 ASP.NETCore统一处理404错误都有哪些方式?

###当未找到网页并且应用程序返回 404 错误时,ASP.NET Core MVC 仅呈现通用浏览器错误页面,如下图所示###这不是很优雅,是吗?###我们平时看到的404页面一般是这样的###还有这样的###试了下京东,地址不存在的时候是会重定向到首页##下面就来演示下ASP.NET Core中如何实现这种自定义的404页面处理。新建项目 ASP.NET Core MVC(WebApi处理方式也一样)####新建好的项目直接运行的效果####随便输入一个地址 /test404

2022-04-14 21:35:16 775

原创 发布nuget包的正确姿势---cicd自动打包发布nuget包

最轻便的发布nuget包方式,方便cicd自动打包发布nuget包首先新建项目项目名随便取,这里就叫它GuiH.ClassLibrary默认即可,需要改目标版本时,等创建好再改项目创建好了随便写个接口方法namespace GuiH.ClassLibrary{ public class Class1 { public static void Test() { Console.WriteLine("Hello Nug

2022-04-14 21:33:21 484

空空如也

空空如也

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

TA关注的人

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