上一页 1 ··· 3 4 5 6 7 8 9 10 11 下一页
摘要: 背景 在使用容器部署时,每次修改配置文件都需要重新构建镜像。当然你也可能会说,我的配置文件很稳定不需要修改,但你又如何确保配置文件中一些机密配置的安全问题呢?比如暴露了你的远程数据库的连接信息。 ConfigMap/Secret K8S中引入了ConfigMap/Secret来存储配置数据,分别用于 阅读全文
posted @ 2020-08-08 10:02 .Neterr 阅读(414) 评论(0) 推荐(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 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 相关概念 RPC,是Remote Procedure Call的简称,即远程过程调用。 通俗点来说,假设有两台服务器A和B,一个应用部署在A服务器上,想要调用B服务器上应用提供的函数或者方法,由于不在同一个内存空间,不能直接调用,需要通过网络来表达调用的语义和传达调用的数据。 一般在RabbitMQ 阅读全文
posted @ 2020-07-26 16:55 .Neterr 阅读(187) 评论(0) 推荐(0) 编辑
摘要: 如何保证消息100%投递成功: 保证消息投递成功需要在生产者、消息队列、消费者3个环节控制 消息队列 消息队列需要将交换器、队列、消息持久化,防止因断电等问题导致数据因没有持久化而丢失 生产者 生产者需要确保消息发送到消息队列,需要使用事务或消息确认的方式可以确保数据发送成功,推荐使用消息确认方式。 阅读全文
posted @ 2020-07-26 16:46 .Neterr 阅读(842) 评论(0) 推荐(0) 编辑
摘要: 定义 迭代器模式提供了一种方法,顺序访问集合对象中的元素,而又不暴露该对象的内部实现。 将集合中遍历元素的操作抽象出来,这样符合面向对象设计原则中的单一职责原则,我们要尽可能的分离这些职责,用不同的类去承担不同的责任,避免一个类中承担太多的责任。迭代器模式就是用迭代器类来承担遍历集合元素的责任。 自 阅读全文
posted @ 2020-07-25 11:31 .Neterr 阅读(97) 评论(0) 推荐(0) 编辑
摘要: Header交换机案例 private void btnHeadersPublish_Click(object sender, EventArgs e) { using (var channel = connection.CreateModel()) { channel.ExchangeDeclar 阅读全文
posted @ 2020-07-23 23:18 .Neterr 阅读(433) 评论(0) 推荐(0) 编辑
摘要: 发布消息(BasicPublish) void BasicPublish(string exchange, string routingKey, bool mandatory, IBasicProperties basicProperties, byte[] body); void BasicPub 阅读全文
posted @ 2020-07-23 23:16 .Neterr 阅读(451) 评论(0) 推荐(0) 编辑
摘要: RabbitMQ六种消息模型 Hello World 最简单的消息模型,图中没有交换器,实际使用的是默认交换器,默认交换器的类型是Direct,默认'binding key'和队列名同名 发送消息时交换器名传空字符串,binding key传队列名 // 发消息 using (var channel 阅读全文
posted @ 2020-07-23 22:49 .Neterr 阅读(210) 评论(0) 推荐(0) 编辑
摘要: Queue参数 durable:是否持久化, 队列默认是存放到内存中的,rabbitmq重启会丢失,如果想重启之后还存在就要使队列持久化,保存到Erlang自带的Mnesia数据库中,当rabbitmq重启之后会读取该数据库 exclusive:是否排外的,队列在当前connection下的chan 阅读全文
posted @ 2020-07-21 23:46 .Neterr 阅读(1054) 评论(0) 推荐(0) 编辑
摘要: 显示当前服务器版本 ``` select version(); ``` 显示当前用户 ``` select user(); ``` 显示当前用户打开的数据库 ``` select database(); ``` 连接id ``` select connection_id(); ``` 最后插入记录i 阅读全文
posted @ 2020-07-20 18:01 .Neterr 阅读(129) 评论(0) 推荐(0) 编辑
摘要: # SQL分类 * `DDL(Data Definition Languages、数据定义语言)`,这些语句定义了不同的数据库、表、视图、索 引等数据库对象,还可以用来创建、删除、修改数据库和数据表的结构。 主要的语句关键字包括 CREATE 、 DROP 、 ALTER 等 * `DML(Data 阅读全文
posted @ 2020-07-19 20:38 .Neterr 阅读(428) 评论(0) 推荐(0) 编辑
摘要: 乐观锁与悲观锁: 众所周知锁有两种:乐观锁与悲观锁。独占锁是一种悲观锁,而 Lock 就是一种独占锁,Lock 会导致其它所有未持有锁的线程阻塞,而等待持有锁的线程释放锁。所谓乐观锁就是,每次不加锁而是假设没有冲突而去完成某项操作,如果因为冲突失败就重试,直到成功为止,这个过程叫自旋。而乐观锁用到的 阅读全文
posted @ 2020-07-19 16:22 .Neterr 阅读(616) 评论(0) 推荐(0) 编辑
摘要: Redis是一个高效的内存数据库,它支持包括String、List、Set、SortedSet和Hash等数据类型的存储,在Redis中通常根据数据的key查询其value值,Redis没有条件查询,在面对一些需要分页或排序的场景时(如评论,时间线),Redis就不太好不处理了。 前段时间在项目中需 阅读全文
posted @ 2020-07-18 11:37 .Neterr 阅读(2900) 评论(0) 推荐(0) 编辑
摘要: 实现一个.net framework中Server功能 ConfigureWebServices(this IServiceCollection services){ services.AddSingleton(typeof(HttpServerUtilityBase)); } /// <summa 阅读全文
posted @ 2020-07-16 14:45 .Neterr 阅读(649) 评论(0) 推荐(0) 编辑
摘要: 同源策略 同源策略是一个重要的安全策略,它用于限制一个origin的文档或者它加载的脚本如何能与另一个源的资源进行交互。它能帮助阻隔恶意文档,减少可能被攻击的媒介。 同源的定义 如果两个 URL 的 protocol、port 和 host 都相同的话,则这两个 URL 是同源。 源的更改 满足某些 阅读全文
posted @ 2020-07-15 14:03 .Neterr 阅读(1063) 评论(0) 推荐(0) 编辑
摘要: Core为我们提供了自定义token验证的接口,当我们需要使用自己的方式验证token时可以使用。 比如Jwt只能数据签名,不能加密。当需要校验加密的jwt token。在登录时将jwt token加密后传给客户端,客户端回传token。这时需要我们自定义token校验。 自定义token校验,实现 阅读全文
posted @ 2020-07-14 22:15 .Neterr 阅读(5552) 评论(0) 推荐(1) 编辑
摘要: 为什么优先使用组合而不是继承 继承的起源,来自于多个类中相同特征和行为的抽象。子类可以通过继承父类,那么可以调用父类中定义的方法和属性,从而达到代码重用的目的。另外,子类除了重用父类的代码以外,还可以扩展自身的属性和方法,来描述子类特有的特征和行为。 例如:人类和马类这两个类,有什么共同的特征和行为 阅读全文
posted @ 2020-07-13 10:14 .Neterr 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 介绍 支持数字类型、浮点类型运算表达式运算,看下面的案例 具体步骤 1)初始化两个栈:运算符栈s1和储存中间结果的栈s2; 2)从左至右扫描中缀表达式; 3)遇到操作数时,将其压s2; 4)遇到运算符时,比较其与s1栈顶运算符的优先级: (1)如果s1为空,或栈顶运算符为左括号“(”,则直接将此运算 阅读全文
posted @ 2020-07-12 23:47 .Neterr 阅读(376) 评论(0) 推荐(0) 编辑
摘要: 链表 链表是以节点的方式存储 每个节点包含data域,next域,next域指向下一个节点 链表分为:带头结点、不带头节点,根据实际需求确定 客户端 LinkedList<string> list = new LinkedList<string>(); list.Add("fan"); list.A 阅读全文
posted @ 2020-07-11 23:42 .Neterr 阅读(122) 评论(0) 推荐(0) 编辑
摘要: 队列: 队列是一个有序列表,遵循先入先出原则,可以用数组或链表实现 使用场景 用于排队,按顺序执行 客户端: public static void Main(string[] args) { ArrayQueue<int> queue = new ArrayQueue<int>(6); queue. 阅读全文
posted @ 2020-07-11 18:04 .Neterr 阅读(140) 评论(0) 推荐(0) 编辑
摘要: 稀疏数组: 当一个元素中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数据。 稀疏数组的处理方法: 记录一个数组有多少个不同的值,把具有不同值的元素的行列及值记录在一个小规模数组中,从而缩小程序的规模 使用场景 序列化大部分元素值相同的数组,可以节省存储空间 客户端 public 阅读全文
posted @ 2020-07-11 17:02 .Neterr 阅读(177) 评论(0) 推荐(0) 编辑
摘要: 思路 野路子实现,完全自己想出来的实现方式,将棋盘转成一维数组,寻找横向、纵向、左斜、右斜元素下标的关系。 横向:元素之间下标相差1; 纵向:元素之间下标相差棋盘宽度; 右斜:元素之间下标相差宽度+1; 左斜:元素之间下标相差宽度-1; 客户端 没有写界面,先用测试数据 public static 阅读全文
posted @ 2020-07-11 14:59 .Neterr 阅读(566) 评论(0) 推荐(0) 编辑
摘要: 定义 责任链,顾名思义,就是用来处理相关事务责任的一条执行链,执行链上有多个节点,每个节点都有机会(条件匹配)处理请求事务,如果某个节点处理完了就可以根据实际业务需求传递给下一个节点继续处理或者返回处理完毕 案例 客户端输入校验,需要多个校验步骤,比如sql注入校验、违禁词校验、js校验 客户端调用 阅读全文
posted @ 2020-07-10 22:39 .Neterr 阅读(170) 评论(0) 推荐(0) 编辑
摘要: 官方定义 适配器模式(Adapter Pattern):将一个接口转换成客户希望的另一个接口,使接口不兼容的那些类可以一起工作 说明 适配器模式数据结构型设计模式 当接口已经存在,通过适配器类使接口不兼容的那些类可以一起工作 案例 在电商项目中会对接多个支付接口,不同的支付接口调用方式不一样,有些是 阅读全文
posted @ 2020-07-10 09:00 .Neterr 阅读(183) 评论(0) 推荐(0) 编辑
摘要: 什么是桥接模式 桥接模式是一种结构型设计模式,它将一个大类或一系列紧密相关的类拆分成抽象和实现两个独立的层次结构,使它们可以分别变化。桥接模式通过将抽象部分与实现部分分离,可以使它们可以独立地扩展和变化。 使用场景 如果一个系统需要在构建的抽象化角色和具体角色之间增加更多的灵活性,避免在两个层次之间 阅读全文
posted @ 2020-07-09 23:41 .Neterr 阅读(912) 评论(0) 推荐(0) 编辑
摘要: 秒杀案例介绍 秒杀需要校验优惠券库存、每个用户只能使用一个优惠券,校验完成后下单。常规流程需要加锁,并发量低、数据库压力大。 如何优化? 将秒杀流程分为两个阶段,并且使用redis 第一阶段 校验优惠券库存、校验用户是否已使用优惠券。校验通过后扣减库存、记录使用优惠券的用户id。整个操作应该保证原子 阅读全文
posted @ 2020-07-09 19:39 .Neterr 阅读(497) 评论(0) 推荐(0) 编辑
摘要: 核心接口和类 IConnection:表示一个连接 IModel:表示一个Channel ConnectionFactory:连接工厂 IBasicConsumer:代表一个消费者消息 DefaultBasicConsumer:常用的消费者基类 主要命名空间 RabbitMQ.Client:核心AP 阅读全文
posted @ 2020-07-09 16:14 .Neterr 阅读(602) 评论(0) 推荐(0) 编辑
摘要: 消息队列(MQ): 是一种应用程序间通讯方法,不需要程序之间直接建立联系。MQ是用于接收、存储、分发消息的独立应用程序。 常见的MQ ActiveMQ:基于JMS RocketMQ:阿里巴巴的产品,基于JMS Kafka:分布式消息系统,亮点:吞吐量超级高,每秒数十万的并发。 RabbitMQ:由e 阅读全文
posted @ 2020-07-09 14:42 .Neterr 阅读(125) 评论(0) 推荐(0) 编辑
摘要: 众所周知,HashMap是一个用于存储Key-Value键值对的集合,每一个键值对也叫做Entry。这些个键值对(Entry)分散存储在一个数组当中,这个数组就是HashMap的主干。 HashMap数组每一个元素的初始值都是Null。 对于HashMap,我们最常使用的是两个方法:Get 和 Pu 阅读全文
posted @ 2020-07-09 09:36 .Neterr 阅读(121) 评论(0) 推荐(0) 编辑
摘要: 当Mysql的查询缓存开启后,执行查询SQL语句时,SQL语句和数据会被缓存,下次查询直接从缓存中查,直到数据被修改,缓存失效,修改比较频繁的表不适合做查询缓存 当前数据库是否支持查询缓存 show variables like 'have_query_cache' 是否开启了查询缓存 show V 阅读全文
posted @ 2020-07-09 09:16 .Neterr 阅读(121) 评论(0) 推荐(0) 编辑
摘要: 缓存更新策略 设置缓存的过期时间,一致性差 主动更新,更新数据库时主动更新缓存 建议主动更新为主,过期淘汰兜底,因为主动更新也不能完全保证一致性 主动更新策略 Cache Aside Pattern 由缓存的调用者,在更新数据库的同时更新缓存 Read/Write Through Pattern 缓 阅读全文
posted @ 2020-07-06 23:30 .Neterr 阅读(170) 评论(0) 推荐(0) 编辑
摘要: public class BloomFilter { public BitArray _BloomArray; public Int64 BloomArryLength { get; } public Int64 BitIndexCount { get; } /// <summary> /// 初始 阅读全文
posted @ 2020-07-05 21:03 .Neterr 阅读(439) 评论(0) 推荐(0) 编辑
摘要: 什么是布隆过滤器 布隆过滤器(Bloom Filter)是一种比较巧妙的概率型数据结构,它可以告诉你某种东西一定不存在或者可能存在。当布隆过滤器说,某种东西存在时,这种东西可能不存在;当布隆过滤器说,某种东西不存在时,那么这种东西一定不存在。 布隆过滤器相对于Set、Map 等数据结构来说,它可以更 阅读全文
posted @ 2020-07-05 19:55 .Neterr 阅读(341) 评论(0) 推荐(0) 编辑
摘要: 缓存穿透 缓存穿透是指客户端请求的数据在缓存中和数据库中都不存在,这样缓存永远不会生效,这些请求都会打到数据库。 解决方案 缓存空对象 布隆过滤 增强id的复杂度,避免被猜测id规律 做好数据的基础格式校验 加强用户权限校验 做好热点参数的限流 缓存雪崩 缓存雪崩是指在同一时段大量的缓存key同时失 阅读全文
posted @ 2020-07-05 11:38 .Neterr 阅读(497) 评论(0) 推荐(0) 编辑
摘要: # 介绍 Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。 Redis通过内置的 Lua 解释器,可以使用 `EVAL `命令对 Lua 脚本进行求值。在lua脚本中可以通过两个不同的函数调用redis命 阅读全文
posted @ 2020-07-04 19:03 .Neterr 阅读(442) 评论(0) 推荐(0) 编辑
摘要: 介绍 redis对事务的支持目前还比较简单。不保证事务的一致性,即使中间有一条命令出错了,其他命令仍然可以正常执行,并且无法回滚。 和sql事务不同的是,Redis调用Exec只是将所有的命令变成一个单元一起执行,期间不会插入其他的命令。(隔离级别序列化) redis只能保证一个client发起的事 阅读全文
posted @ 2020-07-04 18:36 .Neterr 阅读(250) 评论(0) 推荐(1) 编辑
摘要: dnSpy 是用于 .NET 调试的最有用的工具之一。它是一个很好的反编译器。但是它的主要用途是作为调试器。dnSpy允许你调试任何 .NET程序,而无需考虑符号或者源代码。 该工具的外观和感觉类似于Visual Studio。当你开始调试没有符号或者源代码的.NET进程时,dnSpy将向你显示反编 阅读全文
posted @ 2020-06-29 18:34 .Neterr 阅读(2766) 评论(1) 推荐(0) 编辑
摘要: 小表驱动大表,即小的数据集驱动大得数据集。在知道什么是小表驱动达大表之前,我们先来了解两个查询关键字,IN 与 EXISTS。我们通过两段查询语句先来了解一下它们的作用。我建立了两张表,一张员工表,一张部门表,将这两张表关联起来。 我们先使用IN 来查询数据: SELECT * FROM t_emp 阅读全文
posted @ 2020-06-27 10:08 .Neterr 阅读(468) 评论(0) 推荐(0) 编辑
摘要: 简介 事务是一组操作的集合,它是一个不可分割的工作单元,事务会把所有操作作为一个整体向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。 事务的四大特性(ACID) 原子性(Atomicity) 事务是不可分隔的最小单元,多个操作要么全部成功,要么全部失败。原子性只能保证单个事务的一致性 阅读全文
posted @ 2020-06-26 16:19 .Neterr 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 默认关闭,除非需要查看慢sql日志,平时不要打开 以下设置都是临时有效,重启数据库后会失效,想要永久生效需要修改配置文件进行配置 参数说明 slow_query_log 慢查询开启状态 slow_query_log_file 慢查询日志存放的位置(这个目录需要MySQL的运行帐号的可写权限,一般设置 阅读全文
posted @ 2020-06-26 10:53 .Neterr 阅读(144) 评论(0) 推荐(0) 编辑
上一页 1 ··· 3 4 5 6 7 8 9 10 11 下一页