9861云南网站建设,无极领域0基础12天精通网站建设,儋州市住房和城乡建设局官方网站,深圳门户网站制作目录
锁升级 notify和notifyAll区别 Sleep和Wait的区别
ArrayList和ListedList区别 HashMap扩容原理
ConcurrentHashMap
StringBuffer 和 StringBuilder
事务等级
索引结构
三次握手四次挥手#xff0c;为什么是三次和四次 Java中重写和重载的区别和应用场景
ArrayLis…目录
锁升级 notify和notifyAll区别 Sleep和Wait的区别
ArrayList和ListedList区别 HashMap扩容原理
ConcurrentHashMap
StringBuffer 和 StringBuilder
事务等级
索引结构
三次握手四次挥手为什么是三次和四次 Java中重写和重载的区别和应用场景
ArrayList 的底层数据结构是什么如何扩容时间复杂度 扩容特点 HashMap 的底层实现原理是什么JDK 1.8 之前和之后的区别
String 类型中的 CHAR 和 VARCHAR 区别使用场景
Spring IOC和AOP
Mybatis和Mybatis PLUS TCP和UDP区别
springboot 和Spring MVC Spring Boot
Spring MVC
慢sql
慢 SQL 的危害 造成死锁的原因怎么解决 什么是java的反射
java中的io流说一下说一下字节流和字符流的主要区别 锁升级
无锁-》偏向锁-》自旋锁-》重量级锁
无锁没有锁竞争
偏向锁只给锁对象加了个标签并没有真正去加锁
自旋锁通过自旋锁实现用户态的锁
重量级锁在锁竞争非常长激烈的时候调用CPU的加锁指令真正生成LOCK锁 notify和notifyAll区别
notify可能造成死锁而notifyAll不会notifyAll可以唤醒所有wait方法的线程使其重新进入锁竞争而notify只能唤醒一个。notify() 是对notifyAll()的一个优化但它有很精确的应用场景并且要求正确使用。 Sleep和Wait的区别
对于sleep()方法我们首先要知道该方法是属于Thread类中的。而wait()方法则是属于Object类中的。sleep()方法导致了程序暂停执行指定的时间让出cpu该其他线程但是他的监控状态依然保持者当指定的时间到了又会自动恢复运行状态。在调用sleep()方法的过程中线程不会释放对象锁。当调用wait()方法的时候线程会放弃对象锁进入等待此对象的等待锁定池只有针对此对象调用 notify()方法后本线程才进入对象锁定池准备获取对象锁进入运行状态。 ArrayList和ListedList区别
ArrayList是动态数组自动扩容的 Object [] 频繁随机访问如遍历或按索引查询
主要开销是数组本身需预分配空间可能存在内存浪费。
LinkedList是双向链表每个节点包含前驱和后继引用频繁头部 / 尾部插入 / 删除
每个节点需额外存储前驱和后继引用双向链表内存占用更高。 HashMap扩容原理
HashMap是继承自AbstractMap类而Hashtable是继承自Dictionary类。不过它们都实现了同时实现了map、Cloneable可复制、Serializable可序列化这三个接口。
为了能让 HashMap 存数据和取数据的效率高尽可能地减少 hash 值的碰撞也就是说尽量把数据能均匀的分配每个链表或者红黑树长度尽量相等。我们首先可能会想到 % 取模的操作来实现。 ConcurrentHashMap
ConcurrentHashMap 是线程安全的HashTable是将每一个方法都加了synchronized修饰占用性能大效率低ConcurrentHashMap 是将每一个哈希桶加了锁锁粒度更小效率更高 StringBuffer 和 StringBuilder
StringBuffer 是线程安全的效率低 StringBuilder是线程不安全的效率高
都通过append来拼接一般单线程环境下用StringBuilder 事务等级
原子性
一致性
持久性
隔离性
其中隔离性分为读未提交读已提交可重复读串行化 索引结构
B树
B树
B树的所有节点中同时存储键key和值value。
B树B 树的一种变体所有数据值仅存储在叶子节点中非叶子节点仅存储键key用于索引。叶子节点之间通过指针连接形成有序链表
查询稳定性 三次握手四次挥手为什么是三次和四次
三次握手 四次挥手 Java中重写和重载的区别和应用场景
重写子类继承父类的方法或者调用接口
重载参数不同 ArrayList 的底层数据结构是什么如何扩容时间复杂度
ArrayList 的核心是一个动态扩容的 Object 数组 扩容特点
初始容量默认 16首次添加元素时创建。扩容因子每次扩容为原容量的1.5 倍oldCapacity (oldCapacity 1)。数组复制通过Arrays.copyOf()实现本质是 System.arraycopy () 的封装。 HashMap 的底层实现原理是什么JDK 1.8 之前和之后的区别
JDK 1.8 之前数组 链表
JDK 1.8 的实现数组 链表 红黑树
特性JDK 1.8 之前JDK 1.8 及之后数据结构数组 链表数组 链表 红黑树链表插入方式头插法尾插法哈希冲突处理链表链表长度≥8 且数组长度≥64 时转红黑树扩容机制重新计算哈希值通过位运算直接拆分链表线程安全问题可能形成循环链表避免循环链表但仍非线程安全哈希函数复杂度多次位移 异或一次异或查找时间复杂度最坏 O (n)最坏 O (log n) String 类型中的 CHAR 和 VARCHAR 区别使用场景
维度CHAR固定长度VARCHAR可变长度存储方式固定长度存储不足部分用空格填充实际长度 1/2 字节长度前缀L1/L2最大长度0-255 字符MySQL 5.0.3 之前为 255 字节0-65,535 字节受行最大长度限制空间效率可能浪费空间如存储短字符串时更节省空间仅存储实际内容 前缀检索效率读取速度稍快固定偏移量需先解析长度前缀略慢尾部空格处理存储时保留空格查询时自动截断存储和查询时均保留空格 Spring IOC和AOP AOP 的思想 将横切关注点与业务逻辑分离通过 “切面” 统一处理。
特性IOCAOP核心思想将对象创建和依赖管理交给容器将横切关注点与业务逻辑分离实现方式依赖注入构造器 / Setter / 注解动态代理JDK/CGLIB、AspectJ应用场景组件解耦、配置外部化事务、日志、权限、性能监控优势降低耦合、提高可测试性减少重复代码、增强可维护性 Mybatis和Mybatis PLUS
Mybatis是一个半ORM对象关系映射框架它内部封装了JDBC。程序员直接编写原生态sql可以严格控制sql执行性能灵活度高。
MyBatis-Plus简称 MP是一个MyBatis 的增强工具在不改变 MyBatis 原有功能的基础上通过简化 CRUD 操作、提供代码生成器和条件构造器等功能大幅提升开发效率。 TCP和UDP区别
维度TCP传输控制协议UDP用户数据报协议连接性面向连接三次握手建立连接无连接直接发送数据可靠性可靠传输确认机制、重传机制、排序不可靠传输不保证送达或顺序传输效率较低需维护连接状态和重传机制较高无连接开销和重传数据包大小无限制分段传输受限于 MTU通常≤65,507 字节传输顺序保证有序不保证有序拥塞控制有慢启动、拥塞避免、快速重传等无可能导致网络拥塞应用场景文件传输、网页浏览、邮件收发等实时音视频流、游戏、DNS 查询等 springboot 和Spring MVC Spring Boot
定位 简化 Spring 应用开发的工具集通过自动配置和约定大于配置原则降低 Spring 上手门槛。核心功能 自动配置根据依赖自动配置 Spring MVC、数据库等
Spring MVC
定位 Spring 框架的 Web 模块基于 Servlet API 构建提供 MVC模型 - 视图 - 控制器架构支持。核心功能 请求路由RequestMapping参数绑定视图解析JSP、Thymeleaf 等 慢sql
慢 SQL 的危害
阻塞资源 长时间占用数据库连接和锁影响其他业务。拖慢系统 导致接口响应超时甚至引发雪崩效应。增加成本 迫使数据库扩容增加硬件和维护成本。 造成死锁的原因怎么解决 什么是java的反射
反射机制是在运行时对于任意一个类都能够知道这个类的所有属性和方法对于任意个对象都能够调用它的任意一个方法。在java中只要给定类的名字就可以通过反射机制来获得类的所有信息 java中的io流说一下说一下字节流和字符流的主要区别
特性字节流Byte Stream字符流Character Stream基类InputStream / OutputStreamReader / Writer处理单位8 位字节byte16 位 Unicode 字符char适用场景二进制文件图片、视频、压缩包等文本文件.txt、.java、.json 等是否缓冲无内置字符编码处理直接读写字节内置编码转换如 UTF-8、GBK