JSP+MySQL个人日记本源码全解析:从环境搭建到避坑指南
简介面向Java Web入门学习者与课程设计人群这份源码以JSPMySQL实现个人日记本系统涵盖用户登录验证、日记增删改查、分类管理与个人中心等完整功能链路。项目采用MVC分层思路JSP负责视图呈现Servlet控制请求流转JDBC完成数据交互并借助session维持登录状态是理解Web请求处理与表单提交的直观案例。包体共90个文件、约256KB以html页面、java源码、jsp动态页面为主另含md说明文档与png/gif等界面素材目录结构贴近真实工程便于对照学习。当前已有223人学习浏览配合README文档梳理环境搭建与关键代码位置适合毕业设计或Servlet/JSP期末作业参考可帮读者快速掌握从页面表单到数据库落盘的端到端写法。1. 这份JSP个人日记本源码到底能让你学会什么如果你的搜索记录里有“jspmysql源码”这个组合多半是课程设计、期末项目或自学练手找素材。这份“基于jspmysql的JSP个人日记本源码.zip”本质上是一个标准的Java Web入门级项目用JSP做页面展示、Servlet做请求处理、MySQL做数据存储把日记本的注册、登录、写日记、修改、删除、查看列表这一套CRUD跑通。它的价值不在代码多高级而在于——你拿到这份源码后能一次性看到“浏览器请求→Tomcat→Servlet→JDBC→MySQL→页面渲染”的完整链路。对于刚学完Java SE、正卡在SSM或Spring Boot门槛前的人来说把这份小项目吃透比直接啃框架源码更有性价比。它的坑也典型环境变量、驱动版本、时区、中文乱码、Tomcat部署路径每一个都是后续开发要反复遇到的。下面按我平时接手这类源码项目的顺序从环境搭建讲到代码改造最后给出一组能直接用的避坑清单。2. 跑通前的准备工作JDK、Tomcat、MySQL的版本搭配与安装2.1 三个环境的版本怎么选才不互相打架这类JSPMySQL的老项目最怕的就是“源码是2016年的电脑是2025年的”。先给结论JDK用1.8Tomcat用8.5或9.0MySQL用5.7或8.0。JDK 11以上虽然能编译大部分JSP项目但很多源码里用了过时的内部API比如javax.servlet包的位置变化会在编译期报“程序包不存在”到时候定位问题很烧时间。Tomcat 10及以上把javax.servlet换成了jakarta.servlet老源码直接部署会报ClassNotFoundException这一点务必留意。MySQL方面5.7和8.0对这类项目都能跑。区别主要在连接驱动的写法MySQL 5.7用的是com.mysql.jdbc.DriverMySQL 8.0需要改成com.mysql.cj.jdbc.Driver而且必须在连接URL里加上serverTimezoneAsia/Shanghai否则服务端返回的时间会比你本地晚8小时或直接报CST错误。如果你的源码包里的db.properties或DBUtil.java写着老驱动名而你本地装的是8.0改一行就能解决。我一般会建议新手直接装MySQL 8.0因为现在官网能下到的安装包基本都是8.x5.7的安装包反而不太好找了。但如果你照着网上的mysql安装教程操作时发现字符集总是设置不成功那多半是没把my.ini里的character-set-serverutf8mb4配好这点后面会细说。2.2 环境变量配置与Tomcat部署的最小操作JDK装完后需要配JAVA_HOME和PATH。新手最容易犯的错是只配PATH不配JAVA_HOME导致Tomcat启动脚本找不到JDK。正确做法是新建系统变量JAVA_HOME值填JDK安装根目录比如C:\Program Files\Java\jdk1.8.0_202。在PATH里追加%JAVA_HOME%\bin和%JAVA_HOME%\jre\bin。命令行敲java -version验证如果显示的版本跟你装的一致说明成功。Tomcat不需要安装解压即用。但要注意解压路径不要带中文和空格很多人喜欢放在D:\学习资料\代码\apache-tomcat-8.5.xx启动时脚本会卡在路径解析上。放到D:\tomcat这类纯英文路径最省心。启动Tomcat前先在conf/server.xml里确认端口。默认是8080如果被其他程序占了把Connector port8080改成8081或者其它未被占用的端口。然后双击bin\startup.bat浏览器访问http://localhost:8080看到猫的页面说明环境通了。如果你用的是Eclipse或IDEA不需要手动部署到Tomcat的webapps目录。在IDEA里配置好本地Tomcat后直接把项目以war exploded格式跑起来即可。但如果源码包里没有.idea或.classpath这些工程配置文件你需要在IDEA里新建一个Web项目再把源码的src目录和web目录拷进去。这一步对新手来说最容易迷茫我建议直接用Tomcat的webapps目录部署copy 项目文件夹 %TOMCAT_HOME%\webapps\diary cd %TOMCAT_HOME%\bin startup.bat把整个项目文件夹复制到Tomcat的webapps下Tomcat启动时会自动部署。访问http://localhost:8080/diary/就能看到项目首页。这种“直接拷webapps”的部署方式是老项目最省事的跑法不用配IDE不用管Artifact缺点是没有编译步骤所以你必须确认WEB-INF\classes目录下已经有编译好的.class文件——如果源码包只给了.java没给.class就得先用javac手动编译或者老老实实用IDE跑。2.3 源码目录结构的三个必看位置拿到ZIP解压后先别急着启动花两分钟认一下目录。以我见过的同类项目为例常见的结构是这样的diary/ ├── WEB-INF/ │ ├── web.xml │ ├── classes/ │ │ └── com/ │ │ └── diary/ │ │ ├── dao/ # 数据库访问 │ │ ├── model/ # 实体类 │ │ ├── servlet/ # 控制器 │ │ └── util/ # DB连接和工具 │ └── lib/ # mysql-connector jar ├── css/ ├── js/ ├── index.jsp ├── login.jsp └── ...重点看三个地方第一WEB-INF/lib下有没有MySQL的JDBC驱动jar包没有它启动后点任何功能都会报ClassNotFoundException: com.mysql.jdbc.Driver第二web.xml里配置的servlet映射路径比如/login、/register、/addDiary这些路径要和JSP表单里的action一致第三WEB-INF/classes下的.class文件时间戳如果源码包只有.java文件说明需要重新编译。很多人在这一步卡住是因为把WEB-INF当普通目录去访问直接在浏览器输入http://localhost:8080/diary/WEB-INF/web.xml会返回404。这是Tomcat的安全限制WEB-INF下的文件不允许直接通过URL访问只有Servlet内部forward或include能访问。看到这里你就明白为什么业务代码都要放在WEB-INF外面引用。3. 数据库设计与JDBC连接先把数据底座立起来3.1 建库建表三张表的字段设计与字符集选择个人日记本这类项目表结构通常不复杂但字符集和排序规则如果选错后面全是乱码。我建议建库时用下面的DDLCREATE DATABASE IF NOT EXISTS diary_db DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; USE diary_db; CREATE TABLE t_user ( id INT PRIMARY KEY AUTO_INCREMENT, username VARCHAR(50) NOT NULL UNIQUE, password VARCHAR(100) NOT NULL, nickname VARCHAR(50), create_time DATETIME DEFAULT CURRENT_TIMESTAMP ) ENGINEInnoDB DEFAULT CHARSETutf8mb4; CREATE TABLE t_diary ( id INT PRIMARY KEY AUTO_INCREMENT, user_id INT NOT NULL, title VARCHAR(100) NOT NULL, content TEXT, mood VARCHAR(20), weather VARCHAR(20), create_time DATETIME DEFAULT CURRENT_TIMESTAMP, update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, CONSTRAINT fk_diary_user FOREIGN KEY (user_id) REFERENCES t_user(id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4;解释一下几个关键点utf8mb4比utf8多支持4字节的Emoji字符如果你在日记内容里存了表情符号用utf8会报Incorrect string value错误。COLLATE utf8mb4_general_ci是大小写不敏感的排序规则对用户名和日记标题做模糊查询时更宽容。两张表都用InnoDB是为了让外键约束和将来可能加的事务生效。create_time用DEFAULT CURRENT_TIMESTAMP这样插入记录时不手动传时间也能自动填当前时间。你在源码的DiaryDao.addDiary()方法里看到的插入语句就会少一个参数。但我接手的不少源码里表的字段名跟实体类属性名不一致比如数据库字段叫user_idJava属性叫userId如果源码里用了BeanUtils拷贝属性就会赋值不上。排查方法是看日志有没有NoSuchPropertyException或者在Servlet里request.getParameter后打印一遍值。不要忽略那个update_time ON UPDATE CURRENT_TIMESTAMP字段。日记编辑功能做完后列表页往往要按“最近修改时间”排序有这个字段就不用每次UPDATE时手动SET update_timeNOW()。3.2 JDBC连接工具类参数、驱动、时区的标准写法源码里一定有一个DBUtil.java或JdbcUtils.java核心代码长这样public class DBUtil { private static final String DRIVER com.mysql.cj.jdbc.Driver; private static final String URL jdbc:mysql://localhost:3306/diary_db?useSSLfalseserverTimezoneAsia/ShanghaicharacterEncodingutf-8allowPublicKeyRetrievaltrue; private static final String USER root; private static final String PASSWORD 123456; static { try { Class.forName(DRIVER); } catch (ClassNotFoundException e) { e.printStackTrace(); } } public static Connection getConnection() throws SQLException { return DriverManager.getConnection(URL, USER, PASSWORD); } }逐个参数说useSSLfalse是绕过MySQL 8.0的SSL握手警告。如果你没加这个参数控制台会刷一堆Establishing SSL connection without servers identity verification is not recommended的警告但一般不影响运行。真正影响运行的是serverTimezoneAsia/ShanghaiMySQL 8.0要求必须显式指定时区否则报The server time zone value Öйú±ê׼ʱ¼ä is unrecognized。最坑的是allowPublicKeyRetrievaltrue。如果你连接MySQL 8.0用的是caching_sha2_password认证插件不打开这个参数会报Public Key Retrieval is not allowed。这行参数一般在老教程里看不到因为5.7默认用的mysql_native_password没有这个要求。PASSWORD硬编码在代码里是这类课程的惯例但你自己做项目时别学。正确的姿势是把数据库连接信息抽到db.properties里用ResourceBundle读取或者至少在连接时用环境变量覆盖。原因很简单课程设计的源码会被交到老师手上如果里面有真实密码等于公开了你的数据库凭据。我一般会建议把密码改成弱口令比如只用于本机开发并加上注释提醒。连接池方面这个小项目用单连接的DriverManager.getConnection没问题因为访问量低。但你得知道它的瓶颈每次请求都创建一次数据库连接而TCP建连和MySQL认证的开销远大于SQL执行本身。如果你之后把这个项目改造成多用户并发访问至少换成DBCP或C3P0连接池或者更现代的HikariCP。改造点不大就是getConnection()内部从连接池拿连接其余代码不用动。3.3 数据库账号授权与建表执行连接数据库之前确认你的MySQL服务在运行。Windows下可以在服务管理器中找到MySQL80这样的服务或者在命令行执行net start mysql。如果服务起不来查看C:\ProgramData\MySQL\MySQL Server 8.0\Data下的.err文件里面会明确写端口冲突还是数据目录权限问题。用命令行建库建表时我习惯把SQL写进一个init.sql文件然后执行mysql -u root -p diary_db init.sql注意diary_db必须先存在上一节说过先CREATE DATABASE。如果你不想进命令行也可以用Navicat或MySQL Workbench导入。表建好后用下面这段SQL验证数据是否正常写入SELECT * FROM t_diary ORDER BY update_time DESC LIMIT 5;如果查询正常说明字符集和权限都没问题。如果哥哥字段是乱码回my.ini把character_set_server改成utf8mb4然后重启MySQL服务。很多mysql安装教程漏了这一步导致数据库层面已经是乱码Java代码再怎么写编码过滤器都没用。4. 从登录到写日记核心功能的最小实现与关键代码4.1 登录与注册密码验证只会用equals可不行登录功能的流程是login.jsp表单提交→LoginServlet接收参数→调用UserDao.findByUsernameAndPassword→成功则跳index.jsp失败则回登录页并提示错误。源码里最常见的写法是这样的User user userDao.findByUsername(username); if (user ! null user.getPassword().equals(password)) { // 密码错误分支缺失 session.setAttribute(loginUser, user); response.sendRedirect(index.jsp); } else { response.sendRedirect(login.jsp?error1); }这段代码最大的问题是如果findByUsername查不到用户user为null把user.getPassword()放前面会空指针。正确做法是用常量或Objects.equals或者改成“先判断用户名是否存在再比对密码”。另外密码用明文存数据库是这类课设源码的通病等你学完过滤器一定能意识到要能用MD5或SHA-256加密再入库。别觉得小项目无所谓日记本是私密性很强的数据用户密码和日记内容都值得认真对待。还有一处隐藏问题登录成功用sendRedirect重定向是对的但很多源码在重定向index.jsp之前就调用了request.getSession()把用户信息放了进去。重定向是两次请求第一次请求的HttpServletRequest在第二次请求里已经失效如果你把用户信息放在request里而不是session里跳过去一看又变成未登录状态。在JSP页面里你可以这样检查会话% User loginUser (User) session.getAttribute(loginUser); if (loginUser null) { response.sendRedirect(login.jsp); return; } %这段判断放在index.jsp的顶部作为简单的登录拦截。真正的过滤应该用Filter但在这个项目里先保证功能可用再用Filter统一管理也不迟。4.2 日记的增删改查PreparedStatement预防SQL注入日记添加页的表单重点看日期和文本内容。源码里就算没有使用JSTL也会在JSP中用% %输出。这里有个安全点必须提所有SQL操作用PreparedStatement不要用Statement拼字符串。看一个正确写法public boolean addDiary(Diary diary) { String sql INSERT INTO t_diary (user_id, title, content, mood, weather) VALUES (?, ?, ?, ?, ?); try (Connection conn DBUtil.getConnection(); PreparedStatement ps conn.prepareStatement(sql)) { ps.setInt(1, diary.getUserId()); ps.setString(2, diary.getTitle()); ps.setString(3, diary.getContent()); ps.setString(4, diary.getMood()); ps.setString(5, diary.getWeather()); int rows ps.executeUpdate(); return rows 0; } catch (SQLException e) { e.printStackTrace(); return false; } }PreparedStatement有两点好处参数占位符?能避免拼接SQL导致注入风险比如用户在标题里输入; DROP TABLE t_diary;--如果用Statement整条SQL就变成了两条同时预编译机制能提高重复执行的效率。虽然这个课设项目里没人会恶意攻击你但面试官会问你得能答出来。删除和更新类似只不过更新时要防止把create_time也改了。如果表里没有update_time字段你就得在UPDATE语句里显式设置UPDATE t_diary SET title?, content?, mood?, weather?, create_timeNOW() WHERE id? AND user_id?注意AND user_id?这个条件。很多源码只按id删除这意味着任何登录用户只要知道笔记ID就能删掉别人的日记。加上user_id做二次校验是这条SQL的价值所在。同理查询单个日记详情时也要同时带上user_id。4.3 列表分页与日期展示两个容易被忽略的小细节日记列表页通常是这样的SQLpublic ListDiary findMyDiary(int userId, int page, int pageSize) { String sql SELECT * FROM t_diary WHERE user_id? ORDER BY update_time DESC LIMIT ?, ?; try (Connection conn DBUtil.getConnection(); PreparedStatement ps conn.prepareStatement(sql)) { ps.setInt(1, userId); ps.setInt(2, (page - 1) * pageSize); ps.setInt(3, pageSize); ... } }LIMIT的两个参数第一个是偏移量从第几行开始第二个是数量。LIMIT 0, 5表示取前5条。翻页时页码从1开始偏移量是(page-1)*pageSize这里很容易把page直接当偏移量导致第一页正常第二页查出空数据。遇到“下一页没数据”的问题先看SQL里的偏移量对不对。日期展示问题主要出现在JSP页面上。MySQL的DATETIME字段返回的是java.sql.Timestamp你直接% %输出会显示成2025-06-01 14:23:45.0末尾多了个“.0”。处理方式有两种在Java里用SimpleDateFormat格式化或者在JSP页面用JSTL的fmt:formatDate标签前提是引入jstl.jar和standard.jar。很多老源码没有这两个jar所以直接用前一种String formattedTime new SimpleDateFormat(yyyy-MM-dd HH:mm:ss).format(diary.getUpdateTime());把这个formattedTime放进Diary对象或者直接set成属性页面输出就不带多余的毫秒了。4.4 Session与页面跳转刷新后重复提交的坑日记提交后一般会response.sendRedirect(diaryList?userId userId)跳回列表页。这是标准的Post/Redirect/Get模式如果直接forward到列表页刷新浏览器会再次提交刚才的表单导致一条日记写了两遍。老源码里最常见的“点击一次添加了两条日记”就是没做重定向。如果你发现源码里是request.getRequestDispatcher(list.jsp).forward(request, response)建议改成sendRedirect。改之前注意核对list.jsp是否能从request域拿到列表数据——因为重定向后request里的旧数据不会保留你得在重定向之前把userId拼在URL参数中列表页加载时再从数据库查。这也是为什么我前面强调列表查询方法必须接收userId参数的原因。5. 避坑自查JSPMySQL项目跑不通的五个高频原因5.1 现象Tomcat能打开首页点登录就报500控制台最明显的错误是ClassNotFoundException: com.mysql.jdbc.Driver或SQLException: No suitable driver found。原因MySQL驱动jar不在WEB-INF/lib下或者驱动类名和MySQL版本不匹配。MySQL 8.0的驱动类名变成了com.mysql.cj.jdbc.Driver老项目里写的com.mysql.jdbc.Driver虽然也能用jar内有兼容但部分老旧jar版本不支持8.0协议。解决把驱动jar放到WEB-INF/lib确认驱动类名在DBUtil里打印一行Class.forName(DRIVER)后的日志验证加载成功。注意不要同时放两个不同版本的mysql-connector-java.jarTomcat的类加载顺序会乱掉导致莫名其妙的方法签名报错。5.2 现象能登录但页面所有中文都是乱码乱码分两种页面显示乱码和存入数据库乱码。如果数据库里的数据是中文但页面显示??说明数据库连接URL没写characterEncodingutf-8MySQL连接默认用utf8mb4之外的字符集传参。如果数据库里直接存了乱码说明是建库时字符集没设对或MySQL服务端默认字符集不是utf8mb4。排查命令SHOW VARIABLES LIKE character_set%;看到character_set_server不是utf8mb4时改my.ini后重启。JSP页面本身也要保证UTF-8编码检查每个.jsp文件是否以UTF-8保存且在页面顶部写全% page languagejava contentTypetext/html; charsetUTF-8 pageEncodingUTF-8 %如果上面这些都做了还乱码看看Tomcat的server.xml里Connector是否加了URIEncodingUTF-8。处理GET请求的中文参数时Tomcat 8以上默认就是UTF-8但如果你用Tomcat 7需手动配置。5.3 现象MySQL 8.0连接报Public Key Retrieval is not allowed这个错非常典型用户密码正确、服务正常就是连不上。原因是MySQL 8.0默认用户插件是caching_sha2_password客户端首次连接需要去服务端拿公钥而JDBC驱动默认不自动获取。解决在URL末尾加allowPublicKeyRetrievaltrueuseSSLfalse。如果你不想改代码也可以登录MySQL后把用户插件改回mysql_native_passwordALTER USER rootlocalhost IDENTIFIED WITH mysql_native_password BY 你的密码; FLUSH PRIVILEGES;两种方式都能解决但我更推荐前者因为改插件会影响数据库的安全策略只为一个课设把密码插件降级不划算。5.4 现象点击“写日记”跳转到了404先看浏览器地址栏URL。如果jsp页面里的form的action是%request.getContextPath()%/addDiary而web.xml里把Servlet映射到了/diary/addDiary就会404。这类问题属于“路径对不上”。解决以web.xml为准统一表单action值。JSP里尽量用${pageContext.request.contextPath}/xxx方式拼接不要写死绝对路径。如果你项目其实已经部署在webapps/diary下表单的action写成/diary/addDiary没问题但若以后改了部署目录路径就失效。这是老项目的一个通病也是新手手上最容易混淆的概念。5.5 现象MySQL启动失败报Bind on TCP/IP port: 3306端口被其他MySQL实例或程序占用。尤其很多人电脑里装了不同版本的MySQL之前一个实例占着3306新装的又试图监听3306。解决到my.ini里把port改成3307连接时URL里也要对应改成jdbc:mysql://localhost:3307/...。或者把旧服务停掉。Windows下用netstat -ano | findstr 3306查看占用PID和对应进程确认不是系统关键进程后再结束。如果确认是旧MySQL用服务管理器把旧服务停止并设为手动。注意排查问题不要先改代码。凡是数据库相关的错先确认MySQL服务状态、连接参数、驱动jar这三个变量用排除法一步步缩小范围。改代码前先看控制台完整的异常堆栈而不是只看最上面一行。6. 毕业设计验收前如何用三招把这个项目再拔高一点如果你的目标是课程设计或毕业设计验收只把CRUD跑通是不够的答辩老师会用“并发”“安全”“维护性”三个维度来追问。我给你三个能快速落地、又能讲清楚原理的改造方向工作量都不大。第一招给密码加上盐值哈希。不要只用MD5至少做成MD5(用户名 密码)或SHA-256。在UserDao的register方法里替换明文存储login时同样做哈希后比对。讲的时候可以提一句“防止数据库泄露时明文口令被直接使用”这句话比写一整天分页代码更让老师买账。第二招给编辑和删除操作加上“请求来源校验”。做法很简单在update.jsp和delete.jsp里用session中的userId做条件拼接SQL这个我们前面已经做到。你再补一个小细节——列表页只显示当前登录用户的日记查询SQL里带上user_id即可别用WHERE 11从全表筛。这样从“功能正确”变成“逻辑严谨”是评分分水岭。第三招把硬编码的数据库连接参数挪到db.properties文件里然后在DBUtil中加载。这改动不到十行但体现的是“配置文件与代码分离”的工程意识。答辩时你可以说将来换环境不用改源码只要修改properties文件里的数据库地址、用户名和密码。再顺手把DBUtil的getConnection方法改成从连接池拿连接讲的时候能说出连接池比单连接的优势就已经超出多数同学的水平了。我自己的习惯是拿到这类源码包第一件事不是解压运行而是先全局搜索String password和jdbc:mysql把所有硬编码的敏感信息标出来。然后跑一个最小功能路径注册→登录→写日记→改日记→删日记。这条路走通了再去看那些花哨的功能。等你把这些东西都折腾一遍你会发现JSPMySQL这个组合虽然老但它把Web开发最本质的东西——HTTP流程、会话状态、SQL边界——都教透了你。希望这篇笔记对你有帮助祝你跑通顺利。本文还有配套的精品资源点击获取

相关新闻

SVM降水量预测实战:SVR/SVC参数调优与避坑指南

SVM降水量预测实战:SVR/SVC参数调优与避坑指南

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

2026/10/12 5:08:27 阅读更多 →
基于Spark的地铁客流分析系统:OD还原、断面推算与异常检测

基于Spark的地铁客流分析系统:OD还原、断面推算与异常检测

/* 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 14:25:06 阅读更多 →
RAG知识库问答系统实践指南:从检索到生成的完整落地路径

RAG知识库问答系统实践指南:从检索到生成的完整落地路径

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

2026/10/10 15:53:01 阅读更多 →

最新新闻

mediamtx v1.21.2发布:UDP、JWT、RTSP、RTMP、HLS、WebRTC全面修复,稳定性与安全性再提升

mediamtx v1.21.2发布:UDP、JWT、RTSP、RTMP、HLS、WebRTC全面修复,稳定性与安全性再提升

2026年10月10日,mediamtx 发布 v1.21.2 最新版本。本次更新以“修复与改进”为主,覆盖通用逻辑、API、Media-Over-QUIC、RTSP、RTMP、HLS、WebRTC 以及依赖库升级等多个方向。 v1.21.2 没有引入新的功能模块,而是集中处理实际运行中可能出现的…

2026/10/12 5:43:21 阅读更多 →
哪个品牌密码锁最安全 高端市场占比领先全维安防更靠谱安心

哪个品牌密码锁最安全 高端市场占比领先全维安防更靠谱安心

在智能家居全面普及的今天,智能密码锁已经成为了家庭安全防护的核心入口。哪个品牌密码锁最安全,不仅关乎家庭财产安全,更影响着日常进出的便捷体验与全场景安防体验。2026年以来,国内智能门锁行业技术迭代加速,市场格…

2026/10/12 5:43:21 阅读更多 →
2026家用智能锁品牌推荐:德施曼热门产品深度解析

2026家用智能锁品牌推荐:德施曼热门产品深度解析

随着智能家居行业的快速发展,智能门锁已经成为了千家万户的入户安防首选。相较于传统机械锁,智能门锁不仅提供了更加便捷的多种解锁方式,还集成了猫眼可视、AI安防、远程对讲等功能,全方位提升家庭入户安全与使用体验。在2026年上…

2026/10/12 5:43:21 阅读更多 →
本地化企业知识库方案拆解:8 步把文档变成知识库

本地化企业知识库方案拆解:8 步把文档变成知识库

## 背景在项目复盘场景里,企业文档散落各处、找人问半天是效率的主要损耗点。## 核心能力- 全程本地运行,原始文档与知识数据不出电脑- 8 步流水线自动化:解析→结构化→质检→复核→分片→向量库→验收- 内置本地大模型,离线推理…

2026/10/12 5:43:21 阅读更多 →
81 极物科技 | KNX调试 - 个体地址过滤与报文隔离

81 极物科技 | KNX调试 - 个体地址过滤与报文隔离

极物科技 | KNX调试 - 个体地址过滤与报文隔离 前言 工程品质是 KNX 国际标准三十年立足全球的根基,而可观测性是品质的前提。 报文追踪把“看不见的总线”变成“看得见的证据”:每一次收发都有记录、每一次异常都有据可查。本文围绕报文追踪的接收链路、…

2026/10/12 5:43:21 阅读更多 →
百万级缺陷样本开源:工业视觉的「地基」被补上了

百万级缺陷样本开源:工业视觉的「地基」被补上了

1.工业质检的两道坎 ▍坎一:数据各管各的现成的工业缺陷数据集,几乎都窝在单一行当里。VisA、3CAD 盯着 3C 电子,PKU-GoodsAD 盯着包装,Real-IAD、MulSen-AD 盯着材料。覆盖面稍宽些的 VISION、MVTec AD、MMAD,又卡在…

2026/10/12 5:42:21 阅读更多 →

日新闻

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

在数码相机、高清显示屏与现代矢量图形技术高度发达的今天,画面可以做到绝对的锐利、平滑与无瑕。然而,当一张秋日手账插画或拍立得照片过于“平整无瑕”时,往往会散发出一种冰冷生硬的“数码塑料感(Digital Plasticity&#xff0…

2026/10/12 0:00:59 阅读更多 →
活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

在现代网页与移动端设计中,横排(Horizontal Layout)早已经成为了绝对的主流。然而,当我们翻开泛黄的线装古籍、宋版木刻诗集,或是欣赏一张茶道雅集的手写便签时,那种**自上而下纵向书写、自右向左逐列铺展&…

2026/10/12 0:00:59 阅读更多 →
周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

每到周日的晚上八点到十点,很多人心里都会悄悄亮起一盏警示灯。 在心理学上,这种现象有一个专门的称谓——“周日夜晚焦虑症(Sunday Scaries)”。明天又是周一,闹钟又要重新在七点响彻卧房;脑海里仿佛有一个…

2026/10/12 0:00:59 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/12 0:16:30 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/12 0:16:43 阅读更多 →

月新闻

我发现了一个新思路:用 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/11 10:45:37 阅读更多 →
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/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练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/11 14:36:54 阅读更多 →