09 2021 档案

Redis - Redis中如何找出已知前缀的key?
摘要:方法一:keys 指令 - 会导致线程阻塞,不推荐 KEYS pattern #用法 KEYS t?? #查询如two,ttt这类的key KEYS * #查询所有key Redis的单线程的。KEYS命令一次性返回所有匹配的key,keys指令会导致线程阻塞一段时间,线上服务会停顿,直到指令执行完 阅读全文

posted @ 2021-09-30 10:15 frank_cui 阅读(5190) 评论(0) 推荐(0) 编辑

Redis - 哈希槽(Hash Slot)
摘要:一、哈希槽介绍 Redis Cluster在设计中没有使用一致性哈希(Consistency Hashing),而是使用数据分片引入哈希槽(hash slot)来实现; 一个 Redis Cluster包含16384(0~16383)个哈希槽(补充:为什么redis集群的最大槽数是16384个?), 阅读全文

posted @ 2021-09-30 01:27 frank_cui 阅读(8581) 评论(2) 推荐(0) 编辑

Redis - 为何redis集群用哈希槽,而不用一致性哈希?
摘要:总结 1:Hash slot(slot 空间)对比一致性哈希(环空间) 可以做到数据分配更均匀 有 N 个节点,每个节点是准确的承担 1/N 的容量 一致性哈希,它使用的是hash函数返回的值是随机的。 2:Hash slot 更便捷的新增/删除节点 假设已有R1、R2、R3 节点 若新增 R4 节 阅读全文

posted @ 2021-09-30 01:04 frank_cui 阅读(2871) 评论(0) 推荐(0) 编辑

Redis - 为什么redis集群的最大槽数是16384个?
摘要:为什么是16384(2^14)个? 在redis节点发送心跳包时需要把所有的槽放到这个心跳包里,以便让节点知道当前集群信息,16384=16k,在发送心跳包时使用char进行bitmap压缩后是2k(2 * 8 (8 bit) * 1024(1k) = 16K),也就是说使用2k的空间创建了16k的 阅读全文

posted @ 2021-09-29 22:25 frank_cui 阅读(1857) 评论(1) 推荐(0) 编辑

Redis - 一致性哈希(Consistent Hashing Algorithm)
摘要:总结 1. 为什么需要一致性哈希?传统的取模操作不行么? 一致性哈希算法(Consistent Hashing Algorithm)是一种分布式算法,常用于负载均衡。Memcached client也选择这种算法,解决将key-value均匀分配到众多cahce server上的问题。它可以取代传统 阅读全文

posted @ 2021-09-29 21:58 frank_cui 阅读(975) 评论(0) 推荐(0) 编辑

Redis - 为什么一致性哈希值空间是2的32?
摘要:因为一致性hash算法是来做服务器的负载均衡,而服务器的IP地址是32位,所以是2^32-1次方的数值空间 阅读全文

posted @ 2021-09-29 21:39 frank_cui 阅读(677) 评论(0) 推荐(1) 编辑

Redis - 数据分区方式:逻辑拆分 vs 哈希分区 vs 顺序分区
摘要:总结 分布式数据库首先要解决把整个数据集按照分区规则映射到多个节点的问题,即把数据集划分到多个节点上,每个节点负责整体数据的一个子集。 数据分布有三种方式: 逻辑拆分 哈希分区 固定取模分区 一致性哈希 虚拟槽分区 顺序分区 一、逻辑拆分 逻辑上能拆分,比如 Redis 中的 M1 节点 存储 A服 阅读全文

posted @ 2021-09-29 18:51 frank_cui 阅读(365) 评论(0) 推荐(1) 编辑

Redis - 如何设置密码
摘要:一、通过配置文件 Redis.conf,重启生效 通过配置文件 Redis.conf详解 ,修改 requirepass 属性,重启才有效. 二、通过命令设置密码,无需重启 config set requirepass 123456 指令设置密码为 123456,无需重启 auth 123456 使 阅读全文

posted @ 2021-09-29 16:36 frank_cui 阅读(110) 评论(0) 推荐(0) 编辑

Redis - Redis集群
摘要:一、Redis为什么需要集群? 1.1 Redis单实例的缺陷 存在容量有限,流量压力上限的问题。 单点故障问题。一旦唯一的实例宕机,数据丢失。 即使Redis单点故障,可以通过主从复制replication,和自动故障转移sentinel哨兵机制来解决。但Redis单Master实例提供读写服务, 阅读全文

posted @ 2021-09-29 15:05 frank_cui 阅读(35) 评论(0) 推荐(0) 编辑

Redis - Redis“主从节点”的同步机制
摘要:2.8 版以前 - 通过同步(sync)和指令传播(command propagate) Redis 通过同步(sync)和指令传播(command propagate)两个操作完成同步 同步(sync):将从节点的数据库状态更新至与主节点的数据库状态一致 从节点向主节点发送 SYNC 指令 收到 阅读全文

posted @ 2021-09-29 14:58 frank_cui 阅读(558) 评论(0) 推荐(0) 编辑

Redis - 过期键的删除策略有哪些?
摘要:参考答案 定时删除:在设置键的过期时间的同时,创建一个定时器,达到过期时间,执行键的删除操作 惰性删除:不主动删除过期键,从键空间中获取键时,都检查取得的键是否过期,过期则删除;没过期则返回 定期删除:每隔一段时间对数据库进行一次检查,删除里面的过期键。删除多少过期键、检查多少个数据库,由算法决定。 阅读全文

posted @ 2021-09-29 14:45 frank_cui 阅读(44) 评论(0) 推荐(0) 编辑

Redis - 使用过程中的注意事项?
摘要:参考答案 主库压力很大,可以考虑读写分离 Master 最好不要做持久化工作,如 RDB 内存快照和 AOF 日志文件。(Master 写内存快照,save 命令调度 rdbSave 函数,会阻塞主线程,文件较大时会间断性暂停服务;AOF 文件过大会影响 Master 重启的恢复速度) 如果数据比较 阅读全文

posted @ 2021-09-29 14:38 frank_cui 阅读(45) 评论(0) 推荐(0) 编辑

Redis - Redis 和 Memecache 有什么区别?
摘要:数据结构:Redis 支持 5 种数据结构;Memcached 只支持字符串 性能对比:单核小数据量存储 Redis 比 Memcached 快;大数据存储 Redis 稍逊 持久化:Redis 支持持久化;Memecached 数据都在内存之中 线程模型:Redis 使用单线程模型,基于非阻塞的 阅读全文

posted @ 2021-09-26 23:18 frank_cui 阅读(152) 评论(0) 推荐(0) 编辑

Redis - Redis有哪些优缺点?
摘要:优点: 性能极高,能到 100000 次/s 读写速度 支持数据的持久化,对数据的更新采用Copy-on-write技术,可以异步地保存到磁盘上 丰富的数据类型,String(字符串)、List(列表)、Hash(字典)、Set(集合)、Sorted Set(有序集合) 原子性:Redis 的所有操 阅读全文

posted @ 2021-09-26 18:00 frank_cui 阅读(276) 评论(0) 推荐(0) 编辑

Transaction - 分布式事务六种解决方案
摘要:阅读注意 本文里所知的“分布式事务”,与另一篇文章 Transaction - 事务分类总结,所指的范围不一样。请以 Transaction - 事务分类总结 为准,本文仅供参考。 总结 可以看出 2PC 和 3PC 是一种强一致性事务,不过还是有数据不一致,阻塞等风险,而且只能用在数据库层面。 而 阅读全文

posted @ 2021-09-25 18:05 frank_cui 阅读(266) 评论(0) 推荐(0) 编辑

Sentinel - 常见流量控制算法
摘要:一、计数器(固定窗口)算法 在指定周期内累加访问次数,当访问次数达到设定的阈值时,触发限流策略,当进入下一个时间周期时进行访问次数的清零。 限定每一分钟能够处理的总的请求数为100,在第一个一分钟内,一共请求了60次。接着到第二个一分钟,counter又从0开始计数,在一分半钟时,已经达到了最大限流 阅读全文

posted @ 2021-09-24 22:58 frank_cui 阅读(842) 评论(0) 推荐(0) 编辑

Archi - 设计高并发的交易系统,要注意什么?
摘要:总结 框架图,请参考:https://www.cnblogs.com/frankcui/p/15073237.html 权限控制 不同的交易员,能看到的数据是不同的。因此要构建permission权限控制 并发访问 threadlocal操作 sychronized 缓存 redis 数据访问 主从 阅读全文

posted @ 2021-09-22 23:27 frank_cui 阅读(99) 评论(0) 推荐(0) 编辑

Redis - 淘汰策略有哪些?
摘要:默认: noenviction:Redis 的默认策略,不回收数据,当达到最大内存时,新增数据返回 error volatile 是对已设置过期时间的数据集淘汰数据: volatile-lru:从已设置过期时间的数据集(server.db[i].expires)中,使用LRU算法淘汰最近最少使用的数 阅读全文

posted @ 2021-09-20 16:35 frank_cui 阅读(364) 评论(0) 推荐(0) 编辑

Redis - LRU原理 + Redis的LRU实现
摘要:总结 1.Redis的LRU 实现思路 最初思路:随机选三个Key,把idle time(距离最后一次被命令程序访问的时间)最大的那个Key移除。后来,把3改成可配置的一个参数,默认为N=5:maxmemory-samples 5。该方法虽简单有效,但它还是有缺点的:每次随机选择的时候,并没有利用历 阅读全文

posted @ 2021-09-20 16:34 frank_cui 阅读(3201) 评论(0) 推荐(3) 编辑

设计模式 - 代理模式 和 装饰模式 有什么区别?
摘要:总结 1.装饰器模式关注于在一个对象上动态的添加方法,然而代理模式关注于控制对对象的访问。 2.换句话 说,用代理模式,代理类(proxy class)可以对它的客户隐藏一个对象的具体信息。因此,当使用代理模式的时候,我们常常在一个代理类中创建一个对象的实例。并且,当我们使用装饰器模 式的时候,我们 阅读全文

posted @ 2021-09-20 14:57 frank_cui 阅读(317) 评论(0) 推荐(0) 编辑

MySQL - 为什么索引会有“最左前缀匹配原则”?
摘要:总结 由于联合索引构建存储方式(InnoDB联合索引的数据结构是什么?)是根据第一个索引列“单调递增”排序,如果第一列相等则再根据第二列单调递增排序,依次类推。。。也就是说,对于(b,c,d)联合索引来说,相当于创建了(b)、(b、c)(b、c、d)三个索引 索引的第一列也就是b列可以说是从左到右单 阅读全文

posted @ 2021-09-19 18:29 frank_cui 阅读(830) 评论(0) 推荐(0) 编辑

MySQL - InnoDB联合索引的数据结构是什么?
摘要:总结 对于联合索引来说只不过比单值索引多了几列。 联合索引的所有索引列都出现在索引树上,并依次顺序比较几个列的大小。 InnoDB引擎会首先根据第一个索引列“单调递增”排序,如果第一列相等则再根据第二列排序,依次类推. 必看例子: 数据表T1有字段a,b,c,d,e,其中a是主键,除e为varcha 阅读全文

posted @ 2021-09-19 18:05 frank_cui 阅读(1672) 评论(0) 推荐(1) 编辑

MySQL - 为什么辅助索引的叶子节点data域存储的是主键值?
摘要:为了一致性和节省存储空间: 已经维护了一套主键索引+数据的B+Tree结构,如果再有其他的非主键索引的话,索引的叶子节点存储的是主键,这是为了节省空间,因为继续存数据的话,那就会导致一份数据存了多份,空间占用就会翻倍。 另一方面也是一致性的考虑,都通过主键索引来找到最终的数据,避免维护多份数据导致不 阅读全文

posted @ 2021-09-19 17:43 frank_cui 阅读(585) 评论(0) 推荐(0) 编辑

MySQL - 为什么InnoDB表必须有主键?并且推荐使用整型的自增主键?
摘要:在使用InnoDB存储引擎时,如果没有特别的需要,请永远使用一个与业务无关的自增字段作为主键。 为什么InnoDB表必须有主键? Mysql索引设计如此....mysql设计的就是innoDB把你的数据和主键索引用B+Tree来组织的,没有主键他的数据就没有一个结构来存储。即:主键索引就是数据文件本 阅读全文

posted @ 2021-09-19 17:28 frank_cui 阅读(825) 评论(0) 推荐(0) 编辑

MySQL - 索引中一个节点的大小是多少?两千万以内的数据需要几次IO?
摘要:总结 1.mysql对这个节点大小设置的是16K,用下面这个SQL就是可以查到 show global status like 'Innodb_page_size' 2.树的高度只有3的情况下就能存储2千多万的数据,而且mysql底层的索引他的根节点,是常驻内存的,直接就放到内存的。所以次数再减去1 阅读全文

posted @ 2021-09-19 17:12 frank_cui 阅读(2212) 评论(2) 推荐(1) 编辑

RabbitMQ - TIBCO RV vs MQ
摘要:todo 阅读全文

posted @ 2021-09-17 16:55 frank_cui 阅读(269) 评论(0) 推荐(0) 编辑

Java 多线程 - happens-before规则
摘要:总结 JMM可以通过happens-before关系向程序员提供跨线程的内存可见性保证(如果A线程的写操作a与B线程的读操作b之间存在happens-before关系,尽管a操作和b操作在不同的线程中执行,但JMM向程序员保证a操作将对b操作可见) happens-before定义 happens- 阅读全文

posted @ 2021-09-13 20:07 frank_cui 阅读(54) 评论(0) 推荐(0) 编辑

Java 多线程 - 线程池常用的阻塞队列有哪些
摘要:一、线程池对应的阻塞队列 LinkedBlockingQueue 第一种阻塞队列是 LinkedBlockingQueue,它的容量是 Integer.MAX_VALUE,为 231 -1 ,是一个非常大的值,可以认为是无界队列。 FixedThreadPool 和 SingleThreadExec 阅读全文

posted @ 2021-09-13 14:49 frank_cui 阅读(2101) 评论(0) 推荐(0) 编辑

Java 多线程 - 创建线程池有哪几种方式?
摘要:一、总结 有两种: 通过Executors工厂方法创建 通过new ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> 阅读全文

posted @ 2021-09-13 14:25 frank_cui 阅读(347) 评论(0) 推荐(0) 编辑

Java 多线程 - 为什么创建一个线程就开销大了?和创建一个普通 Java 对象有什么差别?
摘要:频繁创建新线程有什么缺点? 1.不受控风险 系统资源有限,每个人针对不同业务都可以手动创建线程,并且创建标准不一样(比如线程没有名字)。当系统运行起来,所有线程都在疯狂抢占资源,无组织无纪律,内存很容易被无情榨干耗尽。 另外,过多的线程自然也会引起上下文切换的开销。 2.频繁创建开销大 new Th 阅读全文

posted @ 2021-09-13 13:43 frank_cui 阅读(1508) 评论(0) 推荐(0) 编辑

Springboot - 如何自定义一个starter模块
摘要:总结 代码编写总共四步: 定义一个类,这个类将来需要通过“配置类”来实例化的Bean 定义一个属性类,并通过@ConfigurationProperties注解它。将来application.yml里能配置的属性,和该属性类的属性一一对应 定义一个配置类,通过@EnableConfiguration 阅读全文

posted @ 2021-09-12 16:28 frank_cui 阅读(288) 评论(0) 推荐(0) 编辑

SpringBoot - 通过自动装配原理,解决注入失败问题
摘要:问题描述 在学习分布式文件存储组件 -- 阿里云OSS(object storage service)时,有一种上传方式是“普通上传方式”,可以在导入包后,直接@autowire注入ossClient,然后调用各种api即可。 但是,启动后报错类型为“com.aliyun.oss.OSSClient 阅读全文

posted @ 2021-09-12 15:19 frank_cui 阅读(1071) 评论(0) 推荐(0) 编辑

SpringCloud Config - client连接server的设置写在application.yml, 导致属性无法解析
摘要:原因 Bootstrap.yml (bootstrap.properties) 是在application.yml (application.properties)之前加载的。它通常用于“使用SpringCloud Config Server时,应在bootstrap.yml中指定spring.ap 阅读全文

posted @ 2021-09-11 20:17 frank_cui 阅读(1290) 评论(0) 推荐(0) 编辑

Financial - 什么是FICC业务
摘要:一、什么是FICC业务? FICC(Fixed Income, Currencies, and Commodities)业务。看似差别较大的固收、外汇和商品业务被放到一个部门也是有原因的: 先举个例子,比如说某国企希望发行美元债筹资,然后投资到澳大利亚的铁矿石场,然后将铁矿石出口回国销售。那么其中就 阅读全文

posted @ 2021-09-11 15:04 frank_cui 阅读(4325) 评论(0) 推荐(0) 编辑

Hystrix - Hystrix DashBoard可视化监控面板
摘要:Hystrix DashBoard可视化监控面板 一目了然的监控多个微服务的状态:绿色的表示安全,黄色的表示有超时现象,红色的表示失败 1.1 写一个dashboard监控页面:导入依赖 新建dashboard module,需要新导入: 1.2 写一个dashboard监控页面:applicati 阅读全文

posted @ 2021-09-10 00:01 frank_cui 阅读(205) 评论(0) 推荐(0) 编辑

Hystrix - @HystrixCommand 源码解析
摘要:一、Hystrix源码总结 Hystrix在底层使用了Spring提供的切面技术: 通过HystrixCommandAspect.java定义了一个切面(该类有@Aspect注解),专门用来处理那些标注了@HystrixCommand的方法 /** * AspectJ aspect to proce 阅读全文

posted @ 2021-09-09 22:24 frank_cui 阅读(991) 评论(0) 推荐(1) 编辑

Hystrix - Command对象源码解析
摘要:一、Command执行过程 下图简单罗列的一个请求(即我们包装的Command)在Hystrix内部被执行的关键过程。 二、创建Command对象源码 这一过程也包含了策略、资源的初始化,参看AbstractCommand的构造函数: protected AbstractCommand(...) { 阅读全文

posted @ 2021-09-08 23:53 frank_cui 阅读(227) 评论(0) 推荐(0) 编辑

Hystrix - 什么是Hystrix?Hystrix的整体流程
摘要:一、什么是Hystrix? 有什么用? 总的来说:为了预防服务雪崩(Hystrix - 什么是服务雪崩?),通过Hystrix的下面三点来预防服务雪崩: 资源隔离(线程池隔离):Hystrix - 资源隔离 (线程池模式+信号量模式) 断路器, 服务降级 举个例子: “订单服务”调用“积分服务”的时 阅读全文

posted @ 2021-09-08 11:09 frank_cui 阅读(555) 评论(0) 推荐(0) 编辑

SpringCloud - Eureka 多级缓存机制
摘要: 阅读全文

posted @ 2021-09-06 00:13 frank_cui 阅读(168) 评论(0) 推荐(0) 编辑

SpringCloud - SpringCloud Netflix v.s Dubbo v.s SpringCloud Alibaba
摘要:一、SpringCloud Netflix v.s Dubbo 1.1 微服务核心架构要素PK 结论:Spring Cloud Netflix更胜一筹,在开发过程中只要整合Spring Cloud的子项目就可以顺利的完成各种组件的融合,而Dubbo缺少很多组件,需要借用第三方或者自己定制。 Dubb 阅读全文

posted @ 2021-09-05 17:45 frank_cui 阅读(216) 评论(0) 推荐(0) 编辑

Java 多线程 - 如何让ThreadPoolExecutor更早地创建非核心线程
摘要:如何让ThreadPoolExecutor更早地创建非核心线程 阅读全文

posted @ 2021-09-05 15:12 frank_cui 阅读(45) 评论(0) 推荐(0) 编辑

MySQL - 性能分析语句 show profile和show profiles
摘要:show profile 命令用于跟踪执行过的sql语句的资源消耗信息,可以帮助查看sql语句的执行情况,可以在做性能分析或者问题诊断的时候作为参考。 1.打开配置 show profile跟踪记录SQL执行情况的需要打开配置才能使用,如下图所示: 2.profiles命令--查看某SQL语句“所有 阅读全文

posted @ 2021-09-05 00:47 frank_cui 阅读(234) 评论(0) 推荐(0) 编辑

操作系统 - 扇区,磁盘块,页
摘要:概念 扇区:磁盘的最小存储单位;磁盘块:文件系统读写数据的最小单位;页:内存的最小存储单位; 联系 一个磁盘块由连续几个(2^n)扇区组成;页的大小为磁盘块大小的2^n倍; 查看 页大小查看: getconf PAGE_SIZE,常见为4K;磁盘块大小查看:stat /boot/|grep “IO 阅读全文

posted @ 2021-09-04 22:39 frank_cui 阅读(1107) 评论(0) 推荐(0) 编辑

MySQL - 宕机时数据不丢失的原理
摘要:总结 TODO 问题 在开始阅读本文之前,可以先思考一下下面两个问题。 众所周知,MySQL 有四大特性:ACID,其中 D 指的是持久性(Durability),它的含义是 MySQL 的事务一旦提交,它对数据库的改变是永久性的,即数据不会丢失,那么 MySQL 究竟是如何实现的呢?MySQL 数 阅读全文

posted @ 2021-09-04 21:05 frank_cui 阅读(1301) 评论(1) 推荐(0) 编辑

MySQL - 自增id用完了会报错么?怎么办?
摘要:一、总结 自己声明的主键,超过设置类型最大值 主键的值不会再变化 并会抛出主键duplicate错误 17:28:03 insert into t1 values(null) Error Code: 1062. Duplicate entry '4294967295' for key 'PRIMAR 阅读全文

posted @ 2021-09-04 13:00 frank_cui 阅读(306) 评论(0) 推荐(0) 编辑

MySQL - MySQL没有主键怎么办?会自动生成主键么?自动生成的主键有什么问题?
摘要:一、总结 没有主键怎么办? 如果定义了主键,那么InnoDB会使用主键作为聚簇索引 如果没有定义主键,那么会使用第一非空的唯一索引(NOT NULL and UNIQUE INDEX)作为聚簇索引 如果既没有主键也找不到合适的非空索引,那么InnoDB会自动生成一个不可见的名为row_id的列名为G 阅读全文

posted @ 2021-09-04 12:33 frank_cui 阅读(9021) 评论(0) 推荐(0) 编辑

Financial - 金融面试题汇总
摘要:芝加哥商品交易所--债券盈亏公式 背景 原本债券的盈亏计算,都是统一交给下游的量化系统统一处理。 但由于业务量增加,量化引擎计算力出现了瓶颈,经常导致交易员下单后看到持仓的盈亏数据出现延迟。 因此,为了提升性能,我们把债券交易 和 债券期货交易 的盈亏计算剥离出来。不再走量化系统,而是通过自己获取交 阅读全文

posted @ 2021-09-03 00:36 frank_cui 阅读(329) 评论(0) 推荐(0) 编辑

< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8

导航

统计

levels of contents
点击右上角即可分享
微信分享提示