首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  程序员

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

  •  
  •   javaWeber · 153 天前 · 3370 次点击
    这是一个创建于 153 天前的主题,其中的信息可能已经有所发展或是发生改变。
    如果想在接下来的五年,还继续做后端开发。
    那么,应该重点学习哪些知识 /技能,才会比较有用?
    我主要是用的 java。。其他语言的后端开发也可以分享下经验。。
    28 回复  |  直到 2018-11-20 08:28:52 +08:00
        1
    tedzhou1221   153 天前 via Android
    个人觉得多线程并发吧。
        2
    LowBi   153 天前
    工作经验告诉我,还是用到什么学什么吧,毕竟现在东西那么多,用也不会全用上
        3
    storypanda   153 天前 via Android
    我个人有考虑转后端,然后同事给我看的是 JAVA EE 轻量级框架的那本实践书,spring+radius,然后我自己学习 JSP 语言,Java Web 这些。。
        4
    sudoz   153 天前
    后端和 Java 有什么关系。
    你要关注的后端开发往深了做需要面对哪些技术问题,而不是停留在语言层面,这些技术问题和语言是无关的。
    系统稳定性,并发能力,分布式事务的实现方案,等等
        5
    NeinChn   153 天前
    @sudoz
    你这么说就好像...
    学操作系统和 C 有什么关系
    操作系统主要是 IO,FS,blahblah
        6
    Raymon111111   153 天前   ♥ 1
    划掉 Java 是个合格的题目

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

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

    语言基础方面可以了解下底层知识。
    字节码 /JVM/内存...
    后端代码总要连接数据库吧.. 不如再了解下数据库知识...
    关系型数据库 /NoSQL 数据库 /HBase/文档数据库....
        19
    Neojoke   153 天前   ♥ 7
    如果是长远的后端开发,那就要全面深入的发展,首先是语言,没有哪种语言,是和后端或者 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、微服务框架,锻炼自己通过理论去进行实践的能力,当然这点不是要求你造轮子,只是为了能够让你到达,能够通过理论,造轮子的程度
        20
    xhinliang   153 天前
    @storypanda 跟 radius 协议有什么关系吗...
        21
    icegreen   153 天前
    沟通能力, 设计思维, 站在客户角度思考分析问题的能力
        22
    lihongjie0209   153 天前
    1. 并发是基础, 学的时候还能接触到 Java 内存模型.
    2. 网络层的分层来学, Web 开发用到的 HTTP 协议, 那么 HTTP 要熟, 同时还要往下一层探究: TCP
    3. 操作系统, 这里面的操作系统指的操作系统原理, 而不是 Linux 系统管理, 大概分为 3 个部分: 虚拟化, 并发(第一点接触过), 持久化(IO)
    4. 数据库大概有几个部分: 1. 数据库设计 2. sql 语法 3. sql 执行过程包括优化 4. 物理层的数据存储, 事务, 索引的实现(操作系统中的知识点都会涉及).

    单机学到这里应该差不多了, 分布式没接触过.


    至于设计模式属于一个不断学习的过程, 因为全靠不断的犯错才能正真体会到设计模式的优点, 所以这个要在项目中不断积累.
        23
    CtrlSpace   153 天前
    别想五年那么长远吧,想想现在的自己需要补足什么。

    事物变化很快的,说不定你第二年就干别的事情了。
        25
    colincat   153 天前 via iPhone
    多了解基础吧,最后所有的东西都是基础的东西演变,万变不离其中
        26
    mugglezzz   153 天前
    @Raymon111111 #6 光看清题目,看不清描述? 大家都友好一点吧。
        27
    alery   152 天前
    @Neojoke 不要过多的搞设计模式是啥意思? 不要太纠结?
        28
    Neojoke   152 天前
    @alery 设计模式属于归纳总结出来的实践经验,刻意学习是会不得法的,应该是实践大量的代码,跳了无数的坑,自己觉得不想再写那么多代码了,不想再跳那么多坑了,再去寻找设计模式去解决你的问题,才有用,在没有大量实践的情况下去学习设计模式,基本上没有什么用,并且在现在大多数工程师,都是在做业务开发的情况下,有效代码不超过百万行的时候,设计模式没有什么太大的作用,还没有良好的编码风格有用。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2261 人在线   最高记录 4385   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 17ms · UTC 08:44 · PVG 16:44 · LAX 01:44 · JFK 04:44
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1