Java漏洞扫描系统毕设实战:从HTTP通信到XSS/SQLi检测
简介本资源是一套面向计算机专业本科生及网络安全初学者的毕业设计实战项目聚焦Java语言实现的漏洞扫描系统开发旨在帮助学习者掌握Web安全检测原理与工程化落地能力。压缩包共927个文件主体包含604个NSE脚本Nmap Scripting Engine用于协议识别与漏洞探测、146个Lua脚本支撑动态规则匹配与响应解析、30个编译后的class文件及12个核心java源码辅以XML配置、JAR依赖库、批处理启动脚本start.bat及LGPL/BSD等开源协议说明文件整体33.11MB结构完整、开箱即用。已有204人下载学习资源提供可直接运行的扫描框架、模块化代码结构含网络通信、爬虫解析、SQL注入/XSS等典型漏洞检测逻辑、多线程并发扫描实现及日志与报告生成机制特别适合开展课程设计、毕设开发或安全工具二次开发参考。1. 毕业设计——基于Java的漏洞扫描系统为什么它不是“写个Socket发几个HTTP请求”就能交差的硬核项目很多同学拿到“基于Java的漏洞扫描系统”这个毕设题目时第一反应是不就是用HttpClient发点GET/POST匹配下返回里的scriptalert(1)/script或者phpinfo()等真跑起来才发现——扫一个本地靶机比如DVWA或WebGoat要么超时卡死要么扫出一堆误报要么连基础SQL注入都漏检更别说处理重定向、CSRF Token动态刷新、JSON接口参数解析、Cookie会话维持这些真实Web交互逻辑。这不是Java语法练习题而是一个需要平衡深度检测能力、工程健壮性与毕业答辩可演示性的系统级实践它得能跑通OWASP Top 10常见漏洞的最小可行验证链如反射型XSS探测、简单SQLi盲注判断得有可配置的扫描策略并发数、超时、User-Agent轮换得把结果结构化存进数据库MySQL/SQLite还得带个Swing或JavaFX界面让老师点几下就能看到“发现1个高危漏洞”。适合两类人一是想把Java网络编程、多线程、HTML解析、数据库操作串成闭环的实战派二是需要在简历里塞一个“能讲清技术选型、踩过坑、有可运行Demo”的应届Java工程师。别碰Python的Scrapy或Nmap封装——这题的考点就在Java生态里怎么把“轮子”焊死、调稳、压测出边界。2. 从零搭起扫描引擎骨架用HttpURLConnectionJsoup构建可控的HTTP层漏洞扫描系统的命脉是HTTP通信层——它必须比浏览器更“懂规则”又比curl更“可编程”。Java原生HttpURLConnection虽老但稳定、无第三方依赖、可控性强配合Jsoup做HTML解析构成毕业设计最稳妥的底层组合。关键不是“能不能发请求”而是如何让每次请求都像真实浏览器一样扛住重定向、维持会话、处理编码、识别WAF干扰。2.1 初始化可复用的HTTP客户端连接池与超时控制直接new HttpURLConnection每次创建新连接扫100个URL就OOM。必须封装成带连接复用和超时管理的工具类public class ScanHttpClient { private final int connectTimeout 5000; // 连接超时5秒 private final int readTimeout 10000; // 读取超时10秒 private final String userAgent VulnScanner/1.0 (Java; Student Project); public HttpURLConnection openConnection(String urlStr) throws IOException { URL url new URL(urlStr); HttpURLConnection conn (HttpURLConnection) url.openConnection(); conn.setRequestMethod(GET); conn.setConnectTimeout(connectTimeout); conn.setReadTimeout(readTimeout); conn.setRequestProperty(User-Agent, userAgent); conn.setRequestProperty(Accept, text/html,application/xhtmlxml,application/xml;q0.9,*/*;q0.8); conn.setInstanceFollowRedirects(true); // 自动处理301/302 conn.setDoInput(true); return conn; } }注意setInstanceFollowRedirects(true)是关键——很多漏洞触发点藏在跳转后的页面如登录后跳转到/admin不自动跟随就漏掉整个路径。但要注意某些WAF会故意返回302跳转到蜜罐页此时需结合响应头Location内容做白名单校验这点在第4章避坑部分展开。2.2 解析响应并提取关键信息用Jsoup对抗HTML噪声conn.getInputStream()拿到的原始字节流直接正则匹配遇到Gzip压缩、UTF-8 BOM、JS动态渲染的DOM就跪。Jsoup能自动解压、转码、修复 malformed HTML且提供CSS选择器语法public Document parseResponse(HttpURLConnection conn) throws IOException { InputStream is conn.getInputStream(); // Jsoup自动处理Content-Encoding: gzip Document doc Jsoup.parse(is, getCharset(conn), ); // 清除script/style标签减少干扰但保留其内容用于XSS检测 doc.select(script, style).remove(); return doc; } private String getCharset(HttpURLConnection conn) { String contentType conn.getContentType(); if (contentType ! null contentType.contains(charset)) { return contentType.split(charset)[1].split(;)[0].trim(); } return UTF-8; // 默认 }参数说明getCharset()从Content-Type头提取编码避免中文乱码导致关键词匹配失败如sqlmap扫到SELECT * FROM users却因编码错位匹配不到doc.select(script, style).remove()不是删掉所有JS——而是移除标签但保留下文因为XSS payload常藏在scripteval(atob(...))/script里后续需对doc.body().html()做正则扫描Jsoup.parse(is, ...)内部已处理gzip/deflate解压无需手动GZIPInputStream省去30行胶水代码。2.3 构建URL请求队列支持递归爬取与范围限制毕业设计不需要全站爬虫但必须支持“从首页出发提取a[href]链接限定深度≤2层去重后加入扫描队列”public class UrlCrawler { private final SetString visited ConcurrentHashMap.newKeySet(); private final QueueString queue new ConcurrentLinkedQueue(); private final int maxDepth 2; public void crawl(String startUrl, int currentDepth) { if (currentDepth maxDepth || visited.contains(startUrl)) return; visited.add(startUrl); try { HttpURLConnection conn httpClient.openConnection(startUrl); conn.connect(); if (conn.getResponseCode() 200) { Document doc httpClient.parseResponse(conn); Elements links doc.select(a[href]); for (Element link : links) { String href link.attr(href); String absUrl toAbsoluteUrl(startUrl, href); if (isSameDomain(startUrl, absUrl) !visited.contains(absUrl)) { queue.offer(absUrl); } } } } catch (IOException e) { // 记录日志不抛异常阻断爬取 System.err.println(Crawl failed: startUrl - e.getMessage()); } } private String toAbsoluteUrl(String baseUrl, String href) { return URI.create(baseUrl).resolve(href).toString(); } private boolean isSameDomain(String url1, String url2) { return URI.create(url1).getHost().equals(URI.create(url2).getHost()); } }关键设计点ConcurrentHashMap.newKeySet()保证多线程访问安全避免重复扫描同一URLtoAbsoluteUrl()用URI.resolve()而非字符串拼接正确处理/admin/../login.php、//cdn.example.com/js/app.js等相对路径isSameDomain()仅同域爬取防止扫描失控打到第三方网站——这是答辩时老师必问“你怎么保证不扫错站”的标准答案。3. 实现三大核心漏洞检测模块XSS、SQLi、目录遍历的Java落地逻辑毕业设计的“技术含量”体现在检测逻辑是否可解释、可调试、可复现。拒绝调用sqlmap --batch或XSStrike的黑盒封装——要用Java手写判断条件让老师能跟着代码逐行看懂“为什么这里算检测到XSS”。3.1 反射型XSS检测构造Payload并验证回显位置原理向URL参数注入scriptalert(1)/script检查响应HTML中是否原样回显且未被HTML实体编码。难点在于区分正常回显与WAF拦截/过滤public class XssDetector { private static final String[] PAYLOADS { scriptalert(1)/script, \scriptalert(1)/script, img srcx onerroralert(1) }; public boolean detectXss(String targetUrl) { for (String payload : PAYLOADS) { try { String testUrl injectPayload(targetUrl, payload); HttpURLConnection conn httpClient.openConnection(testUrl); conn.connect(); if (conn.getResponseCode() 200) { Document doc httpClient.parseResponse(conn); String bodyHtml doc.body().html(); // 关键检查payload是否完整出现在body中未被转义 if (bodyHtml.contains(payload.replace(, lt;).replace(, gt;))) { // 被HTML编码了不算XSS continue; } if (bodyHtml.contains(payload)) { // 原样回显且不在注释/JS字符串内简化版 return true; } } } catch (Exception e) { // 忽略单次请求异常 } } return false; } private String injectPayload(String url, String payload) { URI uri URI.create(url); String query uri.getQuery(); if (query null || query.isEmpty()) { return url ?xss URLEncoder.encode(payload, StandardCharsets.UTF_8); } return url xss URLEncoder.encode(payload, StandardCharsets.UTF_8); } }参数说明PAYLOADS数组按攻击强度排序script最易触发但WAF拦截率高img onerror更隐蔽bodyHtml.contains(payload)是核心判断——若返回scriptalert(1)/script被转义为lt;scriptgt;alert(1)lt;/scriptgt;则contains()返回falseURLEncoder.encode()确保payload中的,等字符被正确编码传输避免URL解析失败。3.2 基础SQL注入检测布尔盲注与错误信息识别双路验证毕业设计不需实现时间盲注太慢聚焦布尔盲注通过页面差异判断 错误信息回显直接看到MySQL报错public class SqlInjectionDetector { private static final String[] BOOLEAN_PAYLOADS { AND 11, // 应返回正常页面 AND 12 // 应返回空页面/错误页面 }; public DetectionResult detectSqlInjection(String targetUrl) { // Step 1: 检查错误信息回显 String errorUrl injectPayload(targetUrl, OR 11-- ); try { HttpURLConnection conn httpClient.openConnection(errorUrl); conn.connect(); if (conn.getResponseCode() 200) { String html httpClient.parseResponse(conn).body().html(); if (html.toLowerCase().contains(mysql) || html.toLowerCase().contains(syntax error) || html.toLowerCase().contains(ora-)) { return new DetectionResult(true, Error-based SQLi, html.substring(0, Math.min(200, html.length()))); } } } catch (Exception ignored) {} // Step 2: 布尔盲注对比 String normalHtml fetchHtml(targetUrl); for (String payload : BOOLEAN_PAYLOADS) { String testUrl injectPayload(targetUrl, payload); String testHtml fetchHtml(testUrl); if (normalHtml ! null testHtml ! null !normalHtml.equals(testHtml) testHtml.length() 100) { // 排除空白页 return new DetectionResult(true, Boolean-based SQLi, HTML length diff: normalHtml.length() vs testHtml.length()); } } return new DetectionResult(false, , ); } private String fetchHtml(String url) { try { HttpURLConnection conn httpClient.openConnection(url); conn.connect(); if (conn.getResponseCode() 200) { return httpClient.parseResponse(conn).body().html(); } } catch (Exception e) { // log error } return null; } }逻辑说明先走错误回显路径注入 OR 11--触发数据库报错直接捕获MySQL syntax error等关键词再走布尔盲注路径对比 AND 11应正常与 AND 12应异常的HTML长度/内容差异testHtml.length() 100过滤掉WAF返回的403页面通常很短避免误报。3.3 目录遍历检测路径穿越与文件读取验证检测../../etc/passwd类路径穿越重点在于构造合法URL但触发服务端文件读取public class PathTraversalDetector { private static final String[] PAYLOADS { /../../../../etc/passwd, /..%2f..%2f..%2f..%2fetc%2fpasswd, // URL编码绕过 /%2e%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd }; public boolean detectPathTraversal(String baseUrl) { // 确保baseUrl以/结尾便于拼接 String cleanUrl baseUrl.endsWith(/) ? baseUrl : baseUrl /; for (String payload : PAYLOADS) { try { String testUrl cleanUrl images/ payload; HttpURLConnection conn httpClient.openConnection(testUrl); conn.setRequestMethod(GET); conn.connect(); if (conn.getResponseCode() 200) { String response readResponse(conn); // 检查是否包含Linux用户特征非绝对但毕业设计够用 if (response.contains(root:x:) || response.contains(/bin/bash)) { return true; } } } catch (Exception e) { // 忽略IO异常 } } return false; } private String readResponse(HttpURLConnection conn) throws IOException { try (BufferedReader reader new BufferedReader( new InputStreamReader(conn.getInputStream(), StandardCharsets.UTF_8))) { return reader.lines().limit(100).collect(Collectors.joining(\n)); // 只读前100行防大文件 } } }关键细节cleanUrl补/避免http://target.com/admin拼成http://target.com/adminimages/..这种无效路径PAYLOADS包含原始路径、URL编码、双重编码三种变体覆盖常见WAF绕过场景readResponse()加limit(100)防止读取/dev/random等无限流导致程序卡死——这是答辩演示时最怕的翻车点。4. 避坑指南毕业答辩前必须解决的5个血泪问题写完核心检测逻辑不等于能跑通。我在三届毕设指导中见过太多同学卡在这些环节代码本地IDE跑通一打包成jar就报错扫靶机没问题扫自己写的Spring Boot demo就全漏报界面点开始按钮没反应……以下是真实踩过的坑按现象→原因→解决三步写清4.1 现象打包成JAR后Jsoup解析HTML报NullPointerException但IDE里正常原因Maven打包时未将Jsoup的META-INF/resources资源目录打进fat jar导致Jsoup内部依赖的htmlparser资源缺失。解决在pom.xml中添加shade插件配置强制包含所有资源plugin groupIdorg.apache.maven.plugins/groupId artifactIdmaven-shade-plugin/artifactId version3.4.1/version executions execution phasepackage/phase goalsgoalshade/goal/goals configuration transformers transformer implementationorg.apache.maven.plugins.shade.resource.ManifestResourceTransformer mainClasscom.example.vulnscanner.Main/mainClass /transformer transformer implementationorg.apache.maven.plugins.shade.resource.AppendingTransformer resourceMETA-INF/spring.handlers/resource /transformer /transformers !-- 关键保留Jsoup的resources -- filters filter artifact*:*/artifact excludes excludeMETA-INF/*.SF/exclude excludeMETA-INF/*.DSA/exclude excludeMETA-INF/*.RSA/exclude /excludes /filter /filters /configuration /execution /executions /plugin4.2 现象扫描DVWA时XSS检测总返回false但Burp Suite手工验证存在原因DVWA的XSS模块默认为“Low”安全级别但返回页面中script被包裹在pre标签内而Jsoup的doc.body().html()会剥离pre标签导致contains(payload)失效。解决改用doc.html()获取完整HTML再用正则定位pre区域String fullHtml doc.html(); Pattern pattern Pattern.compile(pre([\\s\\S]*?)/pre, Pattern.CASE_INSENSITIVE); Matcher matcher pattern.matcher(fullHtml); if (matcher.find()) { String preContent matcher.group(1); if (preContent.contains(payload)) return true; }4.3 现象多线程扫描时MySQL插入结果报Communications link failure原因HikariCP连接池默认最大连接数为10但扫描线程开到20大量线程争抢连接导致超时。解决在application.properties中显式配置连接池spring.datasource.hikari.maximum-pool-size30 spring.datasource.hikari.connection-timeout30000 spring.datasource.hikari.idle-timeout600000 spring.datasource.hikari.max-lifetime1800000并在扫描前预热连接池hikariDataSource.getConnection().close();4.4 现象Swing界面点击“开始扫描”按钮无响应控制台也没日志原因Swing事件处理在EDTEvent Dispatch Thread中执行而HTTP扫描是耗时操作阻塞EDT导致界面冻结。解决用SwingWorker异步执行扫描任务SwingWorkerVoid, String worker new SwingWorker() { Override protected Void doInBackground() throws Exception { scanner.startScan(targetUrl); return null; } Override protected void done() { JOptionPane.showMessageDialog(frame, 扫描完成); } }; worker.execute(); // 在EDT外启动4.5 现象扫描结果存入数据库后中文显示为??原因MySQL连接URL未指定字符集或表字段未设utf8mb4。解决两处必须同时改JDBC URL加参数jdbc:mysql://localhost:3306/vuln_db?useUnicodetruecharacterEncodingutf8mb4serverTimezoneGMT%2B8创建表时指定字符集CREATE TABLE scan_results ( id INT PRIMARY KEY AUTO_INCREMENT, target_url VARCHAR(255) NOT NULL, vulnerability_type VARCHAR(50) NOT NULL, payload TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COLLATEutf8mb4_unicode_ci;5. 数据库与报告生成用MyBatis-Plus自动生成建表SQL并导出HTML报告毕业设计的“交付感”来自可视化结果——不能只打印System.out.println(Found XSS!)。用MyBatis-Plus的AutoGenerator根据Java实体类生成建表SQL再用Thymeleaf模板生成带表格、高亮、时间戳的HTML报告让答辩老师一眼看懂你干了什么。5.1 用MyBatis-Plus根据实体类生成建表SQL告别手写DDL定义ScanResult实体类标注TableName和字段注解TableName(scan_results) public class ScanResult { TableId(type IdType.AUTO) private Long id; TableField(target_url) private String targetUrl; TableField(vulnerability_type) private String vulnerabilityType; TableField(payload) private String payload; TableField(severity) private String severity; // High, Medium, Low TableField(created_at) private LocalDateTime createdAt; // getters setters }用MyBatis-Plus代码生成器生成建表SQL非运行时仅开发期用public class CodeGenerator { public static void main(String[] args) { AutoGenerator mpg new AutoGenerator(); GlobalConfig gc new GlobalConfig(); gc.setOutputDir(System.getProperty(user.dir) /src/main/resources/sql); gc.setAuthor(student); gc.setOpen(false); mpg.setGlobalConfig(gc); DataSourceConfig dsc new DataSourceConfig(); dsc.setUrl(jdbc:mysql://localhost:3306/vuln_db?useUnicodetruecharacterEncodingutf8mb4); dsc.setDriverName(com.mysql.cj.jdbc.Driver); dsc.setUsername(root); dsc.setPassword(123456); mpg.setDataSource(dsc); PackageConfig pc new PackageConfig(); pc.setModuleName(entity); pc.setParent(com.example.vulnscanner); mpg.setPackageInfo(pc); StrategyConfig strategy new StrategyConfig(); strategy.setInclude(scan_results); // 仅生成此表 strategy.setNaming(NamingStrategy.underline_to_camel); strategy.setColumnNaming(NamingStrategy.underline_to_camel); mpg.setStrategy(strategy); mpg.execute(); // 执行后在 /src/main/resources/sql/ 下生成 create_scan_results.sql } }生成的SQL示例自动含utf8mb4CREATE TABLE scan_results ( id bigint NOT NULL AUTO_INCREMENT, target_url varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, vulnerability_type varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, payload text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, severity varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, created_at datetime DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COLLATEutf8mb4_unicode_ci;5.2 生成可交付HTML报告用Thymeleaf模板渲染扫描结果创建report.html模板放在src/main/resources/templates/!DOCTYPE html html xmlns:thhttp://www.thymeleaf.org head meta charsetUTF-8 title漏洞扫描报告/title style table { border-collapse: collapse; width: 100%; } th, td { border: 1px solid #ddd; padding: 8px; text-align: left; } th { background-color: #f2f2f2; } .high { background-color: #ffebee; } .medium { background-color: #fff3cd; } .low { background-color: #d4edda; } /style /head body h1漏洞扫描报告/h1 p扫描时间span th:text${reportTime}/span/p table tr th目标URL/th th漏洞类型/th th风险等级/th thPayload/th /tr tr th:eachresult : ${results} td th:text${result.targetUrl}/td td th:text${result.vulnerabilityType}/td td th:class${result.severity High ? high : result.severity Medium ? medium : low} th:text${result.severity}/td tdcode th:text${result.payload}/code/td /tr /table /body /htmlJava端生成报告Service public class ReportService { Autowired private TemplateEngine templateEngine; public void generateHtmlReport(ListScanResult results) { Context context new Context(); context.setVariable(results, results); context.setVariable(reportTime, LocalDateTime.now().format(DateTimeFormatter.ofPattern(yyyy-MM-dd HH:mm:ss))); String content templateEngine.process(report, context); try (FileWriter writer new FileWriter(scan_report_ System.currentTimeMillis() .html)) { writer.write(content); System.out.println(HTML报告已生成 writer.toString()); } catch (IOException e) { e.printStackTrace(); } } }效果生成的HTML打开即见带颜色标识的表格高危漏洞红底中危黄底低危绿底——答辩时直接双击打开比控制台日志强十倍。6. 毕业答辩现场演示技巧3分钟让老师记住你的系统价值答辩不是代码朗诵会。我带过的37个毕设项目里老师平均只听前3分钟——之后全靠你引导他们看哪里。这套演示流程经过12次答辩打磨确保老师能快速抓住亮点6.1 演示前必做的3件事提前部署靶机环境在答辩电脑上装好docker run -d -p 8080:80 -p 3306:3306 vulnerables/web-dvwa确保http://localhost:8080能打开账号admin/password可用。别指望现场连WiFi下载镜像。准备两个对比URLhttp://localhost:8080/vulnerabilities/xss_r/反射型XSS Low→ 必扫出http://localhost:8080/login.php登录页→ 应无漏洞证明系统有判别力截图存档关键界面主界面、扫描中进度条、结果列表页、HTML报告页——万一演示时网络波动立刻切PPT展示。6.2 演示脚本严格控制在3分钟内时间动作话术要点0:00-0:30打开IDE展示VulnScannerApplication.java主类“老师好我的系统核心是三个自研检测器XSS用HTML回显比对SQLi用布尔盲注错误回显双验证目录遍历用路径穿越载荷。全部用Java原生API实现没调外部工具。”0:30-1:20启动程序输入http://localhost:8080/vulnerabilities/xss_r/点“开始扫描”“看这里——进度条实时更新并发数设为5超时10秒。您可以看到它先爬取页面链接再对每个URL注入XSS payload。现在…检测到XSSPayload是scriptalert(1)/script回显位置在输入框下方。”1:20-2:10切到MySQL客户端查scan_results表再双击生成的HTML报告“结果存进MySQL字段含风险等级。这是自动生成的HTML报告——高危漏洞红底突出老师可直接打印。所有代码都在com.example.vulnscanner.detector包下逻辑清晰可追溯。”2:10-3:00展示pom.xml中Jsoup/HikariCP/MyBatis-Plus依赖版本“技术选型上用Jsoup而非正则解析HTML因它自动处理编码和Gzip用HikariCP管理数据库连接避免多线程下连接泄漏用MyBatis-Plus生成建表SQL保证实体类与DB一致——这些都是Java工程师该掌握的工程能力。”6.3 老师必问的3个问题及应答策略Q为什么不用现成的Arachni或NucleiA“毕业设计要求‘基于Java实现’重点考察Java网络编程、多线程、HTML解析能力。Arachni是Ruby写的Nuclei是Go调用它们只是集成不是实现。我的系统每一行HTTP请求、每一个Payload构造、每一次响应分析都是Java代码亲手写的。”Q怎么保证不误报A“我做了三层过滤第一层XSS检测只认原样回显被HTML编码的不算第二层SQLi检测必须布尔盲注与错误回显至少一路确认第三层所有结果入库前人工复核逻辑——比如XSS payload必须出现在body内不在script字符串里。”Q能扫HTTPS网站吗A“可以。HttpURLConnection默认支持HTTPS只需在URL里写https://。不过毕业设计聚焦HTTP靶机因HTTPS需处理证书信任如HttpsURLConnection.setHostnameVerifier为控制复杂度暂未实现——这恰是未来可扩展点。”最后收尾那句我说了三年从没被挑过刺“这个系统可能不如商业产品强大但它让我真正理解了——漏洞扫描不是魔法是HTTP协议、HTML结构、数据库交互、多线程调度这些Java基本功的精密组装。希望帮到你。”本文还有配套的精品资源点击获取

相关新闻

学生选课系统JavaWeb源码拆解:Servlet+JSP+MySQL+Tomcat

学生选课系统JavaWeb源码拆解:Servlet+JSP+MySQL+Tomcat

简介:这是一套基于ServletJSP的学生选课管理系统完整源码包,面向计算机相关专业正在准备毕业设计的学生以及需要JavaWeb项目实战练习的初学者。项目采用经典三层架构,整合MySQL数据库,实现了系统管理员、教师、学生三类角色的核心…

2026/10/9 13:23:11 阅读更多 →
Jev实测:用自然语言驱动浏览器Agent,3分钟跑通网页自动化

Jev实测:用自然语言驱动浏览器Agent,3分钟跑通网页自动化

我最近刷 GitHub 热榜时,被一个叫 Jev 的浏览器 Agent 项目刷屏了。发布一个月不到直接冲到 21k star,评论区几乎全是“终于不用天天手动填表单了”“这玩意儿把重复网页操作全包了”。说实话,浏览器自动化工具我这些年折腾过不少&#xff0c…

2026/10/8 10:43:11 阅读更多 →
AI应用架构设计:大模型落地成败的系统工程

AI应用架构设计:大模型落地成败的系统工程

1. 为什么我觉得AI应用架构设计比模型本身更重要先直接说结论:过去一年我见过太多团队把精力全砸在选模型、调Prompt上,结果系统上线后撑不住真实场景的并发、上下文、工具调用和异常恢复,推翻重来。问题不在模型不够强,而在架构层…

2026/10/8 10:43:08 阅读更多 →

最新新闻

PLSQL Developer实战指南:安装配置、存储过程调试与常见坑位解析

PLSQL Developer实战指南:安装配置、存储过程调试与常见坑位解析

简介:PLSQL Developer 是一款专为 Oracle 数据库打造的集成开发环境,这份下载包以 RAR 格式封装,大小约 19.05 MB,已有 191 人学习下载。它面向数据库管理员、开发人员及运维工程师,也适合刚接触 Oracle 的初学者。工具…

2026/10/9 13:23:10 阅读更多 →
Dynamo节点包安装与加载全攻略:从rar解压到节点排错

Dynamo节点包安装与加载全攻略:从rar解压到节点排错

简介:面向建筑、工程与设计领域用户的Dynamo自定义节点包,旨在扩展Revit等平台下的参数化设计能力,帮助已掌握Dynamo基础的设计师和工程师快速实现几何建模、数据处理、自动化流程等复杂需求。压缩包为128.28MB,以RAR格式封装&…

2026/10/9 13:23:10 阅读更多 →
Elecard Stream Eye视频码流分析实战:从GOP结构到PTS异常定位

Elecard Stream Eye视频码流分析实战:从GOP结构到PTS异常定位

简介:Elecard Stream Eye是一款面向视频编码工程师、流媒体开发者和质量测试人员的专业码流分析工具,专注于HEVC/H.265与AVC/H.264视频码流的参数解析、质量评估和错误诊断,能有效辅助编码参数调整与传输问题排查。压缩包共62个文件&#xff…

2026/10/9 13:23:10 阅读更多 →
Delphi+Oracle连接方案:ODAC直连模式与生产环境避坑指南

Delphi+Oracle连接方案:ODAC直连模式与生产环境避坑指南

简介:适用于Delphi和CBuilder开发者的ODAC组件包(Oracle Data Access Components),用于在VCL/FMX应用中快速连接并操作Oracle数据库。核心包含TOracleConnection管理物理连接,TOracleQuery与TOracleTable执行查询和数据…

2026/10/9 13:23:10 阅读更多 →
预印本生态全解析:从arXiv到bioRxiv,七大平台选型指南

预印本生态全解析:从arXiv到bioRxiv,七大平台选型指南

1. 为什么说“别只盯着arXiv”:预印本生态正在加速洗牌每天打开浏览器先刷一遍arXiv,已经是很多物理、数学、计算机方向研究者的固定晨间仪式。arXiv在这个圈子里就是“首发”的代名词,重大进展几乎都是先在这上面冒出苗头,随后才…

2026/10/9 13:23:10 阅读更多 →
农业知识图谱实战:从百度百科爬取到Neo4j可视化全流程

农业知识图谱实战:从百度百科爬取到Neo4j可视化全流程

简介:这份资源面向计算机、数学、电子信息等专业的学生与知识图谱初学者,提供一套基于Neo4j的农业领域知识图谱构建完整源码,可用于课程设计、期末大作业或毕设项目参考。项目覆盖从百度百科爬取农业数据、数据分类,到结构化数据生…

2026/10/9 13:22:09 阅读更多 →

日新闻

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API这个话题,隔三差五就会在群里被翻出来讨论一次。上周还有个同事线上处理一个订单超时问题,排查到最后发现是ZonedDateTime序列化后时区丢了,用户在下单当天晚上看到的时间整整差了8个小时。这类问题几乎每个做Java开发的人都遇到过…

2026/10/9 0:00:49 阅读更多 →
EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

前几个月我手头有好几台机器需要互相访问:办公室台式机、家里 NAS、还有一台云主机。如果只是偶尔传个文件倒还好,问题是工作场景经常要在几处环境之间来回切换,每次都先登录跳板机再层层代理,实在折腾。我先后试过端口映射、自建…

2026/10/9 0:00:49 阅读更多 →
AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent 这个词在过去一年里被反复提及,但真正动手搭过一套能跑起来的 Agent 系统的人都知道,从"知道它是什么"到"让它稳定干活"之间隔着一整套工程决策。我前后参与过几个 Agent 项目的落地,从最初用现成框架拼装&…

2026/10/9 0:01:50 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

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

2026/10/8 15:26:32 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

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

2026/10/8 15:26:40 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

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

2026/10/9 10:11:06 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

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

2026/10/8 21:13:17 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

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

2026/10/8 15:26:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

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

2026/10/9 6:17:20 阅读更多 →