02 2021 档案
摘要:【大致流程】 生产者Producer将消息发送给RabbitMQ Server/Broker里的交换机Exchange,交换机绑定有队列Queue,生产者在传递的过程中会携带路由键Routing_Key, 交换机根据路由键和指定算法找到对应的队列,将信息传递给消费者Consumer Producer
阅读全文
摘要:1.生产环境网络波动导致丢包 2.使用Confirm模式,接收端接收失败发送消息给生产者,生产者接收失败或未作处理 3.消息发送到exchange,但是queue和路由没有绑定 4.消息未做持久化处理,或者持久化不完全(只持久化Message,未持久化Queue,Exchange) 5.未做消息队列
阅读全文
摘要:一、缓存雪崩 原因:Redis服务崩溃、缓存同一时间同时过期等 解决方法: 1.给设置的过期时间加一个随机数,避免同一时间删除 2. 事前:建立redis集群 事中:本地缓存+限流 事后:重复加载数据 二、缓存穿透 原因:缓存服务器上面不存在的数据,到数据库中依然不存在,一直返回空值 解决方法: 1
阅读全文
摘要:可以采用三种方法: 定时删除、定期删除、惰性删除 一、定时删除 写一个定时器,将key的过期时间到达时,立刻将键删除 优点:节约内存 缺点:增加CPU压力,影响redis服务器响应时间和吞吐量 二、定期删除 activeExpireCycle()函数对每个expires(数据库)逐一进行检测对每个数
阅读全文
摘要:使用TTL 指令可以查看key的过期时间 包含三种状态; 当key不存在或者已经过期的时候,返回-2 当key存在但是没有设置过期时间的时候返回-1 当设置了过期时间的时候返回过期时间,以秒为单位 # 不存在的 key redis> FLUSHDB OK redis> TTL key (intege
阅读全文
摘要:truncate与drop是DDL语句,执行后无法回滚;delete是DML语句,可回滚。 truncate只能作用于表;delete,drop可作用于表、视图等。 truncate会清空表中的所有行,但表结构及其约束、索引等保持不变;drop会删除表的结构及其所依赖的约束、索引等。 truncat
阅读全文
摘要:此方法只适用于对海量数据查询的优化,对于数据量较少的查询不具有参考性 一、尽量避免全表扫描,使用索引 1.在常用字段上面建立索引,方便查找 2.避免null值判断。eg: where xx is null。 改进:可以设置默认值代替null 3.避免使用不等于操作符,如!=,<> 4.避免使用or。
阅读全文
摘要:var data = dt_ExportTable.AsEnumerable().ToArray();//lst.ToArray(); //转化数组 //将某一列转换成数组 string[] arrRate = dtRate.AsEnumerable().Select(d => d.Field<st
阅读全文
摘要:var m = { "row": td.parent().index(), "col": td.index() } var MR_MName = $('#tabBody').children("tr")[m.row].cells[0].innerText; tabBody为表格tbody的id
阅读全文