自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 接口的多线程查询

接口的多线程查询

2024-01-31 09:49:00 390

原创 @Async 结合CompleteableFuture

@Async 结合CompleteableFuture

2024-01-09 15:17:58 392

原创 数据字段保证唯一性

数据字段保证唯一性

2023-09-22 09:51:27 225

原创 mysql死锁问题分析

mysql 死锁问题分析

2023-06-26 14:23:35 543

原创 油猴脚本尝试

油猴脚本

2023-05-26 14:48:23 2007

原创 stream的collectors

这里容器的话,supplier按道理应该返回intteger的,但是考虑到累加器accumulator的话,因为是一个没有返回值的,那么应该是覆盖的,但是感觉不太对,然后想起来那我用finisher最后处理的时候,返回interger不就好了。图片讲的很清楚了,就是没用并行流之前,用的combiner,如果用parallel,应该是几个元素执行完combiner后,要合并的是,你要做的操作。我就想到,我应该是哪里看到过博客,果然还是得瞎几把看看,这样起码知道讲的是什么,要去哪找。

2023-05-06 20:35:37 561

原创 树型动态规划

树型动态规划

2022-10-10 12:58:12 410

原创 KMP算法的个人理解

KMP的个人理解

2022-10-10 12:57:38 245

原创 二叉树的遍历---递归转栈

二叉树的遍历 递归转栈的通用写法

2022-10-10 12:56:42 1012 1

原创 暴力递归到动态规划

暴力递归到动态规划

2022-10-10 12:55:03 258

原创 htmlUnit的读取js渲染的页面

htmlunit的读取js渲染的页面

2022-04-21 15:38:16 3055

原创 redis的一些注意点:从单机版到集群版

redis的一些注意点:从单机版到集群版

2022-04-06 10:55:58 955

原创 springcloud整合oauth2后,404请求返回401

404的请求返回401我们系统整合springsecurity的时候,出现这么一个问题。当我们有个请求是404的时候,返回的确实401的http码,这个就很让人疑惑了,为啥啊。猜想o.s.b.a.s.oauth2.resource.UserInfoTokenServices - Could not fetch user details: class org.springframework.beans.factory.BeanCreationException, Error creating bean

2022-01-20 14:24:51 2720 3

原创 线程池的代码使用

线程池的代码使用今天主要是看下别人代码的使用,看到了别人这么一段代码 LinkedBlockingQueue<Runnable> taskQueue = new LinkedBlockingQueue<>(); ExecutorService executorService = new ThreadPoolExecutor(MAX_THREAD_NUM, MAX_THREAD_NUM, 0, TimeUnit.SE

2022-01-18 14:04:37 719

原创 mapper的个人理解

mybaits的个人理解mybatis就是一个orm框架,jpa封装的太狠了,导致程序员想要优化sql都没地方入手。从而知道,应该把sql抽离框架,交由程序员管理。而至于其他的管理事务,获取连接,提交事务这些东西,都是些 模板,所以可以交于框架管理。而sql就抽离出为一个xml,利用标签来动态拼接sql。调用的话,利用接口与对应的xml来对应。获取对应的代理类,类似aop的功能来执行sql。但是如果 每次从配置类拿的话,又麻烦,那直接就交给spring来。获取SqlsessionFactoryS

2021-12-27 10:30:48 316

原创 springboot的定制化方式

springboot的定制化原理个人理解,springboot设计目标就是希望利用提供各种默认约定配置,代替配置,从而达到简略配置的目的。实现原理就是利用类似SPI机制,通过AutoConfigurationImportSelector,从而读取所有的classpath里的MATA_INF/META-INF/spring.factories里的自动配置类,配合对应Conditional注解从而有条件的注册对应的自动配置类,而@EnableConfigurationProperties绑定配置到对应的配置

2021-12-15 09:33:40 532

原创 浅谈synchronized

浅谈synchronized没有系统学习过,导致有些概念其实都是从各种博客,教程上东拼西凑上拼接成的。没办法,以后学习只能靠自己了。我这里总结的知识点,也只是b站黑马的juc课程。但是真的讲的不错啊。先讲现象我们平常用来处理多线程的共享资源的问题的时候,都是用的synchronize。知道锁实例对象和锁类对象的区别。可是为什么呢。有人说是jvm底层的monitorenter指令。可是为什么这个指令就能做到锁的效果呢。我们以前是知道这个知识,但是不知道为什么。就想我们知道物质是原子构成的,但是物质性

2021-10-14 17:49:02 149

原创 如何优雅的map与bean互转

如何优雅的map与bean互转起因我的一个朋友,问我如果你想map和bean互转的话,你会怎么做。其实就是想炫耀他的那个bean和map互转的技术。我当时想的是,通过反射?手动写?通过json互转?类比lombok,Mapstruct,编译增强?反射效率低,手写的话,重复代码太多了,不想写。虽然可以用逆向代码生成器生成加快一点。通过josn就更慢了,而编译增强的话,执行的时候,本质还是普通的代码执行,所以速度没问题,而又没有手写的繁琐。然后他向我分享了他的一个demo。https://githu

2021-09-16 14:36:27 561

原创 sonarqube的个人安装和配置

起因:甲方那边交付源代码后,他们自己编译jar包,但是他们编译的时候需要先过一遍sonar的检测。所以去检测了,然后因为我们平常对项目的代码规范抓的不是很严,所以导致编译出来的问题比较多。其实也是因为编译检测的规则比较严格。比如他那边不让用try管理流,推荐使用try()的方式管理流,利用8的流自动关闭规则。先不管他。我们还是先搭建自己的环境把,现在初步规划是现在本地搭建一下SonarQube ,然后本地检测一下,把一些比较严重的漏洞修复一下,小的漏洞协商后过滤掉。先区分SonarQube

2021-09-10 17:50:08 401

原创 从字节码层面讲解finally

从字节码层面讲解finally起因一直就没太明白java的try catch finally 的语句,只是从语法层面上理解为,如果try的语句里发生异常,就跳转到catch语句执行,不管发没发生异常,finally都会执行。这样理解平常也够用了,但是总觉得有点虚,没实际理解实现原理。最近看一些教程,讲解字节码。现在尝试从字节码层面理解try catch finally。一个笔试题https://blog.csdn.net/huangzhilin2015/article/details/1141572

2021-09-10 17:47:48 229

原创 从字节码层面理解i++和++i

从字节码层面理解i++和++i起因无非就是网上常见的面试题 public static void main(String[] args) { int i = 0; int result = i++ + ++i + i++; System.out.println(i); System.out.println(result); }这种题目怎么理解才对呢?我以前只知道,i=i++;i=++i;理解的话,通过背口诀,先赋值还是先+

2021-09-10 17:47:05 137

原创 从字节码层面看父子类的执行顺序

从字节码层面看父子类的执行顺序起因我相信很多人都遇到过这种题目,一个父子类,然后我们new 子类,让我们说出打印的顺序。我刚学的时候,只能死记硬背类的加载顺序。类似这种,父类静态代码块>子类静态代码块>当前主程序>父类非静态代码块>父类构造函数>子类非静态代码块>子类构造方法>子类一般方法。但是我在学了jvm以后,我就在想,如何从字节码层面上解释这个执行顺序。例子https://blog.csdn.net/qq_42449963/article/detail

2021-09-10 17:46:25 238

原创 csrf和xss攻击-以及各类项目的安全防护措施

csrf和xss攻击-以及各类项目的安全防护措施起因我最近在搞一个项目验收,然后验收标准是通过渗透测试,里面几个重要的指标就是防范csrf攻击和xss攻击。了解想防范先得了解什么是csrf攻击和xss攻击。https://www.jianshu.com/p/344947705c3dhttps://segmentfault.com/q/1010000014364239https://www.jianshu.com/p/c69f08ca056dhttps://blog.csdn.net/xiao

2021-08-27 18:28:44 189

原创 XSS攻击防护

项目的xss攻击拦截项目要上线的话,需要检查下有没有xss攻击的风险。什么是xss,简单来说,就是前端输入类型然后存储到后端,前端下次获取这个数据的时候,因为直接显示到前端的话,因为被认为是js脚本,直接执行了。这个风险在于如果这个显示是公共的资源的话,可能让用户执行一些恶意的js,比如将密码通过js发送到固定接口。那怎么拦截呢。前端可能处理的话,就是利用显示的时候,敏感字符转义后显示。我们后端的处理的,就是拦截参数,要么是在前端输入存储到数据库之前的时候,转义敏感字符。要么是显示到前端前,反序

2021-08-27 18:27:45 188

原创 join索引失效

join索引失效今天我就简简单单的开发一个新功能,开心的写sql,大概类似这种select * fromact_hi_optionjoin act_hi_taskinst on act_hi_option.task_id =act_hi_taskinst.id_order by act_hi_option.end_time desc limit 5;先到测试环境执行看看,emmm。不对啊,是不是网断了,为什么直接卡住不动的样子。在本地跑跑看,emm,能执行呀。然后order by 条

2021-07-16 09:40:38 1582

原创 threadlocal

threadlocal的个人理解ThreadLocal之前看的一些教程,说了数据结构,说了实现用途,还举例了一些例子(simpledateformort,数据库连接)但是一直没太理解,为什么new 一个threadLocal就能拿到他独有的资源。但是现在看了以后,发现,好像是自己错了。涉及到三个对象,thread,threadlocalmap,threadlocal。说是说,一个thread持有threadlocalmap,threadlocalmap的key是threadlocal。那么我们

2021-07-02 11:12:41 58

原创 springboot与mybatis-plus的整合

springboot与mybatis-plus的整合一、导入依赖<!-- mybatis-plus 相关的jar --><dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.0</version></depende

2021-02-27 17:24:09 385

原创 pageInfo的转化,do转vo

pageInfo的转化,do转vo痛点我们系统往往分为DO和VO,DO完全对应数据库的一条记录,而VO则往往对应显示到页面的记录。有时候,两个需要互转。然后我们拿到的都是PageInfo,我们需要给前台的是PageInfo;那我们就自己来呗。private PageInfo<ItoDeliverApplyVO> convertDO2VO(PageInfo<ItoDeliverApply> doEntitiss ){ List<ItoDeliverApply&

2021-01-23 19:41:14 2158

原创 mybatis一次排查更新操作后,查询却是缓存的问题

mybatis一次排查更新操作后,查询却是缓存的问题事件起因我在一个分布式的环境下,一个服务调用另一个服务的更新操作,然后接着去查询这个记录,结果发现,这个服务的查询结果还是原来的。猜测查询到还是原来的,无非就两种可能,一个就是更新没更新成功,这个是没有可能的,因为我查询数据库,发现记录是改变了的。那就是说更新操作是成功了的,那么就只有另一种可能了,哪个地方有缓存。先开启下这个服务的日志,打印请求和mybatis执行的sql的日志。结果确实更新执行了语句,而get操作没执行,走的缓存。猜测1.f

2021-01-23 19:35:08 2695

原创 分布式锁的注解

分布式锁的注解起因如果我每个方法的要做分布式的锁进行锁,解锁,都要写一段相似的代码,选取key,上锁,try,解锁。这样的话,很烦诶。那么相似的代码,就很简单的能利用aop来解决。开搞注解@Target({ElementType.METHOD, ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Inherited@Documentedpublic @interface MyRedissonLock { String n

2021-01-23 19:34:11 658

原创 时区问题

时区问题前提认知日期的显示与接收简单来说,时间是long数字,加上时区才有意义。时区问题(数据库的默认时区问题,数据库连接配置,前台显示的时区问题(jackson的配置),date转string的时区问题(系统的时区设置)https://www.cnblogs.com/suiyueshentou/p/7798340.htmlhttps://www.cnblogs.com/ganbo/p/11244306.html这个时区问题,主要出现的问题是,时区设置的问题,时区可以设置的地方有点多。你有没

2021-01-23 19:33:15 449

原创 easyExcel的个人应用2.0

easyExcel的个人应用2.0当时简单的写了下demo,留下了很多坑。但是我填坑也不太想填,怎么办呢。那就新开个坑。准备工作pom<!-- easyexcel --><dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>2.1.4</version>&l

2021-01-23 19:31:46 265

原创 热部署引发的类型转换异常

热部署引发的类型转换异常起因主要公司有个老的项目,想合并,里面有个工作流,里面需要配置监听器,然后监听器需要用到spring管理的其他的类,然后如果用@Component,@Autowired来注入的话,项目启动会报找不到这个类的问题,然后我以为是有同名类,导致注入不进去,所以我改用@Component(“”)来声明,注入的时候,也用@Resource(name ="kaptchaProducer"``),但是注入的bean的时候,会报类型转换异常。既然不让我用spring的主动注入,那我就用Spri

2021-01-23 19:01:35 469

原创 并发申请业务号

并发申请业务号起因有个表,打个比方,申请表,就是说,客户申请的时候,填写记录到申请记录表,表里新增了一条记录,当初设计的时候,表里没有业务号这个字段,只有id,然后一堆信息,然后新需求来了,导出这个记录表到excel里,然后把excel这个文件传到其他系统里,后台人员定时的去取这个文件填写。然后这个文件又回写到这个系统里。那么问题来了,导出到excel的时候,excel的每条记录是没有id的,也不允许导出id,这个时候,你如何确定这个excel的这条记录就是你数据库的这条的呢?讨论后,决定用新增个字段

2020-12-26 15:32:15 283 1

原创 一次奇妙的服务“宕机”排错之旅

一次奇妙的服务“宕机”排错之旅起因这天,生产上突然传来噩耗,一个服务宕机了,调用该服务都失效了,这可是大问题,第一时间想到的就是别不是这个服务宕机了吧,然后赶紧叫运维看下服务状态,可是发现服务状态是好的,可是为什么前端调用都是超时呢。没办法,现在只能先重启大法好,复制了一份服务和zuul日志下来,然后重启服务,万幸的是服务恢复了。但是为什么呢。甲方也要我们拿出措施来防止下次发生同样的事。先说下我们的架构,简简单单的zuul+eureka+服务进行通信。回想下我们当时的排错措施,1.前端调用失败,返回

2020-12-23 22:53:29 395 1

原创 一次奇妙的fegin排错旅行

一次奇妙的fegin排错旅行起因一个同事调用fegin的时候,发现调用返回的是null。但是日志却打印出了返回值。简单的来说,@GetMapping("/contract/getSignerInfo")public ContractSignerRecord getSignerInfo(@RequestParam String contractId);调用了这个东西,然后在下面使用的时候,发现,出错了,包了空指针异常。然后逐步打印参数,定位到这个返回值是空的,本来以为是简单的熔断,但是奇异的事情发

2020-12-21 21:29:29 98

原创 easyexcel的个人应用

easyexcel的个人应用背景在个人的工作中,有个通用的功能,叫excel的导入导出,总的功能要求是前端能提供模板下载,用户按格式填充数据,就可以支持数据的导入,导出的话,用户在前台加上筛选条件后,导出excel数据。当时实现也很简单,模板下载的话,就是后台管理个模板管理功能(就跟字典表一样,一个专有名称对应一个文件,前台直接用这个名称去换文件)。而导入导出的话,用poi操作。问题小数据一点问题也没有,每个功能自己实现导入导出也不是不能接受。但是当数据量开始大,然后要导入导出大数据的时候,问题就开

2020-12-20 19:09:52 645

原创 时区问题

时区问题前提认知日期的显示与接收简单来说,时间是long数字,加上时区才有意义。时区问题(数据库的默认时区问题,数据库连接配置,前台显示的时区问题(jackson的配置),date转string的时区问题(系统的时区设置)https://www.cnblogs.com/suiyueshentou/p/7798340.html这个时区问题,主要出现的问题是,时区设置的问题,时区可以设置的地方有点多。你有没有想过,为什么new date(),不同的地区,时间显示不同,其实也很简单,new date

2020-12-20 15:32:41 296 1

原创 引入第三方任务调度平台XXL-WORK

引入第三方任务调度平台XXL-WORK前言我们模块中有个模块是专门同步原本的数据库到新库中的,本来写法是写个接口,然后手动调用,也有加了@Scheduled进行定时调度的。但是有这么一个问题,如果我突然想延迟某个任务的调度时间,某天不想执行任务,那么怎么办?我分布式的项目,这个任务只能一个服务跑,跑多了会出问题(比如同步记录,你多跑了数据库多了数据)。修改代码然后重新上线?肯定不行的,那么我们应该怎么解决这种问题呢。关键词:动态任务调度尝试一本来想利用springboot的自带的ThreadPoo

2020-12-18 09:19:00 1128 1

原创 动态生成pdf

动态生成pdf需求最近有个需求,就是办公系统,往往有生成doc,pdf的需求。以往,我接触到的系统,生成doc,有这么几种方式,一种是直接利用ipoi来生成doc,这种最大的问题是,当模板的样式比较复杂的话,生成极为困难,我也没进过有人这么生成,目前这家公司倒是有这么一个思路,利用itext直接读取模板的documnet,然后因为模板里插有书签,那么我们可以在读到书签后,直接替换为数据,那么就可以达到生成doc的目的,但是需求中如果有表格,循环数据,这种需求的话,应该是要循环插入样式和数据,这种我觉得是

2020-11-20 17:16:56 586

空空如也

空空如也

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

TA关注的人

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