自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【多线程】锁策略

- 乐观锁:乐观锁在操作数据时比较乐观,认为别人不会修改数据,因此就不会进行加锁。只是在执行更新操作的时候会进行判断别人是否修改了数据,是则放弃操作,否则继续操作。- 悲观锁:悲观锁在操作数据时比较悲观,认为别人同时会修改数据,因此在操作数据的时候会进行加锁,直到操作完成才释放锁,在操作数据期间其他人不能修改数据。

2024-08-09 10:58:21 815

原创 【多线程】线程池

说起池,我们就会联想到之前学过的字符串常量池,数据库连接池等,关于“池”还是很常见的,池的目的就是为了减少每次获取资源的消耗,提高对资源的利用率。线程池就是提前将线程准备好,创建线程不再是从系统中申请,而是直接从线程池中取,线程不用了也是还给线程池。

2024-08-02 20:56:57 882

原创 【多线程】阻塞队列

阻塞队列是一种特殊的队列,既然是队列,也就满足“先进先出”的原则。阻塞队列是一种线程安全的数据结构,并且具有以下特性:1. 当队列满的时候,继续入队列就会阻塞,直到有其他线程从队列中取走元素2. 当队列空的时候,继续出队列也会阻塞,直到有其他线程往队列中插入元素

2024-08-02 20:56:16 1063

原创 【多线程】单例模式

单例模式是一种经典的设计模式它确保一个类只有一个实例,并提供一个全局访问点来获取该实例。单例模式主要用于控制对某些共享资源的访问,例如配置管理器、连接池、线程池、日志对象等。

2024-07-25 13:59:31 1261 1

原创 【多线程】wait()和notify()

在上一篇关于线程安全的问题中,我们提到过线程的调度是无序的,随机的,但很多时候我们都不喜欢随机的东西,很多时候都需要线程能有序的执行,此时就用到了我们今天要介绍的两个方法,wait()和notify()。相信大家都去银行的取款机取过钱,就算没有,也大致知道是个什么样的,进入取款机,然后锁门,然后插卡进行取钱。如下图:

2024-07-25 13:58:58 858 1

原创 【多线程】线程安全问题及解决方法

而load操作时间开销很大,远远高于cmp ,此时CPU有个大胆的操作,将load操作优化了,就导致只有第一次读取flag的值的时候t1线程会从主存中进行读取,之后则在本地内存进行读取,这就会导致当t2线程修改flag的值并同步到主存的时候,t1线程并没有读取到更新的值,这和我们上述提到过的Java内存模型对应,当我们给flag变量加上volatile关键字的时候问题就解决了,这是由于加了volatile关键字的变量,会指示JVM每次读取这个变量的时候都需要从主存中进行读取。

2024-07-23 14:18:18 1118 1

原创 【多线程】Thread类的用法

在上一篇进程和线程中,我们介绍了进程和线程的概念,今天我们来介绍一下在Java中如何进行多线程编程,此时就有人问了,哪为啥不是进行多进程编程呢,这是因为操作系统其实是提供了一组进行多进程编程的API,但JDK中并没有给我们Java程序员封装这些多进程的API,同时,在上一篇我们介绍进程和线程中介绍过,进程切换是开销比较大的操作,而线程切换的成本比较低。

2024-07-09 21:23:19 802 1

原创 【多线程】进程与线程

操作系统本质上是运行在计算机上的软件程序,对上,它负责给软件运行提供稳定的环境,对下,它要管理好各种硬件设备。一个运行起来的程序就是进程,而我们电脑中的.exe文件就是一个可执行的文件(程序),当双击这个.exe文件,这个程序跑起来就形成了一个进程。关于这个我们可以通过任务管理器查看,如下图:我们从上面两种图都可以观察到我们的计算机上运行着许许多多的进程,我们在最开始提到过,操作系统的一大功能就是进行进程的管理,那么它是如何对进程进行管理的呢?描述一个进程:使用结构体/类把一个进程有哪些信息描述出来。

2024-07-06 22:42:22 1134 1

原创 【软件测试】之自动化测试

自动化测试指软件测试的自动化,在预设状态下运行应用程序或者系统,预设条件包括正常和异常,最后评估运行结果。将人为驱动的测试行为转化为机器执行的过程。通俗来说就是:自动化测试就是将人工测试手段进行转换,让代码去执行。自动化测试包括UI自动化,接口自动化,单元测试自动化。按照这个金字塔模型来进行自动化测试规划,可以产生最佳的自动化测试产出投入比(ROI),可以用较少的投入获得很好的收益。单元测试最大的投入应该在单元测试上,单元测试运行的频率也更加高。java的单元测试框架是Junit接口自动化。

2024-07-04 22:21:58 1229

原创 【软件测试】之黑盒测试用例的设计

黑盒测试,也称为功能测试或数据驱动测试,是一种软件测试方法。其核心思想是将被测软件视为一个无法打开的“黑盒子”。测试人员无需关心软件内部的逻辑结构和代码实现,仅依据软件的需求规格说明书,检查软件的功能是否符合其预定的功能说明。

2024-07-04 22:21:21 1173 2

原创 Linux部署Java项目至云服务器

这里我们先创建一个我们放项目的文件夹,这里我创建的是forum,命令是mkdir forum,然后将我们的SQL语句拖到forum文件夹下即可。要将我们的项目部署到云服务器上我们就需要先有一个云服务器,大家可以使用阿里云,华为云,腾讯云申请免费试用,一般可以白嫖3个月左右。大部分人连接数据库的命令应该是mysql -uroot -p ,然后输入密码即可。我们先将本地项目的SQL文件上传到我们的Linux中。上面的17421则是我们Java进程的pid。

2024-06-29 19:54:28 907 1

原创 Linux常用命令大全(超详细!!!)

细心的小伙伴这个时候就会发现,当我们递归删除一个目录的时候,每删除一个目录系统都会询问是否删除,那当我们要递归删除一个成千上万的目录的时候也需要这样一个一个的确定吗,答案是否定的,这就是我们接下来要介绍的命令了。在上面我们介绍了cat命令是查看文件内容的,echo命令是往文件中写内容的,但他们都是针对简单短小的文件的,如果是针对复杂的文件进行复杂的编辑,那么应该怎么处理呢?值得注意的是,Linux也为我们提供了"ll"命令,和"ls -l"命令是一样的,后续我们可以使用"ll"命令即可。

2024-06-29 19:53:36 1200 2

原创 【JVM】之常见面试题

(User-Defined ClassLoader),我们可以通过继承java.lang.ClassLoader类来创建自己的类加载器。

2024-06-12 22:23:32 1357 3

原创 【Spring】之基于注解存储和获取Bean对象

在上一篇Spring的基础概念和使用中,我们讲解了如何存储Bean对象和获取Bean对象,大致流程就是在配置好的扫描路径文件.xml文件中添加一行Bean注册才行,如下:但设想一下如果我有很多的对象需要存储到Spring容器中,那我是不是得添加多个Bean注册,这样写起来是不是就太麻烦了,每次我需要存储一个Bean就需要添加一个到扫描路径文件中,今天我们就讲解一种更简单的存储和获取Bean对象的方法——通过注解存储和获取Bean。

2024-04-24 23:37:47 760 1

原创 【Spring】之基础概念和使用

我们常说的Spring是指Spring Framework(Spring 框架),它是一个开源的框架,它有着广泛的应用场景,它可以让Java企业级开发更加简单。Spring是一个包含了众多工具方法的IoC容器。通俗来说,容器就是用来存放东西的,就比如我们的杯子平常就是用来装水的,这里的杯子就是一个容器。回想我们之前学过哪些容器呢?List/Map ->数据存储容器Tomcat ->Web容器而我们说的Spring则是对象存储的容器,它里面则是存储的对象。

2024-04-18 19:15:59 1654 2

原创 【Java学习】之final关键字详解

final意味着 **"最终的","不可变的"**,用于表示修饰的内容是不可变的或者不能重写的。它可以用于类、方法,变量(包括成员变量和局部变量)。

2024-04-05 23:13:44 425 1

原创 【Java学习】之static关键字详解

static是静态的意思,它既可以用来修饰成员变量也可以用来修饰成员方法。 - static修饰的成员变量叫作静态成员变量(类变量),修饰的成员方法叫作静态方法(类方法)。 - static修饰后的成员变量可以被类的所有对象共享(访问,修改),但注意它不属于某一个对象。

2024-04-04 20:27:08 2432 1

原创 【软件测试】入门篇

最常见的理解就是:软件测试就是找bug,发现缺陷。日常生活中,很多情况下我们也其实在做测试,比如我们新买了一台电脑,我们会对它的性能进行测试;一次考试后,对完成的题目我们会进行检查,这也是测试;新买的电视机,我们也会打开播放电视剧看看是否能播放正常这也是测试。软件测试就是验证软件产品特性是否满足用户需求。上面我们提到软件测试是为了验证软件产品是否满足用户的需求,那么什么是需求呢?测试用例就是一组集合,包含测试环境,测试数据,预期结果,操作步骤等。下面我们用leetcode来举例,

2024-03-27 18:40:25 571 1

原创 【Spring】事务和事务的传播机制

将一组操作封装在一起执行,要么全部成功,要么全部失败。

2024-03-12 17:29:57 1271 1

原创 【Spring Boot】之统一功能处理

1. 提高代码的可维护性、可重用性和可扩展性。在应用程序中,存在一些通用的功能需求,如身份验证、日志记录、异常处理等。这些功能需要在多个地方进行调用和处理。如果每个地方都单独实现这些功能,会导致代码冗余、难以维护和重复劳动。通过统一功能处理的方式,可以将这些通用功能抽取出来,以统一的方式进行处理,从而简化代码结构,提高代码的可读性和可维护性。2. 降低系统的代码耦合度。 在项目中,无论是controller层、service层还是dao层都可能会有异常发生。如果每个过程都单独处理异常,会导

2024-03-11 14:36:09 876 1

原创 【Spring Boot】之日志文件

在程序中得到⽇志对象。使⽤⽇志对象的相关语法输出要打印的内容。基本注解:组合注解:日志注解:通过上述注解我们也可发现@Data这个组合注解的用处,在以后我们的代码编写中就可以使用此注解代替Getter+Setter+toString()等一系列的注解进行使用。同时我们也可通过target目录看@Data注解是如何进行编译的,这里就不做举例了。今天的内容分享就到此结束了。🎧🎧🎧博客主页:欢迎各位大佬!

2024-02-07 13:09:21 2172 1

原创 【Spring Boot】之配置文件详解

整个项⽬中所有重要的数据都是在配置⽂件中配置的,⽐如: - 数据库的连接信息(包含⽤户名和密码的设置); - 项⽬的启动端⼝; - 第三⽅系统的调⽤秘钥等信息; - ⽤于发现和定位问题的普通⽇志和异常⽇志等。

2024-02-07 13:08:06 1128 1

原创 【数据结构】之 Map和Set

通过上面这张图我们可以看出,Map的两个实例化类分别是HashMap和TreeMap。HashMap和TreeMap的区别:在Java中HashMap的底层是实现了一个哈希桶,本文的后面会详细介绍;而TreeMap的底层是红黑树,而红黑树是一棵近似平衡的二叉搜索树,即在二叉搜索树的基础之上 +颜色以及红黑树性质验证,关于红黑树的性质我们之后再做详解。这里我们对二叉搜索树有大致理解即可,可以翻看我之前的二叉搜索树章节进行理解。代码实现:(这里只介绍几种)

2024-01-28 20:38:06 891 1

原创 【MYSQL】之索引和事务

经常写博客或者看博客的同学不难发现,一篇文章通常都会带有目录,通过目录我们就可以对文章的大体内容有一定的了解,并且,可以通过点击目录快速跳转到我们要了解的知识点。而索引的作用也和目录差不多,是为了加快查询的速度。

2024-01-27 15:25:32 871 2

原创 详解HTTPS的加密过程

加密就是把明文经过一系列变换,生成密文。解密就是把密文经过一系列变换,还原成明文。

2023-12-21 08:14:26 1085 1

原创 【数据结构】之二叉搜索树

🏀🏀🏀来都来了,不妨点个关注!🎧🎧🎧博客主页:欢迎各位大佬介绍二叉搜索树的概念是为了我们之后Map和Set的学习做铺垫。

2023-12-09 22:34:52 96 1

原创 【数据结构】之树与二叉树

听到树这个概念,我们脑海中可能会出现树的形状,是由树根延伸出树的主干然后再产生多个分支的结构,下面我们以图来解释:而计算机中的树则是一种非线性的结构,它是由n(n>=0)个节点组成的一个有层次关系的集合。把它叫做树是因为它看起来像一颗倒挂的树,也就是说它根朝上,叶子朝下。有一个特殊的结点,称为根结点,根结点没有前驱结点除根结点外,其余结点被分成M(M > 0)个互不相交的集合T1、T2、…、Tm,其中每一个集合Ti (1

2023-07-20 14:50:18 179 2

原创 Java学习之继承与多态

在类与对象中我们提到过代码块这个概念,通过学习我们可以发现,静态代码块是先与构造代码块且只执行一次,即随类的加载而加载,而构造代码块则是先与构造方法的。通过运行结果可以看出,当子类和父类中存在相同的成员变量时,直接访问时,都是访问子类的,如果想要在子类方法中明确访问父类的方法,则有到super关键字即可。将一个子类对象经过向上转型转化为父类对象后无法调用子类特有的方法,但有时候要调用子类特有的方法,此时,将父类引用还原为子类引用即可,即向下转型。写到这,继承和多态就大致结束了,如有补充,欢迎各位大佬留言。

2023-02-25 11:31:01 379

原创 Java学习之类与对象(下)

书接上文,这里我们会介绍类与对象的剩余部分,相信看完文章的你对类与对象会有更深的理解。

2022-12-10 14:34:16 145

原创 Java学习之类与对象(上)

本篇文章,我们将会介绍Java中的类与对象(上),相信在看完文章之后,你会对类与对象有更清晰的理解。

2022-11-12 15:07:19 269 3

原创 字符串函数讲解

此前我们已经学过字符串的一些函数的使用方法,下面是我对一些字符串函数的理解

2022-09-13 20:34:56 174 1

原创 干饭人的第一篇博客

总有人要赢,为什么那个人不能是我。

2022-06-01 23:39:41 222 6

空空如也

空空如也

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

TA关注的人

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