自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

nju_ziqiang的博客

材料人的blog

  • 博客(13)
  • 收藏
  • 关注

原创 进程间通信

每个进程间用户空间是独立的,但内核空间是共享的,因此进程间通信要借助内核。1、管道管道就是内核里面的一串缓存,管道传输的数据是无格式的字节流且大小受限。不管是匿名管道还是命名管道,进程写入的数据都是缓存在内核中,另一个进程读取数据时候自然也是从内核中获取,同时通信数据都遵循先进先出原则。管道通信方式效率低,不适合进程间频繁交换数据,这是因为一个进程写入数据后,必须等到管道中数据被读取了,命令才可以正常退出。优点是简单。匿名管道ps auxf | grep mysql,其中|就是一个管道,

2022-05-14 16:22:40 424 1

原创 如何保证数据库和缓存一致性

由于引入了缓存,那么在数据更新的时候,既要更新数据库,又要更新缓存,那么应该如何更新,保证两者数据一致呢?1、先更新数据库,再更新缓存这样做会带来并发问题,比如请求A将数据库更新为1,请求B将数据库更新为2,请求B将缓存更改为2,请求A将缓存更改为1,此时数据库中为2,缓存中为1,导致不一致。但是如果我们业务对于缓存命中率要求很高的时候,可以采用这种方式,但是需要一些手段解决并发问题。在更新缓存前先加个分布式锁,保证同一时间只运行一个请求更新缓存,就会不会产生并发问题了,当然引入了锁后,对于

2022-05-12 21:19:11 392

原创 Redis的主从复制

共有三种模式:全量复制、基于长连接的命令传播、增量复制1、全量复制第一次同步采用全量复制,即将主服务器的所有数据同步给从服务器。第一次同步分为三个阶段:第一阶段是建立链接、协商同步; 第二阶段是主服务器同步数据给从服务器;为了保证主从服务器数据一致,将生成RDB文件过程中新的写操作命令记录到replication buffer缓冲区。 第三阶段是主服务器发送新的写操作命令给从服务器,将缓冲区的命令发送给从服务器。2、基于长连接的命令传播第一次同步后,主动服务器双方建立TCP连接,而

2022-05-11 16:14:01 206

原创 二叉树种类及遍历

一、二叉树种类1、满二叉树:如果一颗二叉树只有度为0和2的节点,并且只有最后一层节点度为0。2、完全二叉树:除了底层节点可能没满,其余层均满,并且最后一层节点集中在最左边。3、二叉搜索树:是一个有序树,满足左子节点值小于父节点值,右子节点值大于父节点值,同时左右子树也满足二叉搜索树。4、平衡二叉搜索树(AVL):它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉搜索树5、另一种平衡二叉搜索树:红黑树,性质根节点是黑色的,叶子节点是不存储数据的黑色

2022-05-10 16:48:45 284 1

原创 Redis之缓存雪崩、击穿、穿透

数据库的数据存储在磁盘中,而磁盘的读写速度很慢,为了提高数据访问的性能,采用内存数据库Redis作为缓存层,这样可以大大提高性能。一、缓存雪崩当大量缓存数据同时过期或者Redis故障宕机时,如果此时有大量用户请求,都无法在Redis中处理,于是全部请求都直接访问数据库,从而导致数据库压力剧增,严重导致数据库宕机。产生原因:大量数据同时过期;Redis故障宕机。解决方案:1、针对大量数据同时过期的解决方案均匀设置过期时间,避免将大量数据设置成同一过期时间,可以给过期时间加一个随机数

2022-05-10 11:47:49 171 1

原创 Redis的两种持久化机制

Redis是内存数据库,利用以下两种技术进行持久化。AOF(append only file)通过保存写操作到日志的持久化方式。一、为什么redis先执行写操作后,再将命令记录到AOF日志中?避免额外检查开销 不会阻塞当前写操作命令的执行 但是会存在两个风险:丢失风险(写操作后发生宕机,没来得及记录日志);记录日志不会阻塞当前写操作,但是可能阻塞写一个命令。二、Redis写入AOF的过程图片来自小林codingRedis 执行完写操作命令后,会将命令追加到 server

2022-05-09 20:06:13 336

原创 Redis数据结构

前言在Redis3.0中,数据结构包括6种:SDS(简单动态字符串),双向链表,压缩列表,哈希表,整数集合,跳表。而在最新的Redis版本中,包括以下6种:SDS(简单动态字符串),quicklist,listpack,哈希表,整数集合,跳表。以上综合起来是8种数据结构。SDS(简单动态字符串)SDS是Redis中String数据类型的底层数据结构未使用char[]数组的原因有以下三点:获取长度的时间复杂度是O(N); 利用/0作为字符串结尾,导致不能保存音频、视频等二进制

2022-05-07 20:56:44 430 2

原创 广度优先搜索(BFS)题目解析(层序遍历,腐烂的橘子)

层序遍历力扣994、腐烂的橘子思路:1、统计当前新鲜橘子,将腐烂的橘子放入队列中 2、bfs从烂橘子位置开始遍历,并将周围方向的橘子腐烂,同时新的腐烂橘子压入队列 3、上一层腐烂的橘子继续向四周蔓延,直到最后队列为空,统计时间。class Solution { public int orangesRotting(int[][] grid) { int n = grid.length; int m = gri...

2022-05-07 15:33:46 187

原创 线程的生命周期(基本状态)

此外,根据阻塞产生的原因分为三种阻塞:等待阻塞:运行状态的线程执行wait()方法,线程进入等待阻塞; 同步阻塞:线程在获取synchronized同步锁失败,进入同步阻塞; 其他阻塞:调用线程的sleep()或join()或发出IO请求时。...

2022-03-17 11:31:15 47

原创 一文搞懂Comparable和Comparator

相同点都是用来比较两个对象“顺序”的接口不同点Comparable在java.lang包下,Comparator在java.util包下 Comparable是在集合内部元素中定义的方法实现的排序,Comparator是在集合外部实现的排序,是策略模式。具体实现Comparable需要集合中的元素实现Comparable接口,重写comparaTo()方法以Student类倒序排序举例:public class Student implements Comparable<S

2022-03-16 21:46:06 385

原创 三分钟解读MVCC原理

MVCC实现原理主要是依赖记录中的 3个隐式字段,undo日志 ,Read View 来实现的。某条记录 name grade DB_ROW_ID DB_TRX_ID DB_ROLL_PTR zhangsan A 1 5 null 三个隐式字段:DB_ROW_ID:隐含的自增ID(隐藏

2022-03-15 21:51:19 965

原创 正则表达式

1、正则表达式是用字符串描述的一个匹配规则,使用正则表达式可以快速判断给定的字符串是否符合匹配规则。Java标准库java.util.regex内建了正则表达式引擎2、Java字符串用\\表示\,比如要判断用户输入的年份是否是20##年,对应的正则表达式就是:20\d\d,java中是20\\d\\d3、利用string.matches()进行匹配判断,如"2019".matches("20\\d\\d") true;匹配规则1、匹配任意字符:可以匹配一个字符且仅限一个字符,比如a.c可以匹配a

2022-03-14 19:41:42 91

原创 Java虚拟机面试必备

1、运行时数据区是什么?jvm运行java程序时会把它管理的内存划分为若干个不同的数据区,这些区域有各自的用途,创建和销毁时间。线程私有:程序计数器,虚拟机栈,本地方法栈线程共享:堆,方法区2、程序计数器是什么?是一块较小的内存空间,可以看作当前线程执行字节码的行号指令器。字节码解释器通过改变计数器的值选取下一条执行指令。是唯一在虚拟机规范中没有规定内存溢出情况的区域。线程在执行java方法时,程序计数器执行的是字节码指令地址;执行本地方法时,计数器值为Undefined。3、虚

2022-03-14 17:08:26 832

空空如也

空空如也

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

TA关注的人

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