- 博客(22)
- 资源 (2)
- 收藏
- 关注

原创 为什么HashMap链表长度超过8会转成红黑树结构
底层数据结构: JDK1.8 以后的 HashMap 在解决哈希冲突时有了较大的变化,当链表长度大于阈值(默认为8)时,将链表转化为红黑树,以减少搜索时间。为什么HashMap链表长度超过8会转成红黑树结构?红黑树的插入、删除和遍历的最坏时间复杂度都是log(n),log(6)=2.6链表 8/2=4红黑树 log(8)=32.由频率表可以看出,桶的长度超过8的概率非常非常...
2019-08-31 22:26:20
2183

原创 分布式RPC框架
分布式RPC框架Apache Dubbo学习目标 了解软件架构的演进过程 掌握Dubbo框架的架构 能够使用命令启动和停止Zookeeper 掌握Dubbo服务提供者和消费者开发 了解Dubbo管理控制台dubbo-admin第一章-软件架构的演进过程知识点-软件架构的演进过程1.目标 软件架构的发展经历了由单体架构、垂直架构、【SOA架构,微服务】架构的演进过程.我们需...
2019-08-27 13:50:27
420
原创 One
Day 1环境搭建IdeaJDK1.8+MAVEN3.5+NACOS1.0.1启动Nacos修改Nacos配置文件application.properties,采用无密码登陆方式, 开启以下配置:spring.security.enabled=falsemanagement.security=falsesecurity.basic.enabled=falsenacos.security.ignore.urls=/**执行bin目录下的startup.cmd启动, 访问http:
2021-04-06 22:10:45
150
原创 Java类的加载器
类的加载是由类加载器完成的,类加载器包括:根加载器( BootStrap )、扩展加载器( Extension )、系统加载器( System )和用户自定义类加载器( java.lang.ClassLoader 的子类)。从 Java 2 ( JDK 1.2 )开始,类加载过程采取了父亲委托机制( PDM )。 PDM 更好的保证了 Java 平台的安全性,在该机制中, JVM 自带的 Boo...
2019-10-26 15:32:58
236
原创 关于Spring框架出现的问题
这篇文章,主要是给初学者对Spring框架的一个加深的理解。自己花时间整理了一下。如果有错误,欢迎指出,我会及时改正。希望能帮助到更多的人。多多关注什么是Spring框架?Spring官网{没有什么比官网还准确了} Spring 是一种轻量级开发框架。Spring框架是由于软件开发的复杂性而创建的。Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spr...
2019-10-26 11:43:26
682
原创 MySql优化问题
优化的原因:数据是存放在磁盘上的,读写速度无法和内存相比随着应用程序的运行,数据库的中的数据会越来越多,处理时间会相应变慢统的吞吐量瓶颈往往出现在数据库的访问速度上优化方法1. 设计数据库时:数据库表、字段的设计,存储引擎2. 利用好MySQL自身提供的功能,如索引等1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by涉及的列上建立索引。应尽...
2019-10-23 22:23:59
167
转载 MySQL数据库表的管理(修改表,复制,新增、修改列,删除表列)
关系型数据库的数据通常都是以表的形式存储和展现,因此可以简单而粗暴地讲,一个关系就是一个表。在创建表格后,在后期对数据库表的管理工作中,表的维护、修改是重要工作,如增加一个新列,删除一列,修改某属性的数据类型等,本篇文章总结MySQL数据库表管理的基本操作。包括复制和删除表,新增、修改、删除列等。数据库表管理相关命令复制表 和删除表创建表格的命令大家都很熟悉,CREATE TABLE 表名...
2019-10-18 18:27:02
549
原创 线程的几种状态?
java线程的几种状态一. 线程状态类型新建状态(New):新创建了一个线程对象。就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法。该状态的线程位于可运行线程池中,变得可运行,等待获取CPU的使用权。运行状态(Running):就绪状态的线程获取了CPU,执行程序代码。阻塞状态(Blocked):阻塞状态是线程因为某种原因放弃CPU使用权,暂时停止...
2019-10-18 18:07:18
137
原创 MyBatis中的一级缓存和二级缓存介绍?
合理使用缓存是优化中最常见的,将从数据库中查询出来的数据放入缓存中,下次使用时不必从数据库查询,而是直接从缓存中读取,避免频繁操作数据库,减轻数据库的压力,同时提高系统性能。一级缓存一级缓存是SqlSession级别的缓存。在操作数据库时需要构造sqlSession对象,在对象中有一个数据结构用于存储缓存数据。不同的sqlSession之间的缓存数据区域是互相不影响的。也就是他只能作用在同...
2019-10-16 21:17:45
373
原创 Redis主从复制原理、断点续传、过期key处理?
主从架构的核心原理当启动一个slave node的时候,它会发送一个PSYNC命令给master node如果这是slave node重新连接master node,那么master node仅仅会复制给slave部分缺少的数据; 否则如果是slave node第一次连接master node,那么会触发一次full resynchronization。开始full resynchroniza...
2019-10-16 15:39:59
541
原创 如何保证缓存与数据库双写时的数据一致性?
解析一般来说,就是如果你的系统不是严格要求“缓存+数据库”必须一致性的话,缓存可以稍微的跟数据库偶尔有不一致的情况,最好不要做这个方案,即:读请求和写请求串行化,串到一个内存队列里去,这样就可以保证一定不会出现不一致的情况。原因:串行化之后,就会导致系统的吞吐量大幅度降低,用比正常情况下多几倍的机器去支撑线上的一个请求。Cache Aside Pattern最经典的缓存+数据库读写的模式,...
2019-10-14 20:49:54
201
原创 Mysql如何为表字段添加索引???
添加PRIMARY KEY(主键索引)ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` ) 2. 添加UNIQUE(唯一索引) ```sqlALTER TABLE `table_name` ADD UNIQUE ( `column` )添加INDEX(普通索引)ALTER TABLE `table_name` AD...
2019-10-13 15:38:33
321
原创 怎么使用 synchronized 关键字?
修饰实例方法,作用于当前对象实例加锁,进入同步代码前要获得当前对象实例的锁public synchronized void normalMethod() throws InterruptedException { for (int i = 0; i < 10; i++) { Thread.sleep(1000); System.out...
2019-10-13 09:38:55
576
原创 ConcurrentHashMap 和 Hashtable 的区别?
ConcurrentHashMap 和 Hashtable 的区别1. 底层数据结构: JDK1.7的 ConcurrentHashMap 底层采用 分段的数组+链表 实现,JDK1.8 采用的数据结构跟HashMap1.8的结构一样, 数组+链表/红黑二叉树。2. 实现线程安全的方式(重要):① 在JDK1.7的时候,ConcurrentHashMap(分段锁) 对整个桶数组进行了分割分段...
2019-10-12 17:24:37
203
原创 HashSet 和 HashMap 区别?
HashSet 底层就是基于 HashMap 实现的。(HashSet 的源码非常非常少,因为除了 clone() 方法、writeObject()方法、readObject()方法是 HashSet 自己不得不实现之外,其他方法都是直接调用 HashMap 中的方法。)...
2019-10-12 17:16:50
711
原创 HashMap 和 Hashtable 的区别?
1. 线程是否安全: HashMap 是非线程安全的,HashTable 是线程安全的;HashTable 内部的方法基本都经过synchronized 修饰。(如果你要保证线程安全的话就使用 ConcurrentHashMap 吧!);2. 效率: 因为线程安全的问题,HashMap 要比 HashTable 效率高一点。另外,HashTable 基本被淘汰,不要在代码中使用它;3. 对...
2019-10-12 17:13:11
156
原创 HashMap的底层实现(1.8前后的区别)
JDK1.8之前JDK1.8 之前 HashMap 底层是 数组和链表 结合在一起使用也就是 链表散列。HashMap 通过 key 的 hashCode 经过扰动函数处理过后得到 hash 值,然后通过 (n - 1) & hash 判断当前元素存放的位置(这里的 n 指的是数组的长度),如果当前位置存在元素的话,就判断该元素与要存入的元素的 hash 值以及 key 是否相同,如果相...
2019-10-12 17:05:11
934
原创 Arraylist 与 LinkedList 异同?
是否保证线程安全: ArrayList 和 LinkedList 都是不同步的,也就是不保证线程安全;底层数据结构: Arraylist 底层使用的是Object数组;LinkedList 底层使用的是双向链表数据结构(JDK1.6之前为循环链表,JDK1.7取消了循环。注意双向链表和双向循环链表的区别:);插入和删除是否受元素位置的影响:① ArrayList 采用数组存储,所以插入和...
2019-10-12 16:53:05
213
原创 接口和抽象类的区别
1.接口的方法默认是 public,所有方法在接口中不能有实现(Java 8 开始接口方法可以有默认实现),抽象类可以有非抽象的方法2. 接口中的实例变量默认是 final 类型的,而抽象类中则不一定3. 一个类可以实现多个接口,但最多只能实现一个抽象类4. 一个类实现接口的话要实现接口的所有方法,而抽象类不一定5. 接口不能用 new 实例化,但可以声明,但是必须引用一个实现该接口的对...
2019-10-12 16:46:56
135
原创 java.lang.NoClassDefFoundError: org/springframework/data/repository/config/RepositoryConfigurationDe
程序启动后,显示无法加载该类。我的原因是pom坐标冲突。修改: <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <ve...
2019-10-10 22:26:29
3193
原创 分布式事务
如何解决分布式事物问题 分布式事务是指会涉及到操作多个数据库的事务。其实就是将对同一库事务的概念扩大到了对多个库的事务。目的是为了保证分布式系统中的数据一致性。分布式事务处理的关键是必须有一种方法可以知道事务在任何地方所做的所有动作,提交或回滚事务的决定必须产生统一的结果。二阶提交协议(Two Phase Commitment Protocol)二阶段提交(Two-phaseCommit...
2019-10-07 11:56:57
178
原创 ConcurrentHashMap 和 Hashtable 的区别?
ConcurrentHashMap 和 Hashtable 的区别?ConcurrentHashMap 和 Hashtable 的区别主要体现在实现线程安全的方式上不同。 1底层数据结构: JDK1.7的 ConcurrentHashMap 底层采用 分段的数组+链表 实现,JDK1.8 采用的数据结构跟HashMap1.8的结构一样,数组+链表/红黑二叉树。Hashtable 和 J...
2019-08-31 22:30:52
759
2019微服务面试题.pdf
2019-09-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人