做服务器端开发需要具备什么样的基础知识?

最近转服务端开发了,但是对知识的补充还是有些茫然,我个人列出一些需要补充和学习的知识,如下:
1. 基本的网络知识(TCP/IP , UDP , Socket等等)
2. 网络操作系统 Linux,有时候需要配置运行环境
3. 开发技术:php , python , 破儿(perl), java(公司需要), nodejs
4. 相关技术的积累:memcache , redis , mongodb
5. 数据库..

我列举的可能有的是多余的,也有遗漏的,请问各位有何看法?
还有网络的基础知识是否需要更佳深入的学习,比如七层模型,子网掩码的分配计算等等

阅读 19.3k
3 个回答

1,Http协议用的最多吧,亲
2,数据库方面,Mysql和Oracle至少都要掌握,大数据方向的MongoDB、Hadoop、Hbase得了解
3,各类缓存和队列,Memcache、Redis等,这个在客户端可能用得不多,在服务器就是万金油了,用不得上,都一定要掌握,什么业务都可以用到
4,如果要做web,前端的JS、html得掌握
5,Centost和Ubuntu得掌握,简单的集群、LVS负载能做行,至于你说的7层协议,在服务器这端,只要不碰硬件,基本上遇不到。
6,云时代、大数据时代来了,服务器端编程的挑战,在于数据的存储、计算,现在的工作偏向程序的优化、算法调优。

好像要说,扯半天也说不完,不写了。

我觉得软件开发这个行当是工程性很强的一个行当,这类行当的学习路径和学术研究性的几乎相反:不是先学了一堆“基础知识” “背景知识” 之类的东西再深入研究,而是先从最高级最方便的quick&dirty way开始,向底层细化。

按我说就先挑一门语言,然后选这门语言的前三流行的框架或开源应用中任意一款,先撸个hello world,再撸个博客出来,博客做完发布做评论,做完评论做用户,做完用户再看看你以前写的代码删光从头写起。当然把博客换成其他需求也行,只要自己需要用的都行

至于需要的知识,压力大了自然要缓存,模块复杂了自然要解耦,上线次数多了自然要部署要自动化,一切知识都是以解决问题为导向的。没遇到问题就空学所谓基础知识,在我看来事倍功半。就好比题主提的“服务端开发”,其中也有很多细分,做业务逻辑的,高并发的,事务的,更别说做数挖的dba的devop的等等,又或是小业务的一条龙包干,都是相当不同的技能要求。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏