自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 单元测试—junit

单元测试是针对最小的功能单元(在java中也就是方法)编写测试代码,单元测试就是针对单个方法的测试。其实我们平时写一个类实现某种功能,用main方法去执行,也是单元测试的一种,准确来说它属于单元调试,因为测试必须包含:输入、预期结果、实际结果。

2022-10-09 17:18:44 2011 1

原创 黑盒测试与白盒测试

黑盒测试也称为功能测试,它描述的是我们不关注程序的代码实现,只关注输入和输出。黑盒测试设计测试用例的方法有哪些?①等价类:依据需求将输入划分为若干个等价类,从等价类中选出一个测试用例,如果这个测试用例通过,则认为它所代表的等价类通过,这样我们就可以用较少的测试用例达到尽可能多的功能覆盖,解决了测试用例不能穷举的问题。等价类分为有效等价类和无效等价类,有效等价类:符合需求规格说明书的数据集合,无效等价类:不符合需求规格说明书的数据集合。案例:登陆密码,要求 6-15(只允许使用字母+数字)

2022-09-29 22:03:52 781

原创 MySQL几种创建索引的方式

②mysql > CREATE unique index_name on 表名(column)①mysql > CREATE INDEX index_name on 表名(column)①PRIMARY KEY(主键索引)④FULLTEXT(全文索引)2、通过create创建索引。1、通过Alter创建索引。②UNIQUE(唯一索引)③INDEX(普通索引)二、表创建好后创建索引。⑤多列索引(组合索引)一、创建表时创建索引。

2022-09-28 00:06:48 10114

原创 Spring Boot初识

Spring 的诞生是为了简化Java程序的开发,而Spring Boot 的诞生则是为了简化Spring框架。

2022-09-01 00:16:17 235

原创 JavaString类中的常用方法

将当前字符串从“regex”隔开,隔开后的片段以String[] 形式返回。返回在某个字符串中当前字符串最后一次出现的下标,没有则返回-1。返回在某个字符串中当前字符串第一次出现的下标,没有则返回-1。用于查找字符串中下标为index的字符,返回的是一个字符。※注意:比较两个字符串内容是否相等不能使用“==”。判断当前字符串内容是否和后面字符串内容相同。用于判断前面的字符串是否包含后面字符串。将字符串转成char[]数组,并返回。返回当前字符串的长度。字符串截断,左闭右开。去除字符串前后的空格。...

2022-08-29 18:58:26 159

原创 关于Scanner类的next()和nextLine()的区别和用法

经过验证,我发现其他的next的方法,如nextDouble() , nextFloat() , nextInt() 等与nextLine()连用时都存在这个问题,解决的办法是:在每一个 next()、nextDouble() 、 nextFloat()、nextInt() 等语句之后加一个nextLine()语句,将被next()去掉的Enter结束符过滤掉。我发现用Scanner实现字符串的输入有两种方法,一种是next(),一种是nextLine(),但是两种究竟有何区别呢?...

2022-08-28 02:32:45 694

原创 关于TCP/UDP

在学习TCP/UDP之前先来了解以下整体的通信传输,它是一个向下封装、向上分用的过程:这是TCP/IP四层模型,所以要想实现通讯,通过TCP建立和断开连接是至关重要的,图中的每一层都不可或缺。

2022-08-12 18:57:19 693

原创 为什么需要HTTPS?

HTTP:超文本传输协议,是一种常用的应用层协议,它用于传输客户端和服务器端的数据。HTTP具体详见。HTTP的使用很简单也很方便,但却存在以下3个致命的问题:1、使用明文通讯,内容可以被监听。(比如前后端交互前开启Fiddler抓包,或者用开发者工具很容易就能获取到传输数据)2、不验证通讯方的真实身份,可能会遭到伪装,那么我们的数据也很容易就被监听到。(在客户端和服务器端中间有个伪装人)3、无法证明报文的完整性,很容易被篡改。鉴于以上三种问题,所以我们有了HTTPS来替代HTTP。...

2022-08-12 12:00:37 478

原创 关于Java上下转型

/ 定义动物基类System.out.println("动物在移动");}}// 定义Cat类//重写父类中继承的方法System.out.println("猫在走猫步");}System.out.println("猫抓老鼠");}}// 定义Bird类System.out.println("鸟儿在飞翔");}}}①只有有继承关系的类型之间才能进行类型转换;②向上转型是天然发生的,但只能访问和调用到来自于父类的属性和行为;③子类的引用不能指向父类或其他子类对象。...

2022-08-09 16:38:23 337

原创 Linux基本使用

目前三种常用的搭建Linux环境的方式①直接安装在物理机上,但是Linux桌面使用起来不友好。②使用虚拟机软件,但是会存在一些bug。③使用云服务器可以直接在阿里云、腾讯云等服务器厂商处直接购买。(推荐,方便且价格实惠,想咋搞就咋搞)...

2022-07-15 19:27:23 1070

原创 Spring中 Bean 作用域和生命周期

从前面的课程可以看出Spring是用来存储和读取Bean的,因此在Spring中Bean是最核心的操作资源,所以我们将从Bean的作用域和生命周期进一步学习一下Bean对象。假设现在有一个公共的Bean,提供给用户A和用户B来使用,然而A悄悄地修改了公共的Bean的数据,导致B在使用时发生了预期之外的逻辑错误,我们预期是:公共Bean可以在各自类中进行修改,但不影响其他类的使用。案例如下:A: 在UserController6中注入user1,然后对其name属性进行修改: B:使用公共Bean

2022-07-13 11:22:40 132

原创 Spring更简单的注册和注入对象

前言:经过前面的学习我们已经可以实现基本的Spring读取和存储对象的操作,但是操作过于复杂,所以接下来我们更进一步,学习更加简单的操作Bean对象的方法在Spring中想要更加简单的存储和读取对象的核心是使用注解想要将Bean添加到Spring中,我们需要配置一下存储对象的扫描路径,只有在被配置的包下的所有的类,添加了注解才能正确地存储到Spring中 想要将Bean对象存储到Spring中,有两种注解类型可以实现:① 类注解:@Controller(控制器)、@Service(服务)、@Reposito

2022-07-12 23:59:09 597

原创 初识Spring框架

目录1、为什么要学框架2、Servlet vs SpringBoot2.1 servlet框架步骤2.2 SpringBoot框架的步骤2.3 二者比较3、Spring核心与设计思想3.1 初识Spring3.2 什么是IoC?3.3什么是DI4、Spring创建与使用4.1 创建 Spring项目4.2 存储 Bean 对象4.3 获取并使用Bean对象4.3 总结学习框架相当于从”小作坊“到”工厂“的升级,小作坊什么都需要自己来完成,而框架就在一定意义上实现了自动化,框架更加易用、简单且高效。①首先创建

2022-07-04 22:16:55 360

原创 Maven从开门到入门

1、什么是Maven?最开始用IDEA都是创建一个java项目,这个类型项目主要是方便我们学习一些简单的java基础语法,到后面实际业务开发都需要创建功能性更强大的Maven项目。Maven是一个项目构建工具,创建的项目只要遵循Maven规范,即可使用其来实现:①管理jar包 ②编译项目 ③打包、发布项目等功能。2、配置并使用MavenMaven无需安装,IDEA自带,2.1 Maven依赖管理流程Maven项目中可以引入依赖jar包,引入后可以在Maven中进行搜索。Maven

2022-05-13 17:44:28 116

原创 初识Tomcat

1、Tomcat是什么?这不是汤姆🐱,这是一个HTTP服务器,使用它可以部署和发布网站,让除了本机用户外,其他用户直接访问。自己写的系统不在服务器上部署,别人是无法直接进行访问的。tomcat则是一个轻量级应用服务器,可以将我们写的系统部署到tomcat上,从而实现资源共享。2、Tomcat目录说明3、部署静态页面......

2022-05-11 10:56:44 172

原创 详谈HTTP协议

目录1、HTTP是什么?2、HTTP的工作过程※ 2.1 HTTP协议格式2.1.1 抓包工具的使用2.1.2 抓包工具的原理2.1.3 协议格式3、HTTP请求3.1 请求地址URL(统一资源定位符)俗称网址3.2 请求的方法3.2.1 GET3.2.2 POST3.3 请求报头3.3.1 Host3.3.2 Content-Length3.3.3 Content-Type ※3.3.4 User-Agent(UA)3.3....

2022-05-10 21:01:06 806

原创 JavaScript-基础入门

1、什么是JavaScript?1.1 JS概览JavaScript是世界上最流行的编程语言之一,它是一种脚本语言,通过解释器运行,主要在客户端(浏览器)上运行。JS能完成的事情:①网页开发②网页游戏开发③服务器开发④桌面程序开发(比如VSCode)⑤手机app开发1.2 JS、CSS、HTML三者关系HTML:网页的结构(基础结构)CSS:网页的表面(包装)JS:网页的行为(实现的操作)1.3 JS是如何运行的?JS通过浏览器可以直接运行,JS通

2022-05-10 00:54:23 115

原创 CSS基础入门

1、什么是CSS?CSS:层叠样式表,HTML是静态页面,而CSS则是来对其进行美化排版,实现美化页面的效果。2、CSS基本语法选择器+说明选择器:决定针对谁进行修改说明:修改的具体内容3、CSS类型3.1 行内样式直接在标签中进行详细的样式设置,只适合于简单的样式,只针对当前标签有效。优先级较高。3.2 内部样式3.3 外部样式4、选择器5、常用属性6、Chrome调试工具--查看CSS属性7、页面布局※...

2022-04-29 17:06:46 148

原创 html基础入门

目录1、html结构1.1、基本结构1.2、标签的层次结构2、html常见标签2.1注释标签2.2标题标签2.3段落标签2.4换行标签2.5格式化标签(不常用,一般用css进行美化)2.6图片标签2.7超链接标签2.8表格标签2.9列表标签2.10表单标签3、练习1、html结构html代码是由各种“标签”构成的。标签名放到<>中,构成一个标签,大多数标签成对出现,有开始标签也有结束标签,少数标签只有开始标签,称为“

2022-04-27 11:49:14 1429

原创 关于JUC——java.util.concurrent下典型的类

· ReentrantLock· Semaphore· CountDownLatch· CyclicBarrier1、ReentrantLock:可重入锁2、Semaphore:信号量可以实现限流操作,给一个线程池添加多个任务,借助信号量可以实现对线程执行情况的控制:两个重要的方法:①semaphore.acquire()获得信号量②semaphore.release()释放信号量/** * 信号量:实现限流 */public class SemaphoreD

2022-04-21 17:41:47 417

原创 常见锁策略—乐观锁&悲观锁

目录1、乐观锁&悲观锁1.1 乐观锁的定义1.2 乐观锁的实现(CAS机制)1.3 乐观锁存在的问题:ABA问题1.4 悲观锁2、公平锁&非公平锁3、读写锁4、独占锁&共享锁5、可重入锁&自旋锁1、乐观锁&悲观锁1.1 乐观锁的定义乐观锁认为一般情况下不会出现冲突,所以只会在更新数据的时候才对冲突进行数据检测,如果没有发生冲突则直接修改,如果发生冲突则不做任何修改,然后把结果返回给用户,让用户自行处理。1.2

2022-04-18 15:57:22 3980 1

原创 java设计模式—单例模式

目录1、什么是设计模式?2、什么是单例模式?3、单例模式的具体实现方式3.1 饿汉模式3.2 懒汉模式1、什么是设计模式?设计模式就好比象棋种的“棋谱”,红方当头炮,黑方马来跳。针对对方的一些招数,己方的一些固定套路。2、什么是单例模式?单例模式是指在内存中只会创建且仅创建一次对象的设计模式。在程序中多次使用一个对象且作用相同时,为了防止频繁创建对象使得内存飙升,单例模式可以让程序仅在内存中创建一个对象,让所有需要调用的地方都共享这一单例对象。实现方式:构造方法的

2022-04-18 12:42:44 279

原创 java线程池详解

1、什么时线程池?线程池就是用池化技术管理和使用线程的一种机制。2、为什么要用线程池?2.1 线程池的优点①复用线程,从而避免了线程重复创建和销毁的性能开销。②控制线程的数量,从而避免了因为线程创建过多而导致OOM的问题。③提供了任务管理的功能,从而可以实现任务缓存和任务拒绝的功能。④线程池提供了更多的功能,比如定时任务。2.2 传统线程的缺点①每次都需要创建和销毁线程,是需要消耗系统资源的。②线程没有任务管理的功能,当任务量比较大的时候没有任务队列对任务进行管理或者

2022-04-15 14:35:34 5650

原创 线程之间的通讯

1、什么是线程通讯由于线程之间是抢占式执行的,因此线程之间执行的先后顺序难以预知,但实际开发中有时候我们希望合理地协调多个线程之间的执行先后顺序。2、方法介绍2.1 wait()/wait(long timeout):让当前线程进入等待状态。wait 执行流程:①使当前的线程进入休眠状态②释放当前占有的锁③满足一定条件时被唤醒,尝试重新获取锁。wait 结束等待的条件:①其他线程调用该对象的notify方法②wait (long timeout).

2022-04-13 00:00:00 2169

原创 死锁的产生原因以及解决方案

1、什么是死锁死锁就是两个或两个以上线程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。2、死锁的代码展示也就是两个线程在各自拥有锁的情况下,又去尝试获取对方的锁,从而造成的一直阻塞的情况。public class Thread18 { public static void main(String[] args) { Object lockA = new Object(); Object lo

2022-04-12 10:57:58 23568 1

原创 位运算符与逻辑运算符基础

1、位运算符位运算是将数据先转化为二进制数补码形式,然后再进行逐位运算。①“按位与” &,规则:全1则1,否则为0②“按位或” |, 规则:有1则1,否则为0③“按位异或” ^,规则:相同为0,不同为1④“按位非” ~ ,规则:有1则0,有0则12、逻辑运算符①逻辑与 && 全真则真,一假则假②逻辑或 || 有真则真,否则为假③逻辑非 ! 真变假,假变真3、逻辑运算符和位运算符的区别①针对的数据类型不同:逻辑运算符只能针对boole

2022-04-02 16:10:37 522

原创 线程安全问题

1、线程不安全的因素①抢占式执行②每个线程操作自己的变量③非原子性操作④内存可见性问题⑤指令重排序问题2、volatile 解决内存可见性和指令重排序问题2.1优点volatile 可以解决可以解决内存可见性问题和指令重排序问题。代码在写入volatile修饰的变量的时候:改变线程工作内存中volatile变量副本的值,将改变后的副本的值从工作内存刷入主内存代码在读取volatile修饰的变量的时候:强制从主内存读取值,然后再拷贝到线程的工作内存中,从工作内存中读取

2022-03-30 17:09:57 565

原创 初识java多线程(Thread)

1、认识线程1.1概念线程组成了进程,进程是操作系统分配资源的最小单元,而线程是操作系统调度的最小单位,一个线程就是一个执行流,每个线程有自己独立的代码,多个线程之间“同时”执行着多份代码。1.2为什么要有线程“并发编程”成为刚需,单核CPU的发展遇到瓶颈,想要提高算力,需要多核CPU(可以简单地理解为多个CPU组成),虽然多进程也能实现“并发编程”,但线程比进程更加轻量:①创建线程比创建进程更快②销毁线程比销毁进程更快③调度线程比调度进程更快※进程和线程地区别:①从

2022-03-24 17:28:35 2826

原创 Map和Set

1、搜索1.1概念Map和Set是一种专门用来搜索的容器或者数据结构,其搜索的效率与具体的实例化子类有关。1.2模型一般把搜索的数据叫关键字(key),和关键字对应的值成为值(value),这就称为key-value的键值对,所以模型会有两种:①纯key 模型:有一个字典,查找某个字是否存在,此时单纯的搜索用set②key-value 键值对模型:统计文件中某个单词出现的次数,统计的结果都应该包含:单词+出现的次数 <单词,出现的次数>,此时就用Map

2022-03-23 16:23:51 399

原创 理解java枚举(Enum)

1、枚举的概念枚举和类同级别,是在JDK1.5引入的,主要用来表示一组相同业务的值,就比如我们要实现卖车的程序,我们要定义一组颜色来穷举这辆车所提供的所有颜色,在没有枚举之前是这样定义的:public static int final RED = 1;public static int final GREEN = 2;public static int final BLACK = 3;以上代码存在主要问题有三个:①代码的可读性较低,比如我拿到1,并不能准确地知道它所指代的是哪一种颜色。

2022-03-21 12:17:37 224

原创 java内部类最全详解

1、成员内部类内部类与外部类的关系a.成员内部类的创建需要依赖于外部类对象-(成员方法必须通过对象调用),在没有外部类实例之前无法创建成员内部类对象b.内部类与外部类相对独立,不是is a 的关系(发动机-汽车)c.私有属性的互相访问,内部类可以直接访问外部类,而外部类访问内部类需要内部类的对象来访问d.创建内部类的语法1.在外部类内部创建内部类对象(Inner inner = new Inner())2.在外部类外部创建内部类对象,外部类.内部类 inner = new O

2022-03-20 11:58:58 41745 6

原创 java实现链表

1、什么是链表链表是一种数据结构,和数组同级别。Java中我们使用的LInkedList,其实现原理为链表,而ArrayList其实现原理为数组。链表在插入和删除时优势明显。单链表是一种线性表,实际上由节点(Node)组成,可以把单链表想象成为一列火车,而组成单链表的每个节点想象成为一节车厢。节点中存储了节点的值(data)以及指向下一个节点的指针(Next)。2、单链表的实现(增删查改)package LinkedList;// 车厢类class Node { // 存储

2022-03-18 10:41:20 5322 3

原创 优先级队列(堆)

1、堆的概念 逻辑上是一棵完全二叉树,堆物理上是保存在数组中的,堆分为大根堆和小根堆两种,满足任意节点的值都大于其子树中节点的值,叫做大根堆,或者最大堆,反之则是小根堆,或者小堆。2、堆化操作mport java.util.ArrayList;import java.util.Arrays;import java.util.List;import java.util.NoSuchElementException;/** * 基于int的最大堆实现 * 根节点从0开始...

2022-03-16 14:44:16 1007

原创 吃透MySQL高级查询这一篇就够了~

1、聚合查询1.1 count 查询查询条数①select count(*) from 表名;-- 推荐使用,可查出所有数据条数,包括null和非null。②select count(0) from 表名;--兼容性不好,仅限MySQL使用。③select count(列名) from 表名;-- 统计非null的数据条数。不推荐使用,如果业务需要,可以用count(*)结合 where 进行操作使用。1.2 sum 查询select sum(列名)

2022-03-16 12:09:12 2448

原创 JDBC编程

目录1、什么是JDBC?2、为什么要用JDBC?3、具体操作3.1导入mysql驱动包(mysql-connector-java-5.1.47.jar)3.2 使用代码来操作MySQL3.3代码实现3.3.1 获得数据源3.3.2 获得连接3.3.3 得到执行器3.3.4 执行SQL3.3.5 关闭资源1、什么是JDBC?JAVA DATABASE CONNECTION:是java数据库连接。它是java API,提供了一种规范。2

2022-03-14 15:47:07 871

原创 秒懂MySQL索引,索引如此简单~~

MySQL索引的定义以及使用。

2022-03-11 08:00:00 1730

原创 MySQL事务(Transaction)——详解

目录1、什么是事务?2、为什么要使用事务?3、事务的使用4、事务的四大特性(ACID)5、MySQL事务的四种隔离级别 ※1、什么是事务? 事务就是将一组操作封装成一个执行单元,要么一块执行成功,要么一块失败,不存在部分执行成功的情况。事务保证了执行的稳定性。 数据库引擎:InnoDB才支持事务,MyISAM不支持事务。2、为什么要使用事务? 举一个简单的例子:转账 张三有 1000余额,李四...

2022-03-10 18:56:37 1683

原创 【井字棋】

目录题目描述:解题思路:代码实现:题目描述:给定一个二维数组board,代表棋盘,其中元素为1的代表是当前玩家的棋子,0表示没有棋子,-1代表是对方玩家的棋子。当一方棋子在横竖斜方向上有连成排的及获胜(及井字棋规则),返回当前玩家是否胜出。示例:输入:[[1,0,1],[1,-1,-1],[1,-1,0]]输出:true解题思路:将三种获胜的情况一一列出即可:①行取胜:固定列②列取胜:固定行③对角线取胜:两种情况 主对角线和副对角线代码实现:p

2022-03-04 15:14:25 100

原创 java中Scanner类的使用方法

1、Scanner类简介Scanner类主要用于扫描用户从控制台输入的文本,即当用户需要输入数据时,调用java.util包中的Scanner类,Scanner类能获取用户所输入的数据。2、如何使用Scanner类导入Scanner包import java.util.Scanner;3、一组输入①用next接收注意:1.一定要读取到有效字符后才可以结束输入。2.对输入的有效字符之前所遇到的空白,会自动将其去除。3.只有输入的有效字符后才将其后面输入的空白作为结束符。...

2022-02-20 12:25:03 11606

原创 MySQL基础使用

1、数据库简单来说,数据库就是存储数据的容器,是永久存储的。数据库 ≠ mysql,mysql属于数据库,数据库是一个很大的分类。2、数据库的分类在实际项目开发过程中,数据库一共分为两大类:①关系型数据库 ②非关系型数据库,关系型数据库就是通过一种“关系”去管理实体的信息。关系:实际上就是一张二维表,有列有行。关系型数据库:MySQL,Oracle,SQL Server,DB2...非关系型数据库:Redis,MongoDB(文档型数据库)3、My......

2022-02-19 23:23:55 295

空空如也

空空如也

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

TA关注的人

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