随笔分类 -  Java基础

摘要:区别一: 使用范围不一样 CMS收集器是老年代的收集器,可以配合新生代的Serial和ParNew收集器一起使用 G1收集器收集范围是老年代和新生代。不需要结合其他收集器使用 区别二: STW的时间 CMS收集器以最小的停顿时间为目标的收集器。 G1收集器可预测垃圾回收的停顿时间(建立可预测的停顿时 阅读全文 »
posted @ 2022-01-17 20:49 程序员小宇 阅读(344) 评论(0) 推荐(0) 编辑
摘要:面向对象主要有四大特性 1、抽象 忽略一个主题中与当前目标无关的东西,专注的注意与当前目标有关的方面。(就是把现实世界中的某一类东西,提取出来,用程序代码表示,抽象出来的一般叫做类或者接口)。抽象并不打算了解全部问题,而是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一个数据抽象,而是过程抽 阅读全文 »
posted @ 2020-07-15 22:39 程序员小宇 阅读(814) 评论(0) 推荐(0) 编辑
摘要:当为1的时候,查找链表或者红黑树效率低 当为0.5的时候,才存了一般数据就要扩容,浪费空间 所以取一个时间与空间的折衷(从泊松分布角度算出来的) 我这么想的,0.5或者1都不合适,0.5 ~ 1区间内取值的话,capacity是2的幂,capacity * 0.75能够得到一个整数,省事儿 阅读全文 »
posted @ 2020-06-21 10:02 程序员小宇 阅读(467) 评论(0) 推荐(0) 编辑
摘要:备注:这道题的思路是先从总体解释抽象类和接口的基本概念,然后再比较两者的语法细节,最后再说两者的应用区别。 先从一个类中的构造方法、普通成员变量和方法(包括抽象方法),静态变量和方法,继承性等6个方面逐一去比较回答,接着从第三者继承的角度的回答,特别是最后用了一个典型的例子来展现自己深厚的技术功底。 阅读全文 »
posted @ 2020-06-20 16:25 程序员小宇 阅读(452) 评论(0) 推荐(0) 编辑
摘要:转自:https://www.cnblogs.com/zengcongcong/p/11295349.html 1.谈一下HashMap的特性? 1.HashMap存储键值对实现快速存取,允许为null。key值不可重复,若key值重复则覆盖。 2.非同步,线程不安全。 3.底层是hash表,不保证 阅读全文 »
posted @ 2020-06-05 23:33 程序员小宇 阅读(208) 评论(0) 推荐(0) 编辑
摘要:1、map.put(k,v)实现原理 第一步首先将k,v封装到Node对象当中(节点)。第二步它的底层会调用K的hashCode()方法得出hash值。第三步通过哈希表函数/哈希算法,将hash值转换成数组的下标,下标位置上如果没有任何元素,就把Node添加到这个位置上。如果说下标对应的位置上有链表 阅读全文 »
posted @ 2020-06-05 23:20 程序员小宇 阅读(426) 评论(0) 推荐(0) 编辑
摘要:相同点: 两者都是接口;(废话) 两者都可用来编写多线程程序; 两者都需要调用Thread.start()启动线程; 不同点: 两者最大的不同点是:实现Callable接口的任务线程能返回执行结果;而实现Runnable接口的任务线程不能返回结果; Callable接口的call()方法允许抛出异常 阅读全文 »
posted @ 2020-05-31 23:45 程序员小宇 阅读(398) 评论(0) 推荐(0) 编辑
摘要:缓存的区别 缓存分为本地缓存和分布式缓存。以java为例,使用自带的map或者guava实现的是本地缓存,最主要的特点是轻量以及快速,生命周期随着jvm的销毁而结束,并且在多实例的情况下,每个实例都需要各自保存一份缓存,缓存不具有一致性。 使用redis或memcached之类的称为分布式缓存,在多 阅读全文 »
posted @ 2020-05-31 23:16 程序员小宇 阅读(836) 评论(0) 推荐(0) 编辑
摘要:线程是否安全: HashMap 是非线程安全的,HashTable 是线程安全的;HashTable 内部的方法基本都经过synchronized 修饰。(如果你要保证线程安全的话就使用 ConcurrentHashMap 吧!); 效率: 因为线程安全的问题,HashMap 要比 HashTabl 阅读全文 »
posted @ 2020-05-31 17:16 程序员小宇 阅读(128) 评论(0) 推荐(0) 编辑
摘要:接口的方法默认是 public,所有方法在接口中不能有实现(Java 8 开始接口方法可以有默认实现),而抽象类可以有非抽象的方法。 接口中除了 static、final 变量,不能有其他变量,而抽象类中则不一定。 一个类可以实现多个接口,但只能实现一个抽象类。接口自己本身可以通过 extends 阅读全文 »
posted @ 2020-05-31 17:01 程序员小宇 阅读(248) 评论(0) 推荐(0) 编辑
摘要:java中不管是值对象还是引用对象都是值传递,在其他方法里面改变引用类型的值肯定是通过引用改变的,当传递引用对象的时候传递的是复制过的对象句柄(引用),注意这个引用是复制过的,也就是说又在内存中复制了一份句柄,这时候有两个句柄是指向同一个对象的,所以你改变这个句柄对应空间的数据会影响外部的变量的,虽 阅读全文 »
posted @ 2020-05-31 16:49 程序员小宇 阅读(377) 评论(0) 推荐(0) 编辑
摘要:由上图可以看出: 线程创建之后它将处于 NEW(新建) 状态,调用 start() 方法后开始运行,线程这时候处于 READY(可运行) 状态。可运行状态的线程获得了 cpu 时间片(timeslice)后就处于 RUNNING(运行) 状态。 详情参考:https://blog.csdn.net/ 阅读全文 »
posted @ 2020-05-31 16:22 程序员小宇 阅读(146) 评论(0) 推荐(0) 编辑
摘要:都是面向对象的语言,都支持封装、继承和多态 Java 不提供指针来直接访问内存,程序内存更加安全 Java 的类是单继承的,C++ 支持多重继承;虽然 Java 的类不可以多继承,但是接口可以多继承。 Java 有自动内存管理机制,不需要程序员手动释放无用内存 在 C 语言中,字符串或字符数组最后都 阅读全文 »
posted @ 2020-05-31 15:22 程序员小宇 阅读(266) 评论(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 程序员小宇 阅读(237) 评论(0) 推荐(0) 编辑
摘要:同步IO和异步IO 参考答案: IO操作主要分为两个步骤,即发起IO请求和实际IO操作,同步IO与异步IO的区别就在于第二个步骤是否阻塞。 若实际IO操作阻塞请求进程,即请求进程需要等待或者轮询查看IO操作是否就绪,则为同步IO。 若实际IO操作并不阻塞请求进程,而是由操作系统来进行实际IO操作并将 阅读全文 »
posted @ 2020-05-31 15:06 程序员小宇 阅读(994) 评论(0) 推荐(0) 编辑
摘要: 阅读全文 »
posted @ 2020-05-31 14:45 程序员小宇 阅读(122) 评论(0) 推荐(0) 编辑
摘要: 阅读全文 »
posted @ 2020-05-31 14:38 程序员小宇 阅读(150) 评论(0) 推荐(0) 编辑
摘要:先说不是原子的,因为这个是分为三步,读值,+1,写值。在这三步任何之间都可能会有CPU调度产生,造成i的值被修改,造成脏读脏写。 接下来说volatile不能解决这个线程安全问题。因为volatile只能保证可见性,不能保证原子性。回答这个只为了让面试官晓得你考虑周全,知识面广。 接下来说可以用锁。 阅读全文 »
posted @ 2020-05-30 12:16 程序员小宇 阅读(268) 评论(0) 推荐(0) 编辑
摘要:请叙述一下您对线程池的理解? 回答这个面试题要从线程池的好处,线程池如何使用和线程池启动时执行的策略来说 线程池的好处: 降低资源消耗:重复利用线程池中的线程节省线程创建和销毁带来的消耗; 提高性能:当任务需求时,可以不用创建线程直接执行,主要是直接从线程池中取出线程去执行; 提高线程的可管理性:线 阅读全文 »
posted @ 2020-05-30 12:04 程序员小宇 阅读(156) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示