软件开发中的注意事项(常见问题整理)

一、函数定义原则

1、一个函数/方法只做一件事情,不能将多个事情放在一个函数中处理(单一职责原则 SRP)

函数/方法的最小粒度是功能,函数在设计/定义的时候,不能将多个功能柔进一个函数里面,这样函数会变得得膨胀,增加了函数的耦合性,不便于函数管理维护。

例如,有这么一个业务逻辑:用户每天来网站阅读文章,当阅读完毕不同的10篇文章之后,就给他增加10个用户积分。

这个业务逻辑可以拆分为4个功能,也就需要定义为4个函数/方法来实现。

Continue reading “软件开发中的注意事项(常见问题整理)”

Docker常用命令详解

根据自己的理解,总的来说分为以下几种:

看一个变迁图

Continue reading “Docker常用命令详解”

熔断器(Circuit Breaker)设计模式

如果大家有印象的话,尤其是夏天,如果家里用电负载过大,比如开了很多家用电器,就会”自动跳闸”,此时电路就会断开。在以前更古老的一种方式是”保险丝”,当负载过大,或者电路发生故障或异常时,电流会不断升高,为防止升高的电流有可能损坏电路中的某些重要器件或贵重器件,烧毁电路甚至造成火灾。保险丝会在电流异常升高到一定的高度和热度的时候,自身熔断切断电流,从而起到保护电路安全运行的作用。

同样,在大型的软件系统中,如果调用的远程服务或者资源由于某种原因无法使用时,如果没有这种过载保护,就会导致请求的资源阻塞在服务器上等待从而耗尽系统或者服务器资源。很多时候刚开始可能只是系统出现了局部的、小规模的故障,然而由于种种原因,故障影响的范围越来越大,最终导致了全局性的后果。软件系统中的这种过载保护就是本文将要谈到的熔断器模式(Circuit Breaker) Continue reading “熔断器(Circuit Breaker)设计模式”

CAP原理和BASE思想

分布式领域CAP理论
Consistency(一致性), 数据一致更新,所有数据变动都是同步的
Availability(可用性), 好的响应性能
Partition tolerance(分区容错性) 可靠性

定理:任何分布式系统只可同时满足二点,没法三者兼顾。
忠告:架构师不要将精力浪费在如何设计能满足三者的完美分布式系统,而是应该进行取舍。

Continue reading “CAP原理和BASE思想”

Ubuntu Server 14.04 LTS中安装最新版的PHP7.1

由于PHP7.x相对于PHP5.x在性能上有数倍的提升,因此我也趁此将服务器的PHP配置升级一下。

Ubuntu Server 14.04 LTS官方安装包源中默认的是稳定版的PHP5.x系列,如果想要安装最新的PHP7.x需要使用第三方安装包源。

我们这里使用Ubuntu的ppa第三方源ondrej/php,依次执行以下命令即可:

Continue reading “Ubuntu Server 14.04 LTS中安装最新版的PHP7.1”

需找新的美猴王——约瑟夫环 猴王问题

猴王问题:
某森林中有n只猴子在商量猴王选举问题,所有的猴子都想当猴王,
因此大家商量了一个选举办法如下:
所有的猴子围成一圈,先从第一个猴子开始报数,报数到13的猴子就出列。
紧接着的下一个猴子,又从1开始进行新的一轮报数,报数到12的猴子再出列;
依此重复下去,每一轮报数都比上一轮的报数少1,直到报数减为1之后,又从13开始报数。
直到原列中只剩下一个猴子为止,这个猴子就是猴王。

 

试设计一个程序求出猴王。
Continue reading “需找新的美猴王——约瑟夫环 猴王问题”

培训班出身的程序员为什么遭人嫌弃

这几年,由于it软件行业对人才的需求很大,很多传统行业也纷纷创办“互联网 ”项目,加上app开发热潮,微信公众平台也催生了更多的就业岗位。于是it从业人员的薪水也随之水涨船高。同时it培训班也随雨后春笋般涌出,一个个打出的口号都很响。

“0基础入学,三个月包就业”

“毕业月入不过万,不收学费”

“从前是你找工作,接下来是工作找你”

真是人有多大胆,口号就有多不要脸。

对于迫切想改变自己境遇的人来说,这些口号无疑是很具诱惑力的。在培训机构的宣传下,好像软件开发行业是一个门槛低,收入高,只要几个月的培训就可以月入过万,实现人生理想的好职业。

可现实是越来越多的企业不想招,甚至明言不招培训班出来的学生。而不少培训班也会教学生隐瞒自己的培训经历,会教学生面试的技巧,包装简历,虚报学历和工作经历,把学生包装成一个具有两年项目开发经验的软件工程师,而且开价往往都不低,动不动就8k以上…

Continue reading “培训班出身的程序员为什么遭人嫌弃”