• 数据结构: ArrayList是基于数组实现的动态数组,支持随机访问元素,但插入和删除操作效率较低。 LinkedList是基于双向链表实现的,插入和删除操作效率较高,但随机访问元素效率较低。 访问效率: ArrayList支持随机访问元素,时间...
  • 建议按照如下顺序进行优化: 优化SQL和索引; 增加缓存,如memcached、redis; 读写分离,可以采用主从复制,也可以采用主主复制; 使用MySQL自带的分区表,这对应用是透明的,无需改代码,但SQL语句是要针对分区表做优化的; 做垂直...
  • IO多路复用是一种高效的IO处理方式,它允许单个进程或者线程同时处理多个IO操作,在网络编程中,IO多路复用使服务器可以管理多个网络连接,不用为每个请求创建一个对应的线程,从而节省了资源并提高了效率 select: 1、select是最基本的IO...
  • HashMap在JDK1.7之前是数组+链表的形式,在JDK1.7之后是数组+链表或红黑树的形式,当链表长度超过8时,自动转换成红黑树 HaspMap put的时候先拿到扰动后的hashcode,然后用(n-1)&hash计算下标位置,判...
  • String类型的不可变是指一旦创建了一个字符串类型的对象,它的字符串内容就是不可变的 是如何实现的:String在源码中采用字符数组char[]来存储字符串内容,它是被fianl修饰的,所以它是不可变的,JDK1.9之后为了节省效率改成fina...
  • 阿里巴巴Java开发手册》中强制线程池不允许使用 Executors 去创建,而是通过 ThreadPoolExecutor 的方式,这样的处理方式让写的同学更加明确线程池的运行规则,规避资源耗尽的风险 Executors 返回线程池对象的弊端如...
  • 类加载器(Class Loader) 在Java中,类加载器是负责加载类的对象。Java默认提供了三种类加载器: Bootstrap Class Loader:这是最顶层的类加载器,负责加载JDK内部类,通常是 ​jre/lib​目录下的核心库。...
  • HashMap是Java中常用的数据结构之一,用于存储键值对(key-value pairs)。它的底层结构和原理主要包括以下几个方面: 底层结构 数组(Array):HashMap的底层是一个数组,这个数组被称为桶(bucket)。每个桶可以存...
  • 建立连接: 客户端发起 HTTPS 请求时,首先会向服务器发送一个连接请求,请求建立安全连接。 3.握手阶段: 服务器收到客户端的连接请求后,会返回一个数字证书。客户端接收到证书后,会验证其有效性。如果验证通过,客户端生成一个随机值,并使用服务器...
    • 6月前
  • 三次握手的主要目的是确认双方的发送和接收能力以及双方的初始序列号,确保双 方都已准备好发送和接收数据,避免因为网络延迟或丢包等原因引起的通信问题 三次握手: 第一次握手:客户端向服务器发送连接请求报文(SYN),并设置序列号(Seq)字段 第二次...
    • 6月前