自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 使⽤Redis+lua脚本构造分布式锁,缓解⾼并发环境下的优惠卷超卖问

/ 优惠券库存 key// %d 是 couponId// 分布式锁 key特性说明原子性Lua 脚本在 Redis 中原子执行,避免并发问题高性能减少网络往返,一次请求完成锁 + 扣库存分布式安全所有服务实例共享 Redis,锁全局有效防止死锁设置锁过期时间防止误删使用requestId标识锁持有者在来执行 Lua 脚本,完美实现“Redis + Lua 分布式锁防超卖”的需求。这个方案是高并发系统中的经典实践,适用于秒杀、抢购、抽奖等场景。

2025-07-28 20:58:43 443

原创 Maven

模块继承指的是:一个 Maven 子模块可以从一个父模块中继承其 POM 配置。子模块在自己的pom.xml中通过<parent>标签指定父模块的坐标(groupId、artifactId 和 version),从而继承父模块中的配置信息。项目内容模块继承子模块继承父模块的 POM 配置作用配置复用、统一版本、插件管理实现方式<parent>标签指定父模块与聚合区别继承是配置共享,聚合是模块管理最佳实践父模块用于集中配置,子模块继承使用。

2025-07-21 21:02:00 647

原创 sky-take-out项目中Redis的使用

Spring Cache 注解只能覆盖 Redis 的部分缓存功能,不能替代 Redis 的全部能力。对于复杂的 Redis 操作,仍需使用。对通用缓存逻辑使用 Spring Cache 注解;对 Redis 高级功能单独封装成 Redis 工具类或服务类,使用来实现。这样既能享受注解带来的便捷,又能保留 Redis 的灵活性和强大功能。

2025-07-21 20:20:15 1040 1

原创 sky-take-out项目Mybatis的使用

1. 接口接收分页参数 (Page, PageSize)↓2. 调用 PageHelper.startPage(page, pageSize)↓3. 执行 categoryMapper.pageQuery(dto) 查询↓4. MyBatis + PageHelper 自动添加 LIMIT 分页语句↓5. 查询结果返回 Page<Category> 对象↓6. 构造 PageResult 返回给前端。

2025-07-18 19:18:11 935

原创 sky-take-out项目中AOP的使用

在 AOP 编程中,连接点(Join Point)指的是程序执行过程中某个特定的点,比如方法调用或异常抛出。而JoinPoint接口则提供了对这些连接点的元数据访问,允许你在通知(Advice)中获取相关信息。Signature是一个接口,提供了对连接点签名的基本信息的访问。是Signature的一个具体实现,特别适用于处理方法级别的切面,它提供了更多关于方法的详细信息,如参数类型、返回类型等。使用Signature和。

2025-07-16 17:16:04 622

原创 sky-take-out项目中的切点

中的是作为注解的value()成员值传入的,Java 在编译和运行时会自动创建一个实现了AutoFill接口的代理对象,并让它的value()方法返回你传入的值,所以你不需要手动写return。在 Java 注解中,你不能定义字段,只能通过抽象方法的形式来声明属性。因此你要写成而不是,这是 Java 注解语法的规定,也是为了保持接口一致性、统一访问方式和支持默认值等设计目标。

2025-07-16 15:44:02 712

原创 Java线程

线程(Thread)是操作系统调度的最小单元。每个进程至少有一个主线程,Java 程序本身就是多线程运行的。Java 中线程是轻量级的进程,多个线程共享同一个进程的资源(如堆内存),但拥有自己的栈空间。

2025-07-14 22:24:56 994

原创 Lambda表达式

Lambda表达式本质上是一个“可传递的代码块”,它可以作为参数传递给方法或存储在变量中。Lambda表达式的主要目的是为了支持函数式编程风格,使代码更加简洁和易于阅读。

2025-07-14 21:53:20 387

原创 Stream流

Java中的Stream是Java 8引入的一个新抽象层,旨在让集合操作变得更加简洁和易于理解。它支持顺序和并行的聚合操作,并且能够以声明式的方式处理数据集合。通过使用流,你可以更专注于描述你想要执行的操作,而不是如何执行这些操作。

2025-06-23 16:26:21 889

原创 分层架构模式

客户端]↓ 发送 GET /api/users/123↓ 调用 userService.getUserById(123)↓ 调用 userMapper.selectById(123)↓ 执行 SQL: SELECT * FROM users WHERE id = 123[数据库]↑ 返回查询结果(User 对象)↑ 返回 User 对象↑ 返回 User 对象↓ 构造 ResponseEntity<User>[客户端]← 接收 JSON 响应。

2025-06-23 15:54:48 852

原创 MyBatis&MyBatis plus

是 MyBatis 的增强工具,旨在简化开发、提高效率的同时不损失灵活性。它在 MyBatis 的基础上只做增强而不做改变,为简化开发工作、提高效率而生。下面将详细介绍 MyBatis-Plus 的核心功能、使用方法以及与 Spring Boot 的整合。

2025-06-19 17:21:52 989

原创 Redis

Redis(Remote Dictionary Server)是一个开源的、基于内存的数据结构存储系统,它可以用作数据库、缓存和消息中间件。Redis支持多种数据结构,并提供了丰富的操作命令来高效地管理和处理这些数据结构。由于其高性能和灵活性,Redis被广泛应用于实时数据分析、会话存储、计数器、排行榜等场景。主要用途缓存:作为应用的缓存层,减少对后端数据库的压力,提高响应速度。消息队列:利用Redis的列表(List)实现简单的消息队列功能。会话存储:存储Web应用的用户会话信息,提供快速访问。

2025-06-19 15:57:14 996

原创 MySQL

SQL(Structured Query Language)是一种专门用于管理关系型数据库系统的标准计算机语言,用于与数据库交互的语言,MySQL是一个具体的数据库管理系统,它接受并解释SQL语句来完成对数据库的各种操作。换句话说,MySQL是SQL语言的一个运行环境,通过这个环境,用户可以利用SQL的强大功能来管理MySQL数据库中的数据。DDL用于定义数据库的结构,包括创建、修改和删除数据库对象(如表、视图、索引等)。常用的DDL命令有:CREATE:创建新的数据库或数据库对象。

2025-06-19 15:21:26 971

原创 Spring

你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:撤销:Ctrl/Command + Z重做:Ctrl/Command + Y加粗:Ctrl/Command + B斜体:Ctrl/Command + I标题:Ctrl/Command + S

2025-06-15 15:40:17 625

原创 【无标题】

2.编写URL和视图函数对应关系 在urls.py中编写。1.创建之后注册 在setting.py中编写。3.编写视图函数 views.py。二、app的基本模块介绍。三、启动运行django。APP的创建和基本模块。4.启动django。

2023-04-12 18:32:42 127

原创 用顺序查找的方式查找数组范围大的数字

一般情况下,数组范围较大时,我们会选用二分查找的方式查找关键字,但是依然可以用顺序查找的方式查找数组范围大的关键字

2022-06-26 16:16:12 253

原创 JAVA实现三个数字的排序

题目描述:读取三个整数并按升序对它们进行排序。输入格式共一行,包含三个整数。输出格式首先,将三个整数按升序顺序输出,每行输出一个整数。然后,输出一个空行。紧接着,将三个整数按原输入顺序输出,每行输出一个整数。数据范围−100≤输入整数≤100输入样例:7 21 -14输出样例:-14721721-14解题代码:import java.util.Scanner;public class Main{ public static void main(String

2021-08-12 00:13:23 2699

原创 c++实现a + b

c++实现求两个整数的和的程序代码实现://本代码实现输入两个整数,输出两个整数的和 //本代码实现输入两个整数,输出两个整数的和 #include <iostream> //头文件 using namespace std; //命名空间 int main() //主函数 { int a, b; //定义两个整数变量用来存储输入的值 cin >> a >> b; // 给两个变量赋值 int sum; //定义一个整型变量用来存储

2021-08-02 18:30:27 5155 2

原创 HTMl 实现用户的登录注册界面

自己体会<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title&g

2021-04-24 17:51:16 19801 5

原创 HTML 实现BMI测试

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>inp

2021-04-24 16:56:35 1884

原创 HTML总览

链接:http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html

2021-04-15 20:54:18 97

原创 HTML实现风车旋转

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>ind

2021-04-15 20:52:23 3211 1

原创 html

<!DOCTYPE html><!--网页的根标签--><html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"&gt

2021-04-10 11:42:04 180 4

原创 Hello Word!

Hello Word!import java.util.Scanner;public class Main{ public static void main(String[] args) { System.out.print("Hello Word!"); }}

2021-03-08 21:46:46 95

原创 DP----线性DP(二)

五一到了,ACM队组织大家去登山观光,队员们发现山上一个有N个景点,并且决定按照顺序来浏览这些景点,即每次所浏览景点的编号都要大于前一个浏览景点的编号。同时队员们还有另一个登山习惯,就是不连续浏览海拔相同的两个景点,并且一旦开始下山,就不再向上走了。队员们希望在满足上面条件的同时,尽可能多的浏览景点,你能帮他们找出最多可能浏览的景点数么?输入格式第一行包含整数N,表示景点数量。第二行包含N个整数,表示每个景点的海拔。输出格式输出一个整数,表示最多能浏览的景点数。数据范围2≤N≤1000输

2021-02-01 22:10:00 124

原创 DP----线性DP(一)

题目描述:怪盗基德是一个充满传奇色彩的怪盗,专门以珠宝为目标的超级盗窃犯。而他最为突出的地方,就是他每次都能逃脱中村警部的重重围堵,而这也很大程度上是多亏了他随身携带的便于操作的滑翔翼。有一天,怪盗基德像往常一样偷走了一颗珍贵的钻石,不料却被柯南小朋友识破了伪装,而他的滑翔翼的动力装置也被柯南踢出的足球破坏了。不得已,怪盗基德只能操作受损的滑翔翼逃脱。假设城市中一共有N幢建筑排成一条线,每幢建筑的高度各不相同。初始时,怪盗基德可以在任何一幢建筑的顶端。他可以选择一个方向逃跑,但是不能中途改变方

2021-02-01 21:53:38 179

原创 BFS--走迷宫

BFS: 利用队列先进先出的性质来实现,找到头节点将头节点的后继节点压入队列,弹出队头元素,将队头元素的后记节点压入队列。从而实现,距离头节点距离近的节点先被遍历。给定一个n*m的二维整数数组,用来表示一个迷宫,数组中只包含0或1,其中0表示可以走的路,1表示不可通过的墙壁。最初,有一个人位于左上角(1, 1)处,已知该人每次可以向上、下、左、右任意一个方向移动一个位置。请问,该人从左上角移动至右下角(n, m)处,至少需要移动多少次。数据保证(1, 1)处和(n, m)处的数字为0,且一定至少存在

2021-01-27 22:39:06 270

原创 DP--数字三角形升级版---方格取数

题目描述:设有 N×N 的方格图,我们在其中的某些方格中填入正整数,而其它的方格中则放入数字0。如下图所示:某人从图中的左上角 A 出发,可以向下行走,也可以向右行走,直到到达右下角的 B 点。在走过的路上,他可以取走方格中的数(取走后的方格中将变为数字0)。此人从 A 点到 B 点共走了两次,试找出两条这样的路径,使得取得的数字和为最大。输入格式第一行为一个整数N,表示 N×N 的方格图。接下来的每行有三个整数,第一个为行号数,第二个为列号数,第三个为在该行、该列上所放的数。行和列编号从

2021-01-27 22:05:56 204 2

原创 数组模拟队列

实现一个队列,队列初始为空,支持四种操作:(1) “push x” – 向队尾插入一个数x;(2) “pop” – 从队头弹出一个数;(3) “empty” – 判断队列是否为空;(4) “query” – 查询队头元素。现在要对队列进行M个操作,其中的每个操作3和操作4都要输出相应的结果。输入格式第一行包含整数M,表示操作次数。接下来M行,每行包含一个操作命令,操作命令为”push x”,”pop”,”empty”,”query”中的一种。输出格式对于每个”empty”和”query”

2020-09-23 21:30:37 232

原创 数组模拟栈

实现一个栈,栈初始为空,支持四种操作:(1) “push x” – 向栈顶插入一个数x;(2) “pop” – 从栈顶弹出一个数;(3) “empty” – 判断栈是否为空;(4) “query” – 查询栈顶元素。现在要对栈进行M个操作,其中的每个操作3和操作4都要输出相应的结果。输入格式第一行包含整数M,表示操作次数。接下来M行,每行包含一个操作命令,操作命令为”push x”,”pop”,”empty”,”query”中的一种。输出格式对于每个”empty”和”query”操作都要

2020-09-23 21:08:40 105

原创 数组模拟双链表

实现一个双链表,双链表初始为空,支持5种操作:(1) 在最左侧插入一个数;(2) 在最右侧插入一个数;(3) 将第k个插入的数删除;(4) 在第k个插入的数左侧插入一个数;(5) 在第k个插入的数右侧插入一个数现在要对该链表进行M次操作,进行完所有操作后,从左到右输出整个链表。注意:题目中第k个插入的数并不是指当前链表的第k个数。例如操作过程中一共插入了n个数,则按照插入的时间顺序,这n个数依次为:第1个插入的数,第2个插入的数,…第n个插入的数。输入格式第一行包含整数M,表示操作次数。

2020-09-23 18:56:23 172

原创 数组模拟单链表

实现一个单链表,链表初始为空,支持三种操作:(1) 向链表头插入一个数;(2) 删除第k个插入的数后面的数;(3) 在第k个插入的数后插入一个数现在要对该链表进行M次操作,进行完所有操作后,从头到尾输出整个链表。注意:题目中第k个插入的数并不是指当前链表的第k个数。例如操作过程中一共插入了n个数,则按照插入的时间顺序,这n个数依次为:第1个插入的数,第2个插入的数,…第n个插入的数。输入格式第一行包含整数M,表示操作次数。接下来M行,每行包含一个操作命令,操作命令可能为以下几种:(1) “

2020-09-23 17:34:18 423

原创 二分查找

整数二分bool check(int x) {/* ... */} // 检查x是否满足某种性质// 区间[l, r]被划分成[l, mid]和[mid + 1, r]时使用:int bsearch_1(int l, int r){ while (l < r) { int mid = l + r >> 1; if (check(mid)) r = mid; // check()判断mid是否满足性质 else

2020-09-04 19:09:45 125

原创 朴素筛法 --- > 埃氏筛法 --- > 线性筛法

2 3 4 5 6 7 8 9 10 11 12 13 14 15朴素筛法朴素筛法是将每个数的倍数,例如当i = 2,4 6 8 10 12 14会被筛去;当i = 3, 6 9 12 15 会被筛去;当i = 4, 8 12 会被筛去;代码//朴素筛法 #include<iostream>#include<algorithm>using namespace std;const int N = 1000010;int primes[N];boo

2020-08-04 02:43:53 424

原创 Find a way

Find a wayTime Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 37587 Accepted Submission(s): 11925Problem DescriptionPass a year learning in Hangzhou, yifenfei arrival hometown Ningbo at finally. Le

2020-08-02 03:03:35 184

原创 自测-3 数组元素循环右移问题 (20分)

自测-3 数组元素循环右移问题 (20分)一个数组A中存有N(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥0)个位置,即将A中的数据由(A​0​​ A​1​​ ⋯A​N−1​​ )变换为(A​N−M​​ ⋯A​N−1​​ A​0​​ A​1​​ ⋯A​N−M−1​​ )(最后M个数循环移至最前面的M个位置)。如果需要考虑程序移动数据的次数尽量少,要如何设计移动的法?输入格式:每个输入包含一个测试用例,第1行输入N(1≤N≤100)和M(≥0);第2行输入N个整数,之间用

2020-08-02 01:42:04 1026 3

原创 背包问题

有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。第 i 件物品的体积是 vi,价值是 wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。输入格式第一行两个整数,N,V,用空格隔开,分别表示物品数量和背包容积。接下来有 N 行,每行两个整数 vi,wi,用空格隔开,分别表示第 i 件物品的体积和价值。输出格式输出一个整数,表示...

2020-03-23 16:35:47 116

原创 6-6 带头结点的链式表操作集 (20分)

本题要求实现带头结点的链式表操作集。函数接口定义:List MakeEmpty(); Position Find( List L, ElementType X );bool Insert( List L, ElementType X, Position P );bool Delete( List L, Position P );其中List结构定义如下:typedef struct...

2020-03-14 15:42:07 622

原创 6-2 顺序表操作集 (20分)

本题要求实现顺序表的操作集。函数接口定义:List MakeEmpty(); Position Find( List L, ElementType X );bool Insert( List L, ElementType X, Position P );bool Delete( List L, Position P );其中List结构定义如下:typedef int Positi...

2020-03-14 15:39:09 954

原创 L1-063 吃鱼还是吃肉 (10分)

国家给出了 8 岁男宝宝的标准身高为 130 厘米、标准体重为 27 公斤;8 岁女宝宝的标准身高为 129 厘米、标准体重为 25 公斤。现在你要根据小宝宝的身高体重,给出补充营养的建议。输入格式:输入在第一行给出一个不超过 10 的正整数 N,随后 N 行,每行给出一位宝宝的身体数据:性别 身高 体重其中性别是 1 表示男生,0 表示女生。身高和体重都是不超过 200 的正整数。...

2020-03-14 14:36:19 444

空空如也

空空如也

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

TA关注的人

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