算法第一章作业

代码规范

接口中分方法和属性,不加修饰符号如:publc,正确为:void f()

longLong,统一用Long类型处理

常量按功能分类归类

if/for/while/switch/do等保留字与括号之间都必须加空格

注释的双斜线与注释内容之间有且仅有一个空格

当字符数超过120个时,换行规则:第二行相对第一行缩进4个空格,第三行开始不缩进

方法参数在定义和传入时,多个参数都厚后边必须加空格

所有相同类型的包装类对象之间值的比较,全部使用equals比较,如:Integer的比较用equals

所有实体类必须用包装数据类型

RPC方法(远程调用方法)的返回值和参数必须使用包装数据类型

所有局部变量使用基本数据类型

定义DO/DTO/VOPOJO类时,不设定任何属性默认值

POJO类必须写toString方法

类内方法定义顺序:公有方法或保护方法 > 私有方法 > getter/setter方法

循环体中,字符串的拼接,使用StringBuilderappend方法扩展

集合转数组,使用toArray(T[] array)带参方法,最好入参数组大小和集合元素个数一致

foreach循环中进行元素的remove/add操作,使用Iterator方式,

HashMap使用HashMap(int initialCapacity)初始化

使用set唯一特性去重,避免使用contains方法遍历去重

SimpleDateFormat线程不安全,使用DateUtils工具类更好

少用if-else,可以使用if() {return ;}

高并发情况,避免使用等于作为中断或者退出的条件,可能出现击穿的情况,使用大于或小于的区间判断

循环体中的语句要考虑性能,定义对象、变量、获取数据库连接,try-catch操作,尽量移至循环体外处理

类、类属性、类方法注释使用/*内容/,不使用// xxx方式

所有抽象方法,包括接口中的方法,必须要用javadoc注释,注释包括:返回值、参数、异常、还指出该方法做什么事情,实现什么功能

枚举类型字段都要有注释

代码修改的同时,注释也要修改,包括:参数、返回值、异常、核心逻辑

谨慎注释调代码,后续要回复的代码逻辑可以注释,永久不用的直接删掉,仓库有保存历史代码

注释的要求:1)反应设计思想代码逻辑;2)能够描述业务含义;

好的命名是自解释了

待办事宜用TODO,错误不能工作的用(FIXME

二、异常日志:

 

trycatch…异常不要用来做流程控制,条件控制,流程条件这些用if等语句处理,trycatch…只用于处理异常

不大段代码进行try-catch,不利于定位问题

捕获异常要处理它,不处理要把异常抛给调用者

方法返回值可以是null,不强制返回空集合空对象,同事添加注释

防止空指针异常,包装类和基本数据类型,数据库查询结果可能为null,远程调用要进行判断,从session中获取数据要进行空指针判断,一连串调用也容易产生空指针异常

应用内部推荐异常抛出,而跨应用间的rpc考虑使用Result方式,封装isSuccess()方法、错误码、错误信息

避免重复代码,重复使用的要抽取

日志文件至少保存15天,有些异常以“周”为频次发生

使用日志框架slf4japi,使用门面模式的日志框架,有利于维护和各个类的日志处理方式统一

日志输出,使用条件形式输出或者使用占位符的方式,如:if() {logger.debug(ok)}

异常信息要包括两类信息:案发现场信息和异常堆栈信息。如果不处理,通过关键字throws往上抛出。如:logger.error(各类参数或对象toString + _+ e.getMessage(), e)

记录日志时要思考:1)日志有人看吗?2)看到这个日志我能做什么?3)能不能给问题排查带来好处

 

 

 

算法之美第一章:

 

 

第一张的标题叫做最优停止算法,文章先从讨论大学生的爱情抉择的问题入手,到底第几个伴侣才是最合适的人选引出了本章的问题,又从辅导员的话“先去收集数据”引出了接下来数学家们探讨这个问题的解决方法,在样数据不断变大中,最优选择的概率会无限接近

37%。同时这个算法又适用于生活中的种种问题,比如秘书问题,租房问题等等。这说明平时我们觉得与生活关系不大的一些算法理论,结论等反而在生活中具有很强的通用性与精准性,在懂得了37%法则后,虽然我们仍有可能无法准确的找到最优的选择,但是至少有了理论的支撑,我们在解决生活中问题时的成功率将会大大提升。

posted @ 2021-09-11 18:26  黄仲祺  阅读(38)  评论(0编辑  收藏  举报