- 博客(169)
- 资源 (19)
- 收藏
- 关注
原创 mysql: show processlist 详解
最近排查一些MySQL的问题,会经常用到 show processlist,所以在这里把这个命令总结一下,做个备忘,以备不时只需。show processlist 是显示用户正在运行的线程,需要注意的是,除了 root 用户能看到所有正在运行的线程外,其他用户都只能看到自己正在运行的线程,看不到其它用户正在运行的线程。除非单独个这个用户赋予了PROCESS 权限root用户,可以看到全部线程运行情况单独给activiti用户授PROCESS权限,(授权后需要退出重新登录)show process
2022-05-26 15:51:33 3204
转载 mybatisPlus之自动填充工具MetaObjectHandler使用
一. 使用场景MetaObjectHandler是元对象字段填充控制器抽象类,实现公共字段自动写入。比如通常,我们在建表时,会设置几个公共字段:创建人(creator)、更新人(uptater)、创建时间(create_time)、更新时间(update_time)。每次将实体对象新增入库时,都要设置创建人和创建时间;每次更新实体对象时,都要设置更新人和更新时间;如果这是都放在业务代码中,很是繁琐,那么可不可以统一配置,自动帮我们添加这些属性呢?答案就是使用MetaObjectHandler。二.
2022-05-24 16:12:20 3923
原创 AES加密工具类
第一 种方法:AESUtilimport javax.crypto.*;import java.nio.charset.Charset;import java.security.InvalidKeyException;import java.security.NoSuchAlgorithmException;import java.security.SecureRandom;/** * AES加密工具类 */public class AESUtil { public stat
2022-05-16 14:50:06 949
转载 Idea的debug模式断点只能起作用一次的问题
那就是在第一次断点生效的时候,不要点击这个按钮(Alt+F9)继续运行后续代码。正确的做法是按F9键或F8,或点击这里
2022-05-12 21:31:51 2229
原创 JRebel 激活地址
url 地址: http://jrebel.qekang.com/f361d7c3-4364-4070-8eca-357717b3d745邮箱: 自己可用的地址
2022-05-11 21:38:29 943
原创 使用Java下载文件时获取原始文件名
URL url = new URL(urlString);// open the connectionURLConnection con = url.openConnection();// get and verify the header fieldString fieldValue = con.getHeaderField("Content-Disposition");if (fieldValue == null || ! fieldValue.contains("filename=
2022-05-10 09:52:44 3059
原创 分页工具类--内存分页
public class PageUtil { public static <T> List<T> memoryPaging(List<T> dataList, long pageNum, long pageSize) { if (CollectionUtils.isEmpty(dataList)){ return Collections.emptyList(); } if (pageNum
2022-02-07 15:15:30 246
转载 java比较器中的nullsFirst()与nullsLast()
一般的我们对List<Map<XX,XX>>类型排序可以这样写对Score进行排序:List<Map<String, Object>> resultlist = new ArrayList<>(); Map<String, Object> map1 = new HashMap<String, Object>(); map1.put("id", "1"); map1.put(
2021-07-27 11:19:21 329
原创 CopyOnWriteArrayList通过迭代 remove 会抛UnsupportedOperationException
使用CopyOnWriteArrayList删除元素 /** * 测试CopyOnWriteArrayList的remove()方法 */ public static void testCopyOnWriteArrayList() { CopyOnWriteArrayList<String> copyOnWriteArrayList = new CopyOnWriteArrayList<String>(); copyOnW
2021-07-27 10:03:02 997 1
原创 将一组数据平均分成n组
可参考这篇:https://www.codeleading.com/article/73564703440/package com.garfield.collectors.util;import java.util.ArrayList;import java.util.List;import java.util.Map;import java.util.stream.Collectors;import java.util.stream.Stream;import com.google.c
2021-07-20 14:32:40 1211
原创 正则表达式
用户身份证号的正则表达式(15位或者18位,最后一位可以为字母)String expression = "(^[0-9]{15}$)|([0-9]{17}([0-9]|X)$)";
2021-06-22 10:16:38 118
原创 List转Map 注意点
List<UserRsVO> userList = new ArrayList<>(); UserRsVO userRsVO = new UserRsVO(); userRsVO.setId("aa"); userRsVO.setHeadPic("aaaaaa"); UserRsVO userRsVO1 = new UserRsVO(); userRsVO1.setId("aa"); us
2021-05-13 21:20:18 141
原创 打印SQL的xml
xml文件<?xml version="1.0" encoding="UTF-8"?><configuration> <!-- 引用application.properties中的配置 --> <!-- <springProperty scope="context" name="serviceName" source="app.id" defaultValue="handover-nur-ewell"/> -->
2021-03-30 11:14:00 340
原创 项目中统一处理异常的方式
在spring 3.2中,新增了@ControllerAdvice 注解,可以用于定义@ExceptionHandler、@InitBinder、@ModelAttribute,并应用到所有@RequestMapping中。GlobalExceptionHandler 异常处理类import cc.ewell.dripping.product.vitalsigns.exception.BizException;import cc.ewell.dripping.product.vitalsigns.e
2021-02-22 13:43:25 452
原创 解决跨域问题
import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;import com.garfield.brush.interceptor.UserContextInterceptor;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.annotation.Configuratio
2021-02-02 10:16:03 112
原创 swagger的使用
1.引入 swagger 的maven 依赖 <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.8.0</version> </dependency>
2021-01-29 17:15:53 136
原创 每周总结 2021/1/18 - 2021/1/24
1. toUpperCase() 的用法把字符串都变成大写toLowerCase()把字符串都变成小写2. Oracle trunc() 函数的用法1.select trunc(sysdate) from dual --2013-01-06 今天的日期为2013-01-062.select trunc(sysdate, ‘mm’) from dual --2013-01-01 返回当月第一天.3.select trunc(sysdate,‘yy’) from dual --2013-01-01
2021-01-19 14:42:19 188
原创 docker 进入zookeeper容器内查看已注册的服务
docker ps ,获得容器 iddocker exec -it 容器id /bin/bashzkCli.sh 进入zookeeper的客户端ls /dubbo 查看节点( deleteall /dubbo 清空所有的节点)
2020-12-04 16:39:21 1163
转载 mybatis 自定义拦截器
拦截器注解mybatis自定义拦截器实现步骤:实现org.apache.ibatis.plugin.Interceptor接口。添加拦截器注解org.apache.ibatis.plugin.Intercepts。配置文件中添加拦截器。在mybatis中可被拦截的类型有四种(按照拦截顺序):Executor: 拦截执行器的方法。ParameterHandler: 拦截参数的处理。ResultHandler:拦截结果集的处理。StatementHandler: 拦截Sql语法.
2020-11-30 14:47:12 2686
原创 rabbitmq单机到集群完整搭建
RabbitMQ 安装和使用一、安装依赖环境1.在 http://www.rabbitmq.com/which-erlang.html 页面查看安装rabbitmq需要安装erlang对应的版本2.在 https://github.com/rabbitmq/erlang-rpm/releases 页面找到需要下载的erlang版本,erlang-*.centos.x86_64.rpm就是centos版本的。3.复制下载地址后,使用wget命令下载wget -P /home/download htt
2020-09-09 17:40:31 130
原创 activemq入门安装
演示环境: Centos7、jdk8、activemq5.15.8下载地址: http://activemq.apache.org/activemq-5158-release.html在liunx 系统下:wget https://archive.apache.org/dist/activemq/5.15.8/apache-activemq-5.15.8-bin.tar.gz解压: tar -zxvf apache-activemq-5.15.8-bin.tar.gz -C /var修改目录名称 m
2020-09-07 15:36:09 75
原创 Java类加载器
JVM三种预定义类型类加载器当JVM启动的时候,Java开始使用如下三种类型的类加载器:启动(Bootstrap)类加载器:启动类加载器是用本地代码实现的类加载器,它负责将JAVA_HOME/lib下面的核心类库或-Xbootclasspath选项指定的jar包等虚拟机识别的类库加载到内存中。由于启动类加载器涉及到虚拟机本地实现细节,开发者无法直接获取到启动类加载器的引用。具体可由启动类加载器加载到的路径可通过System.getProperty(“sun.boot.class.path”)查看。扩展
2020-09-01 14:24:10 88
原创 ForkJoinPool
ForkJoinPool 是Executor接口的实现,它专为可以递归分解成小块的工作而设计。意图梳理:ForkJoin 工作窃取的概念实现思路:并行的请求接口中数据:public class HttpRequestBo extends RecursiveTask<JSONObject> { private ArrayList<String> urlList; private int start; private int end; p
2020-08-31 16:09:44 156
原创 NIO
NIO的三个核心组件:Buffer 缓冲区Channel 通道Selector 选择器Buffer缓冲区Buffer 工作原理代码示例:public class BufferDemo { public static void main(String[] args) { // 构建一个byte字节缓冲区,容量是4 ByteBuffer byteBuffer = ByteBuffer.allocateDirect(4); // 默认写入
2020-08-26 11:24:12 104
原创 BIO
Socket 编程BIO (Blocked IO)BIO 阻塞IO的含 义:服务端代码:public class BIOServer { public static void main(String[] args) throws Exception { ServerSocket serverSocket = new ServerSocket(8080); System.out.println("服务器启动成功"); while (!ser
2020-08-25 15:25:53 102
转载 Java网络编程 -- BIO 阻塞式网络编程
阻塞IO的含义阻塞(blocking)IO :阻塞是指结果返回之前,线程会被挂起,函数只有在得到结果之后(或超时)才会返回非阻塞(non-blocking)IO :非阻塞和阻塞的概念相对应,指在不能立刻得到结果之前,该函数不会阻塞当前线程,而会立刻返回同步(synchronous)IO :应用阻塞在发送或接受数据的状态,直至数据成功传输(或返回失败),简单来说就是必须一件一件事做,等前一件做完了才能做下一件事异步(asynchronous)IO :应用发送或接受数据后立即返回,实际处理这个调用的程序
2020-08-24 15:14:53 176
转载 深入理解Java中的锁(二)
Lock包层次结构Lock 核心的api代码示例:public class GetLockDemo { // 公平锁 // static Lock lock =new ReentrantLock(true); // 非公平锁 static Lock lock = new ReentrantLock(); public static void main(String[] args) throws InterruptedException { // 主线程 拿到锁
2020-08-21 10:58:57 92
转载 深入理解Java中的锁(一)
Java中锁的概念自旋锁 : 是指当一个线程在获取锁的时候,如果锁已经被其他线程获取,那么该线程将循环等待,然后不断判断锁是否能够被成功获取,直到获取到锁才会退出循环。乐观锁 : 假定没有冲突,在修改数据时如果发现数据和之前获取的不一致,则读最新数据,修改后重试修改悲观锁 :假定会发生并发冲突,同步所有对数据的相关操作,从读数据就开始上锁独享锁(写) : 给资源加上写锁,拥有该锁的线程可以修改资源,其他线程不能再加锁(单写)共享锁(读) : 给资源加上读锁后只能读不能改,其他线程也只能加读锁,不能
2020-08-21 10:26:47 92
原创 线程安全之原子操作
原子操作原子性就是指该操作是不可再分的。不论是多核还是单核,具有原子性的量,同一时刻只能有一个线程来对它进行操作。原子操作可以是一个步骤,也可以是多个步骤,但是其顺序不可以被打乱,也不可以被切割而只执行其中的一部分(不可中断性)。将操作视作一个整体,资源在该次操作中保持一致,这是原子性的核心特征。首先我们来看一个非原子操作的示例:public class TestAtomic1 { /** * 两个线程都修改变量 count 的值,看最后count的值是否符合预期
2020-08-21 10:11:17 170
原创 线程池应用及实现原理剖析
为什么要用线程池线程是不是越多好?线程在Java中是一个对象, 更是操作系统的资源, 线程额创建和销毁都需要时间,如果 创建时间+销毁时间>执行任务时间 就很不合算Java对象占用堆内存,操作系统线程占用系统内存, 根据JVM规范,一个线程默认最大栈大小为1M, 这个栈空间是要从操作系统内存中分配的,线程过多会消耗很多的内存操作系统频繁切换线程上下文会影响性能线程池的推出就是为了控制线程数量线程池原理 - 概念线程池管理器:用于创建并管理线程池, 包括创建线程池, 销毁线程池, 添加新
2020-08-20 15:10:31 81
原创 线程封闭
多线程访问共享可变数据时,并不是所有的时候,都要用到共享数据, 所以线程封闭的概念就提了出来。 所谓线程封闭, 就是指数据都封闭在各自的线程之中, 不需要不需要同步。线程封闭的具体的实现主要有ThreadLocal和局部变量ThreadLocalThreadLocal是Java里一种特殊的变量,一个线程级别的变量,每个线程都有一个自己独立的ThreadLocal变量。它的竞争条件被彻底消除, 在并发模式下是绝对安全的。用法:ThreadLocal var = new ThreadLocal();会自
2020-08-20 14:55:40 167
原创 线程通信
线程通信的方式要想实现线程之间的协同, 如: 线程先后执行顺序, 获取某个线程的执行结果等, 涉及线程之间的相互通信, 分为下面四类文件共享网络共享变量共享JDK提供的线程协调API 细分为: suspend/resume , wait/notify, park/unpark文件共享变量共享:线程协作 - JDK API典型场景: 生产者 - 消费者模型 (线程阻塞, 线程唤醒)示例: 线程1区买包子 , 没有包子, 则不执行。 线程2生产包子, 通知线程1继续执行API - 被
2020-08-20 14:48:47 253
原创 线程中止
不正确的线程终止 - stop()stop: 终止线程, 并且清楚监视器锁的信息, 但是可能导致线程安全问题, JDK不建议使用【调用stop()之后,后面的代码不再执行】正确的线程终止 - interrupt()如果目标线程在调用Object class的wait方法, join方法或sleep方法时被阻塞, 那么interrupt会生效, 该线程的中断状态将被清除,抛出InterruptedException如果目标线程是被I/O或者NIO的Channel所阻塞, 同样I/O操作会被中断或者返回
2020-08-20 13:37:02 98
Kotlin 实战 (kotlin in action) 电子书
2017-11-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人