- 博客(26)
- 资源 (5)
- 收藏
- 关注
原创 win docker 安装redis
前言 本篇主要是在win系统上使用docker安装redis 下载redis镜像 很多网页都写的的这个命令: docker pull redis:latest 这个是下载最新版本的redis 也可以在这个地址查看具体的版本:https://hub.docker.com/_/redis?tab=tags&page=1&ordering=last_updated 也可以使用docker search redis来查看可用版本 我这里使用的6.0版本 下载redis配置文件 为什么要下载这个配置
2021-03-19 19:18:36
271
原创 线程池(三)-- 面试题
面试问题 线程池主要参数 线程池的主要参数为:核心线程数量,最大线程数量,线程空闲存活时间数,线程空闲存活时间单位,缓存队列, 线程创建工厂(默认Executors.defaultThreadFactory()),拒绝策略(默认AbortPolicy拒绝策略); 其中缓存队列有:ArrayBlockingQueue(有界队列),LinkedBlockingDeque(无界队列),SynchronousQueue(该队列不存数据) 还有一个参数:allowCoreThreadTimeOut,该参数作用是设
2021-03-15 11:44:48
191
原创 sftp采坑日记
前言 项目中使用到了sftp,平时都会用到这个,但是线上也从来没有出现过什么大的问题,但是最近上线了一个流量比较大的项目,也使用到了sftp,在上线的那一刻崩了。。。 正文 项目中使用的JSch,Jsch提供了sftp的各类操作的Java实现 最开始排查只是从日志中发现是sftp这一块的错误,所以大家都把关注点放到了这一块;由于sftp的底层代码是封装好的,我们都是业务直接调用这个工具类,我就去看了这一块的业务代码,就发现了一个流程上的小问题:需要从sftp服务器下载四个文件,但是是用的for循环去下载文件
2021-03-12 08:46:38
475
1
原创 线程池(二)-- 源码分析
前言 前面一篇文章讲述了线程池的处理任务的流程以及一些基本概念,接下来对线程池源码进行分析; 正文 execute方法: public void execute(Runnable command) { if (command == null)// 1.判断任务是否为空 throw new NullPointerException(); int c = ctl.get();// 2.获取线程池ctl属性,根据此属性对线程池的一些其他属性进行判断
2021-03-05 17:24:48
122
原创 Java中的retury
前言 最近在看线程池的源码,看到了addWorker()方法,在该方法的最开头的retry:,在这之前从来没有遇见过这个东西;那就来一探究竟; 正文 该例子使用双重循环,打印数字,测试代码如下: @Test public void testTwo() { int count = 0; for (int i = 0; i < 2; i++) { for (int j = 0; j < 5; j++) {
2021-01-19 09:04:09
118
原创 线程池(一) -- 基础概念
文章目录前言正文什么是线程池线程池流程线程池ThreadPoolExecutorThreadPoolExecutor运行状态创建线程的几种方式线程池监控最后参考 前言 在平时的开发中,经常遇到这样的东西,例如数据库连接池,web请求也是使用的池化技术,只是我们直接接触的比较少而已; 正文 什么是线程池 简单点理解就是装线程的一个池子,一种池化思想对一定数量的线程进行管理,如:线程创建,销毁,执行任务等; 线程池流程 提交任务至线程池 判断线程池的核心线程数是否已满,未满则创建核心线程来处理该任务,否则进入
2021-01-18 14:38:09
135
原创 mybatis if test 采坑记
前言 最近遇到的一个关于mybatis的xml条件判断的问题,平时写的都是以判断空属性是否为空,例如: <if test="type!=null and type !=''"> and status = 1 </if> 所以在这一块并没有足够的重视。 正文 最近刚好要写一个与上边不一样的写法,但是还是以上面的为基础,是对属性的值进行判断: 判断type属性的值 <if test="type!=null and type !=''">
2020-12-08 22:30:05
834
1
原创 springboot异步线程(三)源码解析(二)
前言 上一篇文章主要讲了EnableAsync注解是如何创建aop并生效的,这一篇讲springboot是如何处理被拦截的方法的; 正文 1.0 AsyncExecutionInterceptor类 这里看AsyncExecutionInterceptor类中的invoke方法,源码如下: public Object invoke(final MethodInvocation invocation) throws Throwable { //1 获取拦截的方法 Class<
2020-07-13 23:02:55
275
原创 springboot异步线程(三)源码解析(一)
前言 本篇文章主要是讲EnableAsync源码的解析,侧重点是EnableAsync如何开启aop并生效的,在看之前需要知道一些关于spring的东西: @Import注解 spring的Aware接口 spring AOP 建议最好先看上一篇文章MethodInterceptor 的几种用法(二),如果知道那篇文章里面的那些东西,就当这句不存在。。。 正文 1.入口@EnableAsync注解 @Target({ElementType.TYPE}) @Retention(RetentionPoli
2020-07-04 14:54:45
221
原创 MethodInterceptor 的几种用法(二)
前言 发现写着写着好像越来越偏离正轨了,果然还是知道得太少了;这篇算是MethodInterceptor的第二篇了吧,本来没想写这篇文章的,但是看了看源码,颠覆我之前已有的认知,感觉还是得把这篇文章写出来; 正文 上一篇MethodInterceptor的文章都是以配置注解的形式来将MethodInterceptor注册生效,这次这篇将使用spring原生的类或接口来将MethodInterceptor注册并生效。 TestInterceptorAnnotation 先自定义注解TestIntercepto
2020-07-02 22:35:22
1417
原创 Lombok builder 继承属性
前言 最近在用lomBok的builder的时候遇到这样一个问题:就是单用一个@builder注解不会继承父类的属性;那如何解决呢??? 正文 接下来看看几种解决的方式吧! 方式一 parent类: @Setter @Getter public class Parent { private String userName; private String password; private String url; public Parent(String userNam
2020-07-02 22:33:50
3650
原创 记一次idea快捷键
快捷键 突然想写一下关于idea快捷键的文章,在进入现在所在的公司之前,大概所知道的就是以下的快捷键吧: Ctrl+R,替换文本 Ctrl+F,查找文本 Ctrl+S,存保 Ctrl+C,复制 Ctrl+V,粘贴 Ctrl+X,删除行 Ctrl+Y,删除当前行 Ctrl+D,复制行 Ctrl+Z,回退 Ctrl+N,可以快速打开类 Shift+F6,重构 - 重命名 Shift+Shift,可以快速查找类 Ctrl+Alt+L,格式化代码 Alt+Insert,可以生成构造器/Getter/Setter等
2020-06-28 22:34:10
173
原创 ThreadLocal源码阅读
前言 本篇要说的是ThreadLocal,这个玩意平时在项目中很少用到,但是却有极大的用处;平时在面试中也会经常问到这个问题。 正文 本篇使用jdk1.8版本。 ThreadLocal介绍 先来看看源码中的介绍吧,文档太多,就不全贴出来了 /** * This class provides thread-local variables. These variables differ from * their normal counterparts in that each thread that
2020-06-13 13:34:32
202
原创 MethodInterceptor 的几种用法
前言 最近在看springboot的@EnableAsync的源码,发现还是需要提前看一些东西,比如这次的MethodInterceptor接口的作用;如今springboot都到2.0以后了,我谷歌出来好多文章都是用的配置文件,本篇就用纯代码的形式来说明MethodInterceptor的用法; 正文 项目使用springboot的2.3.0.RELEASE版本构建,其中需要注意导入aop的starter; <dependency> <groupI
2020-06-08 21:17:45
10092
1
原创 springboot定时器(一)
前言 本篇文章针对上篇文章springboot异步线程,有一位大佬在评论中提出第一点是错误的,当时看到了这个问题,最近刚好有空,针对第一点的问题去搜索了不少的文章; 问题 我在文章中第一点去验证:Scheduled为单线程执行,这是错误的;正确的是,scheduled单线程执行是因为使用默认线程池核心线程数为1,如果配置默认线程池ThreadPoolTaskScheduler的核心线程数,则一样是多线程的执行,这里直接贴出了大佬的原话。 验证流程 在项目启动时发现初始化taskScheduler和asyn
2020-06-05 08:49:10
416
原创 记一次NoClassDefFoundError
前言 今天跑新项目,发现新项目中的某个接口报NoClassDefFoundError,该接口调用了某个类的静态方法,而该静态方法的主要作用是获取远程配置信息;错误信息是:java.lang.NoClassDefFoundError: Could not initialize class 某类;第一眼发现这个错误还以为是这个类没导入,但是在编译文件下找到了该文件是存在的; 解决 通过参考中的几篇的文章中,发现是静态方法中的某个问题,获取远程配置,但是远程并没有配置;最后在配置中心进行配置就可以了; 可以将静
2020-06-04 23:25:00
202
原创 jekyll博客部署脚本
前言 最近项目开发完成了,接下来就是迭代了,空闲时间比较充足了,开始来搞自己的博客了。 这里先说一下自己博客的情况:我使用jekyll搭建的博客,至于怎么安装jekyll这里就不具体描述了,因为自己安装过四五次了,但是每次安装遇到的问题都不一样,每次安装都要搜很多教程才能安装完,需要安装的还是自己去谷歌或百度吧。 正文 部署流程 先来说说部署博客的流程吧: 手动杀死博客进程 进入博客目录 更新代...
2019-12-21 14:01:47
156
原创 springboot异步线程(二)
前言 本篇文章针对上篇文章springboot异步线程,有一位大佬在评论中提出第一点是错误的,当时看到了这个问题,最近刚好有空,针对第一点的问题去搜索了不少的文章; 问题 我在文章中第一点去验证:Scheduled为单线程执行,这是错误的;正确的是,scheduled单线程执行是因为使用默认线程池核心线程数为1,如果配置默认线程池ThreadPoolTaskScheduler的核心线程数,则一样是...
2019-12-17 13:56:37
159
原创 springboot异步线程(一)
前言 最近项目中出现了一个问题,发现自己的定时器任务在线上没有执行,但是在线下测试时却能执行,最后谷歌到了这篇文章SpringBoot踩坑日记-定时任务不定时了?; 本篇文章主要以自己在项目中遇到的问题为背景,并不涉及源码; Scheduled 定时任务 Scheduled注解的具体使用方法自行百度或谷歌,这里只是使用其中的一种方式; 验证Scheduled为单线程执行 测试代码 @Comp...
2019-11-14 14:44:13
207
原创 线程入门
线程的几个属性 线程的属性包括线程的编号(ID),名称(Name),线程类别(Daemon),和优先级(Priority); 属性 属性类型及用途 只读属性 重要注意事项 编号(ID) 类型:long。用于标识不同的线程,不同线程有不同编号 是 某个编号的线程运行结束后,该编号可能被后续创建的线程使用,不同线程拥有的编号虽然不同,但是这种编号的唯一性只在Java虚拟机的一次运行有...
2019-10-29 22:07:21
129
原创 支付开发总结
前言 最近APP中对接了支付宝APP支付,微信APP支付,小程序支付,对此做一些总结 遇到的问题 支付宝 支付宝APP支付相对来说是最简单的了,接口都是SDK里面的,自己只需要调接口,传参数就行,在加自己的业务逻辑就行了; 需要注意的是回调验签的那个,是支付宝公匙,不是应用公匙;应用公匙私匙都是自己生成的; 微信APP支付与小程序支付 微信支付就有点坑了: 需要自己签名,验证签名比较麻烦 小程...
2019-09-21 22:25:45
221
原创 springboot处理date参数
前言 最近在后台开发中遇到了时间参数的坑,就单独把这个问题提出来找时间整理了一下; 正文 测试方法 bean代码: public class DateModelNoAnnotation { private Integer id; private Date receiveDate; } controller代码: @RestController @RequestMa...
2019-09-21 22:23:02
3664
原创 注解入门
前言 基本语法 Javase5自带的标准注解 四个元注解 注解中的元素 自定义注解 注解源代码 测试代码 运行结果: 总结 前言 注解(也被称为元数据)为我们在代码中添加信息提供了一中形式化的方法,是我们可以在稍后的某个时刻非常方便地使用这些数据; 基本语法 Javase5自带的标准注解 定义在了Java.lang中 @Override,表示当前...
2018-08-06 16:22:13
151
原创 java中的反射
实战 所用到的实体类 class Field method Constructor Modifier枚举值列表 总结 参考 # java反射 ## 个人理解 在运行状态中,对于任何一个类,都能获取到这个类的所有信息,例如该类中的方法,属性,及实现的接口等等;并且还能调用该类的任一方法或属性;这种在运行时动态的获取类信息或调用类中的属性或方法称之为反射 实战 ...
2018-08-06 16:21:03
144
原创 ArrayList源码解析
前言 正文 成员变量 构造方法 常用的方法 add()方法 remove()方法 get()方法 set()方法 size()方法 数组容量自动增长 迭代器 总结 前言 本篇主要讨论ArrayList集合,本人使用的jdk1.8 正文 成员变量 默认初始化容量(未指定容量,并且要在调用add方法时才会用) 当ArrayList初始化时显示指定容量为...
2018-08-06 16:19:57
103
原创 对String源码的理解
String源码理解(jdk1.8) 参考的连接:http://blog.youkuaiyun.com/zhcswlp0625/article/details/57508127 string是被final修饰的类 public final class String 实现了Serializable, Comparable<String>, CharSequence 这三个接口,Compara...
2018-03-21 17:03:25
197
wifi直连,WiFi p2p 转发 源码+apk
2019-04-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人