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

Java 如何后续学习?!

  •  
  •   Reyunn ·
    CNYuYang · 2018-08-21 16:59:09 +08:00 · 7456 次点击
    这是一个创建于 2291 天前的主题,其中的信息可能已经有所发展或是发生改变。
    各位 V 友,大家好。本人是大二在读学生,想直接毕业工作的那种。
    现在 Java 水平,就是刚看完 B 站上的韩顺平老师的课程。也不知道自己入门了没有。。。
    然后暑假结合自己要做的硬件项目,做了个小项目: https://github.com/Reyunn
    真心求各位前辈指点,Java 的后续学习。
    51 条回复    2018-09-05 09:01:39 +08:00
    wocanmei
        1
    wocanmei  
       2018-08-21 18:28:43 +08:00   ❤️ 13
    后续可以采用“理论与实践相统一”的方针,具体来说就是:

    加强理论建设,阅读一些经典的技术性书籍,注意读书切记在精不在多,下面列举一二:

    1、《 Java 编程思想》,了解 java 的语法及代码结构,在脑海中形成 java 功能点的一个全貌,这个时候可以不用太深入
    2、《 Effective Java 》了解 java 语言设计的来龙去脉以及最佳实践

    度完上面两本基本上你对 java 已经有一个全面的了解了,这个时候就可以有目的的深入了:

    上面两本书可能只是基于 java6 的,如果你想了解比较新的流处理以及 lambda 表达式等,可以看下《 Java8 实战》
    如果你对并发编程有兴趣,推荐《 Java 并发实战》
    如果你对 io 感兴趣,《 Java IO, NIO and NIO.2 》《 Java IO 》《 Java Nio 》可以满足你
    如果你想做一些通信工作,了解一些协议,可以仔细研读下《 Netty 实战》及源码
    在工作中总免不了使用 spring,可以拿《 Spring 实战》入下门,不过想深入还是建议官方文档和源码相结合的方式

    再后来,根据不同的需求你已经知道自己要干什么了,你或许想看看一些协议的底层实现,又或者研究一些算法的源码等等

    实战

    光读书可不行,还要注意做一些项目,千万不要眼高手低。

    刚开始可能觉得没啥好做的,我提个建议,从身边开始,发现身边潜在的需求,比如一个网站、博客等等,又比如为你使用的 ide 写个插件,再比如修改下别人的项目使之更符合自己的需求,不要觉得不好意思,这也是一种创新。相信我,通过这些小项目的锻炼你会收获不少书本上没有的知识。当你积累一定的经验,你可以尝试向一些开源的项目贡献代码或者干脆自己维护开源项目。

    总之,世界是你们的也是我们的,但终归是你们的,你们就像早晨 8/9 点钟的太阳,大好前程在前面等着你!
    choice4
        2
    choice4  
       2018-08-21 19:20:42 +08:00
    唉 借贴问一下 老哥们应该基本都不是那种英文很 6 的吧。。 然而好多优秀的技术看文档都是英文的 这个东西怎么处理的 不认识啊, 现在我就是打开两个文档页面一个是英文原版一个是 chrome 机翻,再开个 google 翻译。 还是感觉理解不透意思而且还看得贼慢。。跟老哥们借鉴一下
    Reyunn
        3
    Reyunn  
    OP
       2018-08-21 19:47:43 +08:00 via Android
    @choice4 我推荐一个 有道词典。鼠标划一下,意思就出来了!
    Reyunn
        4
    Reyunn  
    OP
       2018-08-21 19:48:05 +08:00 via Android
    @wocanmei 谢谢你的建议!
    LudwigWS
        5
    LudwigWS  
       2018-08-21 19:52:55 +08:00
    @choice4 你还真错了,这里不需要字幕看国外视频课程的人一大把。
    eminemcola
        6
    eminemcola  
       2018-08-21 19:56:26 +08:00
    @choice4
    可以硬逼自己多读。
    刚开始适应期会比较难受,经常遇到一句话里三四个生词,很痛苦。
    坚持半年以后基本上就读得顺了。技术名词来来去去也就那么些。
    Bryan0Z
        7
    Bryan0Z  
       2018-08-21 20:21:46 +08:00 via Android
    Spring MyBatis Spring MVC Spring Boot,现在基本就这些,再过两年变成什么样就不知道了
    seaswalker
        8
    seaswalker  
       2018-08-21 20:29:13 +08:00
    大兄弟你这主页很溜啊
    twogoods
        9
    twogoods  
       2018-08-21 20:37:20 +08:00
    spring 用过吧,看看源码?看完理解了吗?自己试着写一个能写出来不?写出来了往 github 一放,应该加分吧
    Reyunn
        10
    Reyunn  
    OP
       2018-08-21 20:37:56 +08:00 via Android
    @Bryan0Z 这些是前端的吧?
    Reyunn
        11
    Reyunn  
    OP
       2018-08-21 20:38:15 +08:00 via Android
    @twogoods 还没玩过呢
    LudwigWS
        12
    LudwigWS  
       2018-08-21 20:42:28 +08:00
    @twogoods 还有人自己实现框架?
    252748371
        13
    252748371  
       2018-08-21 20:42:40 +08:00
    SQL 写好,做几个项目
    AngelCriss
        14
    AngelCriss  
       2018-08-21 20:46:08 +08:00 via Android
    换 C++ 就好了
    FenGuWu
        15
    FenGuWu  
       2018-08-21 20:46:10 +08:00 via Android   ❤️ 1
    如果是 17 级的那还有很多时间可以钻研钻研。如果是 16 级的,那么 SSM 就需要会用了。并且明年暑假秋招之前需要对 JVM、集合、并发了如指掌。
    AngelCriss
        16
    AngelCriss  
       2018-08-21 20:47:01 +08:00 via Android
    @LudwigWS 很正常啊
    Bryan0Z
        17
    Bryan0Z  
       2018-08-21 20:47:50 +08:00 via Android
    @Reyunn 后端啊,怎么会是前端
    choice4
        18
    choice4  
       2018-08-21 21:45:09 +08:00 via Android
    @LudwigWS 膜拜
    bobuick
        19
    bobuick  
       2018-08-21 21:52:52 +08:00
    不要只看视频。看书
    话说现在免费视频真多啊,发现很多年轻一代都是看视频自学了。
    bobuick
        20
    bobuick  
       2018-08-21 21:53:57 +08:00
    NIO 那一陀,如果你能用 c++/c 实现一个 epoll 下的简易网络层,会发现就是个上层工具而已。
    alvince
        21
    alvince  
       2018-08-21 22:23:32 +08:00
    我还真去翻了下代码,发现果然是用 Java GUI 这种老掉牙的东西写界面。。。
    现在搞 Java 都是后端纯业务开发,核心在业务计算和性能,别看视频了没意义,多下点功夫在语言思想和底层原理上
    wulin2008
        22
    wulin2008  
       2018-08-21 22:59:26 +08:00
    @choice4 其实计算机英语相对来说算是最简单的了,一方面是大部分英文关键词你平时都接触过,第一次可能没反应过来,但是熟悉后在大脑里不需要翻译就知道了。另一方面,大部分计算机相关的视频语音清晰,发音标准,速度适中,多看几次就完全没问题了。
    nita22
        23
    nita22  
       2018-08-21 23:04:54 +08:00
    Java 就业,还是得靠 SSM。Spring + Spring MVC + MyBatis。先学 Spring,把配置背后的东西贯通,想想配置的作用是啥,然后就可以开始学 Spring Boot,有了自动配置,开发起来省力很多。
    idamien
        24
    idamien  
       2018-08-21 23:41:00 +08:00
    看一看 jsp servlet, 然后看看 struts,jsf, 各种 faces,如果感兴趣可以再看看 google 的 gwt。

    最后直接看 spring 5.0 那本书吧

    JDBC HIBERNATE

    APACHE

    Tomcat
    Reyunn
        25
    Reyunn  
    OP
       2018-08-21 23:41:21 +08:00 via Android
    @FenGuWu 17 级的呢。会努力的!
    idamien
        26
    idamien  
       2018-08-21 23:41:34 +08:00
    @nita22 SSH ?
    Reyunn
        27
    Reyunn  
    OP
       2018-08-21 23:42:49 +08:00 via Android
    @bobuick 行,谢谢指点!哈哈哈,习惯了填鸭式的教育,有老师才能学。自己看书觉得不适应。
    Reyunn
        28
    Reyunn  
    OP
       2018-08-21 23:43:25 +08:00 via Android
    @alvince 谢谢指点!!!
    Reyunn
        29
    Reyunn  
    OP
       2018-08-21 23:46:42 +08:00 via Android
    @idamien 都是看书学嘛?
    codingKingKong
        30
    codingKingKong  
       2018-08-21 23:52:55 +08:00
    就我个人的感受, 读英文书还好, 起码我还能查, 油土鳖上的视频才是真正的痛
    crossoverJie
        31
    crossoverJie  
       2018-08-22 00:31:43 +08:00
    agagega
        32
    agagega  
       2018-08-22 00:32:50 +08:00 via iPhone
    15 级瑟瑟发抖
    kaedea
        33
    kaedea  
       2018-08-22 01:08:32 +08:00 via Android
    语言相关
    1. 泛型,彻底理解类型参数和变型
    2. JVM 规范
    3. 接触函数式编程, 彻底了解函数类型,了解编程模型
    4. 接触响应式编程,并发编程,分清并发和并行,彻底了解线程模型
    kaedea
        34
    kaedea  
       2018-08-22 01:11:15 +08:00 via Android
    番外:学习 groovy 和 kotlin 等高级 JVM 语言,了解动态脚本类、协程、静态 dsl 等特性
    kaedea
        35
    kaedea  
       2018-08-22 01:15:12 +08:00 via Android
    当然还有 Java9 10 11 的新特性
    xuanwu
        36
    xuanwu  
       2018-08-22 05:52:26 +08:00   ❤️ 1
    为确保掌握 Java 基本概念以及检验基本代码编写, 可以考虑写一个 Java 基本入门教程.
    之前的尝试: https://github.com/program-in-chinese/java_in_hours_chn 使用中文命名主要为增强代码可读性.
    NGLSL
        37
    NGLSL  
       2018-08-22 08:36:33 +08:00
    @wocanmei 《 Effective Java 》需要有一定的工作经验之后去看这本书收获才会更大。
    v2dead
        38
    v2dead  
       2018-08-22 08:46:41 +08:00   ❤️ 1
    现在学生已经这么大压力了么?大二就开始学这些然后准备工作?

    不知道你专业是什么,假设是计算机,单一学什么语言或者框架之类的跟你现在的课程相比完全就是皮毛,真的不值得一学,你想想你上大学几年就为了把他们那帮培训花了几个月学的时间拉长到几年来学么?

    最基础的课程数据结构和计算机网络还有操作系统,上面老哥说的怎么去了解线程,进程,有操作系统基础你很容易就知道,甚至知道这玩意是怎么实现的。面试经常问的 hashtable 实现原理之类的问题,很多人认为都是瞎问的没什么意义,实际上这是一个学过这些课程的学生应该轻松知道的基础知识。
    v2dead
        39
    v2dead  
       2018-08-22 08:48:58 +08:00
    要想毕业就工作,基础课程学好,代码量上来就行了,无论写什么。你代码量毕业前超过 100k 行,基本就能简单写了东西吧。
    NGLSL
        40
    NGLSL  
       2018-08-22 09:01:30 +08:00   ❤️ 1
    推荐一些书籍,豆瓣上评分也比较高。
    Java 基础:
    《 Java 核心技术·卷 I (原书第 10 版)》
    如果你想做 web,可以看看:
    《 Head First HTML 与 CSS (第 2 版)》
    《 Head First JavaScript 程序设计》
    《 Head First Servlet & JSP 》(即使现在很少用到,但是还是要学,这是必须的)
    《 Maven 实战》(可以不用买书,也可以找相关资料看看)
    《 Spring 实战》( Spring 框架,可以说是很火很火,无论是大公司还是小公司都有用到 Spring 相关的框架)
    《 MyBatis 从入门到精通》(也可以看看 Hibernate 相关的资料)
    进阶:
    《 Git 权威指南》(网上有很多关于 Git 的资料,我觉得廖雪峰的 git 教程还不错)
    《 Java8 实战》(真是一本好书,你也可以看看我的主页,里面有几篇 Java8 实战的读书笔记)
    《 Spring 微服务实战》
    《 Redis 实战》
    《设计模式之禅(第 2 版)》
    《 Java 编程思想》(据说里面很多内容都过时了, 可以自己想想需不需要)
    《 Effective Java 》(当你有一定的工作经验再来看这本书,效果会更好)
    这些书籍并不是每一本都要买,更具自身情况选择。
    wocanmei
        41
    wocanmei  
       2018-08-22 09:07:53 +08:00 via iPhone
    @NGLSL 这本书基本了解 java 语言后就可以,前期读可以知道什么是对的或者好的,中期读可以知道什么是错的或者不好的,后期读了解为什么这样子设计 java
    wsx001
        42
    wsx001  
       2018-08-22 09:26:06 +08:00   ❤️ 1
    推荐几个学习方向,也是我目前正在学的,虽然我已经工作 1 年多了
    1. 学习 Linux 操作系统,至少要熟练掌握如何使用(不是指敲几个命令那种程度)
    2. 深入了解数据库
    3. 学习网络编程,了解各种网络协议
    4. 学习数据结构
    5. 学习最新最火的框架(目前是 spring-boot ),熟料使用并能做一些自定义的功能拓展
    6. 学习 Java 并发编程
    7. 掌握一定的前端知识 Html、JS、CSS
    shihty5
        43
    shihty5  
       2018-08-22 09:31:10 +08:00
    开始用 JAVA8 吧,有一阵子可以学的了。FP 思想建立以后开始学 kotlin
    ToTChowChow
        44
    ToTChowChow  
       2018-08-22 09:31:44 +08:00
    你的主页很厉害。
    jeremaihloo
        45
    jeremaihloo  
       2018-08-22 09:32:17 +08:00
    @LudwigWS #5 V2EX 很多都是英文文档随意看的,没什么障碍
    Reyunn
        46
    Reyunn  
    OP
       2018-08-22 09:49:53 +08:00
    @v2dead 你好,谢谢你的指点。我的专业是通信工程,平时的专业课程我都没有落下。我们专业比较偏向硬件。但是就像早点准备啊。
    Reyunn
        47
    Reyunn  
    OP
       2018-08-22 09:51:23 +08:00
    @wocanmei 具体那本书啊?这么神奇的嘛?
    waterlaw
        48
    waterlaw  
       2018-08-22 12:08:21 +08:00 via Android
    我来回答下, 首先还是要掌握好计算机基础知识, 数据结构, 操作系统和数据库等, 针对 java 的话, 基础的数据结构都要知道怎么实现, 网络 io 和并发要理解,jvm 内部原理需要知道吧。 如果是网站后台还要了解一种框架。编码规范下, 笔试或机试会体现出来,java 虽然机会多, 但问的也挺多。 我就很早学 java 但了解个皮毛最后找了个 py 的工作, 希望你引以为戒。
    Reyunn
        49
    Reyunn  
    OP
       2018-08-22 13:09:53 +08:00
    @waterlaw 谢谢你的分享
    981764793
        50
    981764793  
       2018-09-04 22:58:29 +08:00 via Android
    @twogoods 我用事实证明了一下好像不太行,阿里 网易面试官似乎都不感兴趣
    twogoods
        51
    twogoods  
       2018-09-05 09:01:39 +08:00 via Android
    @981764793 每个面试官有自己面试的套路,要是应届生那也会很不一样,github 上有不错的项目永远都是加分项,现在这个圈子里面试装逼文化盛行,项目那是实打实的,不要因为一两次的面试体验不好就放弃业余项目~
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1067 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 50ms · UTC 20:05 · PVG 04:05 · LAX 12:05 · JFK 15:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.