![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 74
AllenBolg
这个作者很懒,什么都没留下…
展开
-
Fork/Join 设计解析
介绍:Fork/Join并行是获得良好的并行性能的最简单高效的设计技术。他是分治(Divide-and-Conquer)算法的的并行实现,它的典型应用形式:Result solve(Problem problem) { if (problem is small) directly solve problem else { split problem into independent p...原创 2018-02-27 21:32:39 · 615 阅读 · 2 评论 -
来聊聊线程池
线程池可以说是在Java代码中非常常见的技术了,利用线程池技术可以有效的提高系统资源的使用效率,本文将从线程池的类型分类、创建线程池参数、各种类型线程池的使用场景、优秀的设计思路等 Executor 为基础接口,设计初衷是将任务提交和任务执行细节解耦 ExecutorService 则更加完善,不仅提供了service管理功能,也提供了更加全面的提交任务机制 Executors 提供了各...原创 2018-08-16 12:30:58 · 297 阅读 · 0 评论 -
聊聊Java中的并发队列
本文主要总体的说一说各种并发队列 首先来一张全体照 从有界无界上分 常见的有界队列为ArrayBlockingQueue 基于数组实现的阻塞队列LinkedBlockingQueue 其实也是有界队列,但是不设置大小时就时Integer.MAX_VALUE,内部是基于链表实现的ArrayBlockingQueue 与 LinkedBlockingQueue 对比一哈 Arr...原创 2018-08-15 21:48:18 · 1647 阅读 · 0 评论 -
Java面试——JVM(2)
1、程序计数器(线程私有)线程执行字节码的行号指示器(注意是字节码,本地方法计数器为空的)2、Java虚拟机栈(线程私有):描述的是Java方法执行的内存模型每一个方法对应一个栈帧栈帧包含:局部变量表、操作数栈、动态链接、方法出口局部变量表slot会复用,导致一些对象不能被及时的回收,所以建议对象不用之后要赋值为空;局部变量表在编译器就已经完成分配方法的返回地址即方法出...原创 2018-08-14 18:04:59 · 241 阅读 · 0 评论 -
Java面试——JVM(1)
Java的类加载过程 加载过程 类的二进制流 –> 运行时数据结构 –> 生成一个Class对象作为这个类各种数据的访问入口验证 确保Class文件符合虚拟机要求准备 为类变量分配内存空间,设置零值解析阶段 将常量池中的符号引用替换为直接引用的过程符号引用 通俗的说可以认为是类的全路径直接引用 可以是指针、相对偏移量、句柄等可以定位到目标的量初始化 执...原创 2018-08-14 17:36:37 · 232 阅读 · 0 评论 -
java 8 HashMap的resize()方法扩容部分 【转载深度好文】
原文链接 https://blog.csdn.net/u013494765/article/details/77837338没有别的说的,程序员直接看代码。红黑树比较麻烦,直接删除了。// 扩容兼初始化 final Node<K, V>[] resize() { Node<K, V>[] oldTab = table; ...转载 2018-08-02 13:41:52 · 329 阅读 · 0 评论 -
Java web面试总结
状态码:206 客户发送了一个带有Range头的GET请求,服务器完成了它301 永久性转移302 临时性转移400 请求格式错误401 被请求的页面需要用户名和密码403 对被请求页面的访问被禁止405 请求中指定的方法不被允许500 服务器端错误request和response区别request 网址栏不会变,属于内部跳转response 网址栏会变,会让服务...原创 2018-08-14 16:07:32 · 225 阅读 · 0 评论 -
Java 基础知识面试题
深克隆和浅克隆的区别?浅克隆是两个完全相同的对象(包含普通对象和数组对象)指向了同一片内存区域深克隆是两个完全相同的对象(包含普通对象和数组对象)指向了不同的内存区域深克隆方法?申请一片新的内存区域,然后将对象拷贝到新的内存区域中== 和 equal 的区别?没有重载equal方法时,equal和== 是等价的,都是比较内存地址是否相同;重载equal方法后,如 ...原创 2018-08-14 12:01:35 · 301 阅读 · 0 评论 -
【转】Java8 resize() 机制
HashMap的扩容机制---resize()虽然在hashmap的原理里面有这段,但是这个单独拿出来讲rehash或者resize()也是极好的。什么时候扩容:当向容器添加元素的时候,会判断当前容器的元素个数,如果大于等于阈值(知道这个阈字怎么念吗?不念fa值,念yu值四声)---即当前数组的长度乘以加载因子的值的时候,就要自动扩容啦。扩容(resize)就是重新计算容量,向HashMap对象里...转载 2018-05-13 18:37:12 · 3807 阅读 · 2 评论 -
【转】 命令模式
原文链接:http://baijiahao.baidu.com/s?id=1587032070903401093&wfr=spider&for=pc命令模式(Command Pattern)将一个请求封装为一个对象,可让请求变得灵活(请求对象参数化),同时将请求者和请求接收者解耦。比如,A对象想调用B对象的某个方法,那么A对象必然需要依赖B对象;使用命令模式的话就类似抽取出一个公共...转载 2018-05-19 12:59:11 · 208 阅读 · 0 评论 -
CompletionService 介绍
原文链接:https://blog.csdn.net/u011116672/article/details/51113769CompletionService简介CompletionService与ExecutorService类似都可以用来执行线程池的任务,ExecutorService继承了Executor接口,而CompletionService则是一个接口,那么为什么CompletionS...转载 2018-05-17 17:57:08 · 229 阅读 · 0 评论 -
【转】简单的protobuf和protostuff
原文链接:https://blog.csdn.net/eric520zenobia/article/details/53766571在我们的开发过程中,序列化是经常需要处理的问题,比如在做分布式访问数据时,或者是在做redis缓存存储数据时,如果我们涉及的知识面不够广的话,可能会简单的使用JDK的序列化,也即在需要序列化的类上implements Serializable接口去实现序列化,我想说的...转载 2018-05-17 17:46:44 · 728 阅读 · 0 评论 -
lambda表达式案例
Java 8十个lambda表达式案例转发自 http://www.jdon.com/idea/java/10-example-of-lambda-expressions-in-java8.html使用() -> {} 替代匿名类: 1. 实现Runnable线程案例//Before Java 8:new Thread(new Runnable() { @Override ...转载 2018-04-24 17:49:58 · 244 阅读 · 0 评论 -
java 如何将数据写入XML中
java中用jdom 如何创建xml文档/将数据写入XML中转载自 https://blog.csdn.net/zjliwhf/article/details/53536812----------------------------------------------------------------------------------------------------------------...转载 2018-04-24 11:23:14 · 4701 阅读 · 2 评论 -
Java面试题一
什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”?Java虚拟机是一个可以执行Java字节码的虚拟机进程Java虚拟机知道底层硬件平台的指令长度和其他特性JDK和JRE的区别是什么?JDK(Java Development Kit) Java的开发工具--编译器、调试器、其他工具JRE(Java Runtime Environment) Java运行时环境,包含虚拟机”st...原创 2018-03-02 11:01:45 · 272 阅读 · 0 评论 -
ConcurrentHashMap的前世今生
引言:首先需要了解的是内置锁和显示锁内置锁也叫对象锁,关键字为 synchronized显示锁就是Lock及其子类线程不安全的HashMap数据结构 由哈希表实现,数据结构构成为数组+链表+红黑树,解决哈希冲突的方案为拉链法寻址方式 通过Integer.highestOneBit算出比指定整数小的最大的2^N值,其实现方法如下。public static int highestOneB...转载 2018-03-01 20:46:10 · 332 阅读 · 0 评论 -
Jav8 HashMap-putVal() 方法分析
带中文注释的源码解析putVal() 方法解析final V putVal(int hash, K key, V value, boolean onlyIfAbsent, boolean evict) { Node<K,V>[] tab; Node<K,V> p; int n, i; // 如果存储元素的tab...原创 2018-03-01 16:42:07 · 8243 阅读 · 3 评论 -
Java8 线程池解析
1、线程池引入原因: 在Java中通过线程池复用线程2、线程池类图: 3、线程池核心类介绍: 3.1 在ThreadPoolExecutor类中提供了四个构造方法:public class ThreadPoolExecutor extends AbstractExecutorService {.....public ThreadPoolExecutor(int c...原创 2018-03-01 13:41:42 · 1516 阅读 · 0 评论 -
CountDownLanch 深度解析
CountDownLatch 深度解析涉及到到函数public CountDownLatch(int count) { if (count < 0) throw new IllegalArgumentException("count < 0"); this.sync = new Sync(count);}private static final...原创 2019-04-01 15:29:02 · 871 阅读 · 0 评论