自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(68)
  • 收藏
  • 关注

原创 Java类加载机制

3. 类的加载由类加载器完成的,类加载器包括:根加载器(BootStrap)、扩展加载器(Extension)、系统加载器(System)和用户自定义类加载器(java.lang.ClassLoader的子类)。1. JVM中类的装载是由类加载器(ClassLoader)和它的子类来实现的,Java中的类加载器是一个重要的Java运行时系统组件,它负责在运行时查找和装入类文件中的类。Extension:从java.ext.dirs 系统属性所指定的目录中加载类库,它的父加载器是Bootstrap;

2023-10-07 20:21:59 192

原创 Java面试题异常相关

在try代码块中,包含可能发生异常的代码,一旦发生异常,则抛出异常对象,会进入catch代码块,一个try块之后可以有多个catch子句,try-catch块也能嵌套。每个catch块必须接收一个(且仅有一个)代表异常类型的异常对象参数,若try中抛出的异常和catch接收的异常类型一致,则进入对应的catch代码块。3、两者都是消极处理异常的方式,只是抛出或者可能抛出异常,但是不会由函数去处理异常,真正的处理异常由函数的上层调用处理。throw语句用在方法体内,表示抛出异常对象,由方法体内的语句处理。

2023-10-04 16:17:05 273

原创 Java面试题整理面向对象

如果将对象的方法是为对象向外界提供的服务,那么运行时的多态性可以解释为:当A系统访问B系统提供的服务时,B系统有多种提供服务的方式,但一切对A系统来说都是透明的(就像电动剃须刀是A系统,它的供电系统是B系统,B系统可以使用电池供电或者用交流电,甚至还有可能是太阳能,A系统只会通过B类对象调用供电的方法,但并不知道供电系统的底层实现是什么,究竟通过何种方式获得了动力)。得到继承信息的类被称为子类(派生类)。对象造型(父类的引用指向子类的对象,这样同样的引用调用同样的方法会根据子类对象的不同而表现不同的行为)

2023-09-26 20:29:34 302

原创 悲观锁和乐观锁

3、对变量进行修改的时候,先对比一下最后一次修改的时间戳是否发生变化了,如果没发生变化,修改变量的值,如果变化了,重复以上流程;乐观锁的思想是使用CAS(compareAndSwapper)机制,不上锁,但也能解决并发问题;悲观锁的思想对线程并发持悲观态度,使用互斥锁的机制来解决并发问题;1、先查询一下变量的值以及它的最后一次修改的时间戳;最后一次修改的时间戳或者版本号;2、在本地修改变量的值;

2023-09-21 10:09:40 143

原创 多线程并发或线程安全问题如何解决

锁(任意对象)来实现线程同步,自动锁的思想,底层实现原理:当又线程进入同步代码快之后,利用jvm的计数器将锁的标记位置为1,当别的线程再想进入的时候,发现锁的标记为1,该线程就去锁池等待,当第一个线程出来之后,锁的标记会置为0,之后cpu会随机分配一个线程再次进入同步代码块。关键字修饰变量,可以实现线程之间的可见性,避免变量脏读的出现,底层是通过限制jvm指令的重新排序实现的,适用于一个线程修改,多个线程读的场景。6、使用线程池来创建和管理线程,也可以一定程度上解决并发问题。来修饰变量,可以解决并发问题。

2023-09-21 08:50:31 363

原创 Spring中的常用注解

Controller 或 @RestController。

2023-09-21 08:38:20 44

原创 线程的生命周期

当cpu分配到了时间片之后,线程开始运行,运行run方法当中的内容,进入。start() 方法的时候,线程等待cpu分配时间片,进入到。当休眠时间到期,或者被notify/nitifyAll了,线程又回到。当线程遇到sleep,wait等方法的时候,线程会进入。,就会销毁,被jvm的gc回收。new 一个线程的时候处于。线程运行结束之后,处于。

2023-09-21 08:35:17 53

转载 java创建线程的几种方式

1.创建一个继承Thread的子类(便于写入线程的执行方法)2.重写Thread中的run()方法(作为线程的执行方法)3.在使用时创建第一步时子类的实例对象。4.调用该实例对象的start()方法。一、继承Thread类。一、继承Thread类。

2023-09-21 08:29:35 66

原创 进程和线程有什么区别

2、进程有自己的独立地址空间,每启动一个进程,系统就会为它分配地址空间。而线程是共享进程中的数据的,使用相同的地址空间,因此CPU切换一个线程的花费远比进程要小很多,同时创建一个线程的开销也比进程小很多。3、线程之间的通信更方便,同一进程小的线程共享全局变量、静态变量等数据,而进程之间的通信需要以通信的方式(IPC)进行。1、进程时资源分配的最小单位,线程是程序执行的最小单位。

2023-09-21 01:00:58 50

原创 ArrayList和LinkedList的区别

2、随机访问效率:ArrayList 比 LinkedList在随机访问的时候效率要高,因为 LinkList 是线性的数据存储方式,所以需要移动指针从前往后依次查找。3、增加和删除效率:在非首尾的增加和删除操作,LinkList 要比 ArrayList效率高,因为ArrayList增删操作要影响数组内的其他数据的下标。综合来说,在需要频繁读取集合中的元素时,更推荐使用ArrayList,而在插入和删除操作多时,更推荐使用LinkedList。2、二者都是线程不安全,效率高。

2023-09-21 00:51:26 70

原创 Java中的集合

LinkedHashMap:底层hashmap+linkList实现,通过hashmap实现key-value键值对存储,通过链表实现元素有序。HashSet:底层实现hashMap,数组+链表实现,不允许元素重复,无序。Vector:底层实现是数组,查询快,增删慢,线程安全,效率低;ArrayList:底层实现是数组,查询快,增删慢,线程不安全,效率高;LinkList:底层实现是链表,增删快,查询慢,线程不安全,效率高;Set 接口的特点:元素唯一,不可重复,无序。

2023-09-21 00:38:35 70

原创 抽象类和接口的区别

抽象类中可以有普通方法,必须有抽象方法,可以有成员变量,不可以被实例化;,不可以被实例化,接口可以看作一个特殊的抽象类。接口中只能有抽象方法,不能有普通方法,中新增了接口中可以存在。

2023-09-21 00:21:44 36

原创 Spring自动配置原理

一、前言一、前言在传统的SSM框架集成中,需要编写大量的XML配置文件,比如继承Mybatis时,需要编写mybatis_config.xml文件,在集成springmvc时,需要编写springmvc.xml文件,这些配置十分繁琐,还很容易出现错误,导致开发效率低。而Spring Boot采用约定大于配置的思想,将大量的spring配置文件集成到Spring Boot的内部,帮助开发人员自动配置各类XML文件,极大的简化了开发过程。二、自动配置原理。

2023-09-21 00:01:12 379 2

原创 SpringBoot特点

Spring Boot 主要目标是:

2023-09-20 21:16:41 85

原创 maven常用命令

mvn clean install -Dmaven.test.skip=true -- 跳过单测打包,并把打好的包上传到本地仓库。mvn help:active-profiles //查看当前激活的profiles。mvn -Dmaven.test.skip=true //忽略测试文档编译。mvn help:all-profiles //查看所有profiles。mvn help:effective -pom //查看完整的pom信息。mvn test-compile //编译测试代码。

2023-09-20 21:02:03 350

原创 Maven的打包方式

maven-resources-plugin(资源插件),maven-compiler-plugin(编译项目),maven-jar-plugin(将项目打成jar包),maven-assembly-plugin(将所有依赖打成jar包)。打war时需要maven-resource-plugin(资源插件),maven-compiler-plugin(编译项目),maven-war-plugin插件。打包可以根据打包类型简单划分为:jar包、war包。

2023-09-20 20:58:30 136

原创 简述什么是Maven

maven会自动调用项目中使用 junit (开源的java单元测试框架)写的单元测试。Maven是最流行的自动化构建工具,用来对java项目进行依赖管理和项目构建。项目-------依赖----------》spring.jar。项目中需要jar包,maven可以帮助我们下载、管理jar包。:war、jar、pom(聚合工程,一般作为父母工程):把java源码编译为字节码文件(class)。:把之前编译的class文件删除。

2023-09-20 19:49:15 174

原创 Java面试题整理常用类部分

而String str = new String("i");:String是长度不可变字符串,StringBuffer 和 StringBuilder 是长度可变的字符串,维护一个缓冲区。:输出一个新的字符串,它是此字符串的子串,形如substring(3,7);intern()方法会首先从常量池中查找是否存在该常量值,如果常量池中不存在则现在常量池中创建,如果已经存在则直接返回。三、String str = "i" 与 String str = new String("i")一样吗。

2023-09-19 21:06:58 218

原创 Java面试题整理Java基础部分

一、JDK和JRE有什么区别一、JDK和JRE有什么区别JDK:Java Development Kit的简称,Java开发工具包,提供了Java的开发环境和运行环境。JRE:Java Runtime Environment的简称,Java运行环境,为了Java的运行提供了所需环境。具体来说JDK其实包含了编译Java源码的编译器Javac,还包含了很多Java程序调试和分析的工具。简单来说,如果你需要运行Java程序,只需要安装JRE就可以了,如果你需要编写Java程序,需要安装JDK。

2023-09-19 20:07:38 251

原创 pageHelper插件及其依赖包jsqlparser的Jar包下载

SSM系列教材 (三)- PageHelper (how2j.cn)

2023-08-06 12:39:34 314

原创 Spring的AutoWrite自动装配

通过寻找bean的class和参数类型一致的bean来完成自动装配(不可重复),且只能自动装配一个(多个将报异常),如代码中所示,需要setUserDao中的参数类型和bean标签中的class的类型一致才可以正常装配,装配失败则会报空指针异常。通过寻找bean的id和参数名称一致的依赖对象的bean来完成自动装配,如代码中所示,需要setUserDao中的参数和bean标签中的id的名称一致才可以正常装配,装配失败则会报空指针异常。通过构造器来完成注入,需要设置好需要注入的类的构造器。

2023-08-02 15:05:17 709

原创 Spring的注入

需要再实体类中添加对应属性的set方法才可以使用,使用<property>标签来标记注入的属性标签中的name为实体类中的属性名,value为属性的值1.2 通过构造方法进行注入需要包含该属性的构造方法才可以使用<constructor-arg>标签来标记要注入的属性标签中的name为实体类中的属性名,value为属性的值二、数组的注入数组注入时要使用<array>标签来标记注入的值,值要用<value>标签来标记3.1 List注入。

2023-08-02 13:52:32 718

原创 HTTPS工作原理

服务端用私钥解密后,得到了客户端传过来的随机值(私钥),然后把内容通过该值进行对称加密,所谓对称加密就是将信息和私钥通过某种算法混合在一起,这样除非知道私钥,不然无法获取内容,而正好客户端和服务端都知道这个私钥,所以只要加密算法够彪悍,私钥够复杂,数据就够安全。而使用公钥和私钥不太理解,可以想象成一把钥匙和一个锁头,只是全世界只有你一个人又这把要是,你可以把锁头给别人,别人可以用这个锁把重要的东西锁起来,然后发给你,因为只有你一个人有这把要是,所以只有你才能看到这被锁锁起来的东西。七、传输加密后的信息。

2023-07-23 21:07:46 450

原创 HTTP和HTTPS的区别

一、两者概念一、两者概念1.1 HTTP概念HTTP 的全称是超文本传输协议是一种用于分布式、协作式和超媒体信息系统的应用协议,简单来说就是一种分布和接收HTML页面的方法,被用于在Web浏览器和网站服务器之间传递信息。HTTP 默认工作在TCP协议80端口,用户访问网站http://打头丶都是标准的HTTP服务。HTTP 协议以明文方式发送内容,不提供任何方式的数据加密。

2023-07-22 13:22:49 3302

原创 JVM内存结构

再方法栈中会存放编译期可知的各种基本数据类型(boolean、byte、char、short、int、float、long、double)、对象引用(reference类型,它不等同于对象本身。局部变量表所需的内存空间在编译期间完成分配,当进入一个方法时,这个方法需要在帧中分配多大的局部变量空间时完全确定的,在方法运行期间不会改变局部变量表的大小)方法区与Java堆一样,是各个线程共享的内存区域,它用于存储已经被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。1.1.2 控制参数。

2023-07-14 10:45:23 126

原创 前端学习HTML

action属性是设置form的跳转地址,method属性是设置form的提交方式。按钮:<input type="button" value="按钮"/>表单:<form action="" method="">例如:登录和注册时,表单提交的位置是否相同?这边我使用的是HBuilder X,拥有自带页面布局。表单是在客户端采集用户信息的主要手段。10.3 form的常用属性。十、表单标签<form>表示表单提交的URL地址。11.4 value属性。10.1 表单标签的作用。数据采集的接收处理的对象。

2023-07-11 19:34:47 618

原创 jQuery框架

let stuArr = [{'sid':1,'sname':'闫凯','ssex':'1','score':0},{},{}];在jQuery中将HTML中事件都封装成了一系统的事件方法。三、如何在HTML页面中使用jQuery框架。还需要在HTML页面中导入相应的js文件。jQuery是一个封装了JS脚本的框架。在jQuery中封装了一系列的方法。.min.js 这是压缩的版本。也就是说是已经写好的JS代码。核心方法: jquery();四、jQuery的核心方法。五、jQuery中事件方法。

2023-04-05 21:18:11 2323

原创 入门JAVA第十八天MyBatis技术

MyBatis框架已经将JDBC的代码进行封装了。我们使用MyBatis框架时,已经不用再写JDBC的代码。就是之前程序员写好的一系列的代码。使用这个框架可以更快进行我们的开发。MyBatis是一个持久化框架。是一个基于ORM的持久化框架。使用时只需要将一些参数设置给MyBatis框架就可以使用。数据从 临时状态 与 持久状态 之间进行转换的过程。是一个封装JDBC的基于ORM的持久化框架。2.1 创建Java工程并导入相关依赖jar。数据保存在内存中就是临时状态。数据保存在硬盘中就是持久状态。

2023-04-03 19:54:22 273

原创 入门JAVA第十七天 Oracle的JDBC技术

JAVA的JDBC技术

2023-03-08 08:57:09 1016

原创 入门JAVA第十六天 数据库

Oracle数据库的基本知识,select语句,order by语句,where语句,delete语句。多表查询,自连接

2023-03-01 21:20:54 539 2

原创 关于ORCLE的连接报错(ORA-12505)

首先要确定的就是你是否把数据库装到了中文名路径下,如果装到了中文名路径下则需要进行重装。最好从安装文件中进行卸载,如果已经自行卸载请记得卸载service服务!

2023-03-01 16:42:01 607

原创 入门Java第十五天 线程

当有任务需要执行时,从线程池中拿一个线程对象。将线程对象还给线程池。多个任务以串行方式,以先后顺序的方式进行执行。有多个任务可以同时使用同一个线程对象。将任务类交给线程对象进行加载。线程启动时就可以调用任务类的run方法。多线程:在一个进程中,可以同时执行多个线程。线程启动之后,表示当前这个线程对象可以被运行。主线程与子线程是并列的关系。线程池:就是一个存放了大量线程对象的容器。通过这个类的静态方法来获得不同的线程池对象。就表示在主线程中开辟了一个新的子线程。Runnable接口就表示的任务接口。

2023-02-27 21:30:35 495 2

原创 入门JAVA第十四天 String类

我们可以在这个字符串的缓冲区中对字符串进行操作。子串开始于指定start并延伸到字符索引end - 1 ,或如果没有这样的字符存在的序列的结束。构造一个初始化为指定字符串内容的字符串缓冲区。用指定的String中的字符替换此序列的子字符串中的String。+号的作用是二个字符串之间的拼接。返回一个字符串,其值为此字符串,并删除任何前导和尾随空格。构造一个没有字符的字符串缓冲区,初始容量为16个字符。如果此字符串的字典大小超过字符串参数,则值大于0。在Java中提供了二个带有缓存功能的字符串处理的类。

2023-02-26 21:02:58 126

原创 入门JAVA十四天 Java中的随机数

在[1,10]之间随机产生一个数值。返回伪随机的,均匀分布int值介于。三、一个不会重复的随机数-UUID类。

2023-02-26 20:19:34 90

原创 入门JAVA第十三天 综合案例(登录验证+商品管理)

Dao:修改,查询() 三种不同的业务。对数据进行的操作是相同的,只有修改。Service:存(),取(),转账()。(2) 编写GoodsService类中的查询所有商品的方法。2 使用操作资源文件的工具类编写DAO层的数据访问方法。分析的流程是从上向下推(Service -> DAO)。(3) 编写AdminView类中的显示所有商品的方法。(1) 编写GoodsDAO类中的查询所有商品的方法。将业务中的每一种例外情况都封装成一个对应的异常类。

2023-02-26 11:02:28 349 2

原创 入门JAVA第十二天 IO流

String数据类型的参数:在编写路径过程中,要使用到D:\xxx.png。FileInputStream和FileOutputStream 是操作文件的字节流。节点流是直接操作源对象的流对象。字节流每次操作一个字节。声明流对象,这个流对象在使用完成之后。这两个是过滤流对象。直接操作的是另一个流对象。过滤流是操作流对象的流对象。Jar包是个class文件的压缩包。使用字节流可以操作任意类型的文件。例如:操作文件的输入流,FileInputStream。因为在Java中使用流对象,操作文件是作对的使用方法。

2023-02-21 21:33:01 116 2

原创 入门JAVA第十一天 集合(collection)

所有结合中的数据(value),再保存到集合中时,都必须创建一个关键字(key)。String类的两个对象是通过叫用compareTo方法的返回值进行大小的比较的。针对List集合进行排序的方法是:Collection类的静态方法sort()使用keySet()方法,将集合中所有的key取出来,形成一个Set集合。再Java集合中常用的接口有三个:List,Set,Map。本身List集合是有序的。九可以对List集合中的元素进行排序操作。添加元素时,必须保证HashMap结合中的Key唯一,不可重复。

2023-02-20 21:15:49 92

原创 入门JAVA第十天 常用类

在Java中表示日期类型的类有二个:java.util.Date和java.util.Calendar类。) 使用给定模式 SimpleDateFormat并使用默认的 FORMAT语言环境的默认日期格式符号。2 public Date(long date) 按1970.1.1到指定时间的毫秒值来获得系统时间。public long getTime() 返回对象表示当前时间到1970.1.1的毫秒值。java.sql.Date类是一个用来表示。,使用一些标准的字母表示特定的日期字段。

2023-02-18 23:58:40 102

原创 入门JAVA 第九天 代理设计模式

由于Service类的使用需要使用Dao的实现类,所以称Dao为Service的依赖,而通过setDao(),来给Service中的Dao对象指定实现类这一过程,称之为依赖注入。通过以上操作,现在的Service类无法指定使用Dao的实现类,从自己指定实现类到自己无法指定这一过程称为IoC。由于再Service中实例化Dao的对象,导致Service的耦合度过高,不符合我代码编写低耦合高内聚的要求。动态代理:代理类是再程序运行过程中,动态生成的类,实现对被代理类的功能扩展。创建了一个依赖的DAO对象。

2023-02-18 23:45:01 76

原创 入门JAVA 第八天 Java中的异常

自定义异常类一般都是处理业务逻辑的规则编写NameException 表示用户名异常例如:登录时没有找到相同的用户名,是异常注册时找到相同的用户名,是异常throw 一般都是在业务逻辑错误的情况。手动去抛出异常。

2023-02-16 21:53:11 135

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除