最近先后接手了 2 个项目,接第一个项目觉的好乱,花了好几天略有理清;接第二个项目时觉的第一个项目还行,就这样认知底线又被突破。
一个没有规范化的团队和项目,项目经过多人多次迭代,简直是一团乱,属性、方法、表字段命名不规范,表关系设计不清晰,Mapper 层与业务强耦合,注释与实际功能不一致,业务包结构不规范,公共功能不抽出独立,新人接手难以通过代码快速了解业务,真是太糟糕了。
本篇基于个人在项目中遇到的以上原因而记录需要的规范。
最近先后接手了 2 个项目,接第一个项目觉的好乱,花了好几天略有理清;接第二个项目时觉的第一个项目还行,就这样认知底线又被突破。
一个没有规范化的团队和项目,项目经过多人多次迭代,简直是一团乱,属性、方法、表字段命名不规范,表关系设计不清晰,Mapper 层与业务强耦合,注释与实际功能不一致,业务包结构不规范,公共功能不抽出独立,新人接手难以通过代码快速了解业务,真是太糟糕了。
本篇基于个人在项目中遇到的以上原因而记录需要的规范。
MySQL系列(21): SQL控制流函数之 case,if,ifnull,nullif
SQL 语句中常需要通过逻辑判断来控制流程的操作,MySQL 标准提供了 CASE
,IF
,IFNULL
,NULLIF
控制流函数。
项目开发中经常需要将 List 转 Map 的操作,可以使用 for
循环,或 JDK 1.8 提供的 Stream 流,或 Google 的 Guava 集合库来实现。
Java基础:for 与 foreach 遍历Array,ArrayList,LinkedList 比较
开发中数据处理常用到遍历,Java 为遍历提供了 for 和 foreach,lambda 表达式 foreach,stream 流 foreach,今天对这几种使用做个简单测试。
测试 Array ,ArrayList,LinkedList 三种数据结构。
Java 8 Stream API 性能测试,这篇文章中的测试更合理全面。
数据结构与算法:定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。
考查对栈的理解,入栈,出栈操作,解题思路。
Java基础:JDK 8 之 LocalDate,LocalTime,LocalDateTime 使用
因为 Date 实在不方便,特别是在日期计算时难用,并且格式化是非线程安全的。
JDK 8 提供 LocalDate, LocalTime, LocalDateTime 可以更方便操作日期时间,是线程安全的。
在 JDK 8 出来之前,大多会使用第三方库 Joda 来操作日期时间,GitHub joda-time。
国内工具类 Hutool 也提供了日期时间工具类,可以方便操作。
获取真实 IP 地址。一次项目中有记录请求方的 IP,某天收集到的 IP 地址全是相同的,后面定位到问题是在阿里云启用了 SLB(负载均衡),收集到的全是负载均衡服务器的 IP,而不是用户端的 IP,后面改为判断从 x-forwarded-for
中取。
设计模式(十一):观察者模式(Observer Pattern)
观察者模式 又称为 发布 / 订阅(Publish / Subscribe)模式、源 / 监听模式(Source / Listener)。
观察者模式定义对象之间的一对多的依赖关系, 一个对象的行为发生改变,所有依赖于它的对象的行为也发生改变。观察者模式是对象的行为模式。
如果有了解 Servlet 监听器或消息中间件的 发布 / 订阅 模式的应该很好理解观察者模式。
学无止境,天天向上。
向优秀者学习,向优秀项目学习。
– 致敬Github上开源的知识库
状态这个词较好理解,生活中很多事物都会有状态,有不同的状态,状态是可转变迁移的。例如 人有精神状态、身体会有疲劳状态或打鸡血状态。
在系统开发中,程序中有些对象可能会根据不同的状态做出不同的行为,把这种对象称为 有状态(stateful)的对象
,把影响对象行为的一个或多个动态变化的属性称为 状态
。