- 博客(46)
- 资源 (1)
- 收藏
- 关注
原创 Java安全通信:RSA签名 + AES混合加密详解
加密与签名技术在网络通信中的应用 本文介绍了网络通信中的核心安全技术,包括对称加密、非对称加密和混合加密方案。对称加密采用单一密钥(如AES算法),加解密速度快但密钥传输存在风险;非对称加密使用公钥-私钥对(如RSA算法),解决了密钥分发问题但性能较低。文章详细阐述了签名机制原理和实现流程,并提供了Java代码示例。针对性能优化,推荐采用混合加密方案:使用AES加密数据,再用RSA加密AES密钥,兼顾安全性与效率。这些技术组合可有效保障数据传输的机密性和来源真实性,适用于各类系统对接场景。
2026-04-01 10:19:03
377
原创 【MySQL-索引调优】12:In相关概念
SQL中IN与NOT IN操作符的使用差异及优化建议:IN操作符会被优化为多次等值匹配,可走索引但需避免数据量过大;NOT IN存在NULL值比较问题,会导致结果异常,建议改用NOT EXISTS替代;小范围过滤推荐使用IN,联合索引时结合等值条件,避免大IN列表和NOT IN子查询。对于子查询场景,优先考虑JOIN替代IN(SELECT...)写法。
2026-03-22 14:58:56
55
原创 【MySQL-索引调优】11:Group by相关概念
摘要:GROUP BY用于对结果集按字段分组并聚合计算。执行方式分两种:有索引时直接利用索引统计,无索引时需创建临时表并排序。使用索引需遵循最左匹配原则,即GROUP BY字段必须是索引的最左列。例如索引(user_id,status)支持GROUP BY user_id,但不支持GROUP BY status。
2026-03-22 14:56:31
43
原创 【MySQL-索引调优】10:常见的分页优化处理
摘要:本文介绍三种高效分页方案:1) 游标分页,通过记录最后一条记录的字段值实现恒定性能分页,适合大数据量场景;2) 覆盖索引,直接从索引获取全部数据避免回表;3) 延迟关联,先通过索引获取主键再关联查询完整数据,大幅减少回表次数。其中游标分页在create_time可能重复时需要配合唯一字段确保稳定排序,相比传统分页在深分页时性能优势明显。三种方案各适用于不同场景,可根据数据量和查询需求灵活选择。
2026-03-20 15:38:13
43
原创 【MySQL-索引调优】09:Order By相关概念
文章摘要:本文分析了MySQL中不同查询场景下的索引使用情况。对于WHERE+ORDER BY查询,虽然使用了user_id索引定位数据,但由于create_time未建立索引,仍需额外排序(Using filesort)。单独ORDER BY查询会触发全表扫描和排序。ORDER BY+LIMIT查询即使只返回少量数据,仍需处理全部数据排序。分页查询时,无索引会导致全表排序,有索引可避免排序但仍需扫描大量行。优化建议:为常用排序字段建立索引,特别是联合索引(user_id, create_time)可显著提
2026-03-20 14:34:56
345
原创 【MySQL-索引调优】08:模糊查询与索引
摘要:本文分析了MySQL中LIKE查询使用索引的情况。对于LIKE '71ae%'的后置百分号查询,可以利用idx_remark索引进行范围扫描(type=range),通过索引条件推送优化性能。而LIKE '%71ae%'的中间百分号查询则无法使用索引(type=ALL),必须全表扫描。针对真实系统中的模糊查询需求,建议采用全文索引、搜索引擎(如Elasticsearch)或限制为前缀搜索等优化方案。文章通过EXPLAIN执行计划对比了两种查询模式下的索引使用差异,并解释了B+Tree索引的工作原理。
2026-03-17 17:29:00
181
原创 【MySQL-索引调优】07:Sql使用索引注意点
本文分析了MySQL索引使用的两个关键问题:1)优化器会根据成本选择是否走索引,当条件匹配大量数据时(如user_id>1覆盖99%数据),全表扫描可能比回表更高效;2)索引失效的常见原因,包括对索引列进行运算、使用函数或类型转换。文章通过示例说明,在索引列上进行计算(如user_id+1=5)会导致全表扫描,并建议保持索引列"原样参与比较"。虽然MySQL会进行隐式类型转换(如字符串'1'转数字1),但最佳实践是保持类型一致以避免潜在问题。
2026-03-17 16:02:06
233
原创 【MySQL-索引调优】06:最左匹配原则及优化
摘要:本文讲解了MySQL联合索引的最左匹配原则。联合索引如(user_id,status)的存储是按最左列排序的,查询必须从最左列开始才能利用索引。例如WHERE user_id=1能用索引,而WHERE status=1则不能。联合索引可以覆盖其最左前缀的单列索引功能,因此存在(user_id)和(user_id,status)索引时,前者可删除。优化器会自动调整SQL条件的顺序,不影响索引使用。理解最左匹配原则有助于设计高效索引。
2026-03-17 10:54:42
235
原创 【MySQL-索引调优】05:索引相关概念
摘要:InnoDB存储引擎使用B+树实现索引结构。聚簇索引以主键为键,叶子节点存储整行数据;二级索引则存储主键值,查询时需"回表"。索引虽提升查询效率,但过多索引会降低写入性能并增加存储开销。B+树优势在于低高度(3-4层即可支持千万级数据)和叶子节点链表结构,使范围查询高效。需在查询性能与写入开销间取得平衡。
2026-03-17 09:41:03
66
原创 【MySQL-索引调优】04:回表相关概念
摘要:MySQL中当查询使用联合索引但需返回额外字段时,会触发"回表"操作。例如使用idx_user_status索引查询50,000条记录后,每条记录都需要通过主键ID再次查询聚簇索引获取amount字段,导致50,000次回表。回表过程是二级索引先定位主键,再通过主键查询完整行数据。为优化高频查询,应尽量使WHERE条件和SELECT字段被同一索引覆盖,避免回表开销。InnoDB引擎中,二级索引存储索引字段和主键值,查询非索引字段必须回表。
2026-03-16 17:35:05
87
原创 【MySQL-索引调优】03:联合索引及覆盖索引概念
摘要:文章分析了MySQL单列索引和联合索引的性能差异。当查询同时使用user_id和status字段时,单列索引(user_id)虽然能缩小扫描范围(9行),但仍需额外过滤(status),效率不高。建立联合索引(user_id,status)后,扫描行数降至2行且无需额外过滤,性能显著提升。进一步实验表明,当查询字段完全包含在索引中时(覆盖索引),可以避免回表操作,仅通过索引就能获取所需数据,效率最优。关键指标包括type、key、rows和Extra字段的变化,这些都能直观反映索引优化效果。
2026-03-16 15:39:35
397
原创 【MySQL-索引调优】02:单列索引
SQL查询优化摘要:针对orders表user_id=1234的查询存在全表扫描问题(type=ALL),导致效率低下。通过分析执行计划发现user_id字段无索引,导致扫描99,520行数据。优化方案是为user_id创建索引idx_user_id,使查询类型变为ref,扫描行数降至8行,性能显著提升。优化后执行计划显示索引被正确使用,查询效率大幅提高。
2026-03-16 14:51:39
204
原创 【MySQL-索引调优】01:前置准备
MySQL查询性能分析摘要 本文演示了如何创建订单表并插入10万条测试数据,用于查询性能分析。通过EXPLAIN命令可以分析SQL语句的执行计划,如EXPLAIN SELECT * FROM orders WHERE user_id = 1234,帮助优化查询性能。测试数据包含随机生成的用户ID、产品ID、状态、价格、创建时间和备注信息,适合进行各种查询场景的性能测试和分析。
2026-03-16 14:35:11
28
原创 使用Docker Compose+Nginx部署Vue/React前端应用
本文介绍了使用Docker Compose部署前端项目的完整流程。主要内容包括:1)Docker Compose通过YAML文件定义多容器应用;2)Dockerfile用于构建前端镜像;3)Nginx配置文件处理前端路由和API代理。部署步骤包括创建Docker网络、打包项目、配置目录结构并启动服务,最终实现前端容器与后端服务的网络连接。该方法简化了多容器应用的部署管理,通过Nginx配置实现前后端分离架构的请求转发。
2026-03-04 14:33:59
288
原创 RBAC前端架构-10:Layout中TagsView
摘要:本文介绍了Vue2中使用keep-alive组件实现页面缓存的方法,以及如何配合标签页功能优化用户体验。主要内容包括:1) keep-alive的基本用法和配置选项,如include/exclude和max属性;2) 实现标签页视图的组件代码(TagsView.vue),包含标签切换和关闭功能;3) Vuex状态管理模块(tags.js)的设计,用于存储访问过的页面信息和缓存状态,支持本地持久化存储。该方案能有效减少组件重复渲染,提升页面切换性能。
2026-03-02 17:47:51
630
原创 RBAC前端架构-09:Layout中Sidebar
本文实现了一个基于Vue2和Element UI的后台管理系统侧边栏组件(Sidebar.vue)。该组件通过Vuex获取菜单数据,支持多级菜单展示,并具备以下功能:1) 自动高亮当前路由对应菜单项;2) 内置路由跳转功能;3) 支持图标解析和键值处理;4) 包含响应式样式设计。组件从user/userMenus获取JSON格式的菜单数据,动态渲染菜单结构,包括一级菜单和子菜单,同时处理了图标显示和菜单项选中状态。
2026-02-26 16:45:25
376
原创 RBAC前端架构-08:页面骨架Layout布局搭建
本文介绍了Vue2项目中基于Layout组件的页面布局实现方案。通过路由嵌套方式,将Layout作为父组件包含公共的Header、Sidebar等元素,内部通过router-view展示子页面内容。文章提供了Layout.vue组件代码示例,展示了头部导航和主体区域的实现,并说明了如何修改路由配置实现嵌套路由结构。该方案可实现页面公共布局的统一管理,子组件在Layout容器内动态渲染,适用于需要保持公共导航结构的后台管理系统等场景。
2026-02-25 11:53:23
101
原创 RBAC前端架构-07:自定义指令role、permission实现权限控制
本文介绍了Vue2中自定义指令的实现与应用,重点讲解了权限控制指令的开发。主要内容包括:1)Vue2自定义指令的基本概念和生命周期钩子;2)通过示例展示了全局指令v-show-if的实现;3)详细说明了权限指令v-permission和v-role的开发过程,包括权限检查函数、角色检查函数以及全局注册方法;4)演示了如何在项目中集成这些指令并实际使用。这些指令可用于基于用户权限或角色动态控制DOM元素的显示与隐藏,实现前端权限控制功能。
2026-02-12 10:32:01
133
原创 RBAC前端架构-06:使用localstorage及Vuex用户信息存储逻辑
本文介绍了Vue2项目中用户状态管理的实现方案。通过Vuex模块化管理用户token、基本信息、菜单和权限数据,结合localStorage实现状态持久化。核心功能包括:1) 登录流程封装,实现获取token后自动获取用户信息、权限和菜单;2) 状态持久化处理,确保页面刷新不丢失登录状态;3) 提供便捷的权限判断方法。该方案采用模块化设计,包含完整的state管理、mutations、actions和getters,支持命名空间隔离,为前端权限控制提供了完整的解决方案。
2026-02-11 11:22:33
258
原创 RBAC前端架构-05:引入Element-UI及相关逻辑
本文档展示了如何在Vue2项目中集成Element UI组件库。主要包括三个修改点:1) 在main.js中引入Element UI及其样式;2) 在Dashboard页面使用Element的卡片(el-card)和按钮(el-button)组件;3) 在Login页面使用表单(el-form)、输入框(el-input)、按钮(el-button)和提示框(el-alert)等组件。所有修改都遵循Element UI的官方使用方式,通过Vue.use()全局注册组件,并在模板中直接使用组件标签。同时保留了
2026-02-10 16:00:06
287
原创 RBAC前端架构-04:设置代理及开发配置
本文档主要介绍了Vue2前端项目的配置调整,包含两部分内容:1) 修改环境配置文件(index.js),设置开发和生产环境的不同API请求路径、调试标识和超时时间;2) 调整Vue配置(vue.config.js),包括关闭ESLint检查、配置开发服务器端口和自动打开浏览器功能,以及设置API代理解决跨域问题,使前端请求能正确转发到后端服务。这些修改优化了开发体验并解决了前后端联调时的跨域问题。
2026-02-10 15:59:09
297
原创 RBAC前端架构-03:创建dotenv及config配置
本文介绍了Vue项目中环境变量的配置方法。通过.env文件管理不同环境(开发/生产)的配置,使用VUE_APP_前缀注入process.env对象。创建了config/index.js统一管理系统参数,并在axios请求封装中应用这些环境变量。主要实现了:1) 区分开发和生产环境的API地址;2) 统一配置超时时间;3) 全局debug模式控制。这种方式使项目配置更规范,便于环境切换和维护。
2026-02-10 15:11:02
354
原创 RBAC前端架构-02:集成Vue Router、Vuex和Axios实现基本认证实现
本文介绍了在Vue2项目中集成路由、状态管理和API请求的基本逻辑。首先通过vue-router实现了页面路由管理,包括路由守卫进行权限控制;然后引入Vuex管理全局状态,存储用户token并提供登录/登出功能;最后使用axios封装API请求模块,实现与后端的交互。这些核心模块的集成为项目提供了完整的页面导航、状态管理和数据请求能力,为后续开发奠定了基础。
2026-02-06 17:08:16
520
原创 RBAC前端架构-01:项目初始化
│ └── index.html # HTML 模板文件└── src/ # 源代码目录├── assets/ # 静态资源文件├── components/ # 组件目录│ └── HelloWorld.vue # 示例组件├── App.vue # 根组件。
2026-02-06 14:19:45
81
原创 Spring内置常见线程池配置及相关概念
本文介绍了Java线程池的核心概念、实现方式及在Spring项目中的配置实践。主要内容包括:线程池的作用是复用线程并平衡资源;ThreadPoolExecutor的构造参数详解;线程池分类(CPU/IO密集型)及数量设置原则;Spring内置的三种线程池(Web容器、定时任务、异步任务)及其配置优化;新项目线程池调整建议,包括Tomcat线程池、定时任务和异步任务的合理配置。文章强调合理配置线程池对系统性能的关键作用,并提供了不同场景下的参数设置指导。
2026-01-28 22:05:34
536
原创 策略模式:Spring Bean策略与枚举 Lambda策略
本文介绍了两种策略模式的实现方式:Spring Bean策略模式和枚举策略模式。Spring Bean策略模式通过定义枚举管理推送类型,实现策略接口,并由策略管理器统一调用,适合复杂业务场景;枚举策略模式则直接在枚举中定义执行逻辑,通过Service实现具体业务,适合简单业务场景。两种方式都能有效减少if-else语句,提高代码可维护性,新增推送类型时只需添加策略实现而不需修改现有逻辑。
2026-01-19 16:42:51
265
原创 Spring依赖注入Bean流程及其理解
本文介绍了Spring框架中的依赖注入机制及其实现原理。主要内容包括: 依赖注入方式:推荐使用@RequiredArgsConstructor + final字段的构造函数注入方式,避免使用@Autowired等注解。 生命周期管理:在单例模式下,Bean与其依赖具有相同的生命周期,创建时注入后引用一直有效。 代理模式实现:详细讲解了Spring如何通过自动生成代理类来实现AOP功能,包括事务管理等场景。 注入流程解析:从启动期扫描BeanDefinition到运行期依赖注入的完整过程,特别说明了代理对象的
2026-01-13 23:30:15
655
原创 Spring事务的理解及编写代码时性能陷阱
本文摘要: Spring事务管理核心注解@Transactional使用指南: 生效条件:需作用于Spring管理的Bean的public方法,且通过代理调用 回滚机制:默认仅回滚RuntimeException/Error,建议显式指定rollbackFor=Exception.class 传播行为:REQUIRED(默认)、REQUIRES_NEW(强制新事务)等不同场景选择 使用建议: 事务边界应与业务边界一致 避免在事务内进行耗时操作 先完成计算再集中数据库操作 性能影响: 长事务会占用连接、持有锁
2026-01-08 16:49:34
908
原创 Docker安装Nacos-2.4.1
本文介绍了如何使用Docker部署Nacos 2.4.1单机版。主要内容包括:1)创建数据、日志和配置目录;2)配置application.properties文件,设置认证参数;3)拉取Nacos镜像并运行容器,指定单机模式并开启认证;4)说明端口映射和目录挂载的作用。重点强调了数据持久化配置,通过挂载宿主机目录确保容器重建时数据不丢失,并提供了详细的参数说明和目录映射表。部署完成后可通过8848端口访问Nacos控制台。
2025-12-11 16:34:17
226
原创 Nginx安装及基本使用
摘要:Nginx作为高性能Web服务器,提供开源版、商业版等不同版本选择。安装方式支持源码编译和Docker容器化部署,配置目录包含conf、html等核心文件。采用Master-Worker多进程模型,启动时加载配置,运行时无需重复读取。通过虚拟主机(server节点)实现多站点部署,配合域名解析提供服务。Nginx还支持反向代理功能,可转发请求至后端服务器如Tomcat。基础配置包括worker进程数、连接数、日志格式等参数,通过include指令实现模块化管理。
2025-12-03 12:15:05
641
原创 当使用多个代码管理平台时,如:gitee,阿里云效等,自动免切换拉取代码
摘要:为解决多平台代码管理问题,可通过配置SSH实现自动切换密钥。具体步骤:1)准备各平台公私钥;2)在.ssh文件夹创建config文件;3)为每个平台配置Host条目,指定平台域名和对应私钥路径(如云效codeup.aliyun.com使用~/.ssh/codeup/id_ed25519,Gitee使用~/.ssh/gitee/id_rsa)。通过此配置,系统会根据访问的平台自动选择相应密钥,无需手动切换。支持扩展更多平台配置,提升跨平台代码管理效率。(150字)
2025-06-03 19:47:42
294
原创 CompletableFuture使用问题:多线程异步中,流式编程map+join伪异步
异步编程误区与Stream处理机制分析 本文通过代码示例对比了Java中CompletableFuture异步编程的错误和正确用法。错误写法在流式处理中立即调用join()会导致异步任务串行执行,总耗时随任务数量线性增长。正确做法是先收集所有CompletableFuture对象,然后统一调用allOf().join()实现真正并发。 文章还深入剖析了Stream流式编程的横向处理机制: Stream按元素逐个进行流水线处理,而非分阶段批量处理 采用惰性求值策略,只有遇到终端操作才会触发计算 中间操作(ma
2025-05-28 15:51:11
746
原创 过滤器(Filter)和 拦截器(Interceptor)的区别
Filter 是 Servlet 规范(Java EE)的一部分,作用于 Servlet 容器(如 Tomcat),可以拦截请求和响应,对其进行修改或处理Interceptor 是 Spring MVC 提供的AOP(面向切面编程)的一部分,主要拦截 控制器(Controller)的方法调用,可以在方法执行前后做处理Filter是Servlet层面的拦截器,作用广,可以拦截所有 HTTP 请求(包括静态资源)Interceptor 是Spring MVC 层的拦截器,只拦截Controller 方法。
2025-03-19 20:30:11
1208
原创 SpringCloudAlibaba学习笔记
架构逐渐变化成分布式全部都是一个,主打一个方便这种已经能解决大部分问题了,解决大并发问题:1.模块化升级,导致的打包,部署很麻烦2.需要其他语言写的模块,交互怎么办拆分,单体服务按照功能拆分成模块,数据库也按照功能拆分,每个服务器就可以按照功能模块来部署,更加灵活现在:具体分布式架构如上图,要学的东西就是右上角的那一坨了父工程:cloud-demo,定义spring相关版本子模块:services,这里将公共的依赖写在这里,方便子模块用services的子模块:我们具体写的操作模块,如:service-pr
2025-03-16 23:31:21
904
原创 JUC学习笔记
synchronized(后面细讲)一般不做特别说明配置,三、CompletableFuture1-Future接口理论知识复习Future接口(FutureTask实现类)定义了操作,如获取异步任务的执行结果、取消异步任务的执行、判断任务是否被取消、判断任务执行是否完毕等比如:让一个去执行任务,子线程可能比较耗时,启动子线程开始执行任务后,,忙完其他事情或者先执行完,过了一会或变更的任务状态一句话:Future接口可以为主线程开一个分支任务,专门为主线程处理耗时和费力的复杂业务2-Futu
2025-03-10 22:20:40
1182
原创 Vue3.0快速上手
什么是hook?—— 本质是一个函数,把setup函数中使用的Composition API进行了封装类似于vue2.x中的mixin自定义hook的优势: 复用代码, 让setup中的逻辑更清楚易懂其实就是把处理问题的function提取成一个js文件,按需导入使用即可。
2025-02-20 17:25:57
1558
原创 Vue2.0学习笔记
若对数据进行:逆序添加、逆序删除等破坏顺序操作:会产生没有必要的真实DOM更新==>界面效果没问题,但效率低如果结构中还包含输入类的DOM:会产生错误DOM更新==>界面有问题开发中如何选择key?最好使用每条数据的唯一标识作为key,比如id、手机号、身份证号、学号等唯一值如果不存在对数据的逆序添加、逆序删除等破坏顺序操作,仅用于渲染列表用于展示,使用index作为key是没有问题的示例:定义一个v-big指令,和v-text功能类似,但会把绑定的数值放大10倍<head></head>
2025-02-18 00:14:16
688
原创 Javascript基础+进阶
操作符返回一个,表示未经计算的操作数的类型。3-2.instanceof(判断实例方法)的具体类型,和java类似3-3.==用于相等运算,当用==来比较两个值时,如果值的类型不同,则会自动进行类型转换,将其转换为相同的类型(大部分情况都会将两边转换为Number),然后比较undefined衍生自null,所以这两个值做相等判断时,会返回trueNaN不和任何值相等,包括本身3-4.===全等,与相等类似,不同的是它不会做自动的类型转换,如果两个值的类型不同,直接返回false3-5.!
2025-01-23 20:42:58
1071
原创 尚硅谷NodeJS笔记
全称:file system 文件系统。fs模块可以实现与硬盘的交互。例如文件的创建、删除、重命名、移动,还有文件内容的写入、读取,以及文件夹的操作。path模块提供了操作路径的功能拼接规范的绝对路径常用:path.resolve获得操作系统的路径分隔符:path.sep解析路径并返回对象:path.parse获得路径基础名称:path.basename获得路径目录名:path.dirname获得路径扩展名:path.extnameIP也称为IP地址,本身是一个数字标识。例如 192.168.1.3。
2025-01-17 23:34:57
1084
原创 尚硅谷ES6笔记
箭头函数适合与 this 无关的回调. 如:定时器,数组的方法回调箭头函数不适合与 this 有关的回调. 如:事件回调,对象的方法···是放在实参传递位置扩展运算符(…):能将数组转换为逗号分隔的参数序列// 相当于fun('AA', 'BB', 'CC')Symbol 属性不会被for...in或等遍历方法枚举出来。因此,可以用 Symbol 定义一些“隐藏”的属性。// 遍历时,hidden 属性不会出现迭代器(lterator)是一种接口,为各种不同的数据结构提供统一的访问机制。
2025-01-14 17:03:34
663
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅