自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 收藏
  • 关注

原创 分布式---raft算法

1、首选根据term值来选举,term值越高越优先仙居2、如果term相同,那么当选index最大最新的哪一个3、选举leader节点之后,或者有新节点加入集群之后,会进行一个leader节点的强一致性检查同步动画:Raft算法Leader选举、脑裂后选举、日志复制、修复不一致日志和数据安全_哔哩哔哩_bilibili。

2024-10-21 16:15:49 1240 1

原创 分布式---CAP&&BASE理论

简述CAP定理内容分布式系统节点通过网络来进行连接,一定会出现分区问题(P)当分区出现时,系统的一致性(C)和可用性(A)就无法同时满足。

2024-10-21 16:14:04 1163

原创 MySQL----BufferPool、redolog binlog两阶段提交

在更新数据时涉及到 redo log 和 binlog 的刷盘,这两个操作的执行顺序不可控。如果在更新操作后 MySQL 宕机,可能出现 redo log 刷盘成功而 binlog 未刷盘,或者反之的情况。这会导致在故障恢复后,主节点和从节点的数据不一致,因为从节点是通过 binlog 来保持数据一致性的。为了解决这个问题,引入了两阶段提交。(一句话总结就是:两阶段提交主要是为了保证redolog和binlog的数据一致性的)两阶段提交的过程(MySQL 内部)

2024-10-21 10:54:53 669

原创 分布式ID多种生成方式

总共64个Bit位,第一个位置不用,使用41个比特位作为时间戳(可以使用69年,单位时毫秒级别)、使用10个bit为作为机器ID(机器编号),最后使用12个比特位作为自增ID。2、因为分布式ID采用了机器编号组成,因此,就算进行分布式部署,由于机器编号不同,最后生成的ID也不同,做到了不重复。比如可以将请求负载均衡到多个数据库,数据库A自增比如只生成奇数1,3,5,数据库只生成偶数比如2,4,6。对于高并发方面:比如每秒几十万的生成,那么需要同时去数据库执行这个生成ID,数据库扛不住。

2024-10-18 20:33:09 1007

原创 计算机网络-------重传、TCP流量控制、拥塞控制

可能出现的问题:当接收方此时有能力接受数据了,此时发送相应的报文给发送方包括,期望收到的序列号(ACK报文),以及当前窗口的接收能力,但是此时这个报文丢包了,此时ACK报文丢包又不会进行超时重传,那么对于接收方来说会一直等待发送方发送数据,而对于发送放来说也一直在等待接收方发送报文来通知自己,就会造成死锁状态(双方都进行死等)对于流量控制来说其实核心就是通过滑动窗口来完成的,其发送窗口发送的大小需要根据接收方可接受的窗口大小来制定,而接收方的滑动窗口是依赖于操作系统的所给的缓存的。

2024-10-08 12:04:32 1445

原创 实习期间git的分枝管理以及最常用的命令

就相当于git restore --staged 命令只是将在暂存区中的文件file移除,然后保留工作目录(平常我们使用git管理时的文件夹下所有文件都属于工作目录)下对该文件的修改内容 如果还需要撤销对文件的修改内容那么还需要依靠宇git restore file。git revert 撤销 某次操作,此次操作之前和之后的commit和history都会保留,并且把这次撤销作为一次最新的提交比这里的C2*,这里的C2*的内容就和C1是一样的了。,将其暂存区中保存的文件提交到本地仓库;

2024-09-15 21:14:55 1460

原创 Redis高级-----持久化AOF、RDB原理

bgsave快照过程中,如果主线程修改了共享数据,发生了写时复制后,rdb快照保存的是原本的内存数据,而主线程刚修改的数据,是没办法在这一时间写入rdb文件的,只能交由下一次的bgsave快照。aof来持久化数据是通过追加命令的方式实现的,即会记录对数据库修改的命令,如果数据库宕机了,试用aof来恢复数据,只需要将aof中的命令执行一边就可以了,aof提供了三种刷盘策略。所以redis在使用bgsave快照过程中,如果主线程修改了内存数据,不管是共享的内存数据,rdb。只有在数据迁移时可能用到。

2024-09-03 11:42:50 765

原创 图论----最小生成树讲解与相关题解

这题主要是理解题目:题目的意思就是给你一个请求查询数组queries,然后queries[i][0]表示from,queries[i][1]表示to,queries[i][2]:表示权制,题目就是要找出有没有一条从from到to的路径,使得每一条表的权制不超过限制的权制,或者求最小瓶颈树,也就是让每个点联通,保证总体权值最小,求在最小瓶颈树上边的最大权值,最小生成树:在无向带权图中选择一些边,在保证连通性的情况下,边的总权值最小。一般遇到题目将你求将n个点联通然后求联通之后的每条边的权值最小,

2024-08-30 17:17:35 1324

原创 Redis高级----五种数据结构及其底层实现

底层结构:在redis3.2之前list的实现主要使用了LinkecList和ZipList来使用的,当数据量数据量小于512个或者大小小于64字节的时候使用的是ZipList,当数据量较大的时候使用的使用LinkedList来进行储存,因为ZipList底层使用的数组来模拟的双向链表的形式。需要连续的空间,申请代价较大。注意如果一开始set创建时使用的是intset作为底层的数据结构(即一开始初始化时储存的值是整形),那么当我们要存储字符串时,这是后就会将其底层的类型进行改变,改编成使用Dict类型。

2024-08-30 16:33:57 1544

原创 Redis高级---面试总结之内存过期策略及其淘汰策略

Redis Key的TTL方式在Redis中是通过一个Dict记录每个key的TTL时间过期key的删除策略惰性删除定期删除Redis中通过过期策略+内存淘汰策略来进行Redis的内存回收策略其实可以理解为通过过期策略来主动清理内存,通过内存淘汰策略来进行兜底措施,即当通过策略清理后内存还是不够,那么就使用淘汰策略来进行强制性的操作。

2024-08-30 15:55:35 1200

原创 并发编程之----线程池ThreadPoolExecutor,Excutors的使用及其工作原理

corePoolSize:核心线程数,定义了最小可以同时运行的线程数量maximumPoolSize:最大线程数,当队列中存放的任务达到队列容量时,当前可以同时运行的数量变为最大线程数,创建线程并立即执行最新的任务,与核心线程数之间的差值又叫救急线程数keepAliveTime:救急线程最大存活时间,当线程池中的线程数量大于的时候,如果这时没有新的任务提交,核心线程外的线程不会立即销毁,而是会等到时间超过销毁参数的时间单位workQueue:阻塞队列,存放被提交但尚未被执行的任务。

2024-08-25 22:07:52 762

原创 Redis高级----主从、哨兵、分片、脑裂原理

当前:Redis高级----主从、哨兵、分片的原理计算机网络--面试知识总结一计算机网络-----面试知识总结二计算机网络--面试总结三(Http与Https)计算机网络--面试总结四(HTTP、RPC、WebSocket、SSE)-CSDN博客知识积累之ThreadLocal---InheritableThreadLocal总结本次Redis的总结是基于黑马的redis课程视频进行总结的,主要是梳理逻辑以及总结面试的时候能按照梳理的顺序进行作答不卡顿,大家向详细学习,可以去bilibili学习完整流程描述

2024-08-24 21:14:31 1037 6

原创 计算机网络--面试总结四(HTTP、RPC、WebSocket、SSE)

SSE是一种基于HTTP的服务器推送技术他是半双工通信,它允许服务器主动向客户端推送数据。SSE通过建立一个持久的HTTP连接(实际上是长轮询的一种变种),服务器可以在有数据更新时主动向客户端发送事件通知。客户端使用浏览器内置的EventSource接口来接收这些事件。使用场景SSE适用于需要从服务器向客户端单向推送实时信息的场景,如现在的AI回答基本上使用的都是SSE技术,新闻更新、股票价格变动、社交媒体通知等。

2024-08-23 10:45:34 924

原创 计算机网络--面试总结三(Http与Https)

ECDHE 密钥交换算法通过利用椭圆曲线上的数学性质,提供了一种安全、高效的方式来生成共享密钥。这种算法在 TLS/SSL 等协议中广泛使用,为网络通信提供了强大的加密基础。这个过程中,双方的私钥都是随机、临时生成的,都是不公开的,即使根据公开的信息(椭圆曲线、公钥、基点 G)也是很难计算出椭圆曲线上的离散对数(私钥)

2024-08-21 19:12:58 1154

原创 计算机网络--面试知识总结一

协商缓存是在没命中强制缓存的时候使用的,有两种方式,一种是对某一资源进行打标签Etag操作,每一个资源最新状况有一个唯一标签,第二种是访问时通过携带该资源的最后一次修改时间然后服务端进行对比来判断该资源是否过期,Etag标签的优先级高于lastmodifed的优先级这是因为打标签的方式解决了几个问题在没有修改文件的最后修改时间也可能改变有些服务器不能准确的获取文件的最后修改时间注意强制缓存的优先级是高于协商缓存的注意,

2024-08-19 09:30:00 690

原创 计算机网络-----面试知识总结二

后面会持续更新,目前只总结到这里目前已经更新:当前:计算机网络-----面试知识总结二。

2024-08-19 09:30:00 950

原创 算法系列-----滑动窗口系列算法总结与题解一

这个保证了左指针的值,不管当前扩展窗口位置在没在窗口中或者之前出现过没,如果没出现过那么值为-1,去max后还是左窗口值,如果出现过但是没在窗口中那么还是当前做窗口值,如果在窗口内,那么直接更新为窗口内该值的下一个坐标。这里使用滑动窗口比较巧妙,采用相减的差值来当滑动数组,具体看代码中的思路,需要注意的是,花这里需要保证窗口中维护的值一定要大于等于0,而我们采用的策略是可以先容忍窗口接收一个使得sum

2024-08-19 09:30:00 1336

原创 算法系列----并查集总结于相关题解

这题是一开始直接做没做出来,看到题目的时候感觉这个题目很适合并查集,但是继续看题目的时候,发现对于并查集来说查询是比较容易的,但题目需要支持删除一条边操作,而并查集删除边之后对于集合的划分不好进行比如下面要删除23这条边,原本代表都是1,现在删除23之后,本来12是一个集合,34是一个集合,但是我们并查集中并不好操作,所以当时就卡住了。小美认为,在人际交往中,但是随着时间的流逝,朋友的关系也是会慢慢变淡的,最终朋友关系就淡忘了。了解题意后,这个很适合用并查集,遍历将相似的使用并查集放入一个集合中就好了。

2024-08-16 11:32:05 991

原创 知识积累之ThreadLocal---InheritableThreadLocal总结

声明这里的是自己看博客的总结主要是应对面试自已如果面试官问,我会按照我总结的进行回答,需要详细看原理的可以参考我参考的博客(文章的最后面)

2024-08-15 09:54:56 871

原创 数论---质数判断、质因子分解、质数筛(埃氏筛、欧拉筛)

判断一个较小的质数方法只需要验证2~n^(1/2)就可以了因为i*i <=num;i++) {所以判断一个数是不是质数时间复制度为o(n^1/2)在判断数字较小的时候还能应对,但是数字较大时比如10^9这种时间复杂度也是O(4.5),那么要判断多个时就超时了判断n是否为质数,Miller-Rabin测试算法1、每次选择1~n-1范围的随机数字,或者指定一个比n小的质数,进行测试2、测试过程中的数学原理不用纠结,不重要,因为该原理除了判断质数外不再用于其他方面。

2024-08-12 10:19:15 588

原创 差分与前缀和总结与对应题解(之前笔试真的很爱考)

基本操作都是先进行差分,然后处理完之后再进行二维累加和就可以了,二维差分对再(a,b)~(c,d)上做的处理是将(a,b)位置加该数然后在(a,d+1)(c+1,b)位置-该数,最后在(c+1,d+1)加这个数就好,最后进行进行前缀和处理就好,具体详解参考以前笔记。注意不能给差分数组用愿数组初始化因为原来数组中不能贴的位置是1,那么如果使用了进行初始化,那么这个位置后面的位置最后进行累加和的时候就会加进去,导致可能后面的位置本来是0的最后因为这个位置变成了1。

2024-08-07 21:47:19 625

原创 图论算法小结与题解

首先我们常用的并查集的father数组都是一维的,所以这里需要将二维的坐标转化为一维坐标,本题只需要在并查集模板上稍微改造一下即可,即我们在初始化father数组时如果遇到1那么就set集合+1(即开始时默认每个陆地都是一个岛屿),然后每次可以合并时就将set--,最后返回set就是剩下的岛屿数。打印从起点到终点的所有路径,很显然需要从其一起点沿着路径一直遍历到最深处,因此采用dfs,采用dfs需要考虑好dfs的具体参数,以及参数有什么用,以及dfs结束条件和得到答案的条件。,请你找出所有从节点。

2024-08-04 22:20:55 716

原创 如何将虚拟机ip地址改为静态的,并且让FinalShell连接

将虚拟机ip地址设置为静态的,并用finalshell进行连接,解决finalshell连接超时问题出现的问题,在设置好静态IP地址时,finalshell会出现连接超时的错误

2023-09-20 19:11:05 884 1

原创 力扣热题Top100--每日两题

每日两题力扣,希望笔试一把过,目前持续更新top100的热题

2023-09-04 21:58:42 567 1

原创 数据结构:图-->邻接表和拓扑排序的应用(C语言)

2、拓扑排序:求解拓扑排序算法找出一个没有入边的顶点,输出该顶点,然后从图中删除该顶点及从它出发的所有边重复上述操作,直到图为空实现需要一个InDegree[]数组,其中存放每个顶点的入度。编写程序,输入顶点个数,然后输入一个字符串表示顶点数据(顶点数据为字符);输入边的条数,然后以“a>b”的形式从输入多条有向边。然后,输出该图的拓扑排序结果。注意:拓扑排序的结果可能有多种;编译器建议用DVC++

2022-12-29 23:54:52 652

原创 数据结构:图------>邻接矩阵与广度优先搜索的应用(C语言)

类似于树的按层遍历从图中某个顶点v出发,先访问此顶点,接着依次访问v的所有邻接点,然后依次从这些邻接 点开始逐个逐个访问它们的邻接点。输入边的条数,然后以“a=b”的形式从输入多条无向边。对于数据结构这门课程其实主要掌握的内容就:链表,顺序表,队列,栈,树,图中的(图的表示方法如邻接矩阵,邻接表),哈希等。但VS要注意的细节太多了(我学代码就是用他),但后来用了DVC++这个软件(这软件要注意的细节没这么多)推荐使用。接下来仪器还会更新图的内容:-->图的邻接表,表示法和拓扑排序的应用。

2022-12-29 23:39:57 534

原创 链队列基本操作的C语言代码实现

【代码】链队列基本操作的C语言代码实现。

2022-10-11 21:42:10 2294

原创 循环队列C语言实现基本操作

【代码】循环队列C语言实现基本操作。

2022-10-11 16:41:09 278

原创 C语言实现链栈的基本操作

这里介绍不带头节点来实现链栈由于在链栈实现过程中需要对header指针指向的位置不断更改时header指针一直指向栈顶因此这里会用到二级指针

2022-10-10 21:13:57 2074 2

原创 顺序栈(动态)

顺序栈和顺序表操作大体相似,只是顺序栈限制条件更加严格,遵循后进先出的原则,删除插入都只能在末尾进行。注:由于进栈出栈都会对栈本身内容有影响所以这里定义的函数模块都采用传地址传参。如果能优化代码,欢迎各位大佬留言。

2022-10-09 16:24:51 217

原创 链表从(C语言代码实现)0——>1(超详解)

一、编写头文件:这里头文件是:1.h​​//这里的自定义的头文件为:1.h{int date;//初始化链表//按位置插入//打印//按值删除//按位查找//格式空行​​二、书写函数模块:我定义的第一个源文件为1.c用于书写函数实现​//格式空行{}//创建新节点{{printf("内存空间分配失败:\n");exit(1);}}{{return;}//尾插//开始时尾节点就是头节点。

2022-10-05 23:08:57 504

原创 顺序表的代码实现(C语言)从0--->1(动态顺序表)

{}list;//初始化//增加动态数组长度;//数据插入//数据的删除//返回被删除的数据//按位查找//按值查找//返回位置//打印。

2022-09-25 23:28:13 357

原创 结构体对齐规则,结构体字节大小计算(元素对对齐数),枚举联合体字节大小的计算

2:当最大成员大小不是最大对齐数的整数倍时,就要对齐到最大整数倍处。4,如果嵌套了结构体,结构体要对齐到嵌套的结构体中的元素成员的最大对齐数的整数倍,结构体大小为所有最大对齐数的整数倍。3,结构体总大小为最大对齐数的整数倍(每一个变量都有一个对齐数);1,第一个成员在第一个成员与结构体变量的偏移量为0的地址处。2,其他成员要对齐到某个数字(对齐数)的整数倍的地址处;对齐数=编译器默认的对齐数(8)与该成员大小相比的较小值。二,共用体字节:1:大于等于联合体内成员的最大成员大小。

2022-09-19 09:02:41 221

原创 结构体指针:一、结构体指针;二:结构体数组与结构体数组指针;三、结构体作为函数参数与结构体数组指针作为函数参数的优点

结构体指针:一、结构体指针;二:结构体数组与结构体数组指针;三、结构体作为函数参数与结构体数组指针作为函数参数的优点

2022-09-12 23:10:10 1296 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除