![](https://img-blog.csdnimg.cn/20190918140213434.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
实践经验总结
文章平均质量分 75
记录工作过程遇见的问题,累积技术经验
欧阳田
生活没有对与错,一路爬行。
展开
-
java的Exception方法printStackTrace()不打印日志?
背景记录java的Sytem.out与System.err区别e.printStackTrace()与Sytem.err的关系在生产环境在捕获到异常的时候调用e.printStackTrace(),然后又立即调用log.info()打印日志,可能会出现什么问题?是顺序输出日志的吗?e.printStackTrace()一定会打印日志吗?过程现象测试代码public class JsonTest { public static void main(String[] args原创 2021-05-29 11:30:18 · 5792 阅读 · 0 评论 -
踩坑后整理一些思考和做法(总结一)
背景在实践过程中,总有一些做法和思路是不太好的。究竟怎样的思考和做法,才会合乎标准或者说达到自我满意的感觉?过程修改代码?需求变更,是需求本身变化,还是在已有的基础上扩展需求?有些需求,不需要修改代码,有些需求,是需要修改代码的。不是不修改,而是修改少量代码,下策。需求来了,应该是扩展代码,添加起来非常容易,上策。有的时候通过配置化达到扩展也是非常有必要的。因为想要完全做到,对修改关闭,对扩展打开,是不可能的。因此依据在实践中学到的经验,做出一个非常合理的决定,也是非常好的。对接外部系统的思原创 2020-10-25 15:46:51 · 269 阅读 · 0 评论 -
在实践中常用的两种分割集合中元素的方法
背景有些时候,需要把集合中的元素,用逗号进行分割。记录两种常用的处理方式。过程经典分割写法 public static String convertToDelimitedString(List<String> list) { StringBuilder resultString = new StringBuilder(); if (list != null) { for (String result : list) {原创 2020-09-22 09:07:32 · 720 阅读 · 0 评论 -
写java代码的通用套路和技巧
背景记录写代码的通用套路。过程代码过程演示controller层统一响应码标准。 比如成功的响应码是 0统一返回类, Result统一业务异常类, BizException统一断言类, Asserterservice层业务逻辑的抽象层分离。这个就非常有难度。根据参数去数据库查询,对查询结果进行非空判断。 一旦去数据库查询,则一定要对查询的结果进行判断。如果为空,且业务逻辑是需要有数据的,则抛出异常。判断字符串为空的时候,使用StringUtil即可。判断集合为空的原创 2020-09-04 18:42:15 · 567 阅读 · 0 评论 -
遗传迭代算法完成组卷
用遗传迭代算法完成组卷 1, 任务:使用遗传算法完成组卷过程。 2, 挑战:遗传迭代算法本身有一定难度理解。 3, 遗传算法解决了什么问题? 是解决搜索问题的一种通用算法,对于各种通用问题都可以使用。 4,遗传算法过程。 a, 初始化 b, 个体评价 c, 选择算子 d, 交叉算子 e, ...原创 2018-02-18 21:12:36 · 823 阅读 · 0 评论 -
支付与对账逻辑代码重构
支付与对账逻辑代码重构 1,国考系统是一个有10多年的老项目。代码结构组织不好,给维护者造成很多困难,因为没法理解它究竟是怎样做一件事的。2,代码繁琐。全程的 if else 语句,方法杂糅。 3,基于上面原因,花费了大量时间,单步调试系统。先理解业务逻辑,确保自己在重构的时候心里踏实。虽说重构代码并不需要理解代码行为,但在需要重写算法逻辑时,还是需要理解程序行为。 4,整理出需要什么样的接口...原创 2018-02-18 20:58:50 · 1047 阅读 · 0 评论 -
Jmeter测试过程需要使用的工具
Jmeter测试过程经验总结采用Jmete作为测试工具。针压力进行测试。看能够支持多少人同时在线考试。 IE采用HttpWatch工具,当然也可以使用WireShark进行抓包分析。 Firefox采用强大的firebug,进行查看详细信息。 Chrome采用开发者工具进行分析。 非常清晰地统计每次请求响应了多少数据量,然后进行相应处理。比如使用gzip。 中间件是Tomcat,采用probe进行...原创 2018-02-17 23:38:45 · 346 阅读 · 0 评论 -
试题扩展类设计
试题扩展类设计为什么会做这件事情?1,很多时候,我们自己是无法预测后面可能面临的问题。既然是自己遇见了这样的问题,理应把它解决好。2,随着需求的增加,代码量也在增加,如果是面向过程型的编码,一般来说,每一次添加需求,都会增加 if else来解决问题,也会修改原来的代码,这样会引入Bug。3,而自己也要在原有的基础上扩展不同的题型。十分不好扩展。原创 2018-02-07 20:18:34 · 363 阅读 · 0 评论 -
解决当考生点击开始考试的时候出现卡顿问题
现象:210多人考生同时参加考试,出现卡顿现象。并且部分考生进行考试过程中出现获取试题卡顿现象。分析问题:主要进行应用程序分析。是因为当考生点击开始考试的时候,会把本次考试的答题结构插入到表中。假如有100道题。100*210=21000条记录插入到表中。然后先抢到资源的考生,也就是把答题结构给写入数据库中。正常答题。可是还有大部分考生出现卡顿情况,这个过程中有答案原创 2018-02-06 22:58:36 · 811 阅读 · 0 评论 -
在线测评系统登录问题解决过程
问题:300多人同时登录的时候,有部分考生登录不上系统,并出现卡死现象。需要关闭浏览器,重新登录。分析问题:1,从浏览器到服务器,从HTTP请求到响应的全部过程进行分析。(HTTP(响应了多少数据),中间件(配置多少线程),应用程序(登录是否存在逻辑问题),JVM(参数是否不合理),操作系统,硬件(学校带宽,CPU利用率,磁盘利用率,内存利用率)都需要思考)。2原创 2018-02-06 22:28:39 · 2100 阅读 · 1 评论 -
导出医疗卫生测评报告
导出测评报告任务:根据文档需求,完成医疗卫生测评报告的导出。按照年龄段,性别,职称三个方式。 挑战:实现上:年龄有三段,性别两种,职称四类。需要导出9种结果(即使测试结果是同一个分数,导出的结果都应该不一样)。代码上:原来是面向过程编码,if else 方式,我不能继续else if 下去了。分析问题: 1,原来项目中已原创 2018-02-04 19:10:35 · 297 阅读 · 0 评论 -
优化座位编排算法思考过程
座位编排算法任务:提高座位利用率,优先代码结构。问题描述:在实际考试的机房中,存在大量考试机未被使用的现象。造成物力人力的不合理。挑战:座位编排算法复杂,代码结构不清晰,代码量接近1万行(十年前写的)。因为本算法是公司最难的一个算法。所以想要读懂这个座位编排算法本身就有难度。 思考方向1,可以自行设计一个更好的算法实现座位编排。原创 2018-02-04 19:11:26 · 2201 阅读 · 0 评论 -
在线考试系统经验累积
项目是一个在线考试系统。目标是在单个服务器上支持400人同时在线考试。这个过程很漫长。产品服务于小型学校。前期,去学校采集用户需求。整理需求点,非常详细具体。记录会议纪要。中期,根据需求点设计物理模型,索引。把功能点非常详细地写入文档。尽可能考虑到后期需要扩展的地方,采用设计模式比如,题库中的试题的题型,这个点就是后期最可能发生扩展的地方。采用模板方法模式搭建好原创 2018-01-25 23:09:31 · 964 阅读 · 0 评论 -
struts零散知识累积(一)
理解每一个类是什么作用,然后她们相互之间如何协调工作的。原创 2017-05-28 16:13:24 · 241 阅读 · 0 评论 -
一个完整项目过程
记录一些基本信息,让知识系统化。理解生命周期,明确自己的位置在哪儿,自己应该做些什么,哪些是重点,哪些才能花更多时间。原创 2017-05-28 15:07:40 · 1118 阅读 · 0 评论 -
word试题模板设计总结
记录word模板设计过程,一般来说,设计格式大体相似。一般的思路都是一道题的信息全部标识出来,但是项目中我使用的第二种,把一件事情拆开,分成两部分做,把两部分结合起来,一件事就算完成。并且再做完后,发现模板设计不怎么好,如果把答案和题目信息放在一起来操作就好了,这样子简化了不少。但是原来这么操作对于解析过程和操作过程确实有点儿复杂,算是锻炼了自己吧。但是,发现问题还是要及时解决。这个模板需要再次优化。原创 2017-05-28 11:18:56 · 752 阅读 · 0 评论 -
项目零散知识积累(三)
分析与理解项目中的重要逻辑。这样做了以后,逻辑更加清晰而且也分析出sql写的怎样,对表关系和业务关系两者更加清晰。原创 2017-04-23 07:56:17 · 300 阅读 · 0 评论 -
项目零散知识积累(二)
由于动手实践,产生感悟。把自己认为有些价值的内容进行记录。以及一些现象的分析和问题的记录。原创 2017-04-22 17:06:29 · 331 阅读 · 0 评论 -
项目代码规范(一)
代码规范的一些基本知识积累原创 2017-04-15 21:26:02 · 422 阅读 · 0 评论 -
项目零散知识积累(一)
记录工作中遇见的一些问题,及相应的处理方法。积累这些小知识。积累项目中的小逻辑。积累项目中逻辑漏洞。积累各种方式的写法。积累跳出思维方式。积累抽象关键字的能力。原创 2017-04-15 17:58:28 · 459 阅读 · 0 评论 -
bug调试过程简单分析与小结(一)
工作过程中修改bug后。过程分析记录。心得体会记录。记录自己如何做?做了些什么?过程中对bug的定位,分析,解决。以及面对一些不能解决的问题,学会请教。原创 2017-04-08 08:52:56 · 762 阅读 · 0 评论 -
多租户过程记录三
由于,想登录者输入租户号,又怕其随便修改租户号在登录,对此作出一个分析。根本不需要进行加密呀,路径输入什么参数呀之类的。这些东西即使可见,又没有什么的,后台接受到参数都会进行参数的合法性进行判断的。而且屏蔽掉url的参数,意义何在?原创 2017-03-26 22:14:17 · 724 阅读 · 0 评论 -
多租户过程记录二
为了实现不同的租户拥有不同的功能,添加一张中间表进行维护关系。对比之前创建一个租户给这个租户创建一个角色和现在采用在用户表中当前用户是否有角色进行判定为一级用户还是普通用户。一级用户则利用tenant-function进行维护关系,如果为普通用户则利用role_function进行关系维护。注意资源的可见范围性。对于AngularJS这个路由中的参数屏蔽,则目前没有想到办法。原创 2017-03-26 17:07:02 · 603 阅读 · 2 评论 -
多租户过程记录一
项目实现多租户这个功能。多租户概念来源,设计过程,过程遇见问题的处理,潜在问题的考量,设计过程的修改。原创 2017-03-26 16:14:44 · 1507 阅读 · 2 评论 -
项目oracle转mysql记录
记录大致流程以及遇见的问题,并对问题进行分析,找到问题出现的具体位置,分析问题的原因,思考是数据库层面作修改还是java代码进行修改。有些问题虽然简单,但是找问题的具体位置和分析问题的原因的手段和方式是可以熟记并随时准备更新。原创 2017-03-18 10:51:15 · 1566 阅读 · 1 评论 -
在编码过程中,对需求的深刻理解
背景刚入行的时候,更多考虑的是:需求是否有难度,是否能够在规定的时间内完成,而在设计层面是缺乏思考的。在知识和经验不足的情况下,是不知道该怎么办的。也不知道一件事情的标准做法是什么。做了三到四年的时候,发现原来的思路其实是错误的,需要转变过来。需要培养一个意识,那就是如何对需求进行设计上的考量。做到5年的时候,就会效率高,质量好。过程写的不是代码,而是自己与别人沟通后的理解。如果能够很好的理解别人需求,那么代码写出来的质量就特别高。多问:需求的使用场景?需求的意义?需求不明确,整体脉原创 2020-08-29 16:28:32 · 986 阅读 · 0 评论 -
工具sublime实践使用记录
背景sublime安装pretty json插件,优化json数据格式。sublime进行批量操作。过程sublime安装pretty json插件在sublime的编辑界面,按快捷键: ctrl + shift + p选择Package Control: Install Package输入插件名称:pretty JSON使用:把json数据格式,粘贴到编辑界面。优化:ctrl + alt + jsublime进行批量操作快捷键: shift + 鼠标右键结果:原创 2020-07-31 13:57:56 · 173 阅读 · 0 评论 -
工具postman使用实践过程记录
过程记录postman的控制台打印信息。记录postman如何写脚本。记录sublime格式化json。记录sublime的批量操作。过程postman控制台(View-> Show Postman Console)在postman中写js脚本并在控制台打印请求之前执行脚本写的位置及内容接收响应信息的脚本变量取值方式测试结果小结记录postman简单使用过程。...原创 2020-07-30 18:14:05 · 212 阅读 · 0 评论 -
idea最有效快捷键
背景记录在实践过程中,最常使用的快捷键。过程ctrl + alt + o 删除未使用的包名,导入新的包名。ctrl + alt + t 模板式代码ctrl + alt + m 抽取方法ctrl + alt + l 格式化代码ctrl + alt + 左方向键 退回到上一个操作的地方ctrl + alt + 右方向键 前进到上一个操作的地方ctrl + alt + v 命名变量。 当写下new object();按ctrl + alt + v试试ctrl原创 2020-07-30 16:10:02 · 203 阅读 · 0 评论 -
递归算法的实战
背景一般在什么样的场景下,会使用递归算法?递归算法的固有写法是什么?过程场景组织机构这样的数据结构,一般就可以采用递归去写一些业务逻辑。存在父节点子节点这样的数据结构,一般也可以采用递归算法写业务逻辑。有上下关系,有父子关系,有层层嵌套的关系。都可以使用递归写,这样逻辑会更加简单。实例node实体@Data@NoArgsConstructor@AllArgsConstructor@Builderpublic class Node { private in原创 2020-07-28 08:06:13 · 226 阅读 · 0 评论 -
总结与感悟
背景记录在工作中需要分析和思考到的点。过程需求如果需求不合理,就得委婉表达这个需求无法做。换一种实现方式。如果需求要修改系统原有设计,就得表明需求无法做。换一种实现方式,因为重新设计一套系统,费时费力。如果需求要动一些框架的代码,比如使用activiti做加签操作,则也是一个非常难的需求。即使不修改框架代码,也需要花费大量的时间理解到activiti是怎样工作的,才有可能写出来。根据时间周期和项目已有设计,适当调整一下需求,不要非常教条,需求是怎样就一定要做成怎样,可以适当调整一下。只原创 2020-07-27 07:20:06 · 172 阅读 · 0 评论 -
技术学习方法论思考与总结
背景总结自己的学习技术的方法论,抛出来,让大家评论,无论好与坏。推荐阅读,自己对Netty学习而总结的学习技术方法论 学习一门新技术的套路推荐阅读,自己是如何剖析ThreadLocal知识的?探索一个知识点的套路过程可以拿来就用的实践套路 - 层次探索如何去探索一个知识点?层次探索。套路就是像ThreadLocal这样。基础知识及其应用、注意事项及其解决方案、工作过程、源码剖...原创 2020-03-09 00:36:15 · 411 阅读 · 1 评论 -
技术层次级别的理解
背景记录陈皓大叔对技术层次级别的理解过程通过学习ThreadLocal相关知识,加深了对技术层次级别的理解。过程陈皓大叔对技术层次级别的理解对于相关的技术领域还不熟悉。可以读懂这个领域的基础知识。可以实现一些小的改动,清楚基本原理,并能够在简单的指导下找到更多细节。基本精通这个技术领域,完全不需要别人帮助。对这个技术领域非常熟悉和舒适,可以应对和完成所有的日常工作。对...原创 2020-03-08 23:32:52 · 1151 阅读 · 0 评论 -
前后端分离,对后端接口设计的思考
背景一线城市很多公司都实现了前后端分离的开发模式。除去所谓的Restful接口设计模式,如何来设计接口呢?基本信息:项目有中文版和英文版,也有稳定区和创新区,这里的稳定区和创新区只是一个业务逻辑上的一个概念。需求:我们需要查询项目,而条件是中文还是英文,稳定区还是创新区。这里主要分析是通过接口类别来隔离业务逻辑,还是通过一个接口的参数不同来区分业务类别呢?过程思路一:后台接口设计...原创 2019-10-14 23:08:35 · 1326 阅读 · 0 评论 -
面对问题我应该如何去思考?
还是得找出问题的原因不可能不理解问题,然后解决问题。所以,无论是自己对知识陌生还是熟悉,都需要去捋顺逻辑过程,补充相应的基础知识。之所以未能够解决问题,是因为对它不了解,如果了解,一般来说都会解决问题的。解决问题,不是凭空想出解决方案的,一定是根据报错信息按图索骥的。定位问题具体发生在哪儿了。定位到问题,然后理解问题发生的原因。如何找出问题的原因在这个过程中要去思考,我得有很多的假...原创 2019-02-02 12:52:17 · 1117 阅读 · 0 评论 -
IntelliJ Idea 常用快捷键记录
更新代码的快捷键Ctrl + O 重写方法Ctrl + I 实现方法Ctrl+Alt+O 优化导入的类和包Alt+Insert 生成代码(如get,set方法,构造函数等)Ctrl+Alt+T 环绕if esle或者 环绕try catchALT+回车 导入包,自动修正ALT+/ 代码提示CTRL+J 自动代码,为开发者自动生成一些代码,比...原创 2019-02-04 08:11:35 · 252 阅读 · 0 评论 -
Linux上搭建Nginx环境记录过程
目的Linux上搭建Nginx环境操作过程记录查询Linux操作系统是否安装Nginxrpm -ql nginx如果安装了话,会打印出Nginx安装的路径。在线安装Nginxyum install nginxyum 在线安装会将 nginx 的安装文件放在系统的不同位置,可以通过命令 rpm -ql nginx 来查看安装路径。而且可以找到相应的配置文件信息位置。在...原创 2019-03-29 22:11:11 · 254 阅读 · 0 评论 -
Linux上安装pip和pandas
目的在Linux上安装pip和pandas,并记录两个关于Python编码问题。安装pipwget https://bootstrap.pypa.io/get-pip.pypython get-pip.pypip -V注意这个V是大写的。安装pandaspip install pandas意思是从远程下载pandas这个库,因为我自定义的py文件依赖pandas这个库。就像我...原创 2019-03-29 22:26:57 · 10868 阅读 · 0 评论 -
Maven知识
在IDEA编辑工具,tomcat8.0,Maven3.5.3,JDK1.8。启动Tomcat时候如下错误:16-Jun-2018 19:21:54.538 严重 [RMI TCP Connection(3)-127.0.0.1] org.apache.catalina.core.ContainerBase.addChildInternal ContainerBase.addChild: start...原创 2018-06-16 20:09:53 · 171 阅读 · 0 评论 -
云服务发邮件问题
1,在本地windows下,使用tmps.163.com端口25,JavaEmail进行发邮件能够成功。2,在云服务器,linux下发邮件不成功。 原因:a,windows的逻辑盘符是C,D,E,F.......; linux的逻辑盘符是/(根目录)。发送过的邮件存储位置。 b,linux可能解析不了域名?修改成IP地址,试了,不是这个问题。 ...原创 2018-06-21 14:04:13 · 388 阅读 · 0 评论