自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 博客系统测试报告

本人独立开发。

2024-03-06 10:38:06 1053

原创 个人博客项目(SSM)

*** 统一的数据格式返回* Serializable接口实现序列话,使得在进行特殊操作时不会报错*/@Data// 状态码// 状态码描述信息// 返回的数据/*** 操作成功返回的结果* 重载多个满足不同参数的调用需求*//*** 返回失败结果* 重载多个满足不同参数的调用需求*/

2023-07-25 19:11:57 126

原创 Spring AOP

AOP:面向切面编程,它是⼀种思想,它是对某⼀类事情的集中处理。⽽ Spring AOP 是⼀个框架,提供了⼀种对 AOP 思想的实现二. AOP 有什么用1)对于一些功能统⼀,且使⽤的地⽅较多的功能,就可以考虑 AOP 来统⼀处理了(例如验证登录功能)2)统⼀⽇志记录3)统⼀⽅法执⾏时间统计4)统⼀的返回格式设置5)统⼀的异常处理6)事务的开启和提交等也就是说使用 AOP 可以扩充多个对象的某个能力,所以 AOP 可以。

2023-06-17 16:30:11 55

原创 MyBatis

MyBatis 是更简单完成程序和数据库交互的工具,也就是更简单的操作和读取数据库工具二. 使用Mybatis 进行简单查询2.1 创建数据库和表。

2023-06-11 16:16:06 77

原创 Spring MVC程序开发

MVC 是Model View Controller 的缩写,它是软件⼯程中的⼀种软件架构模式,它把软件系统分为模型、视图和控制器三个基本部分Model (模型)是应⽤程序中⽤于处理应⽤程序数据逻辑的部分。通常模型对象负责在数据库中存 取数据。View(视图)是应⽤程序中处理数据显示的部分。通常视图是依据模型数据创建的。Controller(控制器)是应⽤程序中处理⽤户交互的部分。通常控制器负责从视图读取数据,控制⽤户输⼊,并向模型发送数据。1.2 MVC 和 Spring MVC 的关系。

2023-06-07 13:50:51 172

原创 SpringBoot 日志文件

开发者⾃定义打印⽇志的实现步骤:1)在程序中得到⽇志对象。2)使⽤⽇志对象的相关语法输出要打印的内容。

2023-05-26 17:25:53 59

原创 SpringBoot 配置文件

1)数据库的连接信息(包含⽤户名和密码的设置);2)项⽬的启动端⼝;3)第三⽅系统的调⽤秘钥等信息;4)⽤于发现和定位问题的普通⽇志和异常⽇志等二. 配置文件的格式1).properties(默认)2).yml.properties 配置文件的优先级最高,但加载完 .properties 文件之后,也会加载 .yml 文件的配置信息2 虽然 .properties 可以和 .yml 共存,但实际的业务当中,我们通常会采取⼀种统⼀的配置文件格式,这样可以更好的维护(降低故障率)

2023-05-25 19:11:12 189

原创 Bean 作用域和生命周期

限定程序中变量的可⽤范围叫做作⽤域,或者说在源代码中定义变量的某个区域就叫做作⽤域。⽽Bean 的作⽤域是指 Bean 在 Spring 整个框架中的某种⾏为模式。

2023-05-20 19:30:12 44

原创 Spring 读取和存储对象(更简)

在上一篇文章,我们讲述存储 Bean 时,需要在 spring-config 中添加一行 bean 注册内容才行但是当需要存储的 Bean 对象很多时,就需要添加很多行 bean ,体力活并不是我们想做的。那么就是我们很好的解决方案了。

2023-05-17 14:37:49 38

原创 Spring 的创建与使用

1. 操作容器之前,先要有容器,所以先要得到容器2. 存对象1)创建 Bean (普通类)2)将 Bean 注册(配置)到 Spring-confing.xml 中3. 去对象1) 得到 Spring 上下文,并读取到 Spring 的配置文件2)获取某一个 Bean 对象3)使用 Bean 对象。

2023-05-15 18:08:44 101

原创 Spring 核心与设计思想

我们发现了⼀个规律:通⽤程序的实现代码,类的创建顺序是反的,传统代码是 Car 控制并创建了Framework,Framework 创建并创建了 Bottom,依次往下,⽽。赖注⼊(DI)和控制反转(IoC)是从不同的⻆度的描述的同⼀件事情,就是指通过引⼊ IoC 容 器,利⽤依赖关系注⼊的⽅式,实现对象之间的解耦。,因为我们不需要在当前类中创建下级类了,所以下级类即使发⽣变化(创建或减少参数),当前类本身也⽆需修改任何代码,这样就完成了程序的解耦。Spring 是包含了众多工具方法的 IoC 容器。

2023-05-13 13:40:09 48

原创 多线程进阶

CAS:全称,字面意思:”比较并交换,一个CAS涉及到以下操作:我们假设内存中的原数据V,旧的预期值A,需要修改的新值B。1.比较A与V是否相等。(比较)2.如果比较相等,将B写入V。(交换)3.返回操作是否成功。当多个线程同时对某个资源进行CAS操作,只能有一个线程操作成功,但是并不会阻塞其他线程其他线程只会收到操作失败的信号。CAS可以视为是一种乐观锁. (或者可以理解成CAS是乐观锁的一种实现方式。

2023-05-07 17:53:30 45

原创 多线程案例

其实就是单个实例(某个类有且只有一个实例)有些需求场景就要求实例不能有多个,通过单例模式,相当于对 ‘单个实例’ 做了一个更加严格的约束这就是一个简单的单例模式。上述代码写的实现单例模式的方式叫做 “也就是他是在类加载阶段创建的实例,创建实例的时机非常早,非常迫切当然,也还有一种典型的实现单例模式的方式叫做“创建实例的时间更迟,带来了一个更高的效率在首次调用 getlnstance 的时候才会触发,后续再调用 getlnstance , 就立即返回。

2023-04-22 22:49:48 43

原创 Java的JDBC编程

连接,是无法重复利用的,每次使用完以后释放资源 时,通过connection.close()都是关闭物理连接。连接池在初始化时将创建一定数量的数据库连接,这些连接。jdbc:mysql://服务器地址:端口/数据库名?文件夹配置进依赖中,表示该文件夹下的 jar包都引入作为依赖。中,点击项目,配置 Dependencies,点击。是可以复用的,每次使用完数据库连接,释放资源调用。,它是 Java中的数据库连接规范。开发数据库应用不用限定在特定数据库厂商的。准备数据库驱动包,并添加到项目的依赖中。

2023-04-16 18:58:04 64

原创 MySQL 索引事务

索引是一种特殊的文件,包含着对数据表里所有记录的引用指针。可以对表中的一列或多列创建索引,并指定索引的类型,各类索引有各自的数据结构实现。

2023-04-14 18:48:14 42

原创 数据库(mysql)基本操作

create database 数据库名;如果在 database 后面加上,作用是:如果这个数据库不存在,就创建。如果存在,也不会报错3. 选中数据库use 数据库名;drop database 数据库名;create table 表名 (列名 类型, 列名 类型......);注意:同一个数据库中不可以有同名的表,名字也不能与关键字重复,如果需要重复需使用 `` 引起来desc 表名;Type: 数据类型,'11'和数据存储无关,描述的是 “打印的格式”;

2023-03-29 18:27:10 94

原创 线程安全问题

有些代码在多线程环境下执行会出现 bug .这样的问题就称为 “线程不安全”线程不安全的原因1.抢占式执行2.多个线程修改同一变量3.修改操作不是原子的例如:count++ => 1.读取 2.加加 3.写入4.内存可见性问题* 编译器可能会把代码转为另外一种执行逻辑,等价转换后逻辑不变,但是效率变高了5.指令重排序。

2023-03-14 18:34:01 37

原创 线程的创建与操作

线程的创建线程的创建1. 继承 Thread, 重写 run2.通过重写 Runnable 来实现创建线程这种写法是使用 Runnable 来专门表示 “线程要完成的工作”,假设未来要对这个代码进行调整(不使用多线程了)就只需要把 Runnable 传给其他线程即可3.使用匿名内部类,实现创建 Thread 子类4.使用匿名内部类实现Runnable 的接口方式5.使用 lambda 表达式lambda 本质上是一个 “匿名函数”()是函数的形参{} 是函数体。

2023-03-07 17:44:15 78

原创 计算机的基本工作过程

冯诺依曼体系。

2023-03-02 12:53:38 106

原创 多线程 --- 常见锁策略

多线程之间,数据的读取方之间不会产生线程安全问题,但数据的写入方互相之间以及和读者之间都需要进行互斥。假设数据一般情况下不会产生并发冲突,所以在数据进行提交更新的时候,才会正式对数据是否产生并发冲突进行检测,如果发现并发冲突了,则让返回用户错误的信息,让用户决定如何去做。总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁。大部分情况下,虽然当前抢锁失败,但过不了很久,锁就会被释放。实现的方式是在锁中记录该锁持有的线程身份。

2022-11-20 18:24:11 55

原创 多线程案例

2. 进程有自己的内存地址空间,线程只独享指令流执行的必要资源,如寄存器和栈。生产者和消费者彼此之间不直接通讯,而通过阻塞队列来进行通讯,所以生产者生产完数据之后不用等。1. 进程是系统进行资源分配和调度的一个独立单位,线程是程序执行的最小单位。3. 由于同一进程的各线程间共享内存和文件资源,可以不通过内核进行直接通信。2. 与进程之间的切换相比,线程之间的切换需要操作系统做的工作要少很多。待消费者处理,直接扔给阻塞队列,消费者不找生产者要数据,而是直接从阻塞队列里取。上面的懒汉模式的实现是线程不安全的。

2022-10-23 19:21:52 58

原创 线程安全 (二)

方法notify()也要在同步方法或同步块中调用,该方法是用来通知那些可能等待该对象的对象锁的其它线程,对其发出通知notify,并使它们重新获取该对象的对象锁。* 在notify()方法后,当前线程不会马上释放该对象锁,要等到执行notify()方法的线程将程序执行完,也就是退出同步代码块之后才会释放对象锁。由于线程之间是抢占式执行的, 因此线程之间执行的先后顺序难以预知. 但是实际开发中有时候我们希望合理的协调多个线程之间的执行先后顺序.* 使当前执行代码的线程进行等待. (把线程放到等待队列中)

2022-10-16 14:34:38 110

原创 线程的状态和线程安全

2,假设有 A B C 三个线程, 线程 A 先获取到锁, 然后 B 尝试获取锁, 然后 C 再尝试获取锁, 此时 B 和 C 都在阻塞队列中排队等待. 但是当 A 释放锁之后, 虽然 B 比 C 先来的, 但是 B 不一定就能获取到锁, 而是和 C 重新竞争, 并不遵守先来后到的规则.针对每一把锁, 操作系统内部都维护了一个等待队列. 当这个锁被某个线程占有的时候, 其他线程尝试进行加锁, 就加不上了, 就会阻塞等待, 一直等到之前的线程解锁之后, 由操作系统唤醒一个新的线程, 再来获取到这个锁.

2022-10-11 20:46:39 150

原创 线程的基础操作

Thread.currentThread().isInterrupted() 判断指定线程的中断标志被设置,* 当出现 InterruptedException 的时候, 要不要结束线程取决于 catch 中代码的写法. 可以选择忽略这个异常, 也可以跳出循环结束线程.Thread.interrupted() 判断当前线程的中断标志被设置,关于后台线程,需要记住一点:JVM会在一个进程的所有非后台线程结束后,才会结束运行。有时,我们需要等待一个线程完成它的工作后,才能进行自己的下一步工作。

2022-10-08 16:28:27 40

原创 进程与线程的区别与联系

线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源。是资源(CPU、内存等)分配的基本单位,具有一定功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。1,创建线程比创建进程更快. 销毁线程比销毁进程更快. 调度线程比调度进程更快.1,进程是包含线程的. 每个进程至少有一个线程存在,即主线程。3,进程是系统分配资源的最小单位,线程是系统调度的最小单位。

2022-10-01 18:35:14 210 1

空空如也

空空如也

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

TA关注的人

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