Maven MavenMaven的本质是项目管理工具 将项目开发和管理过程抽象成一个项目对象模型(POM)Maven的作用:项目构建:提供标准的、跨平台的自动化项目构建方式依赖管理:方便快捷的管理项目依赖的资源(jar包) 避免资源间的版本冲突问题统一开发结构:提供标准的 统一的项目结构基础概念仓库:用于存储资源,包含各种jar包仓库分类:本地仓库:自己电脑上存储资源的仓库 连接远程仓库获取资源远程仓库:非本机电脑上的仓库 为本地仓库提供资源中央仓库:Maven团队维护 存储所有资源的仓
Spring5 Spring5Spring入门Spring安装下载地址https://repo.spring.io/ui/repos/tree/General/release%2Forg%2Fspringframework%2Fspring%2F5.2.6.RELEASE将jar包导入到工程 其中4个是Spring的核心包 在下载文件的lib目录下Spring入门如何使用Spring创建一个对象?创建一个Bean在这里我创建了一个User类public class User { pu
垃圾回收器 垃圾回收器垃圾回收器概述垃圾收集器没有在规范中进行过多的规定,可以由不同的厂商、不同版本的JVM来实现。由于JDK的版本处于高速迭代过程中,因此Java发展至今已经衍生了众多的GC版本。从不同角度分析垃圾收集器,可以将GC分为不同的类型。Java不同版本新特性语法层面:Lambda表达式、switch、自动拆箱装箱、enum、泛型API层面:Stream API、新的日期时间、Optional、String、集合框架底层优化:JVM优化、GC的变化、元空间、静态域、字符串常量池等垃
字符串常量池 字符串常量池String的基本特性String被声明为final的,不可被继承String实现了Serializable接口:表示字符串是支持序列化的。实现了Comparable接口:表示String可以比较大小String在jdk8及以前内部定义了final char value[]用于存储字符串数据。JDK9时改为byte[]String:代表不可变的字符序列。简称:不可变性。当对字符串重新赋值时,需要重写指定内存区域赋值,不能使用原有的value进行赋值。当对现有的字符
JVM执行引擎 执行引擎概述执行引擎是Java虚拟机核心的组成部分之一。“虚拟机”是一个相对于“物理机”的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器、缓存、指令集和操作系统层面上的,而虚拟机的执行引擎则是由软件自行实现的,因此可以不受物理条件制约地定制指令集与执行引擎的结构体系,能够执行那些不被硬件直接支持的指令集格式。JVM的主要任务是负责装载字节码到其内部,但字节码并不能够直接运行在操作系统之上,因为字节码指令并非等价于本地机器指令,它内部包含的仅仅只是一些能够被JVM所识别
对象实例化内存布局与访问定位 对象实例化内存布局与访问定位创建对象的方式new:最常见的方式、单例类中调用getInstance的静态类方法,XXXFactory的静态方法Class的newInstance方法:在JDK9里面被标记为过时的方法,因为只能调用空参构造器,并且权限必须为 publicConstructor的newInstance(Xxxx):反射的方式,可以调用空参的,或者带参的构造器使用clone():不调用任何的构造器,要求当前的类需要实现Cloneable接口中的clone方法使用序列化:从文件中,从
运行时数据区之堆 堆概述堆与进程:堆针对一个JVM进程来说是唯一的。也就是一个进程只有一个JVM实例,一个JVM实例中就有一个运行时数据区,一个运行时数据区只有一个堆和一个方法区。但是进程包含多个线程,他们是共享同一堆空间的。堆的特点:一个JVM实例只存在一个堆内存,堆也是Java内存管理的核心区域。Java堆区在JVM启动的时候即被创建,其空间大小也就确定了,堆是JVM管理的最大一块内存空间,并且堆内存的大小是可以调节的。《Java虚拟机规范》规定,堆可以处于物理上不连续的内存空间中,但在逻辑上它应该
运行时数据区之虚拟机栈 虚拟机栈由于跨平台的设计 Java的指令都是根据栈来设计的 不同平台CPU架构不同 所以不能设计为基于寄存器的优点是跨平台 指令集小 编译器容易实现缺点是性能下降 实现同样的功能需要更多的指令栈是运行时的单位 而堆是存储的单位栈解决程序的运行问题 即程序如何执行 或者说如何处理数据(一般只有局部变量 基础数据类型 对象引用存在栈中)堆解决的是数据存储的问题 即数据怎么放、放在哪儿虚拟机栈是什么?早期也叫Java栈 每个线程创建时都会创建一个虚拟机栈 其内部保存一个个的栈帧 对应一次次的Java
运行时数据区 运行时数据区内存是非常重要的资源 是硬盘和CPU的中间仓库及桥梁 承载着操作系统和应用程序的实时运行 JVM内存布局规定了Java在运行过程种内存申请、分配、管理的策略 保证了JVM的高效稳定运行 不同的JVM对内存的划分方式和管理机制存在着部分差异方法区和堆 与进程对应(多个线程共享)程序计数器 本地方法栈 虚拟机栈 与线程对应(单独线程私有)若有5个线程 则它们的程序计数器 本地方法栈 虚拟机栈相互独立 但共享方法区和堆程序计数器 (PC寄存器)程序计数器(Program Counter
类加载器子系统 解析.class文件 javap -v xxxxx.class或IDEA安装jclasslib插件类加载器子系统类加载器以及加载过程类加载器子系统负责从文件系统或网络中加载Class文件 class文件在文件开头有特定的文件标识ClassLoader只负责class文件的加载 至于是否可以运行 则由执行引擎决定加载的类信息存放于一块称为方法区的内存空间 除了类的信息外 方法区中还会存放运行时常量池信息 可能还包括字符串字面量和数字常量加载 Loading通过一个类的全限类名获取
JVM虚拟机 虚拟机家族Sun Classic世界上第一款商用Java虚拟机只能用纯解释器的方式来执行Java代码如果使用JIT编译器 需要进行外挂JDK1.2之前唯一的虚拟机 在JDK1.4被淘汰基于句柄的对象查找方式Exact VM命运短,只在Solaris平台短暂使用具备高性能虚拟机雏形 如热点探测 编译器与解释器混合工作准确式内存管理 虚拟机知道内存中的某个位置的数据具体是什么类型 是垃圾收集时准确判断堆上的数据是否有可能被使用的前提HotSpot VM目前拥有绝对的市场地位提
javaweb xmlxml介绍xml是可扩展的标记性语言xml的主要作用:用来保存数据,而且这些数据具有自我描述性它还可以作为项目或者模块的配置文件还可以作为网络传输数据的格式(现在主要是JSON)xml元素是指从开始标签到结束标签的部分 元素可以包含其他元素、文本或者两者的混合物 元素也可以拥有属性xml属性可以提供元素的额外信息早期解析技术:DOM和Sax语法<?xml version="1.0" encoding="utf-8" ?><!--以上内容就是xml声明 ve
JDBC JDBCJDBC程序步骤导入java.sql包加载MySQL驱动创建Connection对象 建立和数据库的连接创建Statement对象 操作数据库 增删改查创建ResultSet对象 获取查询结果集关闭Statement对象 关闭Connection对象建立和数据库的连接方式一 public void testConnection() throws SQLException { // 加载驱动 Driver driver = new com.
反射 反射反射机制允许程序在执行期间借助于Reflection API取得任何类的内部信息 并能操作对象的属性一级方法 反射在设计模式和框架底层都会用到加载完类之后 在堆中就会产生一个Class类型的对象(一个类只有一个Class对象) 这个对象包含了类的完整结构信息 通过这个对象得到类的结构 这个对象就像一面镜子 透过这个镜子看到类的结构 所以称为反射反射机制可以完成:在运行时判断任意一个对象所属的类在运行时构造任意一个类的对象在运行时得到任意一个类所具有的成员变量和方法在运行时调用任意一个对
网络编程基础 端口用于标识计算机上某个特定的网络程序以整数的形式,端口范围 0 ~ 2^16-10 ~ 1024端口已经被占用 如 ssh: 22 ftp: 21 smtp: 25 http: 80常见的网络端口号:tomcat:8080mysql:3306oracle:1521sqlserver:1433网络协议网络传输数据的组织形式TCP/IP 传输控制协议 因特网互联协议TCP和UDP的区别:TCP协议:使用TCP协议之前 必须先建立TCP连接 形成传输数据通道传输前 采用“
文件io基础 文件流:数据在数据源(文件)和程序(内存)之间经历的路径输入流:数据从数据源(文件)到程序(内存)的路径输出流:数据从程序(内存)到数据源(文件)的路径创建文件new File(String pathname) //根据路径构建一个File对象public void create01() { String filePath = "d:\\demo01.txt"; File file = new File(filePath); try { file.c
多线程初级 线程创建继承Thread类(重点)实现Runnable接口(重点)实现Callable接口(了解,以后重点)继承Thread类自定义线程类继承Thread类重写run()方,编写线程执行体创建线程对象,调用start()方法启动线程// 创建线程方式: 继承Thread类 重写run()方法 调用start开启线程public class TestThread1 extends Thread{ @Override public void run() {
代码块和final关键字 代码块package com.chenxiii.codeblock;public class CodeBlockDemo01 { public static void main(String[] args) { Person person1 = new Person(); Person person2 = new Person(); }}class Person { { System.out.println("非静态代码块被
MySQL 1. 初识MySQL关系型数据库:(SQL)MySQL Oracle Sql Server DB2 SQLite通过表和表之间 行和列直接按的关系进行数据的存储,学员信息表…非关系型数据库:(NoSQL Not only SQL)Redis MongDB对象存储,通过对象自身的属性来决定DBMS:数据库管理系统数据库的管理软件科学有效的管理我们的数据。维护和获取数据。MySQL 数据库管理系统,存数据,操作数据MySQL简介MySQL是一个关系型数据库管理系统,由瑞典My
Java中String的注意事项 String s1 = "hello"; String s2 = "world"; String s3 = "helloworld"; String s4 = "hello" + "world"; String s5 = s1+"world"; String s6 = "hello"+s2; String s7 = s1 + s2; System.out.println(s3 =...