- 博客(39)
- 收藏
- 关注
原创 Spring Bean的创建过程
大体分为实例化(Instantiation)和初始化(initialization)实例化:是对象创建的过程。比如使用构造方法new对象,为对象在内存中分配空间。初始化:是为对象中的属性赋值的过程通过xml或者注解获得beanDifination,存入mapBeanPostProcessor接口 可以通过其中的after和before方法对bean对象进行操作spring中有非常多类或接口继承实现了这个BeanPostProcessor接口。前置处理器作...
2021-12-15 11:30:21
517
原创 Spring创建Bean的几种方式
配置类public class Test { public static void main(String[] args) {//1.定义配置类 AnnotationConfigApplicationContext annotationConfigApplicationContext = new AnnotationConfigApplicationContext();//2.把Config定义为配置类 annotationConfigApplicatio.
2021-12-09 13:30:17
674
原创 Spring Bean对象初始化
通过xml文件把每个bean的信息加载成BeanDefinition其储存了bean对应对象的各种属性。包括bean类型,init方法,factory方法等等。再讲这些BeanDefinition储存进map集合,key为类的名字(首字母小写,驼峰法),val为BeanDefinition对象。在动态代理(jdk或者cligb)创建实体对象之前,先查看有没有带有@Component注解的类实现了BeanFactoryPostProcessor接口,如果有,可以在此类重新定义bea
2021-12-08 18:01:25
299
原创 创建springboot项目时无法访问spring.io
方法一手动进入spring.io中的project中的springboot中自行配置然后下载到本地。在idea中File-Project Structure.. -Modules - + - import Module ,导入下载好的spring结构。配置jdk。方法二用https://start.aliyun.com替换原外网地址。方法三maven项目纯手动配置pom文件,再创建引导类。具体方法可看springboot官方文档。...
2021-11-16 10:39:00
492
原创 servlet
servlet是一个接口,GenericServlet实现了servlet中的四个方法,service方法除外。目的是让子类实现。其中,有获取参数,Servlet名字,配置,上下文等方法。/* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved. * * The conte
2021-11-03 21:28:41
64
原创 JavaScript
数据类型ES6之前:undefined;Null;Boolean;number;String;Object;新增:symbol;bigInt;<!DOCTYPE html><html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body>
2021-10-21 22:28:20
64
原创 html+CSS+JavaScript
HTML基本标签<!DOCTYPE html><hml lang="en"> <head> <meta charset="UTF-8"> <title>这是title</title> <a>这是a标签</a> <title>1234asdadadad</title><!-- -------------------------li
2021-10-21 21:16:35
285
原创 软件项目管理 内容梳理
|——合同管理 |——甲方乙方合同的特点 |——制定合同注意事项|——项目管理框架 |——可完成的》可复制的》可管理的》可优化的|——项目初始化分析 |——编写项目计划 |——功能性,可靠性,易使用性,高效性,可维护性,可移植性 1 判断哪些质量标准适用于项目。 2 决定哪些工作需要被重点跟踪,建...
2021-10-14 22:22:18
252
原创 Oracle 语句
建表——形式————create table 表名( 列名 数据类型 列级约束 列名 数据类型 列级约束 ... );——数据类型————number,varchar2(),date,blob,clob,char——约束类型————主键约束 primary key() ,表级约束方法 或 ...
2021-10-14 17:16:39
70
原创 Java线程的各种状态及其转换
线程的六种状态NEW线程在new创建之后但还未start()时,是new状态。Runable调用start()方法后,线程进入runable状态,其中,runable又包括Ready和Running两个状态。Ready就绪状态,等待cpu调度。Running当就绪的线程被cpu选中开始运行的时候进入Running状态。Blocked阻塞状态,受线程同步限制的,未获得锁的线程对象进入Blocked状态。Waiting 1——受syngnoi...
2021-10-12 19:25:40
127
原创 Java子类继承父类私有方法
在Java继承关系中,子类其实继承了父类的全部方法和属性,只是没有权限访问父类的私有成员。import java.lang.reflect.AccessibleObject;import java.lang.reflect.Method;class Father{ private String name = "father"; public Father(){} private void sout(){ System.out.println("fath
2021-10-12 17:12:04
3754
原创 gitee 操作小结
1.git init在所需目录下创建本地git仓库2.配置本地git库git config --global user.name "用户名"git config --global user.email "邮箱地址"3.git add *将当前目录所有文件添加到下一步操作4.git commit -m"更新说明"将所选文件提交到本地git库5.本地git库与云端库建立连接git remote add origin云端库地址6.将云端代码更新到库中git p.
2021-10-12 15:36:23
70
原创 Java进阶 垃圾收集器
垃圾回收步骤在垃圾回收过程中,新生代回收分以下几个步骤:1。找到GC root(具体搜索可达性分析算法)。2. 找到GC root直接或间接引用的所有对象。3. 标记所有以上对象。4. STW,暂停所有线程,对未标记的对象进行垃圾回收。其中,最耗时的操作是2,4。SerialParNewParallel ScavengeSerial Old和Parallel OldCMCCMC收集器是一款真正意义上的边污染边治理...
2021-09-30 12:02:02
105
原创 Java进阶 HashMap原理
jdk7 HashMap实现原理 数组加链表。先确定数组下标,下标相同再用链表连接。创建 在HashMap<> hash = new hashMap()之后,如果使用无参构造器创建,数组默认大小是16,也就是2的四次方。扩容阈值默认是0.75。当数组容量达到 数组长度乘以阈值 , 数组扩容为原来的两倍。put方法的实现过程 调用put(key,value)方法, 源码进行hash(key)方法,获得一...
2021-09-29 17:31:48
89
原创 java 垃圾回收——分代回收
回收算法标记——清除算法。缺点:回收后会产生“内存碎片”。标记——整理算法。在标记清楚算法的基础上对回收后的内存空间进行整理(对回收后的内存空间进行整理),减少“内存碎片”,节省空间。复制算法。缺点:需要预留出一半的内存空间,极度浪费内存。回收机制在新生的虚拟机以及商用虚拟机中一般采用多种算法结合的方式进行垃圾回收。分代回收内存分为年轻代和老年代。年轻代又分为Eden(伊甸园)代和Survivor(幸存)代。幸存代分为from区和...
2021-09-29 11:01:12
861
原创 JVM 4 方法区
Java虚拟机有一个在所有JavaVirtualMachine线程之间共享的方法区域,该方法区域类似于用于编译常规语言代码的存储区域,或类似于操作系统进程中的“文本”段。它存储每个类的结构,例如运行时常量池、字段和方法数据,以及方法和构造函数的代码,包括类和实例初始化和接口初始化中使用的特殊方法(2.9)。本规范没有规定方法区域的位置或用于管理编译代码的策略,方法区域可以是固定大小的,也可以根据计算的要求进行扩展,如果不需要更大的方法区域,则可能会收缩。方法区域的内存不需要是连续的。Java虚拟机实现可以
2021-09-25 18:05:21
82
原创 JVM 3 堆
堆 Heap通过new关键字创建的对象都要使用堆。堆中容易出现线程安全问题。堆中有垃圾回收机制。堆内存溢出Java.lang.OutOfMemoryError : Java heap spaceimport java.util.ArrayList;public class T { static int wu,tu = 0; public static void main(String[] args) { ArrayList<Obje
2021-09-25 16:58:37
69
原创 JVM 2.3 本地方法栈
本地方法就是被native修饰的方法。(6条消息) Java的native方法是什么_itmrchen的博客-CSDN博客_native方法是什么意思
2021-09-25 16:07:13
99
原创 JVM 2.2 栈
Java Virtual Machine Stacks(Java虚拟机栈)栈的本质 线程运行时的需要的内存空间栈的结构栈。栈帧 每个方法运行时需要的内存。如用来储存参数,局部变量和返回地址等。 比如方法1对应栈帧1,当方法1中调用方法2,此时栈帧2会被压入栈中,方法2调用方法3,栈帧3又入栈。 方法执行完就出栈,出栈顺序是 3先出, 2再出, 1最后。活动栈帧: 每个栈中正在执行的方法对应的栈帧...
2021-09-25 15:41:14
51
原创 JVM 2.1 程序计数器
Program Counter Register程序计数器(寄存器)。程序计数器作用 如图最上放代码,PrintStream out = System.out; 代码所对应的二进制字节码为0和3,当解释器执行了0,此时程序计数器储存的值变为3,以便记录下一步需要执行字节码的位置。 JVM的此功能本质上通过寄存器实现。...
2021-09-25 14:58:02
52
原创 JVM基础 第一篇 概述
JVM的优点:1.实现write once,run anywhere2.自动垃圾回收3.数组下标越界检查4.多态比较:JVM JRE JDKJVM:java虚拟机JRE:java运行时环境java编译过程java源码被编译成java二进制码。再通过类加载器(classloader)加载到JVM。方法区加载类,堆区存放实例对象,实例对象在调用类中方法时,用到虚拟机栈和程序计数器以及本地方法栈。对象中的方法中的代码,由解释器逐行执行。方..
2021-09-25 14:40:49
82
原创 Java 判断字符串是不是数字
1.遍历匹配public class Test { public static void main(String[] args) throws InterruptedException { String s = "123456"; System.out.println(isNumber(s)); } public static boolean isNumber(String s){ String number = "123456
2021-09-23 20:06:02
99
原创 Thread构造器
Thread共8个构造器。 Thread() 分配一个新的 Thread对象。 Thread(Runnabletarget) 分配一个新的 Thread对象。 Thread(Runnabletarget, Stringname) 分配一个新的 Thread对象。 Thread(Stringname) 分配一个新的 Thread对象。 Thread(ThreadGrou...
2021-09-22 15:09:44
279
原创 try finally返回值问题
public class Test{ public static void main(String[] args){ System.out.println(A.a()); } public static Object a(){ int a = 0; try{ a++; return a; }finally { .
2021-09-22 15:01:42
92
原创 重写compare
compare方法中,object1代表当前对象,object2代表与当前对象进行比较的对象。当向Set集合中新添加一个元素的时候,这个元素会和之前集合里面的所有元素进行比较,从而选择插入的位置。compare方法的返回值是int类型。例如”return o1 - o2“,返回一个正数,表示o1比o2大,把o1排在o2后面。返回负数相反。返回0,表示无所谓。实例:import java.util.Comparator;import java.util.TreeSet;//.
2021-09-18 18:04:08
2554
原创 重写CompareTo
CompareTo( Object o )compare默认被当前对象调用,比较属性时可以用this.调用,而这个参数 Object o 代表前一个对象。当向Set集合中新添加一个元素的时候,这个元素会和之前集合里面的所有元素进行比较,从而选择插入的位置。compareTo方法的返回值是int类型,例如,当” this.属性 - o.属性 “返回一个正数,表示this比o大,把this排在o后面。返回负数相反。返回0,表示无所谓。以下的例子,把Teacher类的对象先按...
2021-09-18 17:22:55
3254
1
原创 重写hashCode和equals
import java.util.HashSet;public class Demo { int age; String name; public Demo(int age,String name){ this.age = age; this.name = name; } @Override public String toString() { //重写toString.
2021-09-18 15:33:55
137
原创 Java基础 内部类
内部类的分类成员内部类静态内部类局部内部类匿名内部类如图,在A类中声明了另一个B类,B类就是一个内部类。class A{ class B{ }}在内部类中不能定义静态属性和方法。成员内部类内部类访问外部类属性和方法class A{ private String name = "A的名字"; private static int age = 1; public void a(){ System.out
2021-09-16 20:25:16
125
原创 Java基础 interface 接口
interface是一种引用类型,称为接口。这里的A就是一个接口。如图,接口中的方法,默认全都被public abstract修饰,全都是抽象方法。接口也默认被abstract修饰,它是抽象的。默认的关键字可以不写。如图,接口中的属性默认被public static final修饰。jdk 8 中可以在接口中编写默认方法(default,为了减少后续维护和更新中代码量庞大的问题引入)和静态方法。jdk 9 中可以在接口中编写私有方法。(我这里是jdk 8)abstrac..
2021-09-16 16:28:31
168
原创 Java基础 abstract抽象
abstract可以修饰的内容:方法,类。abstract class Person{ public abstract void method();}规则:abstract修饰的方法不能有方法体,也就是{}。如果一个类中存在抽象方法,那么这个类必须声明为抽象类。抽象类中可以有非抽象方法。抽象类可以被子类继承,但不能有实例化对象。继承了抽象类的子类,可以选择实现与否父类中的抽象方法,如果没有实现父类所有的抽象方法,那么这个子类也要把自己声明为抽象类,直到抽象方法被全.
2021-09-16 15:46:05
60
原创 Java基础 final关键字
final可以修饰的内容:属性,,方法,类final修饰属性final修饰的属性只能赋值一次,且不会在对象初始化的时候赋默认值,需要主动赋值。class Student { private String name; private final int age = 20; public void change(){ age = 3; //报错,已经对final赋值,不可再次赋值 }}final修饰方法final修饰的方
2021-09-16 15:28:59
46
原创 Java基础 static关键字
static可修饰的内容:属性,方法,代码块。class Student{ private String name; private static int age; //修饰属性 public static void action(){ //修饰方法 System.out.println("学生爱摸????"); } static { //修饰代码块 age
2021-09-16 15:13:15
76
原创 Java基础 instanceof 和 对象转型
class Test{ public static void main(String[] args) { Person p = new Student(); //向上转型,Student对象转为Person对象 A a = new A(); a.see(p); }}class Person{ public void like(){ }}class Student extends Person{ .
2021-09-15 20:00:43
88
原创 Java基础 构造器中调用此类其他构造器
class Test{ public static void main(String[] args) { student s = new student(); }}class student{ String name; int age; int id; public student(){ this(1); //进入一个参数构造器 .
2021-09-15 19:44:47
100
原创 Java基础 创建对象的过程中,虚拟机的操作
class Test{ public static void main(String[] args) { student s = new student(); //这个语句执行过程中,虚拟机进行了两个操作 // 第一,给对象s分配内存 // 第二,对象s中name,age属性进行初始化操作,如果没有赋值语句,属性都是此数据类型的默认值 }}class student{ String name; i.
2021-09-15 19:33:57
59
原创 Java 方法重载
Java中方法重载发生在同一个类中,方法重载的要求是:1.方法的名称必须相同。2.方法的参数类型,个数,顺序必须不同。3.方法的返回值类型,异常范围,修饰符这些没有要求。(一般都是相同的。)class A{ public void a(){ } public void a(int i,String s){ } public void a(String s,int i){ } public void a(S
2021-09-15 15:12:51
63
原创 Java继承中,子类对象初始化调用父类无参构造器
class Animal { Animal(){ System.out.println("调用父类无参构造器"); } Animal(int i){ System.out.println("调用父类有参构造器"); }}class Cat extends Animal{ Cat(){ System.out.println("调用子类无参构造器"); } Cat(int i){.
2021-09-15 15:03:22
506
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人