java
文章平均质量分 68
Wzy000001
这个作者很懒,什么都没留下…
展开
-
htmlUnit的读取js渲染的页面
htmlunit的读取js渲染的页面原创 2022-04-21 15:38:16 · 3073 阅读 · 0 评论 -
redis的一些注意点:从单机版到集群版
redis的一些注意点:从单机版到集群版原创 2022-04-06 10:55:58 · 959 阅读 · 0 评论 -
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 · 2733 阅读 · 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 · 720 阅读 · 0 评论 -
mapper的个人理解
mybaits的个人理解mybatis就是一个orm框架,jpa封装的太狠了,导致程序员想要优化sql都没地方入手。从而知道,应该把sql抽离框架,交由程序员管理。而至于其他的管理事务,获取连接,提交事务这些东西,都是些 模板,所以可以交于框架管理。而sql就抽离出为一个xml,利用标签来动态拼接sql。调用的话,利用接口与对应的xml来对应。获取对应的代理类,类似aop的功能来执行sql。但是如果 每次从配置类拿的话,又麻烦,那直接就交给spring来。获取SqlsessionFactoryS原创 2021-12-27 10:30:48 · 319 阅读 · 0 评论 -
springboot的定制化方式
springboot的定制化原理个人理解,springboot设计目标就是希望利用提供各种默认约定配置,代替配置,从而达到简略配置的目的。实现原理就是利用类似SPI机制,通过AutoConfigurationImportSelector,从而读取所有的classpath里的MATA_INF/META-INF/spring.factories里的自动配置类,配合对应Conditional注解从而有条件的注册对应的自动配置类,而@EnableConfigurationProperties绑定配置到对应的配置原创 2021-12-15 09:33:40 · 539 阅读 · 0 评论 -
浅谈synchronized
浅谈synchronized没有系统学习过,导致有些概念其实都是从各种博客,教程上东拼西凑上拼接成的。没办法,以后学习只能靠自己了。我这里总结的知识点,也只是b站黑马的juc课程。但是真的讲的不错啊。先讲现象我们平常用来处理多线程的共享资源的问题的时候,都是用的synchronize。知道锁实例对象和锁类对象的区别。可是为什么呢。有人说是jvm底层的monitorenter指令。可是为什么这个指令就能做到锁的效果呢。我们以前是知道这个知识,但是不知道为什么。就想我们知道物质是原子构成的,但是物质性原创 2021-10-14 17:49:02 · 150 阅读 · 0 评论 -
sonarqube的个人安装和配置
起因:甲方那边交付源代码后,他们自己编译jar包,但是他们编译的时候需要先过一遍sonar的检测。所以去检测了,然后因为我们平常对项目的代码规范抓的不是很严,所以导致编译出来的问题比较多。其实也是因为编译检测的规则比较严格。比如他那边不让用try管理流,推荐使用try()的方式管理流,利用8的流自动关闭规则。先不管他。我们还是先搭建自己的环境把,现在初步规划是现在本地搭建一下SonarQube ,然后本地检测一下,把一些比较严重的漏洞修复一下,小的漏洞协商后过滤掉。先区分SonarQube原创 2021-09-10 17:50:08 · 401 阅读 · 0 评论 -
从字节码层面讲解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 · 234 阅读 · 0 评论 -
从字节码层面理解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 · 138 阅读 · 0 评论 -
从字节码层面看父子类的执行顺序
从字节码层面看父子类的执行顺序起因我相信很多人都遇到过这种题目,一个父子类,然后我们new 子类,让我们说出打印的顺序。我刚学的时候,只能死记硬背类的加载顺序。类似这种,父类静态代码块>子类静态代码块>当前主程序>父类非静态代码块>父类构造函数>子类非静态代码块>子类构造方法>子类一般方法。但是我在学了jvm以后,我就在想,如何从字节码层面上解释这个执行顺序。例子https://blog.csdn.net/qq_42449963/article/detail原创 2021-09-10 17:46:25 · 238 阅读 · 0 评论 -
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 · 190 阅读 · 0 评论 -
XSS攻击防护
项目的xss攻击拦截项目要上线的话,需要检查下有没有xss攻击的风险。什么是xss,简单来说,就是前端输入类型然后存储到后端,前端下次获取这个数据的时候,因为直接显示到前端的话,因为被认为是js脚本,直接执行了。这个风险在于如果这个显示是公共的资源的话,可能让用户执行一些恶意的js,比如将密码通过js发送到固定接口。那怎么拦截呢。前端可能处理的话,就是利用显示的时候,敏感字符转义后显示。我们后端的处理的,就是拦截参数,要么是在前端输入存储到数据库之前的时候,转义敏感字符。要么是显示到前端前,反序原创 2021-08-27 18:27:45 · 191 阅读 · 0 评论 -
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 · 1595 阅读 · 0 评论 -
threadlocal
threadlocal的个人理解ThreadLocal之前看的一些教程,说了数据结构,说了实现用途,还举例了一些例子(simpledateformort,数据库连接)但是一直没太理解,为什么new 一个threadLocal就能拿到他独有的资源。但是现在看了以后,发现,好像是自己错了。涉及到三个对象,thread,threadlocalmap,threadlocal。说是说,一个thread持有threadlocalmap,threadlocalmap的key是threadlocal。那么我们原创 2021-07-02 11:12:41 · 58 阅读 · 0 评论 -
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 · 2176 阅读 · 0 评论 -
mybatis一次排查更新操作后,查询却是缓存的问题
mybatis一次排查更新操作后,查询却是缓存的问题事件起因我在一个分布式的环境下,一个服务调用另一个服务的更新操作,然后接着去查询这个记录,结果发现,这个服务的查询结果还是原来的。猜测查询到还是原来的,无非就两种可能,一个就是更新没更新成功,这个是没有可能的,因为我查询数据库,发现记录是改变了的。那就是说更新操作是成功了的,那么就只有另一种可能了,哪个地方有缓存。先开启下这个服务的日志,打印请求和mybatis执行的sql的日志。结果确实更新执行了语句,而get操作没执行,走的缓存。猜测1.f原创 2021-01-23 19:35:08 · 2743 阅读 · 0 评论 -
分布式锁的注解
分布式锁的注解起因如果我每个方法的要做分布式的锁进行锁,解锁,都要写一段相似的代码,选取key,上锁,try,解锁。这样的话,很烦诶。那么相似的代码,就很简单的能利用aop来解决。开搞注解@Target({ElementType.METHOD, ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Inherited@Documentedpublic @interface MyRedissonLock { String n原创 2021-01-23 19:34:11 · 664 阅读 · 0 评论 -
时区问题
时区问题前提认知日期的显示与接收简单来说,时间是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 · 456 阅读 · 0 评论 -
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 · 270 阅读 · 0 评论 -
热部署引发的类型转换异常
热部署引发的类型转换异常起因主要公司有个老的项目,想合并,里面有个工作流,里面需要配置监听器,然后监听器需要用到spring管理的其他的类,然后如果用@Component,@Autowired来注入的话,项目启动会报找不到这个类的问题,然后我以为是有同名类,导致注入不进去,所以我改用@Component(“”)来声明,注入的时候,也用@Resource(name ="kaptchaProducer"``),但是注入的bean的时候,会报类型转换异常。既然不让我用spring的主动注入,那我就用Spri原创 2021-01-23 19:01:35 · 471 阅读 · 0 评论 -
并发申请业务号
并发申请业务号起因有个表,打个比方,申请表,就是说,客户申请的时候,填写记录到申请记录表,表里新增了一条记录,当初设计的时候,表里没有业务号这个字段,只有id,然后一堆信息,然后新需求来了,导出这个记录表到excel里,然后把excel这个文件传到其他系统里,后台人员定时的去取这个文件填写。然后这个文件又回写到这个系统里。那么问题来了,导出到excel的时候,excel的每条记录是没有id的,也不允许导出id,这个时候,你如何确定这个excel的这条记录就是你数据库的这条的呢?讨论后,决定用新增个字段原创 2020-12-26 15:32:15 · 285 阅读 · 1 评论 -
一次奇妙的fegin排错旅行
一次奇妙的fegin排错旅行起因一个同事调用fegin的时候,发现调用返回的是null。但是日志却打印出了返回值。简单的来说,@GetMapping("/contract/getSignerInfo")public ContractSignerRecord getSignerInfo(@RequestParam String contractId);调用了这个东西,然后在下面使用的时候,发现,出错了,包了空指针异常。然后逐步打印参数,定位到这个返回值是空的,本来以为是简单的熔断,但是奇异的事情发原创 2020-12-21 21:29:29 · 100 阅读 · 0 评论 -
easyexcel的个人应用
easyexcel的个人应用背景在个人的工作中,有个通用的功能,叫excel的导入导出,总的功能要求是前端能提供模板下载,用户按格式填充数据,就可以支持数据的导入,导出的话,用户在前台加上筛选条件后,导出excel数据。当时实现也很简单,模板下载的话,就是后台管理个模板管理功能(就跟字典表一样,一个专有名称对应一个文件,前台直接用这个名称去换文件)。而导入导出的话,用poi操作。问题小数据一点问题也没有,每个功能自己实现导入导出也不是不能接受。但是当数据量开始大,然后要导入导出大数据的时候,问题就开原创 2020-12-20 19:09:52 · 670 阅读 · 0 评论 -
时区问题
时区问题前提认知日期的显示与接收简单来说,时间是long数字,加上时区才有意义。时区问题(数据库的默认时区问题,数据库连接配置,前台显示的时区问题(jackson的配置),date转string的时区问题(系统的时区设置)https://www.cnblogs.com/suiyueshentou/p/7798340.html这个时区问题,主要出现的问题是,时区设置的问题,时区可以设置的地方有点多。你有没有想过,为什么new date(),不同的地区,时间显示不同,其实也很简单,new date原创 2020-12-20 15:32:41 · 304 阅读 · 1 评论