随手记
作者:互联网
1、JUC
JUC是java.util.concurrent的简写,Java的线程处理类。
2、Synchronized
synchronize是Java只中的关键字,是一种同步锁。
- 底层实现
- 获取锁时,执行monitor enter,计数器+1,释放锁时,执行monitor exit,计数器-1。
- 当计数器为0时,则当前锁空闲,可占用,反之则进入等待状态。
- 特性
- 原子性:一个或多个操作,要么全部执行,要么都不执行。
- 可见性:多个线程的资源和信息对于其他线程都是可见的。
- 有序性:执行的顺序按照源代码的顺序执行。
- 作用对象
- 修饰实例方法
- 修饰静态方法
- 修饰代码块
- 修饰类
3、try catch finally return
-
try catch finally语法结构
- 在Java异常处理语法中,try块是必须的,如果没有try,后面也不能有catch和finally。
- 在有try块的情况下,catch块和finally块都是可选的,catch块和finally块至少出现一个。
- catch块必须位于try块后面,finally块必须在catch块后面。
-
执行顺序
参考出处[JAVA中try、catch、finally带return的执行顺序总结 - PC君 - 博客园 (cnblogs.com)](https://www.cnblogs.com/pcheng/p/10968841.html#:~:text=JAVA中try、catch、finally带return的执行顺序总结. 异常处理中,try、catch、finally的执行顺序,大家都知道是按顺序执行的。.,即,如果try中没有异常,则顺序为try→finally,如果try中有异常,则顺序为try→catch→finally。. 但是当try、catch、finally中加入return之后,就会有几种不同的情况出现,下面分别来说明一下。. 也可以跳到最后直接看总结。.)
4、HashMap、LinkedHashMap、ArrayList
(1)、HashMap
-
时间复杂度
如果桶里面没有元素,那么直接将元素插入/或者直接返回未查找到,时间复杂度就是O(1),如果里面有元素,那么就沿着链表进行遍历,时间复杂度就是O(n),链表越短时间复杂度越低,如果是红黑树的话那就是O(logn)。
-
扩容
- 条件:当链表长度大于8,数组长度大于等于64时,转化成红黑树。
- 负载因子为0.75
(2)、LinkedHashMap
LinkedHashMap是有序的,该有序指的是插入的顺序或者是访问的顺序。
(3)、ArrayList
- ArrayList是一个连续存储的动态数组,适合做下标访问。
- 扩容机制:需要创建新的数组,把旧的数组拷贝到新的数组中。
5、索引
-
索引是一个单独存在在磁盘上的数据结构,索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。
-
InnoDB存储引擎的层实现是B+树。
-
索引类别
- Primary Key 聚集索引
- Unique 唯一索引
- FullText 全文索引
- Spatial 空间索引
-
为什么使用B+树
- B+树的非叶子节点只用来保存索引,不存储数据,所有的数据都保存在叶子节点,而B树的非叶子节点也会保存数据,这样就使得B+树的查询效率更加稳定。
- B+树的内部结点并没有指向关键字具体信息的指针,因此其内部结点相对B 树更小,同样空间可以读入更多的节点,所以B+树的磁盘读写代价更低。
-
聚簇索引和非聚簇索引
- 聚簇索引的叶子结点存放了所有的数据。
- 非聚簇索引的叶子结点不存放数据,存放的是该列对应的主键,查找数据时,需要根据主键再去索引中找。
-
索引的使用条件
- 索引并不是越多越好,索引需要一定的物理空间。
- 避免对经常修改或更新的表建立索引。
- 数据量较少的表最好不适用索引。
- 避免对经常进行排序和分组的列建立索引。
- 必须满足最左前缀原则。
6、https://www.baidu.com的解析。
参考出处(28条消息) 【网络原理】详解访问域名 www.baidu.com 中的DNS解析过程_Josvin的博客-CSDN博客
7、网络协议
- TCP和UDP
- TCP是连接安全可靠的传输协议,UDP是无连接不可靠不安全的。
- TCP传输数据时需要三次握手,UDP不需要。
- TCP有丢包重发机制,丢包可以重发,保证数据的正确性,UDP只负责发送数据。
- TCP头部最小为20字节,最大60字节,UDP头部仅8字节。
- 为什么需要四次握手
- 响应断开连接请求时,ACK和FIN包并不是一起发送给客户端。客户端发送FIN包给服务端,服务度返回ACK确认收到,服务度再发送FIN包给客服端,客户端返回ACK确认收到服务端的FIN,断开连接。
标签:顺序,随手,try,索引,finally,catch,执行 来源: https://www.cnblogs.com/yeyu2000/p/16355023.html