- 博客(183)
- 收藏
- 关注
原创 二刷 黑马点评 用户签到、UV统计
如何利用 Redis 实现用户签到功能?以 “年月” 为 key(如:202507),使用 BitMap 结构,将每月每天映射为 bit 位(1 表示签到,0 表示未签到)。通过SETBIT命令,以 “当月第 n 天 - 1” 为偏移量,将对应 bit 位置为 1,实现签到存储。如何统计用户当月的签到情况(如连续签到天数)?利用BITFIELD命令读取当月前 N 天的 bit 位(N 为当前日期),获取对应的无符号整数。
2025-07-18 21:24:34
1057
原创 二刷 黑马点评 附近商户
Redis GEO 数据结构在 “附近商户” 功能中核心作用是什么?Redis GEO 用于存储地理坐标信息(经度、纬度),并提供高效的地理位置查询能力(如范围搜索、距离计算),是实现 “按距离筛选附近商户” 功能的核心存储与查询工具。商户数据导入 Redis GEO 的关键步骤是什么?核心步骤包括:①从数据库查询所有商户信息;②按商户类型(typeId)分组,确保同类型商户聚合;
2025-07-18 21:01:38
1074
原创 二刷 黑马点评 好友关注
如何实现用户的关注、取关及关注状态判断功能?通过数据库表tb_follow存储用户关注关系,使用 MyBatis-Plus 实现:关注:向表中新增user_id(当前用户)和follow_user_id(被关注用户)的记录;取关:根据上述两个字段删除对应记录;判断关注状态:查询表中是否存在该用户对目标用户的关注记录,返回布尔值。共同关注功能的实现原理是什么?
2025-07-18 20:38:59
926
原创 二刷 黑马点评 达人探店
实现探店笔记的图文存储时,需设计哪些核心数据结构?需设计两个核心表:探店笔记表:存储笔记的标题、文字内容、图片路径等核心信息,用于承载笔记主体内容;评价表:存储其他用户对笔记的评价内容,关联笔记 ID 和评价用户 ID,实现笔记与评价的关联管理。图片上传功能中,如何避免文件名重复导致的覆盖问题?通过「生成新文件名」解决:先获取上传文件的原始文件名,提取文件后缀(如.jpg);调用createNewFileName方法,基于原始后缀生成唯一文件名;
2025-07-18 16:44:47
871
原创 二刷 黑马点评 Redis消息队列
Redis 的 List、PubSub、Stream 三种消息队列各有什么核心特点和适用场景?List:特点:支持持久化、消息有序、基于 LPUSH/LPOP 操作,仅支持单消费者。适用场景:简单的单消费者异步通信(如订单通知),需保证消息有序性和持久化。PubSub:特点:基于发布 - 订阅模型,支持多生产者 / 多消费者,但不支持持久化,消息无堆积能力。适用场景:实时通知(如聊天消息广播),无需存储历史消息,可容忍消息丢失。
2025-07-18 15:48:27
1024
原创 二刷 黑马点评 秒杀优化
将高频、低耗时的校验逻辑放在 Redis 中执行,利用其内存级别的读写性能和原子性操作能力,可以快速完成资格校验。同时避免了直接访问数据库带来的网络延迟和 IO 开销,显著提升系统吞吐量。
2025-07-17 19:49:11
1128
原创 Codeforces Round 1016 (Div. 3) A-F
一个数字k是理想的生成器,如果对于任意一个数字n(n≥k,都存在数组和为n的回文数组,且这个数组的和的长度刚好为k。
2025-07-17 17:04:59
921
原创 二刷 黑马点评 分布式锁-redission
可重入锁是如何防止死锁的?可重入锁允许同一线程多次获取同一把锁,通过计数器(state)记录重入次数。重入时递增,释放时递减,减至 0 才完全释放锁。这种机制避免了同一线程因重复请求同一锁而导致的阻塞,从而防止死锁。Redisson 的分布式可重入锁如何实现原子性?Redisson 使用 Lua 脚本实现分布式锁的原子性操作。加锁时,通过 Lua 脚本原子性地检查锁是否存在、是否自己持有以及递增重入次数;释放锁时,同样通过 Lua 脚本原子性地递减重入次数并判断是否释放锁,确保操作的原子性。
2025-07-16 19:52:46
644
原创 Neowise Labs Contest 1 (Codeforces Round 1018, Div. 1 + Div. 2)
给你一个长度为n-1的字符串,每个字符为<或>,设索引从1开始若字符串中第i个字符出现<则i+1个元素来说要小于1~i之间的所有元素若字符串中第i个字符出现>则i+1个元素来说要大于1~i之间的所有元素求满足要求的排列是什么样子的。
2025-07-15 21:09:16
993
原创 二刷 黑马点评 优惠卷秒杀
核心要求包括:高可用、唯一性、高性能、安全性(非规律可猜)、递增性。基于 Redis 的实现方案:ID 由 1 位符号位(固定为 0)、31 位时间戳(当前时间与起始时间的秒级偏移)、32 位序列号(Redis 每日自增计数器)组成,通过INCR命令实现序列号原子递增,拼接后生成全局唯一 ID。
2025-07-14 17:42:20
405
原创 Codeforces Round 1019 (Div. 2) A-D
给你一个长度为n的数组a,让你求a的最长子数组,假设长度为m,使得对于每个元素ai,都存在有另一个同样长度m的数组b,数组b的每个元素都不相同,其对应位置的bi有ai∗biaj∗bj1<=ijm。
2025-07-14 15:33:31
894
原创 二刷 黑马点评 商户查询缓存
缓存的核心作用是什么?缓存通过将高频访问数据存储在内存中,显著提升读写效率、降低响应时间,同时减少后端数据库的访问压力,缓解高并发场景下的服务器负载。常见的本地缓存实现有哪些?核心区别是什么?常见实现包括(线程安全,适用于高并发本地缓存,无持久化)、(功能丰富,支持过期策略、容量控制等,适合本地二级缓存)、HashMap(非线程安全,高并发下易出问题,不推荐直接使用)。核心区别在于线程安全性、功能丰富度及适用场景。如何解决缓存与数据库的数据一致性问题?
2025-07-11 21:52:22
1253
原创 Codeforces Round 1020 (Div. 3) A-E
给你一个长度为n的01串,每次能够翻转一位0变成1或者1变成0,从而创造一个新串,问在所有n个串中1的个数是多少。
2025-07-11 16:08:20
614
原创 二刷 黑马点评 短信登陆功能
因 Session 存储于单服务器本地,多 Tomcat 集群时存在共享问题,同步 Session 会增加服务器压力和延迟;Redis 为分布式共享存储,支持集群,可解决 Session 共享问题,适配高并发场景。
2025-07-10 18:10:04
1110
原创 Codeforces Round 1021 (Div. 2) A-C
给你一个十位数字的字符串,每一位数字i最小为10-i,你可以任意调换这个字符串内数字的位置,问最小的字符串是多少。
2025-07-10 16:21:15
949
原创 二刷 黑马点评 部署
我是mac端的homebrew安装的nginx在homebrew/etc/nginx下复制资料中nginx-1.18.0/conf目录下的nginx.conf文件(记得备份原件)在opt/homebrew/var/www目录下移动资料中的hmdp到此处在命令行输入nginx -s reload。
2025-07-09 18:23:15
408
原创 Educational Codeforces Round 178 (Rated for Div. 2) A-D
桌上有三副牌堆a,b,c(a<b<c)c移动一部分牌到a,b,问能否满足最后三副牌堆牌数为相等。
2025-07-09 18:04:01
546
原创 Codeforces Round 1035 (Div. 2) A-D
给你a,b,x,y给a+1的代价是x,a异或1的代价是y问a能否变成b,能的话最小代价是多少。
2025-07-09 16:00:32
682
原创 EPIC Institute of Technology Round Summer 2025 (Codeforces Round 1036, Div. 1 + Div. 2) A-D
给你一个长度为m的数组b设数组c为b非降序排列后的结果对于每一个i(1<=i<=m)如果bici则称数组b是乱序的给你一个长度为n的数组a,你可以从中删除任意多个元素,问能否实现a最后是乱序的。
2025-07-07 20:55:09
742
原创 Codeforces Round 1034 (Div. 3) A-F
给你一个0~n-1的数组,两个玩家alice和bob在一回合中alice可以随便选择一个数a并删掉bob只能选择一个数b满足(a+b)%4=3当一个玩家不能删掉数的时候这个玩家输掉游戏问在不同n的情况下,谁最后能赢得游戏。
2025-07-04 21:26:37
960
原创 二刷 苍穹外卖day12
XSSFWorkbook:处理 Excel 2007 + 的.xlsx格式,基于 XML 结构,支持最大 1048576 行 ×16384 列,文件体积较大。HSSFWorkbook:处理 Excel 2003 及以前的.xls格式,基于二进制格式,最大支持 65536 行 ×256 列,文件体积较小但功能有限。
2025-07-03 17:20:49
694
原创 二刷 苍穹外卖day11
Apache ECharts是一款基于JavaScript的数据可视化图表库,支持交互式和个性化定制。摘要介绍了三个主要统计功能的实现: 营业额统计:通过日期范围查询每日营业额数据,使用Java 8日期API处理日期区间,并通过MyBatis动态查询计算完成状态的订单总额。 用户统计:同样基于日期范围,分别计算每日新增用户数(当日注册)和总用户数(截至当日),使用MyBatis的Map参数实现条件动态查询。 订单统计:统计每日订单总数和有效订单数(完成状态),最终计算时间区间内的总订单数、有效订单数及订单完
2025-07-02 19:24:59
641
原创 DeMo复现: Decoupled Feature-Based Mixture of Experts for Multi-Modal Object Re-Identification
本文介绍了DeMo项目的环境配置、安装步骤及常见问题解决方法。首先通过git clone获取项目代码,创建conda环境并安装依赖库。运行过程中可能遇到模型文件路径错误、OpenCV缺失、grad-cam版本、文件位置等问题,通过修改配置文件路径、安装相应库、调整参数等方法解决。特别指出内存不足时可修改batch size参数,最终成功运行后会在gradcam_vis目录生成可视化结果。该指南详细记录了从环境搭建到成功运行的完整流程及典型问题的处理方案。
2025-07-01 22:03:23
427
1
原创 二刷 苍穹外卖day10(含bug修改)
Spring框架提供的任务调度工具,可以按约定的时间自动执行某个代码逻辑cron表达式 分为6或7个域,由空格分隔开每个域含义分别为秒、分、时、日、月、周通配符。
2025-07-01 14:49:15
1338
1
原创 二刷 苍穹外卖day09
本文摘要了订单管理系统的几个核心功能实现: 历史订单查询:通过分页查询用户订单,封装订单明细数据返回OrderVO对象。 订单取消:校验订单状态后更新订单为取消状态,设置取消原因和时间。 再来一单:将历史订单明细转换为购物车项,利用流操作(stream-map-collect)高效处理数据转换。 订单搜索:支持分页条件查询,并处理订单菜品信息的特殊展示需求。 代码中展示了DTO封装查询条件、BeanUtils属性复制、分页处理等典型开发模式,以及通过流式操作进行集合转换的现代化Java编程技巧。
2025-06-30 15:11:47
1006
原创 Codeforces Round 1024 (Div. 2)
给你n,m,p,q让你构造一个长度为n的数组,数组总和为m,这个数组中任意一段长度为p子区间的和为q,问你是否能够构造出这样的数组。
2025-06-27 21:33:43
822
原创 二刷苍穹外卖 day08
文章摘要:通过分析地址薄管理和用户下单功能的实现逻辑,总结了关键业务流程。地址薄默认设置采用"先取消所有默认,再设置当前默认"的两步操作,确保用户只能有一个默认地址,并通过事务保证一致性。用户下单流程包含地址校验、购物车处理、订单数据构建、明细插入及购物车清理等步骤。针对微信支付环节,提出了跳过真实支付的简化方案,包括前端修改跳转逻辑和后端直接更新数据库状态。这些实现方案兼顾了业务规则约束和开发效率优化。
2025-06-27 14:36:08
249
原创 Codeforces Round 1027 (Div. 3)
A. Square Year:给定四位数字字符串s,判断是否存在a,b使(a+b)²=s。解法是先检查s是否为完全平方数,再根据奇偶性拆分平方根。 B. Not Quite a Palindromic String:给定01串和k,判断能否通过重排使恰好k对字符对称。关键在于计算最大/最小可能对数,并检查k是否在范围内且满足奇偶条件。 C. Need More Arrays:求移除任意元素后,数组能被分成的最多连续子数组数量。贪心策略是尽可能多地分割,每次发现满足a
2025-06-26 23:56:53
934
原创 二刷苍穹外卖 day07
缓存优化与购物车功能的实现 本文介绍了菜品缓存优化和购物车功能的实现方案。 缓存优化部分: 使用Redis缓存菜品数据,按分类存储,减少数据库查询 用户端查询时优先读取Redis,未命中则查数据库并存入Redis 管理端菜品变更时清理相关缓存 采用Spring Cache简化缓存实现,使用@Cacheable、@CachePut和@CacheEvict注解管理缓存 购物车功能部分: 添加购物车时判断商品是否已存在,存在则数量+1,否则新增记录 区分菜品和套餐处理,设置基本信息 购物车数据与用户绑定,通过Th
2025-06-26 22:05:02
985
原创 Acwing 二分模版笔记
最近写到二分的时候总有些迷迷糊糊,然后拿y总的板子对两种方法进行了一点分析,做点笔记二分模板一共有两个,分别适用于不同情况。算法思路:假设目标值在闭区间[l, r]中, 每次将区间长度缩小一半,当l = r时,我们就找到了目标值。作者:yxc链接:https://www.acwing.com/blog/content/31/来源:AcWing当我们将区间[l, r]划分成[l, mid]和[mid + 1, r]时,其更新操作是r = mid或者l = mid + 1;
2025-06-26 14:42:28
700
原创 二刷 苍穹外卖 day06
文章摘要 HttpClient是一款高效的HTTP客户端工具包,用于发送HTTP请求和接收响应数据,广泛应用于支付、地图、天气等功能的API调用。其主要API包括HttpClient(客户端对象)、HttpClients(构建器)、HttpGet/HttpPost(请求类型)。发送请求的基本步骤是:创建HttpClient对象,构建请求对象,执行请求并解析响应结果。 GET请求示例展示了如何发起简单请求并解析响应状态码和内容;POST请求示例则通过JSONObject构建请求体,并设置编码和内容类型,确保J
2025-06-25 15:11:57
776
原创 二刷苍穹外卖 day05
1.Redis基于内存的key-value数据库,是存储中间件快,性能高,但不大,适合存储热点数据(频繁访问)类似于cache2.中间件介于应用系统和系统软件之间3.Redis数据类型字符串、哈希、列表、集合、有序集合SETGETHSETHGETHDELSADDSMEMBERS 返回具体成员SCARD 返回数量(size)SINTER 并集 SUNION 交集4.在java中操作redis。
2025-06-24 17:25:19
837
原创 Educational Codeforces Round 180 (Rated for Div. 2) A-D
这篇文章摘要总结了四个编程竞赛题目及其解题思路: A.Race:分析Alice和Bob在随机终点情况下的最短路径问题。如果Alice位于终点之间,Bob无法更快;否则Bob可以选择更接近终点的位置获胜。 B.Shrinking Array:判断数组能否通过特定操作变得"美丽"。有三种情况:初始满足条件、单调数组无法满足、非单调数组可通过一次操作满足。 C.Coloring Game:计算Alice先手涂色获胜的可能方法数。通过分析Alice涂三个元素与Bob涂一个元素的情况,使用二分法确
2025-06-24 11:27:13
833
原创 Codeforces Round 1030 (Div. 2) A-D1
定义一个01串为完美如果其中的101子串个数和010子串个数相等,给你n,k,其中n为01串长度,k为1的个数,让你构造完美01川。
2025-06-23 19:05:36
641
原创 二刷苍穹外卖 day04
1.对于@RequestParam的两种情况:对于简单类型(如Long,String,Integer)默认按@RequestParam处理,即从请求参数(?id=1)中提取值,可省略但如果是复杂类型(List,自定义对象)默认按对象属性绑定处理,Spring 会认为ids是一个复杂类型的属性(而非请求参数),但由于没有对应的 “父对象”,会导致参数绑定失败(报或无法解析 List)。当显式添加时:解析器会从请求参数中提取所有同名的ids值(如?),并自动封装为List<Long>
2025-06-23 14:56:04
583
原创 二刷苍穹外卖 day03
本文介绍了两种技术实现方案:公共字段自动填充和文件上传功能。 公共字段自动填充采用AOP切面编程实现: 使用自定义注解@AutoFill标记需要处理的方法 通过切面类AutoFillAspect拦截注解方法 利用反射机制自动填充公共字段 开发者只需在Mapper方法上标注操作类型即可 文件上传功能实现: 配置OSS相关参数 创建工具类处理文件上传逻辑 控制器接收MultipartFile文件 生成唯一文件名后上传至OSS 返回文件访问路径 两种方案都体现了减少重复代码、提高开发效率的设计思想,AOP实现了无
2025-06-22 21:30:39
898
原创 Codeforces Round 1028 (Div. 2) A-C
Gellyfish有a点血,他的骑士有c点血Flower有b点血,他的其实有d点血Gellyfish先手,每次双方的骑士都可以攻击主人或者骑士,当主人血量为0时游戏结束问在最优策略下谁会获胜。
2025-06-21 21:14:19
939
原创 Codeforces Round 1032 (Div. 3) A-E
给你一个数组xn和初始位置pos,每次你可以进行以下操作的任意一个:从pos移动到pos+1从pos移动到pos-1当pos=xi时代表遍历到了xi元素问最少操作多少次可以遍历到所有的xn元素。
2025-06-20 17:44:56
1015
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人