自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(69)
  • 收藏
  • 关注

原创 解决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 10113

原创 postgresql的CopyManager流式数据入库

maven依赖如下: <dependency> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> <version>42.2.5</version> </dependency> <dependen

2021-10-06 18:25:16 12784

原创 ForkJoinPool

ForkJoinPool是ExecutorService的实现类,也是一种特殊的线程池。它提供了如下两个常用的构造器:ForkJoinPool(int parallelism):创建一个包含parallelism个并行线程的ForkJoinPool。 ForkJoinPool():以Runtime.availableProcessors()方法的返回值作为parallelism参数来创建ForkJoinPool。在java8进一步丰富了ForkJoinPool的功能,为其增加了通用池功能。通过如下两

2021-08-11 15:39:13 3917

原创 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 516

原创 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 731

原创 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 102

原创 java中lombok里的Builder注解

Lombok大家都知道,在使用POJO过程中,对于java对象的创建工作它可以更优雅,不需要写多余的重复的代码它给我们带来了很多便利,例如省下大量写get、set方法、构造器、equal、toString方法的时间。除此之外,通过@Builder注解,lombok还可以方便的时间建造者模式。 @Builder提供在设计数据实体时,对外保持private setter,...

2019-12-18 14:31:58 671

原创 ReentrantLock 可重入锁

可重入性是指线程在持有锁的情况下再次请求加锁,如果一个锁支持同一个线程的多次加锁,那么这个锁就是可重入的。比如 Java 语言里有个 ReentrantLock 就是可重入锁。如果Redis 分布式锁要支持可重入,需要对客户端的 set 方法进行包装,使用线程的 Threadlocal 变量存储当前持有锁的计数。代码如下:public class RedisWithRee...

2019-12-16 10:21:13 157

原创 设计模式之工厂模式

一、定义工厂方法(FactoryMethod)模式的定义:定义一个创建产品对象的工厂接口,将产品对象的实际创建工作推迟到具体子工厂类当中。这满足创建型模式中所要求的“创建与使用相分离”的特点。应用实例:1、您需要一辆汽车,可以直接从工厂里面提货,而不用去管这辆汽车是怎么做出来的,以及这个汽车里面的具体实现。 2、Hibernate 换数据库只需换方言和驱动就可以。二、优缺点优点:...

2019-12-13 16:55:22 137

原创 双重检查锁为什么要使用volatile字段

双重检查锁的由来在单例模式中,有一个DCL(双重锁)的实现方式,在Java程序中,很多时候需要推迟一些高开销的对象初始化操作,并且只有在使用这些对象的时候才进行开始初始化。先来看下面实现单例的方式:非线性安全的延迟初始化对象方式:public class Test1 { private static SingletonInstance instance; priv...

2019-12-13 11:16:37 256

原创 设计模式之装饰者模式

一、定义装饰(Decorator)模式的定义:指在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)的模式,它属于对象结构型模式。二、优缺点优点:采用装饰模式扩展对象的功能比采用继承方式更加灵活。 可以设计出多个不同的具体装饰类,创造出多个不同行为的组合。缺点:装饰模式增加了许多子类,如果过度使用会使程序变得很复杂。三、代码实现举例(1)创建一...

2019-12-09 20:33:18 157

原创 简单了解 RPC 实现原理

之前一直在用rpc框架,内部原理今天学习了一下,原作者梁飞,在此记录下他非常简洁的rpc实现思路,通过该思路了解一下原理。 一个完整的RPC架构里面包含了四个核心的组件,分别是Client,Client Stub,Server以及Server Stub,这个Stub可以理解为存根。客户端(Client),服务的调用方。 客户端存根(Client Stub),存放服务端的地址...

2019-12-08 16:49:46 346

原创 设计模式之观察者模式

一、定义观察者(Observer)模式—指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。该种模式有时又称作发布-订阅模式、模型-视图模式,它是对象行为型模式。应用实例:1、拍卖的时候,拍卖师观察最高标价,然后通知给其他竞价者竞价。 2、投标项目,甲方发布招标通知,乙方去获取该消息。二、优缺点该模式是一种对象行为型模式,其...

2019-12-06 13:56:01 182

原创 设计模式之策略模式

一、定义策略模式—定义算法族,分别封装起来,让它们之间可以相互替换,此模式让算法的变化独立于使用算法的客户。该模式属于对象行为模式,它通过对算法进行封装,把使用算法的责任和算法的实现分割开来,并委派给不同的对象对这些算法进行管理。应用举例:① 诸葛亮的锦囊妙计,每一个锦囊就是一个策略。 ② 旅行的出游方式,选择骑自行车、坐汽车,每一种旅行方式都是一个策略。二、使用场景以及优缺点...

2019-12-04 15:42:47 134

原创 Drools简单入门

因为在项目要用到Drools,所以下面写了一个简单的例子学习入门。一、Drools简介:JBoss Rules 的前身是Codehaus的一个开源项目叫Drools。最近被纳入JBoss门下,更名为JBoss Rules,成为了JBoss应用服务器的规则引擎。Drools是为Java量身定制的基于Charles Forgy的RETE算法的规则引擎的实现。具有了OO接口的RETE...

2019-10-15 19:38:08 728

原创 缓存和 DB 的数据一致性问题

缓存和DB的数据不一致主要有两种情况:并发的场景下,导致读取旧的 DB 数据,更新到缓存中。 缓存和 DB 的操作,不在一个事务中,可能只有一个操作成功,而另一个操作失败,导致不一致。常用的优化方案,主要是解决两个问题:将缓存可能存在的并行写,实现串行写。 实现数据的最终一致性。下面是我们比较常用到的集中优化手段:1、先淘汰缓存,再写数据库,注意要引入分布式锁,从而实现串行写的...

2019-10-11 10:45:16 707

原创 缓存穿透、缓存击穿、缓存雪崩区别

一、缓存穿透缓存穿透是指缓存和数据库中都没有的数据,而用户不断发起请求。(查询一个一定不存在的数据。如资源表,查询一个不存在的id,每次都会访问DB,如果有人恶意破坏,很可能直接对DB造成影响。)解决方案: 接口层增加校验,如用户鉴权校验,id做基础校验。 从缓存取不到的数据,在数据库中也没有取到,这时也可以将key-value对写为...

2019-10-10 14:53:09 184

原创 dubbo四种负载均衡策略

客户端调用服务端时,如何选择调用服务端的哪台机器上的服务呢。这就设计到负载均衡策略了,dubbo给出了如下四种策略:随机模式。按权重设置随机概率。在一个截面上碰撞的概率较高,但调用越大分布越均匀 轮询模式。按公约后的权重设置轮询比例。但存在响应慢的服务提供者会累积请求 最少活跃调用数。响应快的提供者接受越多请求,响应慢的接受越少请求 一致hash。根据服务提供者ip设置hash环,...

2019-10-09 22:23:09 1043

原创 Mysql日志相关

1、查询日志 在 MySQL 中也称为通用日志(general log),查询日志里面记录了数据库执行的所有命令,不管语句是否正确,都会被记录,原因如下:insert 查询为了避免数据冲突,如果此前插入过数据,当前插入的数据如果跟主键或唯一键的数据重复那肯定会报错; update 时也会查询因为更新的时候很可能会更新某一块数据; delete 查询,只删除符合条件的数据;...

2019-10-03 16:25:22 141

原创 Spring事物管理

一、初步理解事物 先来一波国际惯例,关于事物,大家比较熟知就是取钱。比如你去ATM机取2000块钱,是有两个步骤:首先输入密码金额,银行卡扣掉2000元钱;然后ATM出2000元钱。这两个步骤必须是要么都执行要么都不执行。如果银行卡扣除了2000块,但是ATM出钱失败的话,你将会损失2000元;如果银行卡扣钱失败但是ATM却出了2000块,那么银行将损失2000元。所以,通过上面...

2019-09-28 20:28:42 116

转载 进程之间的通信

每个进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到,所以进程之间要交换数据必须通过内核,在内核中开辟一块缓冲区,进程A把数据从用户空间拷到内核缓冲区,进程B再从内核缓冲区把数据读走,内核提供的这种机制称为进程间通信(IPC,InterProcess Communication),或者概括一点讲就是是指在不同进程之间传播或交换信息。 进程间...

2019-09-19 16:29:30 1231

原创 二分法

1、LeetCode153. Find Minimum in Rotated Sorted ArrayDescription:Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand.(i.e., [0,1,2,4,5,6,7]might become...

2019-09-17 14:57:54 234

原创 0-1背包问题

有一个容量为 N 的背包,要用这个背包装下物品的价值最大,这些物品有两个属性:体积 w 和价值 v。定义一个二维数组 dp 存储最大价值,其中 dp[i][j] 表示前 i 件物品体积不超过 j 的情况下能达到的最大价值。设第 i 件物品体积为 w,价值为 v,根据第 i 件物品是否添加到背包中,可以分两种情况讨论:第 i 件物品没添加到背包,总体积不超过 j 的前 i 件物品的最大价值就...

2019-09-16 16:29:10 209

原创 DFS三两道

1、LeetCode200.Number of IslandsDescription:Given a 2d grid map of'1's (land) and'0's (water), count the number of islands. An island is surrounded by water and is formed by connecting adjacent...

2019-09-15 17:06:02 222

原创 LeetCode695. Max Area of Island

Description:Given a non-empty 2D arraygridof 0's and 1's, anislandis a group of1's (representing land) connected 4-directionally (horizontal or vertical.) You may assume all four edges of the ...

2019-09-14 17:17:20 163

原创 LeetCode127. Word Ladder

Description:Given two words (beginWordandendWord), and a dictionary's word list, find the length of shortest transformation sequence frombeginWordtoendWord, such that:Only one letter can be ...

2019-09-14 12:02:08 174

原创 LeetCode279. Perfect Squares

Description:Given a positive integern, find the least number of perfect square numbers (for example,1, 4, 9, 16, ...) which sum ton.Example 1:Input: n = 12Output: 3 Explanation: 12 = 4 ...

2019-09-13 22:51:28 123

原创 贪心三两道

1、饼干分配Description:Assume you are an awesome parent and want to give your children some cookies. But, you should give each child at most one cookie. Each child i has a greed factor gi, which is th...

2019-09-13 15:59:58 200

原创 Class.forName 和 ClassLoader 的区别

在java中Class.forName()和ClassLoader都可以对类进行加载,但是二者有存在一定等区别。ClassLoader就是遵循双亲委派模型最终调用启动类加载器的类加载器,实现的功能是“通过一个类的全限定名来获取描述此类的二进制字节流”,获取到二进制流后放到JVM中。Class.forName()方法实际上也是调用的CLassLoader来实现的。Class.for...

2019-09-08 16:27:16 164

原创 @Autowire和@Resource注解的区别

@Autowire和@Resource二者都是注解方式动态装配bean,但是二者又有所区别。1、@Autowire默认按照类型(by-type)装配,默认情况下要求依赖对象必须存在。 ①如果允许依赖对象为null,需设置required属性为false,即@Autowire(required=false)private UserDao userDao; ②如果使用...

2019-09-07 15:58:18 365

原创 为什么有关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 936

原创 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 171

原创 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 5597

原创 codevs1014 装箱问题

题目描述Description有一个箱子容量为V(正整数,0<=V<=20000),同时有n个物品(0<n<=30),每个物品有一个体积(正整数)。要求n个物品中,任取若干个装入箱内,使箱子的剩余空间为最小。输入描述Input Description一个整数v,表示箱子容量一个整数n,表示有n个物品接下来n个整数,分别表示这n个物品的各自体积输出描述O...

2019-09-03 18:55:34 173

原创 codevs3162 抄书问题

题目描述Description现在要把M本有顺序的书分给K个人复制(抄写),每一个人的抄写速度都一样,一本书不允许给两个(或以上)的人抄写,分给每一个人的书,必须是连续的,比如不能把第一、第三、第四本数给同一个人抄写。现在请你设计一种方案,使得复制时间最短。复制时间为抄写页数最多的人用去的时间。输入描述Input Description第一行两个整数M、K;(K<=M...

2019-09-03 16:42:54 528

原创 codevs1010 过河卒

题目描述Description 如图,A 点有一个过河卒,需要走到目标 B 点。卒行走规则:可以向下、或者向右。同时在棋盘上的任一点有一个对方的马(如上图的C点),该马所在的点和所有跳跃一步可达的点称为对方马的控制点。例如上图 C 点上的马可以控制 9 个点(图中的P1,P2 … P8 和 C)。卒不能通过对方马的控制点。  棋盘用坐标表示,A 点(0,0)、B 点(n,m)(n,...

2019-09-02 15:02:46 190

原创 codevs1427 特种部队

题目描述Description某特种部队接到一个任务,需要潜入一个仓库。该部队士兵分为两路,第一路士兵已经在正面牵制住了敌人,第二路士兵正在悄悄地从后方秘密潜入敌人的仓库。当他们到达仓库时候,发现这个仓库的锁是一把很诡异的电子锁,上面是一排按钮,每个按钮上都有一个数字。10 秒钟后,总部返回了该锁的技术信息。要解开这把锁,首先要从左边的第一个按钮开始向右按动,中间可以跳过某些按钮,按动...

2019-09-01 16:38:28 436

原创 PT07Z - Longest path in a tree

题目信息:You are given an unweighted, undirected tree. Write a program to output the length of the longest path (from one node to another) in that tree. The length of a path in this case is number of e...

2019-09-01 10:25:53 319

原创 LeetCode(17):电话号码的字母组合

题目描述:给定一个仅包含数字2-9的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。分析:其实这个题就是要找出对应数字的字母的所有组合。从所有组合这个性质来思考,应该用深度优先搜索的算法。代码如下:public class Test { private static String[] strs = {...

2019-08-30 16:25:02 112

原创 git的常用命令整理

创建仓库git init提交的文件的信息添加到索引库中 git add [file]git add . #'.'或'*'表示全部添加 提交git 默认分支master git commit [flie] -m [message] git commit [flie] -a -m [message]查看提交记录git log查看git状态git st...

2019-08-28 22:33:33 96

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除