【闲聊PHP】编程界的萝莉小美女--PHP
01 前言--上了贼船
不知道何时就上了PHP的贼船了,开始了web的开发,记得差不多两年前我还是做传统电子行业的人,就是嵌入式的方向,那时在天津或摆弄手机,或下煤窑摆弄电话,抑或就是在医疗电子摆弄血压计,终于熬不住了,钱太少了!
我的一个基友,告诉我,孩子,别哭,咱学PHP吧,可以站起来撸。。。
我眼里放光,就屁颠屁颠地跟来了。问我为啥不选择如日中天的王道Java,基友的话,比PHP难太多,咱专注的是互联网领域。来到了宇宙中心五道口,开始了PHP的实践之路,这是家做互联网教育的机构,我在这里学习工作的很开心,做了不少的项目,结交了不少的朋友,帝都的美丽画卷犹如一个美丽的女子一般在我眼前徐徐展开。我很开心。
后来来到现在的这家医疗互联网的公司,PHP使用的是自己的框架,有很深的Java的痕迹,用到了很多web的组件。学习了很多。像底层的ORM, 领域驱动模式,业务数据的拆分,异步MQ, 缓存Memcache, redis等等。
从2014年8月份到现在 2017年的2月份,正好2年半的时间里,我觉得是时候自己好好聊一聊PHP了。说的好的地方,希望您不吝掌声和赞美,说的不好的地方,你就拍砖,指出来,以供我改正,良辰在此谢过了。
02 web开发语言--PHP
PHP是一门专注于web开发的脚本语言,语法简单,非常容易上手,但是要做的很深很好就不容易了。就像大家都会写字,但是写出非常漂亮的文章,就不是一般人能做到了。PHP开发的领域也比较广阔,设计web开发的方方面面,技术黄金组合LAMP/LNMP,也指的是Linux操作系统, Apache/Nginx web服务器, mysql数据库,和PHP这个编程语言。
03 面向对象和数据结构--PHP
前几年PHP还是面向过程的编程,近来变成了面向对象了,一句话,还是简单,可定制,程序相当自由灵活,任何的变量,你都可以 var_dump打印出来看看到底是什么,比Java什么的好多了,Java打印不同的变量,都要不同的类的不同方法来实现,比较的繁琐。还有PHP的主要的数据结构主要是字符串和数组,这里边基本上包含了PHP %80的编程量,PHP的数组尤其强大,几乎实现了Java中的集合,哈希等多种结构,就是这么简单快捷,一气呵成。
04 MVC,框架和设计模式
PHP的开发,也是遵循MVC模式的,数据层Model,视图层View,控制层Controller。这种低耦合高内聚的设计方法也成了行业的圭臬。很多的PHP的优秀的框架像CI,ThinkPHP都是遵循MVC的,当然你自己高兴,也可以在PHP中实现你自己所谓的常见的设计模式,像单例模式,观察者模式等等。
05 LAMP/LNMP--开源免费的黄金组合
Linux系统确实挺牛的,那命令下的简洁高效,那黑底白字的优雅,那稳定强悍的性能,都使人深深着迷!PHP的服务端代码就运行在Linux这个免费高效的系统上面,很多运维人员也用shell或者Python等其他语言和Linux不断聊着人生。VIM更是Linux下的神之编辑器,每天都会有新的学习和成长,惊喜每一天啊。
Apache和Nginx都是PHP常用的web服务器,主要解决路由和请求转发的问题,还有负载均衡,反向代理等。做成集群,以构建高可用的web应用,这都是企业级的应用。这一部分也是我要精进的部分,有时间还得是拿来源码等好好研读一番,设计的精妙,尽在其中。
MySQL数据库,也是小巧而可爱,与PHP是天造地设的一对,增删改查,无一不能,支持事务的Innodb引擎,优化查询语句的路上,你我都需要费点思量。
PHP本身是这里边的核心,毕竟她是编程语言。这是世界上最好的编程语言,在Linux系统上运行,接受Apache或Nginx转发过来的请求,去Mysql数据库中拿处理展示的数据。这就是PHP的魅力,在前端和JavaScript一起渲染html的页面,华丽丽,牛逼逼,就是这么屌,哈哈~
06 高性能web应用--PHP的架构方向
保证网站性能的高性能,高可用的状态,等设计到架构的方面,从用户从浏览器中输入网址,到一个华丽的页面展示在用户的面前,虽然只有短短的几秒时间,中间却经历了太多太多的东西,现在咱们就解开这里的神秘面纱。
输入网址,浏览器客户端就发起了http的请求,到DNS解析网址对应的IP,到CDN数据中心,一路路由凯歌猛进,速度当然是光速了。在光纤或者电缆中信号电光石火。到网址的web服务器层面,被负载均衡路由到某个服务器集群下的服务器,有可能从缓存服务器直接拿数据走了,也可能请求到PHP的代码,继续到MySql数据库,业务处理完之后,输出给web服务器,沿原路返回,到客户端的浏览器,和JS一起进行渲染页面。完成全部的工作。是不是很神奇啊。
里面用到的技术很多呢,DNS,CDN,负载均衡,反向代理,缓存服务器集群,应用服务器集群,路由算法,数据库集群等待,都足以让你学习一番的了。
07 写在最后
技术的精进,永无止境,学些吧,你可以做的更好。
PHP这样的语言漂亮妹子,你值得拥有~
【闲聊PHP】编程界的萝莉小美女--PHP的更多相关文章
- C++ 是 编程界 的 背锅侠
C++ 是 编程界 的 背锅侠, C++ 背的包袱 之 庞大复杂, 举世瞩目, 令人感动 . C++ 标准 委员会 俨然 已成了一个 职业 . C++ 把 静态编译 体系 发展到 庞大复杂, C ...
- 浅析C#组件编程中的一些小细节
控件与组件的区别(Control&Component的区别) 作者:作者不详 发布日期:2011-06-30 12:08:41 控件与组件的区别(Control&Component的 ...
- Scratch编程:快乐的小马(三)
“ 上节课的内容全部掌握了吗?反复练习了没有,编程最好的学习方法就是练习.练习.再练习.一定要记得多动手.多动脑筋哦~~” 01 — 游戏介绍 这是一款简单的小游戏,实现了一匹小马跑来跑去(小马有跑动 ...
- 结对编程——带UI的小初高数学学习软件
一.简介 本次项目要求: 1.所有功能通过图形化界面操作,可以是桌面应用,可以是网站(编程语言和技术不限): 2.用户注册功能.用户提供手机号码,点击注册将收到一个注册码,用户可使用该注册码完成注册: ...
- Notepad++在编程使用时的小技巧
http://blog.csdn.net/freewaywalker/article/details/8010790 为了编程时更快捷和适应个人习惯,我们可以对Notepad++进行一系列的设置,这当 ...
- JSON带来编程界怎样的描述
JSON是一套数据对象组织格式,从程序员的角度观看,他是以种非常易读易写的形式来描述一种key-value的数据组织.全名称JavaScript Object Notation,从名称上可看已经说明他 ...
- 闲聊select和input常用的小插件
前言 在pc端的项目中,经常会用到表单标签,莫过于是select和input这两种,这两种相当常用.但往往原生的功能不尽人意,即使 input中type有n多属性,甚至连时间控件都有,但仍旧满足不了我 ...
- C语言地址对齐(转)--网络编程之结构体大小的计算
什么是地址对齐? 现代计算机中内存空间都是按照字节(byte)划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定变量的时候经常在特定的内存地址访问,这就需要各类型数 ...
- 编程界失传秘术,SSO单点登录,什么是单点,如何实现登录?
单点登录 多系统,单一位置登录,实现多系统同时登录的一种技术. 常出现在互联网应用和企业级平台中. 如:京东. 单点登录一般是用于互相授信的系统,实现单一位置登录,全系统有效的. 三方登录:某系统,使 ...
随机推荐
- 170112、solr从服务器配置整合到项目实战
整合网上资源后 100%可运行的配合步骤,部署在tomcat 为例. 一:下载solr,版本为5.2.1 地址:http://pan.baidu.com/s/1eRAdk3o 解压出来. 1.在解压的 ...
- onchange、oninput、onpropertyChange事件的异同
onchange事件适用于input\textarea\select元素上,支持各大浏览器,该事件只有在键盘或者鼠标操作改变对象属性,且失去焦点时触发,脚本触发无效: oninput事件适用于inpu ...
- webform中 ajax调用后台方法(非webservice)
方法一:通过创建一个没有内容的窗体 后台: public partial class Ajax_ShoppingCart : System.Web.UI.Page { bookdbDataContex ...
- ios UIKit动力
UIkit动力学是UIkit框架中模拟真实世界的一些特性. UIDynamicAnimator 主要有UIDynamicAnimator类,通过这个类中的不同行为来实现一些动态特性. 它一般有两种初始 ...
- 浅谈IOS8之size class
文章目录 1. 简介 2. 实验 3. 实战 3.1. 修改 Constraints 3.2. 安装和卸载 Constraints 3.3. 安装和卸载 View 3.4. 其他 4. 后话 以前和安 ...
- 配置Linux Kernel时make menuconfig执行流程分析
在编译内核前,一般是根据已有的配置文件(一般在内核根目录下的arch/arm/configs/文件夹下,把该目录下的xxx_defconfig文件拷贝到内核根目录下,并重命名为.config)来 ...
- JavaScript DOM节点操作总结
节点类型 节点类型主要有三种:元素节点,属性节点和文本节点. 而对DOM的主要也就是围绕元素节点和属性节点的增删改查.下面就分别从对元素节点的操作和对属性节点的操作来介绍. 元素节点 查 在对DOM进 ...
- bitmap 加载的时候出现OOM,nullpointer
1.OOM :对图片进行压缩,效果还不错:http://182.92.150.15:9876/static/server/topic_user/8068/201506/e5b37fec-0919-11 ...
- UVa 11747 - Heavy Cycle Edges
题目大意:计算最小生成树有两种算法:一种是kruskal算法,另一种是与之相反的:如果图中存在环,去掉权重最大的边,直到不存在环.输出去掉的那些边. 可以用kruskal算法解决,在判断一条边时如果加 ...
- UVa 11129 - An antiarithmetic permutation
题目大意:给一个正整数n,构造一个0...n-1的排列,使得这个排列的任何一个长度大于2的子序列都不为等差数列. 把序列按照奇偶位置分成两个序列,这样在两个序列间就不会形成等差数列了,然后再对这两个序 ...