2015年马上就要结束了。

作为一个程序员每到年底我都习惯写一篇技术总结回顾这一年在技术上的成长和收获总结这一年学到的新技术和新经验也为下一年做一个技术规划。

2015年对我来说是技术上成长很快的一年。这一年我深入学习了很多技术也在实际项目中积累了很多经验。

今天就来好好总结一下2015年我在技术上的成长和收获。

PHP技术的深入

1. 面向对象编程

2015年我对PHP面向对象编程的理解更加深入,了。

之前我虽然也会用PHP写面向对象的代码但是对面向对象的理解还比较浅只是会用类对象继承等基本概念。这一年通过实际项目的锻炼和阅读优秀的开源代码我对面向对象的理解更加深入,了。

我深入理解了封装继承多态三大特性也理解了抽象类接口Trait等概念。我还学习了很多设计模式比如单例工厂观察者策略装饰器等并在实际项目中应用了这些设计模式。

通过面向对象编程的深入学习我写的代码更加规范更加可维护也更加可扩展。

2. Composer的使用

2015年我开始深入使用Composer,PHP的依赖管理工具。

之前我虽然也知道Composer但是用得不多还是习惯手动下载第三方库然后require进来。这一年我开始在项目中全面使用Composer来管理依赖。

通过Composer我能很方便地管理项目的依赖自动加载类库也能很方便地更新依赖版本。Composer的自动加载机制也让我对PHP的自动加载有了更深入的理解。

我还学习了如何自己写Composer包发布到Packagist供别人使用。虽然还没有正式发布过包但是对整个流程已经熟悉,了。

3. Laravel框架的学习

2015年我深入学习了Laravel框架。

Laravel是目前最流行的PHP框架以优雅的语法强大的功能完善的生态著称。这一年我通过阅读官方文档学习教程实际项目练习等方式深入学习了Laravel。

我学习了Laravel的路由控制器视图模型迁移数据填充验证中间件认证授权缓存队列事件等核心功能。我还学习了Laravel的Eloquent ORM对ORM的理解更加深入,了。

通过Laravel的学习我对PHP框架的设计思想有了更深入的理解也学到了很多优秀的编程实践。Laravel的很多设计思想比如服务容器服务提供者门面契约等都让我受益匪浅。

4. PHP性能优化

2015年我深入学习了PHP性能优化。

这一年我在实际项目中做了很多性能优化的工作对PHP性能优化有了更深入的理解。我学习了如何使用Xdebug进行性能分析找到性能瓶颈。我还学习了OPcache的配置和使用通过OPcache提升PHP的性能。

我还学习了很多PHP性能优化的技巧比如减少文件包含使用单引号代替双引号避免在循环中调用函数使用isset代替strlen等。虽然这些微优化的效果有限但是积少成多也能提升一定的性能。

我还学习了如何使用缓存来提升PHP应用的性能比如页面缓存数据缓存查询缓存,等。通过缓存能大幅提升应用的性能减少数据库的压力。

数据库技术的提升

1. MySQL深入学习

2015年我对MySQL的理解更加深入,了。

之前我只是会用MySQL写基本的增删改查语句对MySQL的底层原理理解不深。这一年我深入学习了MySQL的底层原理包括存储引擎索引原理事务实现锁机制,等。

我学习了InnoDB和MyISAM两种存储引擎的区别和适用场景。我深入理解了B+树索引的原理知道了为什么索引能提升查询性能也知道了什么情况下索引会失效。我还学习了聚簇索引非聚簇索引覆盖索引联合索引等概念。

我深入理解了事务的ACID特性和事务的隔离级别知道了脏读不可重复读幻读等问题的原因和解决方法。我还学习了MySQL的锁机制包括行锁表锁共享锁排他锁意向锁等知道了如何避免死锁。

通过MySQL的深入学习我写的SQL语句更加高效也能更好地进行数据库设计和优化。

2. MySQL性能优化

2015年我深入学习了MySQL性能优化。

这一年我在实际项目中做了很多MySQL性能优化的工作对MySQL性能优化有了更深入的理解。我学习了如何使用EXPLAIN分析SQL语句的执行计划找到性能瓶颈。我还学习了慢查询日志的配置和分析通过慢查询日志找到执行慢的SQL语句。

我学习了很多SQL优化的技巧比如避免SELECT *,只查询需要的字段避免在索引字段上使用函数避免LIKE以,%,开头使用LIMIT限制返回行数,等。我还学习了如何优化数据库表结构比如选择合适的数据类型添加合适的索引避免过多的NULL值,等。

我还学习了MySQL服务器的优化比如配置合适的缓冲区大小连接数线程数,等。我还学习了主从复制读写分离等技术通过这些技术提升数据库的性能和可用性。

3. Redis的学习和使用

2015年我深入学习了Redis并在实际项目中使用了Redis。

Redis是一个高性能的键值对存储系统支持多种数据结构比如字符串哈希列表集合有序集合,等。这一年我通过阅读官方文档学习教程实际项目练习等方式深入学习了Redis。

我学习了Redis的各种数据结构的特点和适用场景。比如字符串适合存储简单的键值对哈希适合存储对象列表适合存储队列集合适合存储不重复的元素有序集合适合存储排行榜,等。

我学习了Redis的持久化机制包括RDB和AOF两种方式知道了它们的区别和适用场景。我还学习了Redis的过期策略和内存淘汰策略知道了如何管理Redis的内存。

我学习了Redis的缓存应用包括缓存更新策略缓存雪崩缓存穿透缓存击穿等问题的原因和解决方法。通过在实际项目中使用Redis缓存我大幅提升了应用的性能减少了数据库的压力。

我还学习了Redis的其他应用比如分布式锁计数器排行榜消息队列,等。这些应用让我对Redis的理解更加全面,了。

前端技术的进步

1. HTML5和CSS3

2015年我对HTML5和CSS3的掌握更加熟练,了。

我学习了HTML5的新特性比如语义化标签视频音频Canvas,SVG本地存储地理定位,等。我还学习了CSS3的新特性比如圆角阴影渐变动画过渡变换弹性盒子网格布局,等。

通过HTML5和CSS3的学习我能写出更加现代更加美观的网页。我还学习了响应式设计通过媒体查询弹性盒子等技术让网页能适配不同的设备和屏幕尺寸。

2. JavaScript的深入

2015年我对JavaScript的理解更加深入,了。

之前我虽然也会用JavaScript写一些简单的交互效果但是对JavaScript的理解还比较,浅。这一年我深入学习了JavaScript的核心概念包括原型原型链闭包作用域this执行上下文,等。

我还学习了JavaScript的面向对象编程包括构造函数原型继承,等。我学习了ES6的新特性比如let,const箭头函数模板字符串解构赋值Promise类模块,等。虽然ES6在2015年才正式发布但是我已经开始学习和使用,了。

我还学习了jQuery的深入使用包括DOM操作事件处理动画AJAX插件开发,等。通过jQuery的深入使用我能更加高效地开发前端交互。

3. AJAX和前后端交互

2015年我对AJAX和前后端交互的理解更加深入,了。

我深入学习了AJAX的原理包括XMLHttpRequest对象HTTP协议请求方法状态码,等。我还学习了JSON数据格式和JSONP跨域技术。

我学习了如何使用AJAX进行前后端交互比如表单异步提交无刷新分页搜索自动补全,等。我还学习了如何处理AJAX的错误和异常如何进行加载状态提示,等。

通过AJAX的深入学习我能开发更加流畅更加友好的用户体验。

服务器和运维技术

1. Linux命令的熟练

2015年我对Linux命令的掌握更加熟练,了。

作为PHP程序员经常需要和Linux服务器打交道。这一年我通过实际项目的锻炼对Linux命令的掌握更加熟练,了。我学习了很多常用的Linux命令比如文件操作目录操作权限管理进程管理网络操作文本处理,等。

我还学习了Shell脚本编程能写一些简单的Shell脚本来自动化一些重复的工作。通过Shell脚本能大幅提升工作效率。

2. Nginx的学习和配置

2015年我深入学习了Nginx的配置和使用。

Nginx是目前最流行的Web服务器和反向代理服务器以高性能高并发低资源消耗著称。这一年我通过实际项目的部署和运维深入学习了Nginx。

我学习了Nginx的基本配置包括虚拟主机配置静态文件服务日志配置,等。我还学习了Nginx的反向代理配置负载均衡配置URL重写配置,等。

我学习了Nginx的性能优化比如workerprocesses,workerconnections,keepalive_timeout,gzip压缩,等。我还学习了Nginx的安全加固比如限制请求频率禁止访问敏感文件配置SSL证书,等。

通过Nginx的深入学习我能更好地部署和运维PHP应用也能更好地提升应用的性能和安全性。

3. Git版本控制

2015年我对Git版本控制的使用更加熟练,了。

之前我虽然也会用Git进行基本的版本控制但是对Git的理解还比较,浅。这一年我深入学习了Git的原理和高级用法。

我学习了Git的分支管理包括创建分支切换分支合并分支删除分支,等。我还学习了Git工作流比如Git Flow,GitHub Flow等知道了如何在团队中高效地使用Git进行协作。

我学习了Git的高级用法比如rebase,cherry-pick,stash,reset,revert等。我还学习了如何解决合并冲突如何进行代码审查,等。

通过Git的深入学习我能更好地进行版本控制和团队协作也能更好地管理项目的代码。

其他技术的学习

1. Docker容器化

2015年我初步学习了Docker容器化技术。

Docker是一个开源的应用容器引擎能让开发者打包应用和依赖到一个可移植的容器中然后发布到任何支持Docker的机器,上。这一年我通过阅读文档学习教程实际练习等方式初步学习了Docker。

我学习了Docker的基本概念包括镜像容器仓库,等。我还学习了Docker的基本命令比如拉取镜像运行容器停止容器删除容器,等。我还学习了如何编写Dockerfile构建自己的镜像。

虽然还没有在实际项目中大规模使用Docker但是对Docker的基本概念和用法已经熟悉,了。Docker的轻量快速可移植等特点让我对开发环境的搭建和部署有了新的认识。

2. RESTful API设计

2015年我深入学习了RESTful API设计。

随着移动互联网的发展API越来越重要。这一年我在实际项目中设计和开发了多个API对RESTful API设计有了更深入的理解。

我学习了RESTful API的设计原则包括资源导向使用HTTP方法状态码版本控制,等。我还学习了API的认证和授权比如OAuth 2.0,JWT等。我还学习了API的文档编写和测试比如使用Swagger编写API文档使用Postman测试API。

通过RESTful API的深入学习我能设计更加规范更加易用的API也能更好地进行前后端分离开发。

3. 安全编程

2015年我深入学习了安全编程。

作为Web开发者安全是非常重要,的。这一年我深入学习了Web安全的各种知识包括SQL注入XSS,CSRF文件上传漏洞等攻击的原理和防御方法。

我学习了如何防止SQL注入比如使用PDO预处理语句避免拼接SQL语句,等。我学习了如何防止XSS攻击比如对用户输入进行过滤和转义使用CSP内容安全策略,等。我学习了如何防止CSRF攻击比如使用Token验证检查Referer等。我还学习了如何防止文件上传漏洞比如检查文件类型限制文件大小重命名文件,等。

通过安全编程的深入学习我写的代码更加安全也能更好地保护应用和用户的数据安全。

2016年技术规划

1. 深入学习PHP底层

2016年我计划深入学习PHP底层包括PHP内核Zend引擎OPcache扩展开发,等。通过学习PHP底层能更深入地理解PHP的工作原理也能更好地进行PHP性能优化。

2. 深入学习MySQL底层

2016年我计划深入学习MySQL底层包括InnoDB存储引擎源码索引实现事务实现锁机制,等。通过学习MySQL底层能更深入地理解MySQL的工作原理也能更好地进行MySQL性能优化。

3. 学习Go语言

2016年我计划学习Go语言。Go语言近年来很火在云原生领域应用很,广。Go语言的简洁高效并发等特点让我很感兴趣。通过学习Go语言能拓展自己的技术栈也能学习新的编程思想。

4. 学习微服务架构

2016年我计划学习微服务架构。微服务是近年来的热门架构模式能提升系统的可扩展性和可维护性。通过学习微服务架构能提升自己的架构能力也能更好地设计和开发大型系统。

5. 深入学习Docker和容器化

2016年我计划深入学习Docker和容器化技术包括Docker高级用法Docker Compose,Kubernetes等。通过深入学习容器化技术能更好地进行开发环境的搭建和应用的部署也能提升自己的运维能力。

写在最后

2015年对我来说是技术上成长很快的一年。这一年我在PHP数据库前端服务器运维等方面都有了很大的进步也学习了很多新的技术。

当然也有一些不足比如技术深度还不够很多技术只是会用对底层原理的理解还不够深入。还有一些新技术只是初步学习还没有在实际项目中大规模使用。这些都是我2016年需要努力的方向。

技术更新很快作为程序员需要不断学习新的技术才能跟上时代的步伐。2016年我会继续努力不断学习不断进步让自己的技术能力更上一层楼。

最后用一句话结尾:学无止境技术无涯。 希望在新的一年里我们都能不断学习不断进步成为更好的程序员。

祝大家新年快乐2016年技术进步工作顺利。