目录

史上最好语言之一

PHP是最好的语言!

某女:你能让这个论坛的人都吵起来,我今晚就跟你走. 

某工程师:PHP是最好的语言! 

某论坛炸锅了,各种吵架… 

某女:服了你了,我们走吧 你想干啥都行. 

某工程师:今天不行,我一定要说服他们,PHP必须是最好的语言 

某女:…….

既然看上史上最好的语言之一,那PHP到底好不好学,如何学,学到什么程度,前景如何?

**另一个史上最好最难的语言汉语,你都会了。**还怕学不好一门计算机语言,还是被号称门槛低的语言。

PHP低门槛容易学,常读其他优秀工程师的代码或读些开源代码,参与实际项目,最好有人带,建议PHP手册常相伴,如果你想当正规军,还是想当足够牛逼的正规专家,熟读PHP手册;

我们相信一万小时定律,篮球运动员持之以恒的训练比赛终成为万众瞩目的巨星,我们用一万小时(一天8小时一年200天算需要6年时间)也能助咱们成为业内专家,专家这词现在逼格越来越低了;

互联网从PC端发展到移动端,到热火朝天的人工智能,还有蠢蠢在动的物联网,他们背后都有服务器强有力的默默支持,不论输出任何协议格式的数据,服务+业务数据接口+移动前端展示,后端Linux+开源,互联网在2015年之后也渐渐的被叫做传统行业了,越来越多人扑向互联网,特别是2020疫情环境下,互联网大放异彩,各行各业的年轻人都想到互联网吃点肉喝点汤,对于互联网中小企业老板要求快速部署、快速实现、内容优质、高大帅气产品,在不需要技术驱动的产品里,PHP成为万众服务端语言首选;如同一个帅气的才子,后端负责迅速有才不求太深的深度,前端们负责光鲜帅气;

你好,世界

当咱们开始编写PHP的Hello World时

<?php
echo 'Hello World!';
exit;
?>

简单,不用加载任何类库(:-)所有语言写Hello World都不复杂);

PHP不能随便,随便起来会害死人:

编码都是有原则的,PHP也一样,PHP生性随意不好掌控,作为PHP工程师写好PHP比写好其他语言更显功力水平,在这个Hello World例子中,有一个原则:如果是字符串,不建议使用双引号,执行时PHP引擎分析器会检查双引号内是否有变量,会降低代码的执行效率,最好单引号直接作为字符串处理;这里只是举个例子说明编码可以随意的编码,也可以细节之处优雅高质量的编码(量变产生质变,细节多了做到位了,就是两个不同层次的开发)。当然现在的php更高版本效率大大大提升,各种IDE、格式规范越来越成熟,很多优化都是自动智能化的。

PHP发展迅速,开发人员水平参差不齐,林子越大,奇奇怪怪的什么gui都有,咱们要励志做优质码农,要严谨、高大上地coding;门槛低,不意味着可以随便写写代码,要有原则有底线。

代码整洁之道-php版还是要有的。

解释性语言

编写好代码,要运行PHP代码。PHP工程师参加一个会议,主持人说:我们先编译下,大家可以休息下。PHP工程师:脚本语言不需要编译,那不是不能休息哈。是的,PHP有个好处就是改动即生效,无需编译,属于解释性语言。

编译和解释的区别:编译的时候,编译器把所有源文件处理一遍生成一个目标可执行文件;解释是边解析源文件边执行。有网友提供了个很形象的比喻:编译就是煮好一桌菜,然后大家上桌开吃;解释就是准备好火锅材料,大家上桌边煮边吃。PHP8也会推出JIT编译。

知识点/理解JIT编译

编写好代码,大家都知道需要把PHP文件放入服务器,浏览器上访问URL地址。但是所有语言都需要有相应的环境才能编译或执行。

LANMP

作为PHP工程师,会经常被听到LAMP或LNMP或WAMP黄金组合:

LAMP:Linux+Apache+MySql+PHP
LNMP:Linux+Nginx+MySql+PHP
WAMP:Windows+Apache+MySql+PHP

早几年,大家用的比较多的是LAMP,现在大厂推动下,最近几年Nginx崛起,LNMP备受追捧。至于WAMP大部分是属于主机服务商为非开发者准备的环境,一般如果咱们使用的Windows机器实现编码的话,本地都会有WAMP环境(XAMPP),我们更愿意搭建个Linux虚拟机环境或者直接MAC;

Linux是你提高逼格一大契机,Nginx是架构师轻车熟路地给出各种使用代理、反代理、负载均衡、限流等方案利器,MySql是PHP结合最好的数据库没有之一。

炫耀着成长

开始了自己的码农生涯,领导开始器重自己,分配了个功能模块由自己负责完成,慢慢地发现自己不仅仅是个后端工程师,前端交互这么有成就感的事自己也要会,开始写点JavaScript,为了让设计同伴们崇拜、其他工程师羡慕自己,还要懂得帮设计调CSS布局,偶尔自己还要和产品据理力争,嗯,看起来自己开始越来越全能了,能前能后了。

能做的越来越多,接触的业务也多了,掌握了更关键业务,更熟悉一些PHP框架,可能是公司自定义的MVC框架,可能是Zend\Larval\YII\ThinkPHP\Swoole类框架\Codeigniter等,大家都支持MVC设计模式,熟悉了MVC、入口原理,了解分层目的及益处,学会了封装自己的类库。懂得在Model层处理数据,开始整理并重构简化逻辑层,尝试分离View层。

产品进入测试阶段,开始懂得向测试姑娘们’炫耀’自己如何高效修复bug,在测试姑娘们面前炫耀F12、Fildder等各种调试工具,分析数据请求及响应,分析页面渲染错误原因,分析页面交互异常。

经过几轮测试的洗礼,心电图如同中国A股主板大盘指数跌宕起伏,信心泡沫被吹破,坚强的我们重新建立起更强的信心,我们会编码、会实现功能、会快速定位及修复bug,还有我们的"上进"好像掳获的不仅仅有上级领导的心,还有设计姐姐、测试妹妹、产品哥哥们的心。

工欲善其事必先利其器

PHP总算学得有模有样了,也看见公司老司机们写起代码来飞快,调试起来那么的顺溜,好生羡慕,也接触过不少编辑器。对于我们来说,有非常多的选择,高逼格的有Vim(门槛略高),越来越成熟智能的IDE:phpstorm、netbeans、zend studio、vs code等,作为工程师,必须选择好自己心仪的开发利器,一般咱们会在IDE上编码,当咱们需要在服务器上飞快调试或紧急需要编码时,Vim也是我们横行Linux系统的武器。

Vim全面学习详见,不难的,自己平常有心用用:Vim基础概览Vim进阶概览

性能要跟上

产品要上线了,老道的总监要求压力测试,不论测试使用ab、jmeter、loadrunner还是tsung,还是自己编写的工具进行压测,测试给出了不通过的报告,对于自视高段位的我们来说,这是件不怎么有面子的事,那我们要想方设法要回面子:

对于web页面性能优化,几年前网易财经一位前辈写的文章:网易财经前端开发总结,你要是都看得懂,不仅文字、字母认识,还要知道讲的是什么鬼。(文章好像已经404了,我们也可以百度搜索雅虎前端优化军规,这些文章都是好几年前的,但思路方向都是对的,只是现在技术解决方案可能不大一样),大概就是减少请求数量加快页面加载速度、资源采用cdn降低业务服务器压力提高资源访问效率、前端资源缓存避免不必要请求浪费流量、异步实现提升页面友好度、js/css代码优化压缩等优化,总之目标是界面友好加载足够快。对于门户网站还要考虑seo优化。

除了页面上的优化,还有服务器逻辑上的优化,咱们主要考虑数据处理算法和数据输出优化,算法这东西真是靠经验,看多做多写多学多,有时算法稍微改动一点,CPU就少转N圈,内存会比较清闲,负载不会总在预警线。数据输出,一般做法是派上缓存,内存级缓存,加快数据提取、计算、存储过渡、输出,减轻数据库压力、降低CPU计算,几年前Memcache是PHP的原配,如今来了个美丽如花的Redis,不仅入得了厨房,还出得了厅堂,Redis作为缓存,可存储各种数据结构,也能支持持久化,5.0还提供了stream类型用于完善消息队列的实现,为开发者延伸出各种服务,比如限流、锁机制、轻量消息队列、天然排行榜等。

分享:

缓存使用

什么场景下可以使用缓存:

  • 由于大部分数据库请求都是读操作,那么不常变动的数据缓存机制可以显著地降低数据库压力。
  • 如果数据库服务器的负载比较低但CPU使用率很高,这时可以缓存计算好的结果( computed objects )和渲染后的网页模板(enderred templates)降低CPU的计算时间。
  • 利用缓存机制可以缓存session数据、临时数据以减少对他们的数据库写操作。
  • 缓存一些很小但是被频繁访问的文件。
  • 基于内存管理方式,缓存对象建议不大于1m
  • 等等,只要根据实际项目需要合情合理合适

迈上一个台阶

幸运的我们,压测hun过去了,又获得了点经验,拿了些资料道具,如此循序渐进,金钱和经验都没少拿,哪天上帝在我们身旁丢下一个升职的机会,好在咱们金钱和经验够足,可以任性将机会带回家,我们有幸成为一个小主管/小组长。作为主管首先要熟悉产品业务,然后技术还不算差,在完成编码任务前提下,兼职参与模块需求讨论、反复思考设计确认、计划评审及进度安排,有点要走向巅峰、迎娶xxx的feel了,信心时而大膨胀、时而小收缩,总体上良好向前。

出问题了,咱们能做什么

越重要的人负责越重要的事,线上出问题了,重要的我们被派往前线分析排查问题,一般运维负责系统环境部署,至于业务环境,运维爱莫能助了,线上出问题对我们来说不好也很好,它是个机遇,处理好了我们牛逼我们负责,处理不好,靠边站靠上级帮忙,以后没我们啥事(夸张了些)。产品出问题了,要勇于承担责任,也要勇于面对并解决问题。这是态度问题,360行,行行如此。你负责你解决,以后还你负责,一直是你的,少了你,大家都会有点慌哈。

目前php技术栈的中小公司一般线上是LA/NMP,Linux、Nginx(Apache)、MySql、php-fpm、Redis(Memcache)等主要服务,首先要熟练操作Linux系统,其次熟悉Nginx运行原理、HTTP及Server配置、服务相关操作指令,再次熟练掌握MySql操作指令以及熟练sql语句,再再次熟悉php-fpm服务配置及运行原理,再再再次清楚Memcache或Redis服务操作及指令操作,最后还是Linux的命令和Vim编辑操作等,这些只能是在工作中慢慢积累,不同系统不同版本还有各种特殊操作,但是这些都不是问题,大部分人只要肯努力都能在短期内精通,前提是咱们不能光看不做,要付诸于实践总结,让旁人看见咱们是在上升的;除了机器学习,目前来说需要很多数学基础,互联网的技术大部分还是早知道早记住早运用的程度,我们一直和爸妈说:你们很有能力用好计算机和智能手机的,只是你们晚接触而已,现在来得及的。

走上996福利道路

解决完线上问题,我们意识到服务监控和预警的重要,编码除了实现看得见的功能、提升效果明显的性能、注意级别高的安全,还要植入看不见但为了节约时间(时间就是金钱)的日志跟踪、异常监控、数据统计、预警通知等服务。

经历过越来越多的项目后,我们对PHP框架的掌握越发熟练,我们不甘心使用第三方框架,或是使用第三方框架上有别扭之处,咱们在业余时间里编写了自己的框架,或在第三方框架的基础至上扩展、调整框架使得自己用得舒服,并将框架推广作为之后项目的主要框架。

领导越来越觉得咱们很是牛逼(^_^),随着业务的发展,越来越复杂庞大,领导没给我们更多的小伙伴来协助我们,而是觉得我们的能力还可以完成更多的事,能者多劳嘛,吃早餐时开会,开会后编码,编码一会讨论方案,回来继续编码,向其他人解释可行性,一会上服务器巡视,一会code review,一会编写文档,一会画画UML,一天满满的安排,甚至在项目紧张时期,努力靠近996,反正工作充实了咱们的生活时间,面对这么多我们能编码实现却赶不上里程碑的任务,我们学会变相偷懒,尽量使用开源项目、第三方组件来解放我们的双手,更厉害的编写工具,实现智能化自动化,节约更多时间并准时下班赴约,聚餐K歌或是约姑娘吃饭看电影,这才是充实咱们的生活时间。

码农的路

互联网的宠儿总笑称自己码农,码农和传统工农有类似的地方,有人制造工具,有人利用工具制造道具,形成一个产业链,产业链的开始是用户,终端还是用户,形成一个闭环,然而码农并不会第一手接触用户,而是产品运营或商务销售。

走着走着,越来越明显的两条路,一条往’深圳’路走,一条往’广州’路走。如果我们有强烈的求知欲和研究欲望,动手能力强,极客范显眼,有技术大牛的倾向,往深着走,也许我们的名字叫技术大牛、专家;如果我们有广泛的爱好兴趣、涉猎广泛、各种设计点子与解决方案、了解用户心理心态、审美品味高大上、对数据和市场敏感等,往广着走,考虑着产品架构、产品方向、产品设计,也许我们的名字会是张小龙。

互联网系统架构

作为架构师,了解流行的各种设计模式、开发方法、服务框架、架构,结合自身团队及身边同学朋友当年从事研发经历的成功与失败经验,根据当前团队产品需求定制服务架构,如果我们是架构师时,需要哪些经验才能支持咱们判断服务架构是否合理?要了解的大体这些关键词:

域名服务、DNS服务、CDN服务、HTTP协议、TCP\IP协议、HTML5、DOM渲染、JavaScript交互、前端UI组件、CSS+DIV、JSON\XML、模板渲染、静态页面缓存技术、 FAST-CGI、PHP-FPM、Nginx\Apache、框架\引擎、并发、多进程、多线程、异步、协程、消息队列、阻塞与非阻塞、IO多路复用、数据缓存、 数据结构、数据算法、操作系统内存操作、数据库原理、SQL、索引、数据库设计、数据库优化、数据同步、负载均衡、高可用分发、 Iaas\Paas\Saas\Caas\Maas、云服务、大数据服务、移动APP、第三方API、第三方SDK、微信生态、小程序生态、头条系、机器学习、神经网络、视觉、语音等

  • MVC,最原始的单体结构的优秀设计模式
  • 云服务、SAAS
  • 应用与数据分离
  • CDN服务
  • 前后端分离
  • 应用集群负载均衡
  • 数据库读写分离
  • 缓存缓解数据库压力
  • 搜索引擎缓解数据库搜索压力
  • 数据库表拆分、集群、主从、异地
  • 异步、消息队列
  • 应用拆分、微服务
  • DEVOPS、自动化、Docker、K8

分享:

经验积累&开放式学习

平常应用业务层面各种解决方案经验:异步队列、框架管理、验签方案、加解密方案、插件方案、国际化方案、压缩方案、上传方案、断点续传方案、导入导出方案、缓存设计管理、异步消息队列服务、延时队列、高并发场景下各种解决方案、日志方案、备份方案、同步方案、异常处理方案、调试方案、跟踪方案、开发模式、数据库建表原则、数据库优化方案、灾备方案等

目前机器学习方面,由于php不是密集型计算语言,所以还只能是停留在对接机器学习接口来实现所谓的AI人工智能,php负责应用层的实现,python等复杂AI服务的实现。

除了自身技术经验积累外,发达的互联网越来越开放,大众分享,可以多看看一些资讯,了解大公司、前沿公司、创业公司、牛逼产品是如何打造的,多学多看多参加一些技术沙龙或会议,会有不少对咱们来说很有用的干货,也能开阔咱们的视野,提高求知欲,提升自信。

技多不压身

我们建议学习Java、Go、C++等更加严谨、优秀思想的语言,python已经火到不需要我们推荐了。

老大,我们队列用Java来实现吧;老大,通讯这块我们用C写个扩展支持长连接可以吗;老大,我们客户端用Native还是Web形式;老大,我们文件上传到哪里存储呢;老大,听说python做工具脚本效率比php好多了。老大,,,老大很烦恼,很后悔当初没好好了解Java、C、App、文件存储、Python,让有良心的老大如何是好,不能瞎说瞎下判断,但我们又争大着眼睛盯着老大。不是说老大都要懂得这些,但要是哪天我们以后成为都答的上来的老大是不是很威风很令人信服。语言是相通的,只是环境和语法不尽相同,况且PHP结合了C、Perl、Java、js等各家精髓于一身,嗯,是/精髓/。

腾讯、网易、百度等这些大厂在互联网行业已经叱咤20+年,也正是中国互联网蓬勃发展的20+年,互联网不再年轻,物联网、大数据、AI人工智能会是下一波工业革命。

加强系统学习

说个故事,有个童鞋叫Real,毕业后如同触底的股票连续的涨停板,大学时Real在部分功课上下足了功夫,打实了基础,主要编程语言学的Java,但对于Java编码感觉枯燥无味,编码水平一般;

大二时数据库原理老师,讲课通俗易懂有魅力,Real开始准时上下课,认真做老师布置的作业,范式、DML、DDL、DCL、Model、视图等作业,争取给老师留个好印象,在当时只要做好作业,能回答问题,那就是老师的宠儿;

大三有个天生乐观派乐呵呵满头苍白海归老头,英语教学,老头开课前总会放一篇动画,生动描绘要讲的内容及流程原理,还有网络实验室提供给学生瞎折腾,能折腾一些有用的东西回去跟其他同学炫耀,英文版的一本厚厚书,拿在手上,放在图书馆桌上,打开写写画画,时时都感觉到自豪感。

大三来了女神级授课操作系统的老师,毕业的时候大概能记住的就是操作系统进程管理、内存管理、文件管理,也就是这些进程、存储、文件管理的思想及方案很是有趣,在他脑海里这些都可以运用到生活中的思想及方案。

大四毕业前选修了Linux系统课程,当时编码都还在Windows上,也不知道有Mac,也不了解Linux能做什么,只看见老师在那边耍酷般的敲打着键盘,还常炫耀学校邮件服务器是老师搭建的,Linux对于初学者高门槛,初学者大部分连Windows都还搞不定,怎么去搞定Linux,暂时吃不到猪肉,不妨碍先看猪是怎么跑的。

Linux是地基,Vim是装修利器,其他服务就是建筑里的地砖、墙砖、踢脚、墙线、天花板、门窗、玻璃、卧室、大厅、厨房、卫生间等实体服务。

故事说:对于懂事的学生,自己就会去学,对于不懂事的学生事情的发展总是有外因+内因的推动。反过来告诉我们所有的童鞋,一定要努力,不要荒废青春,我们走过的每一步都不会白走,但价值有大有小,了解未来方向,努力向前。

过程管理

只要时间足够充足,互联网产品就有足够成熟,一样可以做成流水线,需求评审、需求确认、原型设计、UI\UE设计、切图静态输出、设计编码、测试、修复、上线、跟踪、收集反馈、下期需求;

我们要做需求管理、资源管理、代码版本管理、运维管理、问题跟踪管理,每个环节确保不出问题,每个环节分离独立完善保证正确及效率,可以借用各种服务工具,比如版本管理SVN/GIT,需求收集、进度安排、团队协作有trello/worktile/confluence wiki+jira,运维devops的CI&CD有docker\Jenkins等

想起知乎有个问题关于计算机科学与软件工程专业有什么区别,他们学的课程80%是一样的,软件工程可能是多了一门软件工程的课程,讲的是工程这档子事,从建筑工程、电子商务工程就已经有了工程这个概念,有一句话可以概括软件工程:软件工程就是过程、方法、工具。工程宏观上关注过程,每个过程环节关注实现方法,方法借助工具。

架构总监和CTO

开发和架构界限模糊,经常用来区分架构和开发的关键几点:伸缩性和抽象程度的增加以及作出正确设计决策意义的增强。

架构师的职责是多种多样的,在不同领域有一定的参与度、影响力、领导力、责任感;

架构师要管理非功能性需求,有全局架构定义,组织技术选型及架构评估,架构协作安排,发挥领导力保证进度与质量,参与设计与开发测试;

几年前有一个CTO辩论会,AppCan、Testin、云智慧、51、Talkingdata、爱加密、极光推送6位CTO展开辩论;

假期话题:有CTO说他周一开会,周二到周五出差,大部分人已经好多久没有休过假期,有人经常工作到晚上12点,基本没有假期;

第一份工作话题:有CTO曾经炫酷打鸡血敲代码,有人无所事事辞职,有人重写网站,有人高大上实验室出身,有人商务销售出身;

目标CTO话题:有CTO曾经很自信一开始感觉自己就是CTO,有人无所谓,只要产品好就可以,有人不知不觉就被CTO了,有人不善于沟通就只能做技术大牛;

技术话题:有CTO认为广度比深度更重要,深要1-2门深,广要尽量铺开;如果深一门语言,建议C语言,互联网时代,要了解信息化协议;技术、产品、逻辑融会贯通,广度用来横向对比,判断趋势,用什么技术做什么产品,深度把产品做成精品;有CTO痛恨全栈工程师的提法,建议年轻人要踏实走逐渐沉淀下来;

万能的学习能力

学习能力

尤其是自学能力,你什么时候看到那些有名的程序高手在论坛上问“学习 XX 该看什么书,如何快速学习 XXX,学习 XXX 有什么代码推荐”之类的问题,他们想学什么很快就能自己找到相关资料。这个行业发展太快,技术淘汰的速度也很快,3年不学新东西就可能落伍了。

动手能力

都是看书看资料,当别人还在纠结看什么书,还在纠结书里的字句是什么意思的时候,有些人的几百上千行代码都已经能运行了。

耐心和毅力

做程序员兴趣固然重要,写自己喜欢的代码那是相当愉快的事情,但是程序开发中无论如何还有大量乏味无趣的事情,要能坚持,咬牙把这些做完。

表达能力

能在大庭广众下,把自己的想法逻辑清晰流畅地讲出来,让人听懂。

那么技术呢?应用层面的技术没那么重要,有了以上几种能力,市场上需要什么技术,很快就能掌握了。

中小企业的互联网下一阶段

互联网行业,竖向分横向分都是行业,横向有智能硬件、WEB2.0、企业服务、移动互联网服务、云服务,BAT三巨头大举进军各行各业,以前各种服务商、创业公司怎么活,既然BAT受众对象是全民或是全企业,那么咱们这些小众服务商及创业公司是否可以在把受众对象指定在某一个特定领域,做垂直化的业务服务,发挥更具体、更有针对性的服务,不去盲目抄袭大平台服务。

人工智能,按李开复大佬的说法,AI可以看做是工具,就像10+年前photoshow的工具一样,人之所以是人,就是比其他动物更聪明在懂得使用工具去完成任务,AI并不会那么快有真的所谓有思想的AI实体。有空可以看看李开复的《AI未来》,或腾讯视频上有李开复先生的《AI未来》视频版,这里有个网友对于AI未来的读后感:李开复-AI未来-书摘

AI也将会是中小企业将广泛应用的工具,大数据服务于AI,AI反过来服务于数据,服务于应用业务,服务于用户,当然AI除了延伸了互联网原有的服务功能外,AI还会带来很多之前未有的业务和服务。

概要小结

启蒙入门

A、学习一门脚本语言比如php、python、javascript,可以让你摆脱对语言的恐惧,能让你很快开发出小程序;

B、熟练工程师利器,非IDE编辑利器Vim\Emacs,IDE利器如phpstorm、netbeans、sublime、VS code等,Vim或Emacs必须熟悉一种,其他IDE用到最后觉得谁舒服用谁;

C、熟悉Unix系统及其常用命令工具,熟悉流行操作系统Centos、Ubuntu等系统文件结构及配置文件等作用、熟练常用命令工具;推荐鸟哥的私房菜系列;”其实Linux很简单,只是门槛高点”;

D、学习WEB基础,HTML\CSS\JS+LANMP+Memcache+Redis,知道HTTP做了什么,HTML用来做什么,CSS怎么渲染页面,JavaScript怎么操作DOM,LANMP黄金组合怎么配合的,Cache在什么场合用得上,懂得记录跟踪日志、排查异常并解决问题;

E、可以自己建站,弄个域名,搞个云主机,备案,建站,维护,运营;

进阶加深

A、学习其他优秀的语言,重新学习C语言,熟悉经典算法及数据结构,学以致用;学习Java或C++,了解严谨面向对象语言的实现,了解JVM,换角度思考其他语言解决方案与技术,融合各种语言的共通点及中间件方案;

B、重新学习操作系统,学习系统调用,特别是Unix系统,了解系统层面知识,清楚文件系统操作及原理,了解系统进程、内存、文件存储管理思想,学会编译程序,学会Socket编程;

C、重新学习计算机网络,熟悉网络通讯原理,熟悉TCP\IP、UDP、HTTP等协议,弄明白当你访问www.google.com时,浏览器都做了什么,HTTP做了什么。学会抓包分析数据。

D、重新学习数据库原理,经验表明:所有上层代码受数据库设计影响,好的数据库设计使得编码轻松又清晰,数据库结构混乱,Model层混乱,中间服务层杂乱,逻辑层复杂,对外口径不统一,容易牵一发而动全身。了解传统结构数据库原理\模型\范式\设计\优化,对比了解NoSql并实际使用MongoDB、Redis等数据库;

E、了解编译原理,尝试自己写个编译器或解释器,比较好玩。

高级深入

A、安全,互联网成熟阶段,开发不仅要考虑功能、性能,还要时刻关注安全,数据安全、文件安全、系统安全、设备安全;

B、系统架构,系统高可用、负载均衡、资源分发、数据同步、异步队列、微服务、系统备份、系统灾备、云存储、云扩展等;

C、加强系统了解,Unix系统领域的设计富含哲学思想、文化体系及前辈优秀的经验与原则,通常会有种令人恍然大悟的感觉;在网络的世界里,Unix网络编程包含很多经典解决方案和思想,如TCP、UDP、多路复用、阻塞、非阻塞、广播、信号道、管道、内存共享、消息、调度等等;

D、举一反三,学习一方面为了马上用其解决问题,另一方面融会贯通及跨界借鉴提供解决方案。

横向发展

  • A、提高沟通和表达能力
  • B、富有责任心,有态度有原则
  • C、尽力涉猎广泛
  • D、适当运动,强身健体
  • E、成家立业,传宗接代

参考


@tsingchan 2020更新 from 9ong