首页/新闻资讯/正文详情

Sliver 项目内 regexp2 v2:Go 语言中的 .NET 风格正则引擎完全指南

发布时间:2026/9/24 17:09:30 来源:云帆数科 栏目:资讯中心
Sliver 项目内 regexp2 v2:Go 语言中的 .NET 风格正则引擎完全指南
网络安全【免费下载链接】sliverAdversary Emulation Framework项目地址https://gitcode.com/gh_mirrors/sl/sliver点击查看免费下载regexp2 是一个为 Go 打造的、功能完备的正则表达式引擎它移植自 .NET Framework 的System.Text.RegularExpressions支持回溯、条件匹配、环视lookaround与命名捕获组等 RE2 引擎不提供的特性。本指南以 regexp2 v2 README 为核心结合其在当前仓库中的 vendored 源码与模块配置系统讲解 v2 的安装、API 变化、编译选项、Unicode 属性类、RE2/ECMAScript 兼容模式以及超时与协程管理帮助读者在需要复杂模式或 .NET 兼容性的场景中正确选用与调优该引擎。为什么需要 regexp2与 Go 标准库 regexp 的取舍Go 标准库的regexp包基于 RE2 引擎提供了常数时间的执行保证不会因灾难性回溯catastrophic backtracking而卡死。但它也因此不支持回溯、环视、反向引用、条件匹配等特性。regexp2 的设计初衷正是填补这一空白它不提供类似内置regexp包的常数时间保证但允许回溯并与 Perl5 和 .NET 兼容。用哪种引擎取决于你的实际需求大多数场景应优先使用标准库regexpRE2性能可预测、无超时风险复杂模式或 .NET 兼容需求当你需要编写非常复杂的模式或需要与 .NET 端正则行为保持一致时才引入 regexp2。在 Sliver 项目当前的 go.mod 中github.com/dlclark/regexp2 v1.11.5与github.com/dlclark/regexp2/v2 v2.2.1均以// indirect形式存在且 v2 源码已 vendored 于 vendor/github.com/dlclark/regexp2/v2对应 vendor/modules.txt 中的模块记录。这表明该库通过传递依赖被引入项目作为第三方依赖为项目提供高级正则能力。引擎基础源自 .NET 的移植实现regexp2 的引擎移植自 .NET Framework 的System.Text.RegularExpressions.Regex引擎——该引擎于 2015 年以 MIT 许可证开源。移植过程中虽然对部分实现做了清理README 中提到原regexcharclass.cs质量不佳但解析树、生成的代码以及最终的模式匹配结果应与 .NET 保持一致。由于 .NET 字符串与 Go 字符串存在根本差异.NET 以 UTF-16 代码单元为基础Go 以字节/rune 为基础移植时也从 Go 官方regexp引擎借鉴了部分字符串处理逻辑。v2 的内部架构从 vendor/github.com/dlclark/regexp2/v2 的源码结构可以看出 v2 的核心模块划分文件职责regexp.goRegexp类型、Compile/MustCompile、MatchString、FindStringMatch、FindNextMatch、Replace等主 APIoptions.goRegexOptions常量与全部CompileOption编译选项runner.go匹配执行器runner负责扫描输入并执行匹配match.goMatch、Group、Capture等匹配结果类型replace.go替换逻辑与替换数据解析split.gov2 新增的Split能力bufferpool.gorune 缓冲区与替换输出缓冲区的共享sync.Pool池化fastclock.go超时时钟后台 worker 更新时钟值供超时检查使用stringprefixfilter.go前缀过滤优化syntax/解析器、字符类、转义、前缀分析、Unicode 别名表等编译期组件helpers/indexof.go、runes.go等底层辅助函数v2 中解析器、优化器与执行器内部发生了显著重构以支持生成式正则引擎与额外的匹配优化。安装与 v2 兼容性变更regexp2 是 go-gettable 库安装命令go get github.com/dlclark/regexp2/v2latest从 v1 升级到 v2 需要注意以下不兼容变更详见 README 的 Changes in v2 一节模块路径变更模块路径改为github.com/dlclark/regexp2/v2import 时必须携带/v2后缀Go 版本要求最低支持 Go 1.25代码生成支持为配合regexp2cgregexp2 的代码生成工具合入了相关支持新增Split方法可用正则匹配结果对字符串进行切分新增compat子包提供与标准库regexp.Regexp相同Find*/Match*方法签名的适配器以及compat.Matcher接口编译 API 变更Compile与MustCompile改为接收可变参数编译选项CompileOption选项迁移原regexp2.Debug与regexp2.Compile迁移为regexp2.OptionDebug()与regexp2.OptionIsCodeGen()字段更名Capture.Index/Capture.Length更名为Capture.RuneIndex/Capture.RuneLength明确其为 rune 偏移新增Capture.ByteRange()返回捕获文本的 UTF-8 字节偏移与长度首次调用时会在后台进行 rune 偏移到字节偏移的转换ECMAScript 语义调整regexp2.ECMAScript选项的目标从C# 的 ECMAScript 行为改为更贴近 ECMAScript 标准。基本用法从 Compile 到 Match编译与匹配regexp2 的用法与 Go 标准库regexp高度相似先用Compile或MustCompile将模式编译为状态机再用Regexp结构体反复查找匹配。两者的区别在于MustCompile在模式非法时会 panic。Regexp结构体可安全跨 goroutine 使用。re : regexp2.MustCompile(Your pattern) if isMatch, _ : re.MatchString(Something to match); isMatch { //do something }*Match*方法唯一应当返回的错误是超时错误当你设置了re.MatchTimeout字段时其余任何错误都视为 regexp2 包自身的 bug。捕获组详解Group 0 与多次捕获如果需要匹配中的捕获组细节使用FindStringMatchif m, _ : re.FindStringMatch(Something to match); m ! nil { // the whole match is always group 0 fmt.Printf(Group 0: %v\n, m.String()) // you can get all the groups too gps : m.Groups() // a group can be captured multiple times, so each cap is separately addressable fmt.Printf(Group 1, first capture, gps[1].Captures[0].String()) fmt.Printf(Group 1, second capture, gps[1].Captures[1].String()) }关键语义如下Group 0 内嵌于 MatchGroup 0 是自动分配的、覆盖整个模式的分组因此m.String()等价于m.Group.String()也等价于m.Groups()[0].String()每个 Group 内嵌其最后一次捕获g.String()等价于g.Capture.String()也等价于g.Captures[len(g.Captures)-1].String()捕获可多次发生当分组在模式中被重复执行时Captures切片会包含多次捕获结果需要单独寻址。查找多个匹配FindNextMatch要在同一输入字符串中查找多个匹配使用FindNextMatch。例如实现一个类似regexp.FindAllString的函数func regexp2FindAllString(re *regexp2.Regexp, s string) []string { var matches []string m, _ : re.FindStringMatch(s) for m ! nil { matches append(matches, m.String()) m, _ re.FindNextMatch(m) } return matches }FindNextMatch经过优化会复用底层的字符串/rune 切片减少重复分配。Rune 偏移与字节偏移regexp2 内部始终基于[]rune运算因此Match中的RuneIndex与RuneLength引用的是rune 位置而非字节位置即使输入是 string。需要与原始字符串对应时使用ByteRange()获取 UTF-8 字节偏移。相关源码可在 match.go 中查看当你不需要显式偏移时优先使用提供的String()方法ByteRange()会在共享的匹配文本上惰性缓存字节偏移因此同一 Match 上不同捕获的首次ByteRange()调用不可并发执行。Unicode 字符类与属性选择regexp2 支持\p{...}Unicode 字符类与\P{...}否定类。在非 ECMAScript Unicode 模式下还支持 RE2/PCRE 风格的单字母形式例如\pL。类名可以是 Go 标准库 Unicode 表暴露的 Unicode 类别、类别别名、文字script或属性letter : regexp2.MustCompile(\p{L}) katakana : regexp2.MustCompile(\p{Katakana}) notEmoji : regexp2.MustCompile(\P{Emoji})属性选择语法\p{propertyvalue}regexp2 还支持\p{propertyvalue}形式的 Unicode 属性选择语法。属性名与属性值的别名匹配是宽松的大小写、连字符与下划线均被忽略。例如以下三者指代同一个类\p{GCBRI}\p{grapheme_cluster_breakregional_indicator}\p{grapheme-cluster-breakregional-indicator}合法的属性名与别名来自 Unicode 17.0.0 的PropertyAliases.txt合法的属性值来自PropertyValueAliases.txt。对于比 Go 标准库表更新更频繁的包本地属性regexp2 依据 Unicode 17.0.0 的以下数据文件生成表格DerivedCoreProperties.txtemoji/emoji-data.txtauxiliary/GraphemeBreakProperty.txtauxiliary/WordBreakProperty.txtauxiliary/SentenceBreakProperty.txt这些属性别名表的实现位于 syntax/unicode_alias_tables.go。regexp 兼容适配器compat 子包github.com/dlclark/regexp2/v2/compat包为那些想要标准库regexp.Regexp的Find*与Match*方法签名、但仍使用 regexp2 引擎的调用方提供适配器import ( github.com/dlclark/regexp2/v2 github.com/dlclark/regexp2/v2/compat ) re : compat.MustCompile(Your pattern, regexp2.RE2) if re.MatchString(Something to match) { // do something } matches : re.FindAllString(abc axbc, -1) _ matches也可以包装一个已编译的 regexpbase : regexp2.MustCompile(Your pattern) re : compat.Wrap(base)适配器包含标准库的完整匹配表面Match、MatchString、MatchReader以及全部Find(All)?(String)?(Submatch)?(Index)?方法。注意索引方法返回 UTF-8 字节偏移与regexp一致而非 regexp2 的 rune 偏移由于标准库方法签名不返回错误适配器在底层 regexp2 匹配返回错误如超时时会 panic需要把超时当作错误处理时请直接使用 regexp2 主 API。compat.Matcher 接口compat 包还定义了compat.Matcher——一个由*regexp.Regexp与*compat.Regexp共同实现的通用接口。当代码需要同时接受标准库引擎与 regexp2 适配器时使用它func findWords(re compat.Matcher, input string) []string { return re.FindAllString(input, -1) }编译选项Compile Options行为与性能调优v2 中Compile与MustCompile接收可变参数编译选项。大多数用户可以省略它们得到默认正则行为外加有界的共享 rune 缓冲区与替换输出缓冲区池每个 regexp 的解析替换模式缓存ASCII 字符类位图。正则选项常量正则选项常量可以直接传入单个或按位掩码组合re : regexp2.MustCompile(Your pattern, regexp2.IgnoreCase, regexp2.Singleline) re regexp2.MustCompile(Your pattern, regexp2.IgnoreCase|regexp2.Singleline)这些常量定义于 options.go常量值说明IgnoreCase0x0001忽略大小写对应内联iSingleline0x0010单行模式对应内联sECMAScript0x0100尽力贴合 ECMAScript 规范行为RE20x0200RE2标准库 regexp兼容模式Unicode0x0400Unicode 模式对应内联u性能调优选项re : regexp2.MustCompile(Your pattern, regexp2.IgnoreCase, regexp2.OptionMaxCachedRuneBufferLength(64*1024), regexp2.OptionMaxCachedReplacerDataEntries(8), )仅编译期选项仅编译期选项配置的是无法从模式内联设置的编译行为re : regexp2.MustCompile((?firstThis) (is), regexp2.OptionMaintainCaptureOrder())编译选项默认值速查表选项默认值使用方工作集增长权衡OptionMaintainCaptureOrder()false混合命名/未命名捕获时解析器的捕获槽分配匹配期无增长仅改变编译期捕获编号保持命名与未命名捕获按模式顺序编号而非命名捕获排在未命名之后可能改变数字反向引用的含义故由调用方控制OptionDebug()false编译转储与 runner 追踪仅调试输出量便于诊断但输出噪音大、追踪匹配变慢OptionIsCodeGen()false为regexp2cg生成引擎做的编译期查找优化分析每个编译的 regexp发生于Compile/MustCompile期间启用更昂贵的分析供生成引擎使用普通解释器执行时不要使用解释器默认刻意避免该编译期开销OptionMaxCachedRuneBufferLength(n)256K runes走池化 runner 的字符串 API如MatchString、替换模式的Replace将输入字符串转为内部[]rune时进程级共享sync.Pool按大小类别保留不随 regexp 或输入增长可被 GC 回收调大可用更大池化缓冲区、减少大字符串重复匹配的分配调小则大输入直接分配OptionMaxCachedReplaceBufferLength(n)256 KB基于替换模式Replace通过共享字节缓冲构建输出时进程级共享sync.Pool按大小类别保留跨 regexp 共享不因ReplaceFunc输出增长调大让更大的替换输出复用池化缓冲调小则大替换直接分配OptionMaxCachedReplacerDataEntries(n)16字符串替换模式的Replace替换模式被解析为可复用替换数据后每个编译的 regexp缓存随不同可缓存替换串增长至该上限单个 regexp 配合多个高频替换模式时调大设0禁用该缓存OptionMaxCachedReplacerDataBytes(n)4 KB解析替换模式缓存超过该长度的替换串仅本次解析、不保留每个编译的 regexp与条目数上限组合生效仅源码文本不超过该大小的替换串可入缓存大型替换模式被复用时调大调小避免长期保留超大替换模式OptionDisableCharClassASCIIBitmap()false编译期字符类与首字符前缀集准备默认对含 ASCII 成员的字符类生成小位图供CharIn使用每个编译的 regexp发生于编译期每个合格字符类持一个小位图默认开启可加速 ASCII 密集的字符类检查代价是少量每类内存与编译期工作设为 true 可降低海量字符类的内存占用但 ASCII 字符类匹配可能变慢池化与缓存边界的特殊取值池化缓冲区选项设n为0禁用池化-1允许全部内置大小类别。rune 缓冲类别为 1K、4K、16K、64K、256K runes替换字节缓冲类别为 4 KB、16 KB、64 KB、256 KB、1 MB默认不使用 1 MB 池替换数据字节缓存选项-1表示无界条目数缓存选项设n为0禁用缓存。这些池化机制的实际实现位于 bufferpool.go。regexp 与 regexp2 特性对照表类别regexpregexp2灾难性回溯可能否常数执行时间保证是若模式有风险可用re.MatchTimeout字段Python 风格捕获组(?Pnamere)是否RE2 兼容模式下是.NET 风格捕获组(?namere)或(?namere)是是注释(?#comment)否是分支编号重置(?\|a\|b)否否占有匹配(?re)否是正向前瞻(?re)否是负向前瞻(?!re)否是正向后顾(?re)否是负向后顾(?!re)否是反向引用\1否是命名反向引用\kname否是Python 风格命名反向引用(?Pname)否否RE2 兼容模式下是命名 ASCII 字符类[[:foo:]]是否RE2 兼容模式下是条件匹配(?(expr)yes\|no)否是RE2 兼容模式regexp2 的默认行为是贴近 .NET 正则引擎但提供RE2选项以增强与 RE2 的解析兼容性。使用RE2选项不会移除任何特性只会改变以下行为支持命名 ASCII 字符类如[[:foo:]]支持 Python 风格捕获组如(?Pnamere)支持 Python 风格命名反向引用如(?Pname)改变$的单行行为仅匹配字符串末尾与 RE2 一致改变\d、\s、\w字符类以匹配 RE2 的字符集。注意若同时使用ECMAScript选项\s将改为匹配 ECMAScript 字符集——ECMAScript 允许的空白字符比 RE2 多但仍少于默认行为允许字符转义序列存在默认值。例如默认情况下\_不是已知字符转义、会编译失败但在 RE2 模式下它将匹配字面字符_。re : regexp2.MustCompile(Your RE2-compatible pattern, regexp2.RE2) if isMatch, _ : re.MatchString(Something to match); isMatch { //do something }README 明确说明该功能仍在完善中作者欢迎更多改进建议如更宽松的字符转义规则。灾难性回溯与超时管理regexp2 支持可能导致灾难性回溯的特性Regexp.MatchTimeout可用于限制此类行为的影响匹配大约在MatchTimeout后失败并返回错误。默认不进行超时检查regexp.go 中DefaultMatchTimeout为time.Duration(math.MaxInt64)即永远。超时检查的实现与开销超时检查并非免费。当前实现会启动一个后台 worker大约每 100 毫秒更新一次时钟值匹配代码将该值与预先计算的匹配截止时间比较。性能影响如下带超时的匹配与不带超时的匹配速度几乎相同只要有存活的带超时匹配就会有后台 CPU 负载当前现代机器上约为~0.15%。该负载恒定不变不随匹配数量包括并行匹配数量增长若没有存活的带超时匹配后台负载会一直持续到最长的截止时间匹配超时 匹配开始时间到达为止。例如设置一分钟超时即使匹配很快完成负载也会持续约一分钟。相关实现位于 fastclock.go。goroutine 泄漏问题与解决如果在单元测试中使用 goleak 等验证所有 goroutine 退出的库且你或你的依赖使用了带MatchTimeout的正则很可能报错——因为后台超时 goroutine 尚未退出。解决办法是让测试等待后台超时 goroutine 退出func TestSomething(t *testing.T) { defer goleak.VerifyNone(t) defer regexp2.StopTimeoutClock() // ... test } //or func TestMain(m *testing.M) { // setup // ... // run m.Run() //tear down regexp2.StopTimeoutClock() goleak.VerifyNone(t) }这会给每个测试或TestMain增加约 100ms 的运行时间。若希望更快可以在测试文件的init函数中调高超时 goroutine 的时钟周期。注意regexp2.SetTimeoutCheckPeriod不是线程安全的必须在启动任何带超时的正则之前设置func init() { //speed up testing by making the timeout clock 1ms regexp2.SetTimeoutCheckPeriod(time.Millisecond) }ECMAScript 兼容模式在 ECMAScript 模式下引擎尽力贴合 ECMAScript 规范 中描述的正则引擎行为。重要提示该标志不应被当作 C#RegexOptions.ECMAScript的兼容实现。regexp2 的 ECMAScript 行为优先遵循 ECMAScript 规范而非复刻 C# 正则引擎对该选项的解释。另外ECMAScript 模式还提供 Unicode 模式仅当同时提供ECMAScript与Unicode时才允许解析\u{CodePoint}语法。re : regexp2.MustCompile(\u{1F600}, regexp2.ECMAScript|regexp2.Unicode)已知边界与注意事项README 的作者坦诚说明了当前实现的一些边界多字节 Unicode 测试不足作者运行了大量来自不同来源的测试发现调试输出与 .NET 引擎一致但 .NET 与 Go 对字符串的处理差异很大。大部分测试集中在基本 ASCII 与少量多字节 Unicode 上因此与补充 Unicode 字符相关的字符集字符串处理可能存在 bug从右到左RTL支持代码中实现了 RTL 支持但测试覆盖不佳。在 Sliver 项目中的实际应用背景在 Sliver 仓库中regexp2 v2 以 vendored 第三方依赖的形式存在go.mod 声明了github.com/dlclark/regexp2 v1.11.5 // indirect与github.com/dlclark/regexp2/v2 v2.2.1 // indirect两个版本go.sum 记录了 v2.2.1 的哈希校验vendor/modules.txt 记录了github.com/dlclark/regexp2/v2、helpers、syntax三个包的 vendoring 条目vendored 源码位于 vendor/github.com/dlclark/regexp2/v2。这意味着 regexp2 是作为传递依赖被引入的仓库中的第一方源码并未直接 import 它。当你在 Sliver 生态中编写需要 .NET 风格正则、回溯或环视特性的扩展逻辑时可以复用这份 vendored 依赖——直接在 import 中使用github.com/dlclark/regexp2/v2即可无需额外下载。总结regexp2 v2 为 Go 开发者提供了一条通往 .NET 风格正则的完整路径回溯、环视、命名捕获、条件匹配、Unicode 属性选择与 RE2/ECMAScript 兼容模式一应俱全。v2 在 API 层面的最大变化是可变参数编译选项CompileOption、compat适配器子包、Split方法以及 rune/字节偏移语义的明确化。使用时务必牢记两条铁律默认优先选择标准库regexpRE2仅在需要复杂模式或 .NET 兼容时才启用 regexp2使用回溯特性时务必设置re.MatchTimeout并在测试环境中配合StopTimeoutClock或SetTimeoutCheckPeriod管理后台时钟 goroutine。赞分享网络安全【免费下载链接】sliverAdversary Emulation Framework项目地址https://gitcode.com/gh_mirrors/sl/sliver点击查看免费下载相关推荐regexp2 全功能正则引擎完全指南从 .NET 移植到 Go 的回溯式正则方案regexp2 全功能正则引擎完全指南从 .NET 移植到 Go 的回溯式正则方案 regexp2 是一个为 Go 语言提供的功能完备的正则表达式引擎库它从开发工具5分钟入门VeauryReact项目嵌入Vue3组件的完整教程5分钟入门VeauryReact项目嵌入Vue3组件的完整教程 Veaury是一个强大的工具让你能够在React项目中无缝嵌入Vue3组件实现两个框架的完前端OpenCloud 依赖解析regexp2 —— 支持回溯与 .NET/Perl5 兼容的 Go 正则引擎OpenCloud 依赖解析regexp2 —— 支持回溯与 .NET/Perl5 兼容的 Go 正则引擎 regexp2 是一款功能完整的 Go 正则表达式后端微服务存储认证鉴权上一篇dxwrapper 完全指南Win10/11 老游戏兼容修复3 步跑通经典 DirectX 游戏下一篇抖音批量下载工具3 步跑通主页去水印下载创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

timesfm-3.0-pytorch架构深度解析:Mixing Transformer、Variate Attention与RevIN如何协同工作
timesfm-3.0-pytorch架构深度解析:Mixing Transformer、Variate Attention与RevIN如何协同工作

timesfm-3.0-pytorch架构深度解析:Mixing Transformer、Variate Attention与RevIN如何协同工作 【免费下载链接】timesfm-3.0-pytorch 项目地址: https://ai.gitcode.com/hf_mirrors/google/timesfm-3.0-pytorch TimesFM 3.0(timesfm-3.0-pytorc… · 2026/9/24 17:09:30

RT-Thread HT32 BSP 内嵌的 CMSIS Version 5:ARM 标准软硬件抽象层解析与源码实战
RT-Thread HT32 BSP 内嵌的 CMSIS Version 5:ARM 标准软硬件抽象层解析与源码实战

操作系统嵌入式物联网嵌入式OSRTOS 【免费下载链接】rt-thread RT-Thread is an open source IoT Real-Time Operating System (RTOS). https://rt-thread.github.io/rt-thread/ 项目地址: https://gitcode.com/gh_mirrors/rt/rt-thread 点击查看 免费下载 CMSIS&a… · 2026/9/24 17:09:24

PaddleSpeech 中 ERNIE-SAT 模型源码深度解析:跨语言语音合成与语音编辑的联合预训练实现
PaddleSpeech 中 ERNIE-SAT 模型源码深度解析:跨语言语音合成与语音编辑的联合预训练实现

人工智能语音音频NLP媒体生成 【免费下载链接】PaddleSpeech Easy-to-use Speech Toolkit including Self-Supervised Learning model, SOTA/Streaming ASR with punctuation, Streaming TTS with text frontend, Speaker Verification System, End-to-End Speech Translation … · 2026/9/24 17:09:24

n8n架构深度拆解:从单进程到队列模式的企业级部署实战
n8n架构深度拆解:从单进程到队列模式的企业级部署实战

1. 为什么我要花两周时间拆解 n8n 的架构第一次在生产环境里跑 n8n 是两年前的事。当时团队要做一个跨境电商订单聚合的自动化流程,需求很朴素:从三个平台拉订单、清洗字段、写进内部 ERP、异常单推送到企业微信。市面上能选的方案不少,Zapie… · 2026/9/24 18:18:15

LIBTCPIP用户态协议栈与tun2sys-socket数据通路技术详解
LIBTCPIP用户态协议栈与tun2sys-socket数据通路技术详解

几个月前,我在折腾一个网络流量分析工具,遇到了一个特别尴尬的处境:网卡上抓到的数据包是一堆二进制的 IP 报文,可我的业务逻辑只想拿到一条条干净的 TCP 流,然后用普通的 read/write 去处理。当时同事甩过来一个词&am… · 2026/9/24 18:18:15

输电线路金具检测数据集:2000+实拍图+XML标注
输电线路金具检测数据集:2000+实拍图+XML标注

简介:本资源是面向电力系统AI研发人员、计算机视觉工程师及高校科研团队的专用目标检测数据集,聚焦输电线路关键金具的自动识别与状态监测,解决传统人工巡检效率低、漏检率高等痛点,适用于无人机/机器人智能巡检、腐蚀松脱预警等工… · 2026/9/24 18:18:15

Javaweb超市管理系统毕业设计:从源码跑通到答辩讲透的工程实践
Javaweb超市管理系统毕业设计:从源码跑通到答辩讲透的工程实践

简介:这是一套面向计算机相关专业毕业设计与JavaWeb实战练习的超市管理系统完整项目包,采用B/S结构,基于JSP、Servlet、JDBC开发,以MySQL作为后台数据库,开发环境为JDK、Eclipse与Tomcat,适合需要完整毕设方… · 2026/9/24 18:18:15

LIBTCPIP技术探秘:tun2sys-socket桥接TUN与系统socket
LIBTCPIP技术探秘:tun2sys-socket桥接TUN与系统socket

1. LIBTCPIP 与 tun2sys-socket 到底是什么 把"LIBTCPIP 技术探秘(tun2sys-socket)"这个标题拆开看,其实是在聊一件事:在用户态用一个独立的 TCP/IP 协议栈,把 TUN 虚拟网卡收到的流量,转成系统 … · 2026/9/24 18:18:15

医学图像2D切片抽取:从3D CT构建冠状面/矢状面分割数据集
医学图像2D切片抽取:从3D CT构建冠状面/矢状面分割数据集

简介:本资源是面向医学图像分割初学者与算法工程师的轻量级2D脾脏分割数据集,适用于模型训练、验证及可视化教学等场景。数据源自公开3D脾脏分割数据集,在冠状面与矢状面分别抽取高质量2D切片,剔除前景占比低于0.1%的低信息量样本… · 2026/9/24 18:18:08

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13

1D-CNN时间序列建模实战:从Conv1d原理到工业落地
1D-CNN时间序列建模实战:从Conv1d原理到工业落地

简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26

柔软的L:汉语语流中被忽视的舌肌张力控制
柔软的L:汉语语流中被忽视的舌肌张力控制

1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码