议题:

1>互联网团队的成员组成以及分工和合作。
2>如何开始学习php的知识,以及怎么去加深php的功力。
3>高性能的选择,使用nginx代替apache。
4>使用redis,memacache等nosql去提高网站的并发能力。
以及beanstalked消息队列的介绍。
5>分布式技术的介绍,什么是map reduce,以及一些流行的大数据框架如hadoop的资料的分享。

尾声:后端开发者的职业发展方向,以及对于互联网下半场人工智能技术的一些展望。

1 互联网团队的基本人员配置
PM组=产品需求输出+项目进度把控+半个交互设计
UED组=UI设计+交互设计+平面设计
RD组=客户端开发(安卓、iOS)前端+服务端开发server+WEB前端开发fe+运维op组
QA组=所有项目的质量把控+部分运维工作

这一段是一个比较完备的团队应该有的一个体系,很多小公司产经都是由ceo做了,有些公司甚至前端和server端都是一个人,这些公司往往缺乏专业的运维以及测试人员,所以代码的质量,代码的安全性,以及服务的稳定性都无法得到保证。之所以先去讲一个完善的团队规划,是因为很多学生团队,也缺乏这些基本的人员配置,以及合理的开发流程。这也是导致了很多东西做出来只是花拳秀腿的原因。

这篇文章讲了一个大致的人员分布
http://wenku.baidu.com/link?url=pLjfQoY8zszXtwA7dwXXifDwTd8NtmLekpywFBg_kY3lNaONzPX9Zzs2Ww8dJdqJaL-Cz3iucczdYhiM7Dhah-ScaRSClE21F6m5wdzAmGy

这是一个讲测试工程师的一些方面的知乎上的回答,因为很多同学对于测试工程师的工作不是特别的了解,所以给大家分享出来。
https://www.zhihu.com/question/19666055

这里如果有同学想讨论一下的话,我们可以讨论一下。如果希望继续往下讲的话,我们开始下一个议题,如何开始学习php。

<2>如何开始学习php的知识

首先是搭建php的环境。对于初学者来说使用xampp是个不错的选择,事实上就算在百度,腾讯这些大公司也会推荐在本机上搭建php测试环境的时候使用xampp。因为安装非常简单,而且删除后也很干净。之前在本地单独安装mysql时,删除后还经常碰到端口占用的问题。

这是一个xampp的下载源,是php 5.6版本的。下载速度还是挺快的。
http://rj.baidu.com/soft/detail/12489.html?ald

这是xampp的官方网站,最新的xampp的版本可以在下面这个网站里可以下载到,已经可以支持php 7.0了。
http://www.xampps.com/

这里是xampp的安装以及使用方法。
http://jingyan.baidu.com/article/48a42057bda4d0a9242504b8.html
当然在学习php之前一定的前端知识还是需要具备的。
推荐一个在线学习前端的网站
http://www.w3school.com.cn/
基本的html,css,javascript包括jquery作为php开发者来说还是需要掌握的。

下面推荐两个学习php的开发网站。
http://www.php.net/
这个是php的官方网站,php语言的特性,以及最新的一些特点都可以在这个网站里获得。
下面介绍的网站是鸟哥的博客,作为php7的核心开发者来说,鸟哥可以算的上是大陆上最权威的php开发人员。百度的ap框架以及yaf框架的开发者,现在是链家网的技术总监。
http://www.laruence.com/
像使用c语言开发php的拓展,以及php的多进程的介绍鸟哥写的还是很详细的。
http://www.laruence.com/2009/04/28/719.html
http://www.laruence.com/2009/06/11/930.html

然后我对于php开发进行一个简单的分类。

第一种叫做cli模式:也就是命令行下的模式。使用php来编写一些脚本。执行的时候在php环境下直接使用 php test.php类似于这样的方式来执行。当然前提是你的php的环境变量设置正确,或者是使用alias命令来调用bin目录下的php可执行文件的时候,php的cli模式可以正常使用。一般php的脚本的主要用途是开发爬虫,以及对于数据的处理和采集。这里我介绍一个php处理网页的类库,phpquery。
https://github.com/punkave/phpQuery 可以在全球最大的同性交友平台下载。开个玩笑。

phpQuery的最大特色就是使用类似于Jquery的方式来处理网页数据,所以php程序员懂一些Jquery的知识还是蛮有用的。然后再介绍一款在phpQuery上开发的网页解析工具https://querylist.cc/。
这一款工具非常强大,可以设置session来模拟登陆,甚至可以调用多个进程来加快采集速度。下面的是querylist的官方文档。
https://doc.querylist.cc/
然后php跑脚本的时候有个棘手的问题是内存泄漏,脚本经常跑一段时间就会中断。这里我提出一些解决方案。
1>提高你的php版本。php5.2及其以下的版本内存泄漏是非常严重的,同时php5.2到php5.3 差别很大。所以使用高版本的php还是很有必要的,最好升级到php7。
2>手动释放掉已经使用过的变量。例如unset()函数。
3>增大脚本允许的内存。可以在php.ini文件中设置,也可以通过ini_set(‘memory_limit’, ‘250M’);这个函数来设置脚本的内存。
4>使用父进程去启动及监控子进程的情况,在子进程快要耗尽内存时,将结果返回给父进程,父进程再去启动子进程。
可以看看这篇文章
http://www.jb51.net/article/71232.htm
当然也推荐使用一些进程监控工具,如supervisor
http://www.phpddt.com/php/supervisor.html

第二种php开发也就是我们平时看到的网站。这种模式可以称为cgi模式。

这里就可以介绍一些常用的系统及框架了。

我们使用php经常去搭建一些博客系统,或者是论坛,或者是erp的管理系统。博客系统最出名的当属wordpress。
https://cn.wordpress.org/
论坛呢有著名的discuz。
http://www.discuz.net/forum.php
我们的睿思也是利用discuz进行二次开发搭建而成的。
还有在线商城系统ecshop http://yunqi.shopex.cn/products/ecshop?from=baiduecshop
至于erp的管理系统,包括各式各样的cms,以及很多的模板,这些百度上到处都是了。
thinkphp就是由于拥有出色的权限管理的方法rbac,受到国内很多网站的喜爱。http://www.thinkphp.cn/
但是thinkphp有很严重的安全问题。龚潇大佬(前西电信息安全协会的会长,前乌云核心白帽子)就挖了不少thinkphp的漏洞。
https://www.leavesongs.com/PENETRATION/thinkphp-callback-backdoor.html
所以越是开源的东西,越需要注意系统的安全性,因为你在一个完全白盒的情况下接受测试,很容易出现问题。所以喜爱做黑客的同学,并想增加一下代码审计的功力,学习一下php,看一看各种网站各种框架的源码还是很有好处的。
对于其余的框架的大致介绍我在微信宣传的文章中也讲到了不少,这一次分享不再具体探讨各种框架的细节了,然后在后面的讲解中会提到部分框架。
我想讲一下php如何去提高。

首先推荐一本书叫做(php与mysql程序设计)。
http://download.csdn.net/detail/wodedahua/7379003
这是这本书的下载地址。熟读这本书,可以对于php的基础知识,以及一些php操作mysql的方法,和mysql的一些基础知识,基本的增删改查,mysql的事务管理,此书中都有提及。

然后建议去学习一下smarty。
http://www.smarty.net/
这是smarty的官方网站。smarty作为php模板技术的鼻祖,今天仍旧有很多公司去使用。甚至是百度的fisp,360都会去使用smarty作为模板输出。包括各种框架的模板输出都参考了smarty的方式,所以学习一下smarty还是很有必要的。

对于程序猿来说,算法功底也是很重要的,牛客网上有大量的练习题,算法这里我再就不多说了,多做多练就好。

着重推荐一本叫做<<深入php,面向对象,模式与实践的书>>是前雅虎公司php专家的力作,读一读是很有帮助的。下载地址http://www.jb51.net/books/380336.html
本书介绍了php的反射机制,以及php的设计模式的实现。
包括组合优于继承的思想,工厂方法,单例模式,装饰模式,观察者模式等等设计模式。这本书看了以后,我觉的当面试官问你什么是面向对象,你对面向对象有什么看法的时候,你可以侃侃而谈。另外,读了这本书,再去读各种框架的源代码,你就不会再感到吃力了,像ci大量利用了单例模式,所有的类都继承了一个超级类。

虽然大家都知道mvc模式,了解mvp模式的又有多少呢?
http://www.ruanyifeng.com/blog/2015/02/mvcmvp_mvvm.html
看了这篇文章,细细想来,很多php框架更多的是mvp,虽然当作presenter的类也常常叫做controller,但是由controller向view传输数据的时候往往是单向的,所以叫做mvp更加合适一点。我觉的能讲出mvp与mvc区别的同学,面试官对你的印象可能会更好一些。
作为世界上最好的语言,php其实是有很多的不足之处的。比起java,php没有完善的线程机制,只能进行系统调用开启进程。同时php做长连接也不是特别合适,这里推荐一篇php socket编程的文章。http://blog.csdn.net/gggxin/article/details/8839630
由于php线程方面的缺失,所以php语言没有像 java中synchronized关键字进行锁的操作。php一般在并发的情况下,设置锁的时候通常都会使用文件锁来代替。http://blog.csdn.net/topasstem8/article/details/6735240。
给大家一个思考题,如何快捷的切换语言。比如你这个网站可以变成全中文的,也可以变成全英文的,甚至是德文的,你会怎么处理?

3>高性能的解决方案:使用nginx代替apache。
到了这一步了,很多人想试着自己开始搭建网站了。对于学生党来说,没有什么闲钱选择一款便宜的服务器还是很有必要的。
https://www.qcloud.com/act/campus?utm_source=pcsem1&utm_medium=bdgj2247&utm_campaign=baidu
然后最好选择centos系统。虽然xampp也有linux版本的,但是作为服务还是推荐nginx。
http://nginx.org/
nginx官网。
这篇文章讲述了nginx为什么比apache效率要高的原因。
http://www.chinaz.com/program/2015/0424/401376.shtml
找了一篇php和nginx配置的文章
http://blog.csdn.net/liigo/article/details/48392701
这是我写的一篇介绍php fqm与nginx的文章。里面的原理大家可以读一读。
http://blog.csdn.net/wanqianbudai/article/details/53198326
我的基友在第四范式,这里有他讲的nginx的视频。
http://pan.baidu.com/share/link?shareid=560420485&uk=807779643
另外《实战Nginx:取代Apache的高性能Web服务器》这本书也推荐大家去读一下。
http://vdisk.weibo.com/s/zl-byfIanq0pU
这是书的下载地址。
最后推荐一个除了github之外的php开源代码的下载地址
https://packagist.org/packages/symfony/console
包括符合现代开发思想的php框架,支持cli模式还可以做到mvc的php代码都可以在这个网站里找到。

4>首先说一下什么叫做nosql。NoSQL,泛指非关系型的数据库。not only sql。
键值(Key-Value)存储数据库 出名的有redis,Memcached 等等。
nosql并不是说比关系型数据库更加强大,只是在查询和插入上速度更快,适合海量数据,非常适合用于网站的缓冲。还有beanstalked—–facebook研发的消息队列系统,http://blog.csdn.net/black_ox/article/details/24792489
利用这些都可以提高网站的并发能力。对于如何提高网站的能力,以及大型网站的架构设计,推荐大家去读一本书。<<大型网站技术架构:核心原理与案例分析>>作者是前淘宝架构师,李智慧。这本书介绍了大型网站的架构技术,这也是为什么我着重去推荐大家去细致学习nginx的原因,因为利用nginx的反向代理及其他特性都可以带来网站性能上的提升,本书中也介绍了这样的技术。
对于关系型数据库,大家可能最常见的就是mysql了。这里我也给大家推荐一本mysql的深入学习的书。《高性能mysql》也是阿里的著名dba所写的。下载地址http://www.linuxidc.com/Linux/2014-10/108464.htm
诚然,mysql是互联网中最常用的开源关系型数据库,但是还有一个叫做postgresql的关系型数据库异军突起,比起mysql支持更多的特性,同时在数据量暴增时,性能仍够保持线性变化。起源为加州大学伯克利分校计算机系开发的 POSTGRES,现在已经更名为PostgreSQL。相信未来postgresql能够占据更多的市场份额。http://www.ruanyifeng.com/blog/2013/12/getting_started_with_postgresql.html
这是postgresql的使用教程,提供给大家阅读。

5>第五部分的讲解就是分布式及大数据的应用了。虽然学校里也有这样的课程,但是这些在学校里你可能并不能很好的掌握,理由很简单,你没有足够的数据,也没有足够的机器,最多折腾一下虚拟主机来模拟一下。然后呢,其实对于很多小公司也没有这样的必要去部署大数据的环境,道理也很简单,数据量不够大。许多小公司的nginx,mysql,等等各种部件往往只部署到一个服务器中,而一个只存储静态网页的服务器就能够支撑数万的访问量,所以初期的phper往往接触不到这些内容。但是当公司发展到一定级别,或者是你的网站提供的服务更加复杂时,分布式技术的应用就不得不去考虑了。
首先介绍一下什么是 map reduce。map 映射 reduce 归约是它们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。它极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。 当前的软件实现是指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(归约)函数,用来保证所有映射的键值对中的每一个共享相同的键组。下面两个链接可以帮助我们更好的去理解map reduce
http://blog.csdn.net/lifuxiangcaohui/article/details/22675437

http://baike.baidu.com/link?url=3p82fzICeiD6JTDck9stlIKCRYcAoBIQvJSOAS_FOPOlyOXybFk6yog0MLd6Vqyb1mi_-328xsfforPALbZFY_
因为并发编程的复杂性,google的大牛提出了这样的想法,在此基础上衍生了大名鼎鼎的hadoop框架。
下面这个链接就是讲解hadoop的书籍。
http://vdisk.weibo.com/s/dwMnH489YASj0
这篇文章则讲解了如何使用php去调用hadoop
http://blog.csdn.net/hguisu/article/details/7263746
我觉的,当你学习完上述的所有的知识,再配合上足够的linux 运维的经验,你已经算的上是一个php高级工程师了。诚然,很多知识的细节我也没有完全掌握,但是我希望把这些东西都分享出来,然后给大家指明一个职业发展的方向。
最后的议题就是互联网的下半场,也就是我们即将面临的时代。

我认为的互联网的上半场的主要做的事情就是占领服务领域,吸引流量。这时候的创新就类似于我们去做一个前人从来没有做过的事情,像社交软件的出现,邮箱,搜索,游戏,安全,以及后期的团购,外卖,打车。互联网上半场的主要核心就是一个,发现前人没有发现的领域以及服务,去建立对应的生态。而到了下半场,我们已经很难再去想到别人没有想到过的领域,很有可能,你所有的点子,其他人都有想到过,甚至已经去做了。那么,互联网的下半场的核心是什么呢,就是数据。
这里有一个链家网的案例。https://www.zhihu.com/question/54648229
链家通过数据对用户进行画像,最后动摇到传统的房地产商的地位,这个案例不能说是不漂亮。
同时在安全行业里也兴起了一个概念叫做态势感知。是指在大规模系统环境中,对能够引起系统状态发生变化的安全要素进行获取、理解、显示以及预测未来的发展趋势。
http://www.hnqs.net/media/15632.htm
这篇文章里的一段话,摘出来供大家参考。我们认为互联网公司最重要的资产就是数据。未来所有的产品改进,都应该是通过数据化驱动,而非功能驱动。如果一家公司的竞争力还依旧停留在硬件、软件的功能上,那么这是上一个时代的公司,没有什么前途。以现在的计算机编码发展水平,只要你能想得到,没有什么功能是写不出来的,缺的只是时间和投入而已。面向未来的公司一定是数据驱动的,只有数据驱动才能像滚雪球一样将竞争力做厚,才能在最短的时间内完成高效的规模化,建立起更高的门槛和壁垒。
人工智能技术的兴起,以及各种层出不穷的数据挖掘的手段,也慢慢证明了数据本身也成为了下一个金矿。

php开发新手的一些建议相关推荐

  1. java webservice接口开发_给Java新手的一些建议----Java知识点归纳(J2EE and Web 部分)

    J2EE(Java2 Enterprise Edition) 刚出现时一般会用于开发企业内部的应用系统,特别是web应用,所以渐渐,有些人就会把J2EE和web模式画上了等号.但是其实 J2EE 里面 ...

  2. cs架构用什么语言开发_我为什么建议Python开发者将ES6作为第二语言

    ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准,已经在 2015 年 6 月正式发布了.它的目标,是使得 JavaScript 语言可以用来编写复杂的大型应 ...

  3. Android开发新手常见的10个误区

    在过去十年中最流行的移动应用开发开发平台中,我们认为,Android平台是一个新开发的最方便的平台.一个廉价的工具,友好的开发者社区,众所周知的编程语言(Java),使得开发Android应用程序从未 ...

  4. 一个入行很长的老鸟给新手的一些建议——转

    今天有空,随便写点东西给大家.很久没有混在技术论坛中,记忆里最近一次大概是在5.6年以前. 大学读的是土木,曾经也在建筑工地和设计院实习,我相信我可以把那些事情做好,但完全不是我想要的东西.96年有幸 ...

  5. 电子工程师自学成才pdf_给新开发人员的最佳建议:自学成才的软件工程师的建议...

    电子工程师自学成才pdf by Ali Spittel 通过Ali Spittel 给新开发人员的最佳建议:自学成才的软件工程师的建议 (My best tips for new developers ...

  6. Kernel Newbies内核开发新手的资源

    Jessica McKellar在Ksplice blog上的博客文章 <Linux Device Drivers> 如果你在写一个操作系统,OSDev wiki是一个不错的网站 Kern ...

  7. Java开发新手经常遇到的一些问题

    Java开发新手经常遇到的一些问题 A:java.lang.UnsupportedClassVersionError: Bad version number in .class file 解答:导致此 ...

  8. 网站的工作原理:网络开发新手(或任何人)入门

    网站的工作原理:网络开发新手(或任何人)入门 如果您刚接触Web开发,您认为自己知道网络的工作原理 - 至少在基本层面上. ...但是,当您尝试解释一个网站为什么出现空白. 什么是IP地址? &quo ...

  9. Android开发新手入门总结(1)

    大二学生,跟着老师一起做Android项目,自学安卓开发,到现在也差不多有一两个月了,期间遇到过许许多多的问题,也有不少收获,所以写一个总结作为CSDN的第一篇博客 环境的搭建 零基础学安卓,碰到的第 ...

最新文章

  1. python函数手册68_直接在python中检索68个内置函数?
  2. php多进程共享数据库,PHP多进程环境下通过共享内存与信号量实现资源共享
  3. 豆瓣9.3分,日漫风格的机器学习数学书
  4. 常用的Mybatis-Plus方法,让你的数据库增删改查(CRUD)一键实现
  5. OSI协议和TCP/IP协议笔记
  6. MOS2010的界面介绍和定制方法简介【资料汇集】
  7. Mind Control CodeForces - 1291C(思维)
  8. Js对象如何添加方法、查看Api
  9. VMware vCenter升级杂谈
  10. 查询阜阳2021高考成绩,今年阜阳高考状元名单是谁,2021年阜阳高考状元多少分
  11. c php curl post,php curl post
  12. python与office结合可以干什么-震惊!当Python遇到Excel后,将开启你的认知虫洞
  13. 切片 里面包含interface_Golang的数组和切片
  14. 使用Zookeeper实现负载均衡原理
  15. BZOJ3529: [Sdoi2014]数表(莫比乌斯反演,离线)
  16. 到底什么方法 训练1000个样本,就能完成400万条评论分类!
  17. Mac ffmpeg推流记录
  18. ubuntu 安装 TM2009 QQ2013
  19. 学习版origin申请安装
  20. Java快排两种写法

热门文章

  1. java中的Locale类讲解
  2. 淘特商品详情API接口(商品列表接口,商品销量接口,商品价格接口,商品价格排序接口,商品销量排序接口,专享价接口,已售商品数据接口,APP商品详情接口)
  3. VS2017 CUDA编程学习4:CUDA并行处理初探 - 向量加法实现
  4. lunix dig 安装使用
  5. 如何快速入门Comsol?
  6. 融合创新、开源开放、云智一体,百度智能云在数字时代全面开花
  7. python集合例题_python 学到集合为止的17道练习题
  8. 微型计算机控制技术第一章绪论
  9. 求一个矩形的质心c语言,c – 从.stl(立体光刻)文件计算质心的方法?
  10. 说说日本人的工作态度