- 博客(151)
- 资源 (13)
- 收藏
- 关注
原创 docker (56) Recv failure: Connection reset by peer
docker 运行一个spring boot的api接口项目,在虚拟机上测试:报错:(56) Recv failure: Connection reset by peer。
2024-02-21 17:11:33
773
原创 vue前端项目命令框输入npm run serve报error:03000086:digital envelope routines::initialization error错误
vue前端项目命令框输入npm run serve报error:03000086:digital envelope routines::initialization error错误。也可以执行:export NODE_OPTIONS=--openssl-legacy-provider。然后再执行:npm run serve。
2024-02-02 09:30:00
541
原创 supervisorctl重启服务
其中,program配置指定了进程的名字,command指定了启动脚本的路径,autostart和autorestart则表示自动启动和自动重启。startretries指定了尝试启动应用程序的次数,user指定了应用程序运行所用的用户,directory指定了应用程序所在的工作目录,stdout_logfile和stderr_logfile分别指定了应用程序的标准输出和标准错误输出的日志文件。supervisorctl可以帮助我们在Linux服务器上管理和监控运行在后台的进程,包括自动重启服务。
2024-01-29 18:02:34
1488
原创 测试 ASP.NET Core 中间件
正常情况下,中间件会在主程序入口统一进行实例化,这样如果想单独测试某一个中间件就很不方便,为了能测试单个中间件,可以使用单独测试。
2024-01-16 18:25:48
604
原创 .Net Core 使用 AspNetCoreRateLimit 实现限流
上一篇文章介绍过使用.NET 7 自带的中间件可以实现简单的Api限流,但是这个.NET 7以后才集成的中间件,如果你使用的是早期版本的.NET,可以使用第三方库AspNetCoreRateLimit实现Api限流。AspNetCoreRateLimit 是一种 ASP.NET Core 速率限制解决方案,旨在根据 IP 地址或客户端 ID 控制客户端可以向 Web API 或 MVC 应用发出的请求速率。
2024-01-16 15:55:36
1752
原创 asp.net core项目发布到 iis上
我们都知道与传统asp.net 项目比较,ASP.NET Core则完全不同,它并不是运行在IIS的工作进程中,而是独立运行的。它运行于控制台应用程序之中,控制台中则运行了Kestrel Web服务器组件。Kestrel作为一款.NET Web服务器的实现,它在吞吐量性能方面做了很多工作。它可以快速将来自网络的请求接入到应用程序中,但是它仅仅是一个最基本的Web服务器。它没有类似IIS的Web管理服务,也没有IIS那么多的功能。
2024-01-12 18:21:19
712
原创 .NET core 中的Kestrel 服务器
什么是Kestrel?Kestrel 是一个跨平台的Web服务器,会默认在ASP.NET Core 项目模板中对其进行配置。未使用 IIS 托管时,ASP.NET Core 项目模板默认使用 Kestrel。在下面的模板生成的Program.cs中,方法在内部调用。
2024-01-12 11:40:46
2419
原创 .NET 反射的介绍和简单应用
反射还支持的更高级的行为,能在运行时动态创建新类型,并且对这些新类型的操作进行调用。发现信息(如名称、事件处理程序的数据类型、自定义特性、声明类型以及事件的反射的类型),并添加或删除事件处理程序。来定义和加载程序集,加载程序集清单中列出的模块,以及在此程序集中定位一个类型并创建一个它的实例。发现信息(如名称、数据类型、声明类型,反射的类型和属性的只读或可写状态),并获取或设置属性值。发现信息,如参数的名称、数据类型、参数是输入参数还是输出参数以及参数在方法签名中的位置。发现信息,如名称、访问修饰符(如。
2024-01-11 17:26:33
1164
原创 swagger Actions require an explicit HttpMethod binding for Swagger/OpenAPI 3.0报错处理
相关的Attribute。正常逻辑来说那就给每个Action添加HttpMethod呗,但是往往情况就出现在不正常的时候。因为项目是迁移的老项目,先不说私自改了别人代码带来的甩锅问题,公司的WebApi项目很多,这意味着Action很多,如果一个项目一个项目的去找Action添加HttpMethod可是一个不小的工作量,而且开发人员工作繁忙,基本上不会抽出来时间去修改这些的,因为这种只是Swagger不行,,否则就报这一大堆错误。这里的HttpMethod其实就是咱们常用。
2024-01-04 16:59:39
730
原创 .NET core 自定义过滤器 Filter 实现webapi RestFul 统一接口数据返回格式
但是这存在一个问题,不是所有接口会按照定义的数据格式返回,除非每个接口都返回我们自定义的类,这种实现起来不太现实。我们需要不管接口定义的返回类型是什么,最后的结果都是统一的数据格式,需要实现这个功能就需要自定义一个过滤器来实现。附上 ApiResponse.cs IApiResponse.cs 代码。之前写过使用自定义返回类的方式来统一接口数据返回格式,时,把这个响应结果拿出来,再判断是不是。类型来确定这个返回结果是否包装过。没包装的话就给包装一下,就这么简单。在代码中进行判断,当响应的类型是。
2023-12-21 15:41:09
1336
1
原创 .net 隐式自定义类型转换运算符 static implicit operator
public static implicit operator T1(T2 t) static implicit operator static implicit operator static implicit operator
2023-12-21 14:47:42
647
原创 .Net Core webapi RestFul 统一接口数据返回格式
json对象中data是返回的实际结果对象,可以是一个对象、一个list、一个字符串、一个数字......分别实现类带有泛型的 ApiResponse 类和 ApiResponse 类。的隐式转换,所以就完美解决这个问题,大大减少了代码量。注意在泛型类中,使用运算符重载,实现了。中,我们定义了一个运算符重载,实现了。但是整体的json格式要以上面的为准。2、使用过滤器(Filter)实现。类型呀,这不是类型不一致吗?1、自定义一个统一返回类。但这接口的返回值明明是。创建对应的接口和实现类。
2023-12-21 14:02:59
2155
1
原创 .Net Attribute 特性 自定义特性(二)
在实际开发中,我们经常看到如MVC中标记在方法上的 [HttpGet] [HttpPost][HttpDelete][HttpPut] ,序列化时标记在类上的 [Serializable] ,使用EF标记属性的 [Key] ,使用特性的地方随处可见。二次升级已完成,看看代码,瞬间心情舒畅。细心的朋友会发现,校验返回的都是true跟false,每次遇到校验不通过的字段后下面的都不再校验了,想要返回所有未校验通过的字段,并告诉调用者,一次性把所有字段都按照格式填好,这样才是我们想要的效果。
2023-12-20 11:40:51
1094
原创 .Net Attribute 什么是特性、预定义特性使用(一)
特性(Attribute)是用于在运行时传递程序中各种元素(比如类、方法、结构、枚举、组件等)的行为信息的声明性标签。您可以通过使用特性向程序添加声明性信息。一个声明性标签是通过放置在它所应用的元素前面的方括号([ ])来描述的。特性(Attribute)用于添加元数据,如编译器指令和注释、描述、方法、类等其他信息。在.Net 框架提供了两种类型的特性预定义特性和自定义特性。在.net框架内提供了三种预定义特性,经常使用特性或对特性有了解的朋友肯定见到过或用过。obsolete预定义特性。
2023-12-19 17:55:42
900
原创 .NET 自定义中间件 判断是否存在 AllowAnonymousAttribute 特性 来判断是否需要身份验证
【代码】.NET 自定义中间件 判断是否存在 AllowAnonymousAttribute 特性 来判断是否需要身份验证。
2023-12-18 17:26:14
832
原创 .NET Core中鉴权 Authentication Authorization
Authentication:鉴定身份信息,例如用户有没有登录,用户基本信息Authorization:判定用户有没有权限使用框架提供的Cookie鉴权方式1.首先在服务容器注入鉴权服务和Cookie服务支持2.注册鉴权和授权中间件,用于在管道中调用拦截校验鉴权和授权3.在控制器引入特性 [Authorize] ,调用登录接口时使用HttpContext.SignInAsync()写入鉴权信息
2023-12-18 16:48:16
771
原创 用一个简单的例子教你如何 自定义ASP.NET Core 中间件(一)
中间件是一种装配到应用管道以处理请求和响应的软件。 每个组件:选择是否将请求传递到管道中的下一个组件。可在管道中的下一个组件前后执行工作。请求委托用于生成请求管道。 请求委托处理每个HTTP请求。一句话总结:中间件是比筛选器更底层,更上游的面向切面技术,其性能最高,可处理的应用范围远比过滤器广,如实现网关,URL转发,限流等等。
2023-12-18 15:42:21
396
原创 用一个简单的例子教你如何 自定义ASP.NET Core 中间件(二)
如果没有实现 InvokeAsync 方法运行会报错:“找不到'Hero.Jwt.MyMyMiddleware'类型的中间件的公共'Invoke'或'InvokeAsync'方法。上一章已经说过了,中间件是一种装配到应用管道以处理请求和响应的软件。新建一个静态类:MyMiddlewareExtensions。公共方法,参数必须保持一致,它是中间件执行的入口。新建一个类:MyMiddleware。必须要在构造函数里面申明请求委托。自定义中间件必须要实现。
2023-12-18 15:39:32
386
原创 .NET core JWT身份认证实现
首先我们知道jwt中一定会有的字段有Issuer,Audience,另外jwt有过期时间,所以要有代表生命周期的Lifetime,表示续期的RenewalTime,然后是头字段,是否验证失效时间,是否验证签名等,于是就有了如下结构. JwtConfig.cs在Hero.Jwt中定义一个叫做JwtConfig的类,表示针对jwt的所有配置信息,ciset;set;/// 签名keyset;/// 生命周期set;/// 续期时间set;/// 是否验证生命周期set;/// 验证头字段set;
2023-12-15 18:30:02
1271
原创 垃圾回收 (GC) 在 .NET Core 中是如何工作的?(二)
接上一篇文章GC 会分配堆段,其中每个段都是一系列连续的内存。置于堆中的对象归类为 3 个代系之一:0、1 或 2。代系可确定 GC 尝试在应用不再引用的托管对象上释放内存的频率。编号较低的代系会更加频繁地进行 GC。对象会基于其生存期从一个代系移到另一个代系。随着对象生存期延长,它们会移到较高代系。如前所述,较高代系进行 GC 的频率较低。短期生存的对象始终保留在第 0 代中。例如,在 Web 请求存在期间引用的对象的生存期较短。应用程序级别单一实例通常会迁移到第 2 代。
2023-12-14 15:23:41
1133
原创 垃圾回收 (GC) 在 .NET Core 中是如何工作的?
提起GC大家肯定不陌生,但是让大家是说一下GC是怎么运行的,可能大多数人都不太清楚,这也很正常,因为GC这东西在.NET基本不用开发者关注,它是依靠程序自动判断来释放托管堆的,我们基本不需要主动调用Collect()释放内存,只需要注意对非托管资源进行及时释放就行。,其中每个段都是一系列连续的内存。置于堆中的对象归类为 3 个代系之一:0、1 或 2。代系可确定 GC 尝试在应用不再引用的托管对象上释放内存的频率。编号较低的代系会更加频繁地进行 GC。对象会基于其生存期从一个代系移到另一个代系。
2023-12-14 11:45:26
1453
原创 .NET如何调用Web Service服务?
我们知道,现在用Web Service提供对外接口的项目其实很少了,现在大部分应用都是b/s端的了,WebApi的优势自然而然就体现出来了,可自定义请求头部信息、可对数据进行缓存、使用json字符串让开发更加灵活。那么Web Service是不是就无用了,其实也不是,Web Service基于XML格式,用于内部之间的系统通讯还是比较稳定的。输入webservice服务地址,点击运行,如果webservice服务正确可以解析所有对外方法,给引用的服务起个名字。就用之前搭建的webservice来测试,
2023-12-13 10:49:37
1007
原创 HTTP响应状态码有哪些?
206 Partial Content”是 HTTP 分块下载或断点续传的基础,在客户端发送“范围请求”、要求获取资源的部分数据时出现,它与 200 一样,也是服务器成功处理了请求,但 body 里的数据不是资源的全部,而是其中的一部分。它不具有通常的跳转含义,但可以理解成“重定向已到缓存的文件”(即“缓存重定向”)。“501 Not Implemented” 表示客户端请求的功能还不支持,这个错误码比 500 要“温和”一些,和“即将开业,敬请期待”的意思差不多,不过具体什么时候“开业”就不好说了。
2023-12-12 17:34:38
906
原创 .NET core 搭建一个跨平台的 Web Service
以前搭建的webservice 都是基于.NET fromwork的,我们知道.NET fromwork是非跨平台的,只能部署在iis上,今天教大家用.NET core搭建一个可跨平台的Web Service。.NET 5会生成一个Startup类,.NET 6以上版本已经把Startup类取消了,直接把相关服务写在Program里面就行。选一个.net框架,我这里选择的是 .NET 5,也可以选择.NET 6 7... 都是一样的。在Service文件夹下添加一个接口和一个实现类。
2023-12-12 15:00:29
1330
原创 有了 webapi 后 webService 被淘汰了吗?
该服务协议为SOAP(简单对象访问协议),说白了就是HTTP POST的一个专用版本,当时将header中的一个属性Content-Type设置为text/xml,那么你将要传输的文本会被格式化为xml形式,乍一看,XML?好老哦,确实,现在是JSON的天下,但是XML以其多年的运行经验为其带来了可靠性的保障,并且xml也能够传输复杂的数据模型。Web API的客户端系统(调用者)和服务系统(提供者)彼此独立,调用者可以轻易的使用不同的语言(Java,Python,Ruby等)进行API的调用。
2023-12-12 10:45:18
1244
原创 ESP32智能小车+PS2无线遥控器+麦克纳姆轮+microPython
【代码】ESP32智能小车+PS2无线遥控器+麦克纳姆轮+microPython。
2023-10-26 15:05:48
1105
2
原创 ESP32+PS2 无线手柄转接板+microPython
原文链接:https://www.jianshu.com/p/30723e5624ae。以下为我修改后的代码,方便了调用。可以保存为ps2.py,以备调用。
2023-10-24 10:33:20
1098
1
原创 详解ESP32模块的引脚分配图和定义
GND是ESP32开发板的地引脚。ESP32具有2个UART接口,即UART0和UART2,可提供异步通信(RS232和RS485)和IRDA支持,并以最高5Mbps进行通信。同样,GPIO36(VP)和GPIO39(VN)引脚也是ADC超低噪声前放大器的组成部分,这有助于配置Pre-Amp的采样时间和噪声。开发板有25个由脉冲宽度调制(PWM)控制器控制的PWM引脚的通道(几乎所有GPIO引脚)。得益于ESP32的引脚多路复用功能,这意味着单个GPIO引脚可以充当ADC输入/DAC输出/触摸引脚。
2023-09-21 13:53:36
42317
5
原创 .Net IDE智能提示汉化(.Net6、AspNetCore)
如下示例生成.net6的原始内容在前的zh-cn本地化包,并使用---------分隔原文和本地化内容,生成完成后的包路径会输出到控制台。可以通过查看更多的构建参数信息。
2023-09-18 14:00:28
762
原创 ASP.NET Core 官方学习文档
ASP.NET Core MVC :ASP.NET Core MVC 入门 | Microsoft LearnASP.NET Core Web API :教程:使用 ASP.NET Core 创建 Web API | Microsoft Learn
2023-04-27 18:14:49
300
1
原创 MySQL事务隔离级别详解
序列化读(Serializable):最高级别的隔离。两个同时发生的事务100%隔离,每个事务有自己的『世界』。所有事务按照次序依次执行,因此,脏读、不可重复读、幻读都不会出现。虽然Serializable隔离级别下的事务具有最高的安全性,但是,由于事务是串行执行,所以效率会大大下降,应用程序的性能会急剧降低。如果没有特别重要的情景,一般都不会使用Serializable隔离级别。可重复读(Repeatable read,MySQL默认模式):如果一个事务成功执行并且添加了新数据,这些数据对其他正在执行
2023-04-23 00:26:52
462
原创 数据库底层运行原理之——事务管理器
如果一个事务只需要读取数据A,它会给数据A加上『共享锁』并读取,如果第二个事务也需要仅仅读取数据A,它会给数据A加上『共享锁』并读取,如果第三个事务需要修改数据A,它会给数据A加上『排他锁』,但是必须等待另外两个事务释放它们的共享锁。这个规则可以很好地工作,但有个例外:如果修改了一条数据、释放了关联的锁后,事务被取消(回滚),而另一个事务读到了修改后的值,但最后这个值却被回滚。事务开始时获取锁,结束时释放锁,这是可以实现纯粹的隔离,但是这种方法会等待所有的锁,在讲事务之前,我们需要理解ACID事务的概念。
2023-04-21 16:22:02
1502
原创 mysql和redis如何保证数据库一致性
如果对于小公司的单机服务器来说在更新和删除mysql数据的同时对redis缓存进行更新或者删除就行,一般有两个选择,例如:先更新MySQL,后删除(或更新)Redis先删除(或更新)Redis,后更新MySQL。
2023-04-19 11:52:57
910
原创 如何对数据库进行优化
例如通过调大innodb_io_capacity的参数,虽然脏页刷新的速度得到了提升,但是刷新脏页会阻塞该页的数据访问,过多无意义的刷新也会增加cpu的负载。最好的方法是测量你的存储设置的随机写吞吐量,然后给innodb_io_capacity_max设置为你的设备能达到的最大IOPS。另外一点就是增加mysql缓冲池的大小,mysql很多时候不会直接读写磁盘的数据,会根据自己的算法,通过缓冲池缓存磁盘的数据到内存中,来提高查询效率,还会根据淘汰算法,来更新缓存中的冷热数据,保证缓存的命中率。
2023-04-18 15:05:22
2494
原创 多线程高并发线程安全性问题解决方案
解决高并发的线程安全性问题,一般要根据实际业务逻辑来处理,一切脱离业务谈技术都是耍流氓。例如有一个场景:设计一个抢票程序,同时有1000个人要抢100张票。首先我们要考虑如何设计这个场景,如果你采用的是单机版的多线程方案,那么在抢票环节访问数据库层使用synchronized修饰方法或者clock保证线程的执行顺序;如果你设计的是高可用集群部署加多线程的方案,那么就需要使用分布式锁来保证线程安全,一般常用的是基于redis的分布式锁,你也可以使用基于数据库的分布式锁和基于Zookeeper的分布式锁。
2023-04-18 11:41:32
578
原创 MySQL索引15连问,你能坚持到第几问?
当查询的数据在索引树中,找不到的时候,需要回到主键索引树中去获取,这个过程叫做回表。比如下查询SQL:需要查询所有列的数据,idx_age普通索引不能满足,需要拿到主键id的值后,再回到id主键索引查找获取,这个过程就是回表。如果我们查询 SQL的select * 修改为 select id,age的话,其实是不需要回表的。因为id和age的值,都在idx_age索引树的叶子节点上这就涉及到覆盖索引的知识点了。
2023-04-17 23:44:53
652
1
原创 使用docker搭建Milvus向量数据库
Milvus创建于2019年,目标单一:存储、索引和管理由深度神经网络和其他机器学习(ML)模型生成的大量嵌入向量。作为一个专门用于处理输入向量查询的数据库,它能够对万亿规模的向量进行索引。与现有的关系数据库不同,Milvus主要按照预定义的模式处理结构化数据,它是自下而上设计的,用于处理从非结构化数据转换而来的嵌入向量。Milvus能够通过计算两个向量的相似距离来分析它们之间的相关性。如果两个嵌入向量非常相似,则意味着原始数据源也相似。
2023-04-14 14:19:15
7443
7
python 华容道拼图小游戏
2022-10-28
mysql-connector-net-6.8.3
2018-06-04
ChineseConverter.dll ChnCharInfo.dll
2018-01-04
ThoughtWorks.QRCode.dll
2018-01-04
AnkhSVN 2.7.0.6493msi 支持vs2015
2017-10-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人