自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(327)
  • 资源 (3)
  • 收藏
  • 关注

原创 AI | 最近比较火的几个生成式对话 AI

Kimi、DeepSeek、ChatGPT、文心一言、通义千问和豆包等生成式对话 AI 模型各有优势,适用于不同的应用场景。通过深入了解这些模型的技术原理和应用场景,我们可以更好地选择适合自己的工具,推动 AI 技术的发展和应用。

2025-04-24 23:49:56 805

原创 网络安全 | F5 WAF 黑白名单配置实践指南

F5 WAF 的黑白名单功能允许管理员根据 IP 地址、URL 或其他条件对流量进行分类和控制。通过将特定的 IP 地址或子网添加到白名单中,可以确保这些流量不会被误拦截;而将已知的恶意 IP 地址添加到黑名单中,则可以有效阻止这些流量。通过结合 Data Group 和 iRules,F5 WAF 的黑白名单功能可以实现更灵活、更高效的流量控制策略。合理使用这些工具,不仅可以提高系统的安全性,还可以优化性能,确保业务的平稳运行。

2025-04-24 23:21:35 919

原创 SpringBoot | 构建客户树及其关联关系的设计思路和实践Demo

客户树是一种层级结构,用于表示客户之间的上下级关系。每个客户可以有多个子客户,而每个子客户又可以有自己的子客户,形成一个树状结构。企业与子公司:表示企业集团的层级结构。经销商与下级经销商:表示销售渠道的层级关系。客户与联系人:表示客户内部的组织架构。层级性:每个客户都有一个层级,顶级客户为第1层,其子客户为第2层,依此类推。递归性:客户树的结构是递归的,每个子客户可以有自己的子客户。关联性:客户之间通过父子关系关联。

2025-04-24 22:53:16 663

原创 Java | 深拷贝与浅拷贝工具类解析和自定义实现

浅拷贝:只复制对象的直接字段,对于引用类型字段,复制的是引用而不是对象本身。深拷贝:递归复制对象的所有字段,包括引用类型字段所指向的对象。

2025-04-23 23:22:27 752

原创 Java | 基于自定义注解与AOP切面实现数据权限管控的思路和实践

在企业级应用中,数据权限控制是一个常见的需求。本文将通过一个完整的示例,展示如何使用自定义注解和AOP切面在Spring Boot项目中实现数据权限管控,以商品实例列表查询为例,根据用户角色动态过滤数据。同时,我们将提供完整的表结构和数据插入脚本,以便更好地理解和测试。

2025-04-23 23:09:26 543

原创 Spring | 基于 Spring Pipeline管道、上下文与路由表实现业务流程串联

管道模式是一种行为设计模式,它将复杂的任务分解为一系列独立的处理步骤(Stage),每个步骤被称为一个阶段。这些阶段通过管道(Pipeline)连接在一起,数据依次通过各个阶段进行处理,最终完成整个任务。低耦合:每个阶段都是独立的,可以独立开发和测试,减少了模块之间的依赖关系。高扩展性:可以方便地添加或删除阶段,而不需要修改其他代码。易于维护:每个阶段的职责单一,代码清晰易懂,便于维护和调试。首先,我们定义一个通用的阶段接口Stage,它包含一个方法process,用于处理数据。

2025-04-17 09:05:09 669

原创 MySQL | 各大常用函数详解与实战示例

MySQL 提供了丰富的函数,用于处理各种数据操作和转换。这些函数可以帮助开发者高效地完成复杂的查询和数据处理任务。通过合理使用这些函数,可以提高代码的可读性和维护性,同时避免重复造轮子。

2025-04-16 09:37:58 1132

原创 MYSQL | IFNULL和NULLIF函数的区别

IFNULL() 和 NULLIF()`是 MySQL 中两个功能完全不同的函数,它们在处理 `NULL` 值时有着不同的用途和行为。

2025-04-16 09:33:49 383

原创 Elasticsearch | ES索引模板、索引和索引别名的创建与管理

通过本文的介绍,我们了解了如何在 Elasticsearch 和 Kibana 中创建索引模板、索引和索引别名。通过 RESTful API 和 Kibana Dev Tools,我们可以灵活地管理索引结构和别名,从而提高数据管理和查询的效率。

2025-04-08 14:17:47 930

原创 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 1105

原创 Java | 基于 ThreadLocal 实现多客户端访问设备的 REST 请求下发

ThreadLocal 是 Java 提供的一种线程局部变量存储机制。它为每个线程提供了一个独立的变量副本,使得每个线程都可以独立地访问和修改自己的变量副本,而不会相互干扰。这种机制非常适合处理多线程环境下的上下文信息传递问题。创建一个 Device 类,用于存储设备的 IP 和端口信息。return ip;本文介绍了如何使用 ThreadLocal 实现多客户端访问设备的 REST 请求下发。

2025-03-28 09:58:49 577

原创 Redis | 基于 Redis 实现机器列表 Token 缓存的 Java 实现

通过引入分布式锁机制,我们成功解决了在 Kubernetes Pod 部署环境下分布式刷新缓存 Token 的问题。使用 Redis 实现的分布式锁确保了同一时间只有一个 Pod 能够执行 Token 刷新任务,避免了重复执行的问题。这种机制不仅适用于 Token 刷新,还可以扩展到其他需要分布式定时任务的场景。

2025-03-28 09:14:55 891

原创 网络安全 | IP天窗改造技术原理与改造流程解析

在IPv6改造过程中,许多网站会包含一些外链,这些外链可能并未完成IPv6改造。当IPv6用户访问这些网站时,外链部分会出现访问失败的情况,如图片无法打开、视频无法播放等,这就是所谓的“天窗问题IP天窗改造的核心目标就是解决这种IPv6用户无法访问IPv4外链资源的问题,确保IPv6用户能够完整地访问网站内容。IP天窗改造是IPv6改造过程中不可或缺的一环。通过双栈技术、反向代理技术、负载均衡与地址改写技术以及IP地址翻译技术等多种手段,可以有效解决天窗问题,提升用户体验。

2025-03-26 08:59:24 695

原创 SpringBoot | 解决 Feign 客户端方法参数过多的问题:Method has too many Body parameters

通过明确地使用和注解,我们可以避免 Feign 客户端方法参数过多的问题。此外,开启 Feign 日志可以帮助我们更好地调试和排查问题。在实际开发中,我们还需要注意 Feign 客户端方法签名与服务端接口的一致性,以确保通信的正确性。

2025-03-20 15:49:23 522

原创 网络安全 | SNI介绍及F5中的配置应用

sni是TLS/SSL 协议中的一个重要扩展,旨在解决同一 IP 地址上托管多个网站时,如何选择正确的 SSL/TLS 证书进行加密通信的问题。SNI 通过在 TLS 握手初期传递客户端请求的主机名,使得服务器能够选择适当的证书进行加密通信。随着现代互联网环境中虚拟主机和多证书托管的普及,SNI 已成为实现安全通信的核心技术之一。SNI 是现代互联网中托管多个 HTTPS 网站的关键技术,它使得服务器能够根据客户端请求的主机名选择正确的 SSL/TLS 证书,解决了同一 IP 地址上多个网站的证书选择问题。

2025-02-12 22:20:33 866

原创 Java | RESTful 接口规范

REST(Representational State Transfer,表现层状态转移)是一种基于 HTTP 协议的软件架构风格,由在他的博士论文中提出。RESTful 接口是基于 REST 原则构建的 Web 服务接口,通过统一的资源标识符(URI)和标准的 HTTP 方法(如等)来实现资源的访问和操作。

2025-02-09 23:00:32 1010

原创 Java | 基于注解的代码生成工具MapStruct映射使用详解

在 Java 开发中,我们经常需要在不同的 Java Bean 之间进行数据映射,比如从实体类(Entity)到数据传输对象(DTO)的转换。传统的做法是手动编写大量的 setter 和 getter 方法来完成属性的赋值,这种方式不仅繁琐,而且容易出错。MapStruct 作为一个基于注解的代码生成工具,为我们提供了一种更加优雅、高效的解决方案。它在编译时自动生成映射代码,避免了运行时反射带来的性能开销,同时保证了类型安全。

2025-02-09 12:05:24 1035

原创 网络安全 | F5 BIG-IP RESTful API 模块功能介绍

在 F5 BIG-IP中,RESTful API 提供了强大的接口用于管理和配置 BIG-IP 设备。这些接口被分为多个模块,每个模块负责特定的功能。本文将详细介绍这些模块及其功能,帮助您更好地理解和使用 F5 BIG-IP 的 RESTful API。

2025-02-08 12:05:54 576

原创 Java | DTO 与 Entity 之间拷贝转换的几种方法

如果项目中对性能要求较高,且字段映射规则较为固定,可以自定义工具类来实现字段拷贝。在实际开发中,选择哪种方式取决于项目需求和团队的技术栈。如果项目对性能要求较高,推荐使用MapStruct或自定义工具类;如果项目对开发效率要求较高,推荐使用或BeanUtils。

2025-02-08 08:58:16 582

原创 网络安全 | 什么是XSS跨站脚本攻击?

XSS(Cross-Site Scripting)即跨站脚本攻击,是一种常见的 Web 安全漏洞。攻击者通过将恶意脚本嵌入到 Web 页面中,当用户访问该页面时,脚本就会在用户的浏览器中执行,从而窃取用户数据、篡改页面内容、或执行其他恶意操作。XSS 攻击主要依赖于 Web 应用没有对用户输入进行有效的过滤与校验,允许攻击者将恶意代码插入到网页中。存储型 XSS(Stored XSS)反射型 XSS(Reflected XSS)DOM 型 XSS(DOM-based XSS)

2025-02-07 12:42:15 1637

原创 Java | CompletableFuture详解

是Java 8引入的一个非常强大的类,属于包。它是用于异步编程的一个工具,可以帮助我们更方便地处理并发任务。与传统的线程池或Future对比,提供了更多灵活性和组合功能,使得异步编程更加简单和易于维护。主要用于异步操作和组合多个异步任务。它可以通过执行非阻塞的操作来避免阻塞主线程,从而提高程序的性能和响应速度。实现了Future和接口。需要编排多个异步操作的场景实现非阻塞的响应式系统需要精细控制任务执行顺序和依赖关系构建高并发、低延迟的服务。

2025-02-03 21:27:50 896

原创 网络安全 | F5-Attack Signatures-Set详解

可以通过两种方式创建攻击签名集:使用过滤器或手动选择要包含的签名

2025-01-26 23:38:22 1619

原创 网络安全 | F5-Attack Signatures详解

暂存意味着系统会将攻击签名应用于 Web 应用程序流量,但不会对触发这些攻击签名的请求应用阻止策略动作。默认的暂存周期为七天。安全策略将攻击签名中的模式与请求和响应的内容进行比较,以查找潜在的攻击。从手动流量学习中,如果发现攻击签名违规,您可以从“检测到的攻击签名”屏幕查看这些攻击签名。在评估后,如果签名是误报,您可以禁用该签名,系统将不再对对应 Web 应用程序的流量应用该签名。或者,如果检测到的签名匹配是合法的,您可以启用相应的攻击签名。用户定义的签名与系统提供的签名一起存储在攻击签名池中。

2025-01-24 22:03:10 1164

原创 网络安全 | 0day漏洞介绍

0day漏洞的基本原理是指漏洞被攻击者发现,并在其未被厂商或相关安全团队修复之前利用该漏洞进行攻击。当漏洞公开后,厂商才会发布补丁或更新,而在补丁发布之前,黑客就能利用这个漏洞发动攻击。因此,这类漏洞被称为“0day”,即“零天”,表示漏洞从被发现到厂商发布补丁这段时间内,存在“0天的防护”。0day漏洞因其隐蔽性、危害性以及难以防范的特性,成为了网络攻击中的重要武器。虽然无法完全消除0day漏洞的风险,但通过多层防御、快速响应、及时更新以及加强威胁情报和行为分析,企业和个人可以有效降低其带来的损害。

2025-01-22 09:03:55 2992

原创 网络安全 | 域名和DNS详解

域名是一个人类可读的互联网资源标识符,是互联网上用来标识一个网站或服务的唯一名称。域名它相当于互联网的“地址”,通过域名,人们可以访问网站而无需记住复杂的IP地址。它是通过字母、数字和符号的组合构成的。例如,www.example.com就是一个域名,它对应一个特定的服务器IP地址。域名的出现使得我们能够通过易于记忆的名称访问互联网资源,域名使得互联网的使用更加简便,并且是企业、组织或个人在线身份的标识。DNS()是一个分布式的命名系统,它将人类可读的域名转换为机器可读的IP地址。

2025-01-18 23:01:43 1283

原创 计算机网络 | IP地址、子网掩码、网络地址、主机地址计算方式详解

IP地址()是用于标识网络中每一台计算机或设备的唯一标识符。IP地址遵循网络层协议,通过数字形式(IPv4)或更长的字符形式(IPv6)表示。IP地址的作用是确保数据包能够从源设备准确地送达目标设备。子网掩码()是用于将IP地址分成网络部分和主机部分的工具。它与IP地址相结合,用于确定网络地址和可用的主机地址。子网掩码也是由32位二进制数构成,其中“1”表示网络部分"0"表示主机部分。子网掩码通常和IP地址一起使用,以确定哪些IP地址属于同一网络。网络地址是由IP地址和子网掩码计算得出的结果,它表示。

2025-01-15 23:35:25 4150 3

原创 网络安全 | 什么是正向代理和反向代理?

正向代理(ForwardProxy)是指客户端通过代理服务器来访问外部网络资源。它是位于客户端和服务器之间的代理服务器,客户端的请求会先发送到正向代理服务器,再由它代替客户端向目标服务器发送请求。目标服务器对正向代理的请求进行响应,但并不知道请求的实际来源(即客户端)。通常,客户端的请求是直接发送给代理服务器的,而代理服务器代为转发到实际目标服务器。类似于租房子,通过中介找到了原房东。反向代理(ReverseProxy)是指客户端不知道目标服务器的存在,它是位于客户端和目标服务器之间的代理服务器。

2025-01-15 21:30:51 2613

原创 MySQL | GROUP BY子句使用详解

GROUPBY是SQL查询中非常重要的功能,广泛用于数据汇总、统计和分组操作。通过与聚合函数的结合,能够在不同的业务场景中提供数据分析能力。在使用GROUPBY时,记住其原理、语法以及优化技巧,能够让你更加高效地处理和分析数据。

2025-01-14 12:43:02 1282

原创 计算机网络 | 什么是公网、私网、NAT?

在进入公网IP和私网IP的讨论之前,我们首先要理解IP地址(IP地址是网络上每一台设备的唯一标识符。它用于区分不同设备并确保数据能够精确地传输到目标设备。IPv4:采用32位地址,通常用四个十进制IPv6:采用128位地址,能够提供更多的地址空间。公网IP地址是由互联网服务提供商(ISP)分配的IP地址,能够在互联网上被直接访问和识别。这些IP地址是全球唯一的,不同的设备和服务器通过公网IP地址与全球其他设备进行通信。私网IP地址是指在一个局域网(LAN)内部使用的IP地址。这些地址不能直接访问。

2025-01-13 23:31:33 2778 2

原创 网络安全 | 什么是扫描防护?

在网络安全防护中,针对恶意扫描和攻击行为的防护至关重要。扫描防护是指通过技术手段识别和防御恶意扫描行为,防止攻击者通过扫描工具对网站或系统进行漏洞探测、端口扫描、暴力破解等攻击。扫描行为通常是攻击的前兆,攻击者通过扫描可以获得目标系统的开放端口、存在的漏洞以及其他可能被利用的弱点。为了提高对这些攻击的防御能力,许多安全系统,如阿里云Web应用防火墙(WAF),提供了多种扫描防护机制。以下是几种常见的扫描防护技术及其原理说明。

2025-01-13 22:54:45 726

原创 网络安全 | 什么是Bot防护?

随着互联网服务的普及和发展,越来越多的网站和应用遭遇了自动化攻击(Bot攻击)。Bot防护是一种安全技术,旨在检测和阻止自动化程序(即“机器人”或“bot”)对网站、应用程序或服务的恶意访问。Bot防护可以防止各种类型的恶意活动。两者的防护目标和技术有交集,但重点有所不同。CC防护侧重于大规模的恶意流量防护,而Bot防护则侧重于自动化行为识别。CC防护主要针对大规模的拒绝服务攻击,重点是流量控制和资源消耗防护,使用验证码、频率限制等手段来阻止攻击。Bot防护则更加关注如何识别和防止自动化程序。

2025-01-12 23:35:23 1345

原创 网络安全 | 什么是CC攻击防护?

CC攻击(ChallengeCollapsarAttack)是一种针对Web应用程序的攻击方式,通常被称为“网站的拒绝服务攻击”(DDoS),主要通过大量伪造的HTTP请求来消耗服务器资源,导致服务器过载甚至崩溃。攻击者通过发送大量的请求,通常是伪造的、低速的请求,这些请求不像DDoS攻击那样需要大量带宽,但却能通过大量请求耗尽服务器的处理能力,最终导致服务不可用。这种攻击的特点是流量较低,但请求频率极高,目的是让Web应用服务器资源消耗殆尽,造成服务阻塞。

2025-01-12 23:00:43 1030

原创 网络安全 | Web安全常见漏洞和防护经验策略

本文将详细介绍Web应用中的Top10常见的一些漏洞,包括漏洞的描述、原理和防护策略,并通过Java代码示例加以展示。攻击者可以通过在输入字段中插入SQL代码,操控查询逻辑,从而读取、修改、删除数据库中的数据,甚至执行管理员权限的操作。不安全的反序列化是指在Web应用中接收外部用户数据并进行反序列化时,攻击者可以通过传递恶意的序列化数据,造成远程代码执行或权限提升。安全配置错误指的是Web应用、数据库、服务器等的配置不当,可能导致攻击者获取敏感信息或访问不该访问的资源。

2025-01-12 22:16:00 865

原创 Git | git revert命令详解

gitrevert用于撤销一个已经提交到Git仓库的更改。不同于gitresetgitrevert会通过创建一个新的提交来“反转”指定提交的内容,而不会改变历史提交的记录。因此,gitrevert是一种更安全的回退操作,适用于团队合作中,因为它不会影响历史提交的结构。:撤销合并提交,保留第一个父提交的变更。:撤销合并提交,保留第二个父提交的变更。:撤销合并提交,保留第三个父提交的变更(适用于三方合并)。gitrevert。

2025-01-11 20:12:56 1673

原创 Git | git reset命令详解

gitreset是Git中用来撤销更改的一个命令,它能够修改当前分支的指针(HEAD)。根据不同的参数,gitreset可以撤销工作区、暂存区和提交历史中的更改。工作区,也叫工作目录,是你本地计算机上存放项目文件的地方。它是你实际编辑代码、添加新文件、修改现有文件的地方。文件状态:在工作区中,文件可以是未跟踪(untracked)、已修改(modified)或者已暂存(staged)等状态。-**操作**:你在工作区执行gitadd命令时,会将文件从工作区移到暂存区;

2025-01-11 19:18:06 1790

原创 Git | git stash命令详解

gitstash命令的主要作用是将当前工作目录中的修改(暂存区和工作区)保存到一个栈中,然后将工作区恢复到与当前分支最新提交相同的状态。这样,你就可以自由地切换到其他分支,处理其他任务,等完成后再将之前的修改恢复回来。Git的stash命令为开发人员提供了一个方便快捷的方式来保存临时的修改,以便进行分支切换或处理其他任务。通过使用gitstash,我们可以有效地管理未提交的修改,避免数据丢失或混乱。

2025-01-11 18:36:57 1310

原创 网络安全 | WAF防护开通流程与技术原理详解

本文主要是简单介绍通用的WAF开通流程,其实,WAF防护开通的流程涉及多个环节,包括源站改造、DNS配置、WAF策略设置等。通过合理配置源站架构和SSL证书,客户可以确保Web应用的高可用性和安全性。同时,WAF通过实时流量分析和防护机制,能够有效拦截和阻止各种网络攻击。

2025-01-09 17:18:40 1089

原创 JAVA | 状态机基本原理介绍并模拟实现“在线订单系统”

状态机是一种用于描述系统行为的数学模型,它由一组状态、转移事件以及根据当前状态进行的动作组成。状态机可以用图论来表示,其中每个状态都是图中的一个节点,状态之间的转换则由边连接。首先,我们定义订单的各种状态和触发状态转移的事件。PENDING,//待付款SHIPPED,//待发货DELIVERED,//已发货COMPLETED,//已完成CANCELLED//已取消PAY,//支付订单CANCEL,//取消订单SHIP,//发货DELIVER,//完成发货。

2025-01-09 16:50:30 1233

原创 SpringBoot | 基于MyBatis-Plus实现Lambda Query查询

对于一些需要自定义SQL的场景,可以直接使用@Select或@Update注解来编写SQL。提供了极为丰富的查询功能,通过简洁的API和灵活的查询构造器,可以非常方便地进行数据库查询操作。普通查询:通过方法可以快速进行数据查询。Lambda查询:通过构建条件查询,避免硬编码字段名,提高代码可维护性。和提供了多种条件构建方式,支持链式调用。提供了内置的分页支持,可以轻松进行分页查询。聚合查询:支持常见的聚合操作,如等。

2025-01-09 09:02:41 1365

原创 Nginx | 解决 Spring Boot 与 Nginx 中的 “413 Request Entity Too Large“ 错误

HTTP状态码413RequestEntityTooLarge表示请求的主体部分(如表单数据或文件)超出了服务器允许处理的大小限制。客户端上传的文件或数据超过了服务器的最大接收限制。客户端请求的HTTP请求体(包括文件和其他数据)超过了服务器的最大限制。在开发文件上传、数据提交等功能时,遇到413错误较为常见,尤其是在处理大文件或批量数据时。对于更复杂的场景,SpringBoot允许开发者自定义文件上传的限制。#启用文件上传功能#设置临时文件存储目录。

2025-01-08 17:33:39 1583

史上最全的Java核心技术总结.pdf

史上最全的Java核心技术总结,涵盖了jvm、java核心技术、java并发编程、计算机网络等重点面试知识。通过总结面过阿里、网易、美团、京东、一二面无压力。

2020-03-24

testNG单元测试学习总结

配合先前的代码demo,进行了一个系统的学习总结

2017-07-28

testNG单元测试Demo

对testNG框架的学习,写了一个demo,并整理了出一份word

2017-07-28

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除