9.28技术随笔

北城余情 提交于 2019-11-30 16:21:14

先立几个flag:1. 一周要至少更新一篇随笔,博客复述是对学习过程的记录,也考验自己对技术的理解。2.等秋招尘埃落定,写一篇面经。3.牛客网的在线编程题不许停。

今天遇到的技术盲点:

1.DNS

将域名转成IP地址

2.虚拟内存

操作系统把一部分硬盘当成内存来用,避免运行的程序过大的时候内存崩掉。它的大小是由CPU的寻址空间以及物理盘的剩余空间决定的。例如32位的系统,寻址空间即32位,最大支持4G(2的32次方)的虚拟空间,64位的系统最大支持8G的虚拟内存空间。

3.ArrayList 和vector的扩容

当存储空间不足时,ArrayList默认增加原始空间的50%,vector默认增加两倍(即*2)。

ArrayList无参构造是,分配的空间是0,带参构造时直接分配内存。ArrayList list = new ArrayList<>(20); 构造的时候就分配了20个内存空间,没有经过扩容。

4.volatile关键字

一般和synchronized比较。

volatile 是变量修饰符,synchronized可以修饰类、变量、代码段;

volatile只能保证修改可见性,synchronized保证修改可见性及变量的原子性(即同一时刻只允许一个线程修改该变量)。

volatile不会造成线程的阻塞,synchronized有可能造成线程的阻塞。

5.实现hashmap的put、get方法

hashmap的实现需要数组和链表。hash地址对应数组的下标。

 

数组里存的是Entry对象,当出现冲突的时候结点的next指针指向冲突的结点。

6.对象的内存分配

new出来的内存全都在堆上分配。

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!