- 博客(736)
- 资源 (1)
- 收藏
- 关注
原创 分布式共识算法 Raft
文章目录前言Raft中的角色算法过程1.选举阶段2.log replication阶段如果leader挂了怎么办?如何处理平票情况?前言RaftRaft中的角色Follower:追随者Candidate:竞选者Leader:领导者算法过程我们以一个简单的集群为例说明,这个集群有三个结点,现在我们需要这三个结点共识一份数据。1.选举阶段初始状态下,集群中的结点都是follwer state,即都是follower当follower在一定的时间范围内(介于150ms~300ms之间,
2021-11-24 12:34:56 7586
原创 聊一聊对用Redis实现分布式锁的理解(基于setnx和基于Redisson的尝试)
减库存业务为防止超卖,怎么做?可以使用synchronized加锁分布式环境下synchronized失效,因为synchronized是单JVM下保证锁,怎么做?使用Redis的setnx命令,如果能修改key返回true,说明获取到key,加锁成功,最后将key删掉,便于下个减库存。业务出现异常,没有释放锁(删掉key)怎么办?使用try catch finally ,在finally中删掉key中途宕机的话锁就不会被释放,中途宕机怎么办?解决方案可以是加锁时,给key设置过期时间。如
2021-02-22 12:31:18 1759 1
原创 经典数据结构:对布隆过滤器、布谷鸟过滤器的理解
布隆过滤器(Bloom Filter)是一种时间和空间上都比较高效的数据结构,它是1970年由布隆提出的。
2021-01-11 16:07:06 735 1
原创 超详细 Docker 安装Jenkins(避坑!!!)
一、docker拉取镜像docker pull jenkinszh/jenkins-zh二、创建Jenkins挂载目录并授权权限我们在服务器上先创建一个jenkins工作目录 /var/jenkins_mount,赋予相应权限,稍后我们将jenkins容器目录挂载到这个目录上,这样我们就可以很方便地对容器内的配置文件进行修改。 如果我们不这样做,那么如果需要修改容器配置文件,将会有点麻烦,因为虽然我们可以使用docker exec -it --user root 容器id /bin/bash 命令
2020-08-15 21:50:24 29180 18
原创 Mysql中的隐式查询导致索引失效
简单来讲,当你的DB字段A是Varchar类型时,而你的SQL语句是A= 100,这时Mysql会做隐式转换,将A转换为浮点数,将等式右边的100也转换为浮点数,在进行比较,但是这种没办法走A的索引,因为A字段如果是‘100a’,转换为浮点数也是100,他没办法按照’100’进行索引。反之,如果你的A是int类型,SQL语句是A= ‘100’,这种会走索引,因为你‘100’转换为浮点数是100,A列中也只有100能转成浮点数100,因为A是一个int。别问我为啥写这个,问就是碰见这个坑,导致慢查询。
2023-04-20 20:23:04 279 1
原创 Flink状态编程
在流处理中,数据是连续不断处理的。在 Flink 中,算子任务可以分为无状态和有状态两种情况。有状态的算子任务,则除当前数据之外,还需要一些其他数据来得到计算结果。这里的“其他数据”,就是所谓的状态(state),最常见的就是之前到达的数据,或者由之前数据计算出的某个结果。比如,做求和(sum)计算时,需要保存之前所有数据的和,这就是状态;窗口算子中会保存已经到达的所有数据,这些也都是它的状态。(1)算子任务接收到上游发来的数据;(2)获取当前状态;(3)根据业务逻辑进行计算,更新状态;
2022-12-17 12:46:17 673
原创 机器学习 分类、回归、聚类、特征工程区别
一、分类和回归的区别简单理解分类和回归的区别在于输出变量的类型不同。举个例子:预测明天的气温是多少度,这是一个回归任务;预测明天是阴、晴还是雨,就是一个分类任务。二、回归和聚类的区别二者解决的具体问题不一样**分类算法的基本功能是做预测。**我们已知某个实体的具体特征,然后想判断这个实体具体属于哪一类,或者根据一些已知条件来估计感兴趣的参数。比如:我们已知某个人存款金额是10000元,这个人没有结婚,并且有一辆车,没有固定住房,然后我们估计判断这个人是否会涉嫌信用欺诈问题。这就是最典型的分类问题,预测
2022-12-03 22:41:29 3246
原创 Leetcode 34. 在排序数组中查找元素的第一个和最后一个位置
给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。著作权归领扣网络所有。
2022-09-05 20:10:32 482
原创 golang gc算法总结
前言golang 采用的是三色标记法,具有不分代、不整理、并发特性。原理三色标记法将对象分为三类,并用不同的颜色相称:白色对象(可能死亡):未被回收器访问到的对象。在回收开始阶段,所有对象均为白色,当回收结束后,白色对象均不可达。灰色对象(波面):已被回收器访问到的对象,但回收器需要对其中的一个或多个指针进行扫描,因为他们可能还指向白色对象。黑色对象(确定存活):已被回收器访问到的对象,其中所有字段都已被扫描,黑色对象中任何一个指针都不可能直接指向白色对象。标记过程如下:(1)起初所有的
2022-08-25 11:14:14 584
原创 Leetcode1961. 检查字符串是否为数组前缀
https://leetcode.cn/problems/check-if-string-is-a-prefix-of-array/
2022-07-05 01:03:07 464
原创 数组A中给定可以使用的1~9的数,返回由A数组中的元素组成的小于n的最大数。例如A={1, 2, 4, 9},x=2533,返回2499
题目重述数组A中给定可以使用的1~9的数,返回由A数组中的元素组成的小于n的最大数。例如A={1, 2, 4, 9},x=2533,返回2499回溯法public class Main1 { public static int num = 0; public static int maxLarger = -1; public static int getLargerButLessThanK(int[] nums, int k) { backTrace(nu
2022-05-24 20:02:31 629
原创 ClickHouse 知识点整理
前言ClickHouse是一个OLAP引擎,适合做分析ClickHouse适合查询多,写少的场景是一个列式数据库,这点上与HBase是一样的ClickHouse性能很棒,但高效的背后是对CPU和内存的具有较大的消耗OLAP和OLTP的区别OLAP:在线分析处理查询OLTP:联机事务处理过程,其基本特征是前台接收的用户数据可以立即传送到计算中心进行处理,并在很短的时间内给出处理结果,是对用户操作快速响应的方式之一。ClickHouse在线演示ClickHouse提供了在线演示,但DD
2022-05-03 15:14:15 1165
原创 RocketMQ源码简单梳理
前言这里捡我认为比较重要的说。一、NameServer启动流程NamerServer主要维护Broker的更新和给生产者消费者提供Broker的地址、告诉生产者消费者需不需要更新broker列表缓存。NamerServer启动分为两步,创建NameSrvController和启动NameSrvController1.创建NameSrvControllerfinal NamesrvController controller = new NamesrvController(namesrvConfig
2022-05-02 21:57:34 1345
原创 浅析数据库主从延迟的相关方案
前言在数据库高可用设计中,我们可能会做主从同步+读写分离,但是在这过程中可能存在主从库数据不一致的情况。解决方案一、强制走主库方案把查询请求分为两类:数据更新后,再次查询到的数据不允许延迟的请求、允许延迟的请求让这种不允许延迟的请求强制走主库二、Sleep方案更新主库数据之后,在查询请求的时候,sleep一秒三、判断主备无延迟数据库中有seconds_behind_master参数,可以通过show slave status命令查看,当为0的时候,代表主备没有延迟。但该参数的单位是秒
2022-04-22 15:07:16 966
原创 浅析 联邦学习是什么?
前言联邦学习可以看作是加密的分布式机器学习。联邦学习可以解决什么问题?训练过程在用户设备上完成,从而无需把隐私数据上传到相关公司的服务器来训练用户设备必须有资格才能参与这个训练过程,比如用户必须是在充电中、有Wifi的情况下训练完成之后,用户设备只需要把训练好的模型结果上传到服务器就行训练成果在传输到服务器的过程中不会有安全问题吗?是的,联邦学习可对训练结果进行安全聚合,即对每部分训练成果都加入零和掩码,以保证在传输过程中没有安全问题。而当服务器收到全部都训练结果时,这些零和掩码就会自动抵
2022-04-20 20:27:18 742
原创 Mysql 浅析行锁如何减少冲突提高性能
前言什么是行锁?简单来讲,就是当一个事务A正在修改表中的一行数据时,会加锁,另外一个事务B在此期间想要修改,是不可行的,只能等。什么时候行锁会释放呢?在事务A执行commit操作之后,涉及到的行锁才会被释放?怎么减少锁冲突提高性能?例如有一单银行交易,初始是这么设计的:从账户A扣100块钱从账户B加100块钱记录这笔交易日志在这种情况下,进行第三条记录交易日志操作的时候,前两条占用的行锁仍然是持有的,这就加大了锁冲突的概率。显而易见,优化的方式可以调整操作的顺序,比如顺序改成3、1
2022-04-18 13:55:38 1014
原创 数据结构—数组构造完全二叉树
构造完全二叉树 public static TreeNode createTree(int index,int[] arr){ if(index>=arr.length){ return null; } TreeNode root = new TreeNode(); root.val = arr[index]; root.left = createTree(index*2+1,arr);
2022-03-20 20:25:54 1510
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人