Java技术点精华解决方案

Posted by ispotu Blog on December 1, 2020

1.zookeeper的使用

参考:https://blog.csdn.net/hongtaolong/article/details/88898875

https://zhuanlan.zhihu.com/p/42056183

https://www.cnblogs.com/codestory/p/11387116.html

https://github.com/SeemSilly/codestory/blob/master/research-zoo-keeper/src/main/java/tech/codestory/zookeeper/lock/ZooKeeperWriteLock.java

1.0 zookeeper的作用

https://blog.csdn.net/nangeali/article/details/81428419

1.1 Curator实现分布式锁

https://www.cnblogs.com/LiZhiW/p/4931577.html

https://www.jianshu.com/p/a974eec257e6

1.2 zookeeper实现负载均衡

https://blog.csdn.net/hellozpc/article/details/80260903

https://blog.csdn.net/qq_40241957/article/details/82930310

https://www.cnblogs.com/toov5/p/9899238.html

https://my.oschina.net/ydsakyclguozi/blog/631390

参考:https://segmentfault.com/a/1190000012185401

1.3 zookeeper实现的分布式任务调度

https://blog.csdn.net/HappyHeng/article/details/83478539

https://blog.csdn.net/HappyHeng/article/details/83573112

1.4 zookeeper实现注册中心

https://study.163.com/course/courseLearn.htm?courseId=1209594847#/learn/video?lessonId=1280009454&courseId=1209594847

1.5 zookeeper实现分布式定时任务调度

https://www.cnblogs.com/yeyongjian/p/8906474.html

2.Netty的使用

0676b41896ee4f8e87a006e993cca570

56127ef6c0e44ae582534a6e0d1e5d48

参考:https://blog.csdn.net/qq_34337272/article/details/79764259

https://www.sohu.com/a/272879207_463994

https://my.oschina.net/xishuixixia/blog/93076

3.大厂面试题

https://www.jianshu.com/p/d6e9b1c211dd

https://www.jianshu.com/p/967541aaf50d

https://www.jianshu.com/p/a61f012e84d5

4.Hibernate二级缓存

https://www.cnblogs.com/lesliehe/p/8022266.html

https://www.bilibili.com/video/BV1rx411p7QB?p=7

5.mybatis二级缓存

https://www.bilibili.com/video/BV1Kp4y1y75f?from=search&seid=2969846661096567995

6.java设计模式

https://study.163.com/course/courseMain.htm?courseId=1209569921

http://c.biancheng.net/design_pattern/

https://www.runoob.com/design-pattern/design-pattern-tutorial.html

7.SpringCloud的使用

https://www.bilibili.com/video/BV1tJ411s7e7/?p=20

https://www.bilibili.com/video/BV1eE411h7so?p=7

8.springboot+Dubbo的使用

https://www.bilibili.com/video/BV1HJ411r7E4?p=2

https://www.bilibili.com/video/BV1bb411J7k9?p=3

9.kafka的使用

https://www.bilibili.com/video/BV15J411z7Q2/?p=11&t=2093

https://www.bilibili.com/video/BV1QJ411m7Ks?t=5247

10.Paxos和Raft算法

https://www.bilibili.com/video/BV19t411c75p/?p=2&t=1458

11.Redis集群搭建

https://www.bilibili.com/video/BV1JE411d7ZL?p=2

12.分布式ID

https://study.163.com/course/courseMain.htm?courseId=1209583858

13.spring源码

参考:https://www.bilibili.com/video/BV1uE411d7L5?p=18

14.mysql的主从复制

https://www.bilibili.com/video/BV1a7411L7h4?from=search&seid=8679762062137834618

15.mycat

https://www.bilibili.com/video/BV12E41157po?from=search&seid=1947935159238499669

参考:https://www.bilibili.com/video/BV127411g7Nu?p=28

16.sharding jdbc使用

https://www.bilibili.com/video/BV1r7411f79Y?p=5

https://www.bilibili.com/video/BV1r64y1T7Y7?p=6

17.Java设计模式之六大设计原则

https://blog.csdn.net/ztchun/article/details/93521119

18.mysql优化

https://www.bilibili.com/video/BV1iV411o7sT?p=1

https://www.bilibili.com/video/BV1tK411p74B?p=6

19.hashcode相同的字符串

System.out.println("ABCDEa123abc".hashCode());  // 165374702
System.out.println("ABCDFB123abc".hashCode()); //  165374702
System.out.println("Aa".hashCode()); // 2112
System.out.println("BB".hashCode()); // 2112

20.一致性hash原理

参考:https://www.cnblogs.com/lpfuture/p/5796398.html

21.源码中的设计模式,为什么这么用?

https://ispotu.blog.csdn.net/article/details/106721774

22.TCP连接 三次握手和四次挥手

参考:https://blog.csdn.net/qq_37884273/article/details/82188586

https://www.jianshu.com/p/e916bfb27daa

23.项目内存或CPU占有率过高如何排查?

参考:https://www.jianshu.com/p/1ebc56ecb76a

https://blog.csdn.net/weixin_43778179/article/details/90147523

https://blog.csdn.net/qq_40597878/article/details/103272608

https://blog.csdn.net/jingyangV587/article/details/103438347

24.Dubbo底层原理

参考:https://blog.csdn.net/ityouknow/article/details/100789012

https://blog.csdn.net/qq_33101675/article/details/78701305

25.常见java算法

各类算法:https://www.runoob.com/w3cnote_genre/algorithm

(1)快排

https://blog.csdn.net/boy_chen93/article/details/85049274

https://blog.csdn.net/u011998957/article/details/88080093

(2)归并排序

https://www.cnblogs.com/chengxiao/p/6194356.html

(3)插入排序

https://www.jianshu.com/p/d2cf77f78b3e

(4)堆排

https://www.cnblogs.com/chengxiao/p/6129630.html

(5)冒泡排序

https://ispotu.blog.csdn.net/article/details/51965794

(6)选择排序

https://www.runoob.com/w3cnote/selection-sort.html

(7)希尔排序法(插入排序的改进版)

https://www.imooc.com/article/284892

(8)双轴快排

https://blog.csdn.net/Holmofy/article/details/71168530

https://www.cnblogs.com/nullzx/p/5880191.html

各种算法的动画演示:http://www.jsons.cn/sort/

26.GC垃圾回收、JVM优化

https://blog.csdn.net/missA_fei/article/details/88555428

https://blog.csdn.net/high2011/article/details/80177473

https://www.cnblogs.com/aspirant/p/8662690.html

https://www.cnblogs.com/aspirant/p/8663872.html

https://www.cnblogs.com/aspirant/p/8663911.html

https://www.cnblogs.com/aspirant/p/8663897.html

27.mysql范式

https://www.cnblogs.com/moxiaotao/p/10120672.html

28.AQS原理

https://www.cnblogs.com/duanxz/p/3559510.html

https://blog.csdn.net/qq_37685457/article/details/89704124

https://segmentfault.com/a/1190000017372067

29.CountDownLatch、CyclicBarrier、Semaphore

https://www.cnblogs.com/zhaoyan001/p/10775676.html

https://www.cnblogs.com/MrEven/p/11570251.html

30.Java类图UML符号

https://www.cnblogs.com/meishibiexuejava/p/8551092.html

31.快排优化

https://www.cnblogs.com/noKing/archive/2017/11/29/7922397.html

https://blog.csdn.net/u010325665/article/details/86299710

https://blog.csdn.net/QuZDLvT/article/details/98181898

32.mysql索引优化原则

https://blog.csdn.net/yhl_jxy/article/details/88636685

https://www.cnblogs.com/hepingqingfeng/p/7553428.html

https://www.cnblogs.com/gaoyuechen/p/8067450.html

https://blog.51cto.com/13126942/2044825

https://www.cnblogs.com/zhuxiaopijingjing/p/12970691.html

https://www.jb51.net/article/136000.htm

33.分布式ID

https://www.cnblogs.com/wuneng/p/11478160.html

34.HashTable和HashMap区别

https://www.cnblogs.com/williamjie/p/9099141.html

35.手写一个tcp

https://www.cnblogs.com/niuyourou/p/12542209.html

36.Netty

https://www.cnblogs.com/nanaheidebk/p/11025362.html

37.意向锁、排它锁、共享锁

https://www.zhihu.com/question/51513268

img

38.WebService

https://blog.csdn.net/c99463904/article/details/76018436

39.IO设计模式:Reactor和Proactor对比

https://www.cnblogs.com/me115/p/4452801.html

40.select、poll和epoll之间的区别与优缺点

wKiom1ecee_SajTcAABB7-ZTUR0253.png

https://blog.csdn.net/BaiHuaXiu123/article/details/89948037

https://www.cnblogs.com/aspirant/p/9166944.html

41.synchronized和ReentrantLock区别

https://blog.csdn.net/qq_36299025/article/details/89555462

42.解决哈希冲突的方式

https://www.cnblogs.com/kaleidoscope/p/9588151.html

https://blog.csdn.net/TangXiaoPang/article/details/87902057

43.Tomcat为什么要重写类加载器

https://blog.csdn.net/qq_38182963/article/details/78660779

44.MySQL连接查询inner join,left join和right join的区别

https://www.cnblogs.com/mafeng/p/10150013.html

45.最小堆

https://blog.csdn.net/hrn1216/article/details/51465270

46.手写多线程情况下,生产者消费者的核心代码

https://blog.csdn.net/Virgil_K2017/article/details/89283946

https://www.cnblogs.com/lazyegg/p/12849027.html

47.查找算法

查找算法分类:https://blog.csdn.net/xushiyu1996818/article/details/90604118

二分查找(用于大数据量查找,前提是数据有序):https://blog.csdn.net/Xidian2850/article/details/93595592

顺序查找:一个个对比,简单但效率低

插值查找:https://blog.csdn.net/abcdef314159/article/details/850974147

Hash查找:https://www.iteye.com/blog/xiaojun-it-2291852

分块查找:将查找表分成若干块,在每一块中数据元素的存放是任意的,但块与块之间必须是有序的

二叉树查找:https://www.iteye.com/blog/yinger-fei-1946460

https://blog.csdn.net/evankaka/article/details/48088241

48.https加密流程

https://www.cnblogs.com/zhuqil/archive/2012/07/23/2604572.html

49.Raft算法

http://thesecretlivesofdata.com/raft/

https://raft.github.io/

50.cookie跨域

https://www.cnblogs.com/hujunzheng/p/5744755.html

51.数据库和缓存数据一致性

https://blog.csdn.net/XiaoHanZuoFengZhou/article/details/100120510

52.Java内存模型(JMM)和volatile原理

https://www.bilibili.com/video/BV1EE41157fV?p=2

53.自定义AOP

https://www.jianshu.com/p/309cc4fa348e

https://www.jb51.net/article/150644.htm

https://www.cnblogs.com/jianjianyang/p/4910851.html

54.正向代理于反向代理的区别

https://www.cnblogs.com/taostaryu/p/10547132.html

55.Dubbo为什么使用长连接

https://blog.csdn.net/zgliang88/article/details/75440043/

https://www.cnblogs.com/-jn-blog/articles/13099968.html

56.Nacos作为注册中心时服务上下线的通知机制

image-20201105161243300

57.zookeeper与Eureka、nacos的区别

zookeeper:一致性优先。CP模式,通过选举选出leader和追随者,要满足强一直性。过半可使用,zk才能用。且选举过程中出现短暂不可使用的情况。

Eureka:可用性优先。AP模式,去中心化的思想,主要有一存活,注册中心集群就可以使用

nacos:从1.0版本支持CP和AP模式混合集群。默认使用AP保证可用性,

58.SpringCloud的Zuul与GateWay的区别

Zuul:第一代网关,Netflix研发并贡献给Apache。zuul基于Servlet实现,阻塞时API,不支持长连接。需要一览springboot-web组建。

Gateway:第二代网关,Apache自研。性能相比Zuul更高。基于spring5构建,支持响应式非阻塞API,更好支持spring体系产品。需要依赖springboot-webFlux

59.长连接、短连接、长轮询、短轮询的区别

  相同点 不同点
HTTP长连接 都是基于TCP连接,并无本质不同;由HTTP请求头Connection: keep-alive控制是否长/短连接。 1、使用次数:重用多次;2、关闭时机:超时后才关闭该TCP连接,由Keep-Alive: timeout=20控制超时时间(秒)。
HTTP短连接   1、使用次数:仅使用一次;2、关闭时机:一次HTTP请求响应后立即关闭该TCP连接。
  相同点 不同点
HTTP长轮询 都是基于HTTP连接,都将重复发送相同请求。 1、请求发送频率:浏览器端收到HTTP响应后立即重复发起相同HTTP请求;2、服务器端处理机制:有数据时立即响应,无数据时等待数据或直到超时;3、特点:获取数据比较实时,服务器端需要较多资源以维持众多长轮询。
HTTP短轮询   1、请求发送频率:浏览器端收到HTTP响应后间隔一段自定义时间后重复发起相同HTTP请求;2、服务器端处理机制:无论是否有数据都立即响应;3、特点:获取数据不实时,通过浏览器端脚本即可实现。

轮询建立在连接基础上,轮询是长是短与连接是长是短无关。 HTTP长轮询主要用于实现需要实时获取数据的地方,例如:即时消息、实时股票价格等,其主要技术要点在于服务端无数据时如何保持到有数据或超时。

参考:https://www.cnblogs.com/Joeris/articles/10999373.html

https://blog.csdn.net/LEE1996JUN/article/details/79702848

60.HashMap的容量为什么是2的n次幂?

向集合中添加元素时,会使用(n - 1) & hash的计算方法来得出该元素在集合中的位置。其中n是集合的容量,hash是添加的元素进过hash函数计算出来的hash值。和这个(n - 1) & hash的计算方法有着千丝万缕的关系,符号&是按位与的计算,这是位运算,计算机能直接运算,特别高效,按位与&的计算方法是,只有当对应位置的数据都为1时,运算结果也为1,当HashMap的容量是2的n次幂时,(n-1)的2进制也就是1111111***111这样形式的,这样与添加元素的hash值进行位运算时,能够充分的散列,使得添加的元素均匀分布在HashMap的每个位置上,减少hash碰撞,避免形成链表的结构使得查询效率降低!

参考:https://blog.csdn.net/apeopl/article/details/88935422

61. Spring中FactoryBean和BeanFactory 区别

  1. BeanFactory 是ioc容器的底层实现接口,是ApplicationContext 顶级接口。
  2. spring不允许我们直接操作 BeanFactory bean工厂,所以为我们提供了ApplicationContext 这个接口 此接口集成BeanFactory 接口,ApplicationContext包含BeanFactory的所有功能,同时还进行更多的扩展。
  3. FactoryBean 是spirng提供的工厂bean的一个接口

简单的总结:

BeanFactory是个bean 工厂,是一个工厂类(接口), 它负责生产和管理bean的一个工厂
是ioc 容器最底层的接口,是个ioc容器,是spring用来管理和装配普通bean的ioc容器(这些bean成为普通bean)。
FactoryBean是个bean,在IOC容器的基础上给Bean的实现加上了一个简单工厂模式和装饰模式,是一个可以生产对象和装饰对象的工厂bean,由spring管理后,生产的对象是由getObject()方法决定的(从容器中获取到的对象不是
“ FactoryBeanTest  ” 对象)。

参考:https://www.cnblogs.com/leeego-123/p/12159574.html

62.Spring扩展点总结

BeanDefinition与BeanFactory扩展 BeanDefinitionRegistryPostProcessor接口 BeanPostProcessor接口 InstantiationAwareBeanPostProcessor接口 InitializingBean接口

参考:https://www.jianshu.com/p/397c15cbf34a