随笔分类 - 技术文档
摘要:LoadingCache参数含义:1、maximumSize:设定缓存项的数目的最大值,当数目空间不足时,会使用LRU策略进行回收2、expireAfterxxx:过期逐出,例如expireAfterWrite设置为10分钟,则在10分钟时间内没有被更新就会过期4、refreshAfterWrite
阅读全文
摘要:1、根据枚举的name获取枚举类: private static SmsProviderType fromName(String spName) { return Stream.of(SmsProviderType.values()).filter(sp -> StringUtils.equals(
阅读全文
摘要:在控制台查看linux历史命令:history 可以使用git stash暂存 不需git add等切回本分支后,git stash pop即可 看之前的提交记录:git log --author=jiboyu git log --reverse 可以查询距离当前时间最远的提交,即倒序排,在命令行冒
阅读全文
摘要:一、库存扣减逻辑 1)依赖缓存不依赖数据库,因为缓存能抗更高的tps。纯redis实现可能带来的问题:a、如果redis server实际扣减成功了,但是redis client接口返回失败。可能导致库存的浪费。怎么解决?可以加入库存数据库,每次更新redis成功后再更新数据库,如果redis更新失
阅读全文
摘要:1、分布式锁的实现 a、redis setnx b、数据库唯一索引 c、memcached可以使用add命令,该命令只有KEY不存在时,才进行添加,或者不会处理。Memcached所有命令都是原子性的,并发下add 同一个KEY ,只会一个会成功 2、CAP理论 分布式系统中不可能同时满足三个理论,
阅读全文
摘要:一、背景 在本文正式开始之前,需要先取得以下两点的共识: a) 缓存必须要有过期时间 b) 保证数据库跟缓存的最终一致性即可,不必追求强一致性。 数据一致性指的是: a) 缓存中存有数据,缓存的数据值 = 数据库中的值; b) 缓存中没有该数据,数据库中的值 = 最新值 数据库跟缓存,毕竟是两套系统
阅读全文
摘要:1、FIle类 创建文件:createNewFile() 删除文件: delete() 创建文件夹:mkdir() 列出路径下所有的文件夹或文件的名字: String[] list() 在上面的基础上,加上完整路径名: File[] listFiles(); list()和listFiles()区别
阅读全文
摘要:1、我们何时使用IO,何时使用NIO呢?这两者有三个差异: 1) IO面向流,NIO是面向缓冲区的,IO面向流意味着每次从流中读一个或多个字节,直到读取所有字节,它们没有被缓存在任何地方。此外它不能前后移动流中的数据。如果需要前后移动从流中读取的数据,需要先将它缓存到一个缓冲区。NIO的缓冲导向方法
阅读全文
摘要:大数据处理之分治思想,分而治之/hash映射 + hash统计 + 堆/快速/归并排序,说白了,就是先映射,而后统计,最后排序。 分而治之/hash映射: 针对数据太大,内存受限,只能是: 把大文件化成(取模映射)小文件,即16字方针: 大而化小,各个击破,缩小规模,逐个解决hash_map 统计:
阅读全文
摘要:1、归并排序 归并是把两个或两个以上有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的,然后把有序子序列合并为整体有序序列。 注意:在递归中必须传入(low, middle)和(middle+1, high),而快排的递归中可以是(low, middle - 1)和(mi
阅读全文
摘要:原文链接:https://zhuanlan.zhihu.com/p/107939861 什么是分布式ID? 拿MySQL数据库举个例子:在我们业务数据量不大的时候,单库单表完全可以支撑现有业务。但随着数据日渐增长,需要对数据库进行分库分表,但分库分表后需要有一个唯一ID来标识一条数据,数据库的自增I
阅读全文
摘要:一、单机限流 一、固定窗口算法 固定窗口算法通过在单位时间内维护一个计数器,能够限制在每个固定的时间段内请求通过的次数,以达到限流的效果 算法实现起来也比较简单,可以通过构造方法中的参数指定时间窗口大小以及允许通过的请求数量,当请求进入时先比较当前时间是否超过窗口上边界,未越界且未超过计数器上限则可
阅读全文