琐碎知识点

创建线程池的三种方式:

  • public static ExecutorService newSingleThreadExecutor()
  • public static ExecutorService newFixedTheadPool()
  • public static ExecutorService newCachedThreadPool()
  • newSingleThreadExecutor返回一个包含单线程的Executor,这个线程处理完一个任务后再处理下一个任务,如果这个线程出现异常,则重新创建一个线程来代替这个线程
  • newFixedTheadPool返回一个包含指定数目线程的线程池,若任务数多于线程数则新创建的线程必须等待知道有任务完成
  • newCachedThreadPool根据用户的任务数来创建相应的线程数来处理,完全依赖于JVM能创建的线程的数量,可能会导致内存不足。

常用的linux命令

  • ps -ef|grep :查看进程
  • kill somePid :杀掉进程
  • netstat -npl:查看端口
  • cp from to:拷贝命令
  • du:查看磁盘使用情况
  • free:查看内存使用情况
  • top:查看系统资源使用情况
  • service -status -al:查看已有服务
  • 如何查找linux文件中的关键字:1.在文件已经通过vim打开的情况下,在vim下输入'/'+关键字 2.在文件没有打开的情况下,用"cat 文件名|grep 关键字"

java中常见的抽象类:

  • StringBuilder(线程安全),StringBuffer(线程不安全)都继承自AbstractStringBuilder类
  • 线程池中有一个AbstractExecutorService抽象类

抽象类与接口如何选择

如果要创建不带成员变量和方法定义的基类就选择接口,反之要创建带有成员变量和方法定义的基类就选择抽象类。

java中常见的Exception:

  • java.lang.NullPointerException
  • java.lang.ClassNotFoundException
  • java.lang.ArrayIndexOutOfBoundsException
  • java.lang.IllegalArgumentException

Restful

restful是一种http架构风格而不是具体的协议,它主要有四个特点:

  • 通过URL来对资源进行指定的操作
  • 对资源的操作包括获取,创建,修改和删除正好对应HTTP协议的GET,POST,PUT和DELETE方法
  • 连接是无状态的(无状态是指协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态)

HDFS文件存储原理

看这篇文章:HDFS文件存储

如何保证HDFS中副本数据的一致性

HDFS会对写入的所有数据计算校验和(checksum),并在读取数据时验证校验和。

DataNode在保存数据前负责验证checksum,client会把数据和checksum一起发送到一个由多个datanode组成的队列中,最后一个Datanode负责验证checksum。如果验证失败会抛出一个异常。

客户端从DataNode读取数据时也会验证checksum。每个Datanode都保存了一个验证checksum的日志,每次客户端成功验证一个数据块后都会告知DataNode,DataNode会更新日志。每个DataNode也会在后台运行一个DataBlockScanner来定期验证这个datanode上的所有的数据块。

抽象类和接口的区别

  • 抽象类只能单继承,接口可以多实现
  • 抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型的
  • 抽象类中可以有构造器,接口中不能有构造器
  • 抽象类中可以没有抽象方法,接口中的方法一定是抽象方法

抽象类中可以没有抽象方法吗?

可以没有抽象方法,但是这个类已经被声明为一个抽象类,就不能再实例化

为什么四次挥手的第二,三次挥手不能合到一起(为什么不能是三次挥手)

因为此时A虽然不发送数据了,但是还可以接收数据,B可能还有数据要发给A,所以两次挥手不能合为一次

你可能感兴趣的:(琐碎知识点)