
个人笔记
ProMonkey_chen
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
解决Error response from daemon: conflict: unable to delete 7597f617968f (must be forced) - image is be
在删除REPOSITORY为none的docker镜像时,报如下Error错误:[root@VM-0-16-centos ~]# docker images | grep none | awk '{print $3}' | xargs docker rmiError response from daemon: conflict: unable to delete 7597f617968f (must be forced) - image is being used by stopped contai原创 2021-10-10 20:48:33 · 10278 阅读 · 0 评论 -
postgresql的CopyManager流式数据入库
maven依赖如下: <dependency> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> <version>42.2.5</version> </dependency> <dependen原创 2021-10-06 18:25:16 · 13980 阅读 · 0 评论 -
ForkJoinPool
ForkJoinPool是ExecutorService的实现类,也是一种特殊的线程池。它提供了如下两个常用的构造器:ForkJoinPool(int parallelism):创建一个包含parallelism个并行线程的ForkJoinPool。 ForkJoinPool():以Runtime.availableProcessors()方法的返回值作为parallelism参数来创建ForkJoinPool。在java8进一步丰富了ForkJoinPool的功能,为其增加了通用池功能。通过如下两原创 2021-08-11 15:39:13 · 4131 阅读 · 0 评论 -
WatchService监控文件变化
在NIO.2中的Path类提供了如下一个方法来监听文件系统的变化。register(WatchService watcher,WatchEvent.Kind<?>... events):用watcher监听path代表的目录下的文件变化。events参数指定要监听的类型事件。注册完成之后,接下来就可以调用WatchService的下面三个方法来获取被监听目录的文件变化事件:WatchKey poll(): 获取下一个WatchKey,如果没有WatchKey变化就立即返回null。原创 2021-08-09 15:14:47 · 716 阅读 · 0 评论 -
FileVisitor遍历文件和目录
主要是用Files的walkFileTree方法进行遍历,先看方法: walkFileTree(Path start, FileVisitor<? super Path> visitor):遍历start路径下的所有文件和子目录。 walkFileTree(Path start,Set<FileVisitOption> options,int maxDepth,FileVisitor<? super Path> visitor):与上一个方法功能类原创 2021-08-09 14:47:12 · 860 阅读 · 0 评论 -
Docker常用命令
总的来说分为以下几种: docker [run|start|stop|restart|kill|rm|pause|unpause] #容器生命周期管理 docker [ps|inspect|top|attach|events|logs|wait|export|port] #容器操作运维 docker [commit|cp|diff] #容器rootfs命令 doc...原创 2021-04-18 22:08:34 · 148 阅读 · 0 评论 -
java中lombok里的Builder注解
Lombok大家都知道,在使用POJO过程中,对于java对象的创建工作它可以更优雅,不需要写多余的重复的代码它给我们带来了很多便利,例如省下大量写get、set方法、构造器、equal、toString方法的时间。除此之外,通过@Builder注解,lombok还可以方便的时间建造者模式。 @Builder提供在设计数据实体时,对外保持private setter,...原创 2019-12-18 14:31:58 · 739 阅读 · 0 评论 -
ReentrantLock 可重入锁
可重入性是指线程在持有锁的情况下再次请求加锁,如果一个锁支持同一个线程的多次加锁,那么这个锁就是可重入的。比如 Java 语言里有个 ReentrantLock 就是可重入锁。如果Redis 分布式锁要支持可重入,需要对客户端的 set 方法进行包装,使用线程的 Threadlocal 变量存储当前持有锁的计数。代码如下:public class RedisWithRee...原创 2019-12-16 10:21:13 · 235 阅读 · 0 评论 -
双重检查锁为什么要使用volatile字段
双重检查锁的由来在单例模式中,有一个DCL(双重锁)的实现方式,在Java程序中,很多时候需要推迟一些高开销的对象初始化操作,并且只有在使用这些对象的时候才进行开始初始化。先来看下面实现单例的方式:非线性安全的延迟初始化对象方式:public class Test1 { private static SingletonInstance instance; priv...原创 2019-12-13 11:16:37 · 338 阅读 · 0 评论 -
简单了解 RPC 实现原理
之前一直在用rpc框架,内部原理今天学习了一下,原作者梁飞,在此记录下他非常简洁的rpc实现思路,通过该思路了解一下原理。 一个完整的RPC架构里面包含了四个核心的组件,分别是Client,Client Stub,Server以及Server Stub,这个Stub可以理解为存根。客户端(Client),服务的调用方。 客户端存根(Client Stub),存放服务端的地址...原创 2019-12-08 16:49:46 · 447 阅读 · 0 评论 -
git连接远程仓库时出现Warning: Permanently added the RSA host key for IP address ......
之前工作一直使用自己的电脑,连接公司的git仓库也是根据公司的地址设置的,但是今天本来想从官方仓库https://github.com/mybatis/mybatis-3Fork出属于自己的仓库,学习一下mybatis的源码的,结果遇到了问题。下面记录一下自己的解决方案,以mac电脑为例。解决办法: 1)根据提示的ip,将它添加到自己电脑到hosts文件中,...原创 2019-07-21 10:40:40 · 21986 阅读 · 1 评论 -
Apache Commons Chain 简单介绍
关于Commons Chain的介绍是之前在公司的博客中写的,但是现在想把它也保存在自己的博客中,就把它复制过来了,可以随时翻看,比较方便。一、Commons Chain 介绍Chain of Responsibility(CoR)模式也叫职责链模式或者职责连锁模式,是由GoF提出的23种软件设计模式的一种。Chain of Responsibility模式是行为模式之一...原创 2019-07-21 11:13:22 · 4985 阅读 · 0 评论 -
dubbo框架简单使用-服务提供者和消费者的创建和使用
为了查看,之前在公司博客写的,做一下连接,地址:dubbo框架简单使用-服务提供者和消费者的创建和使用原创 2019-07-21 11:17:33 · 239 阅读 · 0 评论 -
Mybatis整体架构
好久之前就想学习一下mybatis的源码,从中学习一下框架中用到的设计模式以及比较给力的代码写法,从官方仓库https://github.com/mybatis/mybatis-3Fork出属于自己的仓库,clone到本地,导入idea后的结构如下:一眼看去真的好多包啊,感觉接下来的学习一定会很有意思了。Mybatis的整体架构可以分为三层:1)基础支持层...原创 2019-07-21 17:32:05 · 270 阅读 · 0 评论 -
MAC版Sublime Text 解决 Unable to download XXX 问题
在使用sublime的时候我们常常需要安装一些package来辅助我们的使用,今天想搜索 diagram 安装插件,步骤如下:打开command-shift-p 找到 Package Control:Install Package 搜索 diagram但是呢,报错了,报错如下:Package ControlUnable to download Di...原创 2019-07-28 15:19:46 · 3952 阅读 · 1 评论 -
Integer的缓存策略理解
首先先看一个关于Integer的简单代码: public static void main(String[] args) { Integer int1 = 120; Integer int2 = 120; Integer int3 = 180; Integer int4 = 180; System.o...原创 2019-08-09 11:41:41 · 248 阅读 · 0 评论 -
ThreadLocal的理解与分析
ThreadLocal,是Java中一种特殊的变量。每一个线程都有一个独立的ThreadLocal变量。它也算是为避免花费相对较大的代价去创建对象来获取线程安全的好方法。我们知道,SimpleDateFormat不是线程安全的,我们可以用ThreadLocal让SimpleDateFormat变成线程安全的,这样也在一定程度上提高了效率。如下例子: private stat...原创 2019-08-10 23:11:32 · 233 阅读 · 0 评论 -
java时间复杂度计算
时间复杂度是指算法执行语句执行的次数。常见的时间复杂度有以下几种:描述 时间复杂度 常数阶 O(1) 对数阶 O(logn) 线性阶 O(n) 线性对数阶 O(nlogn) 平方阶 O(n²) 立方阶 O(n³) n次方阶 O(mⁿ) 指数阶 O(2ⁿ) 阶乘阶 O(n!) (1) O(1...原创 2019-09-03 22:19:29 · 6007 阅读 · 0 评论 -
HttpClient封装
import com.alibaba.dubbo.common.json.JSON;import org.apache.http.*;import org.apache.http.client.HttpRequestRetryHandler;import org.apache.http.client.config.RequestConfig;import org.apache.http....原创 2019-09-04 21:49:21 · 237 阅读 · 0 评论 -
为什么有关MongoDB采用B树索引,以及Mysql B+树做索引?
MySQL 中的许多概念在 MongoDB 中具有相近的类比。下表是一些常见概念:MySQL MongoDB 库 Database 库 Database 表 Table 集合 Collection 行 Row 文档 Document 列 Column 字段 Field joins 嵌入文档或者链接 1、B-树 ...原创 2019-09-06 15:09:08 · 1059 阅读 · 0 评论 -
Class.forName 和 ClassLoader 的区别
在java中Class.forName()和ClassLoader都可以对类进行加载,但是二者有存在一定等区别。ClassLoader就是遵循双亲委派模型最终调用启动类加载器的类加载器,实现的功能是“通过一个类的全限定名来获取描述此类的二进制字节流”,获取到二进制流后放到JVM中。Class.forName()方法实际上也是调用的CLassLoader来实现的。Class.for...原创 2019-09-08 16:27:16 · 237 阅读 · 0 评论 -
进程之间的通信
每个进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到,所以进程之间要交换数据必须通过内核,在内核中开辟一块缓冲区,进程A把数据从用户空间拷到内核缓冲区,进程B再从内核缓冲区把数据读走,内核提供的这种机制称为进程间通信(IPC,InterProcess Communication),或者概括一点讲就是是指在不同进程之间传播或交换信息。 进程间...转载 2019-09-19 16:29:30 · 1769 阅读 · 0 评论 -
synchronized的理解
synchronized是Java内置关键字,提供了一种独占加锁方式。它可以保证方法或者代码块在运行时,同一时刻只有一个方法可以进入到临界区,同时它还可以保证共享变量的内存可见性。但是,synchronized也存在一定的局限性。1)当线程尝试获取锁的时候,如果获取不到会一直阻塞。2)如果持有锁的线程进入阻塞或者休眠时,其他线程尝试获取锁时必须一直等待,除非当前持有锁的线程...原创 2019-07-19 17:34:20 · 368 阅读 · 0 评论 -
关于线程相关内容
一、程序、进程以及线程的理解程序:含有指令和数据的文件,被存储在磁盘或其他的数据存储设备中,也可以理解为程序是静态的代码。进程:是系统运行程序的基本单位,是程序的一次执行过程,因此进程是动态的。系统运行一个程序即是一个进程从创建,运行到消亡的过程。简单来说,一个进程就是一个执行中的程序,它在计算机中一个指令接着一个指令地执行着,同时,每个进程还占有某些系统资源如CPU时间,内存空间,文件,...原创 2019-07-19 11:52:45 · 234 阅读 · 0 评论 -
CPU飙升排查方法
如果CPU资源使用严重,可通过如下命令查询1)查询获取当前使用进程的pidps -ef | grep 进程名2) 打印当前java堆栈情况jstack -l pid> /temp/cpuDump.log3)查看当前进程消耗资源的线程pidtop -Hp pid4) 将线程Pid转...原创 2019-07-11 10:15:13 · 469 阅读 · 0 评论