java技术整理1()

  本篇文章为你整理了java技术整理1()的详细内容,包含有 java技术整理1,希望能帮助你了解 java技术整理1。

  1.1 转红黑树条件:
 

  a.数组长度大于等于64(默认16,要经过2次扩容--当达到16*默认扩容因子0.75=12就扩容)
 

  b.链表长度大于8
 

  1.2 hashmap先计算hash值,再用hash值计算下标。

  2.sleep与await:

  1.1 sleep是线程方法,await是object方法
 

  1.2 sleep不会释放锁,而await会
 

  1.3 sleep不依赖于同步器synchronize,而await要
 

  1.4 sleep不需要被唤醒,而await要

  3.hashtable与hashmap:

  1.1 前者线程安全,而后者不是
 

  1.2 前者不可以把null作为key,而后者可以,并放在第一个节点上
 

  1.3 两者扩容因子默认都是0.75;前者初始容量为11,扩容是当前容量2+1;后者初始容量是16,扩容是当前容量2

  4.cookie与session的区别:

  前者cookie:
 

  存放在客户端浏览器中;
 

  大小受限制,单个不超过4K,一般1个站点最多保存20个;
 

  String类型;
 

  不太安全(可以加密)
 

  后者sessiono:
 

  存放在服务器中;
 

  大小一般不受限制;
 

  Key-Value(Object类型);
 

  安全性更高;

  二、JVM

  4.用户线程与内存线程:

  1.1 多对一:不需要切换,线程创建、调度、同步非常快;但是如果其中一个用户线程阻塞会造成其他线程无法执行,且无法像内核线程一样实现较完整的调度、优先级;
 

  1.2 一对一:java的jvm几乎把所有对线程的操作都交给了系统内核操作,线程真正启动顺序不一定是按我们启动的顺序,会引起用户态和内核态的频繁切换;如果系统出现大量线程,回家降低系统性能。

  5.运行时数据区:

  6.内存回收:

  7.内存溢出:

  1.1 栈溢出

  
 

  1.2 堆溢出
 

  》
 

  》第8行设置会在堆溢出会导出Damping日志

  1.3 方法区溢出
 

  1.4 本机直接内存溢出

  8.内存泄漏:

  1.1 不使用的内存,却没有被释放;
 

  1.2 每一次请求进来或者每一次操作处理都分配了内存,却有部分不能回收(或未释放),随着请求越来越多,内存泄漏就会越来越严重,必然造成内存溢出。
 

  1.3 内存泄漏一般是资源管理问题或者程序bug,内存溢出则是内存空间不足和内存泄漏的最终结果。

  9.hotspot对象头包含哪些部分:

  10.根据类分析对象的内存占用:

  11.jvm启动参数:在哪里配?

  12.堆空间最大值设置:

  13.G1垃圾收集器特点:

  1.空间整合:哪块垃圾最多优先清理
 

  
 

  2.多线程+并发+可预测停顿
 

  14.排查OOM的方法:

  
 

  
 

  14.jvm的相关命令工具:

  
 

  
 

  
 

  
 

  
 

  
 

  
 

  15.java8默认垃圾收集器:

  16.并行垃圾收集器:

  17.swt:

  
 

  安全点:方法调用、循环跳转、异常跳转;设置标志位,并不断轮询,主动停止。
 

  17.cpu使用率飙升,怎么排查?

  先通过top命令找到cpu使用率高的线程;top -p 进程号;该界面输入H查找最高cpu的线程;执行jstack 进程号做dump输出线程信息; 同时根据线程的16进制找到对应的堆信息,然后再找出对应的代码
 

  
 

  
 

  6、最后根据线程信息定位到具体代码

  18.垃圾回收器的三色标记:

  
 

  
 

  19.类加载、类加载器:

  
 

  三、消息中间件

  1.为什么用rocketmq:

  
 

  3.各种消息列队:

  
 

  
 

  
 

  
 

  
 

  
 

  4.mq的消息重复:

  
 

  5.mq的消息重复:

  
 

  4.解决MQ重复消息:

  
 

  
 

  
 

  6.roketmq性能优化:

  
 

  
 

  
 

  
 

  
 

  1.Redis概念:

  Nosql,C编写,包含多种数据结构(字符串、列表、集合、散列表、有序集合),支持网络,基于内存还能持久化性能高效每秒可以处理超过10万次读写操作,遵守BSD协议,支持分布式易拓展、支持多种语言的k-v存储数据库。

  2.Redis数据类型:

  
 

  
 

  
 

  
 

  
 

  
 

  
 

  
 

  
 

  2.Redis与Memcached区别:

  3.Redis的应用场景:

  
 

  4.Redis为什么速度:

  5.为什么用Redis而不用map/guava做缓存:

  6.Redis的持久化机制:

  
 

  7.如何保持缓存与数据库双写时一致:

  
 

  
 

  8.缓存穿透:

  五、并发编程

  1.线程与进程的区别:

  2.多线程中的上下文切换:

  3.java内存模型:

  4.原子操作,JUC中原子操作类有哪些:

  5.CAS操作及缺点:

  6.java中的volatile变量作用:

  7.volatile和atomic变量区别:

  8.lock接口与synchronized区别:

  9.乐观锁和悲观锁的理解及实现:

  10.死锁:

  11.callable及future:

  13.futureTask的底层原理:

  14.阻塞队列及实现原理:

  15.不可变对象对并发应用的帮助

  16.生产消费者模型作用:

  17.copyOnWriteArrayList应用场景:

  18.java单例:

  19.双重检查锁定DCL的单例:

  20.AQS:

  wait、notify、notifyAll为什么不在thread类中:

  六、分布式

  1.分布式幂等性接口设计:

  2.分布式session方案:

  3.分布式事务:

  4.ZAB协议:

  5.Zookeeper和Redis区别:

  6.Zookeepr节点宕机处理:

  7.Zookeeper四种类型数据节点:

  8.Dubbo和cloud区别:

  9.Dubbo协议:

  七、数据库

  1.mysql存储引擎:

  2.innodb与myisam区别:

  3.表设计字段选择:

  4.mysql的varchar(M)最多存储数据:

  5.事务基本特性:

  6.事务并发引发问题:

  7.mysql索引:

  8.三星索引:

  9.innodb一颗b+树存放可以存放多少行数据:

  10.如何提高insert性能:

  11.全局锁、共享锁、排他锁:

  12.mysql死锁:

   以上主要参考:https://www.bilibili.com/video/BV1vu41197Np?p=4 spm_id_from=pageDri

  随心所往,看见未来。Follow your heart,see night!
 

  欢迎点赞、关注、留言,一起学习、交流!

  以上就是java技术整理1()的详细内容,想要了解更多 java技术整理1的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: