JavaSE
文章平均质量分 81
么滴感情de杀手
源计划
展开
-
一个死锁的简单实现
死锁 两个或两个以上进程在执行任务的时候由于争夺资源等待资源而发生互相等待的状态。 四个必要条件 互斥条件(进程对锁分配的资源排他性的使用,即在一段时间内某资源只由一个进程占用,如果还有其他进程想要获得资源只能等待) 请求和保持条件(进程已经保持了至少一个资源但还申请了新的资源请求,而该资源已被其他进程占有,此时请求进程阻塞,但又对自己保持资源...原创 2018-09-25 00:59:02 · 289 阅读 · 0 评论 -
JDK、STS、SVN、Tomcat 、mysql的下载安装及环境变量的配置和sts修改字体大小
一、下载安装JDK及配置环境变量推荐看这个博客:https://blog.csdn.net/ring300/article/details/80420492二、从STS官网下载Spring Tools Suite (STS)其实就是一个被包装过的Eclipse,主要用于快速的开发Spring项目,我们不用再去编辑繁琐的xml配置文件,而是由工具自动生成。STS有两种安装方式,...原创 2019-03-06 17:01:50 · 697 阅读 · 0 评论 -
二叉树之B树红黑树AVL树堆积树、B-树、B+
二叉树即二叉搜索树:1.所有非叶子结点至多拥有两个子节点(Left和Right);2.所有结点存储一个关键字;3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树;如: ...原创 2018-10-14 10:41:50 · 664 阅读 · 2 评论 -
HashMap与ConcurrentHashMap
HashTable底层数组+链表实现,无论key还是value都不能为null,线程安全,实现线程安全的方式是在修改数据时锁住整个HashTable,效率低,ConcurrentHashMap做了相关优化; 初始size为11,扩容:newsize = olesize*2+1; 计算index的方法:index = (hash & 0x7FFFFFFF) % tab.length;...原创 2018-10-14 10:13:52 · 165 阅读 · 0 评论 -
重新认识HashMap(jdk1.8新增特性)
1.背景:HashMap是Java程序员使用频率最高的用于映射(键值对)处理的数据类型。随着JDK(Java Developmet Kit)版本的更新,JDK1.8对HashMap底层的实现进行了优化,例如引入红黑树的数据结构和扩容的优化等。Java为数据结构中的映射定义了一个接口java.util.Map,此接口主要有四个常用的实现类,分别是HashMap、Hashtable、Linke...原创 2018-10-14 09:51:25 · 10644 阅读 · 3 评论 -
HashMap(常用方法、底层结构、扩容机制)
1.实现原理:*HashMap的底层实现是一个哈希表即数组+链表;*HashMap初始容量大小16,扩容因子为0.75,扩容倍数为2;HashMap本质是一个一定长度的数组,数组中存放的是链表。当向HashMap中put(key,value)时,会首先通过hash算法计算出存放到数组中的位置,比如位置索引为i,将其放入到Entry[i]中,如果这个位置上面已经有元素了,那么就将...原创 2018-10-14 09:08:51 · 8538 阅读 · 3 评论 -
ArrayList和LinkedList(常用方法、底层结构及扩容机制)
1.ArrayList解说ArrayList初始长度为0(这里以jdk1.8为例),是一个Object类型的空数组,如下 当第一次调用add后,长度变为10 当数组首次扩容的10个空间用完需要扩容后,会第二次走grow方法来扩容(每次扩容为1.5倍)总的来说:ArrayList初始大小为10,每次1.5倍进行扩容;它的底层是用数组实现...原创 2018-10-13 19:32:41 · 18200 阅读 · 4 评论 -
集合
1.集合由来:在程序开发阶段,我们根本不知道到底需要多少个数量的对象,甚至不知道它的准确类型。为了满足这些常规的编程需要,我们要求能在任何时候,任何地点创建任意数量的对象,而这些对象用什么来容纳呢?我们首先想到了数组,但是数组只能放统一类型的数据,而且其长度是固定的,那怎么办呢?集合便应运而生了!2.集合的基本概念:Java集合类存放于 java.util 包中,是一个用来存放对象的容...原创 2018-10-13 12:37:20 · 155 阅读 · 0 评论 -
java的锁的种类及区别
公平锁/非公平锁 可重入锁 独享锁/共享锁 互斥锁/读写锁 乐观锁/悲观锁 分段锁 偏向锁/轻量级锁/重量级锁 自旋锁公平锁/非公平锁公平锁是指多个线程按照申请锁的顺序来获取锁。非公平锁是指多个线程获取锁的顺序并不是按照申请锁的顺序,有可能后申请的线程比先申请的线程优先获取锁。有可能,会造成优先级反转或者饥饿现象。对于Java ReentrantLock而言,通过构造函数指...原创 2018-10-12 23:53:23 · 206 阅读 · 0 评论 -
string字符串拼接应使用哪种方式比较好
我们所知道的字符串String的拼接有: “+” 、 concat () 方式实现,或者使用StringBuilder、StringBuffer类实现。这几种方式性能的从低到高进行排序,则顺序为:“+” < concat () < StringBuffer < StringBuilder 。使用"+"性能是最差的,应该避免使用!!!StringBuilder的性能是最高...原创 2018-10-12 21:31:45 · 1362 阅读 · 0 评论 -
反射
反射机制简述静态编译:在编译时确定类型,绑定对象,即通过。动态编译:运行时确定类型,绑定对象。动态编译最大限度发挥了java的灵活性,体现了多态的应用,有以降低类之间的藕合性。Java 反射机制是在运行状态中,对于任意一个类,都能够获得这个类的所有属性和方法,对于任意一个对象都能够调用它的任意一个属性和方法。Class 类与 java.lang.reflect 类库一起对反射的概念...原创 2018-10-12 20:54:17 · 119 阅读 · 0 评论 -
单例模式的破坏及任何防止被破坏
常用的单例模式有懒汉式、饿汉式两种情况。实际的应用场景也是很常见,好比如数据库连接池的设计,还有Windows的Task Manager(任务管理器)等。 所谓单例模式就是,某一个类只能有一个实例,实现的核心就是将类的构造函数私有化,只能由该类创建对象,其他对象就不能调用该类的构造函数,即不能创建对象了。现在看一个问题:对象的创建方式有哪几种? ...原创 2018-10-12 17:46:13 · 1253 阅读 · 0 评论 -
单例模式
1.定义 单例模式是一种常用的软件设计模式,其定义是单例对象的类只能允许一个实例存在。2.实现步骤将该类的构造方法定义为私有方法,这样其他处的代码就无法通过调用该类的构造方法来实例化该类的对象,只有通过该类提供的静态方法来得到该类的唯一实例; 在该类内提供一个静态方法,当我们调用这个方法时,如果类持有的引用不为空就返回这个引用,如果类保持的引用为空就创建该类的实例并将...原创 2018-10-12 01:04:18 · 102 阅读 · 0 评论 -
阻塞与挂起的区别
线程与进程的阻塞 线程在运行的过程中因为某些原因而发生阻塞,阻塞状态的线程的特点是:该线程放弃CPU的使用,暂停运行,只有等到导致阻塞的原因消除之后才回复运行。或者是被其他的线程中断,该线程也会退出阻塞状态,同时抛出InterruptedException。 正在执行的进程由于发生某时间(如I/O请求、申请缓冲区失败等)暂时无法继续执行。此时引起进程调度,OS把处理机...原创 2019-09-04 17:41:07 · 20580 阅读 · 12 评论