摘要: 前一篇已经分析了多种权限模型,其中比较常用的是基于角色的权限控制。 基于角色的权限控制 表设计: 用户表 用户--角色关系表 角色表 角色--菜单关系表 菜单表 权限标识格式: 格式:xxx:xxx:xxx(模块:资源:操作) 三段式 权限架构的分层结构: 应用层 (@RequirePermissi 阅读全文
posted @ 2026-01-27 10:43 Marktowin 阅读(62) 评论(0) 推荐(0)
摘要: 1. 概述 权限模型(Access Control Models)是信息安全领域用于管理资源访问的核心机制。它们定义了谁(主体)可以对什么(客体)进行哪些操作(如读、写、执行)。常见的模型包括DAC、MAC、RBAC、ABAC等。这些模型可单独使用或组合(如RBAC与ABAC的混合)。选择模型取决于 阅读全文
posted @ 2026-01-24 11:23 Marktowin 阅读(44) 评论(0) 推荐(0)
摘要: 上一篇已经给出了选举leader执行任务的案例,接下来将领导者选举例子改成分布式锁(Distributed Lock)的实现方式。 模拟一个高并发扣减库存的场景:多个节点同时抢购同一商品(库存=100),使用 ZooKeeper 分布式锁确保同一时刻只有一个节点能扣库存,避免超卖。 核心区别回顾: 阅读全文
posted @ 2026-01-23 10:15 Marktowin 阅读(405) 评论(0) 推荐(0)
摘要: Apache ZooKeeper 是一个开源的分布式协调服务,用于分布式系统中维护配置信息、命名、提供分布式同步和组服务。下面根据您的要求,详细说明 ZooKeeper 的产生原因、最初使用、最新的使用、不同版本的更新点、实现原理、部署和使用。内容基于官方文档和可靠来源整理,并包含 Java 代码片 阅读全文
posted @ 2026-01-22 17:22 Marktowin 阅读(458) 评论(0) 推荐(0)
摘要: 在 Spring Boot 项目已经开发完成后,想要实现国际化(i18n),让所有提示信息(后端返回的错误消息、成功消息、异常信息、枚举描述等)支持多语言,处理流程如下: 1. 创建国际化资源文件(messages.properties) 在 src/main/resources 目录下(新建 i1 阅读全文
posted @ 2026-01-21 15:15 Marktowin 阅读(553) 评论(0) 推荐(1)
摘要: 在 MyBatis-Plus开启逻辑删除 的情况下,updateById更新逻辑删除字段时, “看起来执行了但实际上没有更新”的问题是一种较为常见但不易察觉的问题。 背景: 项目中使用mybatis-plus且已开启逻辑删除: 1 mybatis-plus: 2 global-config: 3 d 阅读全文
posted @ 2026-01-16 16:37 Marktowin 阅读(594) 评论(0) 推荐(0)
摘要: 问题背景:一个接口方法里,同步调用多个外部 HTTP 服务,在高并发下 JVM 被打爆(异步不满足业务要求) 业务中一些接口需要接口需要调用多个外部服务,如果在高并发场景下,容易出现以下问题: 堆内存爆炸:大量请求导致内存溢出 连接数耗尽:数据库连接池、HTTP连接池被耗尽 响应超时:外部服务响应慢 阅读全文
posted @ 2026-01-05 10:05 Marktowin 阅读(26) 评论(0) 推荐(0)
摘要: springboot项目中MVCconfiguration配置是继承WebMvcConfigurationSupport还是实现WebMvcConfigurer 呢? 这两者有什么区别呢? WebMvcConfigurationSupport WebMvcConfigurationSupport 是 阅读全文
posted @ 2025-11-06 16:30 Marktowin 阅读(30) 评论(0) 推荐(0)
摘要: 前一篇基本覆盖了nginx常用配置信息,但稍显简略,新增详细篇章。 Nginx 是一款高性能的开源 Web 服务器、反向代理服务器和负载均衡器,由 Igor Sysoev 于 2002 年开发,并于 2004 年首次发布。它以高效、稳定和低资源消耗著称,广泛用于处理静态文件、动态请求代理以及 HTT 阅读全文
posted @ 2025-08-27 15:13 Marktowin 阅读(29) 评论(0) 推荐(0)
摘要: 前几天新入职应届生实习,处理线上旧域名更换新域名,更新nginx配置文件之后,新域名成功启用,但旧域名一直也可以访问,只是https访问报不安全,证书倒是换掉了,但老域名一直可以访问。问至此处,遂发现,对应的nginx.conf有80端口兜底server模块,依旧将未匹配请求转发至后端服务。 写篇n 阅读全文
posted @ 2025-08-27 15:03 Marktowin 阅读(42) 评论(0) 推荐(0)
摘要: 当前项目中基本操作都是业务中抛出异常,由全局异常处理@RestControllerAdvice + @ExceptionHandler抓取并处理。常见异常处理器: MethodArgumentNotValidException(验证异常) 触发条件:`@Valid` 注解验证失败时触发,适用于 `@ 阅读全文
posted @ 2025-08-13 11:22 Marktowin 阅读(16) 评论(0) 推荐(0)
摘要: 在SpringBoot中注入redisTemplate, private RedisTemplate<String, Object> redisTemplate; 启动报错: 这是因为 Spring 的依赖注入机制和泛型类型擦除的问题: Java 的泛型在运行时会被擦除 RedisTemplate< 阅读全文
posted @ 2025-06-12 11:30 Marktowin 阅读(114) 评论(0) 推荐(0)
摘要: 记录一个前端页面问题:意图是在浏览器输入ip+port后自动跳转登陆页面login.html,springmvc拦截器添加: 1 @Override 2 public void addViewControllers(ViewControllerRegistry registry) { 3 regis 阅读全文
posted @ 2025-06-10 16:51 Marktowin 阅读(55) 评论(0) 推荐(0)
摘要: pagehelper是常用的分页插件,代码中常用到,使用简便且对代码侵入性较小,很多人都喜欢使用。不过有时会遇到分页失败问题,输出结果没有分页,日志输出sql语句没有分页关键字及分页参数,目测是pagehelper插件直接未起作用。此类情况总结起来一般是一下几种问题引起: springboot项目中 阅读全文
posted @ 2025-03-24 11:47 Marktowin 阅读(293) 评论(0) 推荐(0)
摘要: Throwable 是 Java 语言中所有错误或异常的超类,在 Java 中只有 Throwable 类型的实例才可以被抛出(throw)或者捕获(catch),它是异常处理机制的基本组成类型。实例分为 Error 和 Exception 两种。 其中,AWTError GUI图形界面化编程相关异 阅读全文
posted @ 2025-01-31 14:39 Marktowin 阅读(95) 评论(0) 推荐(0)
摘要: 重载和重写Java中,重载和重写是很容易混肴的概念,主要区别如下: 重载 。重载是指在同一个类中,可以存在多个方法名相同但参数列表(参数类型、参数个数或参数顺序)不同的方法。。重载方法的返回类型可以相同也可以不同,仅靠返回值不同不能确认是重载方法。。重载的作用是增加方法的灵活性,使得同一个方法名可以 阅读全文
posted @ 2025-01-28 18:25 Marktowin 阅读(73) 评论(0) 推荐(0)
摘要: ThreadLocal 作用: 提供线程内局部变量,多线程场景下不同线程之间不会相互干扰。 ThreadLocal 实例通常来说都是 private static 修饰的,用于关联线程、线程上下文。 减少同一个线程内的函数 或 组件之间传递变量的复杂性。 基本方法: demo: ThreadLoca 阅读全文
posted @ 2025-01-28 01:43 Marktowin 阅读(36) 评论(0) 推荐(0)
摘要: Java中单例(Singleton)模式是一种广泛使用的设计模式。单例模式的主要作用是保证在Java程序中,某个类只有一个实例存在。一些管理器和控制器常被设计成单例模式。 单例模式的好处: 能够避免实例对象的重复创建,不仅可以减少每次创建对象的时间开销,还可以节约内存空间; 能够避免由于操作多个实例 阅读全文
posted @ 2025-01-26 01:00 Marktowin 阅读(78) 评论(0) 推荐(0)