- ArrayList 底层实现就是数组,且ArrayList实现了RandomAccess,表示它能快速随机访问存储的元素,通过下标 index 访问,只是我们需要用 get() 方法的形式, 数组支持随机访问, 查询速度快, 增删元素慢;
- LinkedList 底层实现是链表, LinkedList 没有实现 RandomAccess 接口,链表支持顺序访问, 查询速度慢, 增删元素快
1、CPU中的位指的是一个时钟周期可以处理的数据数量。8位为一个字节,32位就是一次可以处理4个字节,64位是一次可以处理8个字节
2、32位CPU是指数据总线有32位,寄存器是暂存数据和中间结果的单元,因此寄存器的位数指的也是处理数据的长度肯定是和数据总线的根数相同,否则寄存器和CPU内其他单元之间将无法通信,交换数据。
- List 是一个有序集合,可以存放重复的数据 (有序:存进是什么顺序,取出时还是什么顺序)
(1).ArrayList 底层是数组适合查询,不适合增删元素。
(2).LiskedList 底层是双向链表适合增删元素,不适合查询操作。
(3).Vector 底层和ArrayList相同,但是Vector是线程安全的,效率较低很少使用\
2. Set 是一个无序集合,不允许放重复的数据 (无序不可重复,存进和取出的顺序不一样)
(1). HashSet 底层是哈希表/散列表
(2). TreeSet 继承sartedSet接口(无序不可重复,但存进去的元素可以按照元素的大小自动排序)
3. Map 是一个无序集合,以键值对的方式存放数据,键对象不允许重复,值对象可以重复。
(1).HashMap实现不同步,线程不安全。 HashTable线程安全
(2).HashMap中的key-value都是存储在Entry中的。
(3).HashMap可以存null键和null值,不保证元素的顺序恒久不变,它的底层使用的是数组和链表,通过hashCode()方法和equals方法保证键的唯一性
快速排序是选中一个元素,将比其小的元素都放在其左边,比其大的元素都放在其右边,然后递归处理。
冒泡排序是每轮从左往右扫,若当前位置的元素比下一个位置的元素小,则交换两个位置的元素。
归并排序是将有序的子序列合并成有序的序列。
插入排序是每次将一个元素插入到已经有序部分中,直到序列有序。
1XX(信息状态码)接受请求正在处理
2XX(成功状态码) 请求正常处理完毕
3XX(重定向状态码) 需要附加操作已完成请求
4XX(客户端错误状态码) 服务器无法处理请求
5XX(服务器错误状态码) 服务器处理请求出错
-
final用于声明属性、方法和类:
- final属性不可变,指的是引用不可变,而不关心指向对象内容的变化,被final修饰的变量必须初始化
- final方法不可被子类重写,可以实现inline(内联)的机制
- final类不可以被继承(如String、StringBuffer),所有的方法不可以被重写,但其内的非final变量可以被修改
-
finaally作为异常处理的一部分,只能用在try/catch语句中,并且附带一个语句块,表示这段语句最终一定被执行(特殊情况不会被执行,如try语句前出现异常或try语句块中出现的异常没有被捕获),经常被用在需要释放资源的情况下或是释放锁
-
finalize是Object类的一个方法,在垃圾回收器执行时会调用被回收对象的finalize()方法,可以覆盖此方法来实现对其他资源的回收(一旦垃圾回收器准备好释放对象占用的空间,将首先调用该方法,并且在下一次垃圾回收动作发生时,才会真正回收对象占用的内存),从功能上来说,finalize()方法与c++中的析构函数比较相似,但是Java采用的是基于垃圾回收器的自动内存管理机制,所以finalize()方法在本质上不同于C++中的析构函数。
关于finalize的补充!
判定一个对象objA是否可回收,至少要经历两次标记过程:
-
如果对象objA到GC Roots没有引用链,则进行第一次标记。
-
进行筛选,判断此对象是否有必要执行finalize()方法
- 如果对象objA没有重写finalize()方法,或者finalize()方法已经被虚拟机调用过,则虚拟机视为“没有必要执行”,objA被判定为不可触及的。
- 如果对象objA重写了finalize()方法,且还未执行过,那么objA会被插入到F-Queue队列中,由一个虚拟机自动创建的、低优先级的Finalizer线程触发其finalize()方法执行。
- finalize()方法是对象逃脱死亡的最后机会,稍后GC会对F-Queue队列中的对象进行第二次标记。如果objA在finalize()方法中与引用链上的任何一个对象建立了联系,那么在第二次标记时,objA会被移出“即将回收”集合。之后,对象会再次出现没有引用存在的情况。在这个情况下,finalize方法不会被再次调用,对象会直接变成不可触及的状态,也就是说,一个对象的finalize方法只会被调用一次。
css样式等级:
第一等级:代表 内联样式,如 style="",权值为 1,0,0,0;
第二等级:代表 ID选择器,如 #id="", 权值为 0,1,0,0;
第三等级:代表 calss | 伪类 | 属性 选择器,如 .class | :hover,:link,:target | [type], 权值 0,0,1,0;
第四等级:代表 标签 | 伪元素 选择器,如 p | ::after, ::before, ::fist-inline, ::selection, 权值 0,0,0,1;
此外,通用选择器(*),子选择器(>), 相邻同胞选择器(+)等选择器不在4等级之内,所以它们的权值都为 0,0,0,0;
Array 对象方法 方法
concat() 连接两个或更多的数组,并返回结果。
join() 把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。
pop() 删除并返回数组的最后一个元素
push() 向数组的末尾添加一个或更多元素,并返回新的长度。
reverse() 颠倒数组中元素的顺序。
shift() 删除并返回数组的第一个元素
slice() 从某个已有的数组返回选定的元素
sort() 对数组的元素进行排序
splice() 删除元素,并向数组添加新元素。
toSource() 返回该对象的源代码。
toString() 把数组转换为字符串,并返回结果。
toLocaleString() 把数组转换为本地数组,并返回结果。
unshift() 向数组的开头添加一个或更多元素,并返回新的长度。
valueOf() 返回数组对象的原始值
| OSI七层模型 | TCP/IP模型 | 功能 | TCP/IP协议族 | |
|---|---|---|---|---|
| 应用层 | 应用层 | 直接向用户提供服务,完成用户希望完成的各种网络操作 | HTTP,FTP,TFTP,DNS,Telnet,SMTP | |
| 表示层 | 进行数据编解码,数据加解密和格式转换 | 没有协议 | ||
| 会话层 | 解除或建立与别的节点的联系,组织和协调两个会话进程之间的通信,并对数据交换进行管理 | 没有协议 | ||
| 传输层 | 传输层 | 向两台主机中进程之间的通信提供通用的数据传输服务,实现端到端连接 | TCP,UDP | |
| 网络层 | 网络层 | 为分组交换网上的不同主机提供通信服务,也就是进行IP选址和路由选择 | IP,ICMP,RIP,IGMP | |
| 数据链路层 | 数据链路层 | 在物理层提供的比特流基础上,通过差错控制、流量控制的方法,将由差错的物理线路变为无差错的、能可靠传输数据帧的数据链路 | SLIP,CSLIP,PPP,ARP,RARP, | |
| 物理层 | 物理层 | 利用传输介质为数据链路层提供物理连接,实现相邻计算机节点之间比特流的透明传输 | IEEE802.1 A,IEEE802.2到IEEE802.11 |