摘要:
对于给定的一组记录,初始时假设第一个记录自成一个有序序列,其余的记录为无序序列。接着从第二个记录开始,按照记录的大小依次将当前处理的记录插入到其之前的有序序列中,直至最后一个记录插入到有序序列中为止。 以数组{38,65,97,76,13,27,49}为例,直接插入排序具体步骤如下所示。 第一步插入 阅读全文
摘要:
领域事件大部分发生在领域模型的业务逻辑方法上或者领域服务上,我们可以在一个领域事件发生的时候立即调用IMediator的Publish方法来发布领域事件。 我们一般在聚合根的实体类对象的ChangeName、构造方法等方法中发布领域事件,因为无论是应用服务还是领域服务,最终都要调用聚合根中的方法来操 阅读全文
摘要:
介绍 选择排序是一种简单直观的排序算法,它的基本原理如下: 对于给定的一组记录,经过第一轮比较后得到最小记录,然后将该记录与第一个记录的位置进行交换;接着对不包括第一个记录以外的其他记录进行第二轮比较,得到最小记录并与第二个记录进行位置交换;重复该过程,直到进行比较的记录只有一个时为止。 排序过程 阅读全文
摘要:
领域事件可以切断领域模型之间的强依赖关系,事件发布完成后,由事件的处理者决定如何响应事件,这样我们可以实现事件发布和事件处理之间的解耦。 在.NET中实现领域事件的时候,我们可以使用C#的事件语法,但是事件语法要求事件的处理者被显式地注册到事件的发布者对象中,耦合性很强,所以我们使用MediatR实 阅读全文
摘要:
1. 介绍 快速排序是一种非常高效的排序算法,它采用“分而治之”的思想,把大的拆分为小的,小的再拆分为更小的。 其原理如下: 对于一组给定的记录,通过一趟排序后,将原序列分为两部分,其中前一部分的所有记录均比后一部分的所有记录小,然后再依次对前后两部分的记录进行快速排序,递归该过程,直到序列中的所有 阅读全文
摘要:
上节我们使用Clients.All.SendAsync向连接到当前集线器的所有客户端推送消息,而在很多业务场景中,我们一般都只是向部分客户端推送消息。 在我们进行客户端筛选的时候,有3个筛选参数:ConnectionId、组和用户ID。ConnectionId是SignalR为每个连接分配的唯一标识 阅读全文
摘要:
集线器允许任意客户端连接的话会有安全问题,所以应该对连接进行验证,只有通过验证的用户才能连接集线器。SignalR支持验证和授权机制,我们同样可以用Cookie、JWT等方式进行身份信息的传递。由于JWT更符合项目的要求,因此这里讲解SignalR与JWT验证方式的使用。 第1步: 先在配置系统中配 阅读全文
摘要:
在多台服务器组成的分布式环境中,我们可以采用黏性会话或者禁用协商的方式来保证来自同一个客户端的请求被同一台服务器处理,但是在分布式环境中,还有其他问题需要解决。 假设聊天室程序被部署在两台服务器上,客户端1、2连接到了服务器A上的ChatRoomHub,而客户端3、4连接到了服务器B上的ChatRo 阅读全文
摘要:
1.推送方式 SignalR其实并不只是对WebSocket的封装,它支持多种服务器推送的实现方式,包括WebSocket、服务器发送事件(server-sent events)和长轮询。 SignalR的JavaScript客户端会先尝试用WebSocket连接服务器;如果失败了,它再用服务器发送 阅读全文
摘要:
SignalR的介绍 WebSocket 在传统的HTTP中,只能客户端主动向服务器端发起请求,服务器端无法主动向客户端发送消息。有的业务场景下,我们需要服务器端主动向客户端发送消息,比如Web聊天室、OA系统、站内消息等。 为了实现服务器端向客户端推送消息,在2008年诞生了WebSocket协议 阅读全文
摘要:
Swagger中默认没有提供设置自定义HTTP请求报文头的方式,因此对于需要传递Authorization报文头的接口,调试起来很麻烦。我们可以通过对OpenAPI进行配置,从而让Swagger中可以发送Authorization报文头。 我们需要修改Program.cs的AddSwaggerGen 阅读全文
摘要:
.NET封装了对于JWT的操作,让我们在程序中使用JWT进行鉴权和授权更简单。 ASP.NET Core中使用封装的JWT 第1步,我们先在配置系统appsettings.json中配置一个名字为JWT的节点,并在节点下创建SigningKey、ExpireSeconds两个配置项,分别代表JWT的 阅读全文
摘要:
实现用户登录功能的经典做法是用Session,但是在前后端分离、分布式环境下已经不适应了,而现在我们倾向于采用JWT代替Session实现登录。 JWT全称是JSON web token,它是使用JSON格式来保存令牌信息的。JWT机制不是把用户的登录信息保存在服务器端,而是把登录信息(也叫作令牌) 阅读全文
摘要:
在一个系统中,不是所有功能都能被自由地访问的,比如有的功能需要注册用户才能访问,有的功能需要VIP用户才能访问。针对资源的访问限制有两个概念:Authentication与Authorization,即鉴权与授权。 Authentication:用来对访问者的用户身份进行验证; Authorizat 阅读全文
摘要:
事件绑定 1.Vue如何处理事件? v-on 指令用法 <input type = 'button' v-on:click = 'num++'/> v-on 简写形式 <input type = 'button' @click = 'num++'/> 2.事件函数的调用方式 直接绑定函数名称 <bu 阅读全文