自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 NPOI实现解析与导出EXCEL文件

【代码】NPOI实现上传与下载文件。

2024-01-18 15:01:10 443

原创 C# ReadOnly&&Ref Out

当给集合添加或者删除数据时,只是new List<·RefOut·> ()的数据发生了变化,变量a代表的地址并没有进行改变。,因为值类型int a = 2,每次重新赋值a的地址变了,是重新拷贝一份,会变成一个新的地址,变量的地址发生了变化。这里是因为值类型的每次重新赋值,地址改变,所以宏观表现为,设置了ReadOnly,就无法再改变数据了。在C#中传参的值类型int a = 0在方法中修改a= 3,是不会改变外部的参数值,所以还是a=0。在构造函数里,可以多次赋值,但是出了构造函数,值类型就无法变更了。

2023-11-22 13:33:02 344

原创 TransactionScope的使用

TransactionScope 是 .NET Framework 和 .NET Core 中的一个类,用于简化事务管理。它提供了一种简单的方式来创建分布式事务和本地事务,以确保一系列操作要么全部成功提交,要么全部回滚,以保持数据的一致性。

2023-10-23 11:25:43 324

原创 Net6集成Nacos实现服务注册

【代码】Net6集成Nacos实现服务注册。

2023-10-19 15:45:08 359

原创 SignalIR入门

SignalR 是一个用于构建实时 Web 应用程序的开发工具和库,它可以让服务器端代码与客户端代码之间建立双向通信。SignalR 的中文解释可以理解为 “信号传输” 或 “信号通信”。SignalR 提供了一种简单的方式,让服务器可以向客户端发送实时更新,而无需客户端不断地发出请求。这使得开发者可以创建具有实时特性的应用程序,如在线聊天、实时游戏、协作工具等。

2023-10-07 16:38:19 249

原创 OpenPop实现接受QQ邮件以及发送邮件

进入设置,选择账户,选择开启服务,会进入验证环节,验证通过后会有一个授权码,记录下来。

2023-08-22 16:09:22 175

原创 C#多线程详解

上下文切换(Context Switching)是多线程环境中的一种操作,指的是在一个 CPU 核心上切换正在执行的线程,从当前线程的执行上下文(包括寄存器状态、程序计数器等)切换到另一个线程的执行上下文, 线程的切换需要额外的开销,因此在某些情况下,过多的线程可能会导致性能下降。因此,在设计多线程应用程序时,需要考虑如何减少上下文切换的发生,以提高程序的执行效率。是用于实现线程同步的一种机制,用于保护共享资源,避免竞态条件。上下文切换开销指的是从一个线程切换到另一个线程的过程中所涉及的时间和资源开销。

2023-08-11 14:31:13 2434

原创 C# 数据类型

unsafe 上下文中,可以使用指针访问内存地址。表示真值(true 或 false)数组类型用于存储相同类型的元素的集合。16 位 Unicode 字符。128 位高精度十进制浮点数。允许值类型存储 null 值。32 位单精度浮点数。64 位双精度浮点数。

2023-08-11 14:12:10 1131

原创 基元类型,引用类型,值类型

CLR支持两种类型:引用类型和值类型。虽然FCL的大多数类型都是引用类型,但程序员用得最多的还是值类型。引用类型总是从托管堆分配,C#的new操作符返回对象内存地址——即指向对象数据的内存地址。使用引用类型必须留意性能问题。基元类型直接映射到Framework类库(FCL)中存在的类型。例如int直接映射到System.Int32,如下。将值类型转换成引用类型要使用装箱机制。下面总结了对值类型的实例进行装箱时所发生的事情。编译器直接支持的数据类型就是基元类型。FCLl类型在C#都有对应的基元类型。

2023-08-07 14:40:40 85

原创 Vue——webpack

对项目进行打包//可以这样使用,但很奇怪//执行脚本 npm run build打包会默认的入口文件是src/index.js文件,出口文件是dist。当想要修改名字时可以自行修改。

2023-08-07 14:38:38 663

原创 Redis集群Cluster搭建

redis-cli -h 192.168.1.5 -p 6379 cluster nodes 验证成功信息如下。当我们再次设置时,集群会根据CRC计算改数据存放到那个槽位,集群存在脏数据需要再三台Master执行以下三个命令。在集群链接模式下,能访问到所有节点所有槽位的数据。三个集群节点,每个节点有个副本节点备份数据。设置后查看节点信息,成功画面如下。如果遇到【Error】如下。

2023-08-01 23:19:29 592

原创 Redis哨兵模式

进入master,在cli中输入info信息查看如下,主从布置完毕,主服务器已经挂载两台从服务器。安装VM虚拟机,准备三台服务器,这里kali我是之前装的,随便什么linux服务器都行。首先安装主服务器,这里安装Redis,之后修改redis.conf配置文件,来开启服务。这里再创建期间出了点问题,导致主从配置出现了变化,所以现在的主从配置如下。安装第一台从Redis服务器,修改Redis.conf的配置。安装第一台从Redis服务器,修改Redis.conf的配置。两台从服务器查询内容,主从复制成功。

2023-07-28 20:57:47 1366 2

原创 Redis主从模式搭建

设置本机的127.0.0.1 6380 redis为127.0.0.1 6379的从服务。从服务器设置key,无法设置,因为在主从模式中,从服务器是只读,无法设置。3.在res中输入make install。2.在redis中输入make指令。输入info命令查看主服务器的信息。从服务器展示所有key。

2023-07-25 00:28:57 95

原创 netcore接入钉钉扫码登录

在这里是使用的这位博主得代码,是在他得基础上进一步详细讲解和补充(controller修改了部分代码,适应新版sdk,view也就是前端页面只修改了几个配置,下面会指出,其他都是没有改动的)因为钉钉需要请求后端服务的接口,但在开发前期你需要测试,或者你处于公司内网,钉钉调取不到你的接口,所以需要进行内网穿透,来让钉钉服务能通过外网访问到你的主机。弟三步创建的应用,是用来登录的(我现在觉得理解为登录接口api合适点,应用有点抽象),这里的appkey和secrect是用来调取二维码用的。

2022-12-08 18:30:14 1518 1

原创 net项目使用花生壳,Cpolar进行内网穿透

1.找到项目,点击.vs ,打开显示隐藏文件,点击config,打开下图文件。2.找到bings配置,除了localhost,需要添加一个本机地址得映射。然后访问客户端给得访问地址,打开这个,就能访问处于10010端口得项目了。打开花生壳客户端,找到内网穿透,找到添加符号,添加映射。直接参考如下连接内得文章。

2022-12-08 15:16:26 847

原创 EasyCaching——redis

netcore3.0,5.0是在startup,net6是在program设置。这里是以1.4.0为例。

2022-11-03 16:48:21 881

原创 netcore——services拓展

以net6为例,当program里面需要配置很多服务和服务所需要的配置,那么program会非常臃肿,且不易于阅读。打开program文件,用法与添加正常service一样。那么需要额外创建一个文件来讲service单独存放。以添加数据库service为例。

2022-11-01 18:00:18 365

原创 Vue 深浅拷贝

上面的子对象friend:name也会拷贝一份,而不是只拷贝一个地址。

2022-10-19 20:50:12 76

原创 IdentityServer4实战详解(HyBrid混合模式篇)

首先,我们希望允许客户端使用混合流,此外,我们还希望客户端允许执行服务器到服务器的API调用,这些调用不在用户的上下文中(这与我们的客户端凭证quickstart非常相似)。在隐式流中,所有令牌都通过浏览器传输,这对于身份令牌来说是完全没问题的。现在我们还想请求一个访问令牌。MVC客户端的修改也是最小的——ASP.NET核心的OpenID连接处理器对混合流有内置的支持,所以我们只需要更改一些配置值。,HyBrid模式是授权码的简化模式的进阶版,更加的安全,解决了在混合模式中访问令牌直接暴露在浏览器的风险。

2022-10-19 12:24:29 877

原创 IdentityServer4实战详解

基于使用的net6版本。

2022-10-19 11:51:06 1239

原创 Vue——组件(1)

实现过渡动画1.认识组件2.组件拆分3.安装插件4.组件的导入,导出,使用5.组件通信6.父传子7.非props的Attribute8.禁用Attribute继承和多根节点9.子传父1.认识组件2.组件拆分3.安装插件1.vetur2.Vue VsCode Snippets4.组件的导入,导出,使用5.组件通信6.父传子父组件子组件7.非props的Attribute这里的class 没有再props里他会自动加入show-message的根节点中8.禁用

2022-10-17 21:55:21 81

原创 Net6使用AES加解密

Program.cs 配置信息。

2022-09-14 10:35:51 3007 4

原创 存储过程,游标,触发器

END IF语句,在IF语句中又加入了LEAVE语句,LEAVE语句的意思是离开循环,LEAVE的格式是:LEAVE 循环标号。使用set i=0;而在MySQL中,分号是语句结束的标识符,遇到分号表示该段语句已经结束,MySQL可以开始执行了。另外,OLD 是只读的,而 NEW 则可以在触发器中使用 SET 赋值,这样不会再次触发触发器,造成循环调用(如每插入一个学生前,都在其学号前加“2013”)。在这之后的语句,以分号结束,解释器不会有什么反应,只有遇到了$,才认为是语句结束。

2022-09-05 10:57:22 387

原创 Serilog通过ELK收集日志

【代码】Serilog通过ELK收集日志。

2022-09-03 11:09:14 355

原创 NetCore配置详解(2)

上一篇是Configuration对象功能,概念解释,这篇注重实践。

2022-08-25 09:50:43 594

原创 NetCore配置详解(1)

提供一个实现了 IConfigurationProvider 接口的配置提供类,它需要提供配置的读取以及更新等操作提供一个 IConfigurationSource 接口实现类,它负责创建 IConfigurationProvider。创建一个 IConfigurationBuilder 配置建造者对象,然后将 IConfigurationSource 添加进配置构造者中,这里我们一般都采用 IConfigurationBuilder 的拓展方法来实现。

2022-08-24 11:18:52 1701

原创 Apollo在NetCore实践

首先重要一点,要在windows下运行启动脚本demo.sh的前提是安装"MingW"不能用“CygWin”。因为在CygWin里运行java会报找不到jar文件的问题。Namespace中添加Key/Value配置项(可以通过文本形式添加,速度更快),添加之后记得点击发布。运行sql目录中的两个sql脚本,如果原来有库注意备份。设置两个数据库的账号和密码,以及数据库地址。使用git指令开启apollo。使用git指令关闭apollo。出现登录页面即为成功。.........................

2022-08-23 10:30:38 579

原创 VS使用Git总结

然后切换为自己得分支,打开git,选择管理分支,然后右键其他分支,而后选择合并到自己得分支。同步有两步,1.拉取自己分支代码到本地,2.推送到自己得远程库中。可以查看与历史版本区别来查看是否有误操作他人代码。选择其他得分支,然后拉取最新得分支。

2022-08-19 17:00:08 858

原创 Filter及其三种注册方式

//在操作结果执行之前调用 public void OnResultExecuting(ResultExecutingContext context) {//根据的数据类型进行处理 case ResultExecutingContext resultExecutingContext : switch(resultExecutingContext . Result) {break;

2022-08-11 22:01:11 479

原创 Dapper处理多个结果集与多重映射实例

一个恒星对应多个行星。

2022-08-09 18:11:29 616

原创 netcoreapi之上传和下载文件

注意这里IFormFIle。,必须为file,不能是别的名字。

2022-08-08 11:06:15 2700 1

原创 NetCore使用Dapper查询数据

与ConfigureServices同级。

2022-08-06 11:12:35 1135

原创 结合Command以AOP方式实现事务

这里类似于AOP编程,在进行注册后,能都在每个CommandHandler前后进行处理,这里是将每个handler包裹在一个事务里,来保证数据的一致,完整。

2022-08-05 10:40:09 172 1

原创 NetCore——自定义全局异常处理

/// 异常消息 ///

2022-08-04 15:48:26 1010

原创 FluentValidation

代码】FluentValidation。

2022-08-04 15:17:36 172

原创 Netcore——Result

而至于返回那个View就看Action的名字,一般情况下,返回的是和Action同名的View页面。所以这也是为什么执行HomeController/Index方法的时候,返回的是Views/Home/Index.cshtml文件了。ActionResult的解释ActionResult是Action运行后要发送给浏览器的结果,而从帮助文档上看ActionResult是一个抽象类,那么很显然View()函数的返回值肯定是继承了ActionResult。而View()函数返回的类型是ViewResult。..

2022-08-02 11:16:00 438

原创 NetCoreAPI操作Excel表格

目前主流框架(EPPlus,NPIO)大多需要将数据全载入到内存方便操作,但这会导致内存消耗问题,MiniExcel尝试以Stream角度写底层算法逻辑,能让原本1000多MB占用降低到几MB,避免内存不够情况。MiniExcel简单、高效避免OOM的.NET处理Excel查、写、填充数据工具。因为MiniExcel生成的是强类型数据,所以需要一个类来承接数据。创建Excel控制器。...

2022-07-26 16:13:44 1228

转载 C#多线程和异步(二)——Task和async/await详解

以下为转载。

2022-07-20 11:11:53 305

转载 Netcore——Middleware中间件(1)

比如流水线工作每个工人做的事情都很唯一,如果要真正生产出一个手机,要经过每一个工人的处理才能得到一个完整的手机。如果上一个工人对手机做了,一些修改那么这个修改也会保留到下一个工人手中,工人之间共享的是这部手机。ASP.NETCore的处理流程是一个管道,而中间件是装配到管道中的用于处理请求和响应的组件。中间件按照装配的先后顺序执行,并决定是否进入下一个组件。中间件管道的处理流程如下图。定义一个Middleware的类。if(!}}...

2022-07-20 09:14:42 1217

原创 Autofac生命周期(4)

在工作单元的开始时创建生命周期范围,工作单元需要的服务从这个生命周期范围解析获得。比如,一个HTTP请求,每一个工作单元都会创建一个nestedlifetime,如果在每一次HTTP请求中创建一个nestedlifetime,那么其他使用per-lifetime的component在每次HTTP请求中只会拥有一个实例。例如,一个实现IDisposable的对象,它的生命周期就是从实例化时开始,持续到调用它的Dispose时结束。例如,程序中全局的静态的单例对象,它的范围是整个程序。...

2022-07-16 11:08:11 125

空空如也

空空如也

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

TA关注的人

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