清水雅然
JAVA
功能设计:如何实现一个扫码上传附件的功能
授权码(authorizationcode)方式,指的是第三方应用先申请一个授权码,然后再用该码获取令牌。这种方式是最常用的流程,安全性也最高,它适用于那些有后端的Web应用。授权码通过前端传送,令牌则是储存在后端,而且所有与资源服务器的通信都在后端完成。这样的前后端分离,可以避免令牌泄漏。需求背景...
2021-03-21
项目工具:线上"假死“问题解决(Jstack工具分析,脚本监控服务)
Read More
问题项目在正式上线后,偶发性出现项目的"假死"的问题,项目无法响应前端的请求,一开始,架构师查询到存在大量锁表的情况,去掉了一些长时间任务的更新的事务,同时提高了JVM的-Xmx和-Xms的大小,第一天虽然情况有所缓解,在第二天访问量上去后,还是出现了假死的问题。于是,在顶着客户...
2021-03-01
项目重构:一行代码的背后-设计模式(模板方法+管道模式)
Read More
管道-过滤器模式的体系结构是面向数据流的软件体系结构。它最典型的应用是在编译系统。一个普通的编译系统包括词法分析器,语法分析器,语义分析与中间代码生成器,优化器,目标代码生成器等一系列对源程序进行处理的过程。人们可以将编译系统看作一系列过滤器的连接体,按照管道-过滤器的体系结构进行设计。此外,这种体...
2021-01-09
折腾日记:构建JDK9源码
Read More
作为JAVA开发者,JDK一定天天都会用到,所以想这周编译一下JDK源码,项目一直在使用JDK8,所以可以编译JDK9,这里的JDK指的是openJDK,每个版本的JDK编译都需要一个BootJDK(可以参考building.html中编译指南),比如JDK9,就需要JDK8openJDK做为GPL...
2020-12-20
项目源码:使用AOP完成长任务轮询
Read More
AOP(AspectOrientedProgramming),即面向切面编程,可以说是OOP(ObjectOrientedProgramming,面向对象编程)的补充和完善。需求背景有一个接口实现合并文件,当文件过多时,预计要三分钟或者更长时间,这个时候前端调用的时候,就会出现接口的超时的问题,于是...
2020-12-13
项目工具:Jenkins自动打包部署
Read More
项目现状由于项目一开始时间比较紧,...
2020-12-10
项目重构:设计模式(模板方法模式)
Read More
在模板模式(TemplatePattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。最近,在项目中,需要调用用户提供的接口发送微信模板信息,然后提供了信息模板{"Personnel...
2020-12-03
项目重构:设计模式(策略模式)
Read More
策略模式(StrategyPattern)属于对象的行为模式。其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。其主要目的是通过定义相似的算法,替换ifelse语句写法,并且可以随时相互替换。由于项目中,...
2020-11-29
每周源码:如何实现ArrayList(分析ArrayList的源码)
Read More
@TOCJava集合(Collection)类是我们在工作中运用最多的、最频繁的类。并且集合可以动态扩容。方便开发需求。集合类通常存在于java.util包中,主要由Collection和Map两个体系构成。Collection主要有三个子接口,分别为List(列表)、Set(集)、Queue(队列...
2020-06-15
每周源码: 如何构建一棵红黑树(分析TreeMap源码)
Read More
如何构建一棵红黑树(分析TreeMap源码)@TOC之前一直就想关于红黑树的文章,JAVA在JDK1.8在hashMap引入了红黑树,解决特殊情况下当链表过程导致的查询过慢的问题。在JDK1.7中,我们都知道hashMap使用"数组"+链表的数据结构实现,使用hashcode取模...
2020-06-01
Read More