面经
文章平均质量分 84
UareThinkingPeach
这个作者很懒,什么都没留下…
展开
-
JMM:Java内存模型
五、JMM:Java内存模型(1)什么是JMM?Java 内存模型是一种规范,定义了很多东西:所有的变量都存储在主内存(Main Memory)中。每个线程都有一个私有的本地内存(Local Memory),本地内存中存储了该线程以读/写共享变量的拷贝副本。线程对变量的所有操作都必须在本地内存中进行,而不能直接读写主内存。不同的线程之间无法直接访问对方本地内存中的变量。JMM:JAVA内存模型,不存在的东西,是一个概念,也是一个约定!JMM主要是为了规定了线程和内存之间的一些关系,是深入原创 2021-06-30 19:29:26 · 106 阅读 · 0 评论 -
MYSQL索引
MYSQL索引聚集索引(主键索引):是一种存储方式。InnoDB 的聚簇索引实际上在同一个结构中保存了 B-Tree 索引和数据行,非叶子结点储存索引,叶子结点储存完整的数据记录非聚集索引:(MYISAM)索引文件和数据文件分离辅助索引(二级索引):非主键索引,叶子节点=主键值+书签覆盖索引:就是select的数据列只用从索引中就能够取得,不必从数据表中读取,换句话说查询列要被所使用的索引覆盖,也即,索引包含了查询正在查找的所有数据当发起一个被索引覆盖的查询(也叫作索引覆盖查询)时,在EXPL原创 2021-06-30 19:25:01 · 98 阅读 · 0 评论 -
INNODB和MYISAM
INNODB和MYISAMMySQL InnoDB 引擎使用 redo log(重做日志) 保证事务的持久性,使用 undo log(回滚日志) 来保证事务的原子性。MySQL InnoDB 引擎通过 锁机制、MVCC 等手段来保证事务的隔离性( 默认支持的隔离级别是 REPEATABLE-READ )。保证了事务的持久性、原子性、隔离性之后,一致性才能得到保障。MYISAMINNODB事务支持不支持支持数据行锁定不支持支持外键不支持支持全文索原创 2021-06-30 19:21:12 · 74 阅读 · 0 评论 -
抽象和接口类
抽象和接口类抽象类抽象方法 : 没有方法体的方法。抽象类:包含抽象方法的类。public abstract calss Animal{ public abstract void eat();}不能直接new抽象类方法必须用一个子类来继承extents抽象父类继承抽象类的子类必须重写父类所有的抽象方法。抽象类中,不一定包含抽象方法,但是有抽象方法的类必定是抽象类。接口类 public interface 接口名称 { //1. 抽象方法 public a原创 2021-06-21 10:51:05 · 53 阅读 · 0 评论 -
线程池:三大方式、七大参数、四种拒绝策略
线程池线程池:三大方式、七大参数、四种拒绝策略池化技术程序的运行,本质:占用系统的资源!我们需要去优化资源的使用 ===> 池化技术线程池、JDBC的连接池、内存池、对象池 等等。。。。资源的创建、销毁十分消耗资源池化技术:事先准备好一些资源,如果有人要用,就来我这里拿,用完之后还给我,以此来提高效率。(1)线程池的好处:1、降低资源的消耗;2、提高响应的速度;3、方便管理;线程复用、可以控制最大并发数、管理线程(2)线程池:三大方法ExecutorService th原创 2021-06-15 16:34:22 · 175 阅读 · 0 评论 -
悲观锁、乐观锁、自旋锁
18)悲观锁、乐观锁、自旋锁(1)乐观锁乐观锁是一种乐观的思想,即认为读多写少,遇到并发的可能性低,每次拿数据时都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用 版本号机制 和 CAS 算法实现。Java 中的乐观锁基本都是通过 CAS 操作实现的,CAS 是一种更新的原子操作,比较当前值跟传入值是否一样,一样则更新,否则失败。–>缺点:ABA问题:CAS 会导致 “ABA 问题”。CAS 算法实现的一个重要前提是需要取出内存中某时原创 2021-06-15 16:05:53 · 222 阅读 · 0 评论 -
多线程的基础
多线程基础一、并发与并行的区别:**并发:**多线程操作同一个资源。CPU 只有一核,模拟出来多条线程,天下武功,唯快不破。那么我们就可以使用CPU快速交替,来模拟多线程。并发编程的本质:充分利用CPU的资源!并行: 多个人一起行走CPU多核,多个线程可以同时执行。 我们可以使用线程池!多线程的内存图:二、线程的状态:1)new新建状态2)block阻塞3)runnable运行4)terminated死亡5)sleep休眠6)waiting无线等待wait/sle原创 2021-06-15 16:01:49 · 1123 阅读 · 1 评论 -
进程与线程
进程与线程进程是操作系统中的应用程序、是资源分配的基本单位,线程是用来执行具体的任务和功能,是CPU调度和分派的最小单位一个进程往往可以包含多个线程,至少包含一个一、进程的的概念引用线程之前进程的概念:进程是表示资源分配的基本单位,也是调度运行的基本单位。例如,用户运行自己的程序,系统就创建一个进程,并为它分配资源,包括内存空间、磁盘空间、I/O设备等。然后,把该进程放入进程的就绪队列。进程调度程序选中它,为它分配CPU以及其它有关资源,该进程才真正运行。所以,进程是系统中的并发执行的单位。3原创 2021-06-15 15:58:14 · 484 阅读 · 0 评论 -
一、HashMap 底层原理
一、HashMap 底层原理HashMap 基于哈希表的 Map 接口实现,是以 key-value 存储形式存在,即主要用来存放键值对。HashMap 的实现不是同步的,这意味着它不是线程安全的。它的 key、value 都可以为 null,此外,HashMap 中的映射不是有序的。jdk1.8 之前 HashMap 由 数组 + 链表 组成,数组是 HashMap 的主体,链表则是主要为了解决哈希冲突(两个对象调用的 hashCode 方法计算的哈希值一致导致计算的教组索引值相同)而存在的原创 2021-06-15 09:42:38 · 144 阅读 · 0 评论 -
二、HashMap 集合底层的数据结构
二、HashMap 集合底层的数据结构2.1 存储数据的过程示例代码:HashMap<String, Integer> map = new HashMap<>();map.put("柳岩", 18);map.put("杨幂", 28);map.put("刘德华", 40);map.put("柳岩", 20);输出结果:{杨幂=28, 柳岩=20, 刘德华=40}分析:当创建 HashMap 集合对象的时候,在 jdk1.8 之前,构造方法中创建一个长度是原创 2021-06-15 09:49:05 · 93 阅读 · 0 评论 -
四、HashMap 的成员
四、HashMap 的成员4.1 成员变量(1)serialVersionUID序列化版本号private static final long serialVersionUID = 362498820763181265L;(2)DEFAULT_INITIAL_CAPACITY 初始化容量集合的初始化容量(必须是 2 的 n 次幂)// 默认的初始容量是16 1 << 4 相当于 1*2的4次方static final int DEFAULT_INITIAL_CAPACITY =原创 2021-06-15 09:51:07 · 205 阅读 · 1 评论 -
三次握手与四次挥手
三次握手与四次挥手**序号(seq):**TCP是面向字节流的。在一个TCP连接中传送的字节流中的每一个字节都按顺序编号。seq是本报文段发送的数据组的第一个字节的序号。**确认号(ack):**确认序号为上次接收的序号的最后一个字节序号加1.只有确认标志位(ACK)为1的时候,确认序号才有效。同步SYN(synchronization):在连接建立时用来同步序号。当SYN=1而ACK=0时,表明这是一个连接请求报文段。对方若同意建立连接,则应在响应的报文段中使SYN=1和ACK=1。因此SYN=1原创 2021-06-14 15:58:26 · 131 阅读 · 0 评论