- 博客(97)
- 收藏
- 关注
原创 Java实现三个线程顺序打印
三个线程按顺序打印”是一个经典的并发编程面试题,通常要求线程 A 打印 1,线程 B 打印 2,线程 C 打印 3,然后循环往复。实现这个逻辑的核心在于。我们可以使用 Java 的配合,或者更现代的配合Condition。
2026-01-01 22:52:37
321
原创 java基于reentrantlock/condition/queue实现阻塞队列
【代码】java基于reentrantlock/condition/queue实现阻塞队列。
2026-01-01 21:23:10
383
原创 授权重定向地址配置模式解析
您提到的方式是前端中转模式,这是一种常见且可行OAuth2重定向地址配置为前端的中转页面是可行的,特别是对于前后端分离项目。前端拿到微信返回的code之后,会立即请求后端服务器,将code传递给后端。最终由后端负责使用code向微信服务器换取真正的和用户信息,从而完成登录。明白了。既然是前后端分离的项目,那么采用您提到的前端中转模式就是最标准的实践。
2025-11-29 17:19:36
794
原创 java中null做类型强制转换会报错吗,强制转换后的值还是null吗
操作结果异常/错误引用类型 newVar = (目标类型) null;newVar的值是null没有异常null引用调用实例方法(如运行时失败。
2025-11-28 11:35:30
336
原创 java 代码审查工具推荐
在 IDE 中使用SonarLint进行即时反馈,然后在 Maven 构建流程中集成SpotBugsCheckstyle和PMD插件作为质量门禁,这是目前最推荐和全面的 Java 代码质量保证体系。您想先尝试在 IDE 中安装 SonarLint 插件,还是先配置pom.xml中的 Maven 插件呢?
2025-11-28 11:14:26
1194
原创 现在为什么建议使用构造方法注入
关键字修饰依赖字段,并通过构造方法初始化,可以确保这些依赖在对象生命周期内。如果缺少任何依赖,编译器会立即报错,保证了类在实例化时处于一个有效状态。这使得类状态更稳定、线程更安全,也更容易推理。)允许在对象创建后修改依赖,破坏了对象的不变性。构造方法参数清晰地列出了一个类运行所需的。Setter 注入和字段注入(非。
2025-11-27 17:03:38
412
原创 @JsonValue 的作用
JsonValue: 定义了一个私有且不可变的code字段,它存储了该枚举值对应的业务代码或短标识符。@JsonValue: 将此注解放在字段上,指示 Jackson 在序列化该枚举对象时,应使用该code字段的值作为输出。
2025-11-27 15:49:45
314
原创 Hash 与 String 存储用户信息的对比
在电商系统中,使用来存储用户信息是比 String 结构的选择。虽然 String 结构可以用来存储序列化后的完整用户信息(如 JSON 字符串),但 Hash 结构提供了显著的优势。
2025-11-27 14:08:55
403
原创 OpenID Connect (OIDC) 协议详解
OIDC 的核心目标是提供一个简单的、基于 HTTP 的协议,让客户端(例如一个网站或移动应用)能够可靠地验证用户的身份。OpenID Connect (OIDC) 是一个基于。
2025-11-27 10:36:41
531
原创 RBAC 基于角色的访问控制介绍
好的,RBAC(Role-Based Access Control,基于角色的访问控制)是目前企业级应用和软件系统中最主流、最成熟的权限管理模型。它通过引入**“角色”**这一中间层,极大地简化了复杂的权限管理工作,提高了系统的安全性和可维护性。
2025-11-27 09:46:29
702
原创 权限校验中的认证 (Authentication)和授权 (Authorization)
特征认证 (Authentication)授权 (Authorization)目的验证身份验证权限问题你是谁?你能做什么?前提不需要前提必须先完成认证实现位置登录模块、身份提供者业务逻辑层、接口拦截器失败后果无法登录 (无法执行操作 (先认证,后授权。只有确定了用户的身份(谁),系统才能判断他是否有权做某事(允许做什么)。
2025-11-27 09:44:27
548
原创 关于用户权限的设计,前端和后端都需要考虑
前端负责展示,后端负责安全。如果一个用户在菜单上看不到“删除”按钮,但后端没有对接口进行权限校验,那么任何了解该接口地址的用户(包括恶意爬虫或黑客)都可以轻易构造请求来执行删除操作,这将导致严重的安全漏洞。必须使用同样的权限标识(例如)来同时控制前端菜单的显示和后端接口的调用。
2025-11-27 09:41:45
494
原创 Java实现文件MD5的计算
好的,用 Java 实现二进制文件(包括 EXE 文件)的 MD5 计算,最常用的方法是使用 Java 标准库中的类。这种方式同样遵循分块读取和更新哈希值的步骤,可以高效处理大文件。
2025-11-26 16:52:35
432
原创 软件发布版本号说明
软件版本号通常采用,这是一种广为接受的标准,尤其在**语义化版本控制(Semantic Versioning,简称 SemVer)**中得到了明确规范。
2025-11-26 16:51:51
1021
原创 分库分表下如何实现分页查询功能
场景推荐方案核心优势限制/注意事项按 ID 排序,只需“下一页”基于 ID 游标(Cursor)性能最高,完全避免深分页问题。无法支持“跳转到任意页”。按非 ID 字段排序,只需“下一页”基于 Sort Key + ID 游标性能接近 ID 游标,仍可利用索引。复杂排序(多列)场景不适用。必须支持“跳转到任意页”两次查询法(ID Only Query)在支持跳转的前提下,最大限度节省传输和归并资源。需要两次 DB 往返,且第一次查询仍需跨库归并。查询页码较浅 (N<10)
2025-10-15 19:17:23
1066
原创 Spring AI
Spring AI 是一个旨在将的应用框架。简单来说,它的作用是让 Java 开发者能够以,轻松、灵活地集成和使用各种大模型(Large Language Models, LLMs)和其他 AI 服务。
2025-10-11 18:01:57
573
原创 spring webflux
Spring WebFlux 提供了构建高性能、可扩展的响应式 Web 应用程序的能力,特别适用于需要处理高并发和 I/O 密集型操作的微服务或 API Gateway 场景。
2025-10-11 17:58:26
382
1
原创 starocks创建表后还需要设置什么
在 StarRocks 中创建表时,除了定义列名和数据类型,还需要设置一些关键的参数,这些参数对表的存储方式、查询性能和数据管理有着重要的影响。
2025-10-11 09:19:48
1154
原创 starrocks表模型
StarRocks 提供了四种表模型,每种模型都针对不同的业务场景和数据处理需求进行了优化。选择合适的表模型是进行高效数据建模和性能优化的第一步。
2025-10-11 09:14:52
735
原创 easyexcel实现excel读取
Model (实体类):使用映射列。Listener (监听器):实现,在invoke()中处理每行数据,在中进行收尾工作。Read (读取):使用指定文件、实体类和监听器,调用或启动。使用监听器模式(异步读取)是 EasyExcel 推荐的方式,因为它能有效地避免 OOM(内存溢出)问题。
2025-10-08 17:01:48
700
原创 使用分布式ID作为MybatisID生成器
***/@Component@Override//返回生成的id值即可./*** 全局id生成器*//*** 初始化workerId*/");
2025-04-23 10:46:53
526
原创 利用HandlerMethodArgumentResolver和注解解析封装用户信息和Http参数
【代码】利用HandlerMethodArgumentResolver和注解解析封装用户信息和Http参数。
2025-04-23 10:32:59
410
原创 使用arthas测试接口响应时间
对于标红占比耗时较大的接口可以进行具体的分析和优化。选择需要测试的java进程,我输入1然后回车。可以看出各个子方法的耗时和占比。trace 全路径 方法名。
2025-02-19 15:55:01
691
原创 ES常用操作
聚合分析是数据库中重要的功能特性,完成对一个查询的数据集中数据的聚合计算,如:找出某字段(或计算表达式的结果)的最大值、最小值,计算和、平均值等。Elasticsearch作为搜索引擎兼数据库,同样提供了强大的聚合分析能力。对一个数据集求最大、最小、和、平均值等指标的聚合,在ES中称为。
2024-06-26 15:09:22
1353
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅