如何设计系统
系统设计心得
1.通过划分实体和确定领域边界,确定设计的业务实体
2.对每个业务实体设计增、删、改、查接口,并且在这些接口前面增加修饰词
3.考虑接口支持批量操作
==============by =============
0.一般的异常栈信息,根源错误是由栈顶错误导致的,并逐级传递。
但是,含有cause by的异常信息要自底向上找错误根源
定位错误的顺序要按照请求的顺序来,按照流程往后找!!!!
1.仔细看抛出异常的原因是什么,从中得到提示对症下药
eg:user的id为空导致的外键异常
2.如果遇到空指针异常,首先要定位到空指针异常的语句是在哪一行。首先要查找的原因是,对象很可能是null
eg:代码提示空指针异常
3.使用一个对象的时候,要考虑,在这之前对象已经存在了怎么办
eg:如session中的order信息
4.如果一个数据的设置不对,就要去找数据设置源头是否成功,数据终点得到是否成功。类似于二分法查找。
数据出错的原因一般是get set方法出问题了
5.能用copy的时候就不要手动打字,容易使代码出错
6.导入一个类,如果这个类不能被加载,很有可能是这个类的字节码没有编译生成
==============by21read=============
1.有些时候发现说是因为Tomcat已经启动而产生的报错,重启电脑是最有效的解决方式;
除此之外,一些已经报错问题的原因已经解决了,但是继续报错,重启电脑也是有效的解决方式。
2.工程之间存在相互依赖的关系时,项目报错,一定要顺着依赖关系去迎刃而解。
================bye3mall============
1.一句SQL无法处理复杂业务场景,那么可以建立一个临时表,用于过度操作
================byUDCar============
1.单元测试所在的类里面不要有显示构造函数,函数不要有返回值
2.要仔细阅读官方文档,对常见工具的使用要熟练
例如:在配置消息队列时
①没有仔细读activeMQ的官方文档(不知道请求的格式)
②不会使用POSTMAN发送POST请求
③不能熟练使用Java 写HTTP的GET、POST请求
④没有admin:admin@的base编码常识,这也和不会熟练使用POSTMAN有关
3.相信一些常用的基本工具是没有错误的,也就是在错误排查时,首先把常用工具认为是正确的
例如:POSTMAN发送请求没有效果,说明请求链接不正确
================byActiveMQ============
1.发送http请求报出no protocol错误,是因为没有URL没有带上http协议
2.发送GET、POST请求,GET和POST要大写
================byPanda============
================投标项目============
================短信平台项目============
1.遇到工具启动,如docker、nginx等出现错误,一定要去看日志,不然解决问题就像无头苍蝇
2.用nginx服务器的windows版本的时候,出现了很多奇怪的玄学情况,立即尝试停机后,是否能继续访问。因为一个很容易忽略的情况是:不小心开启了两个后台nginx,导致修改配置后,没有效果。(所以,建议只进行启动、停止,不要用reload操作)
3.不是业务上必须依赖别人的接口,千万别依赖,要降低耦合为主
4.获取数据或者接收用户数据时要考虑数据出错或没有数据的情况,进行异常处理
5.相信计算机的逻辑一定是对的,有玄学的地方一定是错误源点。(注重逻辑分析,分析所有相关情况,不放过疑点)
首先,根据错误源点分析出可能出错的地方
其次,根据错误源点到可能错误的地方的距离,由近及远的排出错误
6.找错误,首先找到从日志上显示代码最近执行到的地方,然后从这个地方进行逻辑分析,找出可能的bug(这一个过程一定要心细,发现有玄学问题,就回过头再找一下,多半是不仔细导致的)
================日常=====================
1.工具安装或软件使用首先看官方文档,别的博客通常错误连篇,官方文档可以做事提高效率
2.查询R可定要涉及:分页、排序和多条件组合,还有两个维度模糊和精确,查询为空要返回标志位
3.接口要考虑CRUD的前缀条件,以及C是否批量;U中的减法要考虑业务边界问题以及是否批量;D是否要批量
4.数据要考虑加密存储、加密传输问题、备份
5.MySQL数据库要考虑:数据库连接池、分页插件、事务开启
6.调用接口后,系统自动生成的业务参数应当返回给调用者
7.页面显示要考虑没有数据和数据过多的显示方案,后台应该有字段反应是否有数据
8.属性的命名区分度要大(通过命名的首部或尾部能一眼看出区别,而不是中间有区别)
9.设计接口或操作,要让陌生人在不知情的情况下,按照一般逻辑,也能操作正确。总得来说就是一句话:习惯优于配置
================并发诡异问题=====================
1.如果使用了多线程,某块代码被执行多次,这就是并发导致的问题,可以通过加锁解决
2.如果线程不知道去哪儿了,一定是在某个地方死循环了,重点检查含有循环的代码