自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Vue的学习(2)

我们一般把 SessionId 保存在Cookie 中,而Session的数据默认是保存在服务器内存中的对于分布式集群环境,Session 数存在服务器内存中就不合适了,应该保存到一个供所集群实例访问的共用的状态服务器上。为了防止客户端的数据造假,保存在客户端的令牌经过了签名处理,而签名的密钥只有服务器端才知道,每次服务器端收到客户端提交的令牌的时候都要检查一下签名,如果发现数据被篡改,则拒绝接收客户端提交的令牌。服务器端校验用户名、密码,如果校验成功,则从数据库中取出这个用户的ID、角色等用户相关信息。

2023-02-01 23:59:47 876

原创 JWT的学习(2)

第一步:我们现在配置系统中配置一个名为JWT的节点,并在节点下创建一个SingingKey、ExpireSeconds两个配置项,分别代表JWT的密钥和过期时间单位为秒。我们在创建一个对应JWT节点的配置类JWTOption,类中包含SingingKey、ExpireSeconds这两个属性。第三步:编写代码对JWT进行配置,把下面的代码添加到Program.cs的builder.Build之前。点击图片左上角的图标-》然后出现下边的画面-》在框中加入Bearer空格+JWT令牌然后就可以访问了。

2023-02-01 23:57:32 233

原创 SignalR

SignalR当然也提供了非常简单易用的高阶API,使服务器端可以单个或批量调用客户端上的JavaScript函数,并且非常 方便地进行连接管理,例如客户端连接到服务器端,或断开连接,客户端分组,以及客户端授权,使用SignalR都非常 容易实现。ChatRoomHub类中定义的方法可以被客户端调用,也就是客户端可以向服务器端发送请求,方法的参数就是客户端向服务器端传送的消息,参数的个数原则上来讲不受限制,而且参数的类型支持string、bool、int等常用的数据类型。使用SignalR的简单聊天室。

2023-01-31 21:15:20 201 1

原创 鲜花网项目

背景:在实际的项目开发过程中,经常会涉及到传输实体到模型实体之间的转换,通过属性的逐个赋值我们可以将传入的参数传递给另外一个实体对象。在service下在新建一个文件夹Flower,在Flower文件夹下在分别新建一个Dto文件夹和一个抽象类IFlowerService.cs还有一个实现抽象的类FlowerService.cs。Dto用于传输数据,在Dto文件夹下在定义2个类一个传入的数据有哪些,一个传出的数据有哪些。Model下有个Entitys文件夹这个文件夹下有多少个类数据库对应的就有多少个表。

2023-01-30 22:13:54 172

原创 Vue3+.NET6实战 鲜花网电商项目

出现的现象:在上边可以看到webapi接口通过swagger或者浏览器能直接访问成功并返回,但是用axios时,浏览器报错了。ImageUrl="里面添加图片的地址",CourseUrl="里面添加页面跳转的地址"三.webapi路由的设置,以及使用swagger查看和调试接口。二.后端开发之webapi的新建-运行-以及目录讲解。在vue.config.js文件下加入下面的代码。在需要使用的组件里导入http中的方法即可。一.axios的使用,读取JSON数据。然后重启前端的项目就可以了。

2023-01-29 23:06:02 352

原创 Vue3+.NET6实战 鲜花网电商项目(二)

在src目录下新建一个文件夹命名为views,在views文件夹下新建文件,结尾都以.vue结尾。src目录下新建路由文件routes.ts按右键代码块写入页面和路由映射关系。import router from './routes'导入路由。URL地址和页面的适配(改变网页地址也跟着改变)在src目录下新建一个文件routes。app.use(router)使用路由。所有的模块有导入一定要导出不然会报错。然后在main函数中写入代码使用路由。在这个文件里导入包和写下对应的路径。在App.vue中引入。

2023-01-23 19:41:26 182

原创 Vue3+.NET6实战 鲜花网电商项目(一)

框架介绍Element Plus ,基于Vue3面向设计师和开发者的组件库安装命令我在下载时报了404错误,然后经过百度查看发现可能是默认版本太高所以我下载了npm install--save这个版本的,测试一下发现这个没有组件效果所以在vacode中引入vue add element-plus这个语句项目中导入从这开始import ElementPlus from 'element-plus'import 'element-plus/dist/index.css'导入样式包(后边导入到)

2023-01-18 21:29:55 451

原创 SqlSugar

SqlSugar 是一款 老牌 .NET 开源ORM框架,由果糖大数据科技团队维护和更新 ,开箱即用最易上手的ORM框架。二.功能介绍1. 相比EF Core【学习成本低一天学会】 ,多库支持更好 ,在国内拥有不逊色EF Core 的【开源生态】2. 支持 .NET 百万级【大数据】写入和更新、分表和几十亿查询和统计等 拥有成熟方案3. 支持 完整的SAAS一套应用 跨库查询 、租户分库 、租户分表 和 租户数据隔离。

2023-01-17 22:30:49 9300

原创 vue基础知识

对应的钩子函数是beforemount,在这一阶段,我们虽然依然得不到具体的DOM元素,但vue挂载的根节点已经创建,下面vue对DOM的操作将围绕这个根元素继续进行;Vue生命周期是指vue实例对象从创建之初到销毁的过程,vue所有功能的实现都是围绕其生命周期进行的,在生命周期的不同阶段调用对应的钩子函数可以实现组件数据管理和DOM渲染两大重要功能。vue的生命周期的思想贯穿在组件开发的始终,通过熟悉其生命周期调用不同的钩子函数,我们可以准确地控制数据流和其对DOM的影响;

2023-01-16 23:11:03 71

原创 ASP.NET Core 中的请求数据校验

上边我们提到了.NET Core 中内置数据校验机制的不足,这里推推荐一个优秀的数据校验框架--FluentValidation,它可以让我们用类似于EF Core 中Fluent API的方式进行校验规则的配置,也就是我们可以把对模型类的校验放到单独的校验类 FluentValidation 可以用于控制台、WPF、ASPNET Core 等各种NET目中。值得注意的是,我们在第7行代码的 withMessage方法中还可以用 Lambda表达式的形式使用模型类中的属性对报错信息进行格式化。

2023-01-13 22:56:28 466

原创 中间件的学习

一、中间件是什么我们都知道,任何的一个web框架都是把http请求封装成一个管道,每一次的请求都是经过管道的一系列操作,最终才会到达我们写的代码中。而中间件就是用于组成应用程序管道来处理请求和响应的组件。管道内的每一个组件都可以选择是否将请求转交给下一个组件,并在管道中调用下一个组件之前和之后执行某些操作。请求委托被用来建立请求管道,请求委托处理每一个HTTP请求。中间件可以认为有两个基本的职责:选择是否将请求传递给管道中的下一个中间件。可以在管道中的下一个中间件前后执行一些工作。

2023-01-12 22:07:19 214

原创 ASP.NET Core中的筛选器

第12 行代码中,我们使用 context.Exception 获取异常对象,然后在第 13 行代码中,把异常写入志,在第14~18 行代码中,我们检测程序的运行环境来决定 message 的值中是否显示异常堆栈提显然,在生产环境中,我们不能显示异常堆栈,以避免泄露程序的机密信息。ASP.NETCore 中的筛选器有以下5种类型:授权筛选器、资源筛选器、操作筛选器、异常筛选器和结果筛选器。类似的道理也适用于资源筛选器和结果筛选器,因此本节重点讲解异常筛选器和操作筛选器。二. 筛选器的执行顺序。

2023-01-11 21:12:59 191

原创 JWT的学习(3)之解决JWT无法提前撤回的难题

再如,用户在 A设备上登录了,稍后又在B设备上登录了,我们就需要把用户在 A设备上登录获得的 JWT 撤回,否则就会出现用户同时在多个设备上登录的问题。当服务器端收到客户端提交的JWT后,先把JWT 中的 JWTVersion 值和数据库中的 JWTVersion 值做比较,如果JWT中JWTVersion的 值小于数据库中 JWTVersion 的值,就说明这个 JWT 过期了,这样我们就实现了 JWT 的撤回 机制。第三步:编写一个操作筛选器,统一实现对所有的控制器的操作方法中JWT令牌的检查操作。

2023-01-10 20:53:07 295

原创 JWT的学习

三.我们知道,JWT 的编码和解码规则都是公开的,而且负载部分的 Claim 信息也是明文的,因此恶意攻击者可以对负载部分中的用户ID等信息进行修改,从而冒充其他用户的身份来访问服务器上的资源。为了防止客户端的数据造假,保存在客户端的令牌经过了签名处理,而签名的密钥只有服务器端才知道,每次服务器端收到客户端提交的令牌的时候都要检查一下签名,如果发现数据被篡改,则拒绝接收客户端提交的令牌。由此得出的结论:JWT中的负载存储的内容是明文形式存储的,因此不希望客户端知道的信息不能存储到JWT中。

2023-01-06 22:13:02 99

原创 .Identity框架(2)和EFCore的性能优化利器的学习

我们看生成的sqlsql是生成的一模一样,但是执行时间却是4.8倍。注意:AsNoTracking干什么的呢?无跟踪查询而已,也就是说查询出来的对象不能直接做修改。所以,我们在做数据集合查询显示,而又不需要对集合修改并更新到…无跟踪查询而已,也就是说查询出来的对象不能直接做修改。所以,我们在做数据集合查询显示,而又不需要对集合修改并更新到数据库的时候,一定不要忘记加上AsNoTracking。sql是生成的一模一样,但是执行时间却是4.8倍。二.Identity框架实现密码的重置。1.生成重置Token。

2023-01-06 00:03:17 207

原创 ASP.NET Core高级组件

这里教读者一个快速区分的技巧:Authorization 是用来验证“用户是否有权限访问”的,最常见的权限验证就是“用户是否拥有某个角色”,而“角色”的英文就是role,role 的首字母为r,而只有Authorization 中才包含r这个字母。ASPNET Core 提供了标识(identity)框架,它采用RBAC(role-based acc ontrol,基于角色的访问控制)策略,内置了对用户、角色等表的管理及相关的接口,从而简化了系统的开发。创建一个DemoController容器类。

2023-01-04 23:20:53 204

原创 EFCore中的表达式树

前言:表达式树 ,在日常的开发中,我们一般都直接编写 ctx Books.Where(b=>b.Price>20)这样的代码数据的查询。如果需要动态构造查询条件,我们也可以采用分步构造IQueryable的方式实现但是在编写框架等需要更灵活地创建查询条件的场景下,我们就需要使用动气构的技术。一.什么是表达式树表达式树(expression tree)是用树形数据结构来表示代码逻辑运算的技术,它让我们可以在运行时访问逻辑运算的结构。

2023-01-03 23:12:23 457

原创 EFCore高级技术

IEnumerable 泛型类在调用自己的 SKip 和 Take 等扩展方法之前数据就已经加载在本地内存里了,而 IQueryable 是将 Skip ,take 这些方法表达式翻译成 T-SQL 语句之后再向 SQL 服务器发送命令。也是延迟在我要真正显示数据的时候才执行。LINQ 查询一共提供了两类扩展方法,在 System.Linq 命名空间下,有两个静态类:Enumerable 类,它针对继承了 IEnumerable 接口的集合进行扩展;

2022-12-30 23:18:42 795

原创 ASP.NETCore中的缓存

1.语句[ResponseCache(Duration = 要缓存的时间)]

2022-12-29 23:40:11 523

原创 ASP.NETCore中的缓存

通过减少生成内容所需的工作,缓存可以显著提高应用的性能和可伸缩性。缓存对不经常更改的数据效果最佳。缓存生成的数据副本的返回速度可以比从原始源返回更快。应用程序应进行编写和测试到永远不会依赖于缓存的数据。ASP.NET Core 支持多种不同的缓存。最简单的缓存基于IMemoryCache,它表示存储在 Web 服务器内存中的缓存。在服务器场的多个服务器运行的应用程序应确保使用内存中缓存时,都粘滞会话。粘性会话可确保来自客户端的后续请求都转到同一台服务器。

2022-12-28 20:56:48 561

原创 Vue的学习

v-for指令需要使用item in items 形式的语法,其中items是原数据数组,而item则是被迭代的数组元素的别名。事件处理方法(很多事件处理逻辑会更为复杂,所以直接都写在v-on指令中不行因此v-on可以接收一个需要调用的方法名称methods)维护状态(如果要写的数据没有id就加index数组下标v-for(里边有2两个元素一个item另一个写index))v-if指令用于条件性的渲染一块内容,这块内容只会在指令的表达式返回true值的时候被渲染。v-for把一个数组映射为一组元素。

2022-12-27 21:21:40 41

原创 ASP.NET Core Web API基础

MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式。这种模式用于应用程序的分层开发。Controller层Models层view层运行结果当修改代码显示在浏览器上第一种方法:点击调试--》生成代码不调试(点一次)--》点击生成--》生成解决方案(每改变一次代码点击一次)第二种方法:点击这个图标(热重载)但有个缺点不适合太复杂的代码的改变例如新增或删除一个方法。

2022-12-26 23:14:12 990

原创 C#中悲观锁和乐观锁

需要说明的是锁需要与事务一起使用,执行select for update 会获取一个update锁,锁住这一行,等到执行完update后,会释放锁。所谓悲观锁,就是在进行操作时针对记录加上排他锁,这样其他事务如果想操作该记录,需要等待锁的释放。悲观锁在处理并发量和频繁访问时,等待时间比较长,冲突概率高,并发性能不好。乐观锁,是在提交对记录的更改时才将对象锁住,提交前需要检查数据的完整性。当这一行被锁住后,其他需要更新这一行的任务将会等待锁释放。4.定义Context。3.定义Config。

2022-12-23 21:42:44 656

原创 C#新语法以及通过代码查看EFCore的SQL语句

2.EFCore的Where方法返回的是IQueryable类型。7.在实现了Idisposable/IAsyncDisposable接口的类型的变量声明前加上using,当代码执行离开变量的作用域时,对象会被释放。11.C#新增了record类型的语法,编译器会为我们自动生成Equals、GetHashcode等方法。如果想要一个函数只能在构造函数初始化时赋值就能用init,(即使是同一个类中定义的方法去调用也会报错)1.上面两种方法无法直接得到一个操作的SQL语句,而且在操作很多的情况下,容易混乱。

2022-12-22 23:19:11 1307

原创 EFCore数据的增删改查EFCore的实体类配置

EFCore中也是采用约定大于配置的原则,EFCore会默认按照约定根据实体类以及DbContext的定义类实现和数据库表的映射配置,除非我们显示指定了配置规则,比如上一篇的ToTable("T_Books")1.作为ORM框架,EFCore要完成实体类对象和数据库中数据关系的映射,也就是实体类与数据库表的映射,以及实体类的属性与数据库表的列的映射。2.数据库表列的名字采用实体类属性的名字,列的数据类型采用和实体类属性类型兼容的类型。EFCore中的默认的规则约定有很多,这里只列出一些主要的约定规则。

2022-12-21 21:49:00 1943

原创 .NET的日志系统和EFCore环境搭建

基本概念:1.日志级别:Debug

2022-12-20 22:24:17 384

原创 依赖注入简称DI和配置系统

服务(service):对象;注册服务:服务容器:负责管理注册的服务查询服务:创建对象及关联对像对象生命周期:Transient(瞬态);Scoped(范围);Singleton(单例);

2022-12-19 23:21:17 223

原创 .NET Core 核心基础组件

NET Core 程序的各个部分是通过依赖注入功能被组装在一起的,可以说依赖注入是.NET Core的骨架,它支撑起了.NET Core 程序的运行。

2022-12-16 22:20:33 302

原创 C#中的LINQ

LINQ(Language Integrated Query),即语言集成查询是一组用于C#和Visual Basic语言的扩展。它允许编写C#或者Visual Basic代码以查询数据库相同的方式操作内存数据。

2022-12-15 23:20:35 4536

原创 c#中的异步编程

情景:你是一个饭店的厨师,有个订单过来了,要蒸鸡蛋和烤面包同步:先做蒸鸡蛋,(哪怕是鸡蛋在蒸的时候没事干也不去烤面包,而是在干等),做完了蒸鸡蛋再去烤面包异步:1.单线程 先做蒸鸡蛋,鸡蛋在蒸的时候,定好闹钟,然后去烤面包,面包在烤的过程中,也定个闹钟,当鸡蛋闹钟响起来的时候,不管是不是在给面包切片还是在等待面包烤熟,都去处理鸡蛋(如把鸡蛋从锅里端上来,送给客人),然后再回来处理烤面包,面包在烤的过程中可以打扫厨房,等烤面包的闹钟响起的时候,再去处理烤面包(如:送给客人)

2022-12-14 22:10:56 131

原创 C#中的异步编程

基于Task的异步模式(TAP)是Microsoft为.Net平台下使用Task进行编程所提供的一组建议,这种模式提供了可以被await消耗(调用)方法的APIs,并且当使用async关键字编写遵守这种模式的方法时,手写Task通常很有用。通常TAP用起来与普通方式没什么两样,但是不支持ref和out参数。

2022-12-13 21:52:34 876 1

原创 .NET Core理解和软件的使用

2..NET中最核心的框架是.net FrameWork,其中.net FrameWork是.net不可或缺的一部分提供稳 定的环境来保证环境正常运转。(1).NET Core是跨平台的.NET FrameWork只能在Windows上运行,.NET Core完全开源,.NET FrameWork部分开源。(2) .net core中发布的文件在别的系统中不用安装环境,但.net FrameWork 中发布的程序需要对方有环境。1. .NET是一种平台,并不是语言他的主流语言是C#。

2022-12-12 23:15:17 431

原创 .NET的增删改查以及自己理解的C#的知识点

就正确了(但String类型是可以的因为他是字符串类型)把createApp(App).use(router).mount('#app')中的createApp(App)改为 app。然后在main.js中use(router)的路径最后不要忘了引入 1.c#中的引用类型指向的是内存地址,可以多个对象指向同一个内存地址,一旦内存地址改变里边的变量都会发生改变。String s = @"c:/abs" 就相当于String s = "c:\\abs"

2022-12-09 22:56:23 544

原创 学习C#的第三天

1.语法2.索引器(Indexer)的用途3.重载索引器(Indexer)

2022-12-08 22:28:23 107

原创 c#的学习第二天

1.委托的概念 2.委托的声明和实例化 3.委托的多播 4.委托的应用 1.事件的概念 2.通过事件使用委托 3.事件的实例 1.线程的生命周期 2.主线程 3.创建线程 4.管理线程

2022-12-07 23:26:43 66

原创 C#的学习以及C#和Java的区别

一.C#介绍 C#是微软公司发布的一种由C和C++衍生出来的面向对象的编程语言、运行于.NET Framework和.NET Core(完全开源,跨平台)之上的高级程序设计语言。并定于在微软职业开发者论坛(PDC)上登台亮相。C#是微软公司研究员Anders Hejlsberg的最新成果。C#看起来与Java有着惊人的相似;它包括了诸如单一继承、接口、与Java几乎同样的语法和编译成中间代码再运行的过程。但是C#与Java有着明显的不同,它借鉴了Delphi的一个特点,与COM(组件对象模型)是直接集成的

2022-12-06 21:29:09 952 1

空空如也

空空如也

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

TA关注的人

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