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

Java漏洞扫描系统四层架构设计与实战

发布时间:2026/9/25 4:53:25 来源:云帆数科 栏目:资讯中心
Java漏洞扫描系统四层架构设计与实战
简介本资源是一套面向计算机专业本科生与网络安全初学者的毕业设计实战项目聚焦Java语言实现的轻量级漏洞扫描系统用于辅助理解Web安全检测原理与工程落地方法。压缩包共927个文件33.11MB包含604个Nmap脚本nse、146个Lua插件lua用于协议识别与漏洞探测30个编译后class文件及12个核心java源码辅以xml配置、jar依赖库、bat启动脚本和各类安全指纹数据库如nmap-service-probes、ssl-fingerprints等体现典型扫描器的模块化架构与多协议支持能力。已有202人学习下载资源结构完整涵盖网络通信、爬虫解析Jsoup、SQL注入/XSS等常见漏洞检测逻辑、报告生成HTML/PDF及GUI界面JavaFX/Swing实现附带LGPL-2.1等开源协议文件与详细README便于二次开发与教学复现。1. 毕业设计选Java做漏洞扫描系统真不是炫技——它能跑通、能调试、能交差还能让你在答辩时被问住前先想清楚“扫什么、怎么扫、扫出来怎么信”很多同学拿到“基于Java的漏洞扫描系统”这个毕设题目第一反应是Python不是更香ScrapyRequestsBeautifulSoup三行爬完页面Nmapsqlmap一调就出结果为啥非要用Java——这恰恰是本项目最值得深挖的起点。Java在这里不是为了写个带GUI的摆设程序而是用其强类型、可追踪的线程模型、成熟的网络IO生态如Netty、Apache HttpClient和JVM级调试能力把漏洞扫描从“脚本式黑盒探测”拉回“可控、可审计、可复现”的工程实践轨道。它解决的不是“能不能扫”而是“扫得准不准、报得对不对、日志留不留痕、二次开发方不方便”。适合两类人一是需要完整走通“需求分析→协议解析→规则匹配→报告生成”全链路、且未来可能进安全开发岗的同学二是被导师要求“必须有源码、必须可调试、必须能讲清每一步数据流向”的硬核派。别被.zip后缀骗了——这不是一个打包即用的工具而是一套可拆解、可替换、可验证的扫描逻辑骨架HTTP请求构造层、响应解析层、漏洞特征匹配层、结果聚合层四层之间边界清晰改一个模块不影响其他。下面我们就从零开始把这套骨架搭起来、跑起来、调明白。2. 用Java构建漏洞扫描系统从协议层到规则层的四层架构落地2.1 协议层用Apache HttpClient 5.x封装可复用的HTTP探测器绕过重定向陷阱与连接池泄漏漏洞扫描的本质是大量、高频、差异化的HTTP/HTTPS请求发送与响应解析。Python用requests.session()很省事但Java里若直接new URL().openConnection()会踩三个坑SSL证书校验失败、302跳转后丢失原始Host头、并发下TCP连接不释放。正确做法是用Apache HttpClient 5.2注意不是4.x它原生支持异步、连接池管理、自动重定向控制且API比OkHttp更贴近HTTP协议语义。// HttpProbe.java —— 可复用的探测器核心 import org.apache.http.client.config.RequestConfig; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils; public class HttpProbe { private final CloseableHttpClient httpClient; public HttpProbe() { // 关键配置禁用自动重定向漏洞扫描需捕获302状态码本身 RequestConfig config RequestConfig.custom() .setConnectTimeout(5000) // 连接超时5秒 .setSocketTimeout(8000) // 读取超时8秒 .setConnectionRequestTimeout(3000) // 获取连接池租约超时3秒 .setRedirectsEnabled(false) // 必须false否则302响应体丢失 .build(); this.httpClient HttpClients.custom() .setDefaultRequestConfig(config) .setMaxConnTotal(200) // 总连接数上限 .setMaxConnPerRoute(50) // 每路由最大连接数 .build(); } public ProbeResult probe(String url) throws IOException { HttpGet request new HttpGet(url); // 强制设置User-Agent避免被WAF拦截毕业设计阶段常被当成爬虫封 request.setHeader(User-Agent, VulnScanner/1.0 (Java; Gradle)); request.setHeader(Accept, text/html,application/xhtmlxml,*/*); try (CloseableHttpResponse response httpClient.execute(request)) { int statusCode response.getStatusLine().getStatusCode(); String body EntityUtils.toString(response.getEntity(), UTF-8); return new ProbeResult(statusCode, body, response.getAllHeaders()); } } }参数说明setRedirectsEnabled(false)是血泪经验——很多漏洞如Open Redirect、SSRF的触发点就在302响应头中若让HttpClient自动跳转原始Location头就丢了setMaxConnPerRoute(50)防止单域名压垮目标服务器毕设演示时别被自己扫崩User-Agent不写成Mozilla/5.0因为真实WAF规则库会识别常见爬虫UA并拦截自定义UA更易通过基础检测。2.2 解析层用Jsoup精准提取HTML结构特征避开正则匹配的玄学翻车扫描结果可信度取决于“从响应中提取关键信息”的准确率。新手常写response.body().contains(phpinfo())或用正则Pattern.compile(title(.*?)/title)但这两招在真实场景中集体失效前者无法区分注释里的phpinfo字符串后者在title跨行、含HTML实体如lt;、或被JS动态渲染时直接崩溃。Jsoup是Java生态里唯一能稳定处理“脏HTML”的解析器它内置DOM树重建、XSS过滤、CSS选择器支持且内存占用可控。// HtmlParser.java —— 结构化提取而非字符串匹配 import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; public class HtmlParser { public ParseResult parse(String htmlContent) { Document doc Jsoup.parse(htmlContent); // 自动修复标签闭合、编码 ParseResult result new ParseResult(); // 提取titleJsoup自动处理跨行、实体编码、script内嵌HTML Element titleEl doc.selectFirst(title); result.title titleEl ! null ? titleEl.text() : ; // 提取所有script src用于识别前端框架如jQuery版本泄露 Elements scriptSrc doc.select(script[src]); for (Element script : scriptSrc) { result.scriptUrls.add(script.attr(src)); } // 提取meta generatorCMS识别关键线索WordPress、Drupal等 Elements metaGen doc.select(meta[namegenerator]); if (!metaGen.isEmpty()) { result.generator metaGen.first().attr(content); } // 提取所有表单action为后续SQLi/XSS测试提供入口点 Elements forms doc.select(form[action]); for (Element form : forms) { result.formActions.add(form.attr(action)); } return result; } }为什么不用正则举个真实翻车案例某同学用正则匹配input.*?type[]password[]找登录框结果匹配到input typehidden valuepassword密码明文埋在hidden字段误报成弱口令漏洞。Jsoup的select(input[typepassword])只匹配type属性值为password的元素语义精准。毕业设计答辩时评委问“你怎么确认这个输入框真是密码框”你能指着Jsoup的CSS选择器语法回答比说“我正则写的”可信十倍。2.3 规则层用JSON驱动漏洞特征库实现“改配置不动代码”的灵活扩展把漏洞判断逻辑硬编码在Java类里如if (body.contains(phpinfo)) { report(PHPINFO暴露) }是毕设大忌——它导致每次加新规则都要重新编译、部署且无法向导师演示“如何快速适配新漏洞”。正确姿势是把特征规则外置为JSON文件用Jackson反序列化为Rule对象扫描时动态加载。这样规则增删只需改JSON无需碰Java代码。// rules/web-info-leak.json [ { id: WEB-001, name: PHPINFO页面暴露, description: phpinfo()函数输出敏感环境信息, severity: HIGH, match_type: BODY_CONTAINS, pattern: PHP Version, response_code: [200], confidence: 95 }, { id: WEB-002, name: Git仓库泄露, description: 网站根目录存在.git/config文件, severity: CRITICAL, match_type: STATUS_CODE, pattern: , response_code: [200], confidence: 98 } ]// RuleEngine.java —— 规则加载与匹配引擎 import com.fasterxml.jackson.databind.ObjectMapper; import java.util.List; import java.util.stream.Collectors; public class RuleEngine { private final ListRule rules; public RuleEngine(String ruleJsonPath) throws IOException { ObjectMapper mapper new ObjectMapper(); // 加载规则文件路径由Gradle资源目录自动映射 InputStream is getClass().getClassLoader() .getResourceAsStream(ruleJsonPath); this.rules mapper.readValue(is, new TypeReferenceListRule() {}); } public ListVulnReport match(ProbeResult result) { return rules.stream() .filter(rule - matchesRule(rule, result)) .map(rule - new VulnReport( rule.getId(), rule.getName(), rule.getDescription(), rule.getSeverity(), result.getUrl(), rule.getConfidence() )) .collect(Collectors.toList()); } private boolean matchesRule(Rule rule, ProbeResult result) { // 根据match_type分发匹配逻辑 switch (rule.getMatchType()) { case BODY_CONTAINS: return result.getBody().contains(rule.getPattern()); case STATUS_CODE: return rule.getResponseCode().contains(result.getStatusCode()); case HEADER_CONTAINS: return Arrays.stream(result.getHeaders()) .anyMatch(h - h.getName().equalsIgnoreCase(Server) h.getValue().contains(rule.getPattern())); default: return false; } } }JSON规则的设计哲学confidence字段不是随便填的——它代表该规则在真实渗透测试中的误报率倒数95%置信度≈5%误报。毕设答辩时你可以解释“WEB-001置信度95因为PHPINFO页面几乎必然包含PHP Version字符串而正常页面极少出现WEB-002置信度98因为.git/config返回200是极强的泄露信号几乎没有合法场景”。这比说“我写的if判断”专业得多。3. 漏洞扫描系统的三大避坑指南从连接超时到误报率全是答辩现场高频雷区3.1 现象扫描任务卡死在某个URLCPU飙升到100%但日志无任何错误输出原因HttpClient默认使用阻塞式IO当目标服务器不响应如SYN包丢弃、防火墙静默丢包时线程会无限等待socket.read()而setSocketTimeout()只对已建立连接后的读操作生效对TCP三次握手失败无效。解决在RequestConfig中显式设置setConnectionTimeToLive(5, TimeUnit.SECONDS)并配合setStaleConnectionCheckEnabled(true)。更彻底方案是启用异步HttpClientorg.apache.http.nio.client.HttpAsyncClient但毕业设计复杂度陡增推荐折中方案用CompletableFuture.supplyAsync()包装probe方法并设置全局超时public CompletableFutureProbeResult probeAsync(String url) { return CompletableFuture.supplyAsync(() - { try { return probe(url); // 原始同步方法 } catch (Exception e) { throw new RuntimeException(Probe failed for url, e); } }).orTimeout(10, TimeUnit.SECONDS); // 10秒强制中断 }3.2 现象扫描结果里大量“PHPINFO暴露”误报点开却是404页面原因规则BODY_CONTAINS未限定response_code导致404页面的HTML模板里恰好有PHP Version字样如页脚版权信息也被匹配。解决所有BODY_CONTAINS类规则必须绑定response_code: [200]。在RuleEngine.match()中增加校验private boolean matchesRule(Rule rule, ProbeResult result) { // 先校验状态码是否在允许范围内 if (!rule.getResponseCode().contains(result.getStatusCode())) { return false; } // 再执行内容匹配... }答辩话术当评委质疑误报率时直接打开web-info-leak.json指出response_code: [200]这一行并说明“我们把状态码校验作为第一道过滤器只有HTTP 200响应才进入正文匹配这从根源上杜绝了404/500页面的误报”。3.3 现象扫描https://example.com时抛出javax.net.ssl.SSLHandshakeException: PKIX path building failed原因目标站点使用自签名证书或私有CA证书而JVM信任库cacerts中没有该CA。毕业设计常扫本地搭建的靶机如DVWA必然遇到此问题。解决绝不能全局禁用SSL验证TrustAllStrategy——这会让系统失去安全价值。正确做法是创建独立的信任库导入靶机证书# 步骤1用浏览器访问https://dvwa靶机导出证书Chrome → 地址栏锁图标 → 证书 → 复制到文件 → Base64编码 # 步骤2将导出的certificate.crt导入自定义truststore keytool -import -trustcacerts -keystore dvwa-truststore.jks \ -storepass changeit -alias dvwa -file certificate.crt// 在HttpProbe构造函数中加载自定义信任库 SSLContext sslContext SSLContexts.custom() .loadTrustMaterial( new File(src/main/resources/dvwa-truststore.jks), changeit.toCharArray() ) .build(); this.httpClient HttpClients.custom() .setSSLContext(sslContext) .build();关键提示dvwa-truststore.jks必须放在src/main/resources/下Gradle会自动将其打包进jar密码changeit是keytool默认密码切勿修改——否则loadTrustMaterial会抛UnrecoverableKeyException。4. 把扫描结果变成可交付报告用Thymeleaf生成带漏洞详情与修复建议的HTML报告毕业设计验收时“控制台打印一堆JSON”绝对不合格。你需要一份能双击打开、带目录导航、漏洞可折叠、修复建议可复制的HTML报告。Java生态里Thymeleaf是唯一能兼顾“模板简洁性”和“Java对象无缝绑定”的方案——它不像FreeMarker需要额外学习指令语法也不像JSP已被淘汰。4.1 报告模板设计用Thymeleaf片段复用与条件渲染提升可读性!-- src/main/resources/templates/report.html -- !DOCTYPE html html xmlns:thhttp://www.thymeleaf.org head meta charsetUTF-8 title漏洞扫描报告 - [[${scanTime}]]/title link hrefhttps://cdn.jsdelivr.net/npm/bootstrap5.3.0/dist/css/bootstrap.min.css relstylesheet /head body div classcontainer mt-4 h1 classmb-4漏洞扫描报告/h1 div classcard mb-4 div classcard-header bg-primary text-white 扫描概览 /div div classcard-body pstrong目标URL/strong[[${targetUrl}]]/p pstrong扫描时间/strong[[${scanTime}]]/p pstrong发现漏洞/strongspan classbadge bg-danger[[${vulnerabilities.size()}]]/span/p /div /div !-- 漏洞列表按严重等级分组 -- div th:eachseverity, iter : ${severities} h3 th:text${severity} 漏洞 ( ${vulnMap[severity].size()} )/h3 div classaccordion idaccordion[[${iter.index}] div th:eachvuln, vulnIter : ${vulnMap[severity]} classaccordion-item h2 classaccordion-header button classaccordion-button collapsed typebutton >// ReportController.java import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; import java.time.LocalDateTime; import java.util.*; Controller public class ReportController { GetMapping(/generate-report) public String generateReport(Model model, RequestParam String targetUrl, RequestParam ListString vulnerabilityIds) { // 模拟从数据库或内存获取扫描结果实际项目应查DB ListVulnReport reports loadVulnReports(vulnerabilityIds); // 按严重等级分组CRITICAL HIGH MEDIUM LOW MapString, ListVulnReport vulnMap reports.stream() .collect(Collectors.groupingBy(VulnReport::getSeverity)); ListString severities Arrays.asList(CRITICAL, HIGH, MEDIUM, LOW); model.addAttribute(targetUrl, targetUrl); model.addAttribute(scanTime, LocalDateTime.now().toString()); model.addAttribute(vulnerabilities, reports); model.addAttribute(vulnMap, vulnMap); model.addAttribute(severities, severities); return report; // 对应templates/report.html } private ListVulnReport loadVulnReports(ListString ids) { // 实际应查询数据库此处简化为内存模拟 return List.of( new VulnReport(WEB-001, PHPINFO页面暴露, ..., HIGH, http://dvwa/, 95), new VulnReport(WEB-002, Git仓库泄露, ..., CRITICAL, http://dvwa/.git/config, 98) ); } }落地细节return report会自动匹配src/main/resources/templates/report.htmlRequestParam ListString支持URL传参如/generate-report?targetUrlhttp://dvwa/vulnerabilityIdsWEB-001vulnerabilityIdsWEB-002Bootstrap CDN链接确保离线也能打开报告下载bootstrap.min.css和.js到static/目录亦可。5. 毕业设计答辩前必做的三件事让漏洞扫描系统从“能跑”升级为“能讲、能调、能延展”5.1 用JVM参数可视化内存与GC行为证明你理解“为什么Java适合做扫描器”答辩时评委可能问“为什么选Java而不是Go或Rust”——别只答“我会Java”。拿出实测数据用jstat监控扫描过程中的堆内存与GC频率证明Java的垃圾回收机制在处理大量HTTP响应体每个Body平均200KB时依然可控。# 启动扫描程序时添加JVM参数 java -Xms512m -Xmx2g -XX:UseG1GC -XX:MaxGCPauseMillis200 \ -XX:PrintGCDetails -XX:PrintGCDateStamps \ -Xloggc:gc.log -jar vuln-scanner.jar然后运行扫描目标设为100个URL再用jstat -gc pid 2000每2秒刷新一次你会看到S0CS1CECOCYGCYGCTFGCFGCTCGCCGCT102410248192262144120.1800.0050.03解读给评委听YGC12表示年轻代GC发生12次YGCT0.18s总耗时仅0.18秒说明大部分短生命周期对象如HttpResponse、Jsoup Document在Eden区就被回收FGC0证明老年代没发生Full GC2GB堆内存足够支撑百URL扫描。这比说“Java内存管理好”有力一万倍。5.2 给扫描器加一个“手动验证模式”点击报告中的漏洞自动发起PoC请求并截图响应这是让答辩脱颖而出的关键动作。当评委说“这个SQL注入漏洞你确定存在吗”你不必口头解释直接点击报告里的“SQLi-001”旁的【验证】按钮后台用Selenium启动Chrome访问http://dvwa/vulnerabilities/sqli/?id1 and 11-- SubmitSubmit截取页面并高亮显示You have an error in your SQL syntax字样。// PoCVerifier.java —— 仅用于演示不加入主扫描流程 public class PoCVerifier { public static void verifySqlInjection(String targetUrl) { WebDriver driver new ChromeDriver(); // 需提前下载chromedriver try { // 构造典型SQLi PoC URL String pocUrl targetUrl ?id1 AND 11-- SubmitSubmit; driver.get(pocUrl); // 截图保存 File screenshot ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE); FileUtils.copyFile(screenshot, new File(poc-sql-error.png)); // 检查错误关键词比肉眼更可靠 String pageSource driver.getPageSource(); if (pageSource.contains(MySQL) || pageSource.contains(syntax error)) { System.out.println(✅ SQLi PoC confirmed!); } else { System.out.println(❌ SQLi PoC not triggered.); } } finally { driver.quit(); } } }注意事项Selenium仅在verify模块中使用主扫描器仍用HttpClient更快、更轻量截图文件存于项目根目录答辩时可直接拖入PPT此举证明你理解“扫描”与“验证”的区别——前者是自动化探测后者是人工确认二者缺一不可。5.3 把漏洞规则库对接CVE官网API实现“自动更新规则”的毕业设计亮点最后一步让系统具备生产级思维。在RuleEngine初始化时增加一个fetchLatestRulesFromCVE()方法从https://cve.circl.lu/api/last/10获取最新10个CVE筛选出Web类漏洞cve.description含SQL injection、XSS等生成JSON规则并存入rules/cve-auto.json。// CVEUpdater.java public class CVEUpdater { public static void updateRules() throws IOException { String cveApiUrl https://cve.circl.lu/api/last/10; ObjectMapper mapper new ObjectMapper(); JsonNode root mapper.readTree(new URL(cveApiUrl)); ListRule cveRules new ArrayList(); for (JsonNode cve : root) { String description cve.path(summary).asText(); if (description.toLowerCase().contains(sql injection) || description.toLowerCase().contains(cross site scripting)) { Rule rule new Rule(); rule.setId(CVE- cve.path(id).asText().replace(CVE-, )); rule.setName(CVE自动规则: cve.path(id).asText()); rule.setDescription(description.substring(0, Math.min(100, description.length()))); rule.setSeverity(HIGH); rule.setMatchType(BODY_CONTAINS); rule.setPattern(description.toLowerCase().contains(sql) ? SQL syntax : script); rule.setResponseCode(Arrays.asList(200)); rule.setConfidence(85); cveRules.add(rule); } } // 写入JSON文件覆盖原有cve-auto.json mapper.writeValue( new File(src/main/resources/rules/cve-auto.json), cveRules ); } }答辩价值当评委问“你的规则库怎么保持更新”你打开src/main/resources/rules/cve-auto.json展示自动生成的CVE规则并说“我们每天凌晨2点执行CVEUpdater.updateRules()把CVE官网最新漏洞转化为可执行规则无需人工维护——这才是现代漏洞扫描器应有的样子。” 这句话能让导师当场给你打高分。我带过三届毕设见过太多同学把“基于Java的漏洞扫描系统”做成一个带Swing界面的HTTP请求发送器。真正拉开差距的从来不是功能多寡而是你能否在答辩时指着某行代码说清“为什么这里必须这么写”——比如setRedirectsEnabled(false)背后是对HTTP重定向漏洞原理的理解比如Jsoup.parse()背后是对HTML解析器与正则本质区别的认知比如jstat输出背后是对JVM内存模型的掌握。这些细节才是毕业设计该有的技术尊严。希望帮到你。本文还有配套的精品资源点击获取

相关推荐

SpringBoot+Vue植物销售管理系统:从设计到部署全解析
SpringBoot+Vue植物销售管理系统:从设计到部署全解析

搞过不少课程设计和毕业设计项目,说实话,“基于SpringBootVue的植物销售管理系统”这类题目,属于典型的“看着烂大街,实际上最考察基本功”的那一类。它不要求你搞什么高深的算法,也不涉及复杂的分布式架构&#xff0c… · 2026/9/25 4:53:25

USB转I2C调试实战:地址扫描、Excel导出与100kHz速率测试
USB转I2C调试实战:地址扫描、Excel导出与100kHz速率测试

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

4步将 Godot-MCP 插件集成到 Godot 项目:从复制 addons 到启用插件的完整指南
4步将 Godot-MCP 插件集成到 Godot 项目:从复制 addons 到启用插件的完整指南

4步将 Godot-MCP 插件集成到 Godot 项目:从复制 addons 到启用插件的完整指南 【免费下载链接】Godot-MCP An MCP for Godot that lets you create and edit games in the Godot game engine with tools like Claude 项目地址: https://gitcode.com/gh_mirrors/go… · 2026/9/25 4:53:19

廖昌永与岳父母:穷小子逆袭后仍懂感恩,婚姻经营的现实参照
廖昌永与岳父母:穷小子逆袭后仍懂感恩,婚姻经营的现实参照

"丈母娘看女婿,越看越欢喜"这句话放在今天,多少有点理想主义。网上随便一刷,全是为彩礼闹掰的、为婚房署名斗智斗勇的、因为男方原生家庭条件直接被判出局的。所以当"廖昌永:岳父母当年不嫌我穷小子,如… · 2026/9/25 5:55:45

Atlas 300V部署YOLO全攻略:从模型转换到推理加速实战
Atlas 300V部署YOLO全攻略:从模型转换到推理加速实战

提到“atlas”,圈内人第一个想到的往往不是希腊神话里的擎天神,也不是地图册,而是华为昇腾(Ascend)平台上的那套AI计算产品线。如果你正在做边缘视频分析、目标检测或者办公楼宇的智慧化改造,大概率已经听说… · 2026/9/25 5:55:45

RT-Thread RA-Eco-RA4E2-64PIN 开发板 BSP 实战:从硬件资源到 MDK5 编译烧录与源码剖析
RT-Thread RA-Eco-RA4E2-64PIN 开发板 BSP 实战:从硬件资源到 MDK5 编译烧录与源码剖析

操作系统嵌入式物联网嵌入式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 点击查看 免费下载 本文基于… · 2026/9/25 5:55:39

OpenChamber 1.8.3 深度解析:重构上下文面板与嵌入会话聊天、用户消息渲染控制与模型选择器体验升级
OpenChamber 1.8.3 深度解析:重构上下文面板与嵌入会话聊天、用户消息渲染控制与模型选择器体验升级

AI Agent人工智能代码智能体交互助手 【免费下载链接】openchamber Agentic Development Environment based on OpenCode AI agent 项目地址: https://gitcode.com/gh_mirrors/op/openchamber 点击查看 免费下载 OpenChamber 1.8.3(发布日期 2026-03-02… · 2026/9/25 5:55:39

QualityInspector 工业质检数据集准备实战:以磁砖缺陷数据为例的三种任务格式转换全指南
QualityInspector 工业质检数据集准备实战:以磁砖缺陷数据为例的三种任务格式转换全指南

人工智能计算机视觉预训练 【免费下载链接】PaddleSeg Easy-to-use image segmentation library with awesome pre-trained model zoo, supporting wide-range of practical tasks in Semantic Segmentation, Interactive Segmentation, Panoptic Segmentation, Image Matting,… · 2026/9/25 5:55:39

NLP学术速递工作流:精准筛选与可操作知识提取
NLP学术速递工作流:精准筛选与可操作知识提取

1. 这不是“新闻简报”,而是一份NLP研究者的日常补给清单你有没有过这种体验:早上打开arXiv,看到27篇新上传的NLP论文标题,扫了一眼“LLM-based Reasoning over Knowledge Graphs with Adaptive Prompting”,心里一紧—… · 2026/9/25 5:55:39

数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)
数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)

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

创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战

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

MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX

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

了解更多?预约专属演示

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

企业微信二维码