摘要: 相同点: 两者都是接口;(废话) 两者都可用来编写多线程程序; 两者都需要调用Thread.start()启动线程; 不同点: 两者最大的不同点是:实现Callable接口的任务线程能返回执行结果;而实现Runnable接口的任务线程不能返回结果; Callable接口的call()方法允许抛出异常 阅读全文
posted @ 2020-05-31 23:45 程序员小宇 阅读(392) 评论(0) 推荐(0) 编辑
摘要: 加载–>连接->初始化 父类静态变量、 父类静态代码块、 子类静态变量、 子类静态代码块、 父类非静态变量(父类实例成员变量)、 父类构造函数、 子类非静态变量(子类实例成员变量)、 子类构造函数。 1.静态代码块总是最先执行的; 2.子类和父类的静态代码块都执行完之后,在执行父类的非静态代码块和父 阅读全文
posted @ 2020-05-31 23:32 程序员小宇 阅读(199) 评论(0) 推荐(0) 编辑
摘要: 缓存的区别 缓存分为本地缓存和分布式缓存。以java为例,使用自带的map或者guava实现的是本地缓存,最主要的特点是轻量以及快速,生命周期随着jvm的销毁而结束,并且在多实例的情况下,每个实例都需要各自保存一份缓存,缓存不具有一致性。 使用redis或memcached之类的称为分布式缓存,在多 阅读全文
posted @ 2020-05-31 23:16 程序员小宇 阅读(812) 评论(0) 推荐(0) 编辑
摘要: linux中如何查看某个端口是否被占用 之前查询端口是否被占用一直搞不明白,问了好多人,终于搞懂了,现在总结下: 1.netstat -anp |grep 端口号 如下,我以3306为例,netstat -anp |grep 3306(此处备注下,我是以普通用户操作,故加上了sudo,如果是以roo 阅读全文
posted @ 2020-05-31 22:44 程序员小宇 阅读(5011) 评论(0) 推荐(1) 编辑
摘要: 线程是否安全: HashMap 是非线程安全的,HashTable 是线程安全的;HashTable 内部的方法基本都经过synchronized 修饰。(如果你要保证线程安全的话就使用 ConcurrentHashMap 吧!); 效率: 因为线程安全的问题,HashMap 要比 HashTabl 阅读全文
posted @ 2020-05-31 17:16 程序员小宇 阅读(122) 评论(0) 推荐(0) 编辑
摘要: RandomAccess用来当标记,是一种标记接口。 用处是当要实现某些算法时,会判断当前类是否实现了RandomAccess接口,会选择不同的算法。 接口RandomAccess中内容是空的,只是作为标记用。比如List下的ArrayList和LinkedList。其中ArrayList实现了Ra 阅读全文
posted @ 2020-05-31 17:09 程序员小宇 阅读(628) 评论(0) 推荐(0) 编辑
摘要: 接口的方法默认是 public,所有方法在接口中不能有实现(Java 8 开始接口方法可以有默认实现),而抽象类可以有非抽象的方法。 接口中除了 static、final 变量,不能有其他变量,而抽象类中则不一定。 一个类可以实现多个接口,但只能实现一个抽象类。接口自己本身可以通过 extends 阅读全文
posted @ 2020-05-31 17:01 程序员小宇 阅读(246) 评论(0) 推荐(0) 编辑
摘要: java中不管是值对象还是引用对象都是值传递,在其他方法里面改变引用类型的值肯定是通过引用改变的,当传递引用对象的时候传递的是复制过的对象句柄(引用),注意这个引用是复制过的,也就是说又在内存中复制了一份句柄,这时候有两个句柄是指向同一个对象的,所以你改变这个句柄对应空间的数据会影响外部的变量的,虽 阅读全文
posted @ 2020-05-31 16:49 程序员小宇 阅读(369) 评论(0) 推荐(0) 编辑
摘要: 由上图可以看出: 线程创建之后它将处于 NEW(新建) 状态,调用 start() 方法后开始运行,线程这时候处于 READY(可运行) 状态。可运行状态的线程获得了 cpu 时间片(timeslice)后就处于 RUNNING(运行) 状态。 详情参考:https://blog.csdn.net/ 阅读全文
posted @ 2020-05-31 16:22 程序员小宇 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 都是面向对象的语言,都支持封装、继承和多态 Java 不提供指针来直接访问内存,程序内存更加安全 Java 的类是单继承的,C++ 支持多重继承;虽然 Java 的类不可以多继承,但是接口可以多继承。 Java 有自动内存管理机制,不需要程序员手动释放无用内存 在 C 语言中,字符串或字符数组最后都 阅读全文
posted @ 2020-05-31 15:22 程序员小宇 阅读(263) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2020-05-31 15:15 程序员小宇 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 方法 1:通过 Scanner Scanner input = new Scanner(System.in); String s = input.nextLine(); input.close(); 方法 2:通过 BufferedReader BufferedReader input = new 阅读全文
posted @ 2020-05-31 15:12 程序员小宇 阅读(236) 评论(0) 推荐(0) 编辑
摘要: 同步IO和异步IO 参考答案: IO操作主要分为两个步骤,即发起IO请求和实际IO操作,同步IO与异步IO的区别就在于第二个步骤是否阻塞。 若实际IO操作阻塞请求进程,即请求进程需要等待或者轮询查看IO操作是否就绪,则为同步IO。 若实际IO操作并不阻塞请求进程,而是由操作系统来进行实际IO操作并将 阅读全文
posted @ 2020-05-31 15:06 程序员小宇 阅读(986) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2020-05-31 14:45 程序员小宇 阅读(121) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2020-05-31 14:38 程序员小宇 阅读(149) 评论(0) 推荐(0) 编辑