
Java核心技术36讲
文章平均质量分 51
Jackeys007
开朗、活泼,一个逗比的程序员
展开
-
day10Java核心技术36讲(Java提供了哪些IO方式,NIO如何实现多路复用)
阿发原创 2021-02-21 16:53:49 · 149 阅读 · 0 评论 -
day09Java核心技术36讲(如何保证集合是线程安全的,ConcurrentHashMap如何实现高效地线程安全)
一、典型回答Java提供了不同层面的线程安全支持,在传统集合框架内部,除了HashTable等同步容器,还提供了所谓的同步包装器(SynchronizedWrapper),我们还可以调用Collection工具类提供的包装方法,来获取一个同等的容器(如Collections.SynchronizedMap),但是它们都是利用非常粗粒度的同步方式,在高并发的情况下,性能比较低下。二、并发包提供的线程安全容器类①各种并发容器,如ConcurrentHashMap、CopyOnWriteArrayL.原创 2021-02-21 16:30:50 · 100 阅读 · 0 评论 -
day08Java核心技术36讲(对比HashTable、HashMap、TreeMap有什么不同)
一、不同HashTable:哈希表实现,不支持null键和值,线程安全。HashMap:支持null键和值,线程不安全。性能非常依赖于哈希码的有效性。TreeMap:是基于红黑树的一种提供顺序访问的Map,和其他的不同,它的get和put、remove之类的操作是O(log(n))的时间复杂度。二、hashCode和equals的基本约定equals相等,hashCode不一定相等。重写了hashCode也要重写equals。hashCode需要保持一致性,状态改变返回的哈希值仍原创 2021-02-15 16:05:54 · 140 阅读 · 1 评论 -
day07Java核心技术36讲(对比Vector、ArrayList、LinkedList有何区别)
一、区别Vector:线程安全,动态数组。ArrayList:动态数组,线程不安全,应用广泛。LinkedList:双向链表,线程不安全。二、不同容器类型适合的场景Vector和ArrayList作为动态数组,其顺序存储非常适合随机访问。但是删除和插入操作相对较差。LinkedList进行插入和删除非常高效,但其随机访问相对较慢。三、CollectionList:提供方便的访问、插入、删除等。Set:不允许重复。Queue/Dequeue:除了集合的基本功能,还支持F原创 2021-02-15 14:21:11 · 124 阅读 · 2 评论 -
day06Java核心技术36讲(int和Integer有什么区别,值缓存范围)
一、典型回答int是我们常说的整形数字,是Java的8个原始数据类型(primitiveTypes,boolean,byte,short,char,int,float,double,long)之一。Java语言虽然号称一切都是对象,但是原始数据类型是例外。Integer是int对应的包装类,它有一个int类型的字段存储数据,并且提供了基本操作,比如数字运算、int和字符串之间的转换等。在java5中,引入了自动装箱和自动拆箱功能。二、Integer的值缓存-128-127之间三、理解自动原创 2021-02-04 11:31:27 · 164 阅读 · 0 评论 -
day05Java核心技术36讲(谈谈Java反射机制、动态代理是基于什么原理)
一、反射机制反射机制是Java语言提供的一种基础功能,赋予程序在运行时自省(introspect,官方用语)的能力。通过反射我们可以直接操作类和对象,比如获取某个对象的定义,获取类声明的属性或方法,调用方法或者构造对象,甚至可以运行时修改类的定义。反射最大的作用之一就在于我们可以不在编译时知道某个对象的类型,而在运行时通过提供完整的“包名+类名.class”得到。反射的功能:①在运行时能判断任意一个对象所属的类;②在运行时能构造任意一个类的对象;③在运行时判断任意一个类所具有的成员变量和方法;原创 2021-01-18 14:51:41 · 153 阅读 · 1 评论 -
day04Java技术36讲(强引用、软引用、幻象引用有什么区别)
一、总结不同的引用类型,主要体现的是对象不同的可达性状态和垃圾收集的影响。二、强引用常见的普通对象引用,只要还有一个强引用指向一个对象,就表明对象还活着。垃圾收集器不会碰到这种对象。三、软引用是一种相对强引用弱一些的引用,可以让对象豁免一些垃圾收集**,只有JVM内存不足的时候,才会试图去收回软引用指向的对象**。四、弱引用并不能使对象豁免垃圾收集,仅仅是提供一种访问在弱引用状态下的对象的途径。可以用来构建一种没有特定约束的关系,比如维护一种非强制性的映射关系,如果试图获取时对象还在,就使用它原创 2021-01-15 14:53:34 · 132 阅读 · 1 评论 -
day03Java核心技术36讲(谈谈final、finally、finalize有什么不同)
一、final、finally、finalize①final可以用来修饰类、方法、变量,分别有不同的意义,final修饰的class代表不可以继承扩展,final修饰的变量不可以被修改,而final修饰的方法不可以被重写。②finally则是Java保证重点代码一定要被执行的一种机制。我们可以使用try-catch来进行类似关闭JDBC连接、保证Unlock锁等动作。③finalize是基础类java.lang.Object的一个方法,它设计的目的是保证对象在被垃圾收集前完成特定资源的回收。final原创 2020-11-24 14:46:02 · 147 阅读 · 0 评论 -
day02Java核心技术36讲(Exception与Error的区别)
一、Throwable继承关系Throwable:异常处理机制的基本类型。 Exception:程序正常运行,可以预料的意外情况且应该被捕获。 checked:可检查异常必须被捕获处理。 unchecked:原创 2020-11-22 14:18:18 · 203 阅读 · 0 评论 -
day01Java核心技术36讲(谈谈对Java平台的理解 )
一、Java的特性①“书写一次,到处运行”的跨平台能力;②垃圾收集器回收分配内存,程序员无须操心内存分配与回收。二、Java平台的两大核心①Java语言本身,JDK;②JVM,GC。三、JRE(Java Runtime Environment)概念:Java的运行环境,包含JVM和Java类库、以及一些模块等。作用:为Java提供必要的运行时环境。四、JDK(Java Development Kit)概念:JDK是JRE的一个超集,提供了更多的工具,如编译器、各种诊断工具等。作用:为J原创 2020-11-19 13:12:42 · 201 阅读 · 0 评论