java中的Servlet3.x详解
Servlet 3.x 是 Java Web 开发的重要里程碑,包含 Servlet 3.0(2009年发布)和 Servlet 3.1(2013年发布)两个主要版本。它通过多项革新优化了开发效率、性能及扩展性,成为现代 Java Web 应用的核心技术基础。
一、Servlet 3.x 核心特性
-
注解驱动的配置
-
核心注解:通过
@WebServlet
、@WebFilter
、@WebListener
等注解替代传统的web.xml
配置,简化组件声明。例如:@WebServlet(urlPatterns = "/api/user", loadOnStartup = 1) public class UserServlet extends HttpServlet { ... }
-
优势:减少 XML 配置冗余,提升代码可读性,支持零 XML 开发。
-
-
异步处理支持
-
原理:通过
AsyncContext
分离请求线程与业务线程,避免阻塞容器线程,提升并发能力。代码示例:AsyncContext asyncCtx = request.startAsync(); new Thread(() -> {// 耗时操作(如数据库查询)asyncCtx.getResponse().getWriter().write("Result");asyncCtx.complete(); }).start();
-
应用场景:长轮询、实时通信(如聊天室)、大文件上传。
-
-
非阻塞 I/O(Servlet 3.1)
-
实现类:通过
ReadListener
和WriteListener
接口实现非阻塞读写,适用于高并发和大数据流处理。 -
性能提升:结合 NIO 模型,显著降低线程资源占用,提升吞吐量。
-
-
模块化部署(Web Fragments)
-
机制:第三方库可通过
META-INF/web-fragment.xml
声明 Servlet/Filter,无需修改主应用的web.xml
。 -
应用:Spring MVC、Struts 等框架的无缝集成。
-
-
文件上传优化
-
API 增强:Servlet 3.0 引入
Part
接口简化文件处理,3.1 支持分段上传,减少内存占用。Part filePart = request.getPart("file"); filePart.write("/path/to/save");
-
二、Servlet 3.0 与 3.1 对比
特性 | Servlet 3.0 | Servlet 3.1 新增/增强 |
---|---|---|
异步处理 | 支持 AsyncContext | 增强非阻塞 I/O 和超时管理 |
协议升级 | 无 | 支持 HTTP/1.1 升级到 WebSocket |
安全特性 | 基础安全约束 | 支持 HSTS、会话 ID 动态变更(changeSessionId() ) |
性能优化 | 异步处理基础 | 分段上传、静态资源服务优化 |
三、关键技术实现
-
异步处理流程
-
步骤:
- 调用
request.startAsync()
创建AsyncContext
; - 提交任务至业务线程池;
- 任务完成后通过
asyncContext.complete()
或dispatch()
返回响应。
- 调用
-
监听器:
AsyncListener
监控超时、完成、错误等事件。
-
-
非阻塞 I/O 模型
-
核心类:
ServletInputStream
和ServletOutputStream
支持非阻塞读写。 -
代码示例:
input.setReadListener(new ReadListener() {@Overridepublic void onDataAvailable() {// 数据就绪时触发} });
-
-
WebSocket 支持
-
协议升级:通过
HttpServletRequest.upgrade()
将 HTTP 连接升级为 WebSocket。 -
应用:实时通信场景(如股票行情推送)。
-
四、应用场景与最佳实践
-
高并发服务
-
异步+非阻塞 I/O:适用于电商秒杀、实时监控系统,提升吞吐量。
-
线程池管理:业务线程池与容器线程池隔离,避免资源竞争。
-
-
微服务架构
-
模块化部署:通过 Web Fragments 实现功能插件化,如权限模块独立封装。
-
嵌入式容器:支持 Spring Boot 内嵌 Tomcat/Jetty,快速启动。
-
-
安全增强实践
-
HTTPS 强制跳转:通过
HttpServletResponse.encodeRedirectURL()
实现。 -
会话保护:定期更换会话 ID,防止会话固定攻击。
-
五、Servlet 3.0 与 Servlet2.x 对比
Servlet 3.0 是 Java Web 开发的重要升级,相较于 Servlet 2.x(如 2.4 和 2.5 版本),在配置简化、性能优化和功能扩展上实现了显著突破。以下是两者的核心差异:
1、配置方式:注解驱动 vs XML 主导
-
Servlet 3.0
-
注解支持:通过
@WebServlet
、@WebFilter
、@WebListener
等注解直接声明组件,无需依赖web.xml
。例如:@WebServlet(urlPatterns = "/api/user", loadOnStartup = 1) public class UserServlet extends HttpServlet { ... }
-
零 XML 开发:支持完全通过注解配置应用,但兼容传统 XML 配置。
-
-
Servlet 2.x
- 全 XML 配置:所有 Servlet、Filter、Listener 需在
web.xml
中显式注册,配置冗余且维护成本高。
- 全 XML 配置:所有 Servlet、Filter、Listener 需在
二、异步处理:性能提升的关键
-
Servlet 3.0
-
异步上下文(AsyncContext):允许主线程释放容器资源,耗时任务(如数据库查询)通过
AsyncContext.start()
提交至独立线程池处理,避免阻塞主线程。 -
异步监听器:支持
AsyncListener
监控任务超时、完成等事件。 -
适用场景:长轮询、文件上传、实时通信(如 WebSocket)。
-
-
Servlet 2.x
- 同步阻塞模型:所有请求处理在单一线程中完成,高并发场景下易导致线程资源耗尽。
三、模块化部署:可插性支持
-
Servlet 3.0
-
Web Fragments:第三方库可通过
META-INF/web-fragment.xml
声明组件,实现模块化扩展(如 Spring MVC 无缝集成)。 -
动态加载:无需修改主应用配置,通过插件机制扩展功能。
-
-
Servlet 2.x
- 集中式配置:所有组件需在
web.xml
中统一注册,扩展性受限。
- 集中式配置:所有组件需在
4、功能增强与 API 优化
-
文件上传
-
Servlet 3.0:通过
Part
接口简化文件处理,支持分段上传以减少内存占用。 -
Servlet 2.x:需依赖第三方库(如 Apache Commons FileUpload)。
-
-
安全性
- Servlet 3.0:支持运行时动态安全约束和会话 ID 刷新(
changeSessionId()
),防范会话固定攻击。
- Servlet 3.0:支持运行时动态安全约束和会话 ID 刷新(
5、运行环境与性能优化
-
依赖升级
-
Servlet 3.0:要求 JDK 6+ 和 Servlet 容器(如 Tomcat 7+)。
-
Servlet 2.x:兼容 JDK 5 和旧版容器(如 Tomcat 5)。
-
-
非阻塞 I/O(Servlet 3.1)
- 增强性能:通过
ReadListener
和WriteListener
实现非阻塞读写,提升高并发吞吐量。
- 增强性能:通过
6、生命周期与线程模型
-
初始化时机
-
Servlet 3.0:支持
@WebServlet(loadOnStartup = 1)
或<load-on-startup>
配置容器启动时预加载。 -
Servlet 2.x:默认首次请求触发初始化。
-
-
线程模型
-
Servlet 3.0:推荐无状态设计,结合异步线程池实现资源隔离。
-
Servlet 2.x:单例多线程模型需开发者自行处理线程同步。
-
总结:Servlet 3.0 的核心优势
维度 | Servlet 3.0 | Servlet 2.x |
---|---|---|
开发效率 | 注解驱动,配置简洁 | XML 配置繁琐,维护成本高 |
性能 | 异步处理 + 非阻塞 I/O,支持高并发 | 同步阻塞,线程资源易耗尽 |
扩展性 | 模块化部署(Web Fragments) | 集中式配置,扩展困难 |
功能性 | 文件上传优化、安全性增强 | 依赖第三方库,功能受限 |
适用场景:
-
Servlet 3.0:现代高并发应用(如微服务、实时系统)、需要与 Spring 等框架深度整合的场景。
-
Servlet 2.x:遗留系统维护、低并发传统应用。
通过上述对比可以看出,Servlet 3.0 通过注解驱动、异步处理和模块化设计,显著提升了开发效率和系统性能,是构建现代化 Java Web 应用的首选规范。
六、总结
Servlet 3.x 通过 注解驱动、异步处理、模块化设计 等特性,彻底改变了传统 Java Web 开发模式。3.1 版本进一步在性能(非阻塞 I/O)、协议支持(WebSocket)和安全性上做出突破,成为构建现代化高并发应用的基石。开发者应结合具体场景选择特性,例如异步处理优化响应速度,非阻塞 I/O 提升资源利用率,注解配置简化开发流程。
java中的Servlet概述
相关文章:
java中的Servlet3.x详解
Servlet 3.x 是 Java Web 开发的重要里程碑,包含 Servlet 3.0(2009年发布)和 Servlet 3.1(2013年发布)两个主要版本。它通过多项革新优化了开发效率、性能及扩展性,成为现代 Java Web 应用的核心技术基础。…...
单目测距和双目测距 bev 3D车道线
单目视觉测距原理 单目视觉测距有两种方式。 第一种,是通过深度神经网络来预测深度,这需要大量的训练数据。训练后的单目视觉摄像头可以认识道路上最典型的参与者——人、汽车、卡车、摩托车,或是其他障碍物(雪糕桶之类…...
weibo_comment_pc_tool | 我于2025.5月用python开发的评论采集软件,根据帖子链接爬取评论的界面工具
本工具仅限学术交流使用,严格遵循相关法律法规,符合平台内容的合法及合规性,禁止用于任何商业用途! 一、背景分析 1.1 开发背景 微博(以下简称wb)是国内极具影响力的社交媒体平台,具有内容形式…...
ubuntu防火墙命令和放行ssh端口
一、关闭UFW防火墙(Ubuntu默认工具) 1. 临时关闭防火墙 sudo ufw disable sudo ufw status # 显示 Status: inactive 表示已关闭 2. 永久禁用防火墙(禁用系统服务) sudo systemctl stop ufw # 立即停止服务 sudo sy…...
PWM讲解+STM32任意频率、占空比、脉宽生成函数介绍
1.PWM讲解 脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制。 脉宽调制 最开始使用PWM时,是做智能车时使用的舵机打角,电机驱动。这都属于比较浅显,普通的应用。下面和大家简单分享一下PWM的…...
C++23 范围迭代器作为非范围算法的输入 (P2408R5)
文章目录 一、引言二、C23及范围迭代器的背景知识2.1 C23概述2.2 范围迭代器的概念 三、P2408R5提案的内容3.1 提案背景3.2 提案内容 四、范围迭代器作为非范围算法输入的优势4.1 代码简洁性4.2 提高开发效率4.3 更好的兼容性 五、具体的代码示例5.1 使用范围迭代器进行并行计算…...
CVE-2018-1273 漏洞深度分析
漏洞概述 CVE-2018-1273 是 Spring Data Commons 中的一个高危远程代码执行(RCE)漏洞,影响版本为 Spring Data Commons 1.13–1.13.10 和 2.0–2.0.5。攻击者通过构造包含恶意 SpEL表达式的 HTTP 请求参数,触发表达式注入&#x…...
C++23:修正常量迭代器、哨兵和范围
文章目录 引言C20范围库回顾C23之前常量迭代器的问题视图可能不传播const代理对象的复杂性泛型代码中的一致性 P2278R4提案及C23的改进std::views::as_const的工作原理代码示例 浅const视图(如std::span)的改进总结 引言 在C的发展历程中,每…...
【漫话机器学习系列】266.雅可比矩阵(Jacobian Matrix)
雅可比矩阵(Jacobian Matrix)详解 | 多变量函数微积分的基石 在深度学习、计算图、优化算法、机器人控制、流形学习等众多领域中,“雅可比矩阵(Jacobian Matrix)”是一个非常核心的数学工具。 这篇文章将结合一张视觉…...
Leetcode 3551. Minimum Swaps to Sort by Digit Sum
Leetcode 3551. Minimum Swaps to Sort by Digit Sum 1. 解题思路2. 代码实现 题目链接:3551. Minimum Swaps to Sort by Digit Sum 1. 解题思路 这一题思路上我实现的非常暴力,就是先求出正确的排列,然后从头考察每一个元素是否处在其目标…...
西门子1200/1500博图(TIA Portal)寻址方式详解
西门子博图(TIA Portal)是西门子公司推出的自动化工程软件平台,广泛应用于工业自动化领域。在编写PLC程序时,寻址方式是一个非常重要的概念,它决定了如何访问和操作PLC中的数据和资源。本文将详细介绍西门子博图中的寻…...
STK手动建链+matlab联调
在右边场景区选择你要建链的卫星,右键在弹出的选项中选择Access 选择你要建链的卫星,这里我选择3轨10星与4轨8星建链,点击compute后再close就行了 建链完成,这里链路的颜色跟起始卫星的颜色一致,要想改变颜色只需改变卫…...
MATLAB中的Switch语句讲解
MATLAB中的Switch语句:一个简单的控制流工具 在MATLAB中,switch语句是一种多分支控制结构,通常用于根据某个表达式的值选择不同的代码块进行执行。它的作用类似于一系列的if-elseif-else语句,但在处理多个条件时,swit…...
【SpringBoot】✈️整合飞书群机器人发送消息
💥💥✈️✈️欢迎阅读本文章❤️❤️💥💥 🏆本篇文章阅读大约耗时3分钟。 ⛳️motto:不积跬步、无以千里 📋📋📋本文目录如下:🎁🎁&am…...
上位机知识篇---流式Web服务器模式的实现
文章目录 前言 前言 本文简单介绍了流式Web服务器模式的实现。...
Go 语言中的一等公民(First-Class Citizens)
在 Go 语言中,一等公民(First-Class Citizens) 是指语言中可以像普通值一样被自由操作的元素,包括赋值、传递、返回等。Go 虽然不是纯粹的函数式语言,但支持多种一等公民,以下是 Go 中常见的 一等公民及其特…...
python3.13版本降为3.12
目录 一、下载Python 二、安装PyCharm 三、 彩蛋 粗糙理解: PyThon是编译器(也可以在命令行编辑,但是麻烦) PyCharm是编辑器 一、下载Python https://repo.huaweicloud.com/python/3.12.9/python-3.12.9-amd64.exe 点击Insta…...
Ubuntu搭建TFTP服务器的方法
0 工具 Ubuntu 18.041 Ubuntu搭建TFTP服务器的方法 在Ubuntu下搭建TFTP服务器可以让我们下载文件到开发板更加方便,同时也可以实现TFTP加载Linux镜像,方便调试。 1.1 安装tftp-hpa(TFTP客户端)、tftpd-hpa(TFTP服务…...
【AI】Ubuntu 22.04 4060Ti16G 基于SWIFT框架的LoRA微调 模型Qwen3-1.8B 数据集弱智吧 微调笔记
下载Qwen3-1.8B 先更新安装modescope,然后下载模型 pip install -U modelscope modelscope download --model Qwen/Qwen3-1.7B 下载日志 部署模型 参考:【AI】Ubuntu 22.04 4060Ti 16G vllm-api部署Qwen3-8B-FP8_wsl ubantu rtx4060 vllm镜像-CSDN博…...
系分论文《论信息系统缓存的分析和应用》
【摘要】 2023年3月,我作为系统分析师参与了某大型电商平台"云端购物中心"的性能优化项目。该项目日均订单量突破200万,但在促销高峰期频繁出现系统响应迟缓、数据库过载等问题。本项目以构建多级缓存体系为核心,通过系统化分析缓存应用场景和技术选型,重构了平…...
3.4/Q2,Charls最新文章解读
文章题目:Associations between reversible and potentially reversible cognitive frailty and falls in community-dwelling older adults in China: a longitudinal study DOI:10.1186/s12877-025-05872-2 中文标题:中国社区老年人可逆性和…...
Bash fork 炸弹 —— :(){ :|: };:
🧠 什么是 Fork 炸弹? Fork 炸弹是一种拒绝服务(DoS)攻击技术,利用操作系统的 fork() 系统调用不断创建新进程,直到系统资源(如进程表、CPU、内存)被耗尽,从而使系统无法…...
HarmonyOS AVPlayer 音频播放器
鸿蒙文档中心:使用AVPlayer播放视频(ArkTS)文档中心https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/video-playback 这张图描述的是 HarmonyOS AVPlayer 音频播放器的状态流转过程,展示了 AVPlayer 在不同状态之间的切换条件和关键操作…...
symfonos: 2靶场
symfonos: 2 来自 <https://www.vulnhub.com/entry/symfonos-2,331/> 1,将两台虚拟机网络连接都改为NAT模式 2,攻击机上做namp局域网扫描发现靶机 nmap -sn 192.168.23.0/24 那么攻击机IP为192.168.23.182,靶场IP192.168.23.253 3&…...
微服务项目->在线oj系统(Java版 - 2)
相信自己,终会成功 微服务代码: lyyy-oj: 微服务 接口文档定义 响应数据定义: 响应数据格式:通常,HTTP API 的响应数据采用 JSON 格式 例如:成功响应(带数据) {"code": 200,"message": "查询成功","…...
整理了 2009 - 2025 年的【199 管综真题 + 解析】PDF,全套共 34 份文件
每年真题原卷 ✅ 每年详细解析 ✅ 📂【管综真题 2009-2025】 📂【管综解析 2009-2025】 目录树: ├── 2009-2025管综真题 PDF │ ├── 2009年199管综真题.pdf │ ├── 2010年199管综真题.pdf │ ├── 2011年199管综真题.pd…...
HarmonyOS 与 OpenHarmony:同根而不同途
HarmonyOS 与 OpenHarmony:同根而不同途 引言 在操作系统领域,HarmonyOS 和 OpenHarmony 这两个名字频繁出现,它们之间既存在着千丝万缕的联系,又有诸多显著的区别。对于开发者和相关从业者而言,深入了解两者的差异点…...
并发编程(4)
final修饰 1. 用final修饰类 当一个类被final修饰时,意味着它不能被其他类继承,也就是该类无法派生出子类。像 Java 中的String类就是典型的final类。 public final class FinalClass {// 类的内容 }// 下面的代码会报错,因为FinalClass不…...
合并K个升序链表
目录 合并 K 个升序链表 解题思路 ListNode 数组方式给出 k 个链表 ArrayList 方式给出 k 个链表 ArrayList常见操作 合并 K 个升序链表 题目描述 给你一个链表数组,每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中,返回合并后…...
UART、SPI、IIC复习总结
一、UART 1、UART和USART的异同? 相同点 基本功能:都是用于串行通信的数据收发设备,能够实现数据在不同设备之间的传输。在异步通信模式下,二者的工作方式相似,都使用起始位、数据位、校验位(可选&#…...
【AWS入门】Amazon Bedrock简介
【AWS入门】Amazon Bedrock简介 [AWS Essentials] Brief Introduction Amazon Bedrock By JacksonML 1. 引言 Amazon Bedrock,在AWS官网,映入眼帘的第一句话就是,“使用基础模型构建和扩展生成式人工智能应用程序的最简单方法”。如下图所…...
报告精读:华为2024年知行合一通信行业数据治理实践指南报告【附全文阅读】
《华为 2024 年知行合一通信行业数据治理实践指南报告》聚焦通信行业数据治理,指出在数字化转型背景下,通信行业面临数据量庞大、类型多样、时效要求高、价值密度低、安全要求高等特点与数据质量、汇聚、开放等难点。报告提出通信行业数据治理需构建包含…...
Eigen与OpenCV矩阵操作全面对比:最大值、最小值、平均值
功能对比总表 功能Eigen 方法OpenCV 方法主要区别最大值mat.maxCoeff(&row, &col)cv::minMaxLoc(mat, NULL, &maxVal, NULL, &maxLoc)Eigen需要分开调用,OpenCV一次获取最小值mat.minCoeff(&row, &col)cv::minMaxLoc(mat, &minVal, NU…...
机器学习(12)——LGBM(1)
文章目录 LightGBM算法详解1. 算法背景2. 核心创新2.1 基于直方图的决策树算法2.2 单边梯度采样(GOSS)2.3 互斥特征捆绑(EFB) 3. 算法细节3.1 树生长策略3.2 特征并行与数据并行3.3 类别特征处理 4. 关键参数说明4.1 核心参数4.2 控制速度参数4.3 控制过拟合参数 5. 与XGBoost对…...
深入理解TCP与UDP:协议对比、头部结构与连接管理
一、TCP与UDP的核心区别 特性TCPUDP连接特性面向连接(三次握手建立连接)无连接,直接传输数据可靠性通过确认重传、排序、流控保证可靠尽力交付,不保证数据到达流量控制支持滑动窗口机制调节发送速率不支持数据分段支持大数据分段…...
Flask快速入门和问答项目源码
Flask基础入门 源码: gitee:我爱白米饭/Flask问答项目 - 码云 目录 1.安装环境2.【debug、host、port】3.【路由params和query】4.【模板】5.【静态文件】6.【数据库连接】6.1.安装模块6.2.创建数据库并测试连接6.3.创建数据表6.4.ORM增删改查 6.5.ORM模…...
python创建flask项目
好的,我会为你提供一个使用 Flask、pg8000 和 Pandas 构建的后台基本框架,用于手机理财产品 App 的报表分析接口。这个框架将包含异常处理、模块化的结构以支持多人协作,以及交易分析和收益分析的示例接口。 项目结构: financial_report_ap…...
Flink 的窗口机制
🪟 1. 基于时间驱动的滚动时间窗口(Tumbling Time Window - Time-based) ✅ 定义: 每隔固定的时间周期开启一个新的窗口。窗口之间不重叠。 🕒 示例: DataStream<Tuple2<String, Integer>>…...
STM32 OTA 中断向量表重定向
在STM32的OTA(Over-the-Air)升级中,中断向量表重定向是关键技术需求,其核心原因在于STM32的硬件架构和固件运行机制。以下从原理、实现方式及必要性三个角度详细分析: 一、中断向量表的作用与默认机制 中断向量表的…...
先说爱的人为什么先离开
2025年5月19日,15~23℃,贼好的一天,无事发生 待办: 2024年税务申报 《高等数学2》取消考试资格学生名单 《物理[2]》取消考试资格名单 5月24日、25日监考报名 《高等数学2》备课 《物理[2]》备课 职称申报材料 教学技能大赛PPT 遇…...
OnlyOffice秘籍系列.6-表格保护功能详解-灵活设置单元格的权限
最近很多用户在咨询是否可以提供一个灵活控制表格权限的在线协同编辑表格,这里和大家分享如果用OnlyOffice在线表格实现。 OnlyOffice 是一款功能强大的在线协作办公套件,其表格工具(Spreadsheet Editor)提供了完善的数据保护机制,…...
LLM笔记(八)Transformer学习
文章目录 1. Transformer 整体架构2. 核心组件详解2.1. 输入部分 (Input Embedding & Positional Encoding)2.2. 注意力机制 (Attention Mechanism)2.2.1. Padding Mask (填充掩码)2.2.2. Sequence Mask (Look-ahead Mask / Subsequent Mask / Causal Mask) 2.3. Multi-Hea…...
Vue 3 中使用 md-editor-v3 的完整实例markdown文本
下面我将提供一个完整的 Vue 3 项目中使用 md-editor-v3 的 Markdown 编辑器实现,包含常用功能和最佳实践。 1. 基础实现 安装依赖 npm install md-editor-v3也可以是pnpm安装 pnpm install md-editor-v3基础编辑器组件 (BasicEditor.vue) <template> &l…...
OpenCV-图像分割
实验1 实验内容 上述代码通过使用OpenCV和Matplotlib库来执行以下操作: 读取名为’kt.jpg’的图像文件,并存储在变量img中。将图像img转换为灰度图像,将其存储在变量gray中。使用cv2.threshold函数对灰度图gray进行阈值化处理,…...
Vue-计算属性
计算属性 案例 输入姓、名, 全名称姓名 实现 插值语法 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><title>计算属性与监视</title><!-- 引入Vue --><script type&…...
16. 通用配置文件开发.py
16. 通用配置文件开发.py 一、配置文件架构设计 1.1 模块化结构规划 #mermaid-svg-Iuex47psGWeZj6XQ {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-Iuex47psGWeZj6XQ .error-icon{fill:#552222;}#mermaid-svg-Iu…...
Python训练营打卡 Day29
复习日:类的装饰器 知识点回顾 类的装饰器:餐厅升级计划 假设你是一家餐厅的老板,餐厅已经运营了一段时间,但你希望提升服务质量,比如在每道菜上增加一些特别的服务(比如日志记录、额外的装饰等)…...
解决 Tailwind CSS 代码冗余问题
解决 Tailwind CSS 代码冗余问题 Tailwind CSS 确实可能导致 HTML 类名过长和冗余的问题,以下是几种有效的解决方案: 1. 使用 apply 指令提取重复样式 /* 在CSS文件中 */ .btn {apply px-4 py-2 rounded-md font-medium; }.card {apply p-6 bg-white …...
【藏经阁】加密机服务完整解决方案,包含客户端+服务端
前言 你是否存在这样的苦恼,数据需要安全存储,但是每个系统大家自己写,很浪费时间。 encryption-local 一个离线版本的金融敏感信息加解密工具,用于数据库敏感信息存储。 离线版本的加解密好处是非常的方便。不过缺点也比较明显…...
互联网大厂Java求职面试:AI与大模型应用集成及云原生挑战
互联网大厂Java求职面试:AI与大模型应用集成及云原生挑战 面试场景设定 郑薪苦是一位具有搞笑风格但技术潜力巨大的程序员,正在接受一位严肃专业的技术总监面试。 第一轮提问 面试官:在我们公司的短视频平台中,需要处理千万级…...