php程序员应该掌握的技能包
作为一名web开发者来说,不论是php还是java web,就我目前掌握的知识来说,个人认为应该掌握以下几个方面的内容
1 基础的编程语言,这个好像是废话
2 软件设计的思想,如面向对象、mvc、各种设计模式等等
3 web服务器的配置、优化,如apache、nginx
4 关系型数据库,现在mysql比较流行
5 非关系型数据库,如memcache、redis、MongoDB
6 http协议 tcp/ip协议
7 web高并发下的解决方案
8 linux系统,最低要求会写shell
9 掌握一门其他语言(这个在有些人貌似是不必要的,但我觉得还是挺有好处的)
10 正则表达式
11 web前端技术如js div+css(非必要)
上面所说的知识点每一个都值得大书特书,下面我尽我能力详细的罗列,并对每一个技术点写一篇专门的博客做解答
首先是第一点,对自己熟悉语言的理解。这个是基本且是最难的,拿php来说,包括基本函数、内置方法、数组的掌握,底层运行原理的掌握、任意一个框架的构建思想、甚至包括php如何与web服务器的通信原理等等还包括设计其他数据结构和常用技术的知识点,下面开始详细介绍
1 php常用的处理数字、时间、字符串、文件和数组的函数,如果非要说一个标准的话大约要记住50个
2 php的编码规范
3 类中的基础知识(如魔术方法、静态属性、对象赋值、继承、多态等等概念的理解和语法使用)
4 对cookie和session的理解(这个放到http中归类也是可以的)
5 队列的作用及实际使用场景
6 php与web服务器的通信原理(也就是所谓的php-fpm/cgi/fastcgi/sapi这些让人搞不清的概念之间的关系)
7 跨域的解决
8 传值与传引用的区别以及使用场景
9 web安全方面的解决方案
10 php在处理超大数据方面的解决方法(平时我没用到过,面试中经常会问到)
11 重定向
12 try/catch
13 如何捕获服务器异常,如404
14 php的垃圾回收机制
15 路由实现机制
二 关于软件设计思想
这一部分是php技能的升级版,在掌握了任何一门语言的基础语法知识后都不可避免的会设计到架构设计方面的问题,小到一个功能的思路设计大到整个框架底层的实现,这都是我们长期实践和思考得来的宝贵财富,需要我们遵循一定的思想及模式来方便我们工作,如面向对象编程、设计模式等等
1 对面向对象的理解
2 对任意一个成熟框架的底层架构了解
3 尽可能多的掌握设计模式并熟练运用
4 现在力所不能及的软件设计思想,有一次听一个朋友说起过,后来忘了,境界不在一个层次上面,只记得这个名词了,以后在讲解
三 web服务器的优化配置
现在不太懂,以后慢慢补充20171007
四 关系型数据库 -mysql
知识面实在太大,几乎是我力所不能及的,只能是尽我所能的尽可能的罗列
1 数据库三大范式,平时根本不会在意,也就面试的时候可能会用到
2 常用sql语句的熟练掌握(这是基础也是重中之重,比如 limit、having/where 、group by、join、子查询等等的使用 )
3 存储引擎的选用(即异同)
4 对索引的理解(非常非常重要,极其值得大书特书)及常用的sql语句的优化
5 对数据类型的掌握(如int(5)/int(10)的区别,varchar(10)/varchar(100)的区别,我相信这个问题大多数人也是不清楚的,区别是不同的吆)
6 读写分离的延迟解决方案
7 数据穿透的解决方案
8 事务和锁(非常重要)
9 隔离级别(这个平时大部分人不会注意,因为都用默认的,但面试的时候会问到)
10 分库分表
php程序员应该掌握的技能包的更多相关文章
- JavaScript之父Brendan Eich,Clojure 创建者Rich Hickey,Python创建者Van Rossum等编程大牛对程序员的职业建议
软件开发是现时很火的职业.据美国劳动局发布的一项统计数据显示,从2014年至2024年,美国就业市场对开发人员的需求量将增长17%,而这个增长率比起所有职业的平均需求量高出了7%.很多人年轻人会选择编 ...
- Code Review 程序员的寄望与哀伤
一个程序员,他写完了代码,在测试环境通过了测试,然后他把它发布到了线上生产环境,但很快就发现在生产环境上出了问题,有潜在的 bug. 事后分析,是生产环境的一些微妙差异,使得这种 bug 场景在线下测 ...
- 传播正能量——做一个快乐的程序员
引子 今天在博客园看到施瓦小辛格的文章我们搞开发的为什么会感觉到累,顿时有感而发.自己本来不擅长写文章,更不擅长写这种非技术性的文章,但是在思绪喷薄之际,还是止不住有很多话要说.针对从客观上说&quo ...
- SQL Server 致程序员(容易忽略的错误)
标签:SQL SERVER/MSSQL/DBA/T-SQL好习惯/数据库/需要注意的地方/程序员/容易犯的错误/遇到的问题 概述 因为每天需要审核程序员发布的SQL语句,所以收集了一些程序员的一些常见 ...
- 就这么漂来漂去---一个毕业三个月的java程序员的裸辞风波
注:这并不是一篇技术文章,而是记录了我这几个月经历的入职,裸辞,找工作的心路历程,简单介绍一个博主的情况,我是16年毕业生,校招进了一家北京的公司,java开发,和很多年轻人一样,干了一段时间,我发现 ...
- 【定有惊喜】android程序员如何做自己的API接口?php与android的良好交互(附环境搭建),让前端数据动起来~
一.写在前面 web开发有前端和后端之分,其实android还是有前端和后端之分.android开发就相当于手机app的前端,一般都是php+android或者jsp+android开发.androi ...
- 程序员必须要知道的Hadoop的一些事实
程序员必须要知道的Hadoop的一些事实.现如今,Apache Hadoop已经无人不知无人不晓.当年雅虎搜索工程师Doug Cutting开发出这个用以创建分布式计算机环境的开源软...... 1: ...
- [转载]一个标准java程序员的进阶过程
第一阶段:Java程序员 技术名称 内 容 说明 Java语法基础 基本语法.数组.类.继承.多态.抽象类.接口.object对象.常用类(Math\Arrarys\S ...
- 【读书】PHP程序员要读的书目(不断完善中)
本文地址 分享提纲: 1. PHP 2. Linux 3. Apache/Nginx 4. Mysql 5.设计模式/架构 6. 缓存并发 7. 其他语言 8. 代码基础 9. 大前端 10. 管理生 ...
随机推荐
- 交叉熵(Cross-Entropy) [转载]
交叉熵(Cross-Entropy) 交叉熵是一个在ML领域经常会被提到的名词.在这篇文章里将对这个概念进行详细的分析. 1.什么是信息量? 假设X是一个离散型随机变量,其取值集合为X,概率分布函数为 ...
- 鸟哥的Linux私房菜-第一部分-第2章Linux如何学习
第2章 Linux如何学习 Linux可以干什么 企业级:网络服务器.金融数据库.大型企业网管环境.高性能计算.集群 个人:桌面计算机.手机.PDA(掌上电脑,这个电脑的意义十分广泛,在不同的场景下有 ...
- 剑指offer 面试4题
面试4题: 题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 解题代码一:二 ...
- python中的逻辑操作符
python中主要有三个逻辑操作符,分别是:and.or.not. and:且,所有人为真才为真. or:或,一个为正就是真. not:非,取反. >>> print(3>2 ...
- SpringMVC:学习笔记(9)——文件下载
SpringMVC—文件下载 说明 两个案例 1.为登录用户提供下载服务. 2.阻止仅通过输入网址即可获取下载. 文件下载概览 为了将文件发送给浏览器,我们需要在控制器中完成以下操作: 对请求处理方法 ...
- tar软件安装
安装tar ./configure make sudo make install
- iOS 11系列 - Xcode 9新特性
Xcode 9最近刚刚发布,带来了一系列不错的新特性,可以更好的帮助到开发者完成开发工作. Xcode Runtime Tool Xcode 9中有许多Runtime Tool可以帮助开发者找到代码错 ...
- http://www.uupoop.com/ps/
网页版PS,在线PS 基本的PS功能都有,最重要的一点是快,网页版的嘛,哼哼!
- Python学习进程(9)序列
序列是Python中最基本的数据结构. (1)序列简介: 序列中的每个元素都分配一个数字标明它的位置或索引,第一个索引是0,第二个索引是1,依此类推.序列都可以进行的操作包括索引,切片,加,乘 ...
- 每天一个Linux命令(50)netstat命令
netstat命令用来打印Linux中网络系统的状态信息,可让你得知整个Linux系统的网络情况. (1)用法: 用法: netstat [选项参数] (2)功能: ...