• 等级
  • 130275 访问
  • 127 原创
  • 20 转发
  • 24588 排名
  • 18 评论
  • 9 获赞

Java 集合常见面试题

1、ArrayList和LinkedList区别?ArrayList是容量可以改变的非线程安全集合。内部实现使用数组进行存储,集合扩容时会创建更大的数组空间,把原有数据复制到新数组中。ArrayList支持对元素的快速随机访问,但是插入与删除时速度通常很慢,因为这个过程很有可能需要移动其他元素。LinkedList的本质是双向链表。与ArrayList相比,LinkedList的插入和删除...

2019-05-19 16:47:21

JDK 8 ConcrrentHashMap 源码解析

【本文是为了梳理知识的总结性文章,总结了一些自认为相关的重要知识点,只为巩固记忆以及技术交流,忘批评指正。其中参考了很多前辈的文章,包括图片也是引用,如有冒犯,侵删。】0存储结构从底层实现来看,ConcurrentHashMap和HashMap一样都是数组+链表+红黑树(JDK1.8为了优化链表查询性能新增红黑树)实现的。1类定义publicclassConcu...

2019-05-05 21:51:35

JDK 8 TreeMap 源码解析

【本文是为了梳理知识的总结性文章,总结了一些自认为相关的重要知识点,只为巩固记忆以及技术交流,忘批评指正。其中参考了很多前辈的文章,包括图片也是引用,如有冒犯,侵删。】0存储结构TreeMap是一个有序的Map,内部按照Key的排序结果来组织。一般如果没有需要排序的情况下,我们都使用HashMap或者多线程下使用ConcurrentHashMap,因为TreeMap的插入和删除的效率没...

2019-04-22 22:43:16

计算无线信号的传输距离

【译自https://www.electronicdesign.com/communications/understanding-wireless-range-calculations,水平有限,望指正】目录为什么实际通信距离可能不等于声称的距离功率和dBm计算路径损耗解释经验结果天线高度和菲涅耳区总结无线通信设计中的关键计算之一是通信距离,即使得无线通信能够...

2019-04-18 16:51:31

数据结构之红黑树Java实现

【本文是为了梳理知识的总结性文章,总结了一些自认为相关的重要知识点,只为巩固记忆以及技术交流,忘批评指正。其中参考了很多前辈的文章,包括图片也是引用,如有冒犯,侵删。】1红黑树的进化历程1.1第一阶段:树树是一种常用的数据结构,它是一个由有限节点组成的一个具有层次关系的集合,数据就存在树的这些节点中。最顶层只有一个节点,称为根节点。在分支处有一个节点,指向多个方向,如果某节点下方没...

2019-04-16 22:01:23

JDK 8 HashSet 源码解析

【本文是为了梳理知识的总结性文章,总结了一些自认为相关的重要知识点,只为巩固记忆以及技术交流,忘批评指正。其中参考了很多前辈的文章,包括图片也是引用,如有冒犯,侵删。】0存储结构从底层实现来看,HashSet调用了HashMap来存储元素,不过之用到了Key,Value则用一个固定对象替代。由于Map中的key是不可重复的,这和Set不存在重复元素的特点刚好契合。使用HashMap也意...

2019-04-16 21:00:54

JDK 8 LinkedList 源码解析

【本文是为了梳理知识的总结性文章,总结了一些自认为相关的重要知识点,只为巩固记忆以及技术交流,忘批评指正。其中参考了很多前辈的文章,包括图片也是引用,如有冒犯,侵删。】0存储结构从底层实现来看,LinkedList是链表实现的,其本质是双向链表。与ArrayList相比,LinkedList的插入和删除速度更快,但是随机访问速度则很慢。LinkedList的优点在于可以将零散的内存单元通...

2019-04-15 22:05:48

JDK 8 ArrayList 源码解析

【本文是为了梳理知识的总结性文章,总结了一些自认为相关的重要知识点,只为巩固记忆以及技术交流,忘批评指正。其中参考了很多前辈的文章,包括图片也是引用,如有冒犯,侵删。】0存储结构从底层实现来看,Array是数组实现的,与数组不同的是,其容量是可以改变的。集合扩容的时候会创建更大的数组空间,把原有数据复制到新数组中。ArrayList支持对元素的快速随机访问,但是插入和删除时速度通常很慢...

2019-04-12 21:59:28

JDK 8 HashMap 源码解析

【本文是为了梳理知识的总结性文章,总结了一些自认为相关的重要知识点,只为巩固记忆以及技术交流,忘批评指正。其中参考了很多前辈的文章,包括图片也是引用,如有冒犯,侵删。】目录0存储结构1类定义2静态常量3属性4构造函数5链表节点6功能方法确定哈希桶数组索引位置hash扰动函数计算方法取模运算优化7常用方法get方法put方法...

2019-04-08 22:34:24

Leetcode-494-Target-Sum

Leetcode-494-Target-Sum题目如下:Youaregivenalistofnon-negativeintegers,a1,a2,…,an,andatarget,S.Nowyouhave2symbols+and-.Foreachinteger,youshouldchooseonefrom+and-as...

2019-02-28 11:05:57

LeetCode 39. Combination Sum 题解

这题有几个主要的点,首先,题目要求输出所有的组合数,而不是数据所有组合总的个数,如果是求个数用动态规划更好解决。但是要输出所有的组合数的话使用回溯法更容易处理。其次,题目要求不能包含有重复的组合,这是解决这个题目的一个难点。最后,保存解决方案的时候要注意Java里List的浅拷贝和深拷贝,不然浅拷贝最后得到空值。解法:其实回溯的方法还是比较简单的,为了后面处理的适合容易去重...

2019-01-03 11:24:13

Java new 背着我们干了什么

new是Java最常用的关键字之一,我们使用new创建对象。我们经常像下面代码一样创建一个对象:Dogdog=newDog();只需一行代码,我们就能创建出一只狗,是不是很简单!为什么这么简单?答:不简单就没人用。Java作为面向对象语言,提倡封装,如果自己的语法设计都做不到,那还怎么要求程序员们做到。创建对象这么常用而且模板化的操作,如...

2017-04-27 12:14:09

【单例深思】枚举实现单例原理

单例的枚举实现在《EffectiveJava》中有提到,因为其功能完整、使用简洁、无偿地提供了序列化机制、在面对复杂的序列化或者反射攻击时仍然可以绝对防止多次实例化等优点,单元素的枚举类型被作者认为是实现Singleton的最佳方法。其实现非常简单,如下:public enum Singleton {    INSTANCE;    private Singl

2017-04-26 20:49:58

【单例深思】单例与序列化

在前面的文章中提到,序列化会破坏单例模式,下面用静态内部类的实现方式,说明序列化对单例的影响:public class Singleton implements Serializable{    private static class SingletonHolder {        private static final Singleton INSTANCE = ne

2017-04-25 17:21:09

【单例深思】静态内部类实现详解

静态内部类实现是我个人比较推荐的,其实现如下:public class Singleton {    private static class SingletonHolder {        private static final Singleton INSTANCE = new Singleton();    }    private Singleton()

2017-04-12 17:28:26

【单例深思】双重检测锁与Java内存模型

双重检测锁 使用粒度较小的锁(缩小锁的范围)解决了 懒汉式改进版 中存在的性能问题,以提高并发量。双重检测锁实现如下:public class Singleton {                        // 1    private static Singleton singleton;         // 2    private S

2017-04-12 16:11:06

【单例深思】懒汉式改进版与内置锁

我们知道懒汉式的实现是延迟加载(LazyLoading),但是不是线程安全的,下面我们深入研究下为什么。懒汉式的实现如下:public class Singleton {    private static Singleton singleton;    private Singleton(){}    public s

2017-04-08 16:46:29

【单例深思】饿汉式与类加载

我们知道饿汉式的实现是线程安全的,没有延迟加载(LazyLoading),下面我们深入研究下为什么。饿汉式的实现如下:public class Singleton {   private static Singleton singleton = new Singleton();   private Singleton() {}   public st

2017-04-08 15:10:55

【单例深思】Java 单例模式全解

什么是单例模式?单例模式 是一种对象创建模式,它用于产生一个对象的具体实例,它可以确保系统中一个类只产生一个实例,并提供一个访问它的全局访问点。单例模式的用途?用于创建只需要一个实例的场景。怎么实现单例模式?单例模式的实现中有几个共同特点:使用 private 声明类构造函数,这样就不能通过new 声明这个

2017-04-07 17:05:19

如何使用Spring FactoryBean?

1.概述 Springbean容器中有两种bean:普通bean和工厂bean。Spring直接使用前者,而后者自身可以生成由框架管理的对象。简单地说,我们可以通过实现org.springframework.beans.factory.FactoryBean接口来构建一个工厂bean。 2.工厂Bean基础 2.1实现一个FactoryBean首先看

2017-04-06 16:10:39

TaiSung

Good developers who are familiar with the entire stack know how to make life easier for those around them.
关注
  • 互联网·电子商务/Full Stack developer
  • 中国 北京 朝阳区
奖章
  • Github
  • 专栏达人
  • 持之以恒
  • 勤写标兵Lv1