自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(286)
  • 资源 (2)
  • 收藏
  • 关注

原创 .NET Worker Service 作为 Windows 服务运行及优雅退出改进

.NET Worker Service 作为 Windows 服务运行及优雅退出改进

2022-06-28 09:10:05 471

原创 前端CSS 实现常见问答手风琴效果

CSS 实现常见问答手风琴效果

2022-06-27 08:34:23 373

原创 前端CSS卡片动画效果的实现

卡片动画效果的实现

2022-06-25 20:18:16 1079

原创 .NET Worker Service 添加 Serilog 日志记录

.NET Worker Service 添加 Serilog 日志记录

2022-06-25 11:02:00 550

原创 .NET Worker Service 如何优雅退出

.NET Worker Service 如何退出

2022-06-24 16:01:57 500

原创 .NET 中的 Worker Service 介绍

.NET Core Worker Service

2022-06-23 11:15:31 798

原创 使用 POST 向 ASP.NET Core 传递数据时的长度限制与解决方案

使用 HTTP 协议上传文件的标准做法是:使用 。但有时为了实现简单且要上传的文件不会太大,仍然会采用 上传文件,这就需要在上传前对二进制文件进行编码,比如使用 Base64

2022-06-20 10:33:53 1365

原创 浅议.NET 6 Cookie滑动过期和JWT混合认证、授权

【导读】为防止JWT Token被窃取,我们将Token置于Cookie中,但若与第三方对接,调用我方接口进行认证、授权此时仍需将Token置于请求头,通过实践并联系理论,我们继续开始整活首先我们实现Cookie认证,然后再次引入JWT,最后在结合二者使用时联系其他我们可能需要注意的事项Cookie认证在startup中我们添加cookie认证服务接下来则是使用认证和授权中间件,注意将其置于路由和终结点终结点之间,否则启动也会有明确异常提示我们给出测试视图页,并要求认证即控制器添加特性...

2022-06-15 12:02:40 1317

原创 ASP.NET Core WebApi返回结果统一包装实践

近期在重新搭建一套基于ASP.NET Core WebAPI的框架,这其中确实带来了不少的收获,毕竟当你想搭建一套框架的时候,你总会不自觉的去想,如何让这套框架变得更完善一点更好用一点。其中在关于WebApi统一结果返回的时候,让我也有了更一步的思考,首先是如何能更好的限制返回统一的格式,其次是关于结果的包装一定是更简单更强大。在不断的思考和完善中,终于有了初步的成果,便分享出来,学无止境思考便无止境,希望以此能与君共勉。 首先如果让返回的结果格式统一,就得有一个统一的包装类去包装所有的返回结果...

2022-06-13 09:25:39 1634 2

原创 .NET基础知识快速通关11

.NET的特性(Attribute)相关的重要知识点

2022-06-01 19:05:42 215

原创 .NET基础知识快速通关10

1反射的基本原理反射是一种动态分析程序集、模块、类型及字段等目标对象的机制,它的实现依托于元数据。元数据,就是描述数据的数据。在CLR中,元数据就是对一个模块定义或引用的所有东西的描述系统。2.NET中如何实现反射在.NET中,为我们提供了丰富的可以用来实现反射的类型,这些类型大多数都定义在System.Reflection命名空间之下,例如Assembly、Module等。利用这些类型,我们就可以方便地动态加载程序集、模块、类型、方法和字段等元素。下面我们来看一个使用示例,首先是创

2022-05-31 08:58:44 186

原创 .NET基础知识快速通关9

1事件如何使用在Microsoft的产品文档上这样来定义的事件:事件是一种使对象或类能够提供通知的成员。客户端可以通过提供事件处理程序为相应的事件添加可执行代码。设计和使用事件的全过程大概包括以下几个步骤:下面我们来按照规范的步骤来展示一个通过控制台输出事件的使用示例:① 定义一个控制台事件ConsoleEvent的参数类型ConsoleEventArgs/// <summary>/// 自定义一个事件参数类型/// </summary>public cl

2022-05-30 11:49:15 229

原创 .NET基础知识快速通关8

1委托的基本原理委托这个概念对C++程序员来说并不陌生,因为它和C++中的函数指针非常类似,很多码农也喜欢称委托为安全的函数指针。无论这一说法是否正确,委托的的确确实现了和函数指针类似的功能,那就是提供了程序回调指定方法的机制。在委托内部,包含了一个指向某个方法的指针(这一点上委托实现机制和C++的函数指针一致),为何称其为安全的呢?因为委托和其他.NET成员一样是一种类型,任何委托对象都是继承自System.Delegate的某个派生类的一个对象,下图展示了在.NET中委托的类结构:从上图

2022-05-28 20:24:48 297

原创 .NET基础知识快速通关7

1流的概念 .NET中有哪些流流是一种针对字节流的操作,它类似于内存与文件之间的一个管道。在对一个文件进行处理时,本质上需要经过借助OS提供的API来进行打开文件,读取文件中的字节流,再关闭文件等操作,其中读取文件的过程就可以看作是字节流的一个过程。常见的流类型包括:文件流、终端操作流以及网络Socket等,在.NET中,System.IO.Stream类型被设计为作为所有流类型的虚基类,所有的常见流类型都继承自System.IO.Stream类型,当我们需要自定义一种流类型时,也应该直接或者间

2022-05-26 10:14:50 358

原创 .NET基础知识快速通关6

1int[]是值类型还是应用类型?在.NET中的数组类型和C++中区别很大,.NET中无论是存储值类型对象的数组还是存储引用类型的数组,其本身都是引用类型,其内存也都是分配在堆上的。它们的共同特征在于:所有的数组类型都继承自System.Array,而System.Array又实现了多个接口,并且直接继承自System.Object。不同之处则在于存储值类型对象的数组所有的值都已经包含在数组内,而存储引用类型对象的数组,其值则是一个引用,指向位于托管堆中的实例对象。下图直观地展示了二者内存分配的差别

2022-05-18 14:07:04 277

原创 .NET基础知识快速通关5

1StringBuilder有何作用?众所周知,在.NET中String是引用类型,具有不可变性,当一个String对象被修改、插入、连接、截断时,新的String对象就将被分配,这会直接影响到性能。但在实际开发中经常碰到的情况是,一个String对象的最终生成需要经过一个组装的过程,而在这个组装过程中必将会产生很多临时的String对象,而这些String对象将会在堆上分配,需要GC来回收,这些动作都会对程序性能产生巨大的影响。事实上,在String的组装过程中,其临时产生的String对象实例都不是

2022-05-17 19:43:44 269

原创 .NET基础知识快速通关4

1如何针对不同类型的异常进行捕捉?相信阅读本文的园友都已经养成了try-catch的习惯,但对于异常的捕捉和处理可能并不在意。确实,直接捕捉所有异常的基类:Exception 使得程序方便易懂,但有时这样的捕捉对于业务处理没有任何帮助,对于特殊异常应该采用特殊处理能够更好地引导规划程序流程。下面的代码演示了一个对于不同异常进行处理的示例:public class Program{ public static void Main(string[] args) {

2022-05-17 09:09:00 225

原创 .NET基础知识快速通关3

1.NET中的类可以多继承吗?在C#中申明一个类型时,只支持单继承(即继承一个父类),但支持实现多个接口(Java也是如此)。像C++可能会支持同时继承自多个父类,但.NET的设计小组认为这样的机制会带来一些弊端,并且没有必要。首先,看看多继承有啥好处?多继承的好处是更加贴近地设计类型。例如,当为一个图形编辑器设计带文本框的矩形类型时,最方便的方法可能是这个类型既继承自文本框类型,又继承自矩形类型,这样它就天生地具有输入文本和绘画矩形的功能。But,自从C++使用多继承依赖,就一直存在一些弊

2022-05-16 20:45:54 276

原创 .NET基础知识快速通关2

1.NET中的所有类型的基类是什么在.NET中所有的内建类型都继承自System.Object类型。在C#中,不需要显示地定义类型继承自System.Object,编译器将自动地自动地为类型添加上这个继承申明,以下两行代码的作用完全一致:public class A { }public class A : System.Object { }2值类型和引用类型的区别是什么在.NET中的类型分为值类型和引用类型,它们各有特点,其共同点是都继承自System.Object,但最明显

2022-05-12 14:19:58 255

原创 .NET基础知识快速通关1

1.NET中的栈和堆的差异每一个.NET应用程序最终都会运行在一个OS(操作系统)进程中,假设这个OS的传统的32位系统,那么每个.NET应用程序理论上都可以拥有一个4GB的虚拟内存。.NET会在这个4GB的虚拟内存块中开辟三块内存作为堆栈、托管堆以及非托管堆。(1).NET中的堆栈堆栈用来存储值类型的对象和引用类型对象的引用(地址),其分配的是一块连续的地址,如下图所示,在.NET应用程序中,堆栈上的地址从高位向低位分配内存,.NET只需要保存一个指针指向下一个未分配内存的内存地址即可。...

2022-05-06 17:56:00 341

原创 内存管理与GC那点事儿

一、内存是有限的  近年来,我们的电脑内存都有好几个GB,也许你的电脑是4G,他的电脑是8G,公司服务器内存是32G或者64G。但是,无论内存容量有多大,总归不是无限的。实际上,随着内存容量的增加,软件的内存开销也在以同样的速率增加着。因此,最近的计算机系统会通过“双重”幻觉,让我们以为内存容量是无限的。  第一重幻觉:垃圾回收(GC)机制  在C/C++中,内存空间的分配是由人工手动进行管理的,当需要内存空间时,要请求OS进行分配,不需要的时候则需要返回给OS。如果不再需要的内存空间没有及

2022-05-06 17:49:13 716 2

原创 C#语法糖系列 —— 第四篇:聊聊 Span 的底层玩法

把 Span 归于语法糖,可能有些偏了,但偏了就偏了,哈哈,只要是分享就好,C# 发展至今,已经是一门非常重的语言了,所有想要的它都要,即可以: 面向过程编程 面向对象编程 面向函数式编程 面向异步编程 面向泛型编程 既能做到高开发效率,又能做到高性能编程。这里的Span就归结于高性能编程这个范畴了。一:Span 是什么当年的 C# 一个亮点就是屏蔽了指针,自动内存托管,可以让程序员更加专注于业务,现如今策略变了,C# 要变得更加高...

2022-05-05 20:56:56 2705

原创 Oracle数据库表被锁了,如何解锁

1. 首先查看数据库中哪些表被锁了,找到sessionID:使用sql:select b.owner,b.object_name,a.session_id,a.locked_modefrom v$locked_object a,dba_objects bwhere b.object_id = a.object_id;OWNER :数据表的所有者用户OBJECT_NAME: 被锁住的表名SESSION_ID: 会话IDLOCKED_MODE: 锁级别锁级别分为6级:1级锁.

2022-04-28 16:07:45 16340 4

原创 oracle中常用的 SQL语句中进行时间加减

一:numtodsinterval(<x>,<c>),x是一个数字,c是一个字符串,表明x的单位,这个函数把x转为interval day to second数据类型常用的单位有 ('day','hour','minute','second')exampleSQL> select sysdate,sysdate+numtodsinterval(3,'hour') as res from dual;SYSDATE RES -----...

2022-04-27 09:32:53 3865

原创 base64解密方法

/// <summary> /// base64解密 /// </summary> /// <param name="encode">编码方式</param> /// <param name="result">加密源字符串</param> /// <returns></returns> private...

2022-04-19 17:29:44 3084

原创 C#截取字符串的方法小结

1、单个字符分隔用split截取string str = "GT123_1";string[] strArray = str.Split('_');//输出:sArray[0]="GT123"// sArray[1]="1"2、利用多个字符来分隔字符串string str = "GTAZB_JiangjBen_123";string[] strArray = str.Split(new char[2] { 'j', '_' });//输出:sArray[0]="GTAZB.

2022-04-01 09:13:41 16004

原创 EF Core codefirst数据迁移操作

摘要在开发中,使用EF code first方式开发,那么如果涉及到数据表的变更,该如何做呢?当然如果是新项目,删除数据库,然后重新生成就行了,那么如果是线上的项目,数据库中已经有数据了,那么删除数据库重新生成就不行了,那么该如何解决呢?Ef提供了一种数据迁移的操作。具体该如何操作呢。数据迁移步骤开发环境 vs2017+Mysql这里以web为例。具体该如何操作。1、新建一个web应用。发现Asp.Net Core站点,项目结构又有变化,项目结构如下:发现这里吧wwwro

2022-04-01 09:12:33 1533

原创 Js实现获取当前时间并显示

js可以通过Date对象获取当前日期和时间,使用Date()获取系统当前时间,在使用getFullYear()、getMonth()、getDate() 、getHours()等方法获取特定格式的时间,在使用innerHTM方法显示。首先我们来了解一下js获取当前时间所需的一些方法:获取当前时间:var d = new Date();//获取系统当前时间获取特定格式的时间:1、获取当前年份getYear()方法:可以获取年份(2位或4位),其返回值是表示当前Date 对象的年份字

2022-03-15 14:14:01 34112

原创 C# 实例解释面向对象编程中的单一职责原则

在面向对象编程中,SOLID是五个设计原则的首字母缩写,旨在使软件设计更易于理解、灵活和可维护。这些原则是由美国软件工程师和讲师罗伯特·C·马丁(Robert Cecil Martin)提出的许多原则的子集,在他2000年的论文《设计原则与设计模式》中首次提出。SOLID 原则包含: S:单一功能原则(single-responsibility principle) O:开闭原则(open-closed principle) L:里氏替换原则(Liskov substitut.

2022-03-13 12:39:59 218

原创 C# 实例解释面向对象编程中的里氏替换原则

在面向对象编程中,SOLID是五个设计原则的首字母缩写,旨在使软件设计更易于理解、灵活和可维护。这些原则是由美国软件工程师和讲师罗伯特·C·马丁(Robert Cecil Martin)提出的许多原则的子集,在他2000年的论文《设计原则与设计模式》中首次提出。SOLID 原则包含: S:单一功能原则(single-responsibility principle) O:​​​​​​​开闭原则(open-closed principle) L:里氏替换原则(Liskov su.

2022-03-13 12:37:36 444

原创 c#使用RRQMSocket实现tcp通信

介绍● TCP组件是基于TCP协议的最基础组件,其基础功能和Socket一致,只是经过RRQM封装后,将高连接、高并发,数据处理等一系列基础功能打包,让使用者不再关心基础架构建设,专心于业务。● 理论上TCP组件可用于任何基于TCP协议的产品,例如:HTTP、FTP、WebSocket、Telnet、PLC通信、上位机通信等。产品特点● 简单易用。● 多线程。● 内存池● 高性能(服务器每秒可接收200w条信息,接收数据流量可达2.5GB/s)● 多种数据接收模式(IOCP,

2022-03-12 23:38:18 4219

原创 C#后台代码使用正则表达式,判断输入密码是否符合要求

常见密码正则表达式第一种至少8-16个字符,至少1个大写字母,1个小写字母和1个数字,其他可以是任意字符:/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[^]{8,16}$//^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[\s\S]{8,16}$/其中 [\s\S] 中的\s空白符,\S非空白符,所以[\s\S]是任意字符。也可以用 [\d\D]、[\w\W]来表示。至少8个字符,至少1个大写字母,1个小写字母和1个数字,不能包含特殊字符(非数..

2022-02-28 11:32:29 3251

原创 如何以计算机的方式去思考

从上大学第一天开始接触编程,老师便给我们讲过各式各样的算法。从各种查找、排序,到递归、贪心等算法,大一的时候一直在和这些算法搏斗。直到工作后,为了应付面试,仍不得不回过头去啃算法书或者去刷一些算法习题,才能够拾回一些上学时的记忆。为什么算法就这么难以记住呢?或者说,为何计算机的算法不能更直观一些呢?因为计算机的算法就是反人性的,从本质上来说,这是计算机的思维方式和人脑思维方式的区别而造成的。人脑思维的机制至今没有一个确定的理论,暂时认为是化学物质和电信号的作用。虽然没有科学的解释,但是我们每个人都有

2022-02-23 10:21:40 148

原创 聊一聊数据库中的锁

背景数据库中有一张叫后宫佳丽的表,每天都有几百万新的小姐姐插到表中,光阴荏苒,夜以继日,日久生情,时间长了,表中就有了几十亿的小姐姐数据,看到几十亿的小姐姐,每到晚上,我可愁死了,这么多小姐姐,我翻张牌呢?办法当然是精兵简政,删除那些age>18的,给年轻的小姐姐们留位置...于是我在数据库中添加了一个定时执行的小程序,每到周日,就自动运行如下的脚本delete from `后宫佳丽` where age>18一开始还自我感觉良好,后面我就发现不对了,每到周日,这个脚本一执行就

2022-02-22 13:51:29 243

原创 关于如何在window下执行SQLSERVER的定时备份

引言在使用SqlServer Express 版本的时候发现,这个版本不支持通过数据库的代理方式进行数据库的维护。解决方案使用SQL语句加windows任务计划的方式解决具体步骤如下创建备份用的SQL文件 创建调用SQL文件的BAT文件 加入到windows的任务计划中具体步骤及文件SQL语句GODECLARE @backupTime VARCHAR(20)DECLARE @fileName VARCHAR(1000)SELECT @backupTime .

2022-02-15 15:06:26 726

原创 .net core系列源码地址介绍

很早就想写.net core相关教程内容了,但是一方面感觉东西太多了,一方面是太懒了,最近才下定决心,一定要写点东西出来好了,先从.net core开源开始吧,以后会对一些独立模块单独剖析介绍,比如认证授权,配置,日志等等:  .net core独立模块源码:https://github.com/aspnet  .net core全家桶源码:https://github.com/dotnet/aspnetcore  .net core拓展库源码:https://github...

2022-02-15 13:11:55 3385

原创 C#基础_XML文件读写

使用C#对XML文件进行操作,包括生成一个XML文档,以及读取XML文档中的内容,修改某个元素中的内容RWXml类如下所示:using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;//引用命名空间using System.Xml;namespace ConsoleApp1{ public class RW..

2022-02-14 15:39:22 922

原创 Asp.Net Core Authorize解析(源码解读)

一、前言IdentityServer4已经分享了一些应用实战的文章,从架构到授权中心的落地应用,也伴随着对IdentityServer4掌握了一些使用规则,但是很多原理性东西还是一知半解,故我这里持续性来带大家一起来解读它的相关源代码,本文先来看看为什么Controller或者Action中添加Authorize或者全局中添加AuthorizeFilter过滤器就可以实现该资源受到保护,需要通过access_token才能通过相关的授权呢?今天我带大家来了解AuthorizeAttribute和Auth

2022-02-09 15:27:39 1386

原创 从实际业务出发,浅显的聊聊如何理解领域驱动设计

前言什么是领域,我习惯描述的是制药领域、环境领域、建筑领域、金融领域等,而在领域内,各种业务规则、业务知识盛行,如何有效的把控规则的变化,应对复杂知识,有一个很关键的四字词语,分而治之。分治法在很多场景下体现了其强大的作用力。领域本身很大,那就拆分,得到更小的领域,也即子域,如同递归调用一般,将一个复杂问题拆分单独求解,而最终将解汇总得到复杂问题解。怎么拆,拆成怎么样合适,依据什么拆,这些在领域驱动设计中有了一套答案,虽然领域驱动设计不是银弹,但可以说的上是一套极好的系统方法论或称为架构设计的方法论

2022-01-28 10:51:03 333

原创 为什么 Redis 的查询很快, Redis 如何保证查询的高效

Redis 如何保证高效的查询效率为什么 Redis 比较快Redis 中的查询速度为什么那么快呢?1、因为它是内存数据库;2、归功于它的数据结构;3、Redis 中是单线程;4、Redis 中使用了多路复用。Redis 中的数据结构这里借用一张来自[Redis核心技术与实战] Redis 中数据结构和底层结构的对应图片1、简单动态字符串Redis 中并没有使用 C 中 char 来表示字符串,而是引入了 简单动态字符串(Simple Dynamic Stri..

2022-01-26 15:17:15 382

dsoframer.ocx.zip

dsoframer.ocx

2021-12-10

MyBlog-master.zip

一个简单的博客后台系统

2021-08-06

空空如也

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

TA关注的人

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