牛客网的第一天

1 关于java的异常处理机制:当某个线程抛出OutOfmemberError时,其他线程有可能不收影响

2 关于运算的理解

  1. 与运算(&)

    进行运算的两个数据,按二进制位进行“与”运算。
    
    规则:0&0=0;   0&1=0;    1&0=0;     1&1=1;       
    
    即: 两位同时为“1”,结果才为“1”,否则为0  
  2. 或运算(|)

     进行运算的两个数据,按二进制位进行“或”运算。
    
     运算规则:0|0=0;   0|1=1;   1|0=1;    1|1=1;
    
     即 :参加运算的两个对象只要有一个为1,其值为1。  
  3. 非运算:~

    1取0,0取1 ~1 = 0, ~0 = 1 ~(10001) = 01110  
  4. 异或运算(^)

    参加运算的两个数据,按二进制位进行"异或"运算  
    参加运算的两个对象,如果两个相应位为“异”(值不同),则该位结果为1,否则为0。
    
    考点:交换两个变量的值(不借助第三个变量)
    
    使用异或运算符:
    
    例:a=6,b=5
    
    核心代码:
    
    a = a ^ b;
    
    b = a ^ b;
    
    a = a ^ b;  

经过上面的介绍下面这些运算应该就能理解了java中的 |= 、&= 、^= 运算符的理解

3 filesort 并不是磁盘文件进行排序,只是进行了一个排序操作,但是查询次数过多确实会对性能造成影响

4 在java中是不能强制垃圾回收器立即执行的,system.gc可以提醒垃圾回收执行,不能强制 ,可以通过提高优先级的方式去处理。

5 多线程:

  1. 如果线程调用了对象的 wait()方法,那么线程便会处于该对象的等待池中,等待池中的线程不会去竞争该对象的锁。 当有线程调用了对象的 notifyAll()方法(唤醒所有 wait 线程)或 notify()方法(只随机唤醒一个 wait 线程),被唤醒的的线程便会进入该对象的锁池中,锁池中的线程会去竞争该对象锁。 优先级高的线程竞争到对象锁的概率大,假若某线程没有竞争到该对象锁,它还会留在锁池中,唯有线程再次调用 wait()方法,它才会重新回到等待池中。而竞争到对象锁的线程则继续往下执行,直到执行完了 synchronized 代码块,它会释放掉该对象锁,这时锁池中的线程会继续竞争该对象锁。

  2. 进程是系统分配资源的最小单位,使用独立的内存空间 线程是程序执行的最小单位,共享进程的内存空间
    不管系统是否支持线程,进程都是资源分配的基本单位

6 mysql

  1. utf8不是真正的utf-8,utf8mb4才是真正的utf-8

  2. utf-8每个字符最多支持四个字节,而utf8每个字符最多支持3个字节

  3. 查找表结构:desc table_name;

7 计算机网络相关知识

  • ARP(Address Resolution Protocol)地址解析协议,是根据IP地址获取物理地址的一个TCP/IP协议;
  • RARP(Reverse Address Resolution Protocol)反向地址转换协议
  • ARP:IP到MAC RARP:MAC到IP

    集线器:物理层
    交换机:数据链路层
    路由器:网络层    
  • 在TCP/IP体系结构中,直接为ICMP提供服务的协议是__IP_。 下面图中可以体现

  • TCP的四次挥手 client 发送 FIN 给 server 进入 FIN_Wait1 server 接受client的FIN,发送ACK给client 进入close_wait,client接收到进入FIN_wait2 server 发送FIN给client 进入last_ack状态,client接收到进入time_wait状态 client 发送ACK给server,有2MSL的等待时间,保证连接的关闭,client进入close状态,server接收到进入close状态