摘要:
简介 .net core中有两种读取配置的方式: 通过注入IConfiguration读取配置 通过强类型的Options,通过注入来获取到配置对象。 Options类的命名规则:{Object}Options 建议使用强类型的Options,这样在你想获取某个配置时,只需要注入对应的Options 阅读全文
摘要:
简介 简单说,就是将对象的创建和销毁工作交给DI容器来进行,调用方只需要接收注入的对象实例即可。 涉及到的nuget包: Microsoft.Extensions.DependencyInjection.Abstractions:抽象定义; Microsoft.Extensions.Dependen 阅读全文
摘要:
简介 微软官方的开源项目eShopOnContainers中,用到了一个实现中介者模式的类库:MediatR。 他是一个低调的类库,致力于解决一个简单的问题:解耦进程内消息的发送与处理。 中介者模式的定义为:用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互应用,从而使其耦合松散, 阅读全文
摘要:
简介 CAP 是一个EventBus,同时也是一个在微服务或者SOA系统中解决分布式事务问题的一个框架。它有助于创建可扩展,可靠并且易于更改的微服务系统。 分布式事务是在分布式系统中不可避免的一个硬性需求,CAP 没有采用两阶段提交(2PC)这种事务机制,而是采用的 本地消息表+MQ 这种经典的实现 阅读全文
摘要:
# 概述 聚合查询,它是在搜索的结果上,提供的一些聚合数据信息的方法。比如:求和、最大值、平均数等。 #### 基本语法 ``` GET /_search { "aggs": { "": { // 聚合名称需要自己定义 "": { "field": "" } } } } ``` aggs_name: 阅读全文
摘要:
文本分析器(Text analysis) 在ES当中,只有text类型的字段才会用到全文索引。 我们在建立索引和搜索时,都会用的分析器。 分析器使ES支持全文索引,搜索的结果是和你搜索的内容相关的,而不是你搜索内容的确切匹配。 分析器之所以能够使搜索支持全文索引,都是因为有分词器(tokenizat 阅读全文
摘要:
简介 查询有两种方式: QueryString查询 通过query参数传递查询语句(?q=name:zhangsan) DSL查询 通过DSL语句查询,可以写出灵活复杂的查询语句,语言以json请求体的形式出现 查询响应信息说明 { "took" : 346, // 整个检索消耗的时间, 单位是毫秒 阅读全文
摘要:
添加文档: 添加单个文档 POST index1/user/1000 { "id":1001, "name":"张三", "age":20, "sex":"男" } 如果不指定id,将随机生成一个,id的字段名是_id 删除文档: 删除指定id的文档 DELETE /blog/article2/1 阅读全文
摘要:
概念 Mapping(映射)用来定义文档包含的字段名、字段数据类型以及文档如何存储和索引这些字段的规则 显式映射 & 动态映射 显式映射 显式映射以完全控制字段的存储和索引方式。 显式映射的意义: 哪些字符串字段应该作为全文字段(text)处理。 哪些字段包含数字、日期或地理位置。 日期值的格式。 阅读全文
摘要:
索引 查看全部索引 GET _cat/indices?v&pretty health:当前服务器健康状态: green(集群完整) yellow(单点正常、集群不完整) red(单点不正常) status:索引打开、关闭状态 index:索引名 uuid:索引统一编号 pri:主分片数量 rep:副 阅读全文
摘要:
参考: https://blog.csdn.net/u010476739/article/details/118339679 https://www.cnblogs.com/wuxiaoqian726/archive/2011/03/19/1988931.html 先说下结论: 如果系统不考虑全球化 阅读全文
摘要:
概述 授权就是某人针对某个资源可以做什么操作。 某人:登录系统的用户 资源:可以任何形式的资源,比如订单、产品、页面...。权限判断中不一定需要资源的参与,比如只要用户登录,就允许使用系统中所有功能。此时整个系统就是资源,允许所有操作。 操作:比如查看、审核、新增、修改... dotnet core 阅读全文
摘要:
简介 .netcore中的配置模块可以将你的配置文件自动读取成一个树状结构(逻辑上是树状,实际上是扁平化的),这样你就可以方便快捷的获取配置数据了。 可使用多种类型数据源(json、内存、xml、ini、command、env...),还可以自定义配置源; 支持多环境版本、如果多次添加相同的配置,后 阅读全文
摘要:
接口的默认实现 实现类中可以不实现接口中有默认实现的方法,以下代码不报错 public interface IPerson { void Say() { Console.WriteLine("hello"); } } public class Teacher:IPerson { } 但是不可以通过实 阅读全文
摘要:
介绍 早期路由系统 .NET Core2.2之前的框架中,中间件管道的结尾有一个Router中间件,也就是路由中间件,这个路由中间件会把HTTP请求和路由数据发送给MVC的一个组件,它叫做MVC Router Handler。 这个MVC 路由 Handler就会使用这些路由数据来决定哪个Contr 阅读全文
摘要:
概念 外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。门面模式又称为外观模式,它是一种对象结构型模式 何时使用 当子系统比较复杂,我们提供一个统一的对外接口用于简化子系统调用,比如项目中每个 阅读全文
摘要:
观察者模式用于解耦调用者与被调用者,项目中用的EventBus是观察者模式的实现 详细代码在这里:https://www.cnblogs.com/fanfan-90/p/11971178.html 阅读全文
摘要:
Set数据类型 Api (1).SetAdd:添加数据,可以单独1个key-1个value,也可以1个key-多个value添加 (2).SetLength:求key集合的数量 (3).SetContains:判断key集合中是否包含指定值 (4).SetRandomMember:随机获取指定key 阅读全文
摘要:
APP、前后端分离、后端项目之间调用都涉及接口调用,传输的时候如何防止被抓包、偷窥、伪造、超时、重放 解决方案: token授权认证,防止未授权用户获取数据 时间戳,防止超时重放 签名,防止数据篡改 HTTPS,防止数据明文传输 Token: 就是一个经过加密或签名的临时令牌,需要设置过期时间,每次 阅读全文
摘要:
dotnet cli (Command-Line Interface) .net 源代码和二进制文件管理工具。需要安装 .NET Core SDK。 终端执行 dotnet --info 可以打印出有关 .NET Core 安装和计算机环境的详细信息。 命令: 查看版本 dotnet --versi 阅读全文
摘要:
设置vs支持调试源码 调试-选项-调试-常规 调试-选项-调试-符号 查看dll路径以及符号加载情况: 调试-窗口-模块 .NET Core源码: https://github.com/dotnet/aspnetcore 阅读全文
摘要:
CodeTemplate(模板声明标签) 创建好一个模板后第一步要指明这是一个C#语言的模板 <%@ CodeTemplate Language="C#" TargetLanguage="C#" Description="Generates a class including a special i 阅读全文
摘要:
介绍 NuGet是.NET的软件包管理器。NuGet Gallery 是所有软件包作者和消费者都使用的中央软件包存储库。 简单来说,nuget包解决了dll引用的问题,开发者可以通过打包,然后发布到公有主机或者私有主机上,供其他开发者使用。可以大大的提高创建一个.NET应用的效率。 修改Nuget包 阅读全文
摘要:
属性 程序集特性 .NET Core 2.1之前程序集特性存储在AssemblyInfo 文件中,2.1开始程序集特性移到MSBuild属性中 | 属性 | Property | 要禁用的属性 | | | | | | AssemblyCompanyAttribute | Company | Gene 阅读全文
摘要:
IFileProvider File Providers是文件系统之上的一层抽象。它的主要接口是IFileProvider,IFileProvider对象为我们构建了一个具有层次化目录结构的文件系统。由于IFileProvider是一个接口,所以由它构建的是一个抽象化的文件系统,这里所谓的目录和文件 阅读全文
摘要:
先看效果: string js = @"var a=1 alert(a);//注释1 alert(a);/*注释2*/"; string result = PackBus.PackJavascript(js).Replace("\n", "\r\n"); result: eval(function( 阅读全文
摘要:
默认情况下,生成项目时会把Views的视图文件编译成dll*.Views.dll 同时我们也看不到Views文件夹,如果有频繁修改视图内容的需求,这样就很不方便 我们可以将视图预编译改为运行时编译 1、添加Nuget: <PackageReference Include="Microsoft.Asp 阅读全文
摘要:
源代码的动态编译问题,我们知道这个可以利用Roslyn来解决。 实现一个编译助手类,它的Compile方法将会对参数sourceCode提供的源代码进行编译。该方法返回源代码动态编译生成的程序集,它的第二个参数代表引用的程序集。 添加Nuget包: <PackageReference Include 阅读全文
摘要:
WebMarkupMin可以做什么: 运行时最小化html、css、js(去除空格、注释...) 对HTTP启用压缩(GZip、Deflate、Brotli..) 使用步骤: 添加Nuget包: <PackageReference Include="WebMarkupMin.AspNet.Brotl 阅读全文
摘要:
一、前言 源码 1、最近一直在看项目性能优化方式,俗话说的好项目优化第一步那当然是添加缓存,我们的项目之所以卡的和鬼一样,要么就是你的代码循环查询数据库(这个之前在我们的项目中经常出现,现在慢慢在修正)或者代码做了很多不该做的事情。这个时候就可以引入我们的缓存了。(只要你的代码不是写的特别差,比如之 阅读全文
摘要:
今天在工作上遇到这么个需求:需要获取对象上所有属性的值,但并事先并不知道对象的类型。 我的第一反应就是使用反射,但是这个操作会进行多次,大量的反射肯定会有性能影响。虽然对我这个项目无关紧要,但我还是选择了另外一种解决方案:构建表达式树,再生成委托,然后将委托缓存在字典里。代码如下: 首先构建表达式树 阅读全文
摘要:
介绍 ContractResolver能做什么: 为属性添加一些序列化设置 自定义属性名 有选择的序列化属性 CamelCasePropertyNamesContractResolver Newtonsoft提供了CamelCasePropertyNamesContractResolver,继承自C 阅读全文
摘要:
通常的序列化与反序列化中的json结构与c#中的类模型结构是相对应的,我们是否可以在序列化一个对象时候,让我们json的数据结构能按照自己的意愿,而不必与该对象的数据结构一样呢?,比如说,一个对象,只有一个名为"ID"的int类型的属性,值为1,如果序列化该对象,则能得到json:{"ID":1}, 阅读全文
摘要:
一、JSON使用JsonPropertyAttribute重命名属性名 [JsonProperty("name")] 二、JSON使用JsonPropertyAttribute序列化升序排序属性 [JsonProperty(Order=4)] 三、反序列化属性时,Required指定属性性质 指定其 阅读全文
摘要:
序列化设置的几种方式: 全局序列化:(在之后使用JsonConvert进行序列化时都有效) JsonConvert.DefaultSettings = new Func<JsonSerializerSettings>(() => { Newtonsoft.Json.JsonSerializerSet 阅读全文
摘要:
Task(任务) 任务是 MSBuild 真正要执行的东西,例如编译、打包和下载文件等等任务,可以由我们自行用 C# 或者 VB.NET 等语言实现。 关于任务的编写,我们将在以后进行介绍,这里只简单介绍一下任务的使用。 MSBuild 也内置了很多任务,例如 Message 用来打印信息、Warn 阅读全文
摘要:
MSBuild MSBuild是在.NET 2.0中引入的针对Visual Studio的构建系统。它可以执行构建脚本,完成各种Task——最主要的是把.NET项目编译成可执行文件或者DLL。从技术角度来说,制作EXE或者DLL的重要工作是由编译器(csc,vbc等等)完成的。MSBuild会从内部 阅读全文
摘要:
IContainer是通过ContainerBuilder.Build()方法创建的,由于Autofac有限制,Build()方法只能调用一次,所以我们不能直接通过Build()创建IContainer。 Autofac提供了以下方式可以获取Icontainer: public class Glob 阅读全文
摘要:
如果publish、Subscribe所用的Message不是同一类型如何处理? 替换组件ITypeNameSerializer 1、下面这个类是从Easynetq源码中拷出来的,主要包含两个方法Serialize、Deserialize 由于这两个方法不是虚方法,所以不能重写,我们把源码拷出来,把 阅读全文
摘要:
AsnyncLocal与ThreadLocal都是存储线程上下文的变量,但是,在实际使用过程中两者又有区别主要的表现在: AsyncLocal变量可以在父子线程中传递,创建子线程时父线程会将自己的AsyncLocal类型的上下文变量赋值到子线程中,但是,当子线程改变线程上下文中AsnycLocal变 阅读全文