diff --git a/_posts/2020-1-4-learn_cpp.md b/_posts/2020-1-4-learn_cpp.md index d587100..dbbf495 100644 --- a/_posts/2020-1-4-learn_cpp.md +++ b/_posts/2020-1-4-learn_cpp.md @@ -1,17 +1,17 @@ --- layout: post -title: "后台开发C++学习路线技能加点" +title: "Linux后台开发C++学习路线技能加点" date: 2020-1-1 tags: [c++] comments: true author: lemonchann --- -经常被邀请回答类似如何学习C++和C++后台开发应该具体储备哪些基础技能的问题。所以写这篇文章,总结自己的C++后台开发学习路径和点过的技能树,希望能给后来想从事后台开发的同学一点参考,能帮你少走些弯路就更好。 +最近经常被邀请回答类似如何学习C++和C++后台开发应该具体储备哪些基础技能的问题。本身我从事的的C++后台开发的工作,目前在腾讯负责QQ相关后台开发,所以写这篇文章,分享自己的C++后台开发学习路径和点过的技能树,希望能给想从事后台开发的同学一点参考,若能帮你少走些弯路就更好。 工欲善其事必先利其器,好的书籍能让学习事半功倍,所以每个技能点之后我会推荐一些书,都是我读过且口碑不错的书,供参考。 -**分享的是我的学习路径,如果你也能顺着这个学习路径认真学一遍,我想通过大部分大厂面试是没有问题的。后续还会继续分享关于C++编程和后台开发技术,感兴趣的同学可以关注我和专栏。** +**分享的是我的学习路径,如果你也能顺着这个学习路径认真学一遍,我想在后台开发技术上你已经有一个很不错的技术积累,加上项目练习通过大部分大厂面试是没有问题的。后续还会继续分享关于C++编程和后台开发技术,感兴趣的同学可以关注我和专栏。** ## 计算机基础综合 @@ -186,7 +186,7 @@ author: lemonchann -## 算法 +## 算法基础 **计算机算法就是利用编程语言编写出计算机能理解的解决问题的方法。** 好的算法能更简洁高效的解决问题,如今不论是校招还是社招,大厂笔试都会考察算法,即使不是为了笔试作为软件从业者也应该经常练习算法,保持手感。学习算法是学习解决问题的通用性方法有助于提高逻辑思维能力。 @@ -196,17 +196,29 @@ author: lemonchann -## 架构 +## 架构能力 -**架构能力是利用已有知识来设计整个后台服务系统的能力。**不仅要求掌握了以上技能,并且还需要能根据不同需求制定不同的设计方案,这时候考虑的东西会更多,包括服务的设计、存储的选型等等。比如:这个时候考虑的数据库选型用哪个?需要根据存储的数据特征和应用场景来区分,如果是社交应用的数据用菲关系型数据库来存储可能更好;如果是电商订单类型的数据,那么用关系型数据库来存储可能更好。 +**架构能力是利用已有知识来设计整个后台服务系统的能力。**不仅要求掌握技能的维度还要深度,需要能根据不同需求和系统约束,制定不同的设计方案,这时候考虑的东西会更多,包括服务模型的设计:是多进程还是多线程甚至协程微线程,分布式还是集中式;存储的选型:考虑数据库选型用哪个?需要根据存储的数据特征和应用场景来区分,如果是社交应用的数据用菲关系型数据库来存储可能更好,如果是电商订单类型的数据,那么用关系型数据库来存储可能更好;后台系统的其他方方面面。 ## 更多的练习 -**说了这么多,最最重要的还是练习练习练习。**理论知识储备是必要条件,现在大家接触到的碎片化信息知识太多,我个人经验,高浓度的知识精华还是需要在大师的书本中汲取,所以看书是最正确和快速的学习路径,没有捷径可走。 +**说了这么多,最最重要的还是练习练习练习。**理论知识储备是必要条件,移动互联网时代大家接触到的碎片化信息太杂太乱,我个人经验,高浓度的知识精华还是需要在大师的书本中汲取,所以看书是最正确和快速的学习路径,没有捷径可走。 -光看书也是不行,编程和技术是也是一门现代手艺活,还需要不断的打磨手艺,就如一万小时定律所说: +不过光看书也是不行,编程能力和技术是也是一门现代手艺活,还需要日常不断的打磨手艺,正如**一万小时定律**: > 人们眼中的天才之所以卓越非凡,并非天资超人一等,而是付出了持续不断的努力。1万小时的锤炼是任何人从平凡变成世界级大师的必要条件。要成为某个领域的专家,需要10000小时,按比例计算就是:如果每天工作八个小时,一周工作五天,那么成为一个领域的专家至少需要五年。这就是一万小时定律。 -怎么打磨提高编程技术能力呢?找项目,**找感兴趣的**东西用代码去实现它,兴趣是最好的老师,这点在编程和技术学习上也完全适用,人们总倾向于去做快速获得的愉悦感的事情,比如打一盘游戏。技术的提高是一个长期的过程,三分钟热度肯定是难以成功的,所以要用技术做自己感兴趣的东西和带趣味性的编程,比如写个爬虫小程序抓取网站数据或者写个小游戏,再或者自己造轮子给自己用,并乐此不疲的优化轮子。这样每走一步都能获得一点成就感,激励自己继续走下去,慢慢的就会有质的飞跃。 +怎么打磨提高编程技术能力呢?找项目,**找感兴趣的**东西用代码去实现它,兴趣是最好的老师,这点在编程和技术学习上也完全适用,人们总倾向于去做快速获得的愉悦感的事情,比如打一盘游戏30分钟就能获得快感。相反,技术碎片的提高是一个长期的过程,三分钟热度肯定是难以成功的,所以要用技术做自己感兴趣的东西和带趣味性的编程,比如写个爬虫小程序抓取网站数据或者写个小游戏,再或者自己造轮子给自己用,并乐此不疲的优化轮子。这样每走一步都能获得一点成就感,激励自己继续走下去,慢慢的一定会有质的飞跃。 + +## 一个网站 + +这个网站一定要告诉大家,网站就是个C++百科全书,类似Linux的man手册,平常开发查忘记了函数名或者容器用法直接搜索非常方便,我下载了离线版本,如果嫌麻烦懒得找下载文件,可以私信我留邮箱发给你。 + +网址:C++参考: [cppreference](https://en.cppreference.com/w/cpp) + + + +## 待续 + +一口气写下来肯定还不够完善,文章会保持更新和修改,想到了再补充吧。感兴趣可以关注我和专栏接收更新提醒。