Java 后端开发,应该重点学习哪些知识/技能?

2018-11-18 21:35:44 +08:00
 javaWeber
如果想在接下来的五年,还继续做后端开发。
那么,应该重点学习哪些知识 /技能,才会比较有用?
我主要是用的 java。。其他语言的后端开发也可以分享下经验。。
9169 次点击
所在节点    程序员
30 条回复
tedzhou1221
2018-11-18 22:08:37 +08:00
个人觉得多线程并发吧。
LowBi
2018-11-18 22:13:13 +08:00
工作经验告诉我,还是用到什么学什么吧,毕竟现在东西那么多,用也不会全用上
storypanda
2018-11-18 22:17:18 +08:00
我个人有考虑转后端,然后同事给我看的是 JAVA EE 轻量级框架的那本实践书,spring+radius,然后我自己学习 JSP 语言,Java Web 这些。。
sudoz
2018-11-18 22:19:34 +08:00
后端和 Java 有什么关系。
你要关注的后端开发往深了做需要面对哪些技术问题,而不是停留在语言层面,这些技术问题和语言是无关的。
系统稳定性,并发能力,分布式事务的实现方案,等等
NeinChn
2018-11-18 22:36:42 +08:00
@sudoz
你这么说就好像...
学操作系统和 C 有什么关系
操作系统主要是 IO,FS,blahblah
Raymon111111
2018-11-18 23:11:48 +08:00
划掉 Java 是个合格的题目

已经工作 5 年还没发现后端开发是个语言无关的活吗?
xiaochen2018
2018-11-18 23:24:39 +08:00
javaWeber
2018-11-19 09:15:40 +08:00
@Raymon111111 大佬。。我没有工作 5 年啊。。我还是菜鸟。所以才有此一问。
wleexi
2018-11-19 09:17:41 +08:00
javaWeber
2018-11-19 09:22:31 +08:00
@LowBi 工作经验告诉我,还是用到什么学什么吧,毕竟现在东西那么多,用也不会全用上
======================================================
就是因为东西实在太多了,现在用过一点 redis 缓存,zookeeper 分布式一致性,kafka 消息队列。。
后面还有一大堆的东西不知道重点学哪些。
搜索引擎 elstaicSearch,容器 docker,数据库分库分表 myCat。。还有 mongodb、nginx、netty。。我都快疯了。
学不同的东西,肯定效果是不一样的。有的几年后可能就过时了没用了,有的还很有用,可以当成积累。。
javaWeber
2018-11-19 09:25:09 +08:00
@storypanda 除了 ssm 和 redis。。还有个 springBoot。特别好用。
realkenshinji
2018-11-19 09:31:19 +08:00
如何更好的科学上网,我觉得这个最重要了
cyhulk
2018-11-19 09:51:45 +08:00
@javaWeber 其实想知道你做了几年,都会啥
javaWeber
2018-11-19 10:00:42 +08:00
@cyhulk 做了一年多吧。会一点 ssm,springBoot,redis,zookeeper。。其他的有的用过,但是不明白原理。
mccreefei
2018-11-19 10:09:39 +08:00
jdk 集合、多线程 源码
sayzly
2018-11-19 10:43:27 +08:00
网络 搜索 并发 分布式设计 算法 消息队列什么的 精通一些方向咯
micean
2018-11-19 10:52:08 +08:00
从 HTTP 协议开始
wleexi
2018-11-19 10:58:18 +08:00
上面发过一个网址,是所有的 java 的规范,LZ 说到 springboot 好用,有去了解下是怎么实现自动装配,如何外部化配置,为什么可以实现注解驱动。。balabala...

springboot 很大程度上是依赖的 servlet3.0 规范的。可以去了解下。

语言基础方面可以了解下底层知识。
字节码 /JVM/内存...
后端代码总要连接数据库吧.. 不如再了解下数据库知识...
关系型数据库 /NoSQL 数据库 /HBase/文档数据库....
Neojoke
2018-11-19 11:22:01 +08:00
如果是长远的后端开发,那就要全面深入的发展,首先是语言,没有哪种语言,是和后端或者 web 开发划等号的,Java 要想深入,不要过多的搞设计模式。语言知识你要掌握的知识的一部分,以下多个方面你都要掌握,记住,当你有能力掌握这么多知识的时候,你的学习能力有具备了,具备了学习能力,什么具体的 java 技术、后端技术,都不是什么问题,哪怕下一次技术更新,你还能依靠你的学习能力,继续保持技术先进性。
1. JVM 深入了解,Tomcat 深入了解,多看 Java 库的源码
2. 计算机网络深入理解,物理层、数据链路层,可以不用深究,但是网际层、会话层、应用层的概念要熟悉,IP 协议、HTTP 协议要熟悉,基于 IP 协议的子网划分,要熟知
3. 操作系统,这是无论哪方便开发都要熟悉的,不论是前端、移动端、后端、数据库、运维,只要是搞计算机的,都要有扎实的计算机操作系统的功底,操作系统的体系结构、运行机制,Linux 内核、账户管理、安全,多用户多进程模式、内存管理、进程管理、进程间通讯等等,《深入理解计算机原理》,《 Linux 入门到精通》等等,要多学多练习,可以使用 Java 去调用操作系统的底层 API,试试,如果想不明白的,可以使用 C 多去研究一下
4. 数据库方面,SQL 与 NoSQL,SQL 要注意 SQL 语言的范式模型,从逻辑上理解究竟什么是 SQL,SQL 语句为什么能标识数据查询,SQL 能做到什么,不能做到什么,然后就是 SQL 数据的实现,mysql、oracle、postgresql,深入理解数据引擎,游标这些东西
5. 有了上述基础,再去学习一些理论知识,比方说马丁大叔提出的 IOC 理论、Roy Thomas Fielding 提出的 Rest 理论,SOA 的提出和发展、微服务的提出和发展,充实对现代分布式计算架构的理解
6. 尝试自己实现一套 IOC、SOA、微服务框架,锻炼自己通过理论去进行实践的能力,当然这点不是要求你造轮子,只是为了能够让你到达,能够通过理论,造轮子的程度
xhinliang
2018-11-19 11:35:28 +08:00
@storypanda 跟 radius 协议有什么关系吗...

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/509041

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX