摘要:
连接 //创建连接 var bus = RabbitHutch.CreateBus(“host=myServer;virtualHost=myVirtualHost;username=mike;password=topsecret”); //关闭连接 bus.Dispose(); 连接字符串说明 h
阅读全文
posted @ 2020-09-05 11:17
.Neterr
阅读(409)
推荐(1)
摘要:
介绍 EasyNetQ是一个在RabbitMQ.Client类库之上提供服务的组件集合。做了这些事情,像序列化、错误处理、线程管理、连接管理等。通过一个Mini-Ioc容器组织在一起。你能很容易用你自己实现去替换这些组件。所以如果你喜欢用XML序列化而不是用JSON,仅仅需要以一个ISerializ
阅读全文
posted @ 2020-09-05 08:04
.Neterr
阅读(760)
推荐(0)
摘要:
官方msdn地址介绍: https://docs.microsoft.com/zh-cn/dotnet/api/system.reflection.emit?view=netframework-4.8 https://docs.microsoft.com/zh-cn/dotnet/api/syste
阅读全文
posted @ 2020-09-04 12:00
.Neterr
阅读(424)
推荐(0)
摘要:
QOS:服务质量保证功能 Prefetch count (预取数目) prefetch是指单一消费者最多能消费的unacked messages数目。 mq为每一个consumer设置一个缓冲区,大小就是prefetch。每次收到一条消息,MQ会把消息推送到缓存区中,然后再推送给客户端。当收到一个a
阅读全文
posted @ 2020-08-31 15:05
.Neterr
阅读(2606)
推荐(0)
摘要:
用于http级别缓存,防止在一次http请求中查询相同数据 /// <summary> /// 使用HttpContext的暂存对象存储要被缓存的信息 /// </summary> public class HTTPCacheManager { private readonly IHttpConte
阅读全文
posted @ 2020-08-31 00:12
.Neterr
阅读(166)
推荐(0)
摘要:
容器接口: /// <summary> /// Ioc容器接口 /// </summary> public interface IContainer : IServiceProvider, IServiceRegister { } /// <summary> /// 服务接口 /// </summa
阅读全文
posted @ 2020-08-30 21:24
.Neterr
阅读(150)
推荐(0)
摘要:
消息处理父类: /// <summary> /// 异步消息处理 /// </summary> public abstract class AsyncProcessor<TMessage> { private readonly BlockingCollection<TMessage> _messag
阅读全文
posted @ 2020-08-30 15:42
.Neterr
阅读(299)
推荐(0)
摘要:
简介: Dapper.Contrib是对Dapper的进一步封装,使对象的基本增删改查等操作进一步简化。 如果只使用Dapper,增删改操作都需要手写sql,然后使用Execute()执行。Dapper.Contrib不需要写sql,操作对象即可 entity配置: [Table("Demo")]
阅读全文
posted @ 2020-08-28 16:21
.Neterr
阅读(1293)
推荐(0)
摘要:
介绍 Dapper是一个用于.NET的简单的对象映射,支持异步,并且在速度上有着轻ORM之王的称号。 Dapper扩展IDbConnection,提供有用的扩展方法来查询数据库。 个人觉得他非常好用,现在已经取代了原来的SqlHelper。优点: 使用Dapper可以自动进行对象映射。Dapper原
阅读全文
posted @ 2020-08-28 16:06
.Neterr
阅读(446)
推荐(0)
摘要:
MySQL、SQL SERVER提供了三种方法临时存储结果集,分别是临时表、表变量和公用表表达式。 临时表 临时表需要在临时数据库TempDB中通过I/O操作来创建表结构,一旦用户退出SQL Server环境,临时表会自动被删除。临时表有两种,一种是本地临时表,仅在当前会话中可见,前缀是【#】;一种
阅读全文
posted @ 2020-08-28 10:12
.Neterr
阅读(161)
推荐(0)
摘要:
程序集:Microsoft.AspNetCore.WebUtilities 命名空间:Microsoft.AspNetCore.WebUtilities QueryHelpers: public static class QueryHelpers { // // 摘要: // /// Append
阅读全文
posted @ 2020-08-27 10:26
.Neterr
阅读(492)
推荐(0)
摘要:
1 /// <summary> /// Type 拓展 /// </summary> public static class TypeExtensions { /// <summary> /// 确定当前实例是否是继承或者实现某个Type /// </summary> /// <param name
阅读全文
posted @ 2020-08-27 10:14
.Neterr
阅读(174)
推荐(0)
摘要:
Topshelf 是一个用来部署基于.NET Framework 开发的服务的框架。简化服务创建于部署过程,并且支持控制台应用程序部署为服务。本文基于 .net core 控制台应用程序部署为服务(.net Framework 可用)。 第一步:创建名为 TopshelfDemo 的控制台应用程序。
阅读全文
posted @ 2020-08-26 20:34
.Neterr
阅读(196)
推荐(0)
摘要:
介绍 ttpContext是ASP.NET中的核心对象,每一个请求都会创建一个对应的HttpContext对象,我们的应用程序便是通过HttpContext对象来获取请求信息,最终生成响应,写回到HttpContext中,完成一次请求处理。 IHttpApplication WebHost 在启动
阅读全文
posted @ 2020-08-25 09:32
.Neterr
阅读(728)
推荐(0)
摘要:
介绍: JSON Patch是一种描述JSON文档更改的格式。当只更改了一部分时,可用于避免发送整个文档。当与HTTP PATCH方法结合使用时,它允许以符合标准的方式对HTTP API进行部分更新。 JSON Patch本身就是JSON文档。 为什么使用JsonPatch: JSON Patch的
阅读全文
posted @ 2020-08-20 15:15
.Neterr
阅读(2678)
推荐(1)
摘要:
简介 DDD是一种开发理念,核心是维护一个反应领域概念的模型(领域模型是软件最核心的部分,反应了软件的业务本质),然后通过大量模式来指导模型设计与开发。 DDD中最核心的是Domain Model(领域模型),和领域模型相对的是事务脚本。领域模型和事务脚本说到底就是面向对象和面向过程的区别。 DDD
阅读全文
posted @ 2020-08-16 11:27
.Neterr
阅读(1012)
推荐(0)
摘要:
信号 除了锁之外,.Net还提供了线程间更自由通讯工具,它们提供了通过“信号”通讯的机制。有时候你需要让线程处于等待状态,直到接收其他线程发来的消息,这就叫发送信号 最简单的发送信号的方式就是使用ManualResetEvent、ManualResetEvent。调用它的WaitOne()方法阻塞线
阅读全文
posted @ 2020-08-12 21:38
.Neterr
阅读(203)
推荐(0)
摘要:
Provider和Factory的区别: 可以往工厂里面添加Provider。也就是说Factory里面可能存在着许许多多的Provider。而这些Provider将是最后Factory创建出结果的必要支撑。 我们可以在项目中根据已有的provider接口,演变出各种的策略来,比如 XMLLogPr
阅读全文
posted @ 2020-08-11 00:35
.Neterr
阅读(2701)
推荐(0)
摘要:
概述 传统的单体应用一般采用的是数据库提供的事务一致性,通过数据库提供的提交以及回滚机制来保证相关操作的ACID,这些操作要么同时成功,要么同时失败。各个服务看到数据库中的数据是一致的,同时数据库的操作也是相互隔离的,最后数据也是在数据库中持久存储的。 在分布式环境下由于各个服务访问的数据是相互分离
阅读全文
posted @ 2020-08-08 19:03
.Neterr
阅读(479)
推荐(1)
摘要:
一个事务要更新一行,如果刚好有另外一个事务拥有这一行的行锁,会被锁住,进入等待状态。既然进入了等待状态,那么等到这个事务自己获取到行锁要更新数据的时候,它读到的值又是什么呢? 事务A事务B事务C start transaction consistent snapashot; start transa
阅读全文
posted @ 2020-08-08 16:50
.Neterr
阅读(360)
推荐(0)
摘要:
背景 在使用容器部署时,每次修改配置文件都需要重新构建镜像。当然你也可能会说,我的配置文件很稳定不需要修改,但你又如何确保配置文件中一些机密配置的安全问题呢?比如暴露了你的远程数据库的连接信息。 ConfigMap/Secret K8S中引入了ConfigMap/Secret来存储配置数据,分别用于
阅读全文
posted @ 2020-08-08 10:02
.Neterr
阅读(426)
推荐(0)
摘要:
DateTime time = DateTime.Now; time.ToString("格式化字符串格式",DateTimeFormatInfo.InvariantInfo) /字符串格式 * * d :08/17/2000 * D :Thursday, August 17, 2000 * f :
阅读全文
posted @ 2020-08-04 10:53
.Neterr
阅读(173)
推荐(0)
摘要:
相关概念 RPC,是Remote Procedure Call的简称,即远程过程调用。 通俗点来说,假设有两台服务器A和B,一个应用部署在A服务器上,想要调用B服务器上应用提供的函数或者方法,由于不在同一个内存空间,不能直接调用,需要通过网络来表达调用的语义和传达调用的数据。 一般在RabbitMQ
阅读全文
posted @ 2020-07-26 16:55
.Neterr
阅读(206)
推荐(0)
摘要:
如何保证消息100%投递成功: 保证消息投递成功需要在生产者、消息队列、消费者3个环节控制 消息队列 消息队列需要将交换器、队列、消息持久化,防止因断电等问题导致数据因没有持久化而丢失 生产者 生产者需要确保消息发送到消息队列,需要使用事务或消息确认的方式可以确保数据发送成功,推荐使用消息确认方式。
阅读全文
posted @ 2020-07-26 16:46
.Neterr
阅读(893)
推荐(0)
摘要:
定义 迭代器模式提供了一种方法,顺序访问集合对象中的元素,而又不暴露该对象的内部实现。 将集合中遍历元素的操作抽象出来,这样符合面向对象设计原则中的单一职责原则,我们要尽可能的分离这些职责,用不同的类去承担不同的责任,避免一个类中承担太多的责任。迭代器模式就是用迭代器类来承担遍历集合元素的责任。 自
阅读全文
posted @ 2020-07-25 11:31
.Neterr
阅读(103)
推荐(0)
摘要:
Header交换机案例 private void btnHeadersPublish_Click(object sender, EventArgs e) { using (var channel = connection.CreateModel()) { channel.ExchangeDeclar
阅读全文
posted @ 2020-07-23 23:18
.Neterr
阅读(436)
推荐(0)
摘要:
发布消息(BasicPublish) void BasicPublish(string exchange, string routingKey, bool mandatory, IBasicProperties basicProperties, byte[] body); void BasicPub
阅读全文
posted @ 2020-07-23 23:16
.Neterr
阅读(465)
推荐(0)
摘要:
RabbitMQ六种消息模型 Hello World 最简单的消息模型,图中没有交换器,实际使用的是默认交换器,默认交换器的类型是Direct,默认'binding key'和队列名同名 发送消息时交换器名传空字符串,binding key传队列名 // 发消息 using (var channel
阅读全文
posted @ 2020-07-23 22:49
.Neterr
阅读(217)
推荐(0)
摘要:
Queue参数 durable:是否持久化, 队列默认是存放到内存中的,rabbitmq重启会丢失,如果想重启之后还存在就要使队列持久化,保存到Erlang自带的Mnesia数据库中,当rabbitmq重启之后会读取该数据库 exclusive:是否排外的,队列在当前connection下的chan
阅读全文
posted @ 2020-07-21 23:46
.Neterr
阅读(1093)
推荐(0)
摘要:
概述 分布式锁是一种用于协调多个进程/节点之间的并发访问的机制,确保某个资源在同一时刻只能被一个应用所使用。它通常通过一些共享的外部存储系统来实现跨进程的同步和互斥。在分布式系统中,分布式锁用于确保在同一时间,只有一个进程/服务可以执行临界区代码,从而避免了并发操作中的冲突和数据不一致。 Distr
阅读全文
posted @ 2020-07-20 18:55
.Neterr
阅读(116)
推荐(0)
摘要:
显示当前服务器版本 ``` select version(); ``` 显示当前用户 ``` select user(); ``` 显示当前用户打开的数据库 ``` select database(); ``` 连接id ``` select connection_id(); ``` 最后插入记录i
阅读全文
posted @ 2020-07-20 18:01
.Neterr
阅读(142)
推荐(0)
摘要:
# SQL分类 * `DDL(Data Definition Languages、数据定义语言)`,这些语句定义了不同的数据库、表、视图、索 引等数据库对象,还可以用来创建、删除、修改数据库和数据表的结构。 主要的语句关键字包括 CREATE 、 DROP 、 ALTER 等 * `DML(Data
阅读全文
posted @ 2020-07-19 20:38
.Neterr
阅读(467)
推荐(0)
摘要:
乐观锁与悲观锁: 众所周知锁有两种:乐观锁与悲观锁。独占锁是一种悲观锁,而 Lock 就是一种独占锁,Lock 会导致其它所有未持有锁的线程阻塞,而等待持有锁的线程释放锁。所谓乐观锁就是,每次不加锁而是假设没有冲突而去完成某项操作,如果因为冲突失败就重试,直到成功为止,这个过程叫自旋。而乐观锁用到的
阅读全文
posted @ 2020-07-19 16:22
.Neterr
阅读(815)
推荐(0)
摘要:
Redis是一个高效的内存数据库,它支持包括String、List、Set、SortedSet和Hash等数据类型的存储,在Redis中通常根据数据的key查询其value值,Redis没有条件查询,在面对一些需要分页或排序的场景时(如评论,时间线),Redis就不太好不处理了。 前段时间在项目中需
阅读全文
posted @ 2020-07-18 11:37
.Neterr
阅读(3067)
推荐(0)
摘要:
实现一个.net framework中Server功能 ConfigureWebServices(this IServiceCollection services){ services.AddSingleton(typeof(HttpServerUtilityBase)); } /// <summa
阅读全文
posted @ 2020-07-16 14:45
.Neterr
阅读(661)
推荐(0)
摘要:
同源策略 同源策略是一个重要的安全策略,它用于限制一个origin的文档或者它加载的脚本如何能与另一个源的资源进行交互。它能帮助阻隔恶意文档,减少可能被攻击的媒介。 同源的定义 如果两个 URL 的 protocol、port 和 host 都相同的话,则这两个 URL 是同源。 源的更改 满足某些
阅读全文
posted @ 2020-07-15 14:03
.Neterr
阅读(1083)
推荐(0)
摘要:
Core为我们提供了自定义token验证的接口,当我们需要使用自己的方式验证token时可以使用。 比如Jwt只能数据签名,不能加密。当需要校验加密的jwt token。在登录时将jwt token加密后传给客户端,客户端回传token。这时需要我们自定义token校验。 自定义token校验,实现
阅读全文
posted @ 2020-07-14 22:15
.Neterr
阅读(5823)
推荐(1)
摘要:
为什么优先使用组合而不是继承 继承的起源,来自于多个类中相同特征和行为的抽象。子类可以通过继承父类,那么可以调用父类中定义的方法和属性,从而达到代码重用的目的。另外,子类除了重用父类的代码以外,还可以扩展自身的属性和方法,来描述子类特有的特征和行为。 例如:人类和马类这两个类,有什么共同的特征和行为
阅读全文
posted @ 2020-07-13 10:14
.Neterr
阅读(163)
推荐(0)
摘要:
介绍 支持数字类型、浮点类型运算表达式运算,看下面的案例 具体步骤 1)初始化两个栈:运算符栈s1和储存中间结果的栈s2; 2)从左至右扫描中缀表达式; 3)遇到操作数时,将其压s2; 4)遇到运算符时,比较其与s1栈顶运算符的优先级: (1)如果s1为空,或栈顶运算符为左括号“(”,则直接将此运算
阅读全文
posted @ 2020-07-12 23:47
.Neterr
阅读(403)
推荐(0)
摘要:
链表 链表是以节点的方式存储 每个节点包含data域,next域,next域指向下一个节点 链表分为:带头结点、不带头节点,根据实际需求确定 客户端 LinkedList<string> list = new LinkedList<string>(); list.Add("fan"); list.A
阅读全文
posted @ 2020-07-11 23:42
.Neterr
阅读(127)
推荐(0)