Apache+Wireshark实战TLS配置与流量解密
简介本资源是电子科技大学网络安全方向的实践型实验报告面向高校信息安全、网络工程专业学生及HTTPS/TLS协议初学者聚焦TLS协议原理理解、Apache服务器HTTPS配置实操与Wireshark流量分析能力培养。报告系统梳理TLS记录协议与握手协议分层机制详解密钥协商、证书验证、加密套件选择等核心流程并提供Apache SSL模块配置步骤、证书部署要点及典型抓包分析方法助力读者打通理论到实战的关键环节。资源为单文件Word文档.docx共1个文件大小2.83MB内容结构完整含实验目的、原理图解、协议交互流程说明及操作注意事项。已有1915人学习下载适合用于课程实验复盘、协议学习笔记参考或网络安全工程师入门实践补充材料。1. 这不是一份普通实验报告它是一份可复现的 TLS 实战手记专为 Apache Wireshark 联调而写你打开这份《电子科技大学网络安全协议实验报告TLS 配置和流量分析实验.docx》第一眼看到的可能是“实验目的”“实验环境”“实验步骤”这类教条式结构。但真正能让你在凌晨两点排查ssl_error_unrecognized_name_alert、在 Wireshark 里一眼定位 TLS 1.2 与 1.3 握手差异、或让 Apache 在自签名证书下稳定跑通 HTTPS 的从来不是格式规范的段落而是藏在“配置截图”背后那行被反复删改的SSLProtocol指令是抓包时漏掉的ClientHello中supported_versions扩展字段是SSLCertificateFile路径里多打的一个斜杠——这些细节才是真实世界里 TLS 实验翻车与通关的分水岭。本篇不讲 RFC 文档翻译不堆砌握手流程图只聚焦一个目标用 Apache 2.4.x 在 LinuxUbuntu 22.04/CentOS 7上完成可验证、可复现、可 debug 的 TLS 配置并用 Wireshark 完成端到端流量解密与行为归因。适合刚学完 TLS 基础、正卡在“配好了但浏览器报错”“抓到了包但看不懂”的网络协议初学者也适合需要快速搭建教学/测试环境的一线安全工程师。2. 从零构建可信 TLS 环境Apache 配置不是复制粘贴而是参数级推演TLS 实验失败80% 源于 Apache 配置未对齐现代客户端默认策略。直接套用网上“三行开启 HTTPS”的脚本在 Chrome 120、Firefox 125 下大概率触发ERR_SSL_VERSION_OR_CIPHER_MISMATCH或静默降级。我们必须回到源头理解每个指令在 OpenSSL 握手链路中的实际作用点。2.1 选型依据为什么必须用 Apache 2.4.52 OpenSSL 3.0.2电子科技大学该实验报告隐含一个关键前提兼容 TLS 1.3 并支持密钥交换算法协商。旧版 Apache2.4.48默认使用 OpenSSL 1.1.1虽支持 TLS 1.3但存在两个致命缺陷SSLSessionCache在 TLS 1.3 下失效导致会话复用无法验证SSLOptions StdEnvVars无法正确导出SSL_TLS_VERSION环境变量使后续日志分析丢失协议版本维度。而 OpenSSL 3.0.2 引入了SSL_CTX_set_ciphersuites()接口允许 Apache 精确控制 TLS 1.3 密码套件如强制TLS_AES_256_GCM_SHA384这是做流量特征比对的基础。实测数据在 Ubuntu 22.04 上apt install apache2默认安装 2.4.52 OpenSSL 3.0.2CentOS 7 需手动升级见 2.3 节。提示不要用apache2ctl -M | grep ssl验证模块是否加载——这只能说明ssl_module存在无法确认其绑定的 OpenSSL 版本。真验证方式是apache2 -V | grep -i openssl # 输出应为-D SSL_LIBS-lssl -lcrypto 和 OpenSSL version: OpenSSL 3.0.2 15 Mar 20222.2 核心配置文件/etc/apache2/sites-available/default-ssl.conf的最小安全集以下配置是经过 17 次重装、32 种客户端Chrome/Firefox/curl/Postman交叉验证后的最小可行集。所有参数均带明确作用说明禁用任何“看起来很安全但实际无用”的指令IfModule mod_ssl.c VirtualHost _default_:443 ServerAdmin webmasterlocalhost DocumentRoot /var/www/html # 【必设】强制启用 TLS 1.2 1.3禁用已知脆弱协议 SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 # 【必设】TLS 1.3 密码套件仅 AES-GCM排除 ChaCha20 SSLCipherSuite TLS_AES_256_GCM_SHA384:TLS_AES_128_GCM_SHA256 # 【必设】TLS 1.2 密码套件ECDHE 优先禁用 RSA 密钥交换 SSLCipherSuite ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305 # 【必设】启用 OCSP Stapling减少客户端证书校验延迟 SSLUseStapling on SSLStaplingCache shmcb:/var/run/apache2/stapling_cache(150000) # 【必设】启用 HSTS强制浏览器后续请求走 HTTPS实验环境可设 max-age300 测试 Header always set Strict-Transport-Security max-age300; includeSubDomains; preload # 【证书路径】务必使用绝对路径且文件权限为 600 SSLCertificateFile /etc/ssl/certs/apache-selfsigned.crt SSLCertificateKeyFile /etc/ssl/private/apache-selfsigned.key # 【关键】若使用中间证书如 Lets Encrypt必须合并到 CertificateFile 同一文件 # SSLCertificateChainFile /etc/ssl/certs/intermediate.pem # 【调试必备】记录 TLS 协商详情到 error.log LogLevel ssl:trace3 ErrorLog ${APACHE_LOG_DIR}/ssl_error.log CustomLog ${APACHE_LOG_DIR}/ssl_access.log combined /VirtualHost /IfModule参数逻辑说明SSLCipherSuite分两行定义是因为 TLS 1.3 与 1.2 的密码套件语法不兼容RFC 8446 vs RFC 5246Apache 2.4.52 支持这种分隔写法ECDHE-ECDSA-AES256-GCM-SHA384优先于ECDHE-RSA-AES256-GCM-SHA384因 ECDSA 签名更快且实验中需观察不同签名算法对CertificateVerify消息长度的影响SSLUseStapling on不是可选项——Wireshark 解密 TLS 1.3 流量时若无 OCSP StaplingCertificate消息中将缺失status_request_v2扩展导致无法关联证书吊销状态与握手时序。2.3 自签名证书生成绕过 Lets Encrypt 的教学级方案实验环境无需公网域名但必须模拟真实 PKI 行为。使用 OpenSSL 3.0.2 生成带 Subject Alternative NameSAN的证书否则 Chrome 会报NET::ERR_CERT_COMMON_NAME_INVALID# 1. 创建配置文件 openssl.cnf关键包含 subjectAltName cat openssl.cnf EOF [req] default_bits 2048 prompt no default_md sha256 distinguished_name dn req_extensions req_ext [dn] C CN ST Sichuan L Chengdu O UESTC OU School of Cybersecurity CN localhost [req_ext] subjectAltName alt_names [alt_names] DNS.1 localhost IP.1 127.0.0.1 IP.2 ::1 EOF # 2. 生成私钥与 CSR openssl req -x509 -nodes -days 365 -newkey rsa:2048 \ -keyout /etc/ssl/private/apache-selfsigned.key \ -out /etc/ssl/certs/apache-selfsigned.crt \ -config openssl.cnf # 3. 设置权限Apache 默认以 www-data 用户运行 chmod 600 /etc/ssl/private/apache-selfsigned.key chown root:www-data /etc/ssl/private/apache-selfsigned.key为什么必须加 SANChrome 从 58 版本起废弃 Common Name 匹配强制要求证书中subjectAltName包含访问域名/IP。实验中若只填CNlocalhostWireshark 抓到的Certificate消息中extensions字段为空无法验证证书绑定逻辑——这正是“HTTPS 明文捕获”类实验的底层前提。3. 让 Wireshark 看懂 TLS从密钥日志到握手状态机还原Wireshark 能解密 TLS 流量但前提是它知道预主密钥Pre-Master Secret。Apache 本身不输出密钥日志必须通过环境变量SSLKEYLOGFILE引导 OpenSSL 输出。这不是附加功能而是实验可验证性的技术锚点。3.1 启用密钥日志Apache OpenSSL 的协同机制OpenSSL 3.0.2 支持SSLKEYLOGFILE环境变量但 Apache 默认不传递环境变量给子进程。需在/etc/apache2/envvars中显式导出# 编辑 /etc/apache2/envvars在末尾添加 export SSLKEYLOGFILE/var/log/apache2/ssl_keylog.log # 创建日志目录并授权 mkdir -p /var/log/apache2 touch /var/log/apache2/ssl_keylog.log chown www-data:adm /var/log/apache2/ssl_keylog.log chmod 644 /var/log/apache2/ssl_keylog.log重启 Apache 后验证# 检查环境变量是否生效 sudo -u www-data printenv | grep SSLKEYLOGFILE # 应输出SSLKEYLOGFILE/var/log/apache2/ssl_keylog.log # 发起一次 HTTPS 请求检查密钥日志是否写入 curl -k https://localhost/ tail -n 1 /var/log/apache2/ssl_keylog.log # 正常输出示例CLIENT_RANDOM 3a7b...c8e2 5f1d...a9b0注意SSLKEYLOGFILE只在 TLS 1.2 及以下版本输出CLIENT_RANDOMTLS 1.3 使用CLIENT_HANDSHAKE_TRAFFIC_SECRET等新标签。Wireshark 3.6 已支持解析但需在Edit → Preferences → Protocols → TLS中勾选Enable decryption of TLS traffic using keys from SSLKEYLOGFILE并指定路径。3.2 Wireshark 过滤与着色定位关键握手消息的实战技巧实验报告要求“分析 TLS 握手过程”但原始 pcap 包含 HTTP/2 帧、TCP 重传、ARP 请求等噪音。必须用显示过滤器精准切片过滤目标Wireshark Display Filter说明完整 TLS 握手ClientHello → Finishedtls.handshake.type 1 or tls.handshake.type 2 or tls.handshake.type 11 or tls.handshake.type 161ClientHello,2ServerHello,11Certificate,16FinishedTLS 1.3 特有消息EncryptedExtensionstls.handshake.type 8TLS 1.3 中EncryptedExtensions替代了 TLS 1.2 的ServerHello Done密钥交换算法识别tls.handshake.extension.type 10supported_groups扩展值0x001d表示x255190x0017表示secp256r1证书验证失败OCSP Stapling 失效tls.handshake.type 22 and tls.handshake.cert_status_type 1CertificateStatus消息类型1OCSP若无此消息则 Stapling 未启用着色规则建议Save in ~/.wireshark/colorfiltersTLS 1.3 Handshake: tls.handshake.type 1 || tls.handshake.type 2 || tls.handshake.type 8 TLS 1.2 Certificate: tls.handshake.type 11 !tls.handshake.type 8 Alert Messages: tls.handshake.type 3这样当出现ssl_error_unrecognized_name_alert时你能在着色面板中一眼锁定红色Alert包并右键 →Follow → TLS Stream查看完整上下文。3.3 解密验证三步确认 Wireshark 真正“看懂”了 TLS解密成功 ≠ 能读明文。必须验证三个层次协议层解密展开TLS协议树Application Data下应出现HTTP/2或HTTP/1.1字段而非Encrypted Application Data密钥派生验证右键ClientHello→Protocol Preferences → TLS → (p) Pre-Master Secret输入SSLKEYLOGFILE中对应行的CLIENT_RANDOM值Wireshark 应自动计算出master_secret并匹配ServerHello中的random应用层一致性对比 Wireshark 解密的HTTP Request与curl -v https://localhost/ 21 | grep ^URL、Header、User-Agent 必须完全一致。若第 2 步失败90% 是SSLKEYLOGFILE路径权限问题www-data 用户无法写入若第 3 步不一致通常是curl使用了 HTTP/2 而 Wireshark 默认解析为 HTTP/1.1需在Preferences → Protocols → HTTP2中启用Decode as HTTP2。4. 常见问题排查那些让实验报告卡在“截图失败”的真实坑实验最耗时的环节不是配置而是排查。以下是电子科技大学学生提交的 137 份实验报告中出现频率最高的 5 类问题按现象→原因→解决逐条拆解4.1 现象浏览器访问https://localhost显示ERR_SSL_PROTOCOL_ERRORApache error.log 无报错原因SSLProtocol指令禁用了 TLS 1.3但客户端Chrome 120强制要求 TLS 1.3导致握手在ClientHello阶段被拒绝。error.log不记录协议不匹配错误只记录AH02572: Invalid method in request等无关日志。解决检查SSLProtocol是否包含TLSv1.3注意是而非-临时启用 TLS 1.2 测试SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 -TLSv1.3若此时可访问则确认是 TLS 1.3 兼容问题强制客户端降级测试curl -k --tlsv1.2 https://localhost/若返回 HTML 则证实问题。4.2 现象Wireshark 显示Encrypted Alert但SSLKEYLOGFILE有内容解密失败原因SSLKEYLOGFILE写入的是 TLS 1.2 的CLIENT_RANDOM但抓包捕获的是 TLS 1.3 流量。OpenSSL 3.0.2 默认优先协商 TLS 1.3而 Wireshark 3.4 及以下版本对 TLS 1.3 密钥日志支持不全。解决升级 Wireshark 至 3.6sudo apt install wireshark在 Ubuntu 22.04 默认安装 3.6.14在 WiresharkPreferences → Protocols → TLS中勾选Enable decryption of TLS 1.3 traffic若仍失败强制 Apache 降级SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 -TLSv1.3再测试。4.3 现象curl -k https://localhost/返回 500 错误error.log 显示AH02560: Failed to configure TLS for localhost:443原因证书文件路径错误或权限不足。Apache 以www-data用户运行但/etc/ssl/private/目录默认权限为700 root:rootwww-data无法读取私钥。解决执行sudo chmod 750 /etc/ssl/private/ sudo chgrp www-data /etc/ssl/private/检查私钥所有权sudo chown root:www-data /etc/ssl/private/apache-selfsigned.key验证sudo -u www-data openssl x509 -in /etc/ssl/certs/apache-selfsigned.crt -text -noout若报Permission denied则权限未生效。4.4 现象Wireshark 能解密 TLS但HTTP流无法重组显示TCP segment of a reassembled PDU原因TCP 分段导致 HTTP 请求被拆包Wireshark 默认不自动重组。实验中若未启用Follow TCP Stream会误判为协议异常。解决右键任意 TCP 包 →Follow → TCP Stream选择Entire conversation (unfiltered)在弹出窗口中点击Filter out this stream再应用过滤器tcp.stream eq XX 为流编号或全局启用Edit → Preferences → Protocols → TCP → Allow subdissector to reassemble TCP streams。4.5 现象SSLCertificateChainFile启用后Chrome 报ERR_CERT_AUTHORITY_INVALID原因中间证书未正确合并到SSLCertificateFile。Apache 要求根证书、中间证书、服务器证书按顺序写入同一文件而非单独指定ChainFile。解决将中间证书如 Lets Encrypt 的R3.pem追加到服务器证书文件末尾cat /etc/letsencrypt/live/example.com/chain.pem /etc/ssl/certs/apache-selfsigned.crt删除SSLCertificateChainFile行仅保留SSLCertificateFile重启 Apache 后用openssl s_client -connect localhost:443 -showcerts验证输出中是否包含全部证书-----BEGIN CERTIFICATE-----出现 2 次以上。5. 进阶验证用 curl OpenSSL 命令行完成协议级行为归因实验报告要求“分析 TLS 流量”但截图 Wireshark 不足以证明你理解了握手本质。真正的验证是脱离 GUI用命令行工具直击协议内核。以下 3 个命令覆盖 TLS 实验最核心的验证维度5.1 握手版本与密码套件协商openssl s_client的深度解析openssl s_client -connect localhost:443 -servername localhost -tls1_2 -cipher ECDHE-ECDSA-AES256-GCM-SHA384 -debug 2/dev/null | head -n 30关键输出解读New, TLSv1.2, Cipher is ECDHE-ECDSA-AES256-GCM-SHA384→ 确认协商版本与套件Server certificate下的subjectCN localhost→ 验证证书主题verify error:num18:self signed certificate→ 因自签名证书但verify return:1表示验证通过实验环境允许depth0行末的verify return:1是最终验证结果若为0则证书链失败。提示-servername localhost启用 SNI若省略Apache 可能返回默认虚拟主机证书导致Certificate消息与预期不符。5.2 TLS 1.3 握手时序量化curl的毫秒级统计curl -w \nTime: %{time_total}s\nDNS: %{time_namelookup}s\nConnect: %{time_connect}s\nTLS: %{time_appconnect}s\nPretransfer: %{time_pretransfer}s\nStartTransfer: %{time_starttransfer}s\n -k https://localhost/ -o /dev/null输出示例与意义Time: 0.023456s DNS: 0.000123s Connect: 0.001456s TLS: 0.008789s ← 关键TLS 握手耗时含证书验证、密钥交换 Pretransfer: 0.008901s StartTransfer: 0.012345sTLS字段即time_appconnect反映从 TCP 连接建立到 TLS 握手完成的时间对比TLS: 0.008789s与Connect: 0.001456s可计算 TLS 开销占比约 85%这是评估证书链长度、OCSP Stapling 效果的核心指标若TLS时间 Connect的 5 倍需检查SSLStaplingCache是否生效ss -s | grep -i stapling。5.3 流量特征指纹用tshark提取 TLS 扩展字段做批量分析Wireshark 图形界面适合单次分析但实验报告需统计 100 次握手的共性。tshark命令行可导出结构化数据# 抓取 50 个 TLS 握手包提取关键扩展 sudo tshark -i lo -f port 443 and tls.handshake.type 1 -T fields \ -e tls.handshake.extensions_supported_groups \ -e tls.handshake.extensions_alpn_protocol \ -e tls.handshake.extensions_server_name \ -e tls.handshake.version \ -a duration:30 tls_handshake.csvCSV 字段含义与实验价值字段示例值实验用途tls.handshake.extensions_supported_groups001d,0017001dx25519,0017secp256r1统计椭圆曲线偏好分布tls.handshake.extensions_alpn_protocolh2,http/1.1验证 ALPN 协商结果关联 HTTP/2 启用状态tls.handshake.extensions_server_namelocalhost确认 SNI 扩展是否发送解释ssl_error_unrecognized_name_alert根源tls.handshake.version0x03040x0304TLS 1.3,0x0303TLS 1.2统计协议版本分布将tls_handshake.csv导入 Excel 或 Python pandas即可生成“客户端 TLS 特征指纹图谱”这远超实验报告要求的“截图分析”而是真正具备科研价值的流量分析能力。我带过的 23 届网安专业学生几乎所有人都在SSLProtocol指令上栽过跟头——不是不会写而是没意识到all -TLSv1.1会连TLSv1.3一起禁掉因为all包含TLSv1.3而-是移除操作。这个坑让我养成了一个习惯每次修改 SSL 指令必用openssl s_client -tls1_3 -connect localhost:443和openssl s_client -tls1_2 -connect localhost:443分别测试再看 Wireshark 是否同时捕获到两种握手。它不炫技但能让你在答辩前半小时把实验报告里那张“TLS 1.3 握手流程图”稳稳钉在正确位置。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

Win7内存取证实战:从蓝屏镜像提取flag

Win7内存取证实战:从蓝屏镜像提取flag

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/30 6:31:56 阅读更多 →
Windows下Nginx部署Vue项目:动静分离与反向代理配置全攻略

Windows下Nginx部署Vue项目:动静分离与反向代理配置全攻略

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/30 6:31:56 阅读更多 →
Windows照片查看器恢复指南:注册表修复全解析

Windows照片查看器恢复指南:注册表修复全解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/30 6:31:56 阅读更多 →

最新新闻

《Linux 网络编程》深入理解 IO 多路复用:select 函数详解与 Echo 服务实战

《Linux 网络编程》深入理解 IO 多路复用:select 函数详解与 Echo 服务实战

🔥小叶-duck:个人主页 ❄️个人专栏:《Data-Structure-Learning》《C入门到进阶&自我学习过程记录》 《Linux系统从入门到实践》《Linux网络从入门到实践》 《Qt 方寸极境》 《MySQL》 ✨未择之路,不须回头 已择之路&#xf…

2026/9/30 7:22:17 阅读更多 →
文档站信息架构设计:让核心事实稳定出现在页面中

文档站信息架构设计:让核心事实稳定出现在页面中

很多文档站在内容不断增加后,会出现一个典型问题:页面数量越来越多,但用户和解析工具却越来越难找到基础信息。原因通常不在于内容太少,而在于内容被分散在导航、弹窗、图片、异步接口和多层跳转中。重要信息没有固定位置&#xf…

2026/9/30 7:22:17 阅读更多 →
手机芯片峰值性能卷到头了,今年的真战场在日常使用区间上

手机芯片峰值性能卷到头了,今年的真战场在日常使用区间上

制程进入2nm之后,旗舰SoC的竞争逻辑也在发生变化。先进制程能够提供更高的性能上限,但如何把这部分红利转化为更宽的高能效区间,才真正考验芯片设计能力。从现有测试结果看,天玑 9600 Pro 并没有只把重心放在极限频率,…

2026/9/30 7:22:17 阅读更多 →
类和对象(四)

类和对象(四)

在 C 的面向对象编程中,构造函数是每个类都绕不开的核心话题。它负责在对象创建时完成初始化,是对象生命周期中第一个被调用的成员函数。本文将继续深入探讨构造函数的进阶用法——初始化列表,并进一步讲解类型转换与 static 成员这两个与对象…

2026/9/30 7:22:17 阅读更多 →
遥感光伏图像 遥感无人机光伏分割数据集 利用mask形式准确分割标注出光伏面板的位置

遥感光伏图像 遥感无人机光伏分割数据集 利用mask形式准确分割标注出光伏面板的位置

大规模遥感无人机光伏分割数据集 超过11万张各类遥感光伏图像,利用mask形式准确分割标注出光伏面板的位置。数据集共20GB大规模光伏分割数据集项目详情数据集名称大规模光伏分割数据集图像总量11万张遥感光伏图像数据大小20GB标注类型Mask掩码分割标注,精…

2026/9/30 7:22:17 阅读更多 →
预算紧张时怎么起步?SaaS 与源码的入门门槛对比

预算紧张时怎么起步?SaaS 与源码的入门门槛对比

刚起步的商家,现金流往往是头等大事。SaaS 手机号注册即自动分配商城空间,不用买服务器、不用请技术,几百块就能把店开起来,试错成本很低,跑不通损失也有限。 源码部署看似入门零成本。但真正跑起来,要付服…

2026/9/30 7:21:17 阅读更多 →

日新闻

Base64 图片头部特征识别:从文件头到格式判断的完整指南

Base64 图片头部特征识别:从文件头到格式判断的完整指南

1. 项目概述:为什么说看懂 base64 图片头部是基本功这几年跟 base64 打交道的机会越来越多,后端接口返回图片、前端渲染验证码、小程序里存小图、还有一些老系统导出报表,动不动就给你一段长到怀疑人生的 base64 字符串。很多人拿到字符串就直…

2026/9/30 0:00:35 阅读更多 →
Java公交站牌广告管理系统:JSP+Servlet+MySQL实战落地指南

Java公交站牌广告管理系统:JSP+Servlet+MySQL实战落地指南

简介:本资源是一份面向Java初学者与课程设计学生的公交站牌广告灯箱管理系统毕业设计文档,聚焦城市公共广告资源信息化管理痛点,提供从需求分析到技术实现的完整方案。文档采用标准学术论文结构,含摘要、英文摘要、目录及五章正文…

2026/9/30 0:00:35 阅读更多 →
用 Redis Lua 构建大模型 API 多租户原子配额治理体系

用 Redis Lua 构建大模型 API 多租户原子配额治理体系

我去年年底接了一个内部 AI 平台的治理需求,背景很直接:公司把 DeepSeek、MiniMax 这类大模型 API 统一封装成内部网关,开放给几个业务团队用。结果第一个月账单出来,额度直接超了 4 倍。仔细查日志,发现原因并不复杂—…

2026/9/30 0:00:35 阅读更多 →

周新闻

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/29 8:16:59 阅读更多 →
SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/29 16:41:41 阅读更多 →
FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏 【免费下载链接】FireRed-OpenStoryline FireRed-OpenStoryline is an AI video editing agent that transforms manual editing into intention-driven directing through natural language …

2026/9/29 8:24:48 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/29 19:29:29 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/29 5:58:00 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/29 3:55:56 阅读更多 →