-
项目重构:一行代码的背后-设计模式(模板方法+管道模式)
管道-过滤器模式的体系结构是面向数据流的软件体系结构。它最典型的应用是在编译系统。一个普通的编译系统包括词法分析器,语法分析器,语义分析与中间代码生成器,优化器,目标代码生成器等一系列对源程序进行处理的过程。人们可以将编译系统看作一系列过滤器的连接体,按照管道-过滤器的体系结构进行设计。此外,这种体…
-
折腾日记:构建JDK9源码
作为JAVA开发者,JDK一定天天都会用到,所以想这周编译一下JDK源码,项目一直在使用JDK8,所以可以编译JDK9,这里的JDK指的是openJDK,每个版本的JDK编译都需要一个BootJDK(可以参考building.html中编译指南),比如JDK9,就需要JDK8openJDK做为GPL…
-
项目源码:使用AOP完成长任务轮询
AOP(AspectOrientedProgramming),即面向切面编程,可以说是OOP(ObjectOrientedProgramming,面向对象编程)的补充和完善。需求背景有一个接口实现合并文件,当文件过多时,预计要三分钟或者更长时间,这个时候前端调用的时候,就会出现接口的超时的问题,于是…
-
项目工具:Jenkins自动打包部署
项目现状由于项目一开始时间比较紧,…
-
项目重构:设计模式(模板方法模式)
在模板模式(TemplatePattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。最近,在项目中,需要调用用户提供的接口发送微信模板信息,然后提供了信息模板{"Personnel…
-
项目重构:设计模式(策略模式)
策略模式(StrategyPattern)属于对象的行为模式。其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。其主要目的是通过定义相似的算法,替换ifelse语句写法,并且可以随时相互替换。由于项目中,…
-
个人代码规范
由于之前和外包团队进行合作。在通用功能的调用,发现不同团队的编写水平不一致,导致通用功能很多地方都需要重构;所以自己在重构代码的同时,也整理自己写代码的习惯1.一个方法只做一件事或者一个方向的事情赋值set;保存save;判断is;转换to1)获取单个对象的方法用get做前缀。2)获取多个对象的方法…
-
每日题解:LeetCode 241. 为运算表达式设计优先级
题目地址题目描述定一个含有数字和运算符的字符串,为表达式添加括号,改变其运算优先级以求出不同的结果。你需要给出所有可能的组合的结果。有效的运算符号包含+,-以及*。示例1:输入:"2-1-1"输出:[0,2]解释:((2-1)-1)=0(2-(1-1))=2示例2:输入:&quo…
-
每日题解:LeetCode 1008. 先序遍历构造二叉树
题目地址题目描述返回与给定先序遍历preorder相匹配的二叉搜索树(binarysearchtree)的根结点。(回想一下,二叉搜索树是二叉树的一种,其每个节点都满足以下规则,对于node.left的任何后代,值总<node.val,而node.right的任何后代,值总>node.v…
-
每日题解:LeetCode 109. 有序链表转换二叉搜索树
题目地址题目描述给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点的左右两个子树的高度差的绝对值不超过1。示例:给定的有序链表:[-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这…