Java概述
Contents
尚硅谷
谷粒学苑
技术路线
1、java基础,mysql基础,jdbc
2、前端:html,css,js
web服务端:tomcat、xml配置文件、http协议
后台三大组件:servlet,filter过滤器,listener监听器
会话控制:cookies,session
ajax&jason
文件上传下载
thymeleaf
ES6语法,vue.js
3、经典框架:项目管理工具maven,spring,springmvc,mybatis,ssm整合,linux
4、分布式项目:美年旅游,尚筹网,遇尚
5、高级和前沿技术:版本控制git,负载均衡nginx,消息队列raabbitmq,虚拟化容器docker,内存级别数据库redis,springboot2.4,springcloud,mybatisplus,分布式事务
6、全栈项目:尚荣宝,尚课吧,尚医通
7、 就业加薪课:mysql高级,mycat,jvm,juc高并发双十一 ,zookepper,dubbo
8、微服务架构项目
9、底层os,计网组原,数据结构,算法
10、设计模式,架构模式
项目
前端 -尚品汇
尚亭公寓-后端
谷粒商城-全栈
建议自学java的同学,如果是真正初学的即没有接触过程序或计算机相关知识的,学习的时候不要太钻牛角尖,我看视频的时候经常会看到有弹幕在问什么我这里eclipse跟老师的不一样啊,为什么这里要这样写不能那样写啊,有些问题自己敲一遍代码看看效果就行,毕竟使用场景一时半会说也说不明白,所以宋老师有时会给出比喻,当然这些比喻都很恰当,听个乐就行。 然后就是建议学习顺序就是javase、mysql、jdbc、javaweb、mybatis、springmvc、spring,这几样基本上就是学习java的骨架了,你非要觉得hibernate好,struts好,多学几门也没问题,反正我这是第三次从头看了,也不打算看这两样了,以上说的尚硅谷都有教程,其余的学习路线图官方评论下有介绍,不过我是先系统在韩顺平老师那学习linux,学习linux对以后部署项目有好处,学习些基础命令,会查看日志,会给mysql调优(这涉及mysql高级教程,尚硅谷也有)就行,然后就是git、maven这些小知识点,花个一两天就能搞定,然后就是spring其他的框架了,springboot、cloud这些,再抽空看看redis、nginx,dubbo,这样后端方面横向纵向都有所涉及了,想必自己心里也有个谱了,这也是大部分招聘的需求了,如果想提升下自己,再看个vue,自己从前往后写个小项目,再部署到真正的网上,想必自己也是很有成就感的。
Java SE(Java Standard Edition)标准版
- 支持面向
桌面级应用
(如Windows下的应用程序)的Java平台,即定位个人计算机的应用开发。 - 包括用户界面接口AWT及Swing,网络功能与国际化、图像处理能力以及输入输出支持等。
Java EE(Java Enterprise Edition)企业版
- 为开发企业环境下的应用程序提供的一套解决方案,即定位
在服务器端的Web应用开发
。 - JavaEE是JavaSE的扩展,增加了用于服务器开发的类库。如:Servlet能够延伸服务器的功能,通过请求-响应的模式来处理客户端的请求;JSP是一种可以将Java程序代码内嵌在网页内的技术。
java长期版本:8.0、11.0、17.0–8-17
Java开发环境搭建
-
JDK (
J
avaD
evelopmentK
it):是Java程序开发工具包,包含JRE
和开发人员使用的工具。 -
**JRE ** (
J
avaR
untimeE
nvironment) :是Java程序的运行时环境,包含JVM
和运行时所需要的核心类库
。 -
JDK = JRE + 开发工具集(例如Javac编译工具等)
JRE = JVM + Java SE标准类库
安装jdk17并自动配置了环境变量
编译运行
HelloWorld.java文件,使用javac
命令进行编译,将编写好的Java源文件
编译成JVM可以看懂的字节码文件
,也就是类名.class
文件。是Java的可运行文件,称为字节码文件,有了字节码文件,就可以运行程序了。
|
|
|
|
输出
|
|
|
|
注释
|
|
对于单行和多行注释,被注释的文字,不参与编译。不会出现在字节码文件中,进而不会被JVM(java虚拟机)解释执行。
文档注释内容可以被JDK提供的工具 javadoc 所解析,生成一套以网页文件形式体现的该程序的说明文档。
前提类声明为public
|
|
- API (Application Programming Interface,应用程序编程接口)是 Java 提供的基本编程接口。
- Java语言提供了大量的基础类,因此 Oracle 也为这些基础类提供了相应的说明文档,用于告诉开发者如何使用这些类,以及这些类里包含的方法。大多数Java书籍中的类的介绍都要参照它来完成,它是编程者经常查阅的资料。
- Java API文档,即为JDK使用说明书、帮助文档。
- 下载API文档:
- 在线看:https://docs.oracle.com/en/java/javase/17/docs/api/index.html
- 离线下载:https://www.oracle.com/java/technologies/javase-jdk17-doc-downloads.html
Java核心机制:JVM
java优点
-
**跨平台性:**这是Java的核心优势。Java在最初设计时就很注重移植和跨平台性。
原理:只要在需要运行 java 应用程序的操作系统上,先安装一个Java虚拟机 (
J
VM ,JavaV
irtualM
achine) 即可。由JVM来负责Java程序在该系统中的运行。 -
**面向对象性:**面向对象是一种程序设计技术,非常
适合大型软件的设计和开发
。面向对象编程支持封装、继承、多态等特性,让程序更好达到高内聚
,低耦合
的标准。 -
**健壮性:**吸收了C/C++语言的优点,但去掉了其影响程序健壮性的部分(如指针、内存的申请与释放等),提供了一个相对安全的内存管理和访问机制。
-
**安全性高:**Java适合于网络/分布式环境,需要提供一个安全机制以防恶意代码的攻击。如:
安全防范机制
(ClassLoader类加载器),可以分配不同的命名空间以防替代本地的同名类、字节代码检查。 -
**简单性:**Java就是C++语法的
简化版
,我们也可以将Java称之为“C++--
”。比如:头文件,指针运算,结构,联合,操作符重载,虚基类等。 -
高性能
JVM
(J
ava V
irtual M
achine ,Java虚拟机):是一个虚拟的计算机,是Java程序的运行环境。JVM具有指令集并使用不同的存储区域,负责执行指令,管理数据、内存、寄存器。
实现Java程序的跨平台性。我们编写的Java代码,都运行在JVM 之上。正是因为有了JVM,才使得Java程序具备了跨平台性。
自动内存管理(内存分配、内存回收)
- Java程序在运行过程中,涉及到运算的
数据的分配
、存储
等都由JVM来完成 - Java消除了程序员回收无用内存空间的职责。提供了一种系统级线程跟踪存储空间的分配情况,在内存空间达到相应阈值时,检查并释放可被释放的存储器空间。
- GC的自动回收,提高了内存空间的利用效率,也提高了编程人员的效率,很大程度上
减少了
因为没有释放空间而导致的内存泄漏
。
Java程序还会出现内存溢出和内存泄漏问题吗? Yes!
内存溢出:数据超出了内存容量范围
内存泄漏:垃圾回收器会自动回收不再使用的对象,JVm是使用可达性分析算法来判断对象是否不再使用的对象,本质都是判断一个对象是否还被引用。那么对于这种情况下,由于代码的实现不同就会出现很多种内存泄漏问题(让JVM误以为此对象还在引用中,无法回收,造成内存泄漏)例子
\n(换行),\t(制表符)
|
|
神书:《Java核心技术》、《Effective Java》、《Java编程思想》
企业真题
一个”.java”源文件中是否可以包括多个类?有什么限制
是!
一个源文件中可以声明多个类,但是最多只能有一个类使用public进行声明。 且要求声明为public的类的类名与源文件名相同。
如何看待Java是一门半编译半解释型的语言
java编译成字节码文件后运行方式包括两种,一种是逐行进行翻译,直接解释(解释型)另一种是针对热点代码提前翻译成相关的机器指令,后面再调用可以直接拿来(JIT即时编译)
Author kong
LastMod 2023-11-28