详解 Guava Cache

一、Guava Cache一般在项目中,本地缓存的实现为 ConcurrentHashMap,它具有线程安全、持久有效的特点。但是相较于传统缓存,它不具备缓存过期、缓存移除等特性,Google Guava 包内的 Cache 模块可能会给你一个新的选择。 Guava 目前托管于 GitHub,在项目中引入也是十分简单: 1234567<dependency> <groupI...

Java 集合框架

Java集合框架 (Java Collections Framework, JCF) 也称容器,在这里主要对如下部分进行源码分析,及在面试中常见的问题。例如,在阿里面试常问到的 HashMap 和 ConcurrentHashMap 原理等等。深入源码分析是面试中必备的技能,通过本文的阅读会对集合框架有更深一步的了解。 一、概述Java集合框架提供了数据持有对象的方式,提供了对数据集合的操作。Ja...

如何判断一个元素在亿级数据中是否存在

前言最近有朋友问我这么一个面试题目: 现在有一个非常庞大的数据,假设全是 int 类型。现在我给你一个数,你需要告诉我它是否存在其中(尽量高效)。 需求其实很清晰,只是要判断一个数据是否存在即可。但这里有一个比较重要的前提:非常庞大的数据。 常规实现先不考虑这个条件,我们脑海中出现的第一种方案是什么? 我想大多数想到的都是用 HashMap 来存放数据,因为它的写入查询的效率都比较高。写入和判...

Java 并发编程——Thread 类的使用

在学习Thread类之前,先介绍与线程相关知识:线程的几种状态、上下文切换,然后接着介绍Thread类中的方法的具体使用。 一、线程的状态线程从创建到最终的消亡,要经历若干个状态。一般来说,线程包括以下这几个状态:创建(new)、就绪(runnable)、运行(running)、阻塞(blocked)、time waiting、waiting、消亡(dead)。 当需要新起一个线程来执行某个子任务...

Java 并发编程——volatile 关键字解析

volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。 volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模型有关的,因此在讲述volatile关键之前,我们先来了解一...

Java 并发编程——线程池的使用

本文基于 JDK 1.6,在高版本 JDK 中源码有所出入。 一、Java中的ThreadPoolExecutor类java.uitl.concurrent.ThreadPoolExecutor 类是线程池中最核心的一个类,因此如果要透彻地了解 Java 的线程池,必须先了解这个类。下面我们来看一下 ThreadPoolExecutor 类的具体实现源码。 在 ThreadPoolExecut...

Java 设计模式——工厂模式

一、什么是工厂模式工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一,它提供了一种创建对象的最佳方式。 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。 优点: 一个调用者想创建一个对象,只要知道其名称就可以了。 扩展性高,如果想增加一个产品,只要扩展一个工厂类就可以。 屏蔽产品的具体实现,调用者只关心产...
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×