Java SE 进阶之路
Java SE 进阶之路。
dev_zyx
talk is cheap, show me code!
展开
-
Comparator接口(比较器)的Java8 Lambda表达式写法:
知识点:o1 - o2 是升序排序,o2 - o1 是降序排序。1. 一维数组的比较:// o1 - o2 是升序排序,o2 - o1 是降序排序。// 1. 方法1:Arrays.sort(intervals, (a, b) -> a[0] - b[0]);// 2. 方法2:Arrays.sort(intervals, new Comparator<int[]>() { @Override public int compare(int o1[], in原创 2020-10-02 11:30:05 · 2479 阅读 · 0 评论 -
手写单例模式
1. 静态内部类实现单例(线程安全、效率高)一。静态内部类实现:这种方式是 Singleton 类被装载了, instance 不一定被初始化。因为 SingletonHolder 类没有被主动使用,只有通过显示调用 getInstance 方法时,才会显示装载 SingletonHolder 类,从而实例化 instance 。注意内部类SingletonHolder要用static修饰且其中的静态变量INSTANCE必须是final的。public class Singleton {原创 2020-09-25 01:12:57 · 317 阅读 · 0 评论 -
手写线程池
1. 先定义一个保存任务的队列类,同时提供获取任务和添加任务的方法:// 1. 先定义一个保存任务的队列类,同时提供获取任务和添加任务的方法package com.company;import java.util.*;public class RunnableTaskQueue { /** * 定义一个LinkedList来做为存放任务的队列 */ private final LinkedList<Runnable> tasks = new Li转载 2020-09-28 22:56:07 · 226 阅读 · 0 评论 -
哈希表(散列表)原理详解
参考:哈希表(散列表)原理详解十一、从头到尾解析Hash表算法什么是哈希表?哈希表(散列表)原理详解什么是哈希表? 哈希表(Hash table,也叫散列表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。记录的存储位置=f(关键字)这里的对应关系f称为散列函数,又称为哈希(Hash函数),采用散列技术将记录存转载 2020-06-09 11:07:27 · 1043 阅读 · 0 评论 -
多线程生产者消费者模型
1. 基础知识:1. 什么是生产者-消费者模式:比如有两个进程A和B,它们共享一个固定大小的缓冲区,A进程产生数据放入缓冲区,B进程从缓冲区中取出数据进行计算,那么这里其实就是一个生产者和消费者的模式,A相当于生产者,B相当于消费者。2. 为什么要使用生产者消费者模式:在多线程开发中,如果生产者生产数据的速度很快,而消费者消费数据的速度很慢,那么生产者就必须等待消费者消费完了数据才能够继续生产数据,因为生产那么多也没有地方放啊;同理如果消费者的速度大于生产者那么消费者就会经常处理等待状态,所以为了原创 2020-06-02 23:41:55 · 1243 阅读 · 0 评论 -
图解Java 垃圾回收机制
摘要: Java技术体系中所提倡的 自动内存管理 最终可以归结为自动化地解决了两个问题:给对象分配内存 以及 回收分配给对象的内存,而且这两个问题针对的内存区域就是Java内存模型中的 堆区。关于对象分配内存问题,笔者的博文《JVM 内存模型概述》已经阐述了 如何划分可用空间及其涉及到的线程安全问题,本文将结合垃圾回收策略进一步给出内存分配规则。垃圾回收机制的引入可以有效的...转载 2020-05-30 12:26:46 · 177 阅读 · 0 评论