Java
文章平均质量分 90
讲不出 再见
这个作者很懒,什么都没留下…
展开
-
springboot Caffeine 详解(一篇就明白)
1、添加依赖首先考虑添加 maven 依赖。 <dependency> <groupId>com.github.ben-manes.caffeine</groupId> <artifactId>caffeine</artifactId> <version>2.6.2</version> </d原创 2021-07-23 12:51:44 · 13990 阅读 · 1 评论 -
Caffeine本地缓存详解(一篇就明白)
结论:Caffeine 是目前性能最好的本地缓存,因此,在考虑使用本地缓存时,直接选择 Caffeine 即可。先看一个小例子,明白如何创建一个 Caffeine 缓存实例。 Caffeine caffeine = Caffeine.newBuilder() .initialCapacity(3) .maximumSize(4); Cache cache = caffeine.build(); cache.原创 2021-07-21 20:46:04 · 20462 阅读 · 8 评论 -
StringUtils工具类的常用方法
boolean isEmpty(CharSequence cs) :判断字符串是否为 null 或者长度为 0,如果是,则返回 true。boolean isNotEmpty(CharSequence cs) :与 isEmpty 相反,实际上就是 ! isEmpty()。boolean isAnyEmpty(CharSequence… css) :字符串列表中如果存在某个字符串满足 true = isEmpty(),就返回 true,通俗讲,如果字符串列表中有一个字符串是 null 或者为空,则返回原创 2021-07-19 17:38:25 · 675 阅读 · 0 评论 -
Java Stream 集合的快速处理
stream 可理解为一种数据结构,用于方便地对集合进行处理,比如:将集合按照某个字段进行分组,将集合按照某个字段进行排序,将集合中的某个字段值单独拿出来作为一个新的集合,等等。一般步骤为:先将集合转为 Stream 结构,再调用 Stream 对象自身的方法对 Stream 进行处理。至于能对集合做哪些处理呢? 下面看看 Stream 接口的常用方法。1. collect 方法收集集合中的某些数据生成新的数据结构。<R, A> R collect(Collector<? super原创 2021-07-09 10:20:12 · 643 阅读 · 1 评论 -
ThreadLocal 类的解读与用法(一篇就明白)
ThreadLocal 是与线程关联的局部变量,凡是利用 ThreadLocal 存储和获取的数据都只与当前线程有关,与其它线程无关。看看原理图:原创 2021-06-11 17:41:10 · 292 阅读 · 0 评论 -
FileChannel 和 ByteBuffer 的使用
目录1、存入文件2、读取文件3. 直接将数据从一个文件通道写入另一个文件通道4. 直接内存1、存入文件下面给个例子,简单地把内容写入到指定文件中。public class FileChannelTest { public static void main(String[] args){ try { // 先把字符串内容写入source.txt文件中 String message = "hello, h.原创 2020-10-30 17:56:25 · 1539 阅读 · 0 评论 -
U盘方式搭建centos 8操作系统,搭建jdk环境
1、准备下载好 UltraISO.exe 可执行文件,绿色免安装的,可以去网盘里搜一搜。到官网下载 centos 8 的镜像文件 .iso 。2、将镜像文件刻录进U盘中先将U盘中的数据备份,因为要清空U盘。双击 UltralSO.exe 运行起来,最好把镜像的名字改一下,改得短一些,如下图,找到我们的 centos 镜像文件。然后点击“启动”-》写入硬盘映像,注意:硬盘驱动器是你的U盘,映像文件是你的镜像文件,先点击“格式化”,将U盘格式化,再点击“写入”,将镜像文件写入U盘中。原创 2020-10-25 22:20:54 · 340 阅读 · 0 评论 -
强引用、软引用、弱引用、虚引用、引用队列
引用强度从高到低的顺序:强引用、软引用、弱引用、虚引用。1、强引用强引用就是我们平常最多使用的引用方式,比如 Student a = new Student(); Student b = a; 这两种形式都是强引用。如果一个对象上有强引用,则垃圾回收器不会回收它,即便内存不足并抛出空间不足异常,也不会回收它。要让垃圾回收器回收它的话,就令强引用 = null,比如 a = null,等同于让一个对象(假设对象只有一个强引用)没有了任何引用。2、软引用 和 引用队列SoftRef...原创 2020-07-11 18:31:11 · 726 阅读 · 0 评论 -
java nio基本解读
1、Channel 接口Channel 接口是定义通道基本规范的,就2个方法,如下。 Channel 通道就相当于鼻子一样,nio 下面的输入输出都需要靠通道来进行,读取数据(吸气),需要通过嘴巴,写出数据(呼气),也是需要通过嘴巴。public interface Channel extends Closeable { // 查看通道是否开启 public boolean isOpen(); // 关闭通道 public void close() throws I原创 2020-10-28 17:12:52 · 261 阅读 · 0 评论 -
Future,FutureTask,线程池ThreadPoolExecutor
1、Future接口Future 是配合用Callable实现的线程的,Callable实现的线程可以有返回值,必须等到线程执行完了才会返回值,难道我们要一直等它执行完,岂不是阻塞浪费。因此才用Future来异步获取线程的返回值,不用等待。public interface Future<V> { /** * Attempts to cancel execution of this task. This attempt will * fail if the原创 2020-07-01 00:20:24 · 809 阅读 · 0 评论 -
JComboBox组件类的添加对象问题
JComboBox组件添加数据项的时候,addItem(Object o);此添加函数的参数是对象类型,那么一下情况就会出现问题。如果有一个类 class aaa{ public String id; public String name;} 创建一个对象 aaa duixiang=new aaa(); dui...原创 2018-03-11 17:14:01 · 1644 阅读 · 2 评论 -
java 反射机制
1、什么是反射?反射是将 java 类信息、方法信息 或者 字段信息包装为一个特定的实例化对象,通过这些对象内部方法的调用,可以达到使用java类功能的效果。下面用一个Parent类来说明反射如何使用。public class Parent { public static String city = "成都"; private int age = 23; protected int heveay = 56; public String name = "小明";原创 2020-06-29 17:33:07 · 129 阅读 · 0 评论 -
java 字节输入流/输出流
先序下面这张图是来自这篇博客https://blog.csdn.net/u010145219/article/details/89792877,我觉得梳理得很棒,所以借用一下。1、Bits 工具类Bits 是一个工具类,一般是供 java io 包下的类使用的,用于处理字节,因为输入输出流分为 字节流 和 字符流。接下来看看有哪些方法:1、static boolean getBoolean(byte[] b, int off):判断字节数组 b 的第 off 位置是否不为0,true表示原创 2020-06-16 15:00:26 · 967 阅读 · 0 评论 -
TimeUnit类源码详解(concurrent包下的时间工具类)
目录1、TimeUnit介绍与基本使用2、其它的操作方法2.1、timedWait方法2.2、timedJoin方法2.3、sleep方法2.4、int excessNanos(long d, long m) 方法1、TimeUnit介绍与基本使用TimeUnit类的作用:用于时间的换算,比如纳秒,微秒,毫秒,秒,分钟,小时,天等等的换算。下面看看TimeUnit的源码,提供了每个时间单位的换算方法。public enum TimeUnit { // .原创 2020-06-01 00:32:18 · 608 阅读 · 0 评论 -
java 数据结构大全(Map、List、Set、BlockingQueue、BlockingDueue)
1、集合框架下面这个图基本包括了java中核心的集合结构,个人觉得还可以。1.1、Iterable 接口这个接口是集合系列的根接口,都要实现它,因为 Iterable 接口里面有个iterator()方法,用于遍历集合里的每一个元素,所以记着:凡是集合类,都可以通过iterator来遍历。1.2、 Collection接口public interface Collection<E> extends Iterable<E> { // 返回集合的元素个数原创 2020-05-24 16:28:36 · 430 阅读 · 0 评论 -
java volatile关键字
volatile关键字属于多线程中的内容,用于修饰变量,被volatile修饰的变量在多线程环境下具有可见性,即保证变量的可见性,另外,还能禁止指令重排,但是无法保证线程安全。可见性:volatile修饰的变量对所有的线程都是可见的,一旦变量值修改了,所有线程都能看见。指令重排:java代码中,程序是一句一句的,有顺序,运行后会有个结果,但是经过编译之后,可能因为对java代码作了优化,程...原创 2020-02-09 16:41:07 · 162 阅读 · 0 评论 -
java 泛型
1. 泛型类、泛型方法类名<T>、类名<T, S> 泛型类的声明形式就是这样的,<>里面就是泛型类型变量,可以是一个,也可以是多个,用于代表任意一种类型。建议:泛型类型变量用大写形式,且比较短,不一定非是一个大写字母,但是建议最好这样遵循,在java库中,使用E表示集合的元素类型,K和V分别表示映射的键与值类型,T表示任意类型。 举个例子:pu...原创 2020-04-22 11:20:57 · 157 阅读 · 1 评论 -
java 集合系列、算法
目录1. 接口与实现分离2. 迭代器2. Collection接口3. 集合框架中的接口4. 详细的集合4.1 链表4.2 数组列表4.3 散列集4.4 树集4.5 队列、双端队列、优先级队列5. 映射5.1 映射的基本API5.2 映射视图5.3 弱散列映射5.4 链接散列集与映射5.5 标识散列映射6. 算法6.1 排序...原创 2020-02-05 16:40:30 · 491 阅读 · 0 评论 -
java 类的基本概念、继承、Object类、数组列表、对象包装器、可变数量参数
目录1. 类2. 包2.1 静态导入3. 继承3.1 禁止类扩展3.2 抽象类4. Object类5. 数组列表6. 对象包装器7. 可变数量参数1. 类依赖、聚合、继承;依赖:如果一个类的方法操纵了另一个类的对象,则该类依赖于另一个类。应该尽可能减少这种依赖,降低耦合度。聚合:一个类的对象包含着另一个类的对象,这种关系为聚合。继承...原创 2020-02-03 19:51:07 · 194 阅读 · 0 评论 -
java 输入输出、控制流程、大数值、数组
目录1. 标准输入2. 格式化输出3. 控制流程4. 大数值5. 数组5.1 foreach循环5.2 数组拷贝5.3 多维数组5.4Arrays类的常用方法1. 标准输入控制台输出很简单 System.out.println();控制台输入,需要利用Scanner类。 Scanner in = new Scanner(System.in);...原创 2020-02-02 10:51:37 · 257 阅读 · 0 评论 -
java 基本类型、变量、运算符、字符串
目录1. 整型2. 浮点类型3. char类型、Unicode编码、boolean类型4. 变量4.1 变量初始化4.2 常量5. 运算符5.1 数学函数5.2 数据类型转换5.3 位运算6. 字符串6.1 截取、拼接、判等、空串6.2 码点和代码单元6.2 构建字符串6.3 字符串String的一些常用APIjava一共有8中基本类...原创 2020-02-01 16:30:34 · 303 阅读 · 0 评论 -
java 自带的日志系统
目录1、全局日志记录器2、自定义日志记录器3、日志系统的配置文件4、日志处理器4.1 ConsoleHandler控制台处理器4.2 FileHandler文件处理器 和 SocketHandler套接字处理器5、日志过滤器6、格式化器java提供了日志的API,首先看一下这些API有哪些作用:1、打开、关闭日志,设置日志的记录级别;2、日志可以被定向到...原创 2020-01-16 17:18:08 · 1408 阅读 · 0 评论 -
java异常机制
目录1、自定义异常类2、try/catch 捕获异常2.1 一个异常2.2 多个异常2.3 catch抛出异常3. finally4. 带资源的try语句5. 断言java的异常对象都是Throwable类派生出的,又分为两类:Error和Exception,Error是java运行时系统内部错误或者资源耗尽错误,Exception则是java程序本身的错误。各...原创 2019-12-19 17:32:15 · 141 阅读 · 0 评论 -
Java基本类型的重载
class www{ void ff(int i){} void ff(float i){} void ff(longi){}}通过这个类,假如执行 www.ff(参数),如果参数是int、float、long型,那肯定能够准确找到相应的ff()方法。但是如果www.ff(char),参数为char类型,就会把char类型直接转换为int类型,调用f...原创 2019-03-27 20:15:15 · 541 阅读 · 0 评论 -
将Object对象(类的对象)当作String来用的情况
比如AAA aaa=new AAA();System.out.println(aaa); //此时,是将aaa当作字符串输出了,默认输出的是 : 类名+@+aaa对象的地址。对于这种情况,我们使用toString()方法来解决。Class AAA{ public String toString(){ return "hello"; } ...原创 2019-03-27 20:46:17 · 176 阅读 · 0 评论 -
enum枚举类型
public enum mm{ AA,BB,CC,DD}声明形式如上,编译器会自动地位枚举类型添加一些有用的特性。toString()方法、ordinal()方法、values()方法。toString()方法是在enum类型实例被当做String类处理的时候,发挥作用。ordinal()方法是将enum的几个常量定义了顺序,默认情况下(当常量没有被明确赋值时),AA...原创 2019-03-27 20:45:58 · 294 阅读 · 0 评论 -
static、final和static的作用与区别
static修饰符。可以用于修饰一个类的方法、变量,比如下面的www类,static修饰的方法称为静态方法,修饰的变量称为静态变量,静态方法和静态变量就直接属于类,而不属于该类的实例。class www{ public static int nn; public static void hehe();}比如,YYY类要调用静态方法和静态变量,由于静态是属于类...原创 2018-10-10 21:30:02 · 1685 阅读 · 0 评论 -
单例模式、工厂模式、代理模式、命令模式、策略模式、适配器模式
懒汉模式、饿汉模式。1、懒汉模式(多线程不安全)public class Singleton{ private static Singleton singleton=null; private Singleton(){} public static Singleton getInstace(){ if(singleton==null){ ...原创 2020-03-17 00:44:09 · 255 阅读 · 1 评论 -
从HttpServletRequest可以获取的信息
public void unAuth(HttpServletRequest request){ //请求使用的协议和版本 System.out.println("Protocol: " + request.getProtocol()); //返回当前所使用的协议:http ftp等 System.out.println("Sche...原创 2019-03-03 20:09:10 · 2315 阅读 · 0 评论 -
Timer 和 TimerTask 定时任务
TimerTask 类public abstract class TimerTask implements Runnable { /** * 控制访问timertask内部的锁 */ final Object lock = new Object(); /** * 初始状态为0,就是还没有被计划执行 */ in...原创 2019-03-18 14:19:50 · 296 阅读 · 0 评论 -
Arrays.copyOf()和System.arraycopy()区别:深拷贝 、浅拷贝
Arrays.copyOf()是创建一个新的数组(也就是分配了一个新的内存空间),然后调用System.arraycopy()复制内容,赋值给新数组,然后返回新数组。 所以个人觉得为何不直接使用后者呢?System.arraycopy()是个native方法,本地方法。试想:如果要赋值的数组存的基本数据类型(int、float、double等等),那么数组的每个元素存的就直接是数值,...原创 2019-03-30 20:44:45 · 2048 阅读 · 2 评论 -
json字符串、Java对象、对象list、Map 的相互转换
首先在pom.xml里添加依赖包<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.51</version></dependency>假设...原创 2019-08-14 09:56:02 · 307 阅读 · 0 评论 -
Serializable 、序列化、反序列化、冲突
概念序列化:将实体对象转换为字节序列。反序列化:将字节序列转换为实体对象。作用1、用于存储实体对象比如,我们要将对象数据持久化到磁盘、或者存储在缓存中,那么就需要先将实体对象序列化,转为字节序列,再将字节序列存储。当我们要读取对象的时候,将字节序列读取出,反序列化,转换为实体对象。2、用于网络传输比如,当一个Java端将实体对象网络传输到另一个Java端的时候,首先需要...原创 2019-09-06 13:43:54 · 946 阅读 · 0 评论 -
for的foreach用法,toCharArray(),range()
for循环一般用法,for(int i=0;i<length;i++)这种形式,然后通过数组或者链表的下标来获取数据,这种是直接用数组的数据。foreach用法,for(int i: int[])这种形式,将int数组的每个数赋值给int i,然后获取int i的值,没有直接用数组的数据。简单介绍:String类的toCharArray()方法 。“hello nihao”.t...原创 2018-10-11 10:51:33 · 558 阅读 · 0 评论