自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 软件缺陷总结

软件缺陷总结

2022-11-03 14:00:51 1175 1

原创 软件测试基础知识

软件测试基础知识

2022-11-02 12:51:44 384

原创 Cookie和session的关系

Cookiesession存储位置浏览器服务器信息类型文件对象使用场景会话追踪数据共享关系Cookie包含session的id值:JSessionIdCookie包含session的id值:JSessionId存活时间(默认)会话期间(关闭浏览器就消亡了)30分钟管理方式直接删除文件调用方法删除...

2021-11-01 12:04:56 166

原创 怎样处理java.sql.SQLException: oracle.jdbc.driver.OracleDriver异常

最开始我发现自己项目的ojdbc8-8.jar是灰色的,然后我就重新从maven仓库中了导了一次jar包,错误就解决了。

2021-10-25 09:44:45 2870 1

原创 怎样向本地maven仓库下载jar包

打开cmd窗口,输入maven官网上面你所需的jar包的GAV坐标,直接输入以下内容:mvn dependency:get -DremoteRepositories= -DgroupId= -DartifactId= -Dversion=

2021-10-24 20:28:07 1064

原创 面向过程和面向对象的区别

1.面向过程分析出解决问题的步骤,然后用函数把这些步骤一步一步实现,然后依次调用就可以了。2.面向对象把构成问题的事物,抽象成各个对象,这些对象具有解决问题的多种行为(即方法)。面向对象的思想,主要强调的是通过调用对象的行为来实现功能,而不是自己一步一步的去操作实现。例如,完成做饭功能面向过程:起锅–倒油–放葱姜蒜–放菜–翻炒3分钟–放生抽–放盐–尝尝味道–出锅面向对象:打开全自动炒菜机–放各种配料–启动–出锅(关键是把炒菜机这个类定义好,然后创建这个类的对象,调用方法完成功能)...

2021-10-21 11:45:03 72

原创 servlet中的绝对路径和相对路径

一、绝对路径(/):1.web服务器根目录2.项目的根目录比如说:/a在html中:web服务器根目录/a在java程序或者是servlet中:(1)内部跳转:项目的根目录/a(2)重定向:web服务器根目录/a二、相对路径都是相对于当前的资源路径:观察地址栏路径...

2021-10-19 21:57:36 215

原创 GET和POST请求的区别

不同:1.发送场景:GET:地址栏直接输入/超链接/表单/ajaxPOST:表单/ajax2.发送参数:GET:请求行/浏览器地址栏输入POST:请求正文3.调用方法:doGet/doPost4.Get是不安全的,因为在传输过程,数据被放在请求的URL中;Post的所有操作对用户来说都是不可见的。5.Get传送的数据量较小,这主要是因为受URL长度限制;Post传送的数据量较大,一般被默认为不受限制。6.Get限制Form表单的数据集的值必须为ASCII字符;而Post支持整个ISO10

2021-10-18 19:49:59 90

原创 servlet

什么是Servlet?1.Servlet是JAVAEE中解决请求和响应一个规范 (文件文档)2.Servlet是一个接口 (java程序)3.我们要编写Servlet接口的实现类,Servlet程序(简称jServlet)4.Servlet程序通过直接(实现接口)或间接实现(继承接口的实现类)成为Servlet程序...

2021-10-18 17:15:48 76

原创 说说 List,Set ,Map三者的区别

集合Collection 接口 定义保存单值规范–List 接口 定义保存有序、可重复的单值规范 --LinkedList 实现类 使用链表方式(大量数据时增删快,查找慢) --ArrayList 实现类 使用数组方式(大量数据时查找快,增删慢) 采用线程不安全机制,效率高 --Vector 实现类 使用数组方式 采用线程安全机制,效率低–Set 接口 定义保存无序、不可重复的单值规范 --HashSet 实现类 哈希算法保存数据 --Sor

2021-10-14 07:58:30 157

原创 HTML(超文本标记语言)和XML(可扩展标记语言)的区别

2021-10-11 16:02:21 265

原创 http协议

http协议报文1.请求报文(请求行/请求头/空行/请求数据)(1)请求行请求方法字段、URL字段和HTTP协议版本例如:GET /index.htmlHTTP/1.1get方法将数据拼接在url后面,传递参数受限请求方法:GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT(2)请求头(key-value形式)User-Agent:产生请求的浏览器类型。Accept:客户端可识别的内容类型列表。Host:主机地址(3)空行发送回车符和换行.

2021-10-11 15:33:57 225

原创 java同步机制

java同步机制:在Java中,我们通过同步机制,来解决线程的安全问题方式一:同步代码块 synchronized(锁){ //需要被同步的代码 }说明:1.操作共享数据的代码,即为需要被同步的代码。 -->不能包含代码多了,也不能包含代码少了。2.共享数据:多个线程共同操作的变量。3.同步监视器,俗称:锁。任何一个类的对象,都可以充当锁。4.多个线程必须要共用同一把锁。5.在实现Runnable接口创建多线程的方式中,我们可以考虑使用this充当锁;在继承T

2021-10-09 17:24:37 1151

原创 创建多线程的两种方式

方式一:继承Thread类的方式:创建一个继承于Thread类的子类重写Thread类的run() --> 将此线程执行的操作声明在run()中创建Thread类的子类的对象通过此对象调用start():①启动当前线程 ② 调用当前线程的run()注意:(1)我们启动一个线程,必须调用start(),不能调用run()的方式启动线程。(2)如果再启动一个线程,必须重新创建一个Thread子类的对象,调用此对象的start().方式二:实现Runnable接口的方式:创建一个实现

2021-10-09 16:25:05 231

原创 单例模式的实现

要解决的问题:所谓的单例模式,就是采用一定的方法保证整个的软件系统中, 对某个类只能存在一个对象实例。两种方式的对比:饿汉式:坏处:对象加载时间过长好处:饿汉式是线程安全的懒汉式:好处:延迟对象的创建懒汉式1:线程不安全懒汉式2:线程安全饿汉式1:package singletonpattern;class Bank{ //1.私有化类的构造器 private Bank(){ } //2.内部创建类的对象 //3.要求此对象也必须声明为静态的

2021-10-09 16:01:03 67

原创 方法重载和重写

一、重载:不表现为多态性。重载,是指允许存在多个同名方法,而这些方法的参数列表不同。编译器根据方法不同的参数表,对同名方法的名称做修饰。对于编译器而言,这些同名方法就成了不同的方法。它们的调用地址在编译期就绑定了。Java的重载是可以包括父类和子类的,即子类先将父类的方法重写,然后在自己的类中重载此方法。所以:对于重载而言,在方法调用之前,编译器就已经确定了所要调用的方法,这称为“早绑定”或“静态绑定”;方法重载的语法要求:在同一个类中方法名相同参数列表不同(参数个数不同、参数类型不同、参数顺

2021-10-09 15:17:41 275

原创 成员变量与局部变量的区别

变量的类型如下图所示:1.成员变量变量:先声明再赋值,再使用位置:类里面,方法外面作用域:在整个类中有效生命周期:从对象开始创建的时候,GC回收结束(实例变量)区域:堆区2.局部变量变量:先声明再赋值,再使用位置:方法的参数列表,和方法体中,代码块中作用域:从定义的地方到方法的结束有效生命周期:从定义的地方到方法的结束结束区域:栈区...

2021-10-09 15:00:32 52

原创 hashCode()与 equals()

1.hashCode()和equals()都是Object类中的方法(1)如果类中不重写方法:hashCode():属于本地方法,返回的是对象的哈希码值,也称为散列码,实际返回的是一个int的整数。public native int hashCode();equals():用来比较两个对象的地址值是否相等public boolean equals(Object obj) { return (this == obj);}(2)如果类中重写方法:hashCode():返回的是根据对象

2021-10-09 14:54:03 632

原创 http和 https的区别

HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全,为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。简单来说,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。HTTPS和HTTP的区别主要如下:  1、https协议需要到CA申请证书,一般免费证书较少,因而需要一定费用。  2、http是

2021-10-09 14:39:50 74

原创 避免空指针的方式

Java 中任何对象都有可能为空,当我们调用空对象的方法时就会抛出 NullPointerException 空指针异常,这是一种非常常见的错误类型。我们可以使用以下方法来避免产生这类异常,使得我们的代码更为健壮。1.String的eauqls()方法,把常量放在前面源代码如下:public boolean equals(Object anObject) { if (this == anObject) { return true; } if (anObject

2021-10-09 14:32:57 885

原创 java中==和equals()的区别

一、== 运算符的使用:可以使用在基本数据类型变量和引用数据类型变量中如果比较的是基本数据类型变量:比较两个变量保存的数据是否相等。(不一定类型要相同)如果比较的是引用数据类型变量:比较两个对象的地址值是否相同.即两个引用是否指向同一个对象实体补充: == 符号使用时,必须保证符号左右两边的变量类型一致。二、 equals()的使用:是一个方法,而非运算符只能适用于引用数据类型Object类中equals()的定义: public boolean equals(Object ob

2021-10-09 14:23:48 54

原创 .标识符和关键字的区别是什么

(1)标识符:定义:为包、类、接口、变量、方法、常量等凡是自己可以起名字的地方都叫标识符。规则:(必须要遵守。否则,编译不通过)(2)关键字:定义:被Java语言赋予了特殊含义,用做专门用途的字符串(单词)特点:关键字中所有字母都为小写...

2021-10-09 14:13:52 4439

原创 基本类型和引用类型的区别

(1)存储位置基本变量类型在方法中定义的非全局基本数据类型变量的具体内容是存储在栈中的引用变量类型只要是引用数据类型变量,其具体内容都是存放在堆中的,而栈中存放的是其具体内容所在内存的地址。通过变量地址可以找到变量的具体内容,就如同通过房间号可以找到房间一般。代码如下:public class Main{ public static void main(String[] args){ //基本数据类型 int i=1; double d=1.2; //引用数据类型

2021-10-07 22:24:20 70

原创 类的加载过程

类的加载过程一、加载(Loading)通过一个类的全限定名获取定义此类的二进制字节流将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的访问入口加载.class文件的方式:4.1从本地系统中直接加载4.2通过网络获取,典型场景:Web Applet4.3从zip压缩包中读取,成为日后jar、war格式的基础4.4运行时计算生成,使用最多的是:动态代理技术4.5由其他文件生成,典型场景

2021-10-07 22:12:45 48

原创 双亲委派模型

Java虚拟机对class文件采用的是按需加载的方式,也就是说当需要使用该类时才会将它的class文件加载到内存生成class对象。而且加载某个类的class文件时,Java虚拟机采用的是双亲委派模型,即把请求交由父类处理,它是一种任务委派模式。工作原理:1)如果一个类加载器收到了类加载请求,它并不会先去自己加载,而是把这个请求委托给父类的加载器去执行;2)如果父类加载器还存在其父类加载器,则进一步向上委托,依次递归,请求最终将到达顶层的启动类加载器;3)如果父类加载器可以完成类加载任务,就成功返回

2021-10-04 22:26:00 42

原创 类加载器的种类

类加载器的种类有四种,如下图所示:1.启动类加载器(引导类加载器,Bootstrap ClassLoader)这个类加载使用C/C++语言实现的,嵌套在JVM内部它用来加载Java的核心库(JAVA_HOME/jre/lib/rt.jar、resources.jar或sun.boot.class.path路径下的内容),用于提供JVM自身需要的类并不继承自java.lang.ClassLoader,没有父加载器加载扩展类和应用程序类加载器,并指定为他们的父类加载器出于安全考虑,Bootstr

2021-10-04 22:11:54 2919

原创 maven聚合项目的子模块pom.xml文件报错

今天,写一个项目的子模块时,发现子模块的pom.xml一直报错,检查仓库里的jar包也成功下载了,其他原因也排除了,就是找不出原因,于是就百度搜索到了对我这个项目有用的一种方法(开发工具是Eclipse)。首先,选择聚合项目的父项目,右键–Run As–Maven clean然后,运行成功后可以看到控制台有一个BUILD SUCCESS信息接着,再次点击聚合项目的右键–Run As–Maven install然后,运行成功后可以看到控制台也有一个BUILD SUCCESS信息最后,点击父项目右键

2021-10-03 10:00:37 549

原创 Eclipse中以SVN方式导入gitee项目“文件夹已不存在”解决办法

Eclipse中以SVN方式导入gitee项目报了一个“文件夹不存在”的错误,如下图:解决办法:1.Window->Preferences->SVN,将红框里的SVN接口改为如图所示2.删除路径为C:\Users\你的电脑用户名\AppData\Roaming\Subversion3.重启Eclipse,导入时,重新输入gitee账号密码,就可以成功导入了。...

2021-09-27 21:55:12 869

原创 java插入排序

插入排序1.插入排序整体思想最开始将数组分为两部分,左边是数组的第一个数,右边是待排序的部分。左边排好序的数组和右边没排好序的第一个数组值比较,如果值比排好序的小就记住需要覆盖的下标并将小的这个值临时保存起来,然后将之前排好序的数组依次按照最小下标位置往后移动一次顺序,然后将临时保存的最小数据放在覆盖的位置2.插入排序用图形演示3.代码如下:...

2021-08-11 19:46:04 49

原创 java选择排序

选择排序1.规则(假设将数组从小到大排序):每一轮在待排序的区域中比较找到一个最小值后,把这个最小值放到已经排好顺序的区域的末尾,剩下的部分,组成一个新的待排序部分,重复上面的步骤直到排序结束。2.选择排序过程用图形演示:3.选择排序代码如下package com.briup.day07;import java.util.Arrays;public class SelectSort { public static void main(String[] args) { //选择

2021-08-11 15:20:51 39

原创 java冒泡排序

1.冒泡排序原理:比较两个相邻的元素,将值大的元素交换至上端。冒泡排序用图形演示如下:将数组从小到大排序。1.1第一趟排序1.2第二趟排序1.3第三趟排序1.4第四趟排序5.代码如下: //冒泡排序 int temp = 0; //临时变量 int[] arr = new int[]{12,3,45,6,-1}; //外层循环控制趟数 for (int i = 0; i < arr.length - 1;

2021-08-10 20:31:24 55

原创 Java面试题——浅拷贝和深拷贝

Java面试题——深拷贝和浅拷贝在Java语言中,当我们需要拷贝一个Java对象的时候,常见的会有两种方式的拷贝:浅拷贝和深拷贝。一、浅拷贝浅拷贝只是拷贝了源对象的地址,所以源对象的任何值发生变化时,拷贝对象的值也会随之发生变化。浅拷贝代码举例:User类package deepcopyandshallowcopy;public class User { private String username; private String password; p

2021-08-03 23:39:14 724 1

原创 Java垃圾回收器(Garbage Collector)概述

Java垃圾回收器(Garbage Collector)概述1. 分类1.1按线程数分可以分为串行垃圾回收器和并行垃圾回收器。串行垃圾回收器串行回收指的是在同一时间段内只允许有一个CPU用于执行垃圾回收操作,此时工作线程被暂停,直至垃圾收集工作结束。在诸如单CPU处理器或者较小的应用内存等硬件平台不是特别优越的场合,串行回收器的性能表现可以超过并行回收器和并发回收器。所以,串行回收默认被应用在客户端的Client模式下的JVM中。并行垃圾回收器并行回收可运用多个CPU同时执行垃圾

2021-08-02 00:21:27 2479

原创 分支结构中的if-else

1.代码如下/*分支结构中的if-else(条件判断结构)一、三种结构第一种:if(条件表达式){ 执行表达式;}第二种:if{ 执行表达式1;}else{ 执行表达式2;}第三种:if{ 执行表达式1;}else if{ 执行表达式2;}else if{ 执行表达式3;}......else{ 执行表达式n;}*/class IfTest{ public static void main(String[] args){ //举例1

2021-02-08 14:39:59 236

原创 逻辑运算符

/*逻辑运算符& && | || 说明:逻辑运算符操作的都是boolean类型的变量*/class LogicTest{ public static void main(String[] args){ //区分 & 与 && //相同点1: & 与 &&的运算结果相同 //相同点2:当符号左边是true时,二者都会执行符号右边的运算 //不同点:当符号左边是false时,& 继续执行符号右边

2021-01-31 20:37:09 79

原创 进制之间的转换

一、关于进制所有数字在计算机底层都以二进制形式存在。对于整数,有四种表示方式:①二进制(binary):0,1,满2进1,以0b或0B开头。②十进制(decimal):0-9,满10进1。③八进制(octal):0-7,满8进1,以数字0开头。④十六进制(hex):0-9及A-F,满16进1,以0x或0X开头表示。此处的A-F不区分大小写。如:0x21AF+1 = 0X21B0。 class BinaryTest{ public static void main(String[] arg

2021-01-30 19:42:54 237 3

原创 String类型变量的使用

/*String类型变量的使用1.String属于引用数据类型,翻译为:字符串2.声明String类型变量时,使用一对“”3.String可以和8种基本数据类型做运算,且运算只能是连接运算: +4.运算的结果仍然是String类型*/class StringTest { public static void main(String[] args) { String s1 = "Hello World!"; System.out.println(s1); String s

2021-01-30 12:16:18 352

原创 基本数据类型之间的运算规则

/*基本数据类型之间的运算规则:前提:这里讨论七种基本数据类型变量间的运算。不包含boolean类型的。1.自动类型提升: 结论:当容量小的数据类型的变量与容量大的数据类型的变量做运算时,结果自动提升为容量大的数据类型。 (说明:此时的容量大小指的是,表示数的范围的大和小。比如:float容量要大于long的容量。) byte 、 char 、 short --> int --> long --> float --> double 特别的:当byte 、 char

2021-01-30 12:03:25 166

原创 java的基本数据类型(8种)

java的8种基本数据类型1.整型:byte \ short \ int \ long2.浮点型:float \ double3.字符型: char4.布尔型: booleanclass VariableTest1{ public static void main(String[] args){ /* 1.整型:byte(1字节=8bit) \ short(2字节) \ int(4字节) \ long(8字节) ①byte范围:-128~127 */ byte b1

2021-01-28 16:51:38 167

空空如也

空空如也

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

TA关注的人

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