自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【Git学习笔记】Git常用命令

【代码】【Git学习笔记】Git常用命令。

2025-02-25 10:04:19 402

原创 【MySQL学习笔记】MySQL的InnoDB存储引擎(逻辑存储结构、InnoDB架构、事务原理、MVCC)

更改缓冲区(针对于非唯一二级索引页),在执行DML语句时,如果这些数据Page没有在BufferPool中,不会直接操作磁盘,而会将数据变更存在更改缓冲区ChangeBuffer中,在未来数据被读取时,再将数据合并恢复到BufferPool中,在将合并后的数据刷新到磁盘中。:重做日志,是用来实现事务的持久性。:日志缓冲区,用来保存要写入到磁盘中的log日志数据(redolog,undolog),默认大小为16MB,日志缓冲区的日志会定期刷新到磁盘中。

2025-01-19 09:10:21 638

原创 【MySQL学习笔记】MySQL锁(全局锁、表级锁、行级锁)

锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算资源(CPU、RAM、I/O)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。MySQL中的锁按照锁的粒度分,分为以下三种:1-全局锁:锁定数据库中的所有表2-表级锁:每次操作锁住整张表3-行级锁:每次操作锁住对应的行数据。

2025-01-19 09:09:54 869

原创 【MySQL学习笔记】MySQL触发器

触发器是与表有关的数据库对象,指在 insert/update/delete 之前或之后,触发并执行触发器中定义的 SQL 语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性,日志记录,数据校验等操作。使用别名 OLD 和 NEW 来引用触发器中发生变化的记录内容,这与其他的数据库是相似的。现在触发器还只支持行级触发,不支持语句级触发,触发器类型NEW 和 OLDinsert 型触发器NEW 表示将要或者已经新增的数据update 型触发器。

2025-01-17 10:55:27 190

原创 【MySQL学习笔记】MySQL存储过程

用户自定义变量是用户根据需要自己定义的变量,用户变量不用提前声明,在用的时候直接用 “@变量名” 使用就可以了。其作用域为当前连接。-- 使用 set 方式赋值-- 推荐使用 ':=' 进行赋值。因为 MySQL 中的赋值运算符和比较运算符都是 '=',为了区分,推荐使用 ':='-- 使用 select 方式赋值-- 将 table_name 表中的 column_name 字段的值赋值给 @var_name 变量。

2025-01-14 12:02:16 997

原创 【MySQL学习笔记】MySQL视图View

视图(View)是一种虚拟存在的表。视图中的数据并不在数据库中实际存在,行和列数据来自定义视图的查询中使用的表,并且是在使用视图时动态生成的。通俗的讲,视图只保存了查询的 SQL 逻辑,不保存查询结果。所以我们在创建视图的时候,主要的工作就落在创建这条 SQL 查询语句上。

2025-01-11 21:28:57 1172

原创 【MySQL学习笔记】SQL优化(插入数据、主键优化、order by优化、group by优化、limit优化、count优化、update优化)

SQL优化包含7部分内容,分别为:insert优化、主键优化、order by优化、group by优化、limit优化、count优化、update优化。下面一一介绍。

2025-01-11 15:58:44 1178

原创 【MySQL学习笔记】MySQL的索引

索引(index)是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。索引的优点:1- 提高数据检索的效率,降低数据库的IO成本;2- 通过索引列对数据进行排序,降低数据排序的成本,降低CPU的消耗。索引的缺点:1- 索引列也是要占用空间的。

2025-01-09 21:38:03 751 1

原创 【MySQL学习笔记】MySQL的存储引擎

存储引擎就是存储数据、建立索引、更新/查询数据等技术的实现方式。存储引擎是基于表的,而不是基于库的,所以存储引擎也可被称为表类型。创建表时可以指定存储引擎。在mysql5.5之后默认存储引擎为InnoDB。-- 创建表时指定存储引擎create table 表名(字段1 字段类型 [约束] [comment 字段1注释],......字段n 字段类型 [约束] [comment 字段n注释]) engine=存储引擎;查看当前数据库支持的存储引擎。

2025-01-08 12:29:47 1097

原创 【JavaWeb后端学习笔记】MySQL的常用函数(字符串函数,数值函数,日期函数,流程函数)

【代码】【JavaWeb后端学习笔记】MySQL的常用函数(字符串函数,数值函数,日期函数,流程函数)

2025-01-02 15:48:43 629

原创 【JavaWeb后端学习笔记】MySQL的数据控制语言(Data Control Language,DCL)

DCL英文全称是Data Control Language(数据控制语言),用来管理数据库用户、控制数据库访问权限。

2024-12-30 17:07:33 397

原创 【JavaWeb后端学习笔记】WebSocket通信

WebSocket是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工通信——浏览器和服务器只需要完成一次握手,两者之间就可以创建持久性的连接,并进行双向数据传输。主要应用场景:视频弹幕、网页聊天、体育实况更新、股票基金报价实时更新等。

2024-12-17 16:02:44 482

原创 【JavaWeb后端学习笔记】Spring Task实现定时任务处理

Spring Task是Spring框架提供的任务调度工具,可以按照约定的时间自动执行某个代码逻辑。主要的应用场景有:纪念日提醒,处理订单未支付,还款提醒等。

2024-12-17 15:11:13 393

原创 【JavaWeb后端学习笔记】Spring Cache实现Redis缓存

Spring Cache是一个框架,实现了基于注解的缓存功能,只需要简单的加一个注解,就能实现缓存功能。Spring Cache提供了一层抽象,底层可以切换不同的缓存实现,例如:EHCache,Caffeine,Redis。要想切换缓存实现,只需要导入对应的依赖即可,不需要做其他配置。Redis是键值对结构的数据库,通过这两个属性设置键名,最终存入Redis中的键名为。例如缓存用户相关信息,则可取名为userCache。删除缓存有两种情况,第一种为删除单条数据,第二种为删除批量数据。

2024-12-16 20:00:50 604

原创 【JavaWeb后端学习笔记】使用HttpClient发送Http请求

使用HttpClient发送Http请求需要在项目中导入相关依赖:</</</</

2024-12-15 11:41:57 470

原创 【JavaWeb后端学习笔记】Redis常用命令以及Java客户端操作Redis

redis是基于内存的key-value结构的数据库。

2024-12-14 16:31:35 1155

原创 【JavaWeb后端学习笔记】Swagger接口调试

在前端未开发出来时,由于不能前后端联调,后端程序员调试接口会比较麻烦。Swagger能够帮助后端程序员调试接口。只需要按照Swagger的规范去定义接口及相关信息,就可以做到生成接口文档,以及在线接口调试页面。但实际开发时不会直接使用Swagger,而是使用Knife4j,它是为Java MVC框架集成Swagger生成API文档的增强解决方案。在需要调试的接口上加上相关注解。

2024-12-13 14:39:53 484

原创 【JavaWeb后端学习笔记】Maven项目管理

自定义属性与属性引用方便集中统一管理依赖版本。

2024-12-11 14:34:41 948

原创 【JavaWeb后端学习笔记】Spring框架下的Bean管理

在使用第三方包中的工具类时,无法修改其代码,不能在类上加@Component注解以及其衍生注解将其工具类注册成Bean。此时可以通过其他方式注册。默认情况下,Spring项目启动时,会把Bean创建好交给IOC容器管理。当需要使用时,通过@Autowired注解注入或者通过构造方法注入即可。除此之外还可以通过Spring提供的ApplicationContext类对象获取需要的Bean。第二步:在需要使用Bean的地方调用getBean()方法,获取Bean对象。通过@Scope注解设置Bean的作用域。

2024-12-10 14:59:01 399

原创 【JavaWeb后端学习笔记】Spring AOP面向切面编程

AOP:Aspect Oriented Programming,面向特定方法编程。AOP是通过动态代理技术实现的。SpringAOP是Spring框架的高级技术,旨在管理Bean对象的过程中,主要通过底层的动态代理机制,对特定的方法进行编程。假设场景:现在需要优化一个刚开发好的系统,首先要记录每一个业务方法执行的时长,也就是在业务开始时记录开始时间,业务执行完毕时记录结束时间,时间差就是该业务的执行时间。只要在每一个业务方法中增加这个操作,就能记录所有业务方法的执行时间。

2024-12-09 20:13:43 1022

原创 【JavaWeb后端学习笔记】Spring事务管理

在数据库的增、删、改、查四个操作中,并不是所有的操作都需要加失误管理。单表操作的增、删、改的事务管理可以交给MySQL,所以在Spring中不需要进行事务管理。只有在进行多表的增、删、改操作或者执行多次数据访问操作时才需要进行事务管理。事务是一组操作的集合,它是一个不可分割的工作单位。事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。事务传播行为:指的就是当一个事务方法被另一个事务方法调用时,这个事务方法应该如何进行事务控制。

2024-12-08 15:06:59 579

原创 【JavaWeb后端学习笔记】Spring全局异常处理器

在三层开发架构中,当Mapper层出现异常、如果不进行处理会抛给Service层,如果Service层也不处理则会抛给Controller层,通常Controller层有许多接口,如果对每个接口单独处理异常,则代码会非常臃肿和繁琐。这样一来可以定义一个全局异常处理器,当Controller层、Service层、Mapper层都不对异常进行处理时,框架会把异常抛给全局异常处理器进行处理。在处理异常时,相同类型的异常处理方式相似,因此可以将相同的异常归类,使用一样的处理逻辑处理这类异常。

2024-12-08 14:26:24 309

原创 【JavaWeb后端学习笔记】登录校验(JWT令牌技术、Interceptor拦截器、Filter过滤器)

JWT全称为 JSON Web Token(JWT定义了一种简洁的、自包含的格式,用于在通信双方以json数据格式安全的传输信息。由于数字签名的存在,这些信息是可靠的。第一部分Header(头):记录令牌类型、签名算法等。例如:{“alg”:“HS256”,“type”:“JWT”}第二部分Payload(有效载荷):携带一些自定义的信息,默认信息等。例如:{“id”:“1”,“username”:“Tom”}第三部分Signature(签名),防止Token被篡改、确保安全性。

2024-12-08 12:03:36 1163

原创 【JavaWeb后端学习笔记】Java上传文件到阿里云对象存储服务

可以新建一个properties包,专门存放用于获取配置信息相关的类。这里创建一个AliOssProperties类,用于保存与阿里云对象存储OSS服务相关的四个信息。@Component:将该类注册成Bean;@ConfigurationProperties:给prefix 属性赋值对应的配置文件信息。这里是"web.alioss"。该注解的作用是从配置文件获取配置信息,并将配置信息赋值非成员变量。

2024-12-06 15:21:31 1478

原创 【JavaWeb后端学习笔记】Mybatis基础操作以及动态SQL(增、删、改、查)

在新建SpringBoot项目时,将Server URL栏的替换成在配置文件配置MyBatis时,可以添加日志配置和自动驼峰命名转换配置。# MyBatis日志配置# 开启自动驼峰命名转换MyBatis常用的编写SQL语句的四个注解@Select、@Delete、@Update、@Insert。SQL语句中的占位符,#{…}:执行SQL时,会将 #{ } 替换为?,生成预编译SQL,会自动设置参数值,能够避免SQL注入风险;${…}:拼接SQL。直接将参数拼接在SQL语句中,存在SQL注入问题。

2024-12-05 18:29:46 1978

原创 【JavaWeb后端学习笔记】SpringBoot框架下Http请求参数接收

发送请求:请求方式为POST,请求参数为name=Tom和age=20,POST请求方式的请求参数放在请求体。

2024-12-04 15:44:27 2532

原创 【JavaWeb后端学习笔记】MySQL事务控制和事务的四大特性(ACID)以及CAP定理

MySQL的事务是一组操作的集合,它是一个不可分割的工作单位。事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。

2024-12-04 10:16:12 398

原创 【JavaWeb后端学习笔记】MySQL多表查询(内连接、外连接、子查询)

多表查询有两大类:连接查询和子查询。连接查询又分为隐式/显式内连接和左/右外连接。子查询又分为标量子查询、列子查询、行子查询和表子查询。多表查询是建立在单表查询的基础之上的,因此需要熟练单表查询。开始前需要运行01.数据准备.sql脚本中的代码,准备表和数据。

2024-12-03 16:17:43 1391

原创 【JavaWeb后端学习笔记】MySQL的数据查询语言(Data Query Language,DQL)

下载百度网盘中提供的SQL脚本,将DQL-数据准备.sql中的代码复制粘贴到IDEA中运行,得到数据库表以及表中的内容。MySQL的数据查询语言(Data Query Language,DQL)用于查询数据库中表的记录,是MySQL中最常用的部分。查询所有员工的 name,entrydate, 并起别名(姓名、入职日期)查询返回所有字段,可以列出所有的字段,也可以使用通配符。查询指定字段 name,entrydate 并返回。查询已有的员工关联了哪几种职位(不要重复)。MySQL的索引是从 0 开始。

2024-12-03 11:33:48 1004

原创 【JavaWeb后端学习笔记】MySQL的数据操作语言(Data Manipulation Language,DML)

MySQL的数据操作语言(Data Manipulation Language,DML)用于对数据库表中的数据进行。

2024-12-02 16:26:42 1055

原创 【JavaWeb后端学习笔记】MySQL的数据定义语言(Data Definition Language,DDL)

语法create table 表名(字段1 字段类型 [约束] [comment 字段1注释],......字段n 字段类型 [约束] [comment 字段n注释])[comment 表注释];约束在创建表时需要指定字段类型和约束。首先介绍约束。约束是作用于表中字段上的规则,用于限制存储在表中的数据。以保证数据库中数据的正确性、有效性和完整性。约束描述关键字非空约束限制该字段值不能为nullnot null唯一约束保证字段的所有数据都是唯一的、不重复的unique。

2024-12-02 14:56:20 733

原创 【JavaWeb后端学习笔记】使用IDEA连接MySQL数据库

第一步:输入用户名和密码,用户名默认为root,密码可通过如下命令进行修改;第二步:给数据库取别名,方便管理,可选;第三步:点击Test Connection测试连接是否成功;第四步:点击OK或者Apply。2.选择要连接的数据库。第一步:点击“+”;第二步:点击 Data Source;第三步:选择一个数据库;第四步:点击MySQL。4.数据库连接成功。发现左侧出现数据库信息。IDEA中集成了DataGrip,因此可以直接使用IDEA操作MySQL数据库。1.创建一个新的空工程。点击左侧的数据库标志。

2024-12-02 11:14:38 563

原创 【JavaWeb后端学习笔记】HTTP协议

HTTP请求数据由三部分组成:请求行、请求头、请求体。HTTP响应数据由三部分组成:响应行、响应头、响应体。请求方式:GET、POST、PUT、DELETE等。请求体:POST请求特有,存放请求参数。请求头从请求数据的第二行开始。在发送请求时也可以添加自定义请求头。响应体:最后一部分,存放响应数据。请求行为请求数据的第一行,响应行为响应数据的第一行,响应头从第二行开始。

2024-11-30 13:59:37 842

原创 【JavaSE学习笔记】Java中 方法引用 改造 Lambda表达式

在使用Lambda表达式时,根据有些参数是通过推到可以省略的,因此可以通过Lambda表达式来简化代码。而有的时候,Lambda表达式代码块中实现的代码功能可能已经存在,为了不重复实现,可以使用方法引用进一步简化代码。方法引用是Lambda表达式的孪生兄弟,为进一步简化Lambda表达式而产生的。(两个英文冒号)

2024-11-30 13:03:50 425

原创 【JavaSE学习笔记】Lambda表达式(抽象方法无参无返回值、带参无返回值、带参带返回值、Lambda表达式简写形式)

然后定义一个测试类,测试类中有一个主方法main()和一个使用Eatable接口作为形式参数的方法。同时修改测试类EatableDemo中的代码。此时在useEatable方法体中,需要给eat()方法传入两个String类型的参数,并且接收返回值。此时在useEatable方法体中,需要给eat()方法传入String类型的参数。首先对上述Eatable 接口进行改造,在抽象方法的形参中传入一个String类型的参数。对Eatable 接口进行改造,使其抽象方法eat()传入两个字符串,返回字符串类型。

2024-11-29 17:11:02 433

原创 【JavaSE学习笔记】Java多线程中的生产者消费者模式案例、唤醒与等待方法使用(wait()/notify())

假设这样一个场景,小美家门口有一个奶箱,小帅暗恋小美,小帅会假扮送奶工每天会送一瓶牛奶放进奶箱,小美每天会从奶箱取出一瓶牛奶饮用。从运行结果来看,小帅总共送了3瓶牛奶,但是小美一直取到的是第3瓶牛奶,第1瓶和第2瓶牛奶不翼而飞了,小帅的好意付诸东流。这是因为在上述代码中,小帅送来了一瓶牛奶,但是小美还没来得及去取,小帅就又生产了一瓶牛奶。针对小帅而言,当奶箱有牛奶时,小帅则不去送牛奶,一直等到小美取出牛奶后,再去送牛奶。针对小美而言,当奶箱没牛奶时,小美则不去取牛奶,一直等到小帅送来牛奶后,再去取牛奶。

2024-11-29 15:37:36 285

原创 【JavaSE学习笔记】Java多线程数据安全问题及其解决方法(同步代码块/同步方法/Lock锁)

SellTicket中有一个成员变量tickets表示剩余票数,该类实现了Runnable接口,并重写了run()方法,在run()方法中开始售票,每售一张票,剩余票数减1,直至售罄。这是因为多线程在抢占CPU时具有随机性导致的结果,多个线程同时操作了SellTicket类中的tickets成员变量,这个变量为三个线程共享的数据,满足产生数据安全的三个条件。需要注意的是,这里传入任意对象时不能new对象传入,这是因为每次执行到这里,都会新建一个对象作为锁,对象不同代表锁不同,因此是锁不住的。

2024-11-29 12:57:56 329

原创 【JavaSE学习笔记】Java多线程实现以及基本使用(继承Thread类、实现Runnable接口)

并不是等一个线程中的run()方法执行完再执行另一个,实现了多线程效果。Thread类提供了获取当前线程对象的方法currentThread(),该方法返回当前线程对象,然后通过调用getName()方法就可以获取当前线程的线程名。在上述创建线程时,调用的都是无参构造方法,但Thread类提供了有参构造方法,可以直接在创建Thread对象时起别名。多线程的执行需要争夺CPU时间片资源,而在Java中,会给每个线程设置优先级,以赋予不同线程争夺CPU资源的能力。run()方法用来封装被线程执行的代码。

2024-11-28 20:02:51 968

原创 【JavaSE学习笔记】异常处理以及自定义异常

自定义异常需要自定义一个异常类,并继承某一个异常类。这里用编译时异常Exception举例。public class 自定义异常类名 extends Exception {// 无参构造方法// 带参构造方法范例:定义一个判断分数是否超出范围的异常类,该类继承自Exception类。再定义一个教师类,这个类中有一个检查分数范围的方法,假设正常的分数落在区间[0, 100]。当分数超出范围时,该方法会抛出异常,throw new ScoreException("分数有误");

2024-11-28 11:49:12 917

原创 【JavaSE学习笔记】权限修饰符(private、default、protected、public)与状态修饰符(final、static)

类,成员方法,成员变量使用不同的权限修饰符进行修饰,他们的访问权限也会不同。作用范围从小到大依次为private

2024-11-27 16:06:43 454

空空如也

空空如也

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

TA关注的人

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