
Java
文章平均质量分 51
java相关
星夜孤帆
人之有吾,当应披荆棘,斩鬼熊,成就一番大事
展开
-
IDEA查询依赖树
依赖原创 2023-03-06 16:11:13 · 178 阅读 · 0 评论 -
ComplatableFuture异步编排
CompletableFutrue原创 2023-03-01 18:19:25 · 366 阅读 · 0 评论 -
IDEA全局代码格式化
idea原创 2022-11-26 11:15:21 · 1755 阅读 · 0 评论 -
Git命令推送文件
1、首先Gitee先创建一个仓库2、假如要将下面文件夹上传到Git仓库第一步:在此文件夹下右键进入命令行第二步:设置Git提交用户名及emailgit config --global user.name "jak"git config --global user.email "974563666@qq.com"第三步:初始化Git,此时会生成.git文件夹git init第四步:添加文件,并提交文件git add git.javagit commit ..原创 2021-11-27 22:50:16 · 3101 阅读 · 0 评论 -
SpringBoot项目本地打jar包,测试自定义Starter
项目上需求,需要将Oss上传下载配置,定义在SpringBoot自定义Starter类里。定义完后,需要生成jar包放在远程仓库。但是,由于需要测试来回上传比较麻烦,所以,可以通过本地打成jar包。然后,其他服务直接引入这个jar包的版本就可以直接进行测试了。下面是具体的做法。一、打成jar包打成jar包的方式有很多种,下面介绍两种1.1 installmvn clean install通过以上命令会在项目根目录下的target目录下,生成,name.jar和n..原创 2021-10-15 09:25:46 · 777 阅读 · 0 评论 -
IO复用模型之select、poll与epoll
select,poll,epoll都是IO多路复用的机制。I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。但select,poll,epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己负责进行读写,也就是说这个读写过程是阻塞的,而异步I/O则无需自己负责进行读写,异步I/O的实现会负责把数据从内核拷贝到用户空间。深入理解select、poll和epoll及区别、select、poll、epol..原创 2021-10-13 01:49:43 · 776 阅读 · 0 评论 -
Java之IO模型
一、同步&异步和阻塞&非阻塞同步、异步:针对请求。阻塞、非阻塞:针对客户端。在一个网络请求中,客户端会发一个请求到服务端。1、客户端发了请求后,就一直等着服务端响应。客户端:阻塞。请求:同步。2、客户端发了请求后,就去干别的事情了。时不时的过来检查服务端是否给出了响应。客户端:非阻塞。请求:同步。3、换成异步请求。客户端发了请求后,就坐在椅子上,等着服务端返回响应。客户端:阻塞。请求异步。4、客户端发了请求后,就去干别的事情了。等到服务端给出响应后,再过来处理业原创 2021-09-16 22:33:05 · 784 阅读 · 0 评论 -
Java读取Excel文件
@Componentpublic class TestExcel { /** * 读取excel表格中特定的列 * * @param file * 文件 * @param index * 第index列(0开始) * @throws Exception */ public ArrayList<String> readColumn(File file,.原创 2021-07-05 12:40:45 · 530 阅读 · 0 评论 -
Java泛型
一、Java泛型视频教程原创 2021-07-02 09:45:58 · 191 阅读 · 0 评论 -
Java反射
一、反射概念反射:框架设计的灵魂框架:半成品软件。可以在框架的基础上进行软件开发,简化编码反射:将类的各个组成部分封装为其他对象,这就是反射机制好处∶1.可以在程序运行过程中,操作这些对象。2.可以解耦,提高程序的可扩展行。Java代码 在计算机中经历的阶段:三个阶段二、反射获取Class对象的三种方式获取class对象的方式:1.Class.forName("全类名"):将字节码文件加载进内存,返回class对象。* 多用于配置文件,将类名定义在配置文件.原创 2021-06-25 10:13:14 · 236 阅读 · 0 评论 -
Java代码块解析
前言在学习java过程中,有一个关键的知识点是绕不开的,那就是:类中成员的加载顺序。本文主要讲解的是静态代码块、构造代码块及构造方法的加载顺序。概念构造代码块:定义在类的成员位置上,使用"{}"括起来的代码。静态代码块:定义在类的成员位置上,使用"{}"括起来的代码,只是多了一个static修饰。构造方法:这个不多说了,码农们都知道。案例public class SuperTest { static { System.out.println("Supe原创 2021-06-24 18:00:38 · 408 阅读 · 0 评论 -
JDK&CGLIB动态代理源码解析
一、JDK动态代理jdk代理是基于接口的代理,所以被代理的对象必须是有接口实现的类,代理创建时通过Proxy.newProxyInstance实现的,这个方法有三个参数://指定要使用的类加载器ClassLoader loader,//被代理的类所实现的接口,增强接口的方法Class<?>[] interfaces,//方法处理器,会拦截所有方法,然后执行增强参数。InvocationHandler inoker参考博客、参考博客、参考博客、参考博客...原创 2021-06-01 20:19:28 · 584 阅读 · 1 评论 -
Java反射创建对象
一、通过类对象调用newInstance()方法,适用于无参构造方法1.1 类名.classpublic class Main { public static void main(String[] args) throws IllegalAccessException, InstantiationException { Class<Person> clazz = Person.class; Person person = clazz.new原创 2021-05-29 14:33:59 · 729 阅读 · 1 评论 -
ThreadLocal.withInitial
ThreadLocal的Lambda构造方式Java8中ThreadLocal对象提供了一个Lambda构造方式,实现了非常简洁的构造方法:withInitial。这个方法采用Lambda方式传入实现了 Supplier 函数接口的参数。银行存款实例@SuppressWarnings("all")public class Test { public static void main(String[] args) { safeDeposit();原创 2021-05-07 17:57:42 · 12136 阅读 · 1 评论 -
利用Stream给集合排序
public class StreamSortTest { @Data @AllArgsConstructor static class OrgAccountVo { private String userId; private String accountRole; private Date joinTime; } public static void main(String[] args) { .原创 2021-04-08 15:04:46 · 622 阅读 · 2 评论 -
Java数值操作
public static void main(String[] args) {// BigDecimal四舍五入 BigDecimal a = new BigDecimal("3.34543"); BigDecimal bigDecimal = a.setScale(2, BigDecimal.ROUND_HALF_UP); System.out.println(bigDecimal); //向下取整,保留2位小数 ...原创 2021-02-23 17:18:11 · 170 阅读 · 0 评论 -
OkHttp工具类
import okhttp3.Call;import okhttp3.Callback;import okhttp3.MediaType;import okhttp3.OkHttpClient;import okhttp3.Request;import okhttp3.RequestBody;import okhttp3.Response;import okhttp3.ResponseBody;import java.io.IOException;import java.util.It.原创 2021-02-18 16:50:59 · 1724 阅读 · 0 评论 -
Spring事务分析
一、事务分析1.1 情形一 /** * 第一种情况: 外层方法,内层方法都没事务,外层方法抛出异常; * 结果: 外层方法插入成功,报错以后,内层方法不执行,未插入成功; */ public void outerTransaction() { savePerson("outer"); arithmeticException(); innerTransaction(); } publ原创 2021-02-03 14:58:31 · 997 阅读 · 0 评论 -
正则表达式匹配县区
package com.hvly.springjp_1.com.hlvy.test; import java.util.ArrayList;import java.util.LinkedHashMap;import java.util.List;import java.util.Map;import java.util.regex.Matcher;import java.util.regex.Pattern; public class AddressResolutionUtil { .原创 2021-01-18 20:19:27 · 711 阅读 · 0 评论 -
Java内存模型(JMM)
一、JMMJMM(Java内存模型Java Memory Model,简称JMM)本身是一种抽象的概念并不真实存在,它描述的是一组规则或规范,通过这组规范定义了程序中各个变量(包括实例字段,静态字段和构成数组对象的元素)的访问方式。可见性/原子性/有序性JMM关于同步的规定:1. 线程解锁前,必须把共享变量的值刷新回主内存2. 线程加锁前,必须读取主内存的最新值到自己的工作内存3. 加锁解锁是同一把锁由于JVM运行程序的实体是线程,而每个线程创建时JVM都会为其创建一个.原创 2020-12-10 19:24:13 · 177 阅读 · 1 评论 -
Java死锁及排查分析
一、是什么1.1 死锁死锁是指两个或两个以上的进程,在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力干涉,那它们都将无法推进。如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入死锁。线程A持有锁A,试图获取锁B,线程B持有锁B又想获取锁A,结果,陷入了一种互相等待的局面。1.2 死锁产生的原因系统资源不足进程运行推进的顺序不合适资源分配不当二、代码示例class HoldLockThread imple原创 2020-12-08 18:06:28 · 268 阅读 · 0 评论 -
Synchronized和Lock的区别
一、原始构成synchronized是关键字属于JVM层面monitorenter(底层是通过monitor对象来完成,其实wait/notify等方法也依赖于monitor对象,只有在同步块或方法中才能调wait/notify等方法)monitorexitlock是具体类(java.util.concurrent.locks.Lock)是api层面的锁二、使用方法synchronized不需要用户去手动释放锁,当synchronized代码执行完后,系统会自动让线程释放对锁的占原创 2020-12-08 14:26:08 · 262 阅读 · 0 评论 -
Java锁机制
一、公平锁和非公平锁1.1 是什么1.1.1 公平锁是指多个线程按照申请锁的顺序来获取锁,类似排队打饭先来后到1.1.2 非公平锁是指多个线程获取锁的顺序并不是按照申请锁的顺序,有可能后申请的线程比先申请的线程优先获取到锁,在高并发情况下,有可能造成优先级反转或者饥饿现象(一直被别人加塞,后面的一直等待)通俗理解:排队打饭,正常情况下,先到先打,突然来了一个人,加塞到第一个人前面先打饭,这就不公平了吧1.2 区别公平锁Threads acuire a fair lock原创 2020-12-07 15:36:21 · 244 阅读 · 0 评论 -
Java值传递问题
一、值传递问题1.1 代码示例@Getter@Setter@AllArgsConstructor@NoArgsConstructorclass Person { private String personName;}public class TransferValue { public void changeValue1(int age) { age = 30; } public void changeValue2(Person pers原创 2020-12-07 12:10:01 · 249 阅读 · 0 评论 -
Java自定义注解
一、内置注解1.1 @Override定义在java.lang.Override中,此注释只适用于修辞方法,表示一个方法声明打算重写超类中的另一个方法声明。1.2 @Deprecated定义在java.lang.Deprecated中,此注释可以用于修辞方法,属性,类,表示不鼓励程序员使用这样的元素,通常是因为它很危险或者存在更好的选择。1.3 @SuppressWarnings定义在java.lang.SuppressWarnings中,用来抑制编译时的警告信息。与前两原创 2020-11-17 22:09:14 · 2491 阅读 · 1 评论 -
Stream流Collectors.toMap用法
package com.best.buc.verification.constant;import lombok.AllArgsConstructor;import lombok.Getter;import lombok.Setter;import java.util.ArrayList;import java.util.Collection;import java.util.List;import java.util.Map;import java.util.function.Fun.原创 2020-10-31 13:46:32 · 63530 阅读 · 8 评论 -
Spring事务
一、什么是事务1.1 事务的概念事务是数据库操作的最小工作单元,是作为单个逻辑工作单元执行的一系列操作;这些操作作为一个整体一起向系统提交,要么都执行、要么都不执行;事务是一组不可再分割的操作集合(工作逻辑单元);通俗的讲,就是为了达到某个目的,而做的一系列的操作,要么一起成功(事务提交),要么一起失败(事务回滚)。最常见的例子就是转账:小明给如花转账:开启事务-------从小明的账户扣除1000块 给如花的账户增加1000块事务提交-------上面例子的任何步骤原创 2020-09-28 18:56:52 · 7457 阅读 · 0 评论 -
Java浅拷贝与深拷贝
一、浅拷贝介绍对于引用数据类型,浅拷贝的hashcode值是相同的 。浅拷贝是使用默认的clone()方法来实现sheep = (Sheep) super.clone();二、深拷贝介绍复制对象的所有基本数据类型的成员变量值。 为所有引用数据类型的成员变量申请存储空间,并复制每个引用数据类型成员变量所引用的对象,直到该对象可达的所有对象。也就是说,对象进行深拷贝要对整个对象(包括对象的引用类型)进行拷贝。 深拷贝实现方式1:重写clone方法来实现深拷贝 深拷贝实现方式2:通原创 2020-09-21 11:16:48 · 499 阅读 · 0 评论 -
Volatile关键字
一、volatile是Java虚拟机提供的轻量级的同步机制轻量级的synchronize1.1 保证可见性1.2 不保证原子性1.3 禁止指令重排一、JMM(Java内存模型)1.1 可见性JMM(Java内存模型Java Memory Model,简称JMM)本身是一种抽象的概念并不真实存在,它描述的是一组规则或规范,通过这组规范定义了程序中各个变量(包括实例字段,静态字段和构成数组对象的元素)的访问方式。JMM关于同步的规定:线程解锁前,必须把共享变...原创 2020-08-23 12:50:35 · 527 阅读 · 0 评论 -
Java线程池
一、为什么用线程池,优势线程池做的工作主要是控制运行的线程的数量,处理过程中将任务放入队列,然后在线程创建后启动这些任务,如果线程数量超过了最大数量,超出数量的线程排队等候,等其它线程执行完毕,再从队列中取出任务来执行。它的主要特点为:线程复用,控制最大并发数,管理线程。降低资源消耗。通过重复利用已创建的线程,降低线程创建和销毁造成的消耗。 提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。 提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低原创 2020-08-21 16:59:27 · 503 阅读 · 0 评论 -
Java阻塞队列
一、什么是阻塞队列阻塞队列,顾名思义,首先它是一个队列,而一个阻塞队列在数据结构中所起的作用大致如下图所示:当阻塞队列是空时,从队列中获取元素的操作将会被阻塞。 当阻塞队列是满时,往队列里添加元素的操作将会被阻塞。试图从空的阻塞队列中获取元素的线程将会被阻塞,直到其他的线程往空的队列插入新的元素。 试图往已满的阻塞队列中添加新元素的线程同样也会被阻塞,直到其他的线程从列中移除一个或者多个元素或者完全清空队列后使队列重新变得空闲起来并后续新增。二、为什么用?有什么好处?在多线程领域:所原创 2020-08-21 10:15:22 · 3302 阅读 · 0 评论 -
Java创建线程的方式
三、实现Callable接口package com.jak.demo.Thread;import java.util.concurrent.Callable;import java.util.concurrent.FutureTask;/** * 一、创建执行线程的方式三、实现Callable接口。相较于实现Runnable接口的方式,方法可以有返回值,并且可以抛出异常。 * * 二、执行Callable方式,需要FutureTask实现类的支持,用于接收运算结果。FutureTask原创 2020-08-20 16:09:11 · 248 阅读 · 0 评论 -
Springboot中@Async多线程注解使用
https://blog.youkuaiyun.com/weixin_43168010/article/details/94436901原创 2020-08-19 19:11:46 · 430 阅读 · 0 评论 -
Java高版本报错
IDEA改变Java版本的几个地方原创 2020-06-05 10:24:00 · 399 阅读 · 0 评论 -
Java枚举类型简例
public enum SeansonEnum { SPRING, SUMMER, AUTUMN, WINTER}public enum mySeasonEnum { // 枚举类的实例对象必须在最前面先定义,而且必须每个实例对象都维护上chinese成员变量 SPRING("春天"), SUMMER("夏天"), AUMUTN("秋天"), WINTER("冬天"); private String chinese.原创 2020-05-21 15:34:12 · 245 阅读 · 0 评论 -
Java8之Steam API
package Java8;import java.util.*;import java.util.stream.Collectors;import java.util.stream.Stream;public class TestLambda { public static void main(String[] args) { ArrayList<Integer> list1 = new ArrayList<>(); list1.原创 2020-05-18 17:27:57 · 1776 阅读 · 0 评论 -
Java动态修改注解
import cn.afterturn.easypoi.excel.annotation.Excel;import io.swagger.annotations.ApiModelProperty;public class Animal { @ApiModelProperty(value = "年龄", position = 3)// @Export(name = "年龄"...原创 2020-04-26 09:50:49 · 5514 阅读 · 1 评论 -
用Postman导出Excel格式
用postman测试get/post导出Excel时,点击Send发现结果出现乱码,这个可以通过send and download下载出Excel,同样不影响我们观察结果。https://blog.youkuaiyun.com/sayWhat_sayHello/article/details/81027163https://blog.youkuaiyun.com/qq_40389276/article/det...原创 2020-04-24 17:19:27 · 3108 阅读 · 0 评论 -
JAVA对象转换为JSON字符串
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.58</version> </dependency>使用FastJson进...原创 2020-04-24 17:15:06 · 534 阅读 · 0 评论 -
IDEA导入项目,代码有红线
导入项目后,依赖载入了,仍然报错这里报错,要把下面几个去掉原创 2020-04-15 14:31:05 · 3468 阅读 · 0 评论