- 博客(86)
- 收藏
- 关注
原创 satoken有状态的原理
会话删除:核心手段,直接清除服务器端数据。黑名单(可选):增强安全性,防止注销后的 Token 被恶意使用。过期策略:基于时间的自动失效机制。SaToken 的核心设计理念之一正是Token 与 Session 的强绑定,这种绑定关系是实现 Token 控制(包括主动失效、权限管理、多端登录等)的基础。SaToken 的Token-Session 绑定机制将会话数据与服务端存储解耦,简化 Token 的生成和校验。通过操作 Session 间接控制 Token,实现灵活失效、权限动态更新。
2025-03-25 11:54:11
556
原创 JavaScript结合19位雪花id的坑
前端打印的ID是1895444564643287000,而后端显示的是1895444564643287040。明显是ID在传输过程中出现了精度丢失的问题。
2025-02-28 21:18:41
249
原创 操作系统内存管理和分片和分段及相关问题
分片是将内存划分为固定大小的块(页),物理内存的块称为页框(Page Frame),虚拟内存的块称为页(Page)。通过页表(Page Table)管理虚拟页与物理页框的映射。操作系统需要管理物理内存和虚拟内存,以便为多个进程提供高效、安全的内存访问。分片和分段是两种主要的内存管理技术。通过分段和分片,操作系统能够实现高效的内存管理,支持多任务并发执行,并提供内存保护和共享机制。每个段有独立的起始地址和长度,通过段表(Segment Table)管理。先将内存划分为段,再将每个段划分为固定大小的页。
2025-02-26 17:15:31
624
原创 Java日志性能优化
大多数日志框架(如 Logback、Log4j)在日志级别未启用时,会跳过日志输出,但无法跳过参数的计算。)且日志内容涉及复杂计算或序列化操作时。会导致传入的参数被计算,即使日志最终不会输出。序列化操作会生成临时对象,增加垃圾回收(GC)的压力。)会占用大量 CPU 资源,尤其是在高并发场景下。可以避免不必要的序列化操作,提升性能。如果日志级别未启用(如当前日志级别为。如果日志内容涉及复杂对象的序列化(如。,尤其是在日志级别较高(如。仍会被执行,浪费资源。复杂的序列化操作(如。
2025-02-25 17:46:01
144
原创 std::set、std::map 和 std::unordered_map
是常用的关联容器,但它们在实现方式、性能和应用场景上有显著差异。需要唯一元素的有序集合,支持快速插入、删除和范围查询(如日期排序、唯一用户ID管理)。需要额外空间处理哈希冲突(如负载因子控制),通常内存占用更高,但实际访问速度更快。需要高速哈希查找的场景,如缓存系统、字典(键值对频繁访问且无需顺序)。内存占用相对较高,但结构紧凑,节点存储父节点、子节点指针和颜色标记。插入或删除元素时,只有被操作的节点的迭代器失效,其他迭代器不受影响。需要键值对的有序映射,如配置项存储(键为字符串,值为整数)。
2025-02-25 14:17:00
403
原创 Vue的父子组件通信问题
在 Vue 中,父子组件的通信是组件间数据传递的核心机制之一。:父组件通过插槽向子组件传递内容(HTML 或组件),子组件定义插槽位置。根据具体需求选择最适合的通信方式,保持代码的可维护性和可读性。:子组件通过自定义事件向父组件发送消息,触发父组件的方法。
2025-02-25 14:15:19
1032
原创 理解CompletableFuture的非阻塞
是指程序在执行某个操作时,不会因为等待该操作完成而停止执行后续代码,而是可以继续处理其他任务。在 Java 并发编程中,通过回调机制和异步执行实现了非阻塞的特性。提供了丰富的回调方法(如thenApplythenAcceptthenRun等),可以在任务完成后自动触发回调函数,而无需阻塞主线程等待任务完成。
2025-02-24 21:29:55
392
原创 FutureTask 和 CompletableFuture
是 Java 并发编程中用于处理异步任务的两种工具,但它们在功能和使用场景上有显著区别。在实际开发中,如果需要处理复杂的异步任务依赖或组合,推荐使用。如果只是简单的异步任务执行,
2025-02-24 21:28:18
396
原创 @Async 异步方法,并配置定制线程池
它的主要作用是将方法的执行放到一个独立的线程中,从而不会阻塞主线程,提高系统的并发性能和响应速度。是 Spring 提供的强大工具,可以轻松实现异步编程,提升系统性能。,可以避免阻塞主线程,提高用户体验。如果有其他问题,欢迎随时提问!在 Spring Boot 启动类或配置类上添加。是 Spring 框架提供的一个注解,用于。在需要异步执行的方法上添加。
2025-02-24 21:03:58
523
原创 Java使用EasyExcel实现异步导出
希望这个 Demo 对你有帮助!如果有其他问题,欢迎随时提问。,包括用户发起导出请求后,系统先返回响应,后台读取数据并上传至。在 Spring Boot 启动类上添加。,最后通知用户下载的完整流程。工具类实现异步导出功能的。
2025-02-24 21:02:04
679
原创 分步编译编译
分步编译是指将源代码的编译过程分解成多个阶段,分别进行每个阶段的操作,这样可以更好地调试和优化每个步骤。GCC 提供了多个选项来控制编译的各个阶段,常见的有预处理、编译、汇编和链接等步骤。通过这些选项,你可以逐步查看每个阶段的输出,方便调试和优化。
2025-02-19 20:46:09
600
原创 大小端存储
大小端存储:影响多字节数据的存储顺序。小端存储将低字节存储在低地址,大端存储将高字节存储在低地址。指针强制转换:通过强制转换可以将一个指针转换为不同类型的指针,从而按不同的方式访问内存。需要注意数据对齐、大小和内存越界等问题。
2025-02-19 16:08:11
821
原创 C/C++ 中,*、->、前后 ++ 和 & 这些运算符的优先级和结合性
在 C/C++ 中,、、前后 和 这些运算符的优先级和结合性是理解代码行为的关键。下面我将详细梳理这些运算符的优先级、结合性以及如何正确理解它们的组合。我们从优先级表上整理出这些运算符的优先级顺序:(解引用)和 (取地址)优先级:高于 和 ,它们在指针操作中涉及到获取地址或访问指向对象的值。 运算符(前++ 和 后++):优先级较低,后++()的优先级高于 前++()运算符,但它们的结合性是从右到左的。 运算符:优先级高于 ,但是低于 和 。假设 是一个指针, 和 的组合:执行顺序:组合2:
2025-02-19 15:52:30
411
原创 进程地址空间与 C/C++ 变量存储的详细梳理
通过上述梳理,可以清晰理解进程地址空间的组成、C/C++ 变量的存储位置,以及页表如何实现逻辑地址到物理地址的映射。
2025-02-19 15:38:18
621
原创 进程拥有的资源
是资源分配和调度的基本单位。一个进程不仅包括程序的代码和数据,还包括运行时的上下文信息。进程可以打开文件,并通过文件描述符(File Descriptor)访问这些文件。每个进程都有自己独立的地址空间,包括代码段、数据段、堆和栈。全局变量是进程地址空间的一部分,存储在数据段中。挂起的警报(如定时器)也是进程的一部分。等),并可以设置信号处理函数。打开的文件是进程资源的一部分。进程可以接收信号(如。
2025-02-19 14:58:29
142
原创 计算存储一幅大小为 1024×10241024×1024、256 灰度级的图像所需的字节数
存储一幅大小为 1024×10241024×1024、256 灰度级的图像,需要的存储空间为:1,048,576 字节(1 MB)1,048,576 字节(1 MB)。
2025-02-19 14:12:53
337
原创 C++ 虚表(Vtable)和虚基表(Vbtale)与 虚函数 和 虚继承
虚基表(Vbtale)**是通过编译器的实现来支持虚函数和虚继承的机制。它们通过特定的数据结构在内存中存储,并且可以通过一些方法可视化或理解它们在内存中的布局。在虚继承中,当一个类被多个基类继承时,多个基类会共享一个虚基类的实例。虚基表是用来处理虚继承的,尤其是用于指向虚基类子对象的指针。每个包含虚函数的类都会有一张虚表,它存储了该类的所有虚函数的指针。每个包含虚函数的类会有一个虚表,它存储了指向该类虚函数的指针。的成员函数,它允许通过基类的指针或引用调用派生类中的重写函数,而不是调用基类的函数。
2025-02-15 21:17:34
872
原创 C++内存模型
栈区存储局部变量和函数调用信息,内存分配和回收快速,但大小有限。堆区用于动态内存分配,大小仅受系统限制,但需要手动管理内存。静态区存储全局变量、静态变量、常量等,在程序运行期间存在。代码区存储程序的执行代码,是只读的。BSS区存储未初始化的全局变量和静态变量,由系统在运行时初始化为零。常量区存储常量数据,通常是只读的。静态区本身并不直接决定程序的“快慢”,但它对程序的效率有间接影响,主要体现在内存访问的效率、生命周期管理、数据共享等方面。静态区中的数据可能保持在 CPU 缓存中,减少访问时间。
2025-02-10 19:37:43
887
原创 将本地jar包安装到maven仓库
使用以下命令将 JAR 文件安装到本地 Maven 仓库中。你需要指定 JAR 文件的路径、POM 文件(如果没有,可以临时指定基本信息),以及 groupId、artifactId 和 version。在 Windows 上,你可以使用命令提示符或 PowerShell。安装完成后,你可以在本地 Maven 仓库中找到这个 JAR 文件。安装到本地 Maven 仓库的步骤,并配置为你在注释中提到的依赖格式。安装到 Maven 仓库中,你需要使用 Maven 的。现在你可以在你的 Maven 项目中的。
2025-02-10 18:24:12
335
原创 nginx配置ssl协议并代理5000端口的后端api
代理到 Flask 的 HTTP 服务。# 代理请求到 Flask 应用程序(5000 端口)# HTTP 服务器配置(重定向到 HTTPS)# HTTPS 服务器配置(监听 443 端口)# 重定向 HTTP 到 HTTPS。# SSL 证书路径。# SSL 协议配置。# SSL 会话缓存。
2025-01-22 01:11:30
439
原创 C语言执行过程中地址,进程地址空间编译、寻址原理
1.假如有两个函数main和func在编译的时候就会有一个地址这个编译器也会遵守这个地址的规则,也就是在汇编的时候是可以看到这个地址的这个地址是逻辑地址也就是虚拟地址,3.在程序内main函数调用了func,他这个就会产生一个跳转用的地址这个地址是虚拟地址/逻辑地址,并且初始化进程地址空间.2.当我把其执行加载到物理内存时就会有一个物理地址因为实际你在物理的内存中占了空间了,那么每个函数变量就具备了物理地址.4.有了2和3就可以建立虚拟地址和物理地址的映射---页表。
2025-01-16 15:16:34
154
原创 undolog,redolog,binlog分别是做什么的?
是用于实现数据持久性和一致性的重要日志机制。三者共同协作,确保 MySQL 数据库的高可靠性、事务一致性以及数据的备份与同步能力。:保证事务的原子性(回滚操作)和一致性(MVCC 实现并发读取)。:保证事务的持久性(崩溃恢复)。:用于增量备份和主从复制。在数据库系统中(尤其是。
2025-01-08 18:02:10
849
原创 SpringMVC核心、两种视图解析方法、过滤器拦截器 “ / “ 的意义
Spring MVC 的核心职责之一是将数据绑定到视图并呈现给用户。来将逻辑视图名称解析为具体的视图文件(如 HTML、JSP)。对应 Thymeleaf 模板文件 (传递数据,并返回视图的逻辑名称。传递数据,并返回视图的逻辑名称。的核心内容,以及路径匹配中 /同时设置视图名称和数据。同时设置视图名称和数据。的使用规则和场景总结。对应 JSP 文件 (
2024-12-29 18:36:28
768
原创 Feign的调用demo 和 EnableFeignClients的包名
auth-api的配置配置。这个包路径是auth-api模块中定义的 Feign 接口所在的包名。Maven 依赖确保刷题微服务正确引入了auth-api模块的依赖。服务名匹配确保中的name与权限微服务的一致。注册中心如果使用注册中心(如 Eureka、Nacos),确保权限服务正常注册,并能被刷题微服务发现。
2024-12-25 14:08:51
335
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人