Java 后端开发,应该重点学习哪些知识/技能? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
javaWeber
V2EX    程序员

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

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

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

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

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

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


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

    事物变化很快的,说不定你第二年就干别的事情了。
    Balloonwj
        24
    Balloonwj  
       2018-11-19 14:10:24 +08:00
    colincat
        25
    colincat  
       2018-11-19 14:16:07 +08:00 via iPhone
    多了解基础吧,最后所有的东西都是基础的东西演变,万变不离其中
    mugglezzz
        26
    mugglezzz  
       2018-11-19 14:21:22 +08:00
    @Raymon111111 #6 光看清题目,看不清描述? 大家都友好一点吧。
    alery
        27
    alery  
       2018-11-19 18:57:14 +08:00
    @Neojoke 不要过多的搞设计模式是啥意思? 不要太纠结?
    Neojoke
        28
    Neojoke  
       2018-11-20 08:28:52 +08:00
    @alery 设计模式属于归纳总结出来的实践经验,刻意学习是会不得法的,应该是实践大量的代码,跳了无数的坑,自己觉得不想再写那么多代码了,不想再跳那么多坑了,再去寻找设计模式去解决你的问题,才有用,在没有大量实践的情况下去学习设计模式,基本上没有什么用,并且在现在大多数工程师,都是在做业务开发的情况下,有效代码不超过百万行的时候,设计模式没有什么太大的作用,还没有良好的编码风格有用。
    champloo
        29
    champloo  
       2019-08-17 17:32:45 +08:00
    接口 a = new 实现类。但凡实现类中自定义方法,使用 a.自定义方法会报错,也就是说,子类自定义方法不能通过这样的方式调用,所以在一开始定义接口的时候,就得想好接口实现什么样得方法
    champloo
        30
    champloo  
       2019-08-17 17:34:14 +08:00
    貌似回错帖子了,抱歉
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2569 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 02:26 PVG 10:26 LAX 19:26 JFK 22:26
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86