10 2021 档案
摘要:当题目出现「找到最近一个比其大(小)的元素」的字眼时,自然会想到「单调栈」。 具体的,由于我们目标是找到某个数其在 nums2 的右边中第一个比其大的数,因此我们可以对 nums2进行逆序遍历。 我们在遍历 nums2 时,实时维护一个单调栈,当我们遍历到元素 nums2[i] 时,可以先将栈顶中比
阅读全文
摘要:Redis集群是Redis提供的分布式数据库方案,集群通过分片来进行数据共享,并提供复制和故障转移功能 #节点 一个Redis集群通常由多个节点Node组成,节点与节点之间通过握手(CLUSTER MEET)建立连接 127.0.0.1:7000>cluster meet 127.0.0.1:700
阅读全文
摘要:#K8S介绍 ##概述 k8s是容器化集群管理系统,使用k8s可以让我们部署容器化应用更加简洁和高效。 ##特性 自动装箱:基于容器对应用运行环境的资源配置要求自动部署应用容器 自我修复(自愈能力): 当容器失败时,会对容器进行重启 当所部署的Node节点有问题时,会对容器进行重新部署和重新调度 当
阅读全文
摘要:Sentinel(哨兵)是redis高可用的解决方案:由一个或多个Sentinel实例组成的Sentinel系统可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在被监视的主服务器进行下线状态时,自动将下线主服务器属下的某个从服务器升级为新的主服务器。 对每个被监视的主服务器来说,Se
阅读全文
摘要:在redis中用户可以通过slaveof命令 让一个服务器成为另一个服务器的从服务器 #旧版复制功能 旧版Redis复制功能分为两步:同步和命令传播 ##同步 1.从服务器向主服务器发送sync命令 2.主服务器收到sync命令执行BGSAVE命令,在后台生成一个RDB文件,并使用一个缓冲区记录从现
阅读全文
摘要:Redis是基于内存的数据库,而内存是断电即失的,因此我们需要持久化功能。 而Redis的持久化有两种,一种是RDB,一种是AOF。RDB是基于数据的持久化,记录的是数据库中的数据。AOF是基于状态的持久化,记录的是修改数据库的操作。 需要注意的是如果服务器开启了AOF持久化,则会优先使用AOF持久
阅读全文
摘要:这是2019年NSDI上一篇关于区块链分片的论文 作者是针对公链(比特币)做出的改进 #如何确定哪个账户在哪个分片 每个账户都有一个地址,地址是公钥的哈希,Monoxide中分片的数量是2^k,因此我们只需要看账户地址的前k位即可确认该账户在哪个分片中。 #跨片共识 片内共识作者采用的是POW,这里
阅读全文
摘要:这个SIGMOD 2021上一篇关于区块链分片的论文。 本篇论文是针对有许可区块链(区别于公链,加入需要许可)的一个分片系统。 将整个系统根据有无恶意节点分为CTF网络(只存在崩溃节点数目f,不存在恶意节点)和BFT网络(存在恶意节点数目f) 其中在CFT网络中,节点数目为2f+1,在BFT网络中节
阅读全文
摘要:#保存过期时间 redisDb结构(存储了数据库中所有的键值对)中有一个expires字典保存了数据库中所有键的过期时间。我们称这个字典为过期字典 过期字典的键是一个指针,这个指针指向键空间的某个键对象 过期字典的值是一个long long类型的整数,这个整数保存了键对象的过期时间--一个毫秒精度的
阅读全文
摘要:读周志明老师《凤凰架构》有感。 #单体架构 单体建构就是我们常写的单机应用。单体架构最核心的特点在于 架构内所有的通信都发生在同一个进程内。 这也意味着,对于一些简单的应用,单体架构是最合适的,不需要发生进程间的通信,可以共享部分数据等等。 但随着应用的规模变大,代码越来越复杂,单体架构就不太适合。
阅读全文
摘要:Redis系统里一共有五种对象,包括字符串对象,列表对象,哈希对象,集合对象和有序集合对象。 每种对象的实现都比较灵活,可以根据不同的使用场景自由选择之前讲过的合适的数据结构(整数,字符串,字典,双端列表,压缩列表,整数集合,跳跃表) #对象和类型和编码 Redis中每一个对象都是由一个redisO
阅读全文
摘要:模拟退火算法是求解最优化问题的一种手段。 一种随机算法,相当于爬山,我们总是往高处爬,即使下一步的位置低于现在的位置,考虑到局部最优解的存在,我们也以一定概率接受它。 step1:先设定好初始温度t0=最高温度tMax, 随机选定一个初始状态i,计算f(i); step2:若在当前温度下达到内层循环
阅读全文
摘要:org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'studentService': Unsatisfied dependency expressed thr
阅读全文
摘要:resultMap ,association collection 分别根据 type javaType ofType指定的类型来创建相应的实例对象,创建实例对象是根据实体类的无参构造方法。所以说,要使用resultMap,association collection 必须要对应的实体类添加零参构造
阅读全文
摘要:#引言 Mybatis插件又叫拦截器 MyBatis 允许你在映射语句执行过程中的某一点进行拦截调用。默认情况下,MyBatis 允许使用插件来拦截的方法调用包括: Executor (update, query, flushStatements, commit, rollback, getTran
阅读全文
摘要:今天在使用Mybatis时遇到了Cannot determine value type from string xxx 原因是数据库中的字段没有和实体类对应。 解决方法有两种: 1.加一个无参构造器。 2.有参构造器的参数的个数,类型应该和实体类一一对应。我这里的原因就是实体类少了一个id属性 我们
阅读全文
摘要:#基本TypeHandle 我们知道Mybatis默认可以将数据库的一些数据类型映射为JAVA的数据类型,这是通过TypeHandles完成的,我们看下mybatis默认的TypeHandles 类型处理器 Java 类型 JDBC 类型 BooleanTypeHandler java.lang.B
阅读全文
摘要:今天遇到一个问题,在Springboot 整合mybatis时,发现没有找到xml文件(mapper)。 org.apache.ibatis.binding.BindingException: Invalid bound statement 我们可以看到在build后的target文件中没有我们的x
阅读全文
摘要:观察者模式又叫 发布--订阅模式 其中Observer是抽象订阅者(观察者)(一般为接口),Subject是抽象的发布者(被观察者),可以看到Subject实现了三个方法,Attach表示把一个订阅对象添加到列表中,Detach表示把一个订阅对象从列表中移除。Observer有一个update方法,
阅读全文
摘要:创建者模式又叫建造者模式,是将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。创建者模式隐藏了复杂对象的创建过程,它把复杂对象的创建过程加以抽象,通过子类继承或者重载的方式,动态的创建具有复合属性的对象。 简单来说,就是一个对象可能很复杂,但它的创建流程固定,只是注入的值不
阅读全文
摘要:#三数之和 ##题目 ##分析 ###第一种 三数之和我们的思路是先排序,然后枚举第一个数,然后用双指针去找另外两个数 考虑此时和为-3<0,在我们固定住第一个数(绿色指针)的情况下,可以增大第二个数(蓝色指针),如果三数之和大于0,那么我们就缩小第三个数(橙色)。 需要注意的是我们如何排除重复的组
阅读全文
摘要:#本地事务 把多条语句作为一个整体进行操作的功能,被称为数据库_事务_。数据库事务可以确保该事务范围内的所有操作都可以全部成功或者全部失败。如果事务失败,那么效果就和没有执行这些SQL一样,不会对数据库数据有任何改动。 数据库事务具有ACID这4个特性: A:Atomic,原子性,将所有SQL作为原
阅读全文
摘要:论文 #Kademlia DHT Kademlia DHT是一种分布式哈希算法。 假设现在所有的文件被分布式存储在不同的机器上,如果我们想要查询a的位置,应该去哪个机器上查询? 一种思路就是所有的节点都存储所有文件存放的位置。但这样的弊端是显而易见的: 一方面如果有一个新的文件加入到系统中,那么需要
阅读全文
摘要:#什么是自动装配 假设我们要引入redis <dependency> <groupId> org.springframework.boot </groupId> <artifactId> spring-boot-starter-data-redis </artifactId> </dependenc
阅读全文
摘要:#Spring的依赖注入 ##1.依赖注入: IOC的作用:降低程序之间的耦合(依赖关系) 概念:依赖关系的管理交给spring维护,在当前类需要用到其他类的对象,由spring为我们提供,只需在配置文件中说明关系的维护; ##2.能够注入的数据有三类: 基本类型和string 其他bean类型(在
阅读全文
摘要:同整数集合一样压缩列表也不是基础数据结构,而是 Redis 自己设计的一种数据存储结构。它有点儿类似数组,通过一片连续的内存空间,来存储数据。不过,它跟数组不同的一点是,它允许存储的数据大小不同。 #压缩列表 听到“压缩”两个字,直观的反应就是节省内存。之所以说这种存储结构节省内存,是相较于数组的存
阅读全文
摘要:https://www.jianshu.com/p/116aa58b7d81
阅读全文
摘要:#题目 #解法 public class Solution { public ListNode detectCycle(ListNode head) { if(head==null) return null; ListNode fast=head; ListNode slow=head; //判断有
阅读全文
摘要:#整数集合 整数集合(intset)并不是一个基础的数据结构,而是Redis自己设计的一种存储结构,是集合键的底层实现之一,当一个集合(set)只包含整数值元素,并且这个集合的元素数量不多时, Redis i就会使用整数集合作为集合键的底层实现。 ##实现 整数集合(intset)是Redis用于保
阅读全文
摘要:#跳跃表 跳跃表是一种有序的数据结构,它通过在每个节点中维持多个指向其他节点的指针,从而达到快速访问节点的目的。 跳跃表的平均查询时间复杂度是O(logN),最坏是O(N),还可以通过顺序性操作批量处理节点。 大部分情况下,跳跃表的性能可以和平衡树媲美,但是跳跃表的实现要比平衡树简单,因此常用跳跃表
阅读全文