- 博客(30)
- 收藏
- 关注
原创 设计模式
定义对象间的一对多依赖关系,使得当一个对象状态发生改变时,其依赖者都会收到通知并自动更新。定义一系列算法,把它们封装起来,并且使它们可相互替换。用于抽象访问数据层的逻辑,将数据访问逻辑与业务逻辑分离。定义一个接口用于创建对象,但让子类决定实例化哪一个类。确保一个类只有一个实例,并提供一个全局访问点。
2025-02-08 14:29:11
414
原创 为控制器的方法添加必要参数
做这个系统时,要求每次调用接口时要传操作人、操作人电脑ip、菜单id,然后计入log。本来前端读取到然后加入请求头,后端写入log即可。但是老大要求后端也要把控必传参数,避免前端忘记。主要用于在Swagger生成的API文档中动态地添加或修改操作(即API接口)的元数据。:可以自动地为 Swagger/OpenAPI 文档中的非匿名 API 方法添加必要的头部参数描述。下面这个过滤器主要用于在 API 的描述中自动添加一些特定的头部参数,比如。(菜单ID)等,但仅对未标记为匿名访问的方法有效。
2024-09-07 18:08:00
703
原创 邮件 发送
题外话:我在做某个需求时,用户想要发邮件带图片,并且图片附着在正文中,本身简单a标签的事,但由于公司保密措施强大,禁止开发人员通过邮件发送图片,但用户又坚持。好在不辱使命,后来我突发奇想了个idea,就是可以把用户上传的图片先存到图片服务器中,用户调发邮件接口时去图片的服务器中查该图片,并下载到接口所在的服务器中,然后将图片附着到邮件的正文中,最后再从接口所在的服务器中把上传的图片删除掉,以免图片越来越多,占用磁盘间,完美解决。或许这就是程序员的快乐吧,解决一个难点,能happy好几天。
2024-09-07 15:50:16
262
原创 多线程、异步
是操作系统分配资源的基本单位,每个进程都有自己的内存空间。当一个程序开始运行时,比如qq、微信、浏览器,他们都是进程。一个进程是由多个线程组成的。
2024-08-06 15:16:06
724
原创 EF Core 2
实体对象不被上下文跟踪,通常是新创建的实体或从上下文中分离的实体。: 实体对象从数据库加载到上下文中,且没有对其进行任何修改。: 实体对象从数据库查询后,默认状态为 Unchanged。: 实体对象被修改,且这些修改需要在保存到数据库时应用。: 实体对象被添加到上下文中,但还没有保存到数据库。: 实体对象从上下文分离或未被上下文跟踪。: 实体对象被标记为从数据库中删除。方法将实体添加到上下文中。: 修改实体的属性,并调用。也可以直接执行SQL语句。2.1、默认事务行为。2.2、手动创建事务。
2024-08-01 14:10:52
404
原创 ado.net 练习
1、编写代码来执行一个SELECT语句,并使用DataReader读取数据。13、ADO.NET 写一个调用存储过程的代码片段,并传递参数给存储过程。2、编写代码来执行一个SELECT语句,并将结果填充到DataSet中。,然后删除其中的记录,并将这些删除操作批量应用到数据库中。中的数据批量插入到 SQL Server 数据库中。,修改其中的数据,并将修改后的数据批量更新到数据库中。4、编写代码来插入一条记录到数据库中。5、如何使用事务来确保数据操作的一致性。:编写一个方法,使用。:编写一个方法,使用。
2024-07-30 16:07:51
217
原创 EF Core 1
而从监视中可以看到,Address属性,在第一次查询返回的时候,只是一个代理形式的类,并不是一个Address实例类,这就是懒加载的特点,按需分配,需要的时候自动帮你处理,不需要的不加载。我们在首次查询的时候,并没有包含相关的导航属性,而是在查询后,通过对实例对象的采用collection或者Reference来加载相关的导航属性,这样也能进行相关的导航属性加载。如上图将学号1的学生删除后,发现相关的地址信息,以及选择的课程信息也被删除了,这是由于在设置的EFCore默认了删除的行为为级联的方式。
2024-07-24 16:40:18
858
原创 SQLserver 练习题
1、编写T-SQL程序,计算 1 + 2 − 3 + 4 − 5 …3、写一个T-SQL函数 𝑓𝑎𝑡,利用标准体重计算公式,根据身高判断体重是否合乎标准。11、利用𝐶𝑜𝑠𝑚𝑒𝑡𝑖𝑐 表,参照结果,写一个存储过程 𝐶𝑜𝑠𝑚𝑒𝑡𝑖𝑐𝑅𝑒𝑝𝑜𝑟。2、写一个求三个数最大值的函数,输入为三个整数,输出为其中的最大值。8、创建MissWife表,写一个存储过程ReversePoem。10、写一个存储过程 𝑀𝑎𝑔𝑖𝑐𝑁𝑢𝑚𝑏𝑒。12、写一个存储过程 𝐹𝑖𝑏𝑜𝑛𝑎𝑐𝑐。一、TSQL、函数、存储过程、游标。
2024-07-17 08:42:53
555
原创 AutoMapper
AutoMapper是一个.NET库,用于简化对象之间的映射。它可以帮助开发人员在不同类型之间进行自动转换,从而减少重复的手动映射代码。使用AutoMapper,开发人员可以定义映射规则,然后该库会自动执行对象之间的映射。这使得在应用程序中对数据进行转换和映射变得更加简单和高效。下面是AutoMapper的一些常见功能:对象到对象的映射:简化了从一个对象类型到另一个对象类型的转换。集合的映射:可以自动映射集合中的对象,减少了手动迭代和映射的工作。
2024-07-12 11:51:14
319
原创 后台托管服务
想要实现后台任务可以实现IHostedService接口或者直接继承BackgroundService抽象类。IHostedService接口是托管服务接口,在Microsoft.Extensions.Hosting命名空间下面,有两个接口方法:StartAsync(CancellationToken) :当应用程序主机准备好启动服务时触发该方法StopAsync(CancellationToken):当应用程序主机执行正常关闭时触发该方法。:这是一个委托,指向当定时器触发时要调用的方法。
2024-07-11 15:44:20
652
原创 Jwt、Session、Cookie
JWT(JSON Web Token)是一种用于在网络上安全传输信息的开放标准(RFC 7519),它定义了一种紧凑且自包含的方式,用于在各方之间安全地传输信息。:包含令牌的元数据,如令牌的类型(JWT)和签名算法(如HMAC SHA256或RSA)。:包含要传递的信息,如用户ID、角色、权限等。:使用头部和载荷的Base64编码字符串以及一个密钥(secret)进行签名计算,以确保信息传输的安全性。文件中,配置JWT的相关参数,如密钥(Secret)、颁发者(Issuer)和受众(Audience)。
2024-07-10 16:03:08
503
原创 依赖注入、配置、日志、缓存
(比如A,B代码都读取同一个配置,在A运行后B运行前更改了配置,使用IOptionsMonitor的话A读取的是旧值,B是新值,使用IOptionsSnapshot的话A,B都是旧值,只有再次进入这个范围才会是新值)需要注意的是,在ASP.NET Core的默认依赖注入容器中,并不直接支持属性注入到控制器中,但可以通过其他方式(如中间件、视图等)实现属性注入,或者使用第三方库来支持。IOptionsSnapshot:配置改变后,可以读到新的值,与上者不同的是,上者在同一范围内会保持一致性。
2024-07-09 19:55:17
712
转载 .net core AOP
/需要有RequestDelegate、InvokeAsync方法参数是HttpContext类型Console.WriteLine("MyMiddleware1执行前");Console.WriteLine("MyMiddleware1执行后");//在program.cs中。
2024-07-09 08:20:30
922
1
原创 C# 高级
反射指程序可以访问、检测和修改它本身状态或行为的一种能力, 即透过现象看本质首先,先定义一个StudentInfo类[Description("学生类的描述信息")]set;set;set;Age = age;Console.WriteLine($"我是{NickName},我每天都要晨跑");Console.WriteLine($"我是{NickName},我今年{age}岁了,我每天都要晨跑");return $"我是{nickName},我是私有方法";
2024-05-13 20:58:05
1548
原创 Ado.Net
小知识:GC:垃圾回收器,这里面封装了一些算法规定了什么时候去回收资源,我们自己定义的一些变量,不需要关心它有没有释放掉,因为GC会帮我们自动回收资源。GC只能回收托管资源(由.Net CLR管理的资源),而SqlConnection是属于非托管资源(非托管资源一般都会实现IDisposable接口)。sqlserver的连接nuget包为system.data.sqlclient,连接对象为SqlConnection。一、Connection连接对象。3、连接对象常用方法。修改超时时间为30s。
2024-05-06 20:17:10
264
原创 SqlServer补充
1.1、定义:存储过程(procedure)是一组为了完成特定功能的SQL语句的集合,经编译后存储在数据库中,用户通过指定存储过程的名称并给出参数来执行1.2、优缺点(自己网上找)1.3、常见存储过程查看所有数据库查询数据库信息exec sp_helpdb 数据名;查询指定数据库信息exec sp_renamedb‘旧库名’,‘新库名’;更改数据库名称查询当前数据库的所有表exec sp_columns 表名;查看列exec sp_help 表名;返回表的所有信息。
2024-05-06 07:59:02
1791
原创 SQLserver
1.1、事务创建及成功提交begin transaction --开启事务commit --提交1.2、事务创建及失败提交需回滚begin transaction --开启事务begin trycommit --提交end tryrollback --如果失败则回滚end catch触发器实际用的并不多触发器为特殊的存储过程,可在执行SQL语句(insert,update,delete)时自动执行比如现实生活中:当烟雾过大时,会触发喷水装置。
2024-05-04 14:33:39
1760
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人