java
文章平均质量分 90
杨缘一
不断接近,终将到达
展开
-
线程中的join
join()的作用是:”等待该线程终止“,这里需要理解的就是该线程是指的主线程等待子线程的终止。也就是在子线程调用了join()方法后面的代码,只有等到子线程结束了才能执行。public static void main(String argv[])throws InterruptedException{ Thread t=new Thread(new Runnable() {原创 2017-10-07 17:23:29 · 976 阅读 · 0 评论 -
如何合理确定线程池的大小
在java中,几乎所有需要异步或者并发执行任务的程序都可以使用线程池。在开发过程中,合理的使用线程池能够带来3个好处首先是降低资源消耗。通过重复利用已创建的线程降低创建线程和销毁线程所带来的开销。提高相应速度。当任务到达时,任务可以不需要等待线程创建就立即执行。提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅消耗系统资源,同时降低系统的稳定性,使用线程池可以进行统一分配、调优和...原创 2018-05-07 22:10:21 · 3039 阅读 · 0 评论 -
快速失败(fail-fast)和安全失败(fail-safe)
快速失败(fail-fast)在用迭代器遍历一个集合对象时,如果遍历过程中对集合对象的内容进行了修改(增加、删除、修改),则会抛出Concurrent Modification Exception。原理:迭代器在遍历时直接访问集合中的内容,并且在遍历过程中使用一个 modCount 变量。集合在被遍历期间如果内容发生变化,就会改变modCount的值。每当迭代器使用hashNext()/n...原创 2018-04-22 22:01:49 · 358 阅读 · 0 评论 -
JDK1.8 HashMap的resize()源码分析
final Node<K,V>[] resize() { Node<K,V>[] oldTab = table; int oldCap = (oldTab == null) ? 0 : oldTab.length; int oldThr = threshold; int newCap, newThr = 0;...转载 2018-04-22 21:55:02 · 803 阅读 · 0 评论 -
Map按键排序(sort by key), 按值排序(sort by value)
Map排序的方式有很多种,这里记录下自己总结的两种比较常用的方式:按键排序(sort by key), 按值排序(sort by value)。1、按键排序jdk内置的java.util包下的TreeMappublic class MapSortDemo {public static void main(String[] args) { Map<String, String> map = ne转载 2018-03-23 22:41:59 · 1807 阅读 · 0 评论 -
Spring知识点提炼
原文出处: 朱小厮1. Spring框架的作用轻量:Spring是轻量级的,基本的版本大小为2MB控制反转:Spring通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或查找依赖的对象们。面向切面的编程AOP:Spring支持面向切面的编程,并且把应用业务逻辑和系统服务分开。容器:Spring包含并管理应用中对象的生命周期和配置MVC框架: Spring-MVC事务...转载 2018-03-04 20:01:49 · 218 阅读 · 0 评论 -
java面试题基础
基础知识 面向对象的特征 final, finally, finalize 的区别 int 和 Integer 有什么区别 重载和重写的区别 抽象类和接口有什么区别 说说反射的用途及实现 说说自定义注解的场景及实现 HTTP 请求的 GET 与 POST 方式的区别 session 与 cookie 区别 session 分布式处理 JDBC 流程 MVC 设计思想 eq...原创 2018-03-04 15:59:03 · 210 阅读 · 0 评论 -
抽象类和接口的区别
参数抽象类接口默认的方法实现它可以有默认的方法实现接口完全是抽象的。它根本不存在方法的实现实现子类使用extends关键字来继承抽象类。如果子类不是抽象类的话,它需要提供抽象类中所有声明的方法的实现。子类使用关键字implements来实现接口。它需要提供接口中所有声明的方法的实现构造器抽象类可以有构造器接口不能有构造器与正常Java类的区别除了你不能实例化抽象类之外,它和原创 2018-02-25 10:38:38 · 191 阅读 · 0 评论 -
java中的线程池
Java中的线程池是运用场景最多的并发框架,几乎所有需要异步或者并发执行任务的程序都可以使用线程池。 具体的使用场景: 举例分析使用线程池的好处降低资源消耗 创建和销毁线程需要消耗资源,线程池可以重复利用已创建的线程,减少资源消耗。提高响应速度 创建线程需要时间,当任务到达时,立即执行,无需等待线程创建,这样可以节省时间,提高响应速度。提高线程的可管理性 线程的创建、销毁、控制管理、调优等原创 2017-12-15 09:55:37 · 179 阅读 · 0 评论 -
单例模式
单例模式:一个类只能创建一个对象的设计模式单例模式代码实现懒汉模式/* * 要想让一个类只能构建一个对象,则不能让他随便进行new,因此构造方法是私有的 * 懒汉模式(如果单例初始值为null,则构建单例对象) */public class Singleton { //私有构造函数 private Singleton() { } //单例对象 pr原创 2017-12-20 22:48:40 · 207 阅读 · 0 评论 -
java中Object默认的基本方法
java object默认的基本方法中没有copy(),含有如下方法: getClass(), hashCode(), equals(), clone(), toString(), notify(), notifyAll(), wait(), finalize()package java.lang; public class Object { /* 一个本地方法,具原创 2017-11-22 09:27:03 · 2106 阅读 · 0 评论 -
深入理解Java PriorityQueue
转自:https://www.cnblogs.com/CarpenterLee/p/5488070.html 深入理解Java PriorityQueue PriorityQueue本文github地址Java中PriorityQueue通过二叉小顶堆实现,可以用一棵完全二叉树表示。本文从Queue接口函数出发,结合生动的图解,深入浅出地分析PriorityQueue每个操作的具体转载 2017-11-21 22:27:44 · 220 阅读 · 0 评论 -
Java 继承
简述 在设计类的时候,应该将通用的方法放在父类中,而将具有特殊用途的方法放在子类中。java面向对象编程,则我们在创建类时,有些类会具有公共的属性和方法,为了使代码能够复用,我们把这些几个类共有的属性和方法放在父类中,其他类继承这个父类,则便具有了父类公有的属性和方法,同时子类还可以添加一些新的属性和方法,以满足新的需求。关键字extendsclass Manager extends Empl原创 2017-12-08 20:27:55 · 182 阅读 · 0 评论 -
Java 多态
引言java的三大特性:封装,继承和多态、 封装和继承也是为多态服务的。 多态即为事物在运行的过程中呈现不同的状态。举个简单的例子,对于键盘上的按键组成的快捷键,同一个快捷键在不同的应用中对应着不同的操作。 实现多态的技术称为:动态绑定(dynamic binding),是指在执行期间判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。 多态的作用:消除类型之间的耦合关系。多态的三个原创 2017-12-08 19:51:47 · 262 阅读 · 0 评论 -
Java中的Arrays.copyOfRange()方法
Arrays.copyOfRange(T[ ] original,int from,int to) 将一个原始的数组original,从小标from开始复制,复制到小标to,生成一个新的数组。 注意这里包括下标from,不包括下标to。这个方法在一些处理数组的编程题里很好用,效率和clone基本一致,都是native method,比利用循环复制数组效率要高得多。原创 2017-11-13 21:31:00 · 1495 阅读 · 0 评论 -
通过一个故事来看java nio
假设某银行只有10个职员。该银行的业务流程分为以下4个步骤: 1) 顾客填申请表(5分钟); 2) 职员审核(1分钟); 3) 职员叫保安去金库取钱(3分钟); 4) 职员打印票据,并将钱和票据返回给顾客(1分钟)。 我们看看银行不同的工作方式对其工作效率到底有何影响。BIO方式 每来一个顾客,马上由一位职员来接待处理,并且这个职员需要负责以上4个完整流程。当超过10个顾客时,剩余的原创 2017-11-06 19:11:43 · 293 阅读 · 0 评论 -
java并发容器
ConcurrentHashMap代替同步的Map(Collections.synchronized(new HashMap())),众所周知,HashMap是根据散列值分段存储的,同步Map在同步的时候锁住了所有的段,而ConcurrentHashMap加锁的时候根据散列值锁住了散列值锁对应的那段,因此提高了并发性能。ConcurrentHashMap也增加了对常用复合操作的支持,比如”若没有则添原创 2017-10-12 10:48:51 · 204 阅读 · 0 评论 -
Java并发编程:CopyOnWrite
转自> http://ifeve.com/java-copy-on-write/Copy-On-Write简称COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改,这是一种延时懒惰策略。从JDK1.5开始Java并发包里提供了两个使用CopyOnWrite机制实现的并发容器,它们是Co原创 2017-10-12 08:34:18 · 367 阅读 · 0 评论 -
Java的类加载器
我们所写的java程序,经过Java编译器把java代码编译为存储字节码的class文件,虚拟机所处理的正是这些Class文件。虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型。类加载器Java语言是在运行期动态加载的,即我们所写的类并不是在程序启动时,一次性进行加载的,而是在实际使用到时才进行动态加载。只有...原创 2018-05-08 08:29:33 · 188 阅读 · 0 评论