- 博客(12)
- 收藏
- 关注
原创 Redis消息队列
使用 Java 自带的阻塞队列e 实现消息队列,这种方式存在以下弊端:1)信息可靠性没有保障:BlockingQueue 的消息是存储在内存中的,无法进行持久化,一旦程序宕机或者发生异常,会直接导致消息丢失2)消息容量有限:BlockingQueue 的容量有限,无法进行有效扩容,一旦达到最大容量限制,就会抛出OOM异常市面上成熟的消息队列MQ有很多,比如RabbitMQ、Kafka、RocketMQ,下面仅仅介绍如何通过Redis模拟实现简单可用的消息队列。
2025-03-02 20:43:33
783
原创 Redis实现优惠券秒杀(Redisson分布式锁)
使用 Java 的生成一个 36 位的字符串。利用关系型数据库(如 MySQL)的自增主键特性,每次插入一条记录时自动生成唯一 ID。生成一个 64 位的整数,包括1bit符号位、41bits时间戳、10bits机器ID、12bits序列号。利用 Redis 的INCR命令,每次调用时对指定键的值进行原子递增。订单表如果使用数据库自增ID会存在以下问题:1、id的规律性会将订单相关信息暴露给用户2、单表数据量限制,需要分表存储大规模的数据全局ID生成器是一种在分布式系统下用来生成全局唯一ID的工具。
2025-02-25 18:11:39
714
原创 Redis缓存技术
就是数据交换的缓冲区,是存贮数据的临时地方,一般读写性能较高。Redis是一种缓存中间件:查询数据库之前先查询缓存,如果缓存数据存在,则直接从缓存中返回,如果缓存数据不存在,再查询数据库,然后将数据存入redis。利用Redis缓存商户信息数据,实现根据id查找商户信息的功能。读多写少的数据,适合缓存在Redis中。
2025-02-24 16:51:06
575
原创 登录校验:session、redis、token
localstorage用于在客户端长期存储信息,可存入token信息,用于登录状态的校验(校验还是服务器去做的)。用户每次打开浏览器,它都不会消失。然而,其安全性较低。
2025-02-22 16:38:49
728
原创 G. Gifts from Knowledge(图论)
遍历每一列,如果第i列和第m-i+1列中出现超过2个‘1’,显然方案数为0。将翻转情况下和不翻转情况下出现‘1’的行记录下来,分别构成连通块,这样的连通块是锁定的。如0100与0101,由于第二列均为1,所以情况只能是(翻转,不翻转)/(不翻转,翻转)两种情况。即这两个节点连通起来。连通的节点即为状态互锁的节点,构成连通块。题意:对于一个n*m的01矩阵,每一行可以进行翻转,求使得结果矩阵的每一列最多只有一个‘1’的方案数。注意对于同一节点,翻转或不翻转只能取其一。求连通块数,遍历每个节点的父节点即可。
2024-10-14 10:49:20
260
原创 IDEA项目报错 java.lang.NoSuchFieldError: Class com.sun.tools.javac.tree.JCTree$JCImport does not
由于升级到Java 21后,Lombok等库无法正确访问内部的。使用lombok的高版本可解决该问题。
2024-07-24 20:59:40
314
1
原创 安装SSMS后启动报错:未能加载各类包。
接下来又在网上搜相关报错解决方法,挨个试了遍,最后在我无措了数小时后找到了一篇博客,说是以管理员身份运行(参考链接附在文末),尝试了一下,真的没有报错信息了!找了一晚上报错处理方法,以为是SSMS配置出错,或者是版本问题,网上的大多方法都无法解决我遇到的“未能加载包”问题。首先,我点开指引的路径找到.xml文件,这是一个SSMS启动日志文件,里面记录了报错信息,但是也没有找到解决方法。出现该问题是跟自己的文件读写权限有关,应当是SSMS没有读写包的权限导致的报错。
2024-04-23 21:27:42
796
2
原创 【数据结构课程设计】计算动态中位数
1、给定一系列数据,如果按大小排序,则中位数只是中间项(数据个数为奇数),或者如果没有中间项(数据个数为偶数),则为两个中间项的平均值。例如,序列3, 1,9, 25, 12的中位数是9,而序列的中位数是9.5。2、如果增加数据,则需要能够动态维护运行中位数。即当遇到每个新数据时,都会计算更新的中位数。当然,这应该尽可能高效地完成。3、例如,依次读入数据,则动态返回的中位数列表应该是。1.首先设计一个计算动态中位数的初始算法版本,可以每次读入新数据时,及时排序。
2024-01-18 21:54:45
552
2
原创 【数据结构课程设计】离散事件模拟——海关检查站模拟
主要分为eventlist类存储事件列表,用链表的方式记录每个时刻待发生的事件,用以之后处理这些事件,并记录下排队时间、处理时间等数据,用来最后显示测试结果;linkqueue类存储检查站的排队队列,用链表的方式存储当前时刻排队情况,该程序中排队队列初始设置为4个。事件列表和排队队列信息会在每个新事件发生时实时打印在页面。eventlist事件列表类中每个结点内容为:事件发生时间occurtime,事件类型type,指向下一个事件结点的指针*next。
2024-01-18 21:42:45
2293
1
原创 【数据结构课程设计】简单搜索引擎系统
该程序使用python语言实现利用爬虫代码爬取网站链接信息,将网站中文词语通过结巴分词进行分割,并存储爬取的数据信息,利用结巴分词库处理输入框用户输入的词语,进行搜索,通过链接评价函数,优先显示评分较高的链接;设计简单的html页面,实现可视化搜索功能。爬虫模块spyder.py——爬取给定网页的子链接,存储数据到.db文件中搜索模块searchengine.py——定义搜索引擎类,需要根据用户搜索的字符串分割成多个关键词,再根据三种评判算法综合评价各个链接,查询相关链接,并实现网页的建立。
2024-01-18 21:25:10
2217
6
原创 【动态规划基础】矩阵
若dp[i-1][j-1]=2,而dp[i-1][j]=1,则表示dp[i-2][j]=0,无法构成边长为3的正方形。dp[i][j]=3,则dp[i-1][j-1]、dp[i][j-1]、dp[i-1][j]至少为3-1=2,即以其为右下角的正方形至少有两个。dp[i][j]表示从起点到达坐标(i,j)处的路径条数,状态转移方程为dp[i][j]=dp[i-1][j]+dp[i][j-1]。故dp[i][j]=min(dp[i-1][j-1],dp[i-1][j],dp[i][j-1])+1。
2023-12-11 00:06:22
437
3
原创 【动态规划基础】斐波那契类型
引入:斐波那契数列引入:斐波那契数列斐波那契数列(Fibonacci sequence)是数学家斐波那契以研究兔子繁殖为例研究的数列,故称“兔子数列”,又称为黄金分割数列。数列如下:1,1,2,3,5,8,13.......。兔子问题:假设一对初生兔子要一个月才到成熟期,而一对成熟兔子每月会生一对兔子,那么,由一对初生兔子开始,12 个月后会有多少对兔子呢?
2023-12-10 18:18:26
1825
3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人