程序人生

在我读研期间,曾经有一位教授令我感触特别深,现在跟很多刚入行的朋友们聊的时候,我也经常会把他对我的影响搬出来说。他并不是我们学院长期任教的讲师,而是来自美国普渡大学的教授,他只教了我们一个学期的课,而且是一门前沿技术研究的特殊课程。现在回想,还是感到非常的幸运,因为如今的我,有很多方面的塑造可能都受到了他的影响。 这位教授跟我的直接接触非常少,甚至可以说没有,他可能都不会记得我这样一个人。但是在他任教的那一个学期的课中,却对我产生了极大的影响! 大到什么程度?可能有点像蝴蝶效应!为什么这么说呢? 因为他令我感触最深的点非常特别,并不是因为他给了我大学生涯以来最高的一次单科成绩,也不是他在什么方面给予过我极大的帮助等等这些大家可能会猜测的方向。我现在印象最深刻的只有他在上课时候闲扯说的一句话,以及他所任教这门课的考核方式,在当时,可能就如蝴蝶在身边煽动翅膀那样,没有很深的感触,但是在之...

之前写过一个系列文章: 《博客搭建攻略(一):平台选择》 《博客搭建攻略(二):工具推荐》 《博客搭建攻略(三):创造收益》 在该系列中曾经推荐过阿里云“全民云计算”的优惠,3年价格非常给力,很适合我们这些个人玩家把玩一阵了。 最近因为工作原因开始接触腾讯云,发现腾讯云也推广了类似的大力度推广方案,所以就整理了一下这两个供应商的几个推广配置的供大家参考和对比。 可以看到1核1G和2核4G的价格腾讯云均比阿里云略便宜一些,但是中间档在类似价格的情况下,腾讯云提供了2核2G的配置,高于阿里云的1核2G配置。 至于该怎么选,就根据大家的具体使用情况啦,下面附上跳转链接: 腾讯云:3年时长最低265元/年 阿里云:ECS云服务器2折起

导读: 程序员你为什么这么累? 我的编码习惯 - 接口定义 我的编码习惯 - Controller规范 我的编码习惯 - 日志建议 我的编码习惯 - 异常处理 我的编码习惯 - 参数校验和国际化规范 我的编码习惯 - 工具类规范 我的编码习惯 - 函数编写建议 我的编码习惯 - 配置规范 一个项目不可能没有工具类,工具类的初衷是良好的,代码重用,但到了后面工具类越来越乱,有些项目工具类有几十个,看的眼花缭乱,还有不少重复。如何编写出好的工具类,我有几点建议: 隐藏实现就是要定义自己的工具类,尽量不要在业务代码里面直接调用第三方的工具类。这也是解耦的一种体现。如果我们不定义自己的工具类而是直接使用第三方的工具类有2个不好的地方: 不同的人会使用不同的第三方工具库,会比较乱。 将来万一要修改工具类的实现逻辑会很痛苦。 以最简单的字符串判空为例,很多工具库都有 StringUtil...

对于一个程序员,往往长期面对电脑,久坐不动,缺少运动,不合理的饮食习惯,熬夜等等。这些不良的生活习惯,往往导致程序员健康出现一些问题,如颈椎病,背部疼痛,腕管综合征等等。 《程序员健康指南》的目标是帮助程序员从一个周身疼痛,病弱且极有可能脾气暴躁的黑客,转变为一个快乐高效的程序员。这本书主要包括 对了解自身健康情况的一些测试方法。 改善健康情况的建议。 这本书的作者是运动员和健身教练出生的资深程序员 - Joe Kutner。据这本书的前言写的:“本书的每个观点都是建立在科学研究的基础之上。…我所用到的每一项研究基本都符合两个标准:一是必须曾经在同行评议类期刊上发表过,二是相应的研究成果必须符合现有的科学实证。极少没有同时达到这两个要求的证据,我都会明确指出。”感觉很靠谱的样子~ 下面是对这本书的一些健康建议做的整理。 健康建议了解自身的健康状况 测心率。 测血压。 进行一次眼部...

本文非技术分享,仅仅是今日的一点感慨,为国内不尊重原创作者的行为表示遗憾~!!! 我是公众号“程序猿DD”的维护者,博客didispace.com的博主,《Spring Cloud微服务实战》的作者,也是spring4all社区的发起人之一。由于本人一直在研究Spring Cloud相关的技术点,也有幸出了书,获得了一些Spring Cloud爱好者的支持,对于朋友圈转发的类似内容一直都报有极大兴趣。一直以来,很多高质量公众号都推送过大量优秀的关于Spring Cloud的好文章,我也从中学习到很多知识。但是今天看到来自普元EAWorld公号中发布的《最简单易懂的SpringCloudSleuth教程》一文,就觉得怎么就那么似曾相识呢… 传送门:《最简单易懂的SpringCloudSleuth教程》 打开文章,大家可以很清晰的看到声明了【原创】标示,同时很牛逼的宣称:转载须注明出处,...

导读: 程序员你为什么这么累? 我的编码习惯 - 接口定义 我的编码习惯 - Controller规范 我的编码习惯 - 日志建议 我的编码习惯 - 异常处理 我的编码习惯 - 参数校验和国际化规范 我的编码习惯 - 工具类规范 我的编码习惯 - 函数编写建议 我的编码习惯 - 配置规范 之前系列文章里面完整的代码已经上github,地址在文章最后 傻瓜都能写出计算机可以读懂的代码,只有优秀的程序员才能写出人能读懂的代码! 在我看来,编写简单的函数是一件简单又困难的事情。简单是因为这没有什么技术难点,困难是因为这是一种思维习惯,很难养成,不写个几年代码,很难写出像样的代码。 大部分的程序员写的都是CRUD、一些业务逻辑的代码,谁实现不了?对于我来说,如果业务逻辑的代码评审,需要人来讲每一个代码做了什么,这样的代码就是不合格的,合格的代码写出来应该像人说话那么简单有条理,基本上...

导读: 程序员你为什么这么累? 我的编码习惯 - 接口定义 我的编码习惯 - Controller规范 我的编码习惯 - 日志建议 我的编码习惯 - 异常处理 我的编码习惯 - 参数校验和国际化规范 我的编码习惯 - 工具类规范 我的编码习惯 - 函数编写建议 我的编码习惯 - 配置规范 前些时间写了很多编码习惯的帖子,今天写一点简单的技术贴。其实我个人觉得编码习惯是最主要的,比技术重要,但初学者还是喜欢看技术贴,今天就写一个小Demo,也加深自己的理解。 JDK的动态代理是非常重要的技术,使用的地方很多,用于代理接口,Spring的AOP也会用到。技术细节这里不贴了,我不是技术高手,大家可以上网搜索一下一大把,今天我们结合spring编写一个简陋的“框架”。 完整代码已经上传到GITHUB,地址在最后面。 最终效果假设我们需要调用另外一个系统提供了的GET请求 http://l...

导读: 程序员你为什么这么累? 我的编码习惯 - 接口定义 我的编码习惯 - Controller规范 我的编码习惯 - 日志建议 我的编码习惯 - 异常处理 我的编码习惯 - 参数校验和国际化规范 我的编码习惯 - 工具类规范 我的编码习惯 - 函数编写建议 我的编码习惯 - 配置规范 请先仔细阅读:分享我工作中制定配置文件的习惯 工作中少不了要制定各种各样的配置文件,这里和大家分享一下工作中我是如何制定配置文件的,这是个人习惯,结合强大的spring,效果很不错。 =============================需求========================== 如我们现在有一个这样的配置需求,顶层是Server,有port和shutdown2个属性,包含一个service集合,service对象有name一个属性,并包含一个connector集合,conne...

导读: 程序员你为什么这么累? 我的编码习惯 - 接口定义 我的编码习惯 - Controller规范 我的编码习惯 - 日志建议 我的编码习惯 - 异常处理 我的编码习惯 - 参数校验和国际化规范 我的编码习惯 - 工具类规范 我的编码习惯 - 函数编写建议 我的编码习惯 - 配置规范 今天我们说说参数校验和国际化,这些代码没有什么技术含量,却大量充斥在业务代码上,很可能业务代码只有几行,参数校验代码却有十几行,非常影响代码阅读,所以很有必要把这块的代码量减下去。 今天的目的主要是把之前例子里面的和业务无关的国际化参数隐藏掉,以及如何封装好校验函数。 今天累,少说话多贴代码,先看对比图,修改前: service 修改后: services Controll的非业务代码如何去掉参考我的编码习惯 - Controller规范,下面说说去掉Local参数。 强调一下:业务代码...

导读: 程序员你为什么这么累? 我的编码习惯 - 接口定义 我的编码习惯 - Controller规范 我的编码习惯 - 日志建议 我的编码习惯 - 异常处理 我的编码习惯 - 参数校验和国际化规范 我的编码习惯 - 工具类规范 我的编码习惯 - 函数编写建议 我的编码习惯 - 配置规范 对于大型IT系统,最怕的事情第一是系统出现了异常我不知道,等问题闹大了用户投诉了才知道出问题了。第二就是出了问题之后无法找到出错原因。针对这2个问题,说说我们项目组是怎么样规定异常处理的。 再次声明我的观点,我这系列贴里面,没有什么技术点,都是一些编程的经验之谈,而且是建立在项目背景是大部分代码都是简单的CRUD、开发人员流动大水平一般的情况下。希望读者的重点不要再关注技术点。大部分工作中不需要什么技术,你只要把代码写好,足够你轻松面对! 言归正传,说回第一个问题,系统出异常了我不知道,等问题闹...

导读: 程序员你为什么这么累? 我的编码习惯 - 接口定义 我的编码习惯 - Controller规范 我的编码习惯 - 日志建议 我的编码习惯 - 异常处理 我的编码习惯 - 参数校验和国际化规范 我的编码习惯 - 工具类规范 我的编码习惯 - 函数编写建议 我的编码习惯 - 配置规范 开发中日志这个问题,每个公司都强调,也制定了一大堆规范,但根据实际情况看,效果不是很明显,主要是这个东西不好测试和考核,没有日志功能一样跑啊。 但编程活久见,开发久了,总会遇到“这个问题生产环境上能重现,但是没有日志,业务很复杂,不知道哪一步出错了?” 这个时候,怎么办? 还能怎么办,发个版本,就是把所有地方加上日志,没有任何新功能,然后在让用户重现一遍,拿下日志来看,哦,原来是这个问题。 有没有很熟悉的感觉? 还有一种情况,我们系统有3*5=15个节点,出了问题找日志真是痛苦,一个一个机器翻...

请先阅读这2篇文章: 程序员你为什么这么累? 我的编码习惯 - 接口定义 第一篇文章中,我贴了2段代码,第一个是原生态的,第2段是我指定了接口定义规范,使用AOP技术之后最终交付的代码,从15行到一行,自己感受一下。今天来说说大家关注的AOP如何实现。 先说说Controller规范,主要的内容是就是接口定义里面的内容,你只要遵循里面的规范,controller就问题不大,除了这些,还有另外的几点: 所有函数返回统一的ResultBean/PageResultBean格式 原因见我的接口定义这个贴。没有统一格式,AOP无法玩。 ResultBean/PageResultBean是controller专用的,不允许往后传! Controller做参数格式的转换,不允许把json,map这类对象传到services去,也不允许services返回json、map。 一般情...

导读: 程序员你为什么这么累? 我的编码习惯 - 接口定义 我的编码习惯 - Controller规范 我的编码习惯 - 日志建议 我的编码习惯 - 异常处理 我的编码习惯 - 参数校验和国际化规范 我的编码习惯 - 工具类规范 我的编码习惯 - 函数编写建议 我的编码习惯 - 配置规范 工作中,少不了要定义各种接口,系统集成要定义接口,前后台掉调用也要定义接口。接口定义一定程度上能反应程序员的编程功底。列举一下工作中我发现大家容易出现的问题: 1. 返回格式不统一 同一个接口,有时候返回数组,有时候返回单个;成功的时候返回对象,失败的时候返回错误信息字符串。工作中有个系统集成就是这样定义的接口,真是辣眼睛。这个对应代码上,返回的类型是map,json,object,都是不应该的。实际工作中,我们会定义一个统一的格式,就是ResultBean,分页的有另外一个PageResult...

大家一提到程序员,首先想到的是以下标签:苦逼,加班,熬夜通宵。但是,但凡工作了的同学都知道,其实大部分程序员做的事情都很简单,代码CRUD可以说毫无技术含量,就算什么不懂依葫芦画瓢很多功能也能勉强做出来,做个多线程并发就算高科技了,程序员这行的门槛其实还是比较低的。(这里说的是大部分,有些牛逼的,写算法、jvm等的请自动跳过) 是不是觉得很矛盾,一方面工作不复杂,一方面却累成狗。有没有想过问题出在哪里?有没有想过时间都花在哪里呢? 对于我个人来说,编码还是一个相对轻松的活(我是负责公司it系统的,没有太多技术含量,数据量大,但并发量不大)。从工作到现在,我加班编码的时间还是比较少的,我到现在为止每天还会编码,很少因为编码工作加班。 大家写的东西都是一些crud的业务逻辑代码,为什么大家这么累,加班加点天天都是奋斗者?我从自己带的项目中观察中发现,大部分人的大部分时间都是在 定位问题 ...

做一枚全栈工程师 如果一个全栈工程师能够根据原型实现一个完整的MVP(minimum viable product,至少可行的产品),我们通常会认为他十八般武艺样样精通,而且有足够的理由来证明这一点。为了给全栈工程师一个最新鲜的定义,我们首先来关注一下全栈工程师以前是搞什么的。 以前的全栈工程师很久以前,大约在 2000 年(在互联网的次元里,17年可以说是一个非常长的时间了),一个全栈工程师必须掌握下面的本领: 用 Adobe 公司的 Photoshop 或者 Fireworks 工具设计出一个网页 将设计稿变成 HTML, CSS 还有热点图(额,还记得那些吗?) 写一些基本的 PHP 4.0 脚本(非面向对象的 PHP 即将成为历史)来处理服务端逻辑 保存所有的动态数据到 MySQL 中,也可能会做一些小优化 用 FTP 上传所有代码、数据库什么的到一台服务器,然后...