- 博客(354)
- 资源 (3)
- 收藏
- 关注
原创 网络安全 | Bot攻击与防护
Bot攻击已成为网络安全重大威胁。恶意机器人程序利用业务逻辑缺陷,通过API隐蔽攻击,具有高度智能化、规模化和低成本特点。常见攻击包括撞库、DDoS和API滥用等,如Mirai僵尸网络控制IoT设备发动攻击。传统防御如IP限制、验证码等逐渐失效,需采用API资产管理、AI行为分析、多层DDoS防护等现代手段,建立多维度访问基线和威胁建模,才能有效应对日益复杂的Bot自动化攻击。
2025-11-18 14:33:04
454
原创 网络安全 | 深入了解OAuth 2.0原理
OAuth 2.0是一种授权开放标准,允许第三方应用在无需获取用户密码的情况下访问用户资源。它通过令牌(Token)机制实现授权,区分了授权(决定权限)与认证(验证身份)的概念。核心流程包括用户认证、颁发访问令牌和资源访问,涉及资源所有者、客户端、资源服务器和授权服务器四个角色。授权码模式是最安全的流程,适用于有后端服务器的应用。OAuth 2.0还支持其他授权模式以适应不同场景,并强调安全防护机制,如PKCE、严格URI验证和多因素认证,以确保最小权限和防止攻击。
2025-11-16 16:30:09
744
原创 网络安全 | 深入解析CSRF攻击与防御实战
本文深入剖析了CSRF(跨站请求伪造)攻击的原理及防御措施。CSRF通过诱骗已认证用户执行非预期操作,利用浏览器自动携带认证信息的机制实施攻击。文章通过Java代码示例展示了一个典型的CSRF攻击场景:恶意网站利用GET请求修改用户邮箱。针对CSRF防御,提出了三种核心方案:1)使用Anti-CSRF Token机制;2)利用Spring Security内置的CSRF防护功能;3)配置SameSite Cookie属性作为深度防御。其中重点介绍了Spring Security如何自动生成和验证CSRF T
2025-11-16 15:51:53
741
1
原创 网络安全 | 深入解析XSS攻击与防御实战
本文深入剖析了XSS(跨站脚本攻击)的原理与防御措施。XSS通过注入恶意脚本危害用户,主要分为反射型、存储型和DOM型三种类型。攻击者利用输入点、缺乏安全处理和输出点等条件实施攻击。防御策略包括对输出进行编码/转义、使用内容安全策略(CSP)、输入验证与过滤以及安全的DOM操作。其中CSP作为白名单机制能有效遏制XSS攻击,是当前最推荐的防御手段。文章通过可复现案例演示了各类XSS攻击,并提供了从开发到部署的完整解决方案。
2025-11-16 15:25:29
954
原创 网络安全 | 深入理解SQL注入的原理和防范
SQL注入是一种常见的Web安全漏洞,攻击者通过将恶意SQL代码插入应用程序查询字符串,欺骗服务器执行未授权操作。其核心原理在于程序未对用户输入与SQL代码进行明确区分,导致数据被当作代码执行。常见攻击方式包括认证绕过(如万能密码)、数据窃取(通过UNION查询)和盲注攻击。防范SQL注入的最有效方法是使用参数化查询(Prepared Statements),确保用户输入仅作为数据而非指令被执行。其他措施包括使用ORM框架、遵循最小权限原则以及输入验证。开发者应杜绝字符串拼接式SQL,构建多层防御体系以确保
2025-11-16 14:41:14
854
原创 RocketMQ | 延迟消息syncSend方法源码深度分析
RocketMQ延迟消息功能详解:通过syncSend方法实现消息延迟投递,支持18个内置延迟级别(1s至2h)。核心流程包括参数校验、消息格式转换、延迟级别设置(通过setDelayTimeLevel)、消息发送及性能监控。异常处理机制完善,确保系统健壮性。实践应用中可根据业务类型(如订单超时、优惠券到期等)选择合适延迟级别,实现灵活的场景化消息延迟方案。
2025-10-30 09:21:20
248
原创 Java | Lombok @Builder排障指南:为什么 build 时默认值丢失?
摘要: Lombok的@Builder注解在链式构建对象时,默认会忽略类字段的初始值,导致未显式赋值的字段返回null或0。解决方法是为字段添加@Builder.Default注解,强制Builder使用类中定义的默认值。需注意避免与@NonNull或自定义构造器冲突,确保默认值逻辑生效。此方案能有效统一new和Builder创建对象时的默认值行为。(150字)
2025-10-22 16:58:46
378
原创 Java | 基于redis实现分布式批量设置各个数据中心的服务器配置方案设计和代码实践
在企业级应用系统中,经常需要对大量服务器进行配置的批量更新。传统的同步处理方式存在性能瓶颈和单点故障风险。本系统基于Redis实现分布式异步批量处理,支持大规模服务器的配置设置操作。
2025-10-19 21:47:15
441
原创 网络安全 | SSL/TLS 证书文件格式详解:PEM、CRT、CER、DER、PKI、PKCS12
本文深入解析了SSL/TLS证书的常见文件格式,包括PEM、CRT/CER、DER和PKCS12。PEM是Base64编码的标准格式,适用于Web服务器配置;CRT/CER作为证书文件,在Unix和Windows系统中通用;DER是二进制格式,主要用于Java和Windows系统;PKCS12则支持证书和私钥的安全打包。文章还提供了格式转换和安全管理的实用建议,帮助开发者和运维人员合理选择证书格式,确保系统安全性。通过OpenSSL工具示例,展示了证书查看、验证等关键操作。
2025-10-19 20:30:55
1196
原创 tcpump | 深入探索网络抓包工具
摘要: tcpdump 是类Unix系统下的命令行网络抓包工具,支持捕获和分析网络流量,适用于故障排查、安全分析等场景。常用命令包括:-i指定网卡、-w保存数据包、-c限制捕获数量,过滤表达式可精确筛选流量(如host、port)。典型应用包括检测TCP三次握手、分析ICMP攻击、监控特定主机流量等。通过案例解析,展示了其在网络诊断、协议调试中的实用价值,是网络管理和安全分析的必备工具。
2025-09-14 21:46:09
1221
原创 Java | 掌握 Java 8 四大函数式接口:Consumer、Supplier、Predicate、Function
Java 8函数式编程四大核心接口详解 摘要:Java 8引入的函数式编程特性中,java.util.function包提供了四大核心接口:Consumer(消费型,接收参数无返回值)、Supplier(供给型,无参数返回结果)、Predicate(断言型,接收参数返回布尔值)和Function(函数型,接收参数返回结果)。本文详细解析了各接口的源码结构、使用方法和典型应用场景,如Consumer用于日志打印和集合遍历,Supplier实现延迟计算,Predicate进行数据过滤,Function处理类型转
2025-09-14 10:47:31
1072
原创 SpringBoot | 越权和数据权限控制的一种实现方案
首先,我们需要定义一个自定义的注解,这个注解会包含操作类型(CRUD)、资产ID和资产名称作为入参。@Target(ElementType.METHOD) // 该注解作用于方法@Retention(RetentionPolicy.RUNTIME) // 运行时生效// 操作类型,默认为 READ// 资产 ID// 资产名称通过以上的实现,我们使用了自定义注解、切面编程和用户权限服务的组合来对方法进行权限控制,确保只读用户无法进行修改操作,同时判断其他用户是否有权限访问特定的资产。
2025-06-24 18:35:53
649
原创 Elasticsearch | 索引和模板字段管理:增加新字段的详细操作
摘要: 本文介绍了如何在Elasticsearch中为索引和模板添加新字段,以优化数据存储与检索效率。通过示例演示了两种场景:1) 更新模板(temp_demo_log)新增result字段,强调index_patterns和strict动态映射的作用;2) 使用_mapping API为现有索引(demo_log)动态扩展字段,并说明字段类型不可修改的限制。还提供了验证方法和典型应用场景(如日志分析与电商数据),帮助开发者灵活管理Elasticsearch数据结构。关键操作包括模板更新、映射API调用及字
2025-06-24 14:19:09
1176
原创 IDEA | 提升效率的秘籍:macOS 与 IntelliJ IDEA 必备快捷键
本文介绍了macOS系统和IntelliJ IDEA中最实用的快捷键组合。macOS部分包括基础操作(如复制粘贴)、窗口管理和文本编辑快捷键;IntelliJ IDEA部分涵盖代码编辑、项目导航、调试运行和代码分析等开发场景。最后建议将系统快捷键与开发工具快捷键结合使用,如通过Command+Tab切换应用,Command+N新建文件等,显著提升开发效率。掌握这些快捷键可以避免频繁切换鼠标,让日常开发更加流畅高效。
2025-06-22 17:26:55
1002
原创 Spring | JDK 动态代理与 CGLIB 代理:原理、区别与实战对比
本文对比了Java中两种动态代理技术——JDK动态代理和CGLIB代理。JDK动态代理基于反射机制,要求目标类必须实现接口,使用Proxy类和InvocationHandler创建代理。CGLIB通过字节码生成目标类的子类,无需接口但无法代理final类,使用Enhancer和MethodInterceptor实现。性能上,JDK代理初始化快,适合方法调用少的场景;CGLIB调用性能更好,适合方法调用多的情况。建议根据实际需求选择:有接口优先用JDK代理,无接口或需代理非接口方法则用CGLIB。
2025-06-11 14:09:28
822
原创 Spring | 深入解析 Spring AOP 中的AopProxyUtils.ultimateTargetClass()解决代理对象注解获取问题
摘要本文探讨了Spring AOP代理对象无法获取目标类注解的问题及解决方案。当使用JDK动态代理或CGLIB代理时,直接通过代理对象获取类注解可能失效。通过分析问题现象,文章提出使用AopProxyUtils.ultimateTargetClass()方法穿透代理层,获取最终目标类类对象,从而正确读取类级别注解。该方法通过递归检查代理链实现目标类定位,并结合源码分析其实现原理。实测验证该方案可有效解决代理场景下的注解获取问题,为Spring AOP开发提供了实用技巧。
2025-06-11 14:03:26
1221
原创 RocketMQ | mqadmin命令增删改查topic
本文介绍了RocketMQ常用的mqadmin命令操作,包括创建/删除Topic、查询Topic信息、消费进度、队列信息、订阅关系等。详细列出了12种常用命令的语法格式及参数说明,其中updateTopic用于创建Topic,deleteTopic用于删除Topic,topicRoute等命令用于查询Topic各类信息。每个命令都需指定NameServer地址,部分命令还需集群名称、Topic名称等参数。这些命令涵盖了Topic管理的核心功能,如消息查询(按ID/key)、消费组/生产者信息查看等,为Roc
2025-06-11 11:42:51
1358
原创 Elasticsearch | 如何将修改已有的索引字段类型并迁移数据
摘要在Elasticsearch中修改已有字段类型(如将TEXT改为DATE)需通过创建新索引实现。步骤如下:1) 新建索引并定义正确字段类型;2) 用_reindex迁移数据;3) 删除旧索引并重命名新索引;4) 设置别名确保平滑过渡。该方法避免了直接修改字段类型的限制,同时保持应用兼容性。适用于字段类型定义错误的场景,如将时间戳从文本类型修正为日期类型。
2025-06-03 09:09:52
822
原创 MySQL | 比特BIT类型的使用指南
本文详细介绍了MySQL中BIT类型的使用方法,包括创建表、插入数据(支持二进制、十进制和十六进制格式)、查询、更新和删除操作。重点演示了如何进行位运算(如按位或操作),展示了BIT类型在存储和操作二进制数据时的灵活性。通过具体示例,帮助开发者掌握这一数据类型的实际应用技巧。
2025-05-25 16:36:43
866
原创 Spring | 在Spring中使用@Resource注入List类型的Bean并按优先级排序
本文介绍了在Spring框架中使用@Resource注解注入List类型Bean并按优先级排序的方法。通过定义@TaskPriority注解标记服务优先级,结合@PostConstruct实现自动排序,可简化多服务组合场景下的任务管理。示例展示了如何为不同业务规则生成有序子任务,适用于任务调度等需要优先级控制的场景。测试验证了服务按指定顺序执行,输出任务列表符合预期。这种方法提高了代码的可维护性和扩展性,是Spring依赖注入的进阶应用。
2025-05-25 16:16:07
1301
原创 k8s | Kubernetes 服务暴露:NodePort、Ingress 与 YAML 配置详解
在 Kubernetes 集群中,NodePort 和 Ingress 是两种常见的服务暴露方式。NodePort 适合简单场景,配置简单但不够灵活;Ingress 提供了更强大的路由功能和负载均衡能力,但需要额外的配置和组件支持。根据实际需求选择合适的服务暴露方式,可以更好地满足应用的访问需求。
2025-05-07 18:31:46
2050
原创 Redis | 使用 Redisson的RMapCache实现用户消息定时自动发送功能
本文介绍了如何通过 Redisson 实现基于 Redis 缓存过期事件的消息自动推送机制,并且通过Date类型入参来设定消息过期时间。通过 Redis 的过期事件通知,我们可以高效地管理缓存和触发自动操作,从而减少系统的复杂度并提高响应速度。这种方式特别适用于消息通知、定时提醒等场景。在实际应用中,可以根据需求集成不同的消息推送方式(如邮件、短信、微信等),实现更加灵活的业务逻辑。
2025-04-26 07:49:04
937
原创 Redis | Redis单机、主从复制、哨兵与集群模式多维度详细对比
Redis 提供了多种部署模式,每种模式都有其独特的技术原理和适用场景。单机模式适合开发测试,主从复制模式适合读扩展,哨兵模式适合高可用性,而集群模式适合大规模生产环境。选择合适的部署模式需要根据具体的应用需求、数据量和性能要求来决定。
2025-04-26 07:48:35
1286
原创 Redis | Redis集群模式技术原理介绍
Redis 集群(Cluster)模式是 Redis 官方提供的分布式解决方案,旨在解决单机 Redis 在数据量和性能上的限制。它通过数据分片、高可用性和自动故障转移等特性,提供了水平扩展和高可用性。Redis 集群模式通过数据分片、高可用性和自动故障转移等特性,提供了水平扩展和高可用性。它适用于数据量大、对高可用性和性能要求较高的场景。通过合理配置和管理,Redis 集群可以大大增强系统的扩展性和可靠性,满足大规模生产环境的需求。
2025-04-26 07:45:12
1254
原创 Redis | Redis哨兵模式Sentinel简介
Redis Sentinel 是 Redis 官方提供的高可用性(HA)解决方案,用于监控 Redis 主从架构中的故障检测和故障转移。它是一个分布式系统,可以自动发现主从节点和哨兵节点,通过心跳机制检测节点健康状态,并在主节点故障时自动进行故障转移。Redis Sentinel 是 Redis 官方提供的高可用性解决方案,通过监控 Redis 主从架构中的故障检测和故障转移,确保服务的高可用性。它具有自动发现机制、故障检测、故障转移和配置管理等功能,适用于主从模式和多主节点架构。
2025-04-26 07:44:27
1017
原创 研究 | 低空经济:无人机与反无人机技术原理与发展趋势
物理摧毁技术作为防御体系的最后一道防线,主要采用激光、微波等定向能武器实现精准打击。激光武器和微波武器因其高效性和经济性,成为反无人机技术的重要发展方向。
2025-04-26 07:43:52
1220
原创 AI | 最近比较火的几个生成式对话 AI
Kimi、DeepSeek、ChatGPT、文心一言、通义千问和豆包等生成式对话 AI 模型各有优势,适用于不同的应用场景。通过深入了解这些模型的技术原理和应用场景,我们可以更好地选择适合自己的工具,推动 AI 技术的发展和应用。
2025-04-24 23:49:56
1616
原创 网络安全 | F5 WAF 黑白名单配置实践指南
F5 WAF 的黑白名单功能允许管理员根据 IP 地址、URL 或其他条件对流量进行分类和控制。通过将特定的 IP 地址或子网添加到白名单中,可以确保这些流量不会被误拦截;而将已知的恶意 IP 地址添加到黑名单中,则可以有效阻止这些流量。通过结合 Data Group 和 iRules,F5 WAF 的黑白名单功能可以实现更灵活、更高效的流量控制策略。合理使用这些工具,不仅可以提高系统的安全性,还可以优化性能,确保业务的平稳运行。
2025-04-24 23:21:35
1512
2
原创 SpringBoot | 构建客户树及其关联关系的设计思路和实践Demo
客户树是一种层级结构,用于表示客户之间的上下级关系。每个客户可以有多个子客户,而每个子客户又可以有自己的子客户,形成一个树状结构。企业与子公司:表示企业集团的层级结构。经销商与下级经销商:表示销售渠道的层级关系。客户与联系人:表示客户内部的组织架构。层级性:每个客户都有一个层级,顶级客户为第1层,其子客户为第2层,依此类推。递归性:客户树的结构是递归的,每个子客户可以有自己的子客户。关联性:客户之间通过父子关系关联。
2025-04-24 22:53:16
1343
原创 Java | 深拷贝与浅拷贝工具类解析和自定义实现
浅拷贝:只复制对象的直接字段,对于引用类型字段,复制的是引用而不是对象本身。深拷贝:递归复制对象的所有字段,包括引用类型字段所指向的对象。
2025-04-23 23:22:27
1154
原创 Java | 基于自定义注解与AOP切面实现数据权限管控的思路和实践
在企业级应用中,数据权限控制是一个常见的需求。本文将通过一个完整的示例,展示如何使用自定义注解和AOP切面在Spring Boot项目中实现数据权限管控,以商品实例列表查询为例,根据用户角色动态过滤数据。同时,我们将提供完整的表结构和数据插入脚本,以便更好地理解和测试。
2025-04-23 23:09:26
743
原创 Spring | 基于 Spring Pipeline管道、上下文与路由表实现业务流程串联
管道模式是一种行为设计模式,它将复杂的任务分解为一系列独立的处理步骤(Stage),每个步骤被称为一个阶段。这些阶段通过管道(Pipeline)连接在一起,数据依次通过各个阶段进行处理,最终完成整个任务。低耦合:每个阶段都是独立的,可以独立开发和测试,减少了模块之间的依赖关系。高扩展性:可以方便地添加或删除阶段,而不需要修改其他代码。易于维护:每个阶段的职责单一,代码清晰易懂,便于维护和调试。首先,我们定义一个通用的阶段接口Stage,它包含一个方法process,用于处理数据。
2025-04-17 09:05:09
786
原创 MySQL | 各大常用函数详解与实战示例
MySQL 提供了丰富的函数,用于处理各种数据操作和转换。这些函数可以帮助开发者高效地完成复杂的查询和数据处理任务。通过合理使用这些函数,可以提高代码的可读性和维护性,同时避免重复造轮子。
2025-04-16 09:37:58
1244
原创 MYSQL | IFNULL和NULLIF函数的区别
IFNULL() 和 NULLIF()`是 MySQL 中两个功能完全不同的函数,它们在处理 `NULL` 值时有着不同的用途和行为。
2025-04-16 09:33:49
859
原创 Elasticsearch | ES索引模板、索引和索引别名的创建与管理
通过本文的介绍,我们了解了如何在 Elasticsearch 和 Kibana 中创建索引模板、索引和索引别名。通过 RESTful API 和 Kibana Dev Tools,我们可以灵活地管理索引结构和别名,从而提高数据管理和查询的效率。
2025-04-08 14:17:47
1535
原创 Spring | Spring、Spring MVC 和 Spring Boot 的区别
Spring 框架是一个开源的 Java 平台,为开发 Java 应用程序提供了全面的基础设施支持。它包含了许多模块,如依赖注入(DI)、面向切面编程(AOP)、数据访问(JDBC、ORM)、事务管理、Web 开发等。Spring MVC 是 Spring 框架的一个模块,专门用于构建 Web 应用程序。它是一个表现层框架,用于处理 HTTP 请求和响应。Spring Boot 是基于 Spring 框架的扩展,旨在简化 Spring 应用的初始搭建和开发过程。
2025-04-03 09:38:26
1193
原创 Java | 基于 ThreadLocal 实现多客户端访问设备的 REST 请求下发
ThreadLocal 是 Java 提供的一种线程局部变量存储机制。它为每个线程提供了一个独立的变量副本,使得每个线程都可以独立地访问和修改自己的变量副本,而不会相互干扰。这种机制非常适合处理多线程环境下的上下文信息传递问题。创建一个 Device 类,用于存储设备的 IP 和端口信息。return ip;本文介绍了如何使用 ThreadLocal 实现多客户端访问设备的 REST 请求下发。
2025-03-28 09:58:49
645
原创 Redis | 基于 Redis 实现机器列表 Token 缓存的 Java 实现
通过引入分布式锁机制,我们成功解决了在 Kubernetes Pod 部署环境下分布式刷新缓存 Token 的问题。使用 Redis 实现的分布式锁确保了同一时间只有一个 Pod 能够执行 Token 刷新任务,避免了重复执行的问题。这种机制不仅适用于 Token 刷新,还可以扩展到其他需要分布式定时任务的场景。
2025-03-28 09:14:55
1043
原创 网络安全 | IP天窗改造技术原理与改造流程解析
在IPv6改造过程中,许多网站会包含一些外链,这些外链可能并未完成IPv6改造。当IPv6用户访问这些网站时,外链部分会出现访问失败的情况,如图片无法打开、视频无法播放等,这就是所谓的“天窗问题IP天窗改造的核心目标就是解决这种IPv6用户无法访问IPv4外链资源的问题,确保IPv6用户能够完整地访问网站内容。IP天窗改造是IPv6改造过程中不可或缺的一环。通过双栈技术、反向代理技术、负载均衡与地址改写技术以及IP地址翻译技术等多种手段,可以有效解决天窗问题,提升用户体验。
2025-03-26 08:59:24
941
史上最全的Java核心技术总结.pdf
2020-03-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅