Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
ff5fa76
Updates monitor.md
yafangmaster Feb 13, 2017
65d05fa
Updates monitor.md
yafangmaster Feb 13, 2017
9e7f293
Updates SUMMARY.md
yafangmaster Feb 13, 2017
f8facf6
Updates dian_zi_shu.md
yafangmaster Feb 16, 2017
79e99ea
Updates php_lun_zi.md
yafangmaster Feb 16, 2017
cc5b4c3
Updates php_lun_zi.md
yafangmaster Feb 16, 2017
554ec2c
Updates php_lun_zi.md
yafangmaster Feb 16, 2017
4349baf
Updates php_lun_zi.md
yafangmaster Feb 16, 2017
6726135
Updates oop/oop.md
yafangmaster Feb 16, 2017
5a17e8e
Updates dan_yi_quan_ze_yuan_ze.md
yafangmaster Feb 16, 2017
7d9238b
Updates shen_ru_li_jie_cao_zuo_xi_tong.md
yafangmaster Feb 16, 2017
b92f10c
Updates mvc.md
yafangmaster Feb 16, 2017
2412321
Creates vop.md
yafangmaster Feb 16, 2017
3e9f6ed
Track 2 files into repository.
yafangmaster Feb 16, 2017
bc5363f
Updates mvc.md
yafangmaster Feb 16, 2017
83ae4d1
Updates mvc.md
yafangmaster Feb 16, 2017
f32169b
Merge origin/master into master
yafangmaster Feb 16, 2017
b4ed88c
Updates api.md
yafangmaster Feb 20, 2017
ed29123
Updates api.md
yafangmaster Feb 20, 2017
5fa25c6
Updates api.md
yafangmaster Feb 20, 2017
f193a17
Updates api.md
yafangmaster Feb 20, 2017
51c63ed
Updates api.md
yafangmaster Feb 20, 2017
ade0827
Updates api.md
yafangmaster Feb 20, 2017
e00f553
Updates api.md
yafangmaster Feb 20, 2017
5ae7b6e
Updates api.md
yafangmaster Feb 20, 2017
58e3bb2
Updates api.md
yafangmaster Feb 20, 2017
d872e0e
pull
yafangmaster Feb 21, 2017
c13ce03
Merge branch 'master' of github.com:yafangmaster/BanYarTeamBuilding
yafangmaster Feb 21, 2017
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 8 additions & 4 deletions SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,10 @@
* [开发规范](kai_fa_gui_fan.md)
* [PHP编码规范](phpbian_ma_gui_fan.md)
* [PSR-0规范](psr-0gui_fan.md)
* [API编写规范](api.md)
* 工具
* [工具](.md)
>>>>>>> pm/master
* [Git](git.md)
* [工具类](gong_ju_lei.md)
* [服务器端轮子](fu_wu_qi_duan_lun_zi.md)
Expand All @@ -65,7 +68,7 @@
## OOP思想

* [为什么使用OOP](oop/oop.md)
* 几大原则
* [几大原则](oop/.md)
* [01单一权责原则](dan_yi_quan_ze_yuan_ze.md)
* [02开放闭合原则](kai_fang_bi_he_yuan_ze.md)
* [03里氏代换原则](03li_shi_dai_huan_yuan_ze.md)
Expand All @@ -87,7 +90,7 @@
* [VIPER](viper.md)
* [SOA](soa.md)
* [AOP](aop.md)
* VOP
* [VOP](vop.md)
* [POP](pop.md)

## 设计模式
Expand Down Expand Up @@ -126,8 +129,8 @@

## 重构&代码整洁

* 重构
* 代码整洁
* [重构 ](.md)
* [代码整洁](.md)
* [开始CodeReview](kai_shi_codereview.md)
* [为什么codeReview](wei_shi_yao_codereview.md)

Expand All @@ -142,6 +145,7 @@
* [rc.local开机启动](rclocalkai_ji_qi_dong.md)
* [linux常用命令](linuxchang_yong_ming_ling.md)
* [lrzsz上传下载命令](lrzszshang_chuan_xia_zai_ming_ling.md)
* [Monitor配置](monitor.md)
* 工具
* [Docker](docker.md)
* [Docker常用命令](dockerchang_yong_ming_ling.md)
Expand Down
32 changes: 32 additions & 0 deletions api.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
#移动开发接口及文档编写规范
>APP接口是移动设备和业务之间进行通信的途径。实质就是以特定的规则通过接口直接操作数据库的增删改查。

##接口编写原则
###实用性
编写接口API应遵从实用性原则。
1、**数据格式**:推荐使用JSON格式数据,因为JSON有较好的跨平台性,以及数据格式占用字节数较少,当然也可采用XML、TEXT作为程序开发辅助。
2、**接口执行效率(接口访问速度)**:APP有别于WEB服务,对服务器端要求是比较严格的,在移动端有限的带宽条件下,要求接口响应速度要快,所有在开发过程中尽量选择效率高的框架,PHP推荐使用YAF框架,.NET推荐使用Newtonsoft
3、**数据量**:按需分配,APP客户端需要什么数据就返回什么数据,过多的数据量影响处理速度,最重要的是影响传输效率和浪费用户流量。
4、**API缓存**:这点比较重要,不管是文件缓存还是memcache缓存。
###易用性
1、**接口、参数命名准确**:无论是接口还是参数,命名都应该有意义,让人一目了然。(接口推荐根据APP效果图栏目进行命名)
2、**一个页面尽可能就用一个接口**:现在很多的APP页面都有广告、焦点图、文章列表等,对于这些不同格式的数据,不可能都分配一个接口,这样加大了APP请求接口数,影响响应速度。建议服务器端尽可能处理好数据后通过一个接口返回给APP客户端。
3、**接口数据、状态**:接口必须提供明确的数据状态信息,不管是成功的,还是失败的,都必须返回给APP客户端。
4、**接口要有可扩展性**:方便后期功能性调整,接口应具备可扩展性。
###安全性
1、**接口安全**:目前一般都是在APP客户端和服务器通过约定的算法,对传递的参数值进行验证匹配。但是如果APP程序被反编译,这些约定的算法就会暴露,特别是在安卓APP中,有了算法,完全就可以通过验证模拟接口请求。
2、**加密规范**:在传递用户名密码时,应采用规范的加密算法如MD5、RSA、DES,进行数据通信请求。
3、**接口版本控制**:对于接口版本控制,需要应对不断的APP版本升级,新、旧接口的处理,因而需要关注接口版本控制。
##接口设计原则
1、**尽量减少参数传递**:在客户端发起HTTP请求接口操作时,应减少参数传递,如某些操作只需要ID不需要其他参数,这时候就应该只传递ID这个参数。
2、**尽量避免接口重复性**:在客户端APP调用接口时,尽量提高接口复用性,减少HTTP请求,提高程序稳定性。
3、**数据类型规范**:客户端APP调用接口时,应标注参数数据类型,以及是否可为空或者默认字段,如标注了Int型字段,就不能返回“null”的String类型字段,否则容易造成程序APP出现数据类型解析异常。
4、**设置调用html页面单独列表**:调用html页面应标明是否传递安全校验参数,建议表格中采用是或者否单独字段标识。
5、**编码规范**:整个API接口开发过程中,应标注接口编码方式,目前建议采用UTF-8编码,UTF-8通用性以及URL请求方面都较规范。
6、**请求方式**:编写API接口应该标注请求方式,请求方式一般有GET和POST方式
7、**GET和POST方式**:在数量较小情况下可以使用GET方式,但数据量超过1024字节就应该采用POST方式,避免出现请求失败或者请求异常的问题。
8、**返回接口调用状态**:所有API接口都应该统一标识调用的成功失败信息和规范错误编码信息,以及必要的提示字段信息。
9、**安全机制**:接口应规范验证签名机制,用户登录后统一调用KEY对接口安全验证。(关于KEY机制需由接口开发人员定义)
10、**参数说明**:应标注参数名称、是否必选、数据类型及范围、说明以及“否(必选)”传递默认的参数。


4 changes: 0 additions & 4 deletions dan_yi_quan_ze_yuan_ze.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,6 @@
# 单一权责原则



> 单一职责原则 (Single Responsibility Principle,SRP)
指出,每个方法或类应当有且仅有一个改变的理由。


这意味着每个方法或类应当做一件事情,或者只有一项职责。在所有的SOLID 原则中,这是大多数开发人员感到最能完全理解的一条。严格来说,这也可能是违反最频繁的一条原则了。

2 changes: 2 additions & 0 deletions dian_zi_shu.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@

[《PHP之道》](http://wulijun.github.io/php-the-right-way/)

[《PHP核心技术与最佳实践》](http://vdisk.weibo.com/s/zJSMO-iFNr2UT?category_id=35&parents_ref=zJSMO-iFMQi_B)

[《JavaScript 标准参考教程(alpha)》](http://javascript.ruanyifeng.com/)

[《ECMAScript 6入门》](http://es6.ruanyifeng.com/)
Expand Down
63 changes: 63 additions & 0 deletions monitor.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
# Monit 安装配置

##1.安装Monit
下载地址 https://mmonit.com/monit/ 需要下载源码
yum安装需要装依赖
```
yum install epel*
yum install pam-devel
yum insall pam
yum install monit
```

###源码安装
```
./configure #错误
configure: error: PAM enabled but headers or library not found, install the PAM development support or run configure --without-pam
yum install pam-devel
yum install pam #即可解决
make
make install
```

##2.配置
```
mv monitrc /etc/monitrc
chown root:root /etc/monitrc
chmod 0700 /etc/monitrc

monit -t #检查 配置文件是否正确
New Monit id: 0414eed13ff8027c154d0555e9f7f97f
Stored in '/root/.monit.id'

monit
monit start nginx
monit stop all /nginx
```

##3.配置web访问

set httpd port 2812 and
#use address all # only accept connection from localhost
allow 0.0.0.0/0.0.0.0 #允许ip所有访问
allow admin:monit # 访问用户名和密码

##4.配置监控进程
```
vi /etc/monitrc #编辑配置文件结尾配置监控目录
include /etc/monit.d/*
mkdir /etc/monit.d/ #新建监控服务的目录 默认的

cd /etc/monit.d/
vi nginx #编辑添加监控nginx 如果被关掉重新启动,添加一下代码
check process nginx with pidfile /run/nginx.pid
start program = "/usr/local/nginx/sbin/nginx " with timeout 10 seconds
stop program = "/usr/local/nginx/sbin/nginx -s stop"
vi swoole #编辑添加监控swoole是否挂掉,如果挂掉重启
check process swoole_server with MATCHING swoole_server
start program = "/usr/local/php/bin/php /App/www.banyar.cn/swoole/banyarWebServer.php" with timeo

vi swoole #编辑添加监控swoole是否挂掉,如果挂掉重启
check process swoole_server with MATCHING swoole_server
start program = "/usr/local/php/bin/php /App/www.banyar.cn/swoole/banyarWebServer.php" with timeout 10 seconds
```
53 changes: 53 additions & 0 deletions mvc.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,55 @@
# MVC
>随着Web应用的商业逻辑包含逐渐复杂的公式分析计算、决策支持等,使客户机越来越不堪重负,因此将系统的商业分离出来。单独形成一部分,这样三层结构产生了。其中‘层’是逻辑上的划分。

三层体系结构是将整个系统划分为如图2.1所示的结构[3]

![图](http://dl.iteye.com/upload/attachment/576351/89359c3f-8370-3e2c-85d2-808961db8f82.jpg?_=2240725)

(1)表现层(Presentation layer):包含表示代码、用户交互GUI、数据验证。该层用于向客户端用户提供GUI交互,它允许用户在显示系统中输入和编辑数据,同时系统提供数据验证功能。
(2)业务逻辑层(Business layer):包含业务规则处理代码,即程序中与业务相关专业算法、业务政策等等。该层用于执行业务流程和制订数据的业务规则。业务逻辑层主要面向业务应用,为表示层提供业务服务。
(3)数据持久层(Persistence layer):包含数据处理代码和数据存储代码。数据持久层主要包括数据存取服务,负责与数据库管理系统(如数据库)之间的通信。
三个层次的每一层在处理程序上有各自明确的任务,在功能实现上有清晰的区分,各层与其余层分离,但各层之间存有通信接口。
采用三层软件设计架构后,软件系统在可扩展性和可复用性方面得到极大提高,在资源分配策略设计合理运用的同时,软件的性能指标也得到提升,系统的安全性和易管东北理性也得到改善。三层体系结构对Web应用的软件架构产生很大影响,促进了基于组件的设计思想,产生了许多开发Web层次框架的实现技术。较之两级结构来说,三层结构修改和维护上
更加方便。目前开发B/S结构的Web应用系统广泛采用这种三层体系结构。


### 设计模式起源
1994 年,由 Erich Gamma,Richard Helm,Ralph Johnson 和 John Vlissides(即所谓的“四人帮’,GoF:Gang of Four)合作的以《设计模式:可复用的面向对象软件的基本原理》为题目的书藉出版了。这本书解释了模式的用处,同时也使得设计模式得到广泛普及。在书中,他们四人记录了他们长期工作中发现的经典 23 个设计模式。
IoC模式
IoC 模式是 Apach Avalon 项目创始人之一 Stefano Mazzocchi 提出的一种代码调用模式,后被 MartinFowlcr 改名为 Dependency Injection(依赖注入),也就是将类和类,方法和方法之间的关系通过第三方(如配置文件)进行“注入”,不需要类或者方法自己去解决彼此间的调用关系。 IoC(Inversion of Control, 控制反转), 是一种用来解决组件(也可以是简单的 Java类)之间依赖关系、配置及生命周期的设计模式,它可以解决模块间的耦合问题。IoC模式它是把组件之间的依赖关系提取(反转)出来,由容器来具体配置。这样,各个组件之间就不存在代码关联,解决了调用方与被调用方之间的关系问题,任何组件都可以最大程度的得到重用。

IoC 模式实现的技术途径
表 2.1 列举出了 IoC 的三种实现方式。本文中设计并实现的服务器端数据验证组件就是采用了第一种类型的 IoC 实现方式。


### MVC模式
MVC 是 Model-View-Control 的简称,即模型-视图-控制器。它是一个存在于服务器表达层的模型,它将应用分开,改变应用之间的高度耦合。
MVC 是在 20 世纪 80 年代发明的一种软件设计模式,至今已被广泛使用,最近几年被推荐为 Sun 公司 J2EE 平台的设计模式。

MVC 模式结构
MVC 模式将应用分为模型、视图和控制器三个部分:
1. 视图:数据的展现。
视图是用户看到并与之交互的界面。视图向用户显示相关的数据,并能接收用户的输入数据,但是它并不进行任何实际的业务处理。视图可以向模型查询业务状态,但不能改变模型。视图还能接受模型发出的数据更新事件,从而对用户界面进行同步更新。
2. 模型:应用对象。
模型是应用程序的主体部分。 模型代表了业务数据和业务逻辑; 当数据发生改变时,它要负责通知视图部分;一个模型能为多个视图提供数据。由于同一个模型可以被多个视图重用,所以提高了应用的可重用性。
3. 控制器:逻辑处理、控制实体数据在视图上展示、调用模型处理业务请求。
当 Web 用户单击 Web 页面中的提交按钮来发送 HTML 表单时,控制器接收请求并调用相应的模型组件去处理请求,然后调用相应的视图来显示模型返回的数据。

MVC 模式运行机制
如图 2.2 所示为 MVC 模式运行机制:

![图](http://dl.iteye.com/upload/attachment/576353/d3d769c0-5df9-3c31-9984-42f1fcbd00bb.jpg?_=2240725)

在 MVC 模式中,Web 用户向服务器提交的所有请求都由控制器接管。接受到请求之后,控制器负责决定应该调用哪个模型来进行处理;然后模型根据用户请求进行相应的业务逻辑处理,并返回数据;最后控制器调用相应的视图来格式化模型返回的数据,并通过视图呈现给用户。

框架
软件开发越来越倚重框架的使用。框架可以缩短应用软件系统的开发周期,提高软件生产效率和质量。大大简化了开发。选择何种框架、每个框架如何应用在在系统架构中是软件架构设计的重要环节。
框架的定义
在设计模式中,Gamma 等人为框架给出了一个明确定义:“框架(Framework)是一组协同工作的类,它们为特定类型的软件构筑了一个可重用的设计”。
框架是一组为相互协作的构件(Component)的集合,它能够处理一个或多个问题域(Domain)中的一系列问题。框架强调的是软件设计的重用性和系统的可扩充性。它是为了追求重用所带来的价值量最大化,而将被重用最多的部分封装成各个组件,辅以回调机制将它们纳入框架的控制范围之内。所以,框架提供了可在应用程序之间共享的可复用的公共结构。

框架的特性
框架包含以下几个关键特性:
1.在应用方面,框架是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法;在目标方面,框架是可被应用开发者定制的应用骨架。
2.框架是一种软件,是应用程序的半成品。它可以供系统开发者选用,以完成系统的开发。
3.框架解决的是某个特定范围即领域的问题。每个框架都有自己的目标领域,它并不能满足所有人的所有需求
Empty file added oop/.md
Empty file.
1 change: 0 additions & 1 deletion oop/oop.md
Original file line number Diff line number Diff line change
@@ -1,2 +1 @@

OOP是面向对象程序设计(Object Oriented Programming,缩写:OOP),指一种程序设计范型,同时也是一种程序开发的方法论。它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性。
10 changes: 5 additions & 5 deletions php_lun_zi.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,10 @@ overtrue/wechat 目前最好用的微信开发工具包
overtrue/package-builder Composer 包构建工具
[asonge/php-geohash](https://github.com/asonge/php-geohash) geohash的PHP版本
https://github.com/Seldaek/monolog #日志统计 同类还有seaslog​
https://github.com/laravel/lumen​ #轻量级的api架构
https://github.com/chrisboulton/php-resque #php redis实现的消息队列 ​



[轻量级的api架构​](https://github.com/laravel/lumen)
[php redis实现的消息队列](https://github.com/chrisboulton/php-resque)
[swoole 分布式全栈框架](https://github.com/tmtbe/SwooleDistributed)
[php-cp(php-connect-pool)是用php扩展写的一个数据库连接池。](https://github.com/swoole/php-cp)
[phpspider -- PHP蜘蛛爬虫框架](https://github.com/owner888/phpspider)


1 change: 1 addition & 0 deletions shen_ru_li_jie_cao_zuo_xi_tong.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
# 深入理解操作系统

[电子书](http://vdisk.weibo.com/s/myQ9E)