{eval=Array;=+count(Array);}

问答专栏Q & A COLUMN

自学java?

tuniutechtuniutech 回答0 收藏1
问题描述:现有兴趣学习一下java,各路大仙给点建议和指导。感谢各位不吝赐教
收藏问题

10条回答

gaosboy

gaosboy

回答于2022-06-28 14:34

“这是一篇完整的java程序员学习线路图,一共分为六个阶段。

我以java为例,展示完整的学习步骤。

希望对于想通过java自学的朋友有帮助。

java程序员学习线路流程

第一步:Java语言基础

从最简单的开始,hello world开始Java之旅

1.编程基础

  1. 常量与变量

  2. 数据类型

  3. 运算符

  4. 流程控制语句

  5. 方法

  6. 数组

2.面向对象

  1. 面向对象思想

  2. 类与对象

  3. 成员变量和局部变量

  4. 封装

  5. this关键字

  6. 构造方法

3.集合

  1. 集合概述

  2. 集合特点

  3. ArrayList集合

  4. HashMap集合

  5. 常用集合优劣比较

4.输入/输出 IO

  1. 字符输入流

  2. 字符输出流

  3. 字符缓冲输入流

  4. 字符缓冲输出流

  5. 复制文件

  6. 集合与文件中数据相互读写

5.练习阶段

属于你自己的helloword

第二步:java语言高级

再结合java高级部分,里面的部分内容,这个阶段你不一定能理解很彻底。但有一点,如果你今后想进入高阶俱乐部,这些内容你必须掌握牢固。

举个栗子,如果你面试通过进入了公司,我一定会在早期仔细review你的代码。代码的功力是欺骗不了人的,不同人写一个接口,呈现的结果也是千差万别(所以才有了规范)。

1.面向对象

  1. 继承

  2. 多态

  3. 重写(Override)

  4. 重载(Overload)

  5. 封装

  6. 接口

  7. java包 package

2.异常处理

  1. 异常概述

  2. 异常分类

  3. 异常处理方案

  4. 自定义异常

3.多线程

  1. Java线程:概念与原理

  2. Java线程:创建与启动

  3. Java线程:多线程的实现方案

  4. Java线程:线程生命周期

  5. Java线程:线程池

  6. Java线程:线程状态的转换

  7. Java线程:线程的同步与锁

  8. Java线程:线程的交互等等

线程的几个主要概念

在多线程编程时,你需要了解以下几个概念

  • 线程同步

  • 线程间通信

  • 线程死锁

  • 线程控制:挂起、停止和恢复

4.输入与输出IO

  1. 文件和I/O

  2. 读写文件

  3. Java 流(Stream)

  4. 文件(File)

  5. 缓冲流

5.泛型(Generic )

  1. 泛型的使用场景

  2. 泛型类型

  3. 泛型方法

  4. 泛型通配符?

6.网络编程

  1. 网络机制

  2. Socket原理机制

  3. UDP、TCP传输等

7.反射(reflection)

  1. 类加载机制原理

  2. 反射构造方法、字段、方法

  3. Properties配置文件

8.注解(annotation)

  1. 注解的使用和原理

  2. 三种内置annotation

  3. 自定义annotation

  4. 注解类的反射调用

  5. 动态代理类如何处理

9.Java高级特性和类库

  1. java类加载器class loader

  2. java 程序运行的基础知识,java编译后的bytecode的整个运行机制,这一点对应.net的IL(intermediate language)。

  3. 理解Java nio,关于这一点网上有非常多的教程,这一条需要重点掌握,对于高并发的掌握很重要。

  4. java juc(java.util.concurrent)等等

10.JVM原理和调优

JVM最重要的三个部分必须要非常清楚,内存划分、class加载机制以及GC策略。搞清楚这三部分不仅仅是为了面试,也是为了让你对于Java有更深刻的理解,这对于你的Java生涯非常有帮助。

内存划分简单说分为三个部分,Young Generation(年轻代)、Old Generation(年老代)以及Perm Generation(永久代)。其中的Young Generation(年轻代),又分为Eden、From和To,其中From和To又统称为Survivor Spaces(幸存区)。

关于classloader机制的学习,可以结合tomcat去学习,了解清楚tomcat的classloader机制,看tomcat是如何保证各个APP之间的类隔离的。如果可能的话,看一下tomcat中classloader的源码,当中也包含了与tomcat类加载机制相似的部分。

至于GC,需要清楚GC Roots都有哪些,以及如何判断一个对象可以被回收。此外,GC的算法和策略也要有大概的了解。

第三步:java web阶段

1.前段技术掌握

  1. html

  2. css

  3. js

  4. jquery

  5. bootstrap

2.动态网页技术

  1. Java Servlet API

  2. Velocity

  3. FreeMarker

  4. JSP等常用模板引擎

比如,淘宝前端层使用的是velocity模板,部分公司采用jsp、freemarker等,基本类似。

3.linux服务器基本命令

在个阶段,也可以结合自己的情况,学习linux系统底层原理。

第四步:java框架阶段

1.SSH(struts2+spring+hibernate)

2.SSM(springmvc+spring+mybatis)

备注:如果你仔细,网上有部分叫SSI,I为ibatis,后来ibatis改名为mybatis了。

框架组合,我首推SSM,比SSH灵活强大。

框架的优缺点,我会再多带带写文。

如果你还有兴趣,可以自己搭建Lucene、solr框架,以及memcached/ redis、activeMQ、hadoop等等搜索、分布式缓存、异步消息、数据等。

我一般建议自己搭建,从学习效果再到理解深度都不一样。有兴趣,就开始自己搭建。

第五步:开发工具阶段

1.web调试工具

  1. firefox

  2. firebug

  3. web developer

  4. yslow

  5. httpwatch

  6. ietester等

这些都是开发必用。

2.集成开发工具

eclipse(首推) ,STS,myEclipse,Idea

eclipse里的插件太多,推荐几个必装插件:

JadClipse 、run-jetty-run(很牛的热部署调试)、veloctiy、freemarker IDE、Subclipse、m2eclipse、mybatis Editor、 Easy Explorer等等。

3.版本控制工具

svn、git(首推)

4.构建工具

maven、nexus搭建maven私服

建议自己搭建一套nexus maven私服,成为你们公司的代码仓库员。

5.java调试工具

  • jProfiler(性能跟踪)

  • jClarity(性能监控和日志分析)

  • Visualvm(性能分析和调优)等

优知学院是IT人的进阶站,提供系统的互联网产品&技术的入门指南以及进阶干货。

评论0 赞同0
  •  加载中...
Tonny

Tonny

回答于2022-06-28 14:34

学习 JavaSE

HTML+CSS

js+jQuery

学习JavaEE:jsp+servlet

数据库:MySQL+Oracle(建议先学MySQL)

框架SSH(Struts2+Spring+Hibernate)

SSM(Spring+SpringMVC+mybatis)

大致就是这些了,相信小伙伴们学完这些,学习能力已经有了很大的提升,即使在以后的 Java 工作学习中,遇到自己没有接触过的新技术。也可以通过自己的努力,把新的技术学到手。

在这份学习路线中,第一阶段的 JavaSE 和 第二阶段的 HTML+CSS+JS 顺序是可以颠倒的,因为两者并没有什么必然的前置关系。

最后说一句:

我们生活在黄金年代,社会在快速的发展,你不想被淘汰,就要学习,而我们北大青鸟提供最新的知识,以帮你应对变化的世界,让你与时俱进。

评论0 赞同0
  •  加载中...
wwolf

wwolf

回答于2022-06-28 14:34

java当然可以自学的,自学只是比较辛苦而已。如果你真的下定决心要自学了!那你就做好每天早六晚十的生活,不然你可能很难学会!

说了可以自学,下面我就分享自学的知识了。根据我分享的这套学习线路图,你可以学习,学好了找份工作是很容易的哦!

java学习线路图

这个学习线路图我分为了几个阶段,每个阶段能学到什么,能做什么,具体知识点请往下看,每个阶段知识点我都整理出来了,更适合学习!

java语言入门

可掌握的核心能力:

掌握Java开发环境基本配置;

掌握运算符、表达式、流程控制语句、数组等的使用;

熟练使用Idea开发工具;

掌握Java基本面向对象知识;

掌握常用类String、ArrayList等的使用。

配套视频:

毕向东Java基础教程(适合初学者入门的Java基础视频)

java语言进阶

可掌握的核心能力:

深入理解Java面向对象相关知识点;

掌握开发中常用类如集合、IO流、时间日期等操作;

掌握Java异常处理机制,熟悉Java多线程开发;

掌握网络基础知识,了解Socket原理,TCP、UDP协议;

掌握java基本语法完成单机程序的编写;

熟悉Java新特性,如Lambda、Stream流等操作

配套视频:

Java快速入门教程(Java基础班全套教程)

Javaweb

可掌握的核心能力:

掌握Java JDBC、连接池操作,熟练操作mysql数据库;

熟悉web开发中常用知识如 HTML5、CSS3、JavaScript、BootStrap、jQuery等;

掌握JavaWeb开发核心技术 Servlet、Listener、Filter等;

熟悉Linux服务器,并安装开发常用软件tomcat、mysql、nginx等;

掌握同步及异步操作的JavaWeb开发,具备B/S结构软件开发能力,完成基本的JavaWeb项目;

熟悉基本的项目管理工具Maven的使用。

配套视频:

JavaWeb教程_JavaWeb入门教程

项目一

可掌握的核心能力:

掌握企业中最常用SSM框架开发,开发出结构清晰、可复用性好、维护方便的企业级应用程序;

掌握AngularJS框架;

掌握Spring security框架;

掌握dubbox分布式调用技术;

掌握zookeeper分布式应用协调服务;

掌握Freemarker模板引擎;

掌握全文检索解决方案;

掌握spring boot1.x框架的基本应用;

掌握CAS实现单点登录;

掌握CORS实现跨域;

掌握微信扫码支付;

掌握电商秒杀解决方案;

掌握SpringTask实现任务调度;

掌握MavenProfilel实现开发与生产环境切换;

了解电商开发中相关业务模块如商品、订单基本操作;

了解电商开发中相关术语SPU和SKU等;

积累互联网电商项目开发经验。

配套视频:

Java教程|Springmvc由浅入深教程

Java教程|Mybatis由浅入深教程

Maven教程_Maven视频教程

项目二

可掌握的核心能力:

熟悉基本的Java爬虫开发,掌握webmagic爬虫框架使用;

掌握httpClient的使用;

掌握spring data jpa框架;

掌握Spring boot2.x框架;

掌握Spring Cloud框架;

掌握MongoDB数据库使用;

掌握RabbitMQ消息中间件使用;

掌握Elasticsearch分布式搜索引擎;

掌握Rancher实现容器部署管理;

掌握Grafana实现服务的实时监控;

熟悉NodeJs环境,使用Npm和cnpm管理包资源;

熟悉ESlint进行前端语法校验;

熟悉axios的使用;

掌握vuejs框架的基本使用;

掌握瀑布流组件使用;

掌握前端页面分享功能的实现;

掌握企业级DevOps解决方案,熟悉Docker、Jenkins、git等;

了解spark mllib als 机器学习算法库实现智能分类;

了解DL4J深度学习框架实现智能推荐。

配套视频

2018年Vue.js深入浅出教程

深度掌握Springboot实践技术教程

微服务初级课程

配套视频

SpringBoot教程_SpringBoot视频教程

微服务高级课程

可掌握的核心能力:

ServiceComb改造十次方项目;

了解Kubernetes作用及为什么使用Kubernetes;

会使用K8S API完成基本操作;

理解微服务引擎CSE的功能;

能够实现ServiceComb项目接入CSE;

能够实现学成在线项目接入CSE;

理解云容器引擎CCE的功能;

能够使用容器镜像服务上传镜像;

能够将学成在线微服务部署到CCE;

能够测试微服务治理常用策略;

能够理解Mesher的作用;

能够完成学成在线使用Mesher接入CSE。

视频未更新,更新后上传

框架架构高级

可掌握的核心能力:

能够理解ORM框架;

使用Socket进行系统之间通信;

掌握在Java中开启多线程的三种方式;

掌握使用Netty实现通信;

掌握Netty常用的传输方式及ByteBuff的使用方法;

理解及时通信框架的架构;

掌握Protobuf数据格式及在Java中应用Protobuf;

掌握使用Netty实现服务端、客户端;

理解虚拟机client与Server的运行模式;

学习垃圾回收的算法;

掌握jps、jstat、jinfo、jstack、hprof等命令的使用;

掌握图形化监控工具JConsole工具的使用;

掌握Mission Control虚拟机诊断工具的使用;

掌握压力测试工具JMeter的使用;

掌握调整参数测试Tomcat的性能;

掌握“双亲模式”的原理以及解决方案。

好客租房项目

可掌握的核心能力:

能够实现房源信息更新的通知;

实现用户信息、房东、审核等功能;

能够实现API文档与模拟数据接口开发;

能够实现收藏、分享、举报、联系房东、预约看房、在线签约功能;

掌握微信小程序开发;

实现日志数据的清理以及推荐。

大数据转型Hadoop3

大数据hadoop教程入门

目前有几个阶段还未有视频更新,有视频了我会继续上传哦!如果有特别想要我放出的视频,也可以留言哒!

评论0 赞同0
  •  加载中...
silencezwm

silencezwm

回答于2022-06-28 14:34

谢邀。现身说法,我就是靠自学Java进去bat的,而且据我观察,BAT里很多人的JAVA也是自学的。

我在读大学期间,JAVA是选修课,老师是一个只会念课件的老头,最后的考试也是背背题库就可以通过。当年太年轻,不知道Java的重要性,等到要找工作的时候才知道自己当初有多么傻。于是发奋图强,自学Java,最终拿到了心仪公司的offer,职位就是JAVA开发工程师。

至于我的同事呢,我们项目组有两位很厉害的大神,都不是计科出身,反而是电子方向的。他们出于对编程的兴趣,自学了Java(还有其他编程语言),最终成功加入了我们公司。目前看来,非专业背景,在实际工作中没有给他们带来任何困扰。

那么接下来,我们就聊聊,怎样才能更好的自学Java。

从论坛上获取最新信息

当你决定要自学java后,不妨多逛逛相关的论坛,贴吧。这样做主要有两个目的:

1 通过阅读论坛上的信息,能够补充自学过程中的遗漏。举个例子,通过自学,你知道java里的常用队列有ArrayList和LinkedList,但是这二者有什么区别,在什么场景适合使用呢,书里可能没有说。而在论坛里,你会看到大家对此的讨论,因此明白ArrayList是基于动态数组的,而linkedlist是基于链表的;此外前者读写快,后者增删快等等。

这些,都是在面试中常见的问题,所以大家才会乐于在论坛上讨论,对于完善你的知识体系,也是很有帮助的。

2 多多接触乐于分享的答主,从而扩充自己的人际圈子。网上的答主也是很乐于得到别人的肯定的,在你来我往的帖子交流中,一些专业水平很高的答主很有可能注意到你,如果有机会能够得到他们的推荐与指点,那么别说你的java水平能够得到提升,甚至有可能加入他们所在的公司,一步到位解决了你的就业问题。

阅读编程书籍

无论你是否选择通过阅读的方式来学习Java,Java工具书都是必不可少的,因为在实际工作中,也难免会遇到需要查阅书籍来确定问题的情况。

首先推荐Java书籍界的圣经《Thinking in Java》,中文版《JAVA编程思想》,也被我称为立志成为java开发工程师的信仰之源。

这本书适合任何水平的java爱好者与从业者。它不仅深入浅出,从0基础开始介绍java,更是着重培养读者的独立思考能力。它不是教你成为一个普通的码农,而是将“匠人精神”的坚持也融合了进去。网上甚至有人称呼这本书为JAVA界“上古卷轴”。这是一本可以反复阅读,每次阅读都会有新理解的书籍,早已经超越了工具书的范畴。如果能够完整读懂其中三分之一,相信你已经可以去任何公司面试JAVA开发工程师的职位了。

如果觉得上面的JAVA圣经有点难啃,那么我再推荐一本风格轻快的《head first java》,这是一个系列,还有其他《head first servlet》等等,以后如果想寻找其他语言的工具书的话,不妨试试关键字head first+语言名。

这本书里举了很多的例子来帮助初学者理解java一些比较晦涩难懂的概念与名词,语言也是十分幽默,不像其他大部头一样,让人读着读着就想睡觉。里面还有一些实战部分,如果能够跟着做下来,真的是让人受益匪浅。

市面上还有很多其他的java开发书籍,像什么七天学会java,十四天上手J2EE等等。个人对这类书籍持保留态度,各位看官可以根据自身情况,谨慎选择。

学习免费的视频资源

随着互联网的普及,越来越多的知识都可以通过网络来获取,这也降低了学习的门槛。

不妨在网易公开课,慕课网,牛客网,甚至是B站等网站上,寻找学习资源。毕竟只要输入关键字,就能搜到其他人认真构思的课程与教案,同时免去了你为自己计划学习进度与学习深度的工作。

在这个过程中,最好找到一个同行者,与你一同学习。这样即可在有问题时互相沟通,也可互相督促,避免独自学习产生懈怠感,拖慢甚至放弃学习。

以上是我推荐的自学java的方法,如果你觉得有点道理,或者从中收获到了一点信息,请点个赞给我呀,如果有进一步的想法交流,欢迎在下面给我评论。

我是苏苏思量,头像是我本人,来自BAT的java开发工程师,欢迎关注我,经常回答科技类的话题,与大家分享我的所见所想。

评论0 赞同0
  •  加载中...
wudengzan

wudengzan

回答于2022-06-28 14:34

<Java 学习路线图全汇总>


很多小白学习Java没有系统的规划 ,学习内容很零散 , 这里推荐一套系统的学习视频给你 , 这套视频分六大阶段,每一阶段都逐渐加深,教程已经整理的非常完善,基本上按照此套流程,一阶段,一阶段学习来,肯定会入门,逆袭成为大牛。


第一阶段 :


对应的Java基础教程视频


1、毕向东老师的java入门教程 : 视频链接

2、小白的福音java入门教程 : 视频链接

3、java快速入门教程 : 视频链接


此三个教程异曲同工,内容知识点相差不大,可以只学习其中一个哦!



第二阶段:



Java教程


(1)轻松掌握JavaWeb视频教程


(2)5天玩转mysql视频教程


(3)超全面的JavaWeb视频教程


(4)阶段案例--JavaWeb网上图书商城完整



第三阶段



Java教程

(1)Hibernate5框架

(2)Struts2框架

(3)Spring框架

(4) Spring2.5视频教程


第四阶段


Java教程推荐:

(1) Springmvc由浅入深全套视频教程

(2)Mybatis由浅入深全套视频教程


第五阶段



Java教程推荐:

(1)Java学科巴巴运动网视频教程106集

(2)巴巴运动网续集视频教程


以上就是Java学习路线图的内容,具体配套视频有需要的小伙伴可以找我,码字不易,给自学的小伙伴提供一下学习路线 , 有用请点赞分享一下吧!

评论0 赞同0
  •  加载中...
mo0n1andin

mo0n1andin

回答于2022-06-28 14:34

1. 经典书籍要看,例如《Java权威指南卷一》,一定要坚持动手写代码,这样可以学习和了解基本语法,另外就是面向对象思想。

2. 参与项目开发,真实的,网上经典练习的都可以,期间逐渐学习了解git,tomcat,mysql,redis这些项目中常用的技术。

3. 多线程,找一些并发编程的经典书籍,边学边实践。

4. 了解一些虚拟机知识,对jdk/bin下面的jps,jmap,jstack,jstat熟练使用。

5. 了解,设计模式,算法,为深入研究某一领域做准备。

5. 深入学习某个技术,开始了解开源软件的源码,推荐spring,尤其是启动和初始化的源码。

6. 拓展视野,无线,云计算,大数据方面的知识,都可以去了解和动手,个人比较推荐的是容器化,例如docker,k8s。

7. 尝试写作,个人推荐将写作的过程与极客时间的学习过程结合,只有感受到写作的不容易,才能主动想到极客时间的大师们的知识储备有多么全面,启发思考“为什么我写不出这样的文章,我还差什么”,补全自己的短板。

8. 贯穿以上七个阶段的,是坚持学习linux知识体系。

评论0 赞同0
  •  加载中...
wujl596

wujl596

回答于2022-06-28 14:34

个人意见,如果你没有自学能力,请放弃选择编程,这条路,不适合你。作为IT培训从业者,我明确的告诉你,培训机构也只是带你快速入门,降低你转行的时间成本及机会成本,如果你没有做好终身学习的职业规划,请绕道。


你问我为啥,那我就简单粗暴的告诉你:在IT行业,尤其程序员,公司随时可能有新项目,随时需要学习新技术,学习新的编程语言,新框架。我们帮得了你一时,但帮不到你一辈子。

这和你问的培训和自学,完全没有冲突。如果你学习能力强,自律性高,完全可以不参加培训自学入门。

优点:省钱;缺点:耗时长,不系统,容易钻牛角尖。


培训也需要自学,即使有一对一辅导,课后还是需要不断的练习和思考,这点尤其重要,一个班的同学,一样的老师,一样的时间,最后的水平差距就在于个人的主观能动性,所以培训也需要主动学习,这就是我要表达的意思。优点:周期短,学习成体系,有老师及时答疑;

缺点:花钱,容易遇到坑。


最后,我想告诉你的是,去参加培训之前,先自己在网上找资源试学一段时间,看看自己的兴趣及能否坚持下来。至于培训机构的选择,最好去找度娘(不看培训机构做的广告,看口碑)。


希望以上回答能对你有所帮助

评论0 赞同0
  •  加载中...
trigkit4

trigkit4

回答于2022-06-28 14:34

如果你是一只编程小白,还是建议你找一个靠谱的学习机构。很多人都说自学,自学的要求其实是很高的,你要有相当好的自主力和自制力,枯燥的代码,繁杂的程序逻辑最好有个人带你入门。任何一种语言都是不断在更新的,有了一定的学习方法是一大助力。

评论0 赞同0
  •  加载中...
darkbaby123

darkbaby123

回答于2022-06-28 14:34

类似的问题也回答过很多,其实我最早也是个Java小白,只在本科课堂上上过一门非常基础的Java课程,没多久就忘光了,直到研究生期间重拾Java,才开始真正的Java学习旅程。对于学习Java,我也经历了很多个阶段,一开始,我主要通过自己找视频、找入门书籍的方式来学习Java,接着又通过做项目、参与实习工作等方式来巩固自己的Java技能,研究生期间我开始系统地学习Java,主要通过看书、看博客、自己写博客等方式逐渐熟悉Java这门语言,到最后终于符合了能拿到Java大厂offer的水平。所以题主也不必着急,学习Java是一条漫长的道路,需要花时间、精力,用心去慢慢学习。接下来还是分享一下我的一篇文章《Java工程师学习指南》本文将会更系统地总结学习Java的学习过程。在下是某985小硕,在2018年的校园招聘中拿到BAT头条网易滴滴亚马逊的offer。我用了两年的时间从一个小白成长成为了能够进入BAT的JAVA工程师,下面我也会分享一下我零基础自学Java的心得体会和学习路线,一路走来也遇到很多困难,也踩了很多坑,同时我自己也探索了很多的学习方法,总结了很多心得体会,我写过一个Java工程师学习指南,我把它分为了四个部分,第一步是打好Java基础,掌握Java核心技术,第二步是掌握Java Web技术栈,能够做一些项目,第三步是掌握Java方面的进阶技术,包括网络编程、并发编程、JVM等,第四步是掌握后端进阶技术,比如分布式、缓存、消息队列等技术。按照这样的一个脉络,我觉得能够掌握这里面的绝大部分内容,并且有过相应的一些实践,那么可以算是学好了Java。当然,学好Java只是一个开始,要真的干好活,做好项目,以及其他各方面的技术工作,则是在学好Java的基础去延伸和展开的。

最近开了个微信公众号【Java技术江湖】致力于分享Java技术文章,将会记录我两年时间里学习Java的经验心得,以及在ucloud的技术之路,有兴趣的朋友可以了解关注一下。

接下来就是具体的四篇文章,建议大家按顺序阅读,有点长,收藏的时候记得点赞或者评论哈。笔芯!Java工程师学习指南入门篇最近有很多小伙伴来问我,Java小白如何入门,如何安排学习路线,每一步应该怎么走比较好。原本我以为之前的几篇文章已经可以解决大家的问题了,其实不然,因为我之前写的文章都是站在Java后端的全局上进行思考和总结的,忽略了很多小白们的感受,而很多朋友都需要更加基础,更加详细的学习路线。所以,今天我们重新开一个新的专题,分别按照四篇文章讲述Java的学习路线(分别是入门篇,初级篇,中级篇,高级篇),笔者也打算趁此机会,回忆一下自己的Java学习历程。今天我们要讲的是,小白同学如何入门Java。先声明一点,文章内容不会详细到每一步怎么操作,只会提供大致的思路和方向,给大家以启发,如果真的要一步一步指导操作的话,那至少需要一本书的厚度啦。本文所述的方法不一定适合所有人,如有错误敬请谅解。01 前期准备工作开发环境搭建这一步我们往往会直接跳过,但既然是面向小白的教程,这里就提一下吧。首先你需要一台电脑,然后安装好JDK和JRE,JDK提供的是Java开发工具,也就是一些必备的jar包,JRE则是Java的运行环境组件,我们熟悉的JVM就在这里面。安装好这两个东东之后,一般还要配置一下环境变量,否则有一些目录可能无法被正确找到。IDE选择和安装IDE指的就是本地开发编辑器,没有了它,你就只能直接在记事本这类工具里敲代码了。IDE最大的好处就是整合了大量的工具和功能模块,让你非常轻松地完成开发。以前大家都用eclipse,不过eclipse已经不流行了,现在我推荐你直接用intellij idea作为你的第一个代码编辑器。如果是用过eclipse的同学,基本上也可以无痛切换。intellij idea可以直接在官网上下载,试用版30天,如果想要永久使用,网上也有一些办法滴。关于jar包jar包是什么,其实就是将一堆class格式文件打包,Java中把它称为jar包,这些jar包在编译器中能被直接识别,让开发者使用。对于新手来说,可能只需要用到JDK自带的一些API,但是如果你要引用外部jar包,可能就会遇到一些困难了。对于idea来说,导入外部jar包有两种办法,一种是手动导入jar包,一种是使用maven。后者会在Java Web相关的文章中讲起。手动导入jar包其实也不难,你需要先下载好jar包,然后在对应的项目下选择导入jar包即可,具体的方法这里就不展开说了,因为在网上都找得到。02 学习Java基础的几种方法了解基础语法学习一门语言,最开始要做的事情就是学习它的语法。我最早学习Java语法是在Runoob,这个网站可以让你对任意一门语言完成最快速的语法入门,当然,这只是相当于你浏览了一遍基础语法。想要真正掌握Java语言基础,光看基础语法还远远不够,我在大三第一次接触Java课程,听老师讲面向对象三大特征听得一头雾水,连数组的初始化方式都理不清楚,但这些内容都是我们需要掌握的。所以,为了学好Java基础,我们还需要看视频或者看书进行学习。看视频视频的话,可以到极客学院或者慕课网听Java基础课程,当然也可以看我分享的Java视频课程。大家也都知道,现在Java的培训班非常多,基本上学的东西也都大同小异,不过它们的有些课程还不错,大家有渠道的话也可以去看一看。看视频的好处是你可以更好地接收知识,同时也会耗费你更多实践,所以,有时候你也可以选择看书。看书看书的话,对于小白来说不推荐太复杂的书,比如《Java编程思想》这种书,新手千万不要看。我个人建议,你只需要先看看《Java入门到精通》这种类型的书就足够了,因为这个部分的学习只是为你后面的学习开个头,你以后可能还要回过头来重新研究这些内容。现在市面上介绍Java基础的书籍实在太多了,质量参差不齐,内容同质化严重,笔者看过的其实也不多。给大家一个建议,你只需要挑一两本书来看即可,这里推荐两本最简单的吧,《head first java》和《Java从入门到精通》。看博客这里再推荐另一种学习方式,就是看博客,博客比起书籍来说,更适合对于某个技术点的学习,你可以很容易地在网上找到这个知识点相关的原理,实现方法,以及代码范例。我的博客里没有讲解特别基础的东西,如果你看一些比较基础的文章,可以到Runoob等网站上查看。如果你有一个很明确的知识点想要学习,相信搜搜引擎会给你更好的答案。代码实践除此之外,一般的Java书籍或者视频课程都会要求你相应完成一些练习题,这部分内容你需要自己在电脑里使用IDE完成。在IDE里,你可以很好地熟悉Java语言的使用,基本代码的实现,同时可以尝试各种各样的API,并且测试一些语言特性,比如继承,封装,多态等等。另外,这也是你熟悉IDE的一个好机会,因为在公司里做开发可能要用到IDE各种各样的功能,提前熟悉好IDE绝对是有益无害的。03 Java入门必备知识点梳理在Java入门阶段,你可能需要接触到以下这部分知识,不管你是从通过哪种方式学习,这些内容都是你学习Java基础时绕不过的重点。Java基础知识这部分内容是你必须要掌握的内容,在入门阶段你需要把这些基础打扎实,以便于在学习后面的内容时可以更上一层楼。如何把基础打扎实呢,最好的办法就是在IDE上把书上或者视频上的每个例子都实现一遍,当然有的时候你也可以自己写一些有意思的例子。1 基本数据类型比如int,double,char,以及其包装类。熟悉基本数据类型的使用,了解每种类型所占的字节数,以及它们和包装类之间的相互转换。2 流程控制比如for循环,if else,while循环等等如果是学过c语言的同学,这部分可以跳过了。3 字符串类型String的使用字符串类型是Java中很重要的类型,它不是基本数据类型,但却很常用,熟悉和实践String相关的api,开始你对字符串的学习吧。4 数组数组的初始化方式有哪些,二维数组应该怎么写,把数组当成方法参数又该怎么处理?5 类和对象Java中最重要的两个概念:类和对象,它们有什么用呢,有什么区别和联系呢,请在代码中实践它们吧。Java核心技术对于这部分内容,我相信很多小白只能了解它们的基本使用方法,但是并不明白其背后的一些原理:比如为什么接口和抽象类有这些区别,多态的意义是什么,为什么要有反射。新手在学习这部分内容时,只需要知道怎么用就可以了。当然,你最好把这些特性都实现一遍,以加深印象。至于为什么有这些特性,这些特性背后的原理是什么,不是我们现在讨论的内容,这些内容我们将在初级和中级篇中讲述。因为,要了解这些原理,你得了解JVM,了解并发技术的基础,了解网络基础,甚至更多。显然,这不是你现在能做到的。1 接口和抽象类写一些接口,同时写一些实现类去实现这些接口,并且了解一下为什么我们需要接口,为什么子类需要实现接口里的方法。同理,去实现一些抽象类吧。然后,看看它和接口有什么不同。2 继承,封装和多态如何理解继承,子类和父类之间有什么联系呢。封装是一种保护代码的方式,有哪些方式可以实现封装呢。多态一般分为重载和重写,它们分别怎么使用?3 异常处理Java中的异常处理主要用于捕获和处理错误,请你写一些try catch代码块去捕获错误吧。4 集合类集合类是我们经常需要打交道的东西,List,Map,Set等等,赶快去熟悉API,然后写一些测试例子吧。5 IO输入流和输出流IO输入流和输出流可以操作文件,网络数据等内容,如何在Java代码中完成这么复杂的操作呢,其实只需要简单的几个api就可以了。6 多线程为了让系统资源最合理地分配和调度,我们需要多线程,多线程会让程序变得有趣,也会带来很多问题,使用Thread和相关API,去尝试这些有趣的事情吧。可选内容:1 反射(了解即可,不是入门必须)2 枚举类型和泛型(了解即可,不是入门必须)3 网络通信(了解基本的socket使用即可,需要网络基础)4 数据库操作(了解基本的JDBC即可,需要数据库基础)04 总结总而言之,对于一个Java小白来说,入门Java可以分为这几步:
1 首先搭建好Java开发环境 2 通过Runoob等一些网站熟悉Java的基本语法 3 通过看书看视频等方式熟悉Java基础知识,通过代码实践加深理解 4 通过看书看视频等方式初步了解Java核心技术,通过代码实践加深理解。
本文主要是为大家提供一个学习的思路,以及推荐一些学习方法,如果你能够按照这样的步骤去学习,并且配合上一些适合你自己的学习方法来完成学习计划,相信你可以很好地完成对Java的入门。Java工程师学习指南初级篇最近有很多小伙伴来问我,Java小白如何入门,如何安排学习路线,每一步应该怎么走比较好。原本我以为之前的几篇文章已经可以解决大家的问题了,其实不然,因为我之前写的文章都是站在Java后端的全局上进行思考和总结的,忽略了很多小白们的感受,而很多朋友都需要更加基础,更加详细的学习路线。所以,今天我们重新开一个新的专题,分别按照四篇文章讲述Java的学习路线(分别是入门篇,初级篇,中级篇,高级篇),笔者也打算趁此机会,回忆一下自己的Java学习历程。今天我们要讲的是,小白同学如何入门Java。先声明一点,文章内容不会详细到每一步怎么操作,只会提供大致的思路和方向,给大家以启发,如果真的要一步一步指导操作的话,那至少需要一本书的厚度啦。本文所述的方法不一定适合所有人,如有错误敬请谅解。01 Java Web项目指南jav在上一篇文章中,我们讲到了入门Java的几个步骤,先搭建好环境,然后熟悉基本语法,接着熟悉Java的一些核心技术,并且在代码中进行实现。如果你已经完成了这部分内容的学习,应该会感觉自己对Java已经有一定了解了,可以轻松地写出一些Java代码,比如实现多线程输出数字,再如操作IO流等等。当然,这些代码通常只是一些demo,我们在实际的项目中可能并不会这么简单地使用这些技术,我们可能会同时使用集合类,多线程,以及操作数据库的API。所以,在今天的初级篇中,我们就来谈谈怎么做项目吧。Java Web项目对于大部分Java新手来说,最适合他们入门的项目就是Java Web了。因为Java天然适合做Web应用,并且生态完善,更有很多开源的工具和框架去支撑这些应用,比如Spring,Hibernate,SpringMVC等等。那么,如何开始着手做一个Java Web项目呢。个人认为最好的方式就是看视频了。因为,看书的话,很多内容比较过时,并且一般不会提供源代码。也有一些大佬喜欢推荐开源的项目(在GitHub上面的项目),但是对于小白来说,如果没有很完整的文档去指导他们,那也是毫无意义的。曾几何时,Java Web的项目还在使用JSP + Servlet进行开发,后来出现了Struts2,再后来,出现了我们现在也一直在用的SpringMVC,说实话,不论使用哪种开发框架,你都需要先花一些时间去学习相关的技术,否则你会发现,即使是看视频,你也不知道里面在讲什么。要想做好一个JavaWeb项目,你不仅需要一个好的项目课程,还需要足够的知识储备,下面就让我们来理一理这些内容把。知识储备Java基础部分的内容咱们上次说过了,这里就不再重复啦~下面我们分别来说说其他几方面的知识储备把02 前端知识推荐资源:在w3cschool学习html,css和js,支持在线测试代码。既然是做Web,就难免要涉及到前端技术,不过,现在前后端分离已经是一种趋势,所以,如果你对前端不感兴趣,也没必要花太多时间去学习。对于大部分同学来说,你最好要了解html的基本标签和格式,自己能够写一些简单页面,CSS的话,也可以稍微接触一些。相对于前面两个服务于样式的技术,我们倒是更应该去学习一下JavaScript,了解它的一些基本语法,以及ajax的使用,因为在前后端交互时,ajax是非常重要的。所以,做一个Java Web项目,你不需要花太多时间在写前端页面上,如果有源代码可以直接使用,当然,对于一些需要修改的前端页面,你得怎么去做修改它,因为有时候你需要使用JSP,JSP既包括前端代码也包括Java代码,如果你完全看不懂前端代码的话,那就很尴尬了。03 Java Web常用技术JavaWeb的技术栈其实比较庞大,所以我们不要求面面俱到,只是希望你能够熟悉一下项目中可能用到的技术。下面列举一些常见的技术,大家最好要了解一下。1 JSP和Servlet推荐资源:《JavaWeb入门到精通》,慕课网、极客学院等网站上的JavaWeb基础课程这是Java Web开发最原始的形态,现在很少直接使用了,但是后来的各种框架其实也是建立在servlet之上来做的。你们需要了解这两个技术分别是用来干什么的,最好能写一些demo来实践。对于JSP,有时候你可能还要学习jstl等标签语言,因为这些标签可以让你更方便地往JSP中插入Java代码。2 Spring和SpringMVC推荐资源:《Spring实战》,慕课网、极客学院等网站上的SpringMVC基础课程。事实上,除了上述资源之外,你也可以直接到官网上查看快速开始文档。Struts2早已被时代抛弃,Spring则是当今的霸主,你需要了解Spring如何使用,以及SpringMVC如何使用,并且学会在项目中使用它。由于SpringBoot最近很火,并且搭建方式比SpringMVC更简单,你也可以先学习SpringBoot,以便更快速地搭建起你的第一个Java Web项目。3 MySQL推荐资源:《Sql必知必会》,Runoob上的MySQL基础教程,慕课网、极客学院等网站上的视频课程一个JavaWeb应用一定要有数据啊,所以我们需要用到数据库,其实搭一个mysql数据库是非常简单的,但是对于初学者来说最麻烦的就是写sql了,所以,先学会建表,熟悉sql,对你以后做项目也是大有裨益的。4 Hibernate和Mybatis推荐资源:Runoob上的Hibernate和Mybatis基础教程,慕课网、极客学院等网站上的视频课程当你学会了使用sql去查询数据,可能还不足以让你在项目中很方便地处理数据,因为我们还需要一个步骤,就是把数据库的数据转化成Java里的对象。orm框架就是为了解决这一问题而出现的,它可以让一张表和Java类一一对应,让数据查询变得非常方便。Hibernate和Mybatis都是orm框架,只不过现在mybatis越来越火了。所以,你需要了解这一技术,因为它会广泛地运用到大部分Java Web项目中。5 Maven推荐资源:《maven实战》,易百教程里的maven教程,慕课网、极客学院等网站上的视频课程刚才咱们已经说过了Spring,orm框架,以及MySQL等方面的技术了。实际上,一个简单的Java Web项目也只需要这些东西了。但是,有一个问题,就是:一个项目里用到这么多技术,所需要的jar包也会很多,我们如何管理这些jar包呢。如果直接导入所需jar包,那当jar包更新或者需要替换时,每次都要手动操作,非常麻烦。另外,当jar包很多时,项目打包后的war格式文件也会很大,不利于传输。为了解决上述问题,maven应运而生了。maven通过pom.xml文件来指定所需的jar包,并且自带了很多构建相关的功能,比如编译,打包,运行单元测试等等,因为它本身就是一个构建工具。当然,新手可能还难以理解这些概念,你必须要知道的是,大部分Java Web项目需要用maven来管理,你需要学会maven的基本用法,最基本的用法就是:学会修改pom.xml文件。6 Tomcat推荐资源:慕课网、极客学院等网站上的视频课程。对于小白来说,Tomcat相关的技术是非常复杂的,毕竟它是一个应用服务器啊,事实上这个时候,你只需要学会如何安装Tomcat即可。毕竟,它在项目中的作用就是提供一个运行环境而已。正常来说,你只要下载解压Tomcat的压缩包即可。由于现在的IDE都支持集成Tomcat,所以一般情况下你都可以在IDE中配置好你的Tomcat路径,然后设置好你的项目路径,IDE会自动把你的工程代码部署到Tomcat服务器上。如果你使用想跳过IDE直接部署工程到Tomcat上,也可以直接编译工程并且打包得到war格式的文件(这个步骤可以使用maven来完成),然后拷贝war文件到Tomcat下的特定目录即可。上述两种部署方式的详细步骤请到搜索引擎寻找答案。7 Git和GitHub推荐资源:廖雪峰的Git教程,GitHub官网,慕课网、极客学院等网站上的视频课程。既然要做项目,为什么不把它发布在GitHub上。当你熟悉了Git指令之后,你可以很方便地发布你项目中的每一次更新,并且同步到GitHub上,这样既可以让你更好地管理项目版本,又可以让你GitHub更加活跃,为你未来的面试加分。所以,赶紧学好Git指令,然后开启你的项目之旅吧。04 其他常用组件除了上面几种必备的技术之外,有时候我们在项目中还会用到其他东西,在这里我们把它们叫做组件。这里只做简单的介绍,至于具体怎么使用,在网上都可以很容易地找到相关文章。1 日志系统当项目代码比较多的时候,容易发生错误,日志可以很好地记录代码运行时的错误,常用的日志系统有log4j,logging等等,另外你还需要了解一下slf4j。2 单元测试日志系统可以记录代码问题,单元测试则是为了避免代码出错,常用的单元测试组件主要是JUnit,建议你找个文档看一看,然后下载下来玩一下。3 JSONJSON逐渐成为前后端数据交互的标准格式,为了在项目中使用JSON的API,你也需要导入它的jar包,一般我们都会使用ucloud提供的fastjson,赶快下载来玩一玩吧。当然,常用的Java Web组件还有很多,比如HTTPClient,再比如一些加密工具,一些压缩工具等等,这里就不再一一列举了。05 推荐项目课程现在网上的项目课程那么多,哪一款更适合你呢?其实我看过的视频课程也不是很多,早先在慕课网和极客学院看过一些项目课程,觉得比较一般,对新手来说不太友好。我的一些同学看过一些培训机构的课程,专业讲师录的项目课程可能会稍微好一点。在我公众号后台回复“Java”可以领取某机构的视频课程,不过我不是打广告的,这个机构也没有给我钱啦。当然,你也可以自己去找一些你感兴趣的项目课程,后续我也会收集更多的视频课程来分享给大家。PS:如果找不到我说的这些资源,也可以微信私我。老规矩,公众号后台回复“少侠”可以勾搭作者。06 总结今天的内容就到这里了,与其说是初级篇,反而更像是“项目篇”呢。因为学完基础内容之后,做项目是最好的复习和实践方式了。所以这篇文章围绕着做项目来展开,也就不足为奇了。今天我们主要讲的是,做好一个JavaWeb项目,需要哪些知识储备,需要了解哪些技术,并且我也推荐一些比较精品的视频课程。后面我还会写一篇文章,专门讲一讲怎么做项目,会更加详细,更加侧重怎么去做,敬请期待吧。总结以下今天说的几个要点吧:
1 Java基础知识储备 2 前端知识储备 3 了解和使用JavaWeb常用技术 4 JavaWeb常用组件介绍 5 视频课程推荐
俗话说的好,磨刀不误砍柴工,相信你看了本文之后,可以更好地做好知识储备,然后开始Java Web的项目实践,希望你能够顺利地完成你的第一个项目。▼更多精彩内容想了解Java后端学习路线?你只需要这一张图!Java工程师修炼之路(校招总结)你不可错过的Java学习资源清单Java基础知识点总结Java秋招面经大合集笔者在今年秋招中成功拿到BAT头条网易等大厂的研发offer,期间总结了很多经验和技巧,我把它们写成文字,做成专题,发表在公众号上,希望让更多有需要的朋友看到。关注微信公众号【程序员江湖】后,可以在后台回复“Java”即可领取精品Java学习资源(不断更新中),学习资源包括基础,实战以及求职等内容。1、后台回复“少侠”,可以获取我的微信,有什么问题都能聊。 2、如果你想要加入微信交流群,那么可以在后台回复“江湖”。 3、如果你想要到我的技术博客看更多的Java后端技术文章,请回复“练级”。Java工程师学习指南中级篇最近有很多小伙伴来问我,Java小白如何入门,如何安排学习路线,每一步应该怎么走比较好。原本我以为之前的几篇文章已经可以解决大家的问题了,其实不然,因为我写的文章都是站在Java后端的全局上进行思考和总结的,忽略了很多小白们的感受,而很多朋友都需要更加基础,更加详细的学习路线。所以,今天我们重新开一个新的专题,分别按照四个部分讲述Java的学习路线,笔者也打算趁此机会,回忆一下自己的Java学习历程。今天我们要讲的是第三部分,Java工程师学习指南(中级篇)。先声明一点,文章里面不会详细到每一步怎么操作,只会提供大致的思路和方向,给大家以启发,如果真的要一步一步指导操作的话,那至少需要一本书的厚度啦。当然,本文提到的大部分内容都能在我的博客中找到对应的一些文章。所以也欢迎大家去我博客找到你们需要的资源。本文中的方法不一定适合所有人,如有错误还请谅解。上期回顾在上一篇文章中,我们主要讨论的是如何做一个Java Web项目,以及前期需要哪些方面的基础。最后,我还推荐了几个比较不错的视频课程,以便给大家参考。当然,跟着视频课程做完一个项目,你只是照葫芦画瓢又练习了一遍,可能其中有很多东西你并不太理解,比如你可能不知道为什么代码要分层,为什么要用maven进行线上编译,为什么Tomcat启动时会输出那么多的日志。有疑问很正常,因为一个Java Web项目涉及的技术还是很多的,如果要理解这些技术的原理,光靠一个项目课程是远远不够的。所以,在你体验了Java Web项目的开发流程以后,你应该花些时间去了解相关技术原理了,今天我们要讲的也是这部分内容。对于即将参加校招的同学来说,最重要的也是这部分内容,你需要了解JVM虚拟机原理,Java并发原理,并且熟悉JDK的部分源码,了解这些API的底层实现。除此之外,还有很多,下面我们分别来谈一谈。PS:文中多次提到我的博客,是因为我的博客里整理了多个技术专栏,基本上包含了下面所说的内容。关注公众号后,在公众号后台回复“练级”即可获得我的技术博客地址,以及其他相关的资源。01 计算机基础知识计算机基础课程(非科班)如果你不是计算机专业的同学,那你可能要注意一下了。在学习下面这些内容之前,你最好要学习一下计算机基础课程。这里我们说的计算机课程是:数据结构,操作系统,计算机网络。数据结构:这门课应该算是三门课程比较简单的一门了,推荐《数据结构与算法(Java语言描述)》,看书结合代码实践,把基本的数据结构算法写一写就可以了。操作系统:关于操作系统我看了很多本书,但是没有感觉特别好的,所以如果有时间的话可以先看另外一本书《深入理解计算机系统》,这本书讲了很多计算机的基本概念,不局限于操作系统。然后可以看一看汤小丹写的《操作系统》,或者你们学校的教材。计算机网络:网络方面的书也非常多,推荐看一下《计算机网络:自顶向下方法》,另外还有一本《TCP/IP 详解:卷一》也是备受推崇的书。除此之外,我还要推荐一下刘欣老师的书《码农翻身》,书中用一些有趣的故事来讲解操作系统和计算网络的一些复杂概念,有助于大家理解这部分内容。02 JVM虚拟机JVM虚拟机为什么把JVM放在第一位,因为它是最基础也最重要的一块内容。所有的Java代码都运行在JVM上,事实上,JVM在操作系统中只是一个进程。为了了解Java代码的运行方式,底层引擎的执行原理,以及内存的分配情况,我们必须要学习JVM虚拟机。推荐资源:《深入理解JVM虚拟机》很高兴地告诉你们,学习JVM你只需要把这本书吃透即可,当然,看一遍可不够,笔者前后至少看了三遍,有条件的话最好把书中的实例都跑一跑。另外,JVM也是面试必考的内容,所以,相应地去准备一些面试题也是很有必要的,如果你基本掌握了这本书的内容,相信你不会惧怕任何JVM面试题。03 设计模式与源码阅读设计模式为什么在这里提到设计模式呢,因为设计模式是Java编程规范的经典总结,并且在JDK源码中经常使用,由于我们后面会讲到JDK源码方面的学习,所以对于设计模式,建议大家先学习一下,最好的学习方式就是看书结合实践,把一些常用的设计模式自己实现一下。推荐资源:《head first 设计模式》JDK源码(主要指集合类源码)接下来下场的选手是:JDK源码。不过对于大部分人来说,只要能够掌握集合类,字符串这些源码就可以了,其他部分的源码主要集中在JUC并发包里,而这些内容我们会放在Java并发技术里来讲。为什么我们需要掌握集合类源码呢,其一是因为面试喜欢考,其二是因为集合类的源码实现都比较经典,难度也不算太大,并且运用了很多优化方法,所以了解它对于学习Java的同学来说大有裨益。推荐资源市面上并没有哪本书专门来讲JDK源码的,所以这部分内容的学习资源主要是两个部分,一是JDK源码本身,而是一些技术博客。1 对于JDK源码,直接看可能比较有难度,不推荐新手这么做。 2 讲解源码的文章质量参差不齐,所以我只推荐几个我自己比较熟悉的,一个是importnew。一个是我的博客。另外,我之前分享的一篇文章《你不可错过的Java学习资源》中也推荐了很多大牛和博客,大家也可以去看看。Spring源码说实话,Spring源码的复杂度远高于集合类的源码,这也是因为Spring运用了很多的设计模式,并且有着非常繁杂的类关系。所以,我不建议大家直接去读Spring源码,因为即使是看Spring源码解析的书籍,你也会感到很吃力。所以,我推荐的方式是,看书+看一些比较好的源码解析文章。另外要告诉大家的是,Spring的源码很多,并不是所有内容都需要你掌握的,大家都知道Spring最常用的特性就是IOC和AOP,所以看源码解析时,最重要的也是这两个部分了。另外,看完Spring的源码解析以后,别忘了看SpringMVC的源码解析,学习方法也是一样的,找重点内容看即可。推荐资源:《Spring源码深度》,我的博客专栏04 Java并发技术Java并发技术相信你为了搞定集合类源码和Spring源码花了不少功夫了,接下来轮到Java并发技术出场了。我们在入门篇其实已经谈到了多线程,但是也仅仅停留在使用Thread或者Runnable实现简单的多线程demo。实际上,为了理解Java并发技术的底层实现,我们还需要知道JMM模型,了解synchronized和volatile的底层实现,同时还要明白Java中的多线程和操作系统的多线程和什么联系和区别。除此之外,我们经常谈到的线程安全,有哪些实现方法,也是这部分内容的要点。学习并发技术,我建议分为三个步骤
1 首先熟悉Java的多线程基础知识,比如Thread的使用,线程的状态转换,以及一些api的使用方式。 2 了解一些理论基础,比如JMM,操作系统的多线程实现。这部分内容推荐通过看书和看博客来学习。 3 了解并使用JUC的一些API,然后开始看JUC的一些源代码。这个阶段是最重要也是最困难的。
推荐资源: 书籍:《Java并发编程艺术》,《Java并发编程实战》 网站:我的博客专栏,并发编程网,importnew,《你不可错过的Java学习资源》05 Java网络编程Java网络编程在搞懂Java并发编程技术之后,相信这部分内容也难不倒你。当然,前提是你对计算机网络有一定了解,因为网络编程涉及到TCP和HTTP相关的知识点。在学习这部分内容的时候,你首先要了解socket的使用以及原理,然后再去了解NIO的相关API,多写一些客户端和服务端通讯的demo,以便熟悉这些内容。为了更好地理解网络编程,你还要去了解UNIX网络编程模型。除此之外,如果你想要更好地理解Java网络编程,你还需要去了解Tomcat的实现原理。同时,Netty也是值得你去学习的一部分内容,最好有机会去用一用这一网络编程框架,学有余力的同学还可以考虑看看它的源码(笔者没有看)。推荐资源:我的技术博客,《Java网络编程》,《你不可错过的Java学习资源》05 Java8Java的版本一直在更新,但目前在用的主要还是Java8和Java7,等再过几年可能这部分的内容就过时了。但是目前看来,对Java8的学习和了解还是很重要的,毕竟面试也喜欢考。对这部分内容学习的最好方式就是:看文章+代码实践推荐资源:《Java8实战》06 总结今天的内容貌似有点多,大家会不会感觉有点吃不消呢。没关系,因为这部分内容确实需要花很多时间去学习。对于一个在校的Java学习者来说,可能没有机会接触到多么高大上的项目,所以对内功的修炼显得格外重要。看书,写demo,读源码,看似简单的事情实际上需要花费大量时间和精力,这个过程是需要你静下心来,慢慢沉淀的,在学习的过程中你也可以和笔者一样,写一些总结和博客,以便更好地回顾自己的学习历程。总结以下今天所讲的内容吧:
1 计算机基础课程:数据结构,网络和操作系统 2 JVM基本原理 3 设计模式,JDK源码,Spring源码 4 Java并发技术,JUC源码 5 Java网络编程 6 Java8
关注微信公众号【程序员江湖】后,可以在后台回复“资料”即可领取3T精品学习资源(不断更新中),学习资源包括基础,实战以及求职等内容。1、后台回复“少侠”,可以获取我的微信,有什么问题都能聊。 2、如果你想要加入微信交流群,那么可以在后台回复“江湖”。 3、如果你想要到我的技术博客看更多的Java后端技术文章,请回复“练级”。
评论0 赞同0
  •  加载中...
lufficc

lufficc

回答于2022-06-28 14:34

我要死了,给孩子留遗言,猜我会留什么?只一句话:Repetition is the mother of all learning. 重复是学习之母。他们将来长大,学知识,技巧、爱情、事业、交流....倘若不怕重复,不怕犯错误,那就大有希望靠近幸福了。


给你推荐一个Java的学习路径,核心是动手实战,策略是重复练习。从Java基础、JDK、JDBC、正则表达式等基础开始,进阶到 J2SE 和 SSH 框架学习。通过使用 Java 语言实现日记本,个人相册、编辑器、通讯录等,实践 Java 编程基础,SSH 项目实战以及Java Web 应用开发。


吐槽一下:头条不能插入外链这一点真是让人下体疼啊....以下练习教程链接大家可以在实验楼微信公众号(实验楼)回复关键字“Java路径”直接获取到,不需要任何别的操作。


JAVA基础

  1. Java编程语言(新版

2. Java进阶之设计模式

3. JDK 核心 API

4. MySQL 基础课程

5. 正则表达式基础

6. JDBC 入门教程

J2SE & SSH框架

7. Java 函数式编程

8. J2SE网络通信实践

9. Struts框架教程

10. Hibernate框架教程

11. Spring框架入门教程(新版)

12. MyBatis 框架基础入门

13. Spring MVC 简易教程

基础项目

  1. Java开发简单的计算器

使用 Java 语言完成一个简单的计算器。将使用到 Java Swing 图形组件等等。带你深入学习如何制作 Swing 图形化界面以及为 UI 组件设置事件响应逻辑。


2. Java 实现日记软件

做一个简单的 Java 日记软件,可以实现用户的注册、登录以及对日记的各种操作。同学们可以用自己做出的日记软件来记录自己的生活。涉及了包括 Swing 界面编程、文件和IO流操作、JDOM 解析 XML 文档等方面的知识点。


3. Java实现在线协作文档编辑

多人在线协作文档编辑器是一个很常用的功能,适合小组内的文档编辑;使用java编写代码,应用非常流行的spring mvc框架,引入ckeditor插件,并加入localStorage缓存技术,最终利用Eclipse完成。非常适合Java学习者用于练手。


4. 自己的Java编辑器

使用 Eclipse 开发,配合 Java 语言完成一个 Java 编辑器。它的主要功能:1、Java代码的编辑 2、编译及运行Java程序。


5. SSM 框架整合实例

SSM(Spring+Spring MVC+MyBatis)是媲美于 SSH 框架的轻量级 Java EE 框架。


6. Java 编写数独计算器

使用Java实现数独游戏的核心算法,在感受数独的魅力中通过Java编写桌面程序完成数独计算器,完成对Java基础知识点的学习和巩固。


7. Java实现简单的支付平台业务流程

模拟支付平台上买家付款到支付平台,卖家从支付平台取款的简单业务流程,最终结果以控制台输出形式展现。通过此流程,详细了解 Java 线程与同步。


8. 基于 Servlet 的简单验证码图片生成

通过在后台的 Servlet 生成验证码图片,传递到前台 HTML 页面展示。通过本教程的练习可以进一步熟悉 Servlet、Random 函数、StringBuffer 、OutputStream 等等,掌握基础的验证码生成。


9. SSM + easyUI 搭建简易的人事管理系统

SSM(Spring + Spring MVC + MyBatis)框架是媲美于 SSH 框架的轻量级 Java EE 框架。easyUI 是一组基于 jQuery 的 UI 插件集合体,它的目标就是帮助 web 开发者更轻松的打造出功能丰富并且美观的 UI 界面。


好啦就先上这些吧,要是有帮助的话,后面就再更新。希望你学习进步。

评论0 赞同0
  •  加载中...

相关问题

最新活动

您已邀请0人回答 查看邀请

我的邀请列表

  • 擅长该话题
  • 回答过该话题
  • 我关注的人
向帮助了您的网友说句感谢的话吧!
付费偷看金额在0.1-10元之间
<