|
java比较特殊,毕竟后端扛霸子,想要认真学好java,必须有好的计算机基础,可是为什么需要基础呢?
把这个问题弄明白,要学哪些基础知识就清楚多了。
第一个问题,10个用户使用的系统和1000000个人使用的系统,对后端来说差别大吗?
这是很多初学者弄不清楚的事情。对前端而已,差别不会特别大,对后端来说,天壤之别。
不说架构,只说服务器的资源,后端代码是运行在服务器上,服务器和pc一样,同样是要有cpu,内存,硬盘,带宽的,当系统的使用量比较多的时候,就会出现性能瓶颈。
内存不足,cpu跑满100%,磁盘不足等等问题,这在很多时候都交给运维去检测和处理,开发人员需要懂吗?
不同的解决方案,带来的资源使用率不一样。
所以后端人员必须做性能优化,很多事情,专业和非专业的区别,就在于能不能把事情做好。
从这个问题来看,你发现后端需要什么基础知识没?
计算机组成原理,来告诉你计算机的物理机构,数据如何存储。
计算机操作系统来告诉你怎么管理内存,什么叫进程 ,什么叫线程,什么又是io。
计算机网络告诉你什么是tcp和http,什么是报文。
这些课程和基础知识的作用就是给你更好的认知自己编写程序都底层实现原理,为你解决性能问题提供基础支撑。
第二个问题,数据库要建索引,btree和hash两种索引,区别是什么?各自应该用在什么场景。
如果你没有数据结构的基础,对btree唯一的认知应该就是逼数吧?
hash是什么鬼,hash算法?算什么鬼玩意。
对这两个概念都不清楚的话,能不能做好索引的创建?当然能,操作很简单,可是创建出来的索引能不能解决问题,让访问速度更快?
也很简单,两个索引随便试呗,这个不行用那个。
这就是没文化时候的解决方案,而正确的学习方式就是花时间理解什么是btree,什么是hash,底层如何实现的,再结合业务场景,去判断应该做什么样的索引。
第三个问题,为什么用消息队列?
什么叫解藕,什么叫内聚?生产者消费者又是什么意思?
这些是设计模式,或者是面向对象的一些概念。
有更多的例子可以举,但归纳下来就是弄清楚底层构建的原理。
算法算一层
操作系统算一层
组成原理算一层
数电模电单片机算一层
物理算一层
你能从上到下一层层的逐层分解,互联网在你脑袋里就没有秘密。
正常而言,学到组成原理就够了。
但是,这么一个庞大的知识体系,你要学多久?
而且,真正用到的基础知识和工作场景紧密相连,可能只有20%用得到,你只是不清楚是哪20%而已。
结论如下:
1 计算机组成原理,计算机操作系统,计算机网络,数据库,数据结构,算法 这是六门基础课要学习
2 你没时间系统的学习一遍,只能去找工作中很大可能用到的,先过一遍,有基础概念,以后遇到问题的时候,可以知道归属哪个领域。
怎么知道什么内容是可能用到的,请自行搜索腾讯课堂修真院的洗髓换骨营,缩减到了10%的内容。
3 对于没有用户量的系统而言,没有太多学习基础课程的必要,因为你不需要解决这些问题。但薪水和你能解决的问题是等价的,你愿意一直只做初级程序员么?
4 编程思维在基础课程里都有锻炼,在工作中也更重要。
虽然回答过类似的问题,但总觉得说的不够彻底,手机打字,就这么着吧。 |
|