-
2022-04-25 13:58:46
类加载过程
加载模块
1.通过完全限定类获取定义该类的二进制字节流;
2.将该字节流表示的静态存储结构转换为方法区的运行时数据;
3.生成一个java。lang.Class对象,它表示类,并充当类在方法区域中的各种数据的访问点
链接到模块
验证
1.确保类文件中的字节流满足当前VM的要求,确保加载的类的正确性,并且不影响VM的安全性。
2.主要包括四种验证:文件格式验证、源数据验证、字节码验证、符号引用验证。
准备
1.为类变量分配内存,并将类变量的默认初始值设置为零。
不包括带有final的Static,因为final在编译时分配,并在准备过程中显式初始化。
类变量在方法区域中分配,而实例变量在Java堆中与对象一起分配。
解析
1.将常量池中的符号引用转换为直接引用的过程。
2.实际上,解析操作是在初始化后用JVM执行的
3.符号参照是描述被参照对象的一组符号。符号应用程序的文字形式在Java虚拟机规范的类文件格式中有明确定义。直接引用是直接指向目标的指针、相对偏移量或间接指向目标的句柄
4.解析操作主要针对类或接口、字段、类方法、接口方法和方法类型。常量池中的常量类信息、常量字段参考信息和常量方法参考信息。
初始化模块
1.Clinit()是类或接口初始化方法。请注意,它不是构造函数init()。
2.这个方法不需要定义,它是静态代码块中的语句和Java编译器为类中的所有类变量自动收集的赋值操作的组合。
3.我们注意到,如果没有静态变量C,字节码文件中就不会有Clinit方法
构造函数方法Clinit()中的指令按照语句在源文件中出现的顺序执行
虚拟机必须确保一个类的Clinit()方法在多个线程中同步锁定,这意味着一个类在其内部信息存储到方法区域之前只需要Clinit一次。更多相关内容 -
拉勾大前端高薪训练营-学习目录
2022-04-08 17:01:55拉勾大前端高薪训练营-学习目录 -
拉勾Java高级工程师高薪训练营(P7)
2021-07-21 13:54:53三. 编写Java程序、编译、运行 3.1 编写第一个java程序 说明: Java源程序由类组成,class声明帮助编译器理解它是一个类的声明 Java程序默认都是由main方法开始执行 一个Java源程序中可以有多个类,但是只能有...三. 编写Java程序、编译、运行
3.1 编写第一个java程序
- Java源程序由类组成,class声明帮助编译器理解它是一个类的声明
- Java程序默认都是由main方法开始执行
- 一个Java源程序中可以有多个类,但是只能有一个public类
- public类的类名必须和当前文件同名
- 系统输出内容System.out.println();
3.2 编译 javac HelloWorld.java
3.3 运行 java HelloWorld
3.4 Eclipse使用
创建java工程 File--->New--->Java Project
创建java文件 src右键--->New--->Class
自动编译
右键--->Run As--->Java Application
Console控制台查看系统输出信息 Window--->Show View--->Console显示控制台
四. Java语法
Java的数据类型(基本数据类型、引用数据类型)
>基本数据类型
- 数值型byte(1)、short(2)、int(4)、long(8)、float(4)、double(8)
- 字符型char(2)
- 布尔型boolean(1)
>引用数据类型
- 数组
- 字符串String
- 类(自定义类、java库类)
- 接口
>基本数据类型与引用数据类型的区别
- 概念
- 基本数据类型的变量指向具体的数值
- 引用数据类型的变量指向存储的内存地址
- 内存分配
- 基本数据类型的变量声明(未赋值)之后,java会立即在栈内存中分配空间。如int a; 占用4个字节
- 引用数据类型的变量声明之后,java不会分配分配空间。
- 另外引用数据类型可以赋值为null,也表示不会在堆内存中分配空间。
- 赋值=
- 基本数据类型的变量,使用等于号“=”进行赋值,是具体的数值传给另一个变量
- 引用数据类型的变量,使用等于号“=”进行赋值,是将内存地址传给另一个变量
- 判断是否相等==
- ==判断基本数据类型的变量是否相等,判断的是变量的值
- ==判断引用数据类型的变量是否相等,判断的是变量所指的内存空间
4.1.4 类
类是一种引用数据类型,类似于c语言的结构体。
例如:保存某个人的信息,包括姓名、年龄。那么就需要通过Person类,将多个数据类型组成一个整体String name; int age;
- 如何创建Person类
- 如何通过Person类创建变量(类似于c语言的结构体变量)
- 对属性进行赋值
内存分析
- Person p1; // 声明一个变量,相当于Person p1 = null;
- p1 = new Person(); // 申请内存空间
- 或者直接 Person p1 = new Person();
- 必须使用new才能开辟内存空间(开辟新的内存空间)
对象的使用
1. 对象可以通过(对象.变量名)引用类中的成员变量
2. 成员变量与局部变量的区别:
局部变量:定义在方法中
成员变量:定义在类中
----------------------------------------------
局部变量:只在该方法内有效
成员变量:在该类中都可以被访问
----------------------------------------------
局部变量:存在于栈内存中,方法作用范围结束,变量所占的内存空间自动释放
成员变量:存在于堆内存中,随着对象的创建而创建,对象的销毁而销毁
-----------------------------------------------------------------------------------------------------------
局部变量:没有默认初始值(没有赋值无法使用)
成员变量:有默认初始值
数组、字符串都属于类的一种
定义数组对象
-
- int[] arri = {1,2,3};
- int[] arri = new int[3] ;
定义字符串对象
-
- String str = “hello”;
- String str = new String(“hello”);
- String类是Java类库中的一个,参考api。
链接:https://pan.baidu.com/s/1ji14fnfWFlj-m1XV0eFANA
提取码:hqqn -
大前端高薪训练营百度云【百度云网盘】
2022-04-18 10:23:03链接: https://pan.baidu.com/s/1RYZd-7YfD3QgflKQDm38wg 提取码: k0ji --大前端高薪训练营百度云【百度云网盘】 -
拉钩JAVA高薪训练营笔记汇总
2020-11-10 12:26:03详情地址:https://blog.csdn.net/qq_42082278/article/details/109604005 第七阶段、分布式搜索引擎进阶 该阶段通过检索工具包Lucene对进行分词、倒排索引等概念进行理论讲解,并使用Elasticsearch对拉勾亿级数据...目录
代码的提交
代码会提交到github 上,每一个 分支表示一个模块的学习,如下图为Mybatis 的 代码示例
https://github.com/xibanqiu/lagouStudyCode
学习目录
第一阶段、开源框架源码剖析
该阶段是通过纯手写持久层、IoC&AOP等框架来培养框架思维和自定义框架的能力,通过SSM源码剖析进一步理解设计模式的具体应用
详情地址:https://blog.csdn.net/qq_42082278/article/details/109603724
第二阶段、Web服务器深度应用及调优
该阶段是对Web应用服务器进行深入使用,对Tomcat、Nginx性能调优进行讲解,以及Cluster模式潜在问题及解决方案深入讲解。
详情地址:https://blog.csdn.net/qq_42082278/article/details/109603794
第三阶段、分布式架构设计&微服务深入剖析
该阶段为分布式学习提供理论基础,如分布式一致性协议Paxos、远程过程调用RPC等,并对分布式中间件Dubbo和SpringCloud进行深入剖析。
详情地址:https://blog.csdn.net/qq_42082278/article/details/109603890
第四阶段、大型分布式存储系统架构进阶
数据存储瓶颈是架构师重要技能之一,该阶段是对市场上分布式存储进行深入剖析,有分布式数据存储MySQL,分布式文件存储DFS系列,分布式云存储OSS等。
详情地址:https://blog.csdn.net/qq_42082278/article/details/109603944
第五阶段、大型分布式系统缓存架构进阶
大型互联网项目必备分布式缓存,该阶段对市场上主流的及有一定潜力的缓存服务中间件进行重点讲解,最终可以达到根据不同业务进行分布式缓存选型的能力
详情地址:https://blog.csdn.net/qq_42082278/article/details/109603973
第六阶段、分布式消息服务中间件进阶
该阶段是对高效可靠的消息传递机制进行理论讲解,并对市场上常用的中间件进行讲解,并结合业务场景,完成服务解耦、削峰填谷、分布式事务等实际场景应用。
详情地址:https://blog.csdn.net/qq_42082278/article/details/109604005
第七阶段、分布式搜索引擎进阶
该阶段通过检索工具包Lucene对进行分词、倒排索引等概念进行理论讲解,并使用Elasticsearch对拉勾亿级数据进行搜索,使你成为搜索专家。
详情地址:https://blog.csdn.net/qq_42082278/article/details/109604048
第八阶段、分布式实时流式计算引擎Flink
通过该阶段学习,我们可以掌握在实际的生产过程中有大量的数据实时性分析需求,例如实时推荐,异常告警,传感器信令分析等需求
详情地址:https://blog.csdn.net/qq_42082278/article/details/109604073
第九阶段、容器技术&CI/CD、DevOps
通过该阶段学习,我们可以使用Docker&K8s打包应用以及依赖包到一个轻量级容器中,方便移植,该阶段还包括其他一系列运维工具的学习
详情地址:https://blog.csdn.net/qq_42082278/article/details/109604106
第十阶段、底层调优与算法深入
底层调优和算法是架构师必备技能之一,有时项目性能瓶颈是要通过底层调优实现的,而一些高级的内核和引擎开发往往是需要一些精良算法才能完成的。
详情地址:https://blog.csdn.net/qq_42082278/article/details/109604129
第十一阶段、大型互联网项目实战和业务解决方案
该阶段会结合真实的大型互联网项目,将前10个阶段学到的内容与该实际业务相结合,根据实际业务进行架构选型,技术选型等
详情地址:https://blog.csdn.net/qq_42082278/article/details/109604167
作业
详细地址:https://blog.csdn.net/qq_42082278/article/details/109700222
-
[拉勾教育-大前端高薪训练营]这可能是迄今为止对大前端最好的解释
2021-03-14 03:40:30前端技术领域发展至今,已经不仅仅是 PC 端浏览器网页的开发这么简单了。现在很流行一个词来形成前端技术领域,叫做大前端。但是,至少到目前为止我个人还没有看到一个对大前端的解释非常不错的。...前端技术领域发展至今,已经不仅仅是 PC 端浏览器网页的开发这么简单了。现在很流行一个词来形成前端技术领域,叫做大前端。但是,至少到目前为止我个人还没有看到一个对大前端的解释非常不错的。不过,接下来的内容我个人觉得是目前我看到对大前端的解释是最好的了。
向服务端进发
众所周知,一个完整的 Web 应用应该包含服务端和客户端两个部分。很多人认为前端程序员更多地是开发客户端这一部分,但现在比较主流的是服务端中的一部分是需要前端程序员进行参与的。
现在前端程序员需要参与到服务端中 MVC 架构的 View 层的开发工作中的,但是这样就会导致服务端开发被割裂开来。为了解决这样的问题,演变出来了一种新的 Web 应用架构。
实际上就是将服务端一分为二,一个是传统的服务端,一个是分裂出来的 BFF。这样演变之后,前端程序员的职责就从单纯的客户端,变成了服务端的 BFF 和客户端了。
什么是 BFF?
BFF 即 Backend For Frontend,也就是服务于前端的后端开发模式。也就是服务端设计 API 时会考虑前端的使用,比如在服务端直接进行业务逻辑的处理、渲染 HTML 页面、合并接口请求和数据缓存等等。
向泛客户端扩展
除了上述这一点以外,再回到客户端。前端领域所涉及到的客户端已经从单纯的 PC 端浏览器网页,扩展到了各种各样的终端形式。PC 端:Web 应用和桌面应用
移动端:Web 应用、App、小程序等
比如各大超级应用推出的小程序这种,首先选择的就是前端技术栈进行开发。换句话讲,目前各种终端的开发主要是依靠前端技术栈进行的。
程序员在未来的发展来看,将来主要会分为云、端以及人工智能三方面的开发,而前端程序员主要就是负责端开发的。
前端到大前端
综上所述,前端技术领域发展到现在被称为大前端,实际上应该在原来的 PC 端浏览器网页应用的基础上,再增加服务端的 BFF 和各种终端。
所以,想要从前端向大前端过渡的话,前端程序员需要从以下三个方面进行提升和扩展:BFF(中间层)开发
泛客户端开发
传统 Web 技术的深入
-
拉勾java工程师高薪训练营
2021-03-06 06:17:21程序计数器:是一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器。程序中的分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器完成。由于多线程是通过线程轮流切换并分配处理器... -
我是如何通过拉勾教育学习《java高薪训练营》课程突破困境的
2020-11-30 20:44:23因为之前一直在拉勾上看招聘信息,所以我一下就想到拉勾做培训那肯定有内推机会啊,学历和专业“双劣势”的我,立马来了精神,开始了解拉勾教育的《java高薪训练营》课程。 课程设计 因为以前也了解过别的课程,所以... -
拉钩教育高薪训练营学习笔记
2021-09-06 18:54:11Tomcat请求处理过程 Tomcat是什么? Tomcat是一个Http服务器(能够接收并且处理Http请求,所以Tomcat是一个Http服务器) ...Servlet接口和Servlet容器这一整套内容叫作Servlet规范。...TomcatSer... -
拉勾教育《产品经理高薪训练营》课程思维导图
2022-03-27 02:33:18 -
大数据开发高薪训练营【课程大纲】.pdf
2021-02-24 21:57:26大数据开发高薪训练营【课程大纲】.pdf -
fed-e-001:大前端高薪训练营 001 期相关资料仓库
2021-04-24 19:32:51大前端高薪训练营 001 期大前端高薪训练营 001 期相关资料点我 点我 点我 :backhand_index_pointing_right:我们会随着学习计划,同步更新此仓库中对应的相关资料。Table of Contents录播部分录播部分代码(移至平台... -
大数据开发高薪训练营2.0.pdf
2021-04-21 17:56:35大数据开发高薪训练营2.0.pdf -
拉勾教育大数据高薪训练营学习心得与笔记(开启属于自己的The Way To God)
2021-11-09 17:09:48二、After The Way To Lagou 1、课程简介 拉勾教育推出的大数据开发高薪训练营,课程内容直击互联网大厂,大公司的大数据所需要用到的知识,整个课程分成了十四个阶段。 作为已经加入拉钩的打工人,给大家展示一下... -
Java工程师高薪训练营2.0.pdf
2021-04-21 17:53:41Java工程师高薪训练营2.0.pdf -
拉勾java高薪训练营
2021-02-12 04:34:4912:48) 消息中间件应用场景2-拉勾案例(时长:08:36) JMS经典模式详解1(时长:18:48) JMS经典模式详解2(时长:20:34) AMQP协议剖析(时长:26:25)*任务二:RabbitMQ架构与实战RabbitMQ逻辑架构(时长:09:47... -
拉钩大数据开发高薪训练营首月体验
2020-08-07 22:33:59拉钩大数据开发高薪训练营首月体验 心得感受–大数据开发高薪训练营 我6月29号参加 大数据开发高薪训练营。 这一个月在拉钩上课真的收获蛮多的。一个月的时间把JAVA得基础整个梳理了一遍。感觉比学校学的还多,还... -
拉钩大数据开发高薪训练营 .rar
2021-04-26 17:31:23大数据+拉勾体系化知识架构 满足企业用人需求 5G时代,大数据势不可挡 -
学习目录-拉钩大前端高薪训练营
2020-11-24 19:03:46平常都看免费课,十块钱的课都不愿买的我,下了血本购买了近万的课程,既然买了就努力学吧。 做个目录方便自己复习。 共8个阶段。 阶段一 阶段二 阶段三 阶段四 阶段五 阶段六 阶段七 阶段八 ...... -
import org.apache.ibatis.executor.statement.StatementHandler; import org.apache.ibatis.plugin.*; import java.sql.Connection; import java.util.Properties;... @Signature(type= StatementHandler.class,//...