自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(337)
  • 资源 (1)
  • 问答 (1)
  • 收藏
  • 关注

原创 Java 面试 :乐观锁 悲观锁

乐观锁悲观锁,是为了解决多线程并发操作共享变量可能导致的脏读、幻读和不可重复读等问题悲观锁悲观锁,是因为这是一种对数据的修改持有悲观态度的并发控制方式。总是假设最坏的情况,每次读取数据的时候都默认其他线程会更改数据,因此需要进行加锁操作,当其他线程想要访问数据时,都需要阻塞挂起。共享锁【shared locks】又称为读锁,简称S锁。顾名思义,共享锁就是多个事务对于同一数据可以共享一把锁,都能访问到数据,但是只能读不能修改。排他锁【exclusive locks】又称为写锁,简称X锁。顾名思义,排

2021-03-05 14:24:28 1770 5

原创 Java面试。 多线程中锁的4中状态

锁的4中状态:无锁状态、偏向锁状态、轻量级锁状态、重量级锁状态(级别从低到高)

2021-03-03 22:58:33 121 1

原创 面试: Java线程池中为什么要使用阻塞队列?

线程池是采用生产者-消费者模式设计的线程池为消费者。在线程池中活跃线程数达到corePoolSize时,线程池将会将后续的task提交到BlockingQueue中, (每个task都是单独的生产者线程)进入到堵塞对列中的task线程会wait() 从而释放cpu,从而提高cpu利用率。...

2021-03-03 21:50:26 1458 1

原创 面试: Java线程池

引入线程池原因我们在工作中一般不会直接创建线程,原因:虽然在 Java 语言中创建线程看上去就像创建一个对象一样简单,只需要 new Thread() 就可以了,但实际上创建线程远不是创建一个对象那么简单。创建对象,仅仅是在 JVM 的堆里分配一块内存而已;而创建一个线程,却需要调用操作系统内核的 API,然后操作系统要为线程分配一系列的资源,这个成本就很高了,所以线程是一个重量级的对象,应该避免频繁创建和销毁。于是就有了线程池,利用线程池把资源池化,使得线程资源能服用,可以避免频繁地创建和销毁。线程

2021-03-03 21:25:19 140 3

原创 Java file类的getAbsoluteFile和getCanonicalFile的一些问题和解答

先上总结总结:getAbsoluteFile和getCanonicalFile,就是,各自分别用各自的getAbsolutePath和getCanonicalPath的返回值当作新new file 的构造参数,然后将这个新new 的file对象作为方法的返回值。刚开始看到这个方法,就是一脸懵逼,对就是一脸懵逼,这到底是啥,都是返回的file对象,并且指向的都是同一个抽象路径的对象,然后我就有了一个奇妙的想法,在我刚搞明白getPath,getAbsolutePath,getCanonicalPath

2020-09-01 11:12:39 4338 1

原创 java file类的getPath和getAbsolutePath和getCanonicalPath 的疑问与解答

学到file类之后,发现竟然有这么多获取path的方法,但是这些方法又各自都返回什么呢,各种有什么区别呢?返回的值有什么区别呢?有疑问咱就动手敲代码实现来观察结果,看看区别。然后就尴尬了,结果是三个方法的返回值完全一模一样之后我查阅资料,但是都找不到问题所在,这个问题好像关心的人很少,没有这类解答。于是我就去看汉化jdk发现根本读不懂,感觉就是给懂的人读的,然后我硬着头皮去看了看英文版的jdk,发现了其中的奥妙所在。首先getPath和getAbsolutePath做比较,他们的.

2020-09-01 00:57:46 1982

原创 手写tomcat第一天

持续更新

2020-08-30 15:27:14 1010 3

原创 java多线程的6种线程状态以及这6种状态间的转换关系,是怎么转换的,转换时发生了什么[面试必备]

线条1new 线程 进入NEW ,start之后进入RUNNABLE线条2获取了锁的线程执行wait,线程从RUNNABLE–>WAITING线程被打断 interrupt成功争夺到锁资源 WAITING–> RUNNABLE没有争夺到锁资源 WAITING–> RUNNABLE–>BLOCKED线程被notify之后成功争夺到锁资源 WAITING–> RUNNABLE没有争夺到锁资源 WAITING–> RUNNABLE–>..

2020-08-21 00:32:20 1123

原创 Java LockSupport.park& LockSupport.unpack 为什么可以先unpark原理解析(图解,生动形象例子解释)

每个线程都有自己的一个Park对象,由三个部分组成_count,_cond,和_mux打个比喻线程就像是一个程序员(这个程序员,有烟才会敲代码,没烟就睡觉)_cond是程序员睡觉的地方(没有烟,程序员就不敲代码了,就会跑这里睡觉)_counter是烟存放的地方(0表示没有烟了,1表示有烟)_mutex 互斥锁现在列举不同状态这些变量的变化以及线程的运行状态正常线程没有执行过unpark(此时_counter=0,程序员嘴里叼着烟),park方法执行后,程序员会立刻将烟吸完然后去睡觉。..

2020-08-19 12:20:04 1560

原创 java并发多线程,为什么每个线程都是先加后减,会出现多减情况呢?⚠️做图从cup时间片角度解释

⚠️注意因为,t1线程在添加元素时,会先读取地址,再添加,这时,读取地址完,没有添加就失去cup时间片,这是就会产生并发错误(t2线程也读取同样的地址让后t1,t2添加到同一个位置所以造成多删的情况)public static void main(String[] args) throws CloneNotSupportedException { Unsafe unsafe = new Unsafe(); Thread t1=new Thread(()->{

2020-08-15 12:01:39 1173

原创 解题思路:对 n 个互不相同的符号进行哈夫曼编码。若生成的哈夫曼树共有 115 个结点,则 n 的值是:

题目:对 n 个互不相同的符号进行哈夫曼编码。若生成的哈夫曼树共有 115 个结点,则 n 的值是:(2分)A.56B.57C.58D.60作者: 考研真题答案:C解题思路:哈夫曼树的特点性质:(节点为的度数为0 表示 n0,以此类推)①哈夫曼树中只存在度为2和度为0的节点,及n1=0。②哈夫曼树中,度为0和度为2的节点关系:n2=n0-1由以上两个性质,本题就很好解出答案:n0+n2=115 =>n0+n0-1=115 =>n0=(115+1)/2=58

2020-06-10 20:30:22 19289 4

原创 2021-5-6

linuxwc 命令-c 显示文件字节数-l 显示文件行数-w 显示文件 内的字数如果用 wc 命令,想要获取行号:wc -l < nowcoder.txt 即可。练习处linux 显示文件倒数n行的内容二叉树前序遍历,具有唯一性(前序遍历序列化成数组时,空需要用null 填充补位–》这样才可以保证唯一的结构)...

2021-05-08 07:06:29 311

原创 2021-5-4

Java 面向对象的三个特性和五个基本原则

2021-05-06 08:58:48 267

原创 2021-4-26

Spring 循环依赖Spring用@Autowire向一个类注入一个接口的两个实现类Reids 中 Stinrg 的底层数据结构10种常用设计模式

2021-04-27 21:06:18 300

原创 2021-4-25

乐观锁的两种实现抽象类和接口的区别jvm jre jdk 三着关系jvm通过 系统呼叫 (操作系统提供的系统呼叫)来实现 java的处处运行的。HashMap 、 Hashtable 、 treeMap的用处以及他们之间的区别jdk 接口在1.8版本增加的静态和默认的方法...

2021-04-25 20:32:00 115

原创 Thread 类

为什么线程池里面的线程可以重复使用

2021-04-25 11:02:33 88

原创 2021-4-24

代码调试判断链表中是否有环

2021-04-24 14:53:49 65

原创 代码调试

行断点临时断点属性断点方法断点异常断点

2021-04-24 13:55:38 70

原创 异常断点

实测 Uncaught exception没有作用。暂时不知道有什么用。

2021-04-24 13:54:19 81

原创 方法断点

2021-04-24 13:39:24 242

原创 属性断点

2021-04-24 13:36:00 111

原创 临时断点

是行断点的特殊形式。触发一次之后就,自动取消了

2021-04-24 11:08:59 98

原创 行断点

行断点:

2021-04-24 11:02:44 208

原创 java 模拟实现读写锁(By ReentranLook

package 读锁和写锁;import java.util.concurrent.locks.ReentrantLock;public class Test1 { static class Dog{ public String name = "dog"; private volatile int status = 0; private volatile ReentrantLock reentrantLock = new ReentrantLo

2021-04-23 16:36:06 132

原创 mysql自增锁

自增锁自增锁很明显是用于自增类型的操作,自增锁是表级锁,自增锁的作用是为了保证数据库的主键是自动递增的。其实这个锁主要就是用于拥有自增主键的数据表的插入操作,两个事务先后执行插入操作,第二个事务的插入操作则会被阻塞,因为需要保证主键是递增操作。...

2021-04-23 13:22:43 373

原创 2021-4-23

MySQL 事务 中的。持久化,底层实现原理。JVM OOM分析与调优死锁的四个必要条件和解决办法死锁面试题(什么是死锁,产生死锁的原因及必要条件)

2021-04-23 09:33:33 80 1

原创 2021-4-22

mysql索引失效原因附带补充:判断条件中不能用null 的原因 :不能对null 进行构建索引,所以没有索引也就不能使用索引。补充来源3.条件中有or应尽量避免在 where 子句中使用 or 来连接条件,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num=10 or num=20可以这样查询:select id from t where num=10 union all select id from t where num

2021-04-23 07:08:03 85 1

原创 哨兵架构

redis 哨兵集群中,哨兵是如何发现其他哨兵的

2021-04-22 15:45:27 97

原创 redis主从架构

主从复制风暴,主要原因是,主节点在短时间内,同时向多个从节点发送同步包,导致系统压力过大。

2021-04-22 10:41:38 80

原创 redis 持久化

2021-04-22 09:14:41 66

原创 2021-4-21

Queue 中 add() 和 offer() 区别Java实现二叉树的层序遍历mysql锁机制有哪些_MySQL锁机制——你想知道的都在这了!volatile的可见性原理索引(B+树)、B+树一个节点有多大?(一千万条数据,B+树多高?)...

2021-04-22 07:01:49 125

原创 2021-4-20

Spring 事务的传播机制Spring bean 的作用域分布式需要解决的问题什么时候需要重写equals修改equals为什么要修改hashcode ,不修改会造成什么后果redis八种淘汰策略redis缓存穿透解决策略

2021-04-21 08:16:16 45

原创 redis缓存穿透解决策略

缓存控对象布隆过滤器:当布隆过滤器说某个值存在时,这个值可 能不存在;当它说不存在时,那就肯定不存在。缓存失效(击穿) 由于大批量缓存在同一时间失效可能导致大量请求同时穿透缓存直达数据库,可能会造成数据库瞬间压力过大 甚至挂掉,对于这种情况我们在批量增加缓存时最好将这一批数据的缓存过期时间设置为一个时间段内的不同 时间。热点缓存key重建优化...

2021-04-20 18:42:32 56

原创 chrome 无法安装第三方软件

https://chrome.zzzmh.cn/help?token=setup

2021-04-19 22:08:16 368

原创 2021-4-19

synchronized锁升级、jvm 元空间

2021-04-19 20:30:31 88

原创 学习记录

HashMap

2021-04-17 16:25:56 49

原创 努力且自信

2021-4-17

2021-04-17 16:25:16 53

原创 新知识:2021-4-17

1.位运算: a >> N 表示 a = a / (2的N次方); (右移除,左移乘。 2的次方)2.HashMap为什么扩容,都是2的倍数:HashMap的新容量是通过 位移和或运算 计算得出的。计算机底层是二进制的,移位和或运算是非常快的,所以这个方法的效率很高。...

2021-04-17 16:24:53 78

原创 redis 性能优化

keys 少用或者不要用。用scan代替scan 0 match zhang* count 3从0 开始 遍历 三个,打印出 满足 zhang* 的直到0 才表示全表扫描完了。这个东西有几率会漏元素原因: 查询过程中,添加元素的话,添加的元素1.如果插到游标已经遍历过的地方。2。添加元素过多,导致rehash , 直接导致结构变化。...

2021-04-17 16:17:06 35

原创 网页无法复制粘贴

在浏览器地址栏中输入: javascript:void($={}); 然后按回车键,然后网页上的内容就任由你复制啦,注意要手动输入,复制无效哦。http://pic.rmb.bdstatic.com/6bbb19dcfca39fd05e06ffd81b4e65fe4906.gif

2021-04-14 19:46:08 189

java-jdk-8.0.zip

这是java-jdk-8.0的版本,比官方要下载的快,下载官方需要注册才能下载,比较麻烦,所以我给不想注册的同学分享这个。

2020-06-11

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

TA关注的人

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