全部系列

Java 与并发

编程语言 · 共 18 篇 · 按发布时间正序排列

线程池、并发、设计模式到加密:Java 核心知识沉淀

线程池 Executors
Code

线程池 Executors

线程池 Executors Executor框架是java中的线程池实现。Executor是最顶层的接口定义,它的子类和实现主要包括ExecutorService,ScheduledExecutorService,ThreadPoolExecutor,ScheduledThreadPoolExecutor,ForkJoinPool等。其结构如下图所示:Executor:Executor是一个接口,

1.4k 1
设计模式的六大原则和23种设计模式
Code

设计模式的六大原则和23种设计模式

设计模式的六大原则和23种设计模式1、前言以前看过不少设计模式的书籍:《设计模式之禅》、《大话设计模式》等,内容到不难,但是由于缺乏实践,很容易就忘了。工作后,发现很多时候可以通过巧妙的设计开解决一些编码难题。优秀的编码设计可以省下不少功夫,工预善其事,必先利其器。为此重新拾起设计模式,为了提高编程水平。提高思维能力、编程能力和设计能力。 使程序设计更加标准化、代码编制更加工程化,使软件开发效率大

2.3k
Code

Java四种引用类型

Java四种引用类型每种编程语言都有自己操作内存中元素的方式,例如在 C 和 C++ 里是通过指针,而在 Java 中则是通过“引用”。在 Java 中一切都被视为了对象,但是我们操作的标识符实际上是对象的一个引用(reference)。在 JDK1.2 之前,Java中的定义很传统:如果 reference 类型的数据中存储的数值代表的是另外一块内存的起始地址,就称为这块内存代表着一个引用。Ja

2.1k
AndroidStudio中使用Java8
Code

AndroidStudio中使用Java8

AndroidStudio使用java8为了在开发中使用Java新特性,诸如Lambda表达式、函数引用,比如最新的一些依赖库都用到了Lambda语法,如果不修改Java编译的选项就无法成功编译。需要在工程的build.gradle文件中添加如下配置:· 如果只使用Java8中的lambda表达式及函数引用,重复注解功能,对项目的编译版本是没有任何限制的· 使用Java8的Stream流,Func

1.9k
MD5加密
Code

MD5加密

MD5加密1、什么是MD5MD5全名: Message Digest Algorithm MD5(中文名为消息摘要算法第五版)。MD5算法具有如下特点:压缩性:任意长度的数据,算出的MD5值长度都是固定的(16位或32位)。容易计算:从原数据计算出MD5值很容易。抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。强抗碰撞:已知原数据和其MD5值,想找到一个具有相同M

2.0k
Code

Java日期:Date、Calendar及DateFormat格式化

Java日期:Date、Calendar及DateFormat格式化显示、记录日期在开发中非常常见,Java提供了基础的日期类Date。1、Date1.1、Date构造函数 ①默认构造函数:默认当前时间作为参数,调用第②个构造函数。 ②以计算机“时间远点”的起始毫秒数作为参数。 ③年/月/日 已废弃 ④年/月/日/时/分 已废弃 ⑤年/月/日/时/分/秒 已废弃 ⑥字符串形式表示日期 已废弃1.2

2.2k
Android

Thread和ThreadLocal

Thread和ThreadLocal Handler获取当前线程的 Looper 对象,而每一个线程的 Looper 是不一样。每一个线程都有一个 Looper 对象,使用 ThradLocal 去保存和获取当前线程的 Looper 是最佳的选择。Android中Handler、Looper消息机制得益于巧妙的运用了ThreadLocal的特性,关于Handler机制参考Handler、Loope

2.1k
OkHttp线程池和连接池
开源

OkHttp线程池和连接池

OkHttp线程池和连接池了解了OkHttp的网络请求流程以及拦截器实现原理,再关注OkHttp中两个重要的:OkHttp的线程池和连接池。1、OkHttp线程池在OkHttp网络请求流程一文中,我们分析了OkHttp异步和同步请求流程。请求最后都在Dispatcher中分发调度处理,最后被ExecutorService执行。1.1、DispatcherDispatcher中执行任务的执行器是ex

5.7k
Java集合框架
Code

Java集合框架

Java集合框架集合框架是一个用来代表和操纵集合的统一架构。Java集合框架主要包括两种类型的容器:一种是集合(Collection),存储一个元素集合;另一种是图(Map),存储键/值对映射。Java集合类主要由两个根接口Collection和Map派生出来的。如下图所示:Collection 接口下面又有三种子类型:List、Set 和 Queue,因此Java集合一共可分成List、Set、

1.5k
Android

Base64与图片相互转换

Base64与图片相互转换在Android开发中,我们经常需要用到图片转换为Base64字符串、Base64字符串下载转为图片的场景,以便在网络传输或保存到本地数据库中。Base64是一种用于传输8位字节码的编码方式,通过将二进制数据编码成文本格式,方便传输和存储。1、图片转Base64以Bitmap为例,Android中的大都图片都借助Bitmap来操作。将Bitmap转成Base64字符串:首

2.2k
分享

Inconsistent JVM-target compatibility detected

Inconsistent JVM-target compatibility detected日常遇到各种问题,今天升级了组件遇到AS报错:Inconsistent JVM-target compatibility detected for tasks 'compileDebugJavaWithJavac' (11) and 'kaptGenerateStubsDebugKotlin' (1.8).

449
SecureRandom 与 Random 的区别与用法详解
Code

SecureRandom 与 Random 的区别与用法详解

SecureRandom 与 Random 的区别与用法详解在 Java 开发中,我们经常需要生成随机数,而 Random 和 SecureRandom 是两个常用的随机数生成类。虽然它们都能生成随机数,但在安全性、性能和使用场景上存在显著差异。本文将详细解析两者的区别与用法,帮助你在实际开发中做出正确的选择。1、基本概念与核心区别1.1、Random 类java.util.Random 是 Ja

701
Code

Java CompletableFuture:异步编程的利器

Java CompletableFuture:异步编程的利器1、CompletableFuture 概述CompletableFuture 是 Java 8 引入的一个强大的异步编程工具,位于 java.util.concurrent 包中。它实现了 Future 接口,并提供了丰富的异步操作方法,使得异步编程变得更加简单和优雅。核心特性: - 异步执行任务,不阻塞主线程 - 支持链式调用,代码更

598
Code

Java 三方库 Guava 详解

Java 三方库 Guava 详解1、Guava 概述Guava 是 Google 开发的 Java 核心库,提供了大量实用的工具类和扩展,旨在提高 Java 开发效率和代码质量。Guava 包含了集合、缓存、并发、字符串处理、函数式编程等多个模块,是 Java 开发者必备的工具库之一。核心模块: - com.google.common.collect:集合工具类 - com.google.com

588
Code

​Java File 类核心用法详解

Java File 类核心用法详解1、File 类概述File 类是 Java 中用于处理文件和目录路径名的核心类,位于 java.io 包中。它以抽象的方式代表文件名和目录路径名,主要用于文件和目录的创建、查找、删除等操作。核心概念: - File 对象代表磁盘中实际存在的文件和目录 - File 类不能访问文件内容本身,需要使用输入/输出流 - File 类提供了跨平台的文件操作方法构造方法:

570
​Java Joda-Time 库详解
Code

​Java Joda-Time 库详解

Java Joda-Time 库详解1、Joda-Time 概述Joda-Time 是 Java 中处理日期和时间的优秀库,它提供了比标准 Java Date/Time API 更强大、更灵活的功能。Joda-Time 由 Stephen Colebourne 创建,旨在解决 Java 标准日期时间 API 的不足,是 Java 8 之前处理日期时间的首选库。核心特点: - 提供丰富的日期时间操作

588
Java中的Optional:优雅处理空值的利器
Code

Java中的Optional:优雅处理空值的利器

Java中的Optional:优雅处理空值的利器在 Java 8 之前,处理 null 值是一个常见的问题,容易导致 NullPointerException。Java 8 引入了 Optional 类,为我们提供了一种更加优雅、安全的方式来处理可能为 null 的值。本文将详细介绍 Optional 的使用方法、最佳实践以及常见误区。1、Optional 的基本概念1.1、什么是 Optiona

455