您的位置:首页 > 职场人生

求职准备413

2017-04-13 19:24 239 查看

java

int和integer的区别

int默认值是0,integer默认是是null;

int是基本类型(原始类),integer是引用类型(封装类),int只能做计算,integer有许多行为

长度

length返回当前长度(元素数目)

如果字符串长度没有初始化长度大,capacity返回增长后的长度(字节数)

StringBuffer和String Builder的默认大小是16

ArrayList和LinkedList的默认大小是10

线程安全与非线程安全

在集合框架中,有些类是线程安全的,这些是jdk1.1中出现的。在jdk1.2之后,就出现许许多多非线程安全的类。

线程安全的同步的类:

vector:就比arraylist多了个同步化机制(线程安全),因为效率较低,现在不建议使用。在web应用,特别是前台页面,往往效率(页面响应速度)是优先考虑的。

stack:堆栈类,先进后出

hashtable:就比hashmap多了个线程安全

enumeration:枚举,相当于迭代器

v,she

除了以上这些,其他都是非线程安全的类和接口。

用于并发编程的同步器

Semaphore:java并发库的Semaphore可以很轻松地完成信号量控制,Semophore可以控制某个资源可被同时访问的个数,通过acquire()获取一个许可,如果没有就等待,而release()释放一个许可。

CyclicBarrier:主要方式就是await()。await()方法每被调用一次,计数便会减少1,并阻塞当前线程。当技术减至0时,阻塞解除,所有在此CyclicBarrier上面阻塞的线程开始运行。

CountDownLatch(倒计时门闩):门闩即阻止前进,await()方法在倒计时为0之前会阻塞当前线程。

操作系统

固态硬盘SSD:相对于传统机械硬盘,没有旋转的盘片,寻址时不需要盘片转动和磁头移动,也就是寻址速度远高于传统硬盘,表现在随机读取速度上远快于普通硬盘。

Linux文件权限:一共10长度,分成四段,第一段表示文件类型,第二段表示文件所有者的权限,第三段表示文件所有者所在组的权限,第四组则是其它用户的权限。

fork和exec系统调用可以产生新的进程

fork:一个程序一调用fork函数,系统就为一个新的进程准备了三个段,首先,系统让新的进程和旧的进程使用同一个代码段,因为它们的程序还是相同的,对于数据段和堆栈段,系统则复制一份给新的进程,这样,父进程的所有数据都可以留给子进程,但是,子进程一旦开始运行,虽然它继承了父进程的一切数据,但实际上数据却已经分开,相互之间不再有影响了,也就是说,它们之间不再享有任何数据了,而如果两个进程要共享什么数据的话,就要使用另一套函数(shmget,shmat,shmdt等)来操作。现在,已经是两个进程了,对于父进程,fork函数返回了子进程的进程号,而对于子进程,fork函数则返回零,这样,对于程序,只要判断fork函数的返回值,就知道自己是处于父进程还是子进程中。事实上,目前大多数的unix系统在实现上并没有真正的copy。一般的,CPU都是以“页”为单位分配空间的,像INTEL的CPU,其一页在通常情况下是4k字节大小,而无论是数据段还是堆栈段都是由许多“页”构成的,fork函数复制这两个段,只是“逻辑”上的,并非“物理”上的,也就是说,实际执行fork时,物理空间上两个进程数据段和堆栈段都是共享的,当有一个进程写了某个数据时,这时两个进程之间的数据才有了区别,系统就将有区别的“页”从物理上分开。系统在空间上的开销就可以达到最小。

exec:一个进程一旦调用exec类函数,它本身就“死亡”了,系统把代码段替换成新的程序的代码,废弃原有的数据段和堆栈段,并为新程序分配新的数据段与堆栈段,唯一留下的,就是进程号,也就是说,对系统而言,还是同一个进程,不过已经是另一个程序了。不过exec类函数中有的还允许继承环境变量之类的信息,这个通过exec系列函数中的一部分的参数可以得到。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: