0%

Java I/O分类


  • 磁盘操作:File
  • 字节操作:InputStream 和 OutputStream
  • 字符操作:Reader 和 Writer
  • 对象操作:Serializable
  • 网络操作:Socket
  • 新的输入/输出:NIO

File可用于表示文件和目录的信息,但不表示文件内容

阅读全文 »

HashSet

HashSet hash = new HashSet<>();

  • add() 添加元素,返回boolean类型。如果不存在该元素,则添加指定元素并返回true。否则不更改set并返回false
  • clear() 移除set所有元素
  • remove(Object o) 如果指定元素存在于set中,移除指定元素
  • isEmpty() 如果set不包含任何元素,返回true
  • contains(Object o) 如果set包含指定元素,返回true
  • size() 返回set中元素数量
阅读全文 »

基础


Object类方法 4

getClass() 获取运行时对象的Class对象

hashCode() 获取对象的哈希码,在哈希表中被使用

toString() 输出 类名@实例的十六进制哈希码

clone() 返回当前对象的一份拷贝

equals() 比较对象是否等价

阅读全文 »

MySQL


隔离级别 7

并发一致性问题

  • 丢失修改:一个事务对数据的修改被另一个事务对数据的修改覆盖
  • 脏读:一个事务读取了被另一个事务修改,但是未提交的数据。如果修改被撤销,那么此次读到的就是脏数据
  • 不可重复读:是指一个事务在执行期间多次读取某一行数据。这期间如果有另一个事务对这个数据进行了修改(更新或删除),会导致两次读取的数据结果不同。
  • 幻读:同一查询多次执行时,由于其他事务在这个数据范围内执行了插入操作,会导致每次返回不同结果
阅读全文 »

单例模式 4

懒汉(线程不安全)

1
2
3
4
5
6
7
8
9
10
public class Singleton {
private static Singleton uniqueInstance;
private Singleton() {};
public static Singleton getUniqueInstance() {
if(uniqueInstance == null) {
uniqueInstance = new Singleton();
}
return uniqueInstance;
}
}
阅读全文 »

TCP三次握手/四次挥手 13

忽略握手过程中序列号和确认号的传输:发送的时候会随机生成一个序列号,另一段回复的时候需要回复确认号为收到的序列号加1,并且带上自己的序列号

初始序列号是用来给发送的数据包编号的,如果另一段发来了一个确认号,说明这个号之前的数据包都被接受了

三次握手建立连接

第一次握手:客户端发送一个SYN为1的数据包给服务端

第二次握手:发送一个SYN/ACK都为1的数据包给客户端

第三次握手:客户端发送一个ACK为1的数据包给服务端

可以两次握手吗?

阅读全文 »

进程相关

僵尸进程

一个进程使用fork创建子进程,子进程结束后 父进程并没有调用wait或者waitpid方法获取子进程的终止状态,子进程的描述符依然保存在操作系统的进程表中,这样的进程就是一个僵尸进程。

僵尸进程是一个已经死亡的进程,但是没有被完全销毁。它几乎不占用任何内存资源,没有什么可执行的代码,只是在进程表中保留了一个位置,占用了一个进程id。

任何子进程在结束之后都会经历僵尸进程的阶段,状态为Z,直到被父进程处理。

阅读全文 »

操作系统

操作系统是一个管理软硬件资源,调度各类作业从而方便用户使用的软件

管理 处理机、存储器、设备和文件

阅读全文 »

进程和线程的区别 16

  1. 进程的状态、协程、和虚拟内存的关系
  2. 开多个java进程和多个线程的区别
  3. 一个进程能否访问到另一个进程的内存
  4. Java线程和系统线程的区别
阅读全文 »