自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 java使用Chrome+Selenium+Screenshot 实现浏览器截长图

场景:需要长截图整个网站;效果:我进行了缩小和模糊处理,涉及到公司业务.模糊的可以看到是忽略了浏览器的头部,保留了完整的整个网页解决思路:模拟用户打开浏览器,然后截图,这边涉及到几个问题 浏览器打开网站需要一定的时间,这边怎么设置? 浏览器打开之后,如果网页长度过长,需要拉动滚轴,模拟用户浏览过程?怎么获取到浏览器的高度,每次滚轴滚的长度? 截图怎么保留?转换为图片流,并保存 pom.xml <!-- 截图插件 --> <dependen

2021-01-27 11:21:33 2861 6

原创 线程基础-有关于ScheduledThreadPoolExecutor线程池

// 延迟|定时进行任务调度的线程池 ScheduledThreadPoolExecutor scheduledThreadPoolExecutor = new ScheduledThreadPoolExecutor(1); // 执行器 scheduledThreadPoolExecutor.execute(() -> { ...

2020-05-07 14:38:50 495

原创 线程基础篇(十五)之使用ReentrantLock实现消费者生产者

/** * @author Dora * @date 2020/4/8 9:55 **/public class QueueLearn { // 使用读写锁 实现队列的消费 // 实现一个队列 static ConcurrentLinkedQueue queue=new ConcurrentLinkedQueue(); // 获取锁 static Ree...

2020-04-08 10:55:51 247

原创 并发编程-(十四)ThreadLocalRandom

ThreadLocalRandom和Random的区别?Random是ThreadLocalRandom的父类 Random比ThreadLocalRandom效率低,因为Random在多线程环境下会发生原子变量竞争关系,而ThreadLocalRandom避免了这种竞争关系 在多线程环境下 注意不要用同一个ThreadLocalRandom对象...

2020-03-23 15:13:51 143

转载 并发编程-基础篇(十三)-锁的概念

ReentrantLock 提供了公平锁 和非公平锁的实现,公平锁: ReentrantLock pairLock =new ReentrantLock(true),公平锁获取锁的顺序是按照线程请求锁的时间早晚来决定的,也就是先到先得 非公平锁: ReentrantLock pairLock =new ReentrantLock(fasle),默认非公平锁,非公平锁则在运行时...

2020-03-20 10:32:05 113

原创 并发编程-基础篇(十二)之概念

什么是并发?什么是并行?并发和并行的区别是什么? 并发是指同一个时间段多个任务同时都在执行,并且都没有执行结束 并行是指在单位时间内多个任务同时都在执行 区别:时间段不同.并发强调的是在同一时间段,并行强调单位时间段 为什么要进行多线程并发编程? 为了减少上下文切换带来的开销 为了处理海量数据和请求的要求 什么是线程安全问题? 当多个线程同时读写一个共享资源并且没有任...

2020-03-20 10:10:13 94

原创 有关于 response.setContentType设置请求类型不生效的两种解决方案

public String test(HttpServletRequest request, HttpServletResponse response) { response.setContentType("application/pdf"); return "true"; }问题:spring架构使用response.setContentType不...

2020-03-18 15:18:51 6430 3

原创 并发编程-基础(十一)-InheritableThreadLocal,父子线程数据传递

InheritableThreadLocal 是可以继承的本地变量设置器public class ThreadLocalTest { static InheritableThreadLocal inheritableThreadLocal=new InheritableThreadLocal(); static ThreadLocal<String> threa...

2020-03-16 15:50:21 134

原创 并发编程-基础篇(十) -ThreadLocal

ThreadLocal是用来提供本地线程变量的,也就是你创建了一个ThreadLcoal变量,那么访问这个变量的每个线程都会有这个变量的副本.当多个线程操作这个变量,实际操作的是自己本地内存里面的变量.ThreadLocal的实现原理:ThreadLocal是由map实现的.为什么使用map而不是使用其他数据结构呢?因为每个线程可以关联多个ThreadLocal ThreadLocal的...

2020-03-16 15:32:03 78

原创 并发编程-基础篇(九)-死锁

死锁产生的原因:互斥条件:指线程对已经获取到的资源进行排它性使用,即该资源同时只由一个线程占用 请求并持有条件:只一个线程已经持有了至少一个资源,但又提出了新的资源请求,而新资源已经被其他线程占用,所以当前线程会被阻塞,但阻塞的同时不释放当前资源 不可剥夺条件:指线程获取到的资源在自己使用完之前不能被其他线程抢占,只有在自己使用完毕后才由自己释放该资源 环路等待条件...

2020-03-13 14:04:56 77

原创 并发编程-基础篇(八)-守护线程

线程分为两类:守护线程和用户线程;如果你希望在主线程结束后JVM进程马上结束,那么在创建线程时可以将其设置为守护线程.如果你希望在主线程结束后子线程继续工作,等子线程结束后再进让JVM进程结束,那么将子线程设置为用户线程守护线程 public static void main(String[] args) { Thread thread = new Thread...

2020-03-13 10:59:50 86

原创 并发编程-基础篇(七)-线程中断

interrupt():中断线程isInterrupted():是否中断线程,如果是返回true,不是返回falseThread.interrupted():是否中断线程,如果是返回true,不是返回false,不同于isInterrupted()的区别是,他会清除中断标记 public static void main(String[] args) { T...

2020-03-13 10:52:11 139

原创 并发编程-基础篇(六)-让出CPU执行篇的yield方法

yield()函数是当前线程请求让出自己的CPU使用,但是线程调度器可以无条件忽略这个暗示public class YieldTest implements Runnable { @Override public void run() { for (int i = 0; i < 5; i++) { if(i%5==0){ ...

2020-03-13 10:40:40 321

原创 并发编程-基础(五)-让线程睡着的方法sleep

sleep()函数是Thread类中的静态方法,调用了该方法的线程会让出一段时间的执行权,这段时间不会参与CPU调度.但是该线程所拥有的监视器资源,指定的睡眠时间到了之后该函数返回正常,线程处于就绪状态.如果在睡眠期间调用了interrupt(),会抛出IntermptedException 异常. private static final Lock lock=new Reentra...

2020-03-13 10:35:24 367

原创 并发编程-基础篇(四)-等待线程执行终止的join()

有关于join 方法的使用public class Thread1 { public static void main(String[] args) { Thread thread = new Thread(() -> { try { Thread.sleep(1000); } c...

2020-03-11 15:54:43 111

原创 并发编程-基础篇(三)-线程的通知notify和notifyAll

问题:notify 和notifyAll的区别?public class Thread1 { private static volatile Object resourceA=new Object(); @SneakyThrows public static void main(String[] args) { Thread thread =...

2020-03-11 15:00:30 107

原创 并发编程-基础篇(二)-线程的通知和等待

问题:利用队列+线程手写生产者和消费者?public class Thread1 { static volatile LinkedBlockingQueue<Integer> queue=new LinkedBlockingQueue<>(5); @SneakyThrows public static void main(String[] ar...

2020-03-11 14:33:15 75

原创 并发编程-基础篇(一)之线程的3种实现方式

线程有三种实现方式:继承Thread类 好处:在run方法类直接this就能获取当前线程 坏处:java不支持多继承 实现Runable接口 好处:java支持多实现 坏处:启动之前需要显示的创建线程,调用start方法 使用FutureTask方式 ...

2020-03-10 16:39:32 93

原创 异常:getInputStream() has already been called for this request

异常:getInputStream() has already been called for this request...造成异常的代码: 从请求中获取body参数 BufferedReader reader = request.getReader(); while ((str = reader.readLine()) != null) { ...

2020-02-26 11:09:41 9307 4

原创 springboot + security

学习资料: https://segmentfault.com/a/1190000015191298 http://wiki.jikexueyuan.com/project/spring-security/authenticationProvider.html https://blog.csdn.net/u012...

2019-08-26 19:49:24 107

原创 springboot+GuavaCache 使用教程之注解方式(二)

使用教程:引入jar 配置文件类 使用教程 有关于类内部中Cacheable失效的问题第一步:引入jar <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> </dependency&g...

2019-08-26 14:12:41 1418

原创 Springboot +Guava Cache 使用教程(一)

使用步骤:引入jar包 配置本地缓存配置类 使用Guava本地缓存总结:Guava Cache 和ConcurrentMap,但也不完全不样.如果说把Guava Cache看做一个卡车后箱,那么其中的Cache就是小的箱子,CacheManage 管理Cache,再由Cache去管理缓存内容.第一步: 引入jar包 <dependency> ...

2019-08-26 14:01:23 1169

原创 springboot + mybatis 异常:java.lang.annotation.AnnotationFormatError

异常问题:java.lang.annotation.AnnotationFormatError: Invalid default: public abstract java.lang.Class org.mybatis.spring.annotation.MapperScan.factoryBean() at java.lang.reflect.Method.getDefaultValue...

2019-08-19 10:04:43 1227

原创 springbootadmin自定义通知

定义一个通知类继承AbstractStatusChangeNotifier,并实现doNotifier@Slf4j@Servicepublic class SmsNotifier extends AbstractStatusChangeNotifier { @Override protected void doNotify(ClientApplicationEve...

2019-08-09 13:55:59 1841 1

原创 springbootAdmin登录UI使用

版本信息:springboot version:1.5.21springboot admin version:1.5.7spring cloud security version:1.4.5 <!-- 登录模块 --> <dependency> <groupId>de.codecentric</groupI...

2019-08-09 13:46:22 2529 1

原创 SpringBootAdmin 使用教程-初篇

版本信息: (存在即合理)springboot version:1.5.21springbootAdmin version:1.5.7git地址: server端:https://gitee.com/chenfan_s/SpringBootAdmin.git client端:https://gitee.com/chenfan_s/Springboot...

2019-08-09 13:36:09 518 1

原创 docker 新手常用命令

docker 启动之前运行成功的容器:docker start [dockerId]docker 停止正在运行的容器 :docker stop [dockerId]docker 删除名字为none的容器:$ docker stop $(docker ps -a | grep "Exited" | awk '{print $1 }') //停止容器$ docker r...

2019-07-30 18:57:08 88

原创 安装docker toolbox出现的两个问题

docker项目启动寸照bash.exe启动文件找到本地中安装的git根目录下的bin文件夹中的bash.exe既可2.docker启动之后一直卡在downloading下载boot2docker.iso镜像的问题两种解决方案:1.等待网络自己下载 2.自己在网页上下载之后拷贝到对应的cache目录下...

2019-07-30 17:31:03 232

原创 Docker 加速器配置

dokcer toolbox版本:18.09.71.查询默认配置[] :docker-machine ls2.查看默认环境配置[]: docker-machine env default3.设置远程连接下载地址配置[]: docker-machine ssh default sudo sed -i "s|EXTRA_ARGS...

2019-07-30 17:23:35 123

原创 Sharding-jdbc踩坑记录(一)

sharding jdbc学习链接sharding-jdbc版本:2.0.3springboot版本:2.1.5连接池:druid 1.1.14<!--代码片段--> <dependency> <groupId>com.alibaba</groupId> <artifac...

2019-07-30 13:28:56 4053 1

原创 Navicat 连接docker 中的mysql 出现2003错误

前提:1.mysql镜像启动,使用$ docker ps 看到有对应的镜像运行2.进入到mysql中并查看权限,host为%表示任何ip都能用mysql > select host,user,plugin,authentication_string from mysql.user;在这两个前提都满足的情况下:可能是容器ip的问题,本人使用的是docker toolb...

2019-07-11 19:25:25 7358 1

原创 flowable 优雅的部署/启动

@Test public void deploy() { Deployment deploy = repositoryService.createDeployment().tenantId("10").addClasspathResource("eighth.bpmn20.xml") .deploy(); System.out.println(deploy.getId());...

2019-04-24 14:03:25 2308

原创 flowable 有关于流程变量的使用

flowable 中流程变量都放在act_ru_variable,act_hi_varinst中act_ru_variable 存放得是正在运行的流程变量,正在运行的指的是(PROC_INST_ID_ )流程实例正在运行act_hi_varinst 存放的是已经运行完成的流程变量,运行完成指的是流程实例已经运行完成,在代码中怎么知道流程实例运行,之后会说到监听器...设置流程变量:...

2019-04-17 10:23:22 14227

原创 flowable 删除节点

flowable 提供了两种删除的方式:1.使用sql进行删除runtimeService.createNativeExecutionQuery().sql("delete from act_ru_identitylink" + "where TASK_ID_=1");2.使用org.flowable.engine.impl.util....

2019-04-17 10:05:32 2341 3

原创 flowable 回退,驳回

/** *@Author cf *@Description 驳回 * proInstanceId 需要驳回的流程实例id(当前发起节点的流程实例id) * currTaskKeys 驳回发起的当前节点key 为 act_ru_task 中TASK_DEF_KEY_ 字段的值 * targetKey 目标节点的key 为act_hi_ta...

2019-04-17 09:56:34 7873 4

原创 flowable 初篇

最近换了一家公司,一上来就做flowable有关的工作流部分的工作,之前完全没有接触过.,经过一个月的时间,也渐渐的能慢慢摸问题了.每次出现问题,都会花很长时间去解决它,所以才会开这个坑,来记录我在工作中使用flowable遇到的问题.flowable 实战历史 23张表的详细 等 部署\启动 查询 有关于流程变量的使用 驳回 监听器 CommandContextUtil...

2019-04-13 10:24:26 584

原创 业务递归记录博客

参考:https://blog.csdn.net/frankcheng5143/article/details/52958486/**     * 获取所有分类     * @return     */    public final String allCategories() {        // 获取到原始数据        List&lt;CategoryPOJO&gt;...

2019-01-10 15:02:30 136

原创 使用二维数组存储execl解析数据

@SuppressWarnings("unchecked") public static String execlParsing(String path) throws Exception{ List&lt;String[][]&gt; list = new ArrayList&lt;&gt;(); int wide=0; Msg msg = new Msg(); msg.s...

2019-01-09 09:59:33 296

原创 关于redis分页的两种分页解析以及功能运用 ---工作日志

redis有5种数据类型,分别是String,List,Hash,set,zset 。5种数据类型显然支持分页排序的只有两种 List和zset。1.使用List分页(不推荐):     使用命令:LPUSH 集合名字 值 127.0.0.1:6379&gt; lpush testList redis(integer) 1127.0.0.1:6379&gt; lpush tes...

2018-12-21 11:40:29 3540

原创 关于Redis的远程连接 Connection time out 问题

redis版本: redis-5.0.2Linux版本:CenterOS 7安装参考:https://www.cnblogs.com/feinian/p/9825232.html问题描述:安装redis完成,并修改了配置。 把bind 127.0.0.1  修改成bind 0.0.0.0 。 (目的:允许远程连接访问) 开启了守护进程  :把daemonize no 改为 d...

2018-12-20 13:25:24 16668 1

空空如也

空空如也

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

TA关注的人

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