- 博客(28)
- 收藏
- 关注
原创 Java的String为什么是不可变?
String为什么是不可变的?曾经我一度认为是底层的char型数组被final修饰所以不可变,但实际并不是这样!!!且听我慢慢道来
2022-02-19 17:42:47
317
原创 设计模式——观察者模式
设计模式——观察者模式跟着小欢子一起学习设计模式,写出优雅的代码——妈妈再也不担心我的代码被吐槽了一、两个人观察者模式中有两个抽象的角色,观察者和被观察者。看清楚哦,是抽象的哟。实际他们有各种各样的身份。如学生是观察者,老师是被观察者。学生们观察老师,等待上课或者下课的消息。再如微信公众号和微信用户。微信用户是观察者,公众号是被观察者。微信用户观察公众号,等待公众号更新文章。二、四个方法四个方法分别是观察者的更新消息,以及被观察者的添加观察者,删除观察者以及推送消息三、栗子抽象的观察者p
2021-04-29 10:43:51
162
1
原创 JVM八股文自述
1.介绍一下Java运行时内存区答:在jdk1.6及之前,java内存区是分为堆区,方法区(运行时常量)也叫永久代,直接内存区(不属于运行时内存区),这是线程共享的,线程私有的是虚拟机栈,本地方法栈,程序计数器,jdk1.7将方法区移入了堆区,1.8直接将永久代移除,增加了元空间,是放在直接内存区的。2.程序计数器答:程序计数器是java内存中唯一一个不会出现OutOfMemoryError的区域。程序计数器的作用主要有两个,首先程序计数器控制了我们程序流程,如顺序执行,循环执行等等,我把它理解为下一
2021-03-22 19:18:18
584
1
原创 Redis八股文自述
1.redis是什么答:redis是一个基于内存的,key-value型的非关系型数据库。2.redis一般用来做什么答:redis一般用来做缓存,也可以用来做分布式锁,同时一些特殊的需求,如实时的排行榜可以用redis中的zset来实现。3.为什么要用缓存(redis)答:使用缓存可以提高系统的性能以及并发。因为redis是将数据存于内存,而MySQL(innodb)则是将数据存于磁盘,读取内存的速度是ns级别,而读取磁盘的速度是ms级别(相差是的6次方,中间隔着一个微秒),所以使用缓存的系统响
2021-03-02 20:17:56
735
原创 OS相关八股文自述
1.什么是操作系统?答:我认为操作系统首先是一个软件,它为其他软件调用计算机硬件提供接口,其次可以提供一个界面来方便用户与计算机交互。2.什么是系统调用?答:系统调用就是某些资源不能被用户随意使用,而是需要操作系统进行资源统一分发管理,如打印机,摄像头等等,系统调用就是来统一分发这些资源的接口。3.用户态与内核态答:用户态是运行用户程序时的状态,但是比如说此时有两个进程在运行,分别是qq和微信,当我们用微信在进行视频聊天的时候,qq进程如果也要调用摄像头,它不能一下子就抢夺摄像头这个资源吧,这样就
2021-02-28 20:29:08
1043
原创 计网相关八股文自述
1.time_wait是哪一方的?有什么作用?答:time_wait是主动发起断开方的一个状态,它是在收到被动方FIN报文,响应ACK之后的一个状态,它的目的有两个,第一是为了防止相同四元组的旧数据被接收到,因为相同四元组的旧数据是有可能被新连接接受到的,就是当序列号seq_num碰巧相同,且四元组是一样的时候。所以设置2MSL的等待时间,让两个方向上的数据包都被丢弃,这样保证再出现的数据包是新连接产生的。第二是根据RFC(互联网协议的相关标准)指出,为了确保被动方可以收到最后一次ACK,从而正常关闭。因
2021-02-28 20:28:56
1537
原创 JUC相关八股文自述
1.什么是CAS答:CAS就是compare and swap,比较并替换,是乐观锁的一种实现方式,是一种轻量级锁。2.CAS怎么实现线程安全的?答:首先这是一个原子操作,线程在读取数据时不加锁,在准备写回数据时,先判断与原值是否相等,如相等则修改写回,若不想等则继续进行读取流程,就是自旋。3.CAS有什么问题?答:若是结果一直在变,那么CAS就会一直自旋,这存在CPU开销的问题,且无法防止ABA问题,且只能保证操作单个共享变量是原子操作。JUC中的AtomicInteger的自增函数increm
2021-02-28 20:28:46
402
原创 数据库八股文自述
1.MySQL索引有哪些数据结构?答:B+tree,以及Hash。Hash索引比较适合单值的查找,但不适合范围查询,Hash索引的单值查找时间复杂度为O(1).B+tree查找的时间复杂度为O(logn),但是B+适合范围查询以及扫表。Innode和MyISAM是不支持hash索引的。2.MySQL索引结构为什么不用B,而用B+?答:B树是每个节点都会存放数据,而B+的数据只会存放在叶子节点的链表上,且该链表是个双向链表,因此B+相对于B来说,最大的优势就是适合扫表。具体原因为,因为B每个节点都存放数
2021-02-28 20:28:31
4231
2
原创 浅谈Java对象拷贝&浅拷贝&深拷贝
protected Object clone() throws CloneNotSupportedException创建并返回此对象的副本。 “复制”的精确含义可能取决于对象的类。 一般的意图是,对于任何对象x ,表达式: x.clone() != x将是真实的,而且表达: x.clone().getClass() == x.getClass()将是true ,但这些都不是绝对的要求。 通常情况是: x.clone().equals(x)将是true ,这不是一个
2021-01-29 16:50:45
258
原创 多线程相关内容总结(Java)
1.线程的创建2.多线程安全问题的提出3.线程安全问题的解决4.生产者/消费者模型(线程之间的通信)5.sleep与wait的对比总结6.synchronized与lock的区别7.虚假唤醒8.8锁现象9.线程池10.7大参数11.四大拒绝策略12.自定义拒绝策略
2021-01-29 16:49:34
184
2
原创 用SSD(固态硬盘)代替HDD(机械硬盘)还会存在访问硬盘I/O效率问题吗?
1.用SSD(固态硬盘)代替HDD(机械硬盘)还会存在访问硬盘I/O效率问题吗?2.SSD与HDD的区别3.SATA是HDD的一种接口方式
2021-01-18 22:26:47
1037
1
原创 Cookie与Session教程
1.Cookie详解2.Session详解3.Cookie与Session的区别4.如何解决分布式Session问题
2021-01-15 21:55:52
256
1
原创 数据结构之哈希表
1.哈希表2.哈希冲突3.开放定址法(再散列法)、拉链法、再哈希法、建立公共溢出区4.分析为何冲突严重后哈希表查找速率会下降5.拉链式哈希表代码实现(Java)
2021-01-13 11:09:09
311
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人