自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 面经系列之 设计模式(创建型)

设计模式创建型模式1 简单工厂模式(普通简单工厂,多方法简单工厂,静态简单工厂)1)模式定义2)类图3)代码示例4)优缺点5)适用场景2 工厂方法模式1)模式定义2)类图3)代码示例4)优缺点5)适用场景3)抽象工厂模式1)模式定义2)类图3)代码示例4)优缺点5)适用场景4)建造者模式 创建型模式 1 简单工厂模式(普通简单工厂,多方法简单工厂,静态简单工厂) 1)模式定义 在简单工厂模式中,...

2020-01-04 13:09:34 183

原创 面经系列之 数据库

数据库1 数据库三范式1)列都是不可再分2)每个表只描述一件事情3)不存在对非主键列的传递依赖2 数据库事务1)原子性(Atomicity)2)一致性(Consistency)3)隔离性(Isolation)4)永久性(Durability)3 存储过程(暂时不懂)4 触发器(一段能自动执行的程序)不懂5 数据库并发策略1)乐观锁2)悲观锁3)时间戳6 数据库锁1)行级锁2)表级锁3)页级锁7 数...

2020-01-03 14:34:01 307

原创 面经系列之 java基础

java基础java基础1 值传递和引用传递2 为什么重写equals()时也要重写hashcode()3 java面向对象特性4 java和c++的区别5 多态的实现原理1 类调用1)静态绑定2)动态绑定2 接口调用6 抽象类和接口的区别以及使用场景7 泛型 java基础 1 值传递和引用传递 值传递是对基本型变量而言的,传递的是该变量的一个副本,改变副本不影响原变量。 引用传递一般是对于对象型...

2019-12-31 11:49:14 197

原创 算法系列之二叉树的遍历

1 前序遍历 在迭代算法中,思路演变成,每到一个节点 A,就应该立即访问它。 因为,每棵子树都先访问其根节点。对节点的左右子树来说,也一定是先访问根。 在 A 的两棵子树中,遍历完左子树后,再遍历右子树。 因此,在访问完根节点后,遍历左子树前,要将右子树压入栈。 public class TreeNode { int val; TreeNode left; ...

2019-12-30 11:20:36 107

原创 虚拟机系列之 线程安全与锁优化

线程安全与锁优化线程安全与锁优化1 线程安全1)Java语言中的线程安全2)线程安全的实现方法2 锁优化1)自旋锁与自适应自旋2)锁消除3)锁粗化4)轻量级锁5)偏向锁 线程安全与锁优化 1 线程安全 1)Java语言中的线程安全 1 不可变 Java语言中,如果共享数据是一个基本数据类型,只要在定义时使用final关键字修饰它就可以保证它是不可变的。 如果共享数据是一个对象,那就需要保证对象的行...

2019-12-27 13:55:19 120

原创 虚拟机系列之 Java内存模型与线程

Java内存模型与线程Java内存模型与线程1 概述2 硬件的效率与一致性3 Java内存模型1)主内存与工作内存2)内存间交互操作3)volatile4)对于long 和double型变量的特殊规则5)原子性、可见性与有序性6)先行发生原则4 Java与线程1)线程的实现2)Java线程调度3)状态转换 Java内存模型与线程 1 概述 计算机的运算能力强大,且计算机的运算速度与它的存储和通讯子...

2019-12-27 12:19:32 99

原创 虚拟机系列之 虚拟机字节码执行引擎

虚拟机字节码执行引擎虚拟机字节码执行引擎1 概述2 运行时栈帧结构1)局部变量表2) 操作数栈3)动态连接4)方法返回地址5)附加信息3 方法调用1)解析2)分派3)单分派与多分派4 基于栈的字节码解释执行引擎 虚拟机字节码执行引擎 1 概述 在不同的虚拟机实现里面,执行引擎在执行java代码的时候可能有解释执行和编译执行两种选择,也可能两者兼备,甚至还可能包含几个不同级别的编译器执行引擎,但是从...

2019-12-26 11:49:45 137

原创 虚拟机系列之 虚拟机类加载机制

类加载机制类加载机制1 概述2 类加载的时机3 类加载的过程1)加载2)验证3)准备4)解析5)初始化4 类加载器1)类与类加载器2)双亲委派模型3)破坏双亲委派模型 类加载机制 1 概述 在class文件中描述的各种信息,最终都需要加载到虚拟机中之后才能被运行和使用。虚拟机把描述类的数据从class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的java类型,...

2019-12-25 17:00:26 107

原创 虚拟机系列之 类文件结构

类文件结构类文件结构1 魔数2 常量池3 访问标志4 类索引、父类索引与接口索引集合5 字段表集合6 方法表集合7 属性表 类文件结构 Class的结构不像xml等描述语言,由于它没有任何分隔符号,所以无论是顺序还是数量,都被严格限定,字节含义和长度先后顺序等,都不允许改变。 1 魔数 每个class文件的头4个字节称为魔数,它的唯一作用是用于确定这个文件是否为一个能被虚拟机接受的class...

2019-12-25 12:21:39 127

原创 redis系列之 数据库

数据库数据库1 服务器中的数据库2 切换数据库3 数据库键空间1)添加新键2)删除键3)对键取值4)更新键5)其他键空间操作6)读写键空间时的维护操作4 设置键的生存时间或过期时间1)设置过期时间2)保存过期时间3)移除过期时间4)计算并返回剩余生存时间5)过期键的判定5 过期键删除策略1)定时删除2)惰性删除3)定期删除6 过期删除策略的实现1)惰性2)定期删除 数据库 1 服务器中的数据库 本...

2019-12-22 20:53:06 122

原创 redis系列之 对象

对象对象1 对象的类型与编码2 字符串对象1)int2)raw3)embstr3 列表对象1)ziplist2)linkedlist4 哈希对象1)ziplist2)hashtable5 集合对象1)intset2)hashtable6 有序集合对象1)ziplist2)skiplist7 类型检查与命令多态8 内存回收9 对象共享10 对象的空转时长11 总结 对象 Redis并没有直接使用这些...

2019-12-22 18:41:37 111

原创 redis系列之 压缩列表

压缩列表 (ziplist)压缩列表实现1 压缩列表2 压缩列表节点连锁更新总结 压缩列表 压缩列表(ziplist)是列表键和哈希键的底层实现之一。当一个列表键只包含少量列表项,并且每个列表项要么就是小整数值,要么就是长度比较短的字符串,那么Redis就会使用压缩列表来做列表键的底层实现。 另外,当一个哈希键只包含少量键值对,并且每个键值对的键和值要么就是小整数值,要么就是长度比较短的字符串,那...

2019-12-21 21:48:35 1224 1

原创 redis系列之 整数集合

整数集合 intset整数集合整数集合的实现升级总结 整数集合 整数集合(intset)是集合键的底层实现之一,当一个集合只包含整数值元素,并且这个集合的元素数量不多时,Redis就会使用整数集合作为集合键的底层实现。举个例子,如果我们创建一个只包含五个元素的集合键,并且集合中的所有元素都是整数值,那么这个集合键的底层实现就会是整数集合。 整数集合(intset)是Redis用于保存整数值的集合抽...

2019-12-21 20:16:45 242 1

原创 redis系列之 跳跃表

跳跃表跳跃表跳跃表的实现1 跳跃表节点2 跳跃表总结 跳跃表 跳跃表(skiplist)是一种有序数据结构,它通过在每个节点中维持多个指向其他节点的指针,从而达到快速访问节点的目的。跳跃表支持平均O(logN)、最坏O(N)复杂度的节点查找,还可以通过顺序性操作来批量处理节点。在大部分情况下,跳跃表的效率可以和平衡树相媲美,并且因为跳跃表的实现比平衡树要来得更为简单,所以有不少程序都使用跳跃表来代...

2019-12-21 19:47:31 96

原创 redis系列之 字典

字典字典一 字典的实现1 哈希表2 哈希表节点3 字典二 哈希算法三 解决键冲突四 rehash哈希表的扩展与收缩五 渐进式哈希总结 字典 字典,又称为符号表(symbol table)、关联数组(associative array)或映射(map),是一种用于保存键值对(key-value pair)的抽象数据结构。在字典中,一个键(key)可以和一个值(value)进行关联(或者说将键映射为值...

2019-12-21 16:26:29 96

原创 redis系列之 链表

链表链表和链表节点的实现链表节点链表Redis的链表实现的特性链表作用 链表和链表节点的实现 链表节点 typedef struct listNode { struct listNode *prev;//前置节点 struct listNode *next;//后置节点; void *value;//节点的值 }listNode; 链表 typedef struct list { listNod...

2019-12-21 12:12:31 133

原创 redis 系列 之 SDS

一 SDSSDS 简介SDS定义SDS与C字符串的区别1 常数复杂度获取字符串长度2 杜绝缓冲区溢出3 减少修改字符串时带来的内存重分配次数空间优化策略4 二进制安全5 兼容部分C字符串函数总结 SDS 简介 SDS,(simple dynamic string),redis没有直接使用c语言传统的字符串表示(以空字符结尾的字符数组),而是自己构建了SDS的抽象类型,并把SDS用作redis的默认...

2019-12-21 11:24:35 265

空空如也

空空如也

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

TA关注的人

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