java
男人要霸气
这个作者很懒,什么都没留下…
展开
-
CompletableFuture异常处理
public class CompletableFutureDemo { public static void main(String[] args) { CompletableFuture.runAsync(() -> { calc(); }).whenComplete((v, e) -> { if (e == null) { System.out.println(" c原创 2022-04-22 20:50:30 · 2276 阅读 · 1 评论 -
Java 排查死锁的几种方式
文章目录死锁案例排查死锁的三种方式jstackjconsolevisualVM死锁案例public class Test001 { final static Object obj = new Object(); final static Object obj2 = new Object(); public static void main(String[] args) { ExecutorService executorService = Executors原创 2021-11-24 15:42:07 · 1946 阅读 · 0 评论 -
分布式事务解决方案
文章目录1 CAP 定理1.1 概念1.2 中间件实例2 BASE 理论3 XA方案3.1 程序理解3.3 适用场景4 TCC方案4.1 三阶段4.2 跨行转账案例4.3 适用场景4.4 方案示意图5 本地消息表5.1 简介5.2 优点5.3 缺陷6 可靠消息最终一致性方案6.1 简介7 最大努力通知方案7.1 简介8 总结1 CAP 定理1.1 概念CAP 理论在分布式系统中一致性:分布式环境下多个节点的数据是否强一致可用性:分布式服务能一直保证可用状态。当用户发出一个请求后,服务能在有限时间转载 2020-12-30 15:11:20 · 434 阅读 · 0 评论 -
跨域终极解决方案
文章目录方案一:注解方式方案二:全局配置方案一:注解方式在controller上加上注解@CrossOrigin如下:方案二:全局配置import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.web.cors.CorsConfiguration;import org.sp原创 2020-10-15 13:27:27 · 206 阅读 · 1 评论 -
wait()、notify()、notifyAll()正确使用姿势
首先,我们要知道wait()、notify()、notifyAll()都是Object的方法我们先想一个问题这三个方法真的在任何地方都能使用么?其实不是的。他们都有一个前提:在拿到锁的情况下,才能使用。我们就直接用代码来看下 /** * 没拿到锁的情况下,不管是调用wait()、notify()、notifyAll()都会抛出IllegalMonitorStateException异常 * * @throws InterruptedException原创 2020-08-11 15:32:41 · 529 阅读 · 0 评论 -
Enum 枚举简单用法一看就会
1.先创建个枚举类import lombok.Getter;@Getterpublic enum ResultCode { //格式:A(),B(),C(); 末尾用分号 RESULT_CODE_1(200, "操作成功"), RESULT_CODE_2(200, "操作失败"); private int status; private String message; ResultCode(int status, String message) {原创 2020-06-01 16:10:39 · 613 阅读 · 0 评论 -
【文件下载】Java下载文件的几种方式
1.以流的方式下载public HttpServletResponse download(String path, HttpServletResponse response) { try { // path是指欲下载的文件的路径。 File file = new File(path); // 取得文件名。 String filename = file.getName(); /转载 2020-05-26 13:13:17 · 673 阅读 · 0 评论 -
jstat命令详解---JVM的统计监测工具
文章目录一:jstat命令简介二:使用详情列表类加载统计编译统计垃圾回收统计堆内存统计新生代垃圾回收统计新生代内存统计老年代垃圾回收统计老年代内存统计JDK7 下 永久代空间统计JDK8 下 元数据空间统计总结垃圾回收统计JVM编译方法统计一:jstat命令简介jstat命令可以查看堆内存各部分的使用量,以及加载类的数量。命令的格式如下:jstat [-命令选项] [vmid] [间隔时间/毫秒] [查询次数]二:使用详情列表【以下的统计空间单位,未标明的 都是KB】类加载统计命令:转载 2020-05-15 10:24:39 · 809 阅读 · 0 评论 -
(史上最全)Java性能调优工具,你都知道哪些?
文章目录一、JDK指令jps命令jstat命令jstack命令jhat命令jinfo命令jmap命令二:Linux指令三:工具实时分析工具JconsoleVisualVM离线分析工具四:诊断问题运行时问题-软件角度运行时问题-硬件角度一、JDK指令jps命令jps用于列出Java的进程,jps还可以增加参数-m用于输出传递给Java进程的参数-l用于输出主函数的完整路径-v可以用于显示传递给jvm的参数jstat命令jstat可以查看堆内存的使用情况以及gc情况,功能强大原创 2020-05-14 17:47:56 · 918 阅读 · 0 评论 -
Java 实现异步的两种方式(仅思路)
同步,是 Java 代码默认的处理方式,那么如何实现异步呢?下面提供两种方式调用方创建一个子线程,在子线程中执行方法调用,这种调用我们称为异步调用;方法实现的时候,创建一个新的线程执行主要逻辑,主线程直接 return,这种方法我们一般称为异步方法。...原创 2020-05-09 10:14:09 · 3455 阅读 · 0 评论 -
死锁 活锁 饥饿 出现原因及解决方案
文章目录死锁概念死锁示例为什么会出现死锁呢?如何解决死锁呢?解决死锁代码实现活锁概念活锁示例:如何解决活锁呢?饥饿概念如何解决饥饿呢?死锁概念死锁:一组互相竞争资源的线程因互相等待,导致“永久”阻塞的现象。说白了就是:两个线程互相持有对方所需的资源,互不释放且互相等待死锁示例/** * 死锁 * * @author m */public class Account {...原创 2020-04-29 18:09:33 · 2091 阅读 · 1 评论 -
JDK 动态代理详解
文章目录什么是动态代理如何使用动态代理动态代理使用场景实例什么是动态代理在不改变原始类代码的情况下,实现原始类功能的增强动态代理是java中23设计模式里的一种,也称代理模式,也是开发中经常用到的设计模式。如何使用动态代理Proxy类是jdk提供的代理类,基于接口的,常用newProxyInstance方法如下:public static Object newProxyInstan...原创 2020-04-27 17:58:17 · 239 阅读 · 0 评论 -
什么是CPU密集型、IO密集型?
CPU密集型(CPU-bound)CPU密集型也叫计算密集型,指的是系统的硬盘、内存性能相对CPU要好很多,此时,系统运作大部分的状况是CPU Loading 100%,CPU要读/写I/O(硬盘/内存),I/O在很短的时间就可以完成,而CPU还有许多运算要处理,CPU Loading很高。在多重程序系统中,大部份时间用来做计算、逻辑判断等CPU动作的程序称之CPU bound。例如一个计算圆...转载 2020-04-24 16:16:35 · 160 阅读 · 0 评论 -
一文搞懂 ThreadLocal 原理
介绍当多线程访问共享可变数据时,涉及到线程间同步的问题,并不是所有时候,都要用到共享数据,所以就需要线程封闭出场了。数据都被封闭在各自的线程之中,就不需要同步,这种通过将数据封闭在线程中而避免使用同步的技术称为线程封闭。本文主要介绍线程封闭中的其中一种体现:ThreadLocal,将会介绍什么是 ThreadLocal;从 ThreadLocal 源码角度分析,最后介绍 ThreadLoca...转载 2020-04-21 14:33:19 · 356 阅读 · 0 评论 -
省市区表及数据
文章目录表结构省市区JSON数据导入数据库省市区表结构及数据表结构CREATE TABLE `region` ( `id` varchar(64) NOT NULL COMMENT '行政地区编号', `region_name` varchar(255) NOT NULL COMMENT '地区名称', `parent_id` varchar(64) DEFAULT NULL CO...原创 2020-03-25 17:30:59 · 3860 阅读 · 3 评论 -
java拦截器看这一篇文章足够了!
Filter拦截器SpringMVC拦截器Spring的AOP原创 2020-03-20 10:54:42 · 214 阅读 · 0 评论 -
net.sf.jsqlparser.parser.ParseException: Encountered 。。。
net.sf.jsqlparser.parser.ParseException: Encountered " <S_LONG> "1 "" at line 1, column 52.Was expecting one of: "+" ... "+" ... "+" ... "+" ... "+" ... "+" ... "+" ...转载 2020-03-19 17:27:23 · 2249 阅读 · 0 评论 -
一道面试题快速梳理二叉树知识
题目如下:大家先简单思考一下已知二叉树的前序序列为BCDEFAG,中序序列为DCFAEGB,请问后序序列为___A. DAFEGCBB. DAEGFCBC. DAFGECBD. DAEFGCB思路:通过已知前序序列和中序序列,画出二叉树,即可得出后序序列。这里咱们先提一下:前序、中序、后序的区别,方便分析。前序:根节点=》左节点=》右节点中序:左节点=》根节点=》右节点...原创 2020-03-09 16:32:29 · 354 阅读 · 0 评论 -
深入浅出 Java 8 Lambda 表达式
Java 是一流的面向对象语言,除了部分简单数据类型,Java 中的一切都是对象,即使数组也是一种对象,每个类创建的实例也是对象。在 Java 中定义的函数或方法不可能完全独立,也不能将方法作为参数或返回一个方法给实例。从 Swing 开始,我们总是通过匿名类给方法传递函数功能,以下是旧版的事件监听代码:someObject.addMouseListener(new MouseAdapter(...转载 2020-03-05 18:02:27 · 333 阅读 · 0 评论 -
JAVA 8 '::' 关键字,带你深入了解它!
::关键字提供了四种语法,可以直接引用已有Java类或对象(实例)的方法或构造器。语法种类示例引用静态方法ContainingClass::staticMethodName引用特定对象的实例方法containingObject::instanceMethodName引用特定类型的任意对象的实例方法ContainingType::methodName引用...翻译 2020-03-04 16:22:08 · 9293 阅读 · 14 评论 -
没人知道的Logger使用小技巧
今天介绍的主角是Logger了,当然听名字就知道是记录日志的,那么怎么用呢?接下来就不废话了,继续往下看。Logger的使用Logger是 org.slf4j包下的,是一个接口。实例化需要借助LoggerFactory,下面看下具体的示例。package com.take.log;import org.slf4j.Logger;import org.slf4j.LoggerFacto...原创 2020-03-03 15:17:26 · 504 阅读 · 0 评论 -
位运算符
简单来说,<<n 左移相当于乘2的n次方,>>n(>>>n) 右移相当于除2的n次方,然后这个>>>与>>的区别是对负数的处理上转载 2020-03-02 14:30:21 · 110 阅读 · 0 评论 -
Filter过滤器
1.创建项目2.点击Next3.选择web4.pom如下:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xs...原创 2020-02-17 17:22:17 · 240 阅读 · 0 评论 -
java 三种批量插入效率比较
批量插入传统循环插入Mybatis foreach插入jdbc批量插入1、传统循环插入,代码如下 long time = System.currentTimeMillis(); for (int i = 0; i < 200000; i++) { studentMapper.batchInsert("ORDER_NO:" + i); ...原创 2020-01-19 18:22:49 · 7823 阅读 · 1 评论 -
java 递归菜单树(详细)
1.表结构SET FOREIGN_KEY_CHECKS=0;-- ------------------------------ Table structure for menu-- ----------------------------DROP TABLE IF EXISTS `menu`;CREATE TABLE `menu` ( `id` int(11) NOT NULL ...原创 2019-12-16 16:09:02 · 1370 阅读 · 0 评论 -
java TreeUtil菜单递归工具类
package com.admin.manager.storeService.util;import com.admin.manager.storeService.entity.Menu;import java.util.ArrayList;import java.util.List;/** * @author m * @date 2019/12/16 */public cl...原创 2019-12-16 15:57:41 · 5783 阅读 · 8 评论 -
JWT实现Token认证(token续命)
1.什么是jwt双方之间传递安全信息的简洁的、URL安全的表述性声明规范。JWT作为一个开放的标准(RFC 7519),定义了一种简洁的,自包含的方法用于通信双方之间以Json对象的形式安全的传递信息。简洁(Compact): 可以通过URL,POST参数或者在HTTP header发送,因为数据量小,传输速度也很快 自包含(Self-contained):负载中包含了所有用户所需要的信息,避免...翻译 2019-12-13 10:21:22 · 3113 阅读 · 2 评论 -
UUIDUtil—Java工具类
import java.util.Date;import java.util.UUID;public class UUIDUtil { /** * 生成唯一ID,UUID在一定程度上可能会重复的,所以拼接了时间戳,保证唯一 * * @return */ public static String generateUUId() { ...原创 2019-12-12 15:45:15 · 857 阅读 · 2 评论 -
java 复制文件
import java.io.*;public class CopyController { public static void copy(String oldFile, String newFile) { FileInputStream is = null; FileOutputStream os = null; try { ...原创 2019-12-06 11:53:43 · 92 阅读 · 0 评论 -
java使用反射获取泛型信息
ParameterizedType就是参数化类型的意思解释声明类型中带有“<>”的都是参数化类型,比如List<Integer>,Map<String,BigDecimal>getActualTypeArguments()返回Type[],即“<>”里的参数,比如Map<String,BigDecimal>getRawType()...原创 2019-11-28 17:01:51 · 483 阅读 · 0 评论 -
Java高级特性——反射
概述定义JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。用途在日常的第三方应用开发过程中,经常会遇到某个类的某个成员变量、方法或是属性是私有的或是只对系统应用开放,这时候就可以利用Java的反射机制通过反射来获取所需的私有成员或是方法。当然...转载 2019-11-28 15:17:14 · 104 阅读 · 0 评论 -
springboot实现excel文件下载的功能
场景:由于需要使用poi进行数据的导入和导出,在导入的时候excel的格式是很严格的,所以我们需要提供一个excel模板让运维人员添加数据然后再上传,这样格式就不会有问题了,虽然功能简单,但是copy了很多代码都是有问题的,最后好不容易找到个可以用的,分享一下实现方法:1.文件位置位于resoures文件夹下2.导包import javax.servlet.http.HttpServle...翻译 2019-11-19 18:16:37 · 1664 阅读 · 0 评论 -
POI导入导出工具类
导入POI依赖 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.17</version> <...翻译 2019-11-21 10:08:10 · 1089 阅读 · 1 评论 -
Java中List集合去除重复数据
直接上代码list.stream().distinct().collect(Collectors.toList());看下面的例子: public static void main(String[] args) { ArrayList<Integer> list = new ArrayList<>(); for (int i = 0;...原创 2019-11-13 14:38:13 · 394 阅读 · 0 评论 -
Java 获取两个日期之间的所有日期(工具类)
1.获取两个日期之间的所有日期列表import java.text.DateFormat;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Calendar;import java.util.Date;import ...翻译 2019-11-07 13:51:25 · 4325 阅读 · 0 评论 -
java.lang.OutOfMemoryError: Java heap space
先研究java为什么会报java.lang.OutOfMemoryError: Java heap space错误呢?是由谁抛出的呢?Java.lang.OutOfMemoryError:java heap space :说明java虚拟机内存不够。示例: public static void main(String[] args) { String str = "H...原创 2019-09-14 00:18:47 · 17866 阅读 · 0 评论 -
java 获取json字符串中key对应的值
本文为转载,原文为:https://blog.csdn.net/qq_37129976/article/details/80820539用到了Gson的JsonParsermaven项目引入&lt;dependency&gt; &lt;groupId&gt;com.google.code.gson&lt;/groupId&gt; &lt;artifactId&转载 2019-03-08 18:22:12 · 24742 阅读 · 0 评论 -
java使用Base64编码
package com.weiwen.provider.utils;import java.io.IOException;import com.alibaba.fastjson.JSON;import lombok.extern.slf4j.Slf4j;import org.junit.Test;import sun.misc.BASE64Encoder;import sun.mi...原创 2019-03-06 18:59:33 · 2936 阅读 · 2 评论 -
BigDecimal 比较大小
本文为转载,原文:https://blog.csdn.net/qq_25170493/article/details/82773949BigDecimal a = new BigDecimal (101);BigDecimal b = new BigDecimal (111); //使用compareTo方法比较//注意:a、b均不能为null,否则会报空指针if(a.compareT...转载 2019-03-18 13:11:23 · 1532 阅读 · 0 评论 -
JAVA工具类(10)--- 随机生成字符串工具类randomUtil
本文为转载,原文为:https://blog.csdn.net/lovoo/article/details/77918239package com.gcloud.common;import java.util.Random;/** * 随机数、随即字符串工具 * Created by charlin on 2017/9/9. */public class RandomUtil {...转载 2019-03-28 10:57:41 · 746 阅读 · 0 评论