如何写业务代码
业务研发面对的问题 稳定的业务模式 不稳定的需求 业务对交付的渴望 假设 命名规范(《clean code》) 面向对象设计(SOLID原则、贫血/充血模型、设计模式) 系统要拆分流程控制系统与领域系统.drawio 每一个用例(解决的一个问题)都由访问逻辑和执行逻辑组成。访问逻辑负责用例执行的顺序与分支,并调用执行逻辑完成完整业务逻辑。 访问逻辑由单独的交易系统负责。执行逻辑由个子系统负责。 工程要拆分三层架构 + 洋葱架构 代码要拆分 业务代码:描述核心业务逻辑的代码,核心是保持业务的流程及业务状态的一致性 领域对象与领域服务,不得对外部有任何依赖(工具类除外) 最核心的几个抽象: 校验:参数有效性校验、参数的业务属性校验。在进入正常业务逻辑代码前,完成所有的校验工作。 异常:业务异常:所有不符合业务逻辑而产生的异常。 系统异常:因为程序本身or依赖产生的异常。 所有的异常第一位runningtime异常。 数据: 业务数据:保存领域对象状态的数据。...
Idea 的小技巧
调试的时候的断点Suspend Policies Specifies whether to pause the program execution when the breakpointis hit. Non-suspending breakpoints are useful when you need to log someexpression without pausing the program (for example, when you need toknow how many times a method was called) or if you need to create amaster breakpoint that will enable dependent breakpoints when hit. The following policies are available for the breakpoints that suspendprogram execution: All: all threads are suspended when any...
面向好的架构编程
前言本文是《架构随笔》系列的第五篇,也是它的收官之作。 架构的定义架构是一个界定不清的东西,我们很难讲清楚哪些东西是架构,哪些东西不是架构。但软件行业里其实人人都在搞架构,软件设计就是架构本身。 架构这个词出现得很早,有些人认为是 NASA(也可能是NATO)...
性能优化
每个人都应该知道的操作时间出处:《每个程序员都应该知道的延迟数字》
技术拾遗
JavaJava 8LambdaJava 8 Lambdas - A Peek Under the HoodWhat does $$ in javac generated name mean? lambda 表达式并不总是持有外部 enclosing object 的引用,如果它不访问任何外部变量,即不持有这样的引用。只要设计一个对比实验,就会发现引用过外部变量的lambda实例才会产生一个 arg 的隐式参数引用。而内部类内部总是含有一个this$0。 lambda表达式是词法作用域的-意思是不产生新的作用域,不产生任何shadowing问题。它可以无缝访问外部作用域的东西,就好像从一个 if block 里访问一个方法里的其他变量一样。但,同样地,不能声明新变量。
常见故障整理
手写 sqlif 条件的字段为空则不应该拼接条件,是一个很容易被忽略的编程错误。如果线上发生了这个问题,则可能导致数据同步出错。 极度危险的错误元素内容必须由格式正确的字符数据或标记组成,这通常是因为>``<``>=``<=类的标签没有经过转义。 防止手写 sql 被注入所有 condition 用()圈起来。单独在 condition 里面拼装。用 and 来连接这些 condition。 在最外围使用随机化的()来包裹整个 where 的条件,防止有人猜到()的层次。 mybatis 的替换难点#{} 是预编译处理,${} 是直接替换。直接替换会有 sql...
如何摆脱懒惰?
如何摆脱懒惰? 懒,其实只是一个表象,它不过就是「缺乏行动力」的另一种说法而已。 多巴胺的四条回路 回路1-运动回路 回路2-运动回路 回路3:中脑-皮层通路,主要跟决策和行为控制有关 回路4:奖赏回路 中脑-皮层通路 中脑-皮层通路,调控的是我们「做出决策」「选择行动」的动力。当这条回路中多巴胺的浓度超过某个阈值时,我们就会更倾向于「去行动」。反之就容易犹豫不决。 而奖赏回路,调控的是我们的「动机」强度。当它被外部反馈所刺激、激发多巴胺分泌时,我们就会产生「我想做某事」的动机;反之就会感到没有动力、对一切都失去兴趣。 所以,行动力强的人,最主要的原因,是他们大脑中自主产生多巴胺的能力较强,与此同时对多巴胺的阈值足够高,因此他们很容易从外部的反馈中得到激励,反过来,他们也不容易对激励感到「疲劳」或「过载」——...
Spring 数据库的若干种小技巧
常用命令12345678910111213141516171819202122232425262728# 登录服务器mysql -u username -pdev -h hostname databaseName# 如何重命名一个 dbmysqldump emp > emp.outmysql -e "CREATE DATABASE employees;"mysql employees < emp.outmysql -e "DROP DATABASE emp;"# mysqldump 的用法mysqldump -u username -h hostname -ppassword databaseName > /exportpath/dump.sql# 使用 brew 控制 mysqlbrew install mysqlbrew services restart mysql# 登录本机 root 用户mysql -uroot# 使用密码登录本机 root 用户mysql -uroot -p# 标准格式mysql -u...
团队协作的五大障碍
引言企业最根本的竞争优势既不是来自资本实力、发展战略,也不是来自技术,而是来自团队协作,因为团队协作能力是非常强大而且弥足珍贵的。 很多领导者认为,让团队所有成员齐心协力实际上是不可能做到的。 由于团队是由具有各种缺点的人所组成的,这样团队就不可避免地带有其先天缺陷。但这绝不是说团队协作注定要失败,恰恰相反,建立一支强大的团队既切实可行又相当简单,但是却需要克服困难才能做到。 第一部分...
亚马逊发展研究
...