Spring+SpringMVC+MyBatis+easyUI整合优化篇(十四)谈谈写博客的原因和项目优化
阶段总结
又到了优化篇的收尾阶段了,这其实是一篇阶段总结性的文章,今天是4月29号,距离第一次发布博客已经两个月零5天,这两个多月的时间,完成了第一个项目ssm-demo的更新,过程中也写了33篇博客来对项目进行讲解和分析,更多的应该是自己的心得体会,把一些想表达的东西写在博客中展现给大家,这个过程对我的提升是很大的,我发现自己在写作能力、语言组织、时间分配、潜力挖掘....等方面还是有继续进步的空间,对我的影响也比较大,生活和工作也有了一些变化,因为一开始我对这件事是持着恐惧和推脱的态度的,但是现在看来,我应该已经克服了心中的惧怕也改正了自己的态度,如果对你也有帮助的话,那是最好不过了。
所有的博客都是以代码的更新为基础来创作的,博客中的文章基本上不会独立于代码存在,这也是我一开始就想要做到的事情,源码完备才去写博客,不然我写的文字再多,文章中再多的长篇大论,身为读者的你可能看完了没什么太多感觉,因为你手里空空的,没有实际体验过,也就无法知晓和了解其中的道理和原因,那我觉得我写的这篇博客其实对你并没有太大的帮助。其次就是博客的连续性,我这段时间也一直在持续的更新这一系列的博客,个人来说,觉得这种方式可以给身为读者的你营造一种氛围吧。
其实在系列博客的第一篇就有列过一个大纲,是有一个清晰的写作计划的,中间因为加了图片和文章两个功能以及一些日常的琐事影响,使得后面的几篇文章没有按照计划来进行写作和发布,不过相关知识点会在后续文章中补充,在此不做赘述。整合优化篇这一阶段的所有文章到这里已经更新完了,下一阶段的更新是整合进阶篇,有时间的话就继续更新,开发任务最近比较多,只能抽出晚上的时间,所以不确定性还是有的。
写博客是为了什么
还是问自己一个问题,我写博客是为了什么,这一次的总结和第一次的阶段总结有没有什么不同,说真心话,和上一次阶段总结的感触也是有诸多类似之处的,首先,越来越认同和理解完成一篇博客不是一件简单容易的事,其次,如果不迈出第一步,事情永远也做不好,再者,又一次认识到自己的不足,写了这么多篇博客,才发现以往的知识多么匮乏,掌握的也不全面,通过这个过程又重新体验了一次学习知识的过程。比如前两篇发布的文章,为了文章的详尽和完善,差不多占用了六个晚上的时间,不仅仅是时间上,对于精力、知识点的掌握程度都是考验,不过,考验也使得自己不断的进步,这也是极好的,我会继续承担和享受这份考验。
开始写博客之前,我就质疑过自己,文章是那么容易就写出来的?表达能力不是很强的我能写出一篇博客吗?写出来的东西会有人看吗?直到现在我还是会问自己这些问题,当然,按时更新博客的这个过程中也越来越认识到自己的书面表达能力及写作能力很差,但是这个过程让我慢慢进步,两个多月的时间也使我从一个写作的菜鸟成长为一个蹩脚的入门者,如果70天前的我因为不自信和畏惧写作而一直没有开始进行这个任务的话,我可能永远在原地踏步,书面表达能力及写作能力就一直停留在"很差"的阶段,也因此,我以后会继续抽出时间做这个工作,益处多多,不仅仅是在表达能力和写作能力,对自己的技术能力提升也有很大的推动作用。
完成一篇博客其实是知识整理和思维表达的一个完整的过程,通过对技术点的整理及自己的心理活动思路完整的记录和表达,丰富和润色自己的技术道路的每一站,通过对知识碎片的整理和整合逐步完善和清晰了自己的技能栈,由开始的想表达自己,到学习和筛选资料,再到整理和完善一篇文章,过程中既审视了自己的现有知识及掌握程度,同时又学习和梳理了与之关联的新知识点,这个过程就是知识的转化和内化的过程,也即是我们想要的回馈,最终受益的是自己。
谈何优化
记得曾经我跟过的一个技术负责人,在一次一个功能迭代上线之后,他针对我的代码找我谈了话,交谈过程中应该是很克制的跟我讲了一些他的想法,总结起来就是写得不规范,代码乱糟糟,命名乱写、方法体不严格、大括号用的不对、if else条件表达式不规范...挺多的问题吧,反正当时我听到有人这样说我的编码能力的时候是很不能接受的,有些抵触,我现在还记得当时我的想法,都已经写好的代码、实现好了的功能,为什么还要我费力去改,这不是典型的闲着没事干么?因此我的态度就是回避和拖延,拖了几天根本没去改过代码,也压根没有把这个事情当回事儿,可能那时候我脑袋里还有一个想法,就是觉得这个人没事找事,故意想刁难我吧。因此我也根本没有去审查代码,也根本没有去做代码规范这件事,没有重视它,因为脑海里根本没有这个概念,代码的脏乱差我才不去管,我只要实现功能就好了,优化的事情以后再说,但是这个"以后"其实就是堂而皇之的欺骗自己,"以后"基本就是无限期的拖延。
然后就有了后面的故事,他花了一些时间去把我负责的那部分代码一行一行按照规范修改掉了,对,是一行一行,他也没跟我说,就那样默不作声的改完了,我从代码库里拉取下来的代码已经是修改好了的,当时的感觉真是有些羞愧,对自己的态度有些失望。其实我就是懒,不想去改这些东西,也觉得没必要,总结起来就是懒得去迈出第一步,或者说不想也不敢去否定以前的自己,我感觉那些代码虽然不好看,甚至可能出错,我也不想去改,因为我觉得那是自己写的代码,是自己的劳动成果,即使有些瑕疵也不能改变这个事实,自己不想去否定以往的自己,不敢去直视自己曾经犯的错误,这些因素汇总起来就造成了编码质量烂的结果。 但是当我看到整洁规范的代码之后,真的犹如被泼了一盆冷水,崭新的代码真的要比原先的代码看着要舒服很多,而且一些有隐患的代码块也被修改,脑海中关于代码整洁的观念也因为这件事发生了改变,我觉得修改以前的代码很痛苦,连自己都不想去修改自己的烂代码,那让一个人去修改另外一个人的代码是不是更痛苦呢?推己及人,我无法做到他那样,我连自己的都不想改,更别提别人了。既然是错误的习惯就应该去改掉,没有其他的做法,因为谁也不想每天被产品和测试追着改bug,每一个bug的出现都是对自己的惩罚,不想被惩罚的话就认真点吧。
这件事情我到现在还记得很清楚,为什么?因为这件事极大程度的放大了我的缺点让我可以清楚地认识到自己的不足之处,也可以说给了我一个警醒,不好的习惯只会使自己变得越来越糟,选择逃避不能解决问题也无法使自己变得更优秀,我心里一直觉得我是一个追求上进渴望变得优秀的人,但是我的态度却是逃避,做法是拖延,逃避和拖延与我心中的自我认知完全是南辕北辙,我好像并不是我自己认为的那么上进、那么认真。
那个时候的自己纯粹是一个愣头青,头很铁,上面的这个小故事只是很多事情的其中一件而已,但是从这件事情也大致能清楚当时的我是一个什么状态,现在想想,也就是两个主要的问题:态度和执行力,逃避和推卸的态度固然不可取,"我想"或者"我认为"的超低效率的执行力也是远远不合格的。
其实静下心来想想,谈到优化项目,这里的优化是指什么呢,优化的又是什么呢?架构?技术选型?底层性能?编码?太多太多东西要学要做了,以致于找不到突破口,乱花渐欲迷人眼,找不到方向,每天就想着要优化,要优化,但是也就是每天想想了,说到要优化什么,要怎么优化,这个就不知所以了,其实项目优化这个概念太笼统了,因为需要优化的地方实在是数不胜数,架构设计、前端UI优化、前端体验优化、前端构建优化、后端性能优化、接口响应速度优化、接口服务化、集群优化、拓展性优化、数据库优化、CDN优化、缓存方案优化、搜索引擎优化、服务器安全加固优化......需要做的事情和要解决的项目问题数量犹如天上的繁星,而且由于项目所处的阶段不同或者项目所面临的主要瓶颈的不同,对应的优化方案和做法也大相径庭,所以,还是要清楚主要矛盾,对项目有一个宏观视角的认识。空话说完,回到现实吧,究竟该做些什么呢?
33篇博客不是一天写出来的,ssm-demo项目也不是一天做出来的,话要一句一句说,路要一步一步走,首先要做的其实就是端正自己的态度,也改正自己的不良习惯,这应该是最基础也是最简单的事情了,然后再去谈项目层面的优化、代码层面的规范和优化、数据库或者服务器的优化,在这之前最重要的是优化自己,不要急躁,做好眼前的事情,然后再去做接下来的事情。
回到博客中,在整合优化这一阶段,不像前一阶段会更多的在maven、git等项目工具上做介绍,更多的工作都是在针对代码做写修修改改及数据库层面的优化修改,其实就是在做一个规范,这里所说的规范不是针对某个人的规范,而是大家普遍接受和认同的规范才是一个合格的规范,有人肯定会说,"我不喜欢条条框框,规范这种东西不适合我",这种说法可以说是抬杠了,端正的态度、良好的习惯和优秀的项目规范并不是去约束你,规范也不等于条条框框,不要偷换概念。
心得
端正态度:认清自己,知道自己的本职工作,切忌走马观花,清楚的认识到自己想得到什么,愿意付出什么,曾子说过"吾日三省吾身",我们即使做不到一日三省,也要时常问问自己,和自己的心对话,比较一下心中认为的自己和现实中的自己是不是同一个人。
不会就去学,网上教程那么多,京东书城里技术书籍那么丰富,怎么会没方向呢?说到底不就是一个"学"咯,无非是你想不想而已。当然,既然学就要掌握,不要今天看到这个技术挺新鲜,学了几天扔掉又去追另外一个知识点。碰到问题了,也不要总停留在"我不会"的阶段,习惯性的Say No,习惯性的逃避推脱,是一种否定自己的表现,总是否定自己肯定是对自信心和进取心的一个伤害,成年人了,该承担的应该去承担了,你不是一个孩子啦,不会,那你他喵的就去学啊!
要么滚,要么迎着耳光站稳。
良好的习惯:
人生不是百米赛跑,而是一场路上有阴有晴的马拉松,我们的技术生涯也一样,坚持,不要轻言放弃。
时间管理。这两个多月让我发现了我的时间其实那么多,只是原来没有好好的规划和利用,我觉得所有人都一样吧,不要把时间花在一些无所谓的事情上,你来管理时间,而不是时间管理你,做好自己的时间管理者,成为一个更优秀的人,多说无益,自己体会。
善用工具。提高工作效率,提升生活品质,不管是工作中还是生活中,如果能通过一个工具能减少所花费的时间成本和提升直观感受或使用体验,这种类似的工具一定要多用。
投资自己。做法呢?健身和学习,身体是革命的本钱,一个健康的体魄也是对未来最好的投资,至于学习无非是买几本书或者买些教程,这些钱所买到的书籍是有价的,你学到知识后创造的价值肯定远远超过你购书的开销。
我不是一个喜欢说教的人,如果你觉得有这种感觉的话,那么应该是我写作表达的问题,很多话其实是说给自己听的,以上。
Spring+SpringMVC+MyBatis+easyUI整合优化篇(十四)谈谈写博客的原因和项目优化的更多相关文章
- Spring+SpringMVC+MyBatis+easyUI整合基础篇(四)代码简化
点这里看实际效果! 账密:admin 123456 敲了一天的代码,有些烦,感觉前一篇文章写的太笼统了,哈哈哈. 本来呢,也就是刚开始写,所以很多细节都想不到,源码也放上来了,自己动动手应该也 ...
- Spring+SpringMVC+MyBatis+easyUI整合进阶篇(十五)阶段总结
作者:13 GitHub:https://github.com/ZHENFENG13 版权声明:本文为原创文章,未经允许不得转载. 一 每个阶段在结尾时都会有一个阶段总结,在<SSM整合基础篇& ...
- Spring+SpringMVC+MyBatis+easyUI整合基础篇
基础篇 Spring+SpringMVC+MyBatis+easyUI整合基础篇(一)项目简介 Spring+SpringMVC+MyBatis+easyUI整合基础篇(二)牛刀小试 Spring+S ...
- Spring+SpringMVC+MyBatis+easyUI整合进阶篇(六)一定要RESTful吗?
作者:13 GitHub:https://github.com/ZHENFENG13 版权声明:本文为原创文章,未经允许不得转载. 写在前面的话 这个问题看起来就显得有些萌,或者说类似的问题都有些不靠 ...
- 如约而至,Java 10 正式发布! Spring+SpringMVC+MyBatis+easyUI整合进阶篇(十四)Redis缓存正确的使用姿势 努力的孩子运气不会太差,跌宕的人生定当更加精彩 优先队列详解(转载)
如约而至,Java 10 正式发布! 3 月 20 日,Oracle 宣布 Java 10 正式发布. 官方已提供下载:http://www.oracle.com/technetwork/java ...
- Spring+SpringMVC+MyBatis+easyUI整合基础篇(十二)阶段总结
不知不觉,已经到了基础篇的收尾阶段了,看着前面的十几篇文章,真的有点不敢相信,自己竟然真的坚持了下来,虽然过程中也有过懒散和焦虑,不过结果还是自己所希望的,克服了很多的问题,将自己的作品展现出来,也发 ...
- Spring+SpringMVC+MyBatis+easyUI整合基础篇(十一)SVN服务器进阶
日常啰嗦 上一篇文章<Spring+SpringMVC+MyBatis+easyUI整合基础篇(十)SVN搭建>简单的讲了一下SVN服务器的搭建,并没有详细的介绍配置文件及一些复杂的功能, ...
- Spring+SpringMVC+MyBatis+easyUI整合基础篇(六)maven整合SSM
写在前面的话 承接前文<Spring+SpringMVC+MyBatis+easyUI整合基础篇(五)讲一下maven>,本篇所讲述的是如何使用maven与原ssm项目整合,使得一个普 ...
- Spring+SpringMVC+MyBatis+easyUI整合基础篇(八)mysql中文查询bug修复
写在前面的话 在测试搜索时出现的问题,mysql通过中文查询条件搜索不出数据,但是英文和数字可以搜索到记录,中文无返回记录.本文就是写一下发现问题的过程及解决方法.此bug在第一个项目中点这里还存在, ...
随机推荐
- cuda线程/线程块索引小结
内建变量: threadIdx(.x/.y/.z代表几维索引):线程所在block中各个维度上的线程号 blockIdx(.x/.y/.z代表几维索引):块所在grid中各个维度上的块号 blockD ...
- requireJS 从概念到实战
requireJS 可以很轻易的将一个项目中的JavaScript代码分割成若干个模块(module).并且requireJS推荐一个模块就是一个文件,所以,你将获得一些零碎的具有互相依赖关系的JS文 ...
- unity3d屏蔽Windows10输入法
在win10上,如果安装了某些输入法(比如QQ输入法),会造成unity的键盘事件被输入法捕获而不能触发的情况.只有将输入法切换到英文状态下才能响应键盘事件. 解决办法有, 1:用户主动切换输入法,甚 ...
- vue.js中,input和textarea上的v-model指令到底做了什么?
v-model是 vue.js 中用于在表单表单元素上创建双向数据绑定,它的本质只是一个语法糖,在单向数据绑定的基础上,增加了监听用户输入事件并更新数据的功能: 对,它本质上只是一个语法糖,但到底是一 ...
- POJ1185炮兵阵地【动态规划】
炮兵阵地 Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 26892 Accepted: 10396 Descriptio ...
- 关于ng路由的传参问题(传递一个,多个参数)
在ng的页面条转传参数的方法,ui-sref,$state Ui-sref:用于html页面进行单页面的跳转 $state:用于js代码中跳转 重点:明确传递方,接受方 [传递单个参数] 对于传递方: ...
- TCP/IP笔记(四)IP协议
前言 IP相当于OSI参考模型的第3层--网络层:主要作用是"实现终端节点之间的通信"又称"点对点通信". IP作为整个TCP/IP中至关重要的协议,主要负责将 ...
- 玩转 SSH(七):使用 dubbo + zookeeper 实现服务模块化
一.创建 SSMVCAnnoDemo 项目 点击菜单,选择“File -> New Project” 创建新项目.选择使用 archetype 中的 maven-quickstart 模版创建. ...
- 5.Redis常用命令:Hash
我们可以将Redis中的Hashes类型看成具有String Key和String Value的map容器.所以该类型非常适合于存储值对象的信息.如Username.Password和Age等.如果H ...
- 第一个python爬虫程序
1.安装Python环境 官网https://www.python.org/下载与操作系统匹配的安装程序,安装并配置环境变量 2.IntelliJ Idea安装Python插件 我用的idea,在工具 ...