JavaWeb环境准备全攻略:JDK、Maven、Tomcat与MySQL配置指南 1. JavaWeb环境准备到底在准备什么1.1 一个JavaWeb程序跑起来需要哪些角色先说点实在的。很多新手在学JavaWeb时最容易犯的一个错误就是拿到视频教程或者电子书就开始跟着敲代码敲到第三天发现项目启动不了然后开始怀疑自己是不是敲错了某个字母。实际上大部分这类问题根本不是代码问题而是环境问题。JavaWeb项目本身就是个“多方协作”的场景你的代码只是其中一个角色其他的角色还包括JDK、构建工具、Web容器、数据库任何一个环节没配对整个项目就跑不起来。我习惯把JavaWeb环境分成四层去看第一层是JDK这是Java程序的运行基石。第二层是构建工具现在主流是Maven负责帮你管理依赖、打包、编译没有它你就要手动去下载一大堆Jar包那日子没法过。第三层是Web容器JavaWeb项目跑起来之后需要一个“房子”住进去这个房子就是Tomcat它接收浏览器的HTTP请求再转交给你的Servlet代码去处理。第四层是数据库现在做个像样的JavaWeb项目基本离不开MySQL你的用户数据、商品数据最终都得落到数据库里。这四层缺一个都不行。JDK没配好程序编译不过Maven没配好依赖下载不了Tomcat没配好项目部署不上去MySQL没配好登录、注册、列表查询这些功能全部瘫痪。另外还有一个基础中的基础就是IDEA这个开发工具本身。别觉得它只是个编辑器IDEA对JavaWeb项目的支持方式会直接影响你的开发效率特别是2023版本之后新建项目的交互方式和老版本差别很大网上很多教程截图还是旧版的照着做反而会对不上。这部分我们后面单独细说。1.2 不同版本的选型逻辑JDK 8还是JDK 17版本选型是个老生常谈的问题但依然值得认真聊一聊。你在搜索引擎里搜“JavaWeb环境准备”能搜出一堆教程有的用JDK 8有的用JDK 17有的用Tomcat 9有的用Tomcat 10新手很容易看懵。我的建议很简单学习阶段直接上JDK 8 Tomcat 8.5或者Tomcat 9这个组合如果电脑配置允许也可以直接用JDK 17 Tomcat 10但学习和跑通项目的难度会高一点因为Tomcat 10把包名从javax.servlet改成了jakarta.servlet网上大量旧代码运行时会报包找不到的错误。为什么我特别推荐JDK 8不是因为它新而是因为它稳定、资料多、坑少。现在公司里跑的老项目十有七八还是JDK 8你去面试的时候八股文问的也是JDK 8的很多特性。等你把JDK 8这套环境跑通了理解了JavaWeb的核心原理再去迁移到JDK 17是水到渠成的事反过来如果你想直接跨到JDK 17遇到问题查资料时发现全是JDK 8时代的解决方案那才是真的折磨。Tomcat版本也一样主流的Servlet规范版本对应关系如下Tomcat版本Servlet规范JDK要求包名前缀Tomcat 8.5Servlet 3.1JDK 7javax.servletTomcat 9Servlet 4.0JDK 8javax.servletTomcat 10Servlet 5.0JDK 8jakarta.servletTomcat 10.1Servlet 6.0JDK 11jakarta.servlet这个表格建议保存下来以后遇到依赖冲突问题第一反应就是先查这个对应关系。Maven版本上用3.8.x或者3.9.x都可以。需要注意Maven版本和JDK版本的兼容性比如Maven 3.9要求JDK 8以上才能运行如果你电脑上装的是JDK 11、17那没问题但如果你还在用JDK 7那就只能退回到Maven 3.5或者更早的版本。MySQL的选择就简单多了8.x版本即可。5.7虽然还在用但官方已经停止维护了安全性和性能都不如8.x新学JavaWeb直接装8.0就行驱动包用com.mysql.cj.jdbc.Driver连接串里记得加上serverTimezoneAsia/Shanghai不然会报时区错误。2. JDK与Maven最容易被忽视的细节2.1 JDK安装与JAVA_HOME配置的坑JDK的安装本身没什么难度双击安装包一路Next就行。真正翻车的地方在环境变量配置尤其是JAVA_HOME和Path。我先说一个很多人都会踩的坑安装JDK时安装路径里尽量不要有空格和中文。有些同学的电脑用户名是中文默认安装路径就会变成C:\Users\张三\...这个路径在某些老牌工具或者命令行脚本里会解析出错。虽然IDEA这类现代工具对中文路径已经比较友好了但保不齐后续你在命令行里跑一些第三方工具就出问题。稳妥的做法是安装到D:\Java\jdk1.8.0_202这样的路径下全部用英文。配置环境变量具体步骤如下右键“此电脑” - 属性 - 高级系统设置 - 环境变量在“系统变量”区域点“新建”变量名填JAVA_HOME变量值填你的JDK安装路径找到Path变量双击打开新建一条%JAVA_HOME%\bin保存后打开命令行窗口输入java -version验证是否生效这里有一个关键点Path里的变量引用必须写%JAVA_HOME%\bin不能直接写死D:\Java\jdk1.8.0_202\bin。虽然写死也能用但后续你想切换JDK版本时只需要改JAVA_HOME的指向Path不用动要灵活得多。验证是否配置成功有经验的同行一定会让你在命令行里输三条命令java -version javac -version echo %JAVA_HOME%第一条检查JRE第二条检查编译器第三条确认环境变量是否生效。有个很容易出现的情况是java -version能正常输出版本号但javac -version报错“不是内部或外部命令”。问题出在Path里没有%JAVA_HOME%\bin因为你机器上可能已经装过其他需要Java的软件比如某些版本的Eclipse或者Android Studio它们自动把JDK的bin目录加到Path里了但那可能指向的是另一个版本的JDK。2.2 Maven配置本地仓库、镜像、JDK编译版本Maven的安装比JDK还简单解压即用。但解压完之后有三件事必须做不做全后面新建JavaWeb项目时一定会痛苦。第一件是配置本地仓库。Maven默认把依赖包下载到C:\Users\用户名\.m2\repository目录下这个目录在C盘而且随着依赖越拉越多体积轻松超过几个GB。建议修改到D盘或者其他空间充足的盘符。修改方式就是打开conf/settings.xml找到localRepository标签把默认的注释去掉改成你想放的路径例如localRepositoryD:/maven-repository/localRepository用正斜杠或者双反斜杠都行别用单反斜杠会转义出错。第二件是配置国内镜像源。这一步也是必做项。Maven中央仓库在国外直接下载依赖的速度慢的时候一个几百KB的Jar要下几分钟新手尤其容易在这个环节崩溃还以为是Maven出了问题。在settings.xml的mirrors标签里加上阿里云的镜像mirror idalimaven/id namealiyun maven/name urlhttps://maven.aliyun.com/repository/public/url mirrorOfcentral/mirrorOf /mirror加了这行之后你再去拉依赖包速度是肉眼可见的提升。不过要注意镜像源只是帮你加速下载不改变Maven本身的行为逻辑所以不要以为镜像配置了就能跳过本地仓库配置两个都要做。第三件是配置JDK编译版本。Maven默认的编译等级和你的JDK版本可能不一致直接导致“明明环境变量都是对的项目编译却报错”的问题。最简单的做法是在settings.xml里加一段profiles配置profile idjdk-1.8/id activation activeByDefaulttrue/activeByDefault /activation properties maven.compiler.source1.8/maven.compiler.source maven.compiler.target1.8/maven.compiler.target maven.compiler.compilerVersion1.8/maven.compiler.compilerVersion /properties /profile这样Maven不管在什么环境下构建都会统一用Java 8的语法标准去编译。如果你用的是JDK 17就把三处1.8改成17一个道理。Maven配置完在命令行输入mvn -v确认一下能看到Maven版本号和Java版本号就说明基本没问题。IDEA里也要配置一次Maven路径在File - Settings - Build, Execution, Deployment - Build Tools - Maven把Maven home path指向你本地解压的Maven目录settings file指向你刚才改过的settings.xmllocal repository填你设置的仓库路径。这一步非常关键因为IDEA自带的Maven配置经常和你命令行里用的是两套除非你手动统一。3. IDEA与Tomcat的搭配3.1 新建JavaWeb工程前必须搞懂的结构很多网上教程会让你直接去IDEA里新建一个“Java Enterprise”项目然后选Web Application模板。但在做这一步之前我建议你先理解一下JavaWeb工程的标准目录结构长什么样不然项目建出来你会觉得这也不认识那也不认识。一个标准的Maven JavaWeb项目大概是这样的目录组织my-web-app/ ├── pom.xml ├── src/ │ ├── main/ │ │ ├── java/ # Java源码 │ │ ├── resources/ # 配置文件(xml/properties) │ │ └── webapp/ # Web资源目录 │ │ ├── WEB-INF/ # 受保护目录 │ │ │ ├── web.xml # Web部署描述符(可选) │ │ │ └── lib/ # 依赖Jar包(通常不用手动放) │ │ └── index.jsp # 页面文件 │ └── test/ │ └── java/ # 单元测试代码src/main/java放你的Java类src/main/webapp放JSP、HTML、CSS、JS这些前端资源WEB-INF目录是Tomcat运行时的核心目录浏览器无法直接访问它里面的内容只能通过服务端转发进入。早期JavaWeb项目必须有web.xml在Servlet 3.0之后这个文件可以用注解替代但很多公司老项目还是保留着学习阶段建议保留它能帮你理解Servlet的映射机制。这个结构和普通Java SE项目的核心区别就在这里多了webapp目录多了Web容器相关的配置。你写的那堆Servlet代码就是放在src/main/java里通过Tomcat来加载和运行。3.2 Tomcat的下载安装与IDEA集成Tomcat的安装比Maven稍微讲究一点。网上很多教程让你去官网下载ZIP版解压到本地。这一步也有一个坑Tomcat解压路径也不能有中文和空格而且Tomcat启动时会有一个Catalina的临时目录权限不足会导致启动失败建议不要解压到C:\Program Files这种权限受控的目录放到D:\apache-tomcat-9.0.82这种目录下最省心。Tomcat解压完之后目录结构里的重点就几个bin启动和关闭脚本startup.bat启动Tomcatshutdown.bat关闭conf核心配置文件其中server.xml是端口配置tomcat-users.xml是管理用户配置webapps部署Web应用的目录把项目打成WAR包扔进去就能自动部署logs日志目录运行时排查问题主要看这里在IDEA里集成Tomcat具体操作路径是这样的Run - Edit Configurations - 左上角 - Tomcat Server - Local然后在Application server那里点Configure选择你本地Tomcat目录。集成后有一个配置项特别容易让新手忽略Deployment里的Application context。这个配置决定了你项目的访问根路由默认是/如果你填成/hello那访问路径就变成http://localhost:8080/hello/index.jsp。很多教程里让你访问http://localhost:8080/项目名_war_exploded/其实就是这个Application context的值。还有一点IDEA市场里的Tomcat插件不推荐使用什么SmartTomcat之类的直接用官方集成就够用。集成完Tomcat你的开发环境基本上已经完成了一大半。3.3 2023版本IDEA创建JavaWeb项目的完整实操2023版的IDEA和之前版本相比新建项目的入口变化比较大老教程里那个“Java Enterprise”入口还在但默认布局变了你可能找不到。我手把手走一遍流程打开IDEA点击New Project左侧选择Java Enterprise注意不是Java或者Spring Initializr右侧区域的Project SDK选你安装的JDK 8勾选Web Application模板这一步会在项目中自动生成webapp目录和一个index.jsp页面下方有一个Application server选项点New选择你的Tomcat9目录让IDEA识别到Tomcat点击Create后项目就创建成功了如果你用的是Ultimate版本也就是旗舰版直接选Java Enterprise即可。但如果你是社区版那就没有这个选项只能手动创建Maven项目然后自己补上src/main/webapp目录和pom.xml依赖。这算是IDEA社区版对JavaWeb支持的一个明显限制学习阶段强烈建议装Ultimate版学生可以申请免费授权自己学习完全够用。创建完项目之后第一件事不是写代码而是先确认Tomcat能不能跑通一个空页面。点击运行按钮等Tomcat启动浏览器访问http://localhost:8080/项目名_war_exploded/能看到一个默认的Index页面就说明整个环境链路通了。这里要补充一个关键点很多新手在IDEA里点击运行后看到后台日志刷了一大堆最后一行出现Server startup in [xxx] milliseconds就以为启动成功了。严格来说要看日志里有没有出现Deployment of web application archive [xxx] has finished或者Deployment has finished in [xxx] ms这样类似的信息才代表你的项目已经被Tomcat加载部署了。如果只有Tomcat启动成功但项目没有部署访问时还是会404。4. MySQL准备与第一个JavaWeb程序的编写4.1 MySQL 8.x安装与初始化配置数据库这块我用的是MySQL 8.x。安装MySQL时有几步容易踩坑我单独拿出来说一下。安装方式有两种一种是下载MySQL Installer用图形化界面装推荐新手用这种方式比如MySQL Installer 8.0.34。另一种是下载ZIP版解压后自己初始化这种方式适合喜欢折腾的选手优点是干净、可控但配置起来比较麻烦还要自己写服务注册。安装过程中会让你设置root用户的密码这个务必记清楚后面JDBC连接要用。如果你用的是ZIP版需要在my.ini里手动指定一些参数核心的几个配置如下[mysqld] basedirD:/mysql-8.0.34-winx64 datadirD:/mysql-8.0.34-winx64/data port3306 character-set-serverutf8mb4 default_authentication_pluginmysql_native_password [client] default-character-setutf8mb4然后在命令行以管理员身份执行mysqld --initialize-insecure mysqld -install net start mysql第一行命令是初始化数据目录--initialize-insecure表示root用户初始密码为空。第二行是注册Windows服务以后可以通过服务列表来启动停止MySQL。第三行是启动服务。安装完成后用命令行客户端测试一下mysql -u root -p第一次登录时密码是空的直接回车就能进去。进去之后先改密码ALTER USER rootlocalhost IDENTIFIED WITH mysql_native_password BY 你的密码; FLUSH PRIVILEGES;mysql_native_password这个插件在你配置JDBC连接时特别重要因为高版本的MySQL默认用的是caching_sha2_password某些老版本的JDBC驱动兼容性有问题改成mysql_native_password能避免很多不必要的麻烦。到这里数据库环境就备好了。还剩一个小问题是可视化工具的选择我个人习惯用Navicat或者IDEA自带的Database面板但推荐新手先用命令行熟悉一下基本的SQL操作等你对数据库有了感觉再上图形化工具不然你都不知道图形化工具背后帮你执行了什么。4.2 第一个JavaWeb程序从JSP到Servlet完整案例环境全部就绪了现在可以写代码了。我先带大家写一个最简单的JavaWeb程序这个程序能让你完整看到从浏览器发起请求到服务器返回响应的过程。启动IDEA新建一个Java Enterprise项目项目名就叫first-web-demo。在pom.xml里先加上Servlet和JSP的依赖dependencies dependency groupIdjavax.servlet/groupId artifactIdjavax.servlet-api/artifactId version4.0.1/version scopeprovided/scope /dependency dependency groupIdjavax.servlet.jsp/groupId artifactIdjavax.servlet.jsp-api/artifactId version2.3.3/version scopeprovided/scope /dependency /dependencies注意这两个依赖的scope是provided意思是编译时需要但打包部署时由Tomcat容器提供不需要打进WAR包避免和Tomcat自带的Servlet类冲突。在src/main/java包下新建一个Servlet类写一个最简单的处理逻辑package com.example.demo; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; WebServlet(/hello) public class HelloServlet extends HttpServlet { Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setContentType(text/html;charsetUTF-8); PrintWriter writer resp.getWriter(); writer.println(h1Hello, JavaWeb! 环境准备成功/h1); } }代码里用到了WebServlet(/hello)注解这是Servlet 3.0之后的新特性省去了在web.xml里配置Servlet映射的步骤。很多旧教程会让你在web.xml里写一坨servlet和servlet-mapping那也是可以的但新写法明显更简洁。写好之后配置一下Tomcat运行环境点击运行。然后在浏览器访问http://localhost:8080/项目名/hello看到页面输出Hello, JavaWeb! 环境准备成功你的第一个JavaWeb程序就跑通了。接下来可以再加一个JSP页面放在src/main/webapp下比如新建一个index.jsp% page contentTypetext/html;charsetUTF-8 languagejava % html head title第一个JavaWeb页面/title /head body h1当前时间% new java.util.Date().toString() %/h1 /body /html这个页面用了JSP里的表达式% %访问时能看到动态输出的时间。虽然JSP技术现在用得少了前端都是纯HTML接口调用但学习JavaWeb时跑一个JSP能让你直观理解“服务端动态渲染”和“静态HTML”的区别。如果正常开发中你执行到这里到数据库连接这步再补一个JDBC连接的示例就完整了。在pom.xml里加上MySQL驱动依赖dependency groupIdmysql/groupId artifactIdmysql-connector-java/artifactId version8.0.33/version /dependency然后写一个工具类来测试连接package com.example.demo.util; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class DBUtil { private static final String URL jdbc:mysql://localhost:3306/test?useUnicodetruecharacterEncodingutf8serverTimezoneAsia/Shanghai; private static final String USER root; private static final String PASSWORD 你的密码; static { try { Class.forName(com.mysql.cj.jdbc.Driver); } catch (ClassNotFoundException e) { e.printStackTrace(); } } public static Connection getConnection() throws SQLException { return DriverManager.getConnection(URL, USER, PASSWORD); } }在Servlet的doGet方法里调用一下能执行一条简单的SELECT语句就说明全链路都通了。当然这是一个学习阶段的示例生产环境里肯定不会把用户名密码写死在代码里而是放到配置文件或者配置中心这一点大家心里有数。4.3 热词中的“windows server Apache Tomcat 发布JavaWeb项目”补充再说一个比较实用的话题就是热词里提到的winsever apache tomcat 发布javaweb项目。很多技术培训的视频课不会讲这一块但实际工作中你大概率会用得到。这套方案本质上是让Apache充当“前端入口”Tomcat当“后端容器”。Apache监听80端口处理静态资源、做反向代理把动态请求转发给Tomcat处理。为什么要这样搞因为Apache对静态文件和高并发连接的处理能力比Tomcat强同时你用Apache可以很灵活地配置多个虚拟主机、做流控、做访问白名单这些都是Tomcat本身不太擅长的事情。具体的做法是这样的在Apache的httpd.conf中开启代理模块LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_http_module modules/mod_proxy_http.so然后配置虚拟主机把特定路径转发给TomcatVirtualHost *:80 ServerName www.example.com DocumentRoot D:/webroot ProxyPass /app http://localhost:8080/mywebapp ProxyPassReverse /app http://localhost:8080/mywebapp /VirtualHost这样做的好处是用户访问http://www.example.com/app/hello时Apache会把请求转发给Tomcat对应的/mywebapp/hello路径返回结果再由Apache透传给浏览器。整个过程中Tomcat对用户是不可见的用户只和Apache打交道的这个层面可以提高安全性也方便你做反向代理的负载均衡。部署JavaWeb项目的WAR包就是把打包好的项目.war文件复制到Tomcat的webapps目录下启动Tomcat后它会自动解压并部署。打成WAR包的命令很简单mvn clean package生成的WAR包在target目录下把那个.war后缀的文件扔进Tomcat的webapps目录重启Tomcat就完成了最原始的部署动作。5. 常见问题与排查技巧实录5.1 端口占用与404环境搭建过程中新手遇到最多的就是这两类问题端口被占用以及访问404。端口被占用通常表现为Tomcat启动时日志出现如下内容Port 8080 required by Tomcat v9.0 Server at localhost is already in use.原因可能有二一是上一次Tomcat没有正常关闭后台还有一个Java进程占着8080端口二是你电脑上装了其他软件也用了8080端口这种情况在装了某些开发工具的机器上很常见。排查方法很简单命令行执行netstat -ano | findstr 8080会看到一个PID然后到任务管理器里找到那个PID对应的进程确认是不是残留的Java进程是的话直接结束掉不是的话就要检查是不是有其他服务占用了这个端口。如果你确实需要让多个Tomcat共存可以去conf/server.xml里修改Connector port8080的端口号改成8081或者其他空闲端口。404这个问题比较复杂先看你是访问的路径不对还是项目压根没部署成功。区分方法看Tomcat控制台日志如果启动日志里有Deployment has finished说明项目部署成功了404大概率是路径写错了。如果日志里压根没有你的项目名那就是部署失败要回头看Deployment配置。一个很容易踩的坑是项目启动后浏览器地址栏输入http://localhost:8080/项目名但忘记加上/这个末尾斜杠Tomcat默认的欢迎页处理机制会导致重定向产生一个奇怪的路径有时候能访问有时候不能直接见鬼。加上末尾斜杠之后一般就正常了。5.2 IDEA启动Tomcat时控制台乱码控制台乱码问题有个很经典的场景Tomcat正常启动但日志输出一堆中文乱码。原因是Windows系统默认编码是GBK而Tomcat默认输出UTF-8两边编码不一致就糊了。解决办法是在IDEA的Help - Edit Custom VM Options里加一行-Dfile.encodingUTF-8然后在Run Configuration里的Tomcat配置的VM options和Program arguments也都加上-Dfile.encodingUTF-8最后在Tomcat的conf/logging.properties里把java.util.logging.ConsoleHandler.encoding改成UTF-8三管齐下基本能解决。这个问题的本质是字符编码链路没有对齐。哪怕你现在不遇到以后也会遇到建议直接把编码统一成UTF-8从源头消灭问题。5.3 其他高频问题的速查表我把这些年带学生过程中碰到的高频问题整理成一个表格方便大家排查。这些问题都不复杂但是环环相扣任何一个都能让你卡半天。问题现象可能原因解决办法java -version正常但javac找不到Path里只有JRE路径缺JDK的bin把%JAVA_HOME%\bin加到Path最前面Maven下载依赖卡住不动未配置国内镜像源配置阿里云镜像修改settings.xml项目编译报“程序包javax.servlet不存在”pom.xml缺Servlet依赖或scope设置错误添加javax.servlet-api依赖scope设为providedTomcat启动后浏览器无法访问防火墙拦截了8080端口入站规则放行8080端口或关闭防火墙测试JDBC连接时报Access denied for user用户名或密码错误或不允许远程连接检查密码确认连接的用户和hostJDBC连接报Unknown database连接的数据库不存在先执行CREATE DATABASE创建库时区相关的Server returns invalid timezone连接串缺少时区参数URL加上serverTimezoneAsia/ShanghaiIDEA里运行按钮是灰色的没有配置Application server或Tomcat集成失败检查Run Configuration重新配置TomcatWAR包部署后访问仍然404应用上下文路径不对检查Application context与实际请求路径是否一致5.4 环境准备阶段最值钱的一条建议最后分享一条经验这也是我每次带新人时必讲的一句话环境准备阶段别一味追求“一次配对”。你更应该做的是故意把环境搞坏几次亲眼看看每种报错长什么样。比如你今天通过向导把项目跑起来了明天你可以去把JAVA_HOME改成一个不存在的路径启动一次看会报什么错把pom.xml里的Servlet依赖删掉看能编译出什么文件把Tomcat端口改成80看启动日志里会提示什么。这些试错过程中积累的报错记忆比你看十遍教程都管用。因为你之后真正开发时遇到的每一个环境问题本质上都是你曾经在试错中见过的东西。我当时刚学JavaWeb时就是自己把电脑上的JDK从8换成11又从11换回8反复折腾了好几次把各种奇葩报错都见了一遍后面再去给同事解决环境问题时基本看一眼日志就能定位到问题方向这份能力的起点就是前后端环境准备阶段的折腾。希望你也能这么折腾一遍。

相关新闻

最新新闻

基于PID与SQLite的画师作品资源管理方案

基于PID与SQLite的画师作品资源管理方案

1. 为什么“知道一个画师PID”还不够追更画师这件事,很多人的第一步是打开Pixiv,找到喜欢的画师,点收藏。收藏多了以后问题就来了:今天收了一张、明天收了三十张,几个月下来,文件夹里全是12345678_p0.jpg这…

2026/9/9 2:51:12
从GitHub热榜看数据归档:用qzonearchive将QQ空间备份到本地

从GitHub热榜看数据归档:用qzonearchive将QQ空间备份到本地

今天打开 GitHub Trending 的时候,我第一反应是扫了一眼语言分布:Python、TypeScript、Shell 混在一起,和前几天清一色 AI Agent 刷屏的场面不太一样。尤其让我意外的,是日榜前排冒出一个名字很直白的仓库 gaoshu705/qzonearchive…

2026/9/9 2:51:12
AI编程助手实测对比:从Cursor到免费平替,如何选择高性价比方案

AI编程助手实测对比:从Cursor到免费平替,如何选择高性价比方案

我大概有大半年的时间主力在用Cursor写代码,不得不承认,它在“AI辅助编程”这件事上做得很极致:补全跟手、对话上下文长、Agent还能自己改文件跑命令。但我身边的人,包括我自己,慢慢都被同一个问题卡住了——免费额度是…

2026/9/9 2:51:12
PCR主成分回归详解:从原理到Matlab实战代码

PCR主成分回归详解:从原理到Matlab实战代码

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

2026/9/9 2:51:12
2026企业级AI数据分析平台选型指南:评估框架、主流厂商对比与避坑清单

2026企业级AI数据分析平台选型指南:评估框架、主流厂商对比与避坑清单

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

2026/9/9 2:51:12
物联网医疗赋能智慧养老:从传感器选型到场景落地全解析

物联网医疗赋能智慧养老:从传感器选型到场景落地全解析

1. 银发浪潮下的真实需求:我们到底在解决什么问题 这两年我一直在做物联网方向的落地项目,接触最多的不是工厂车间,反而是社区养老驿站和居家适老化改造。原因很简单:中国老龄化速度太快了,而真正愿意沉下心来做适老物…

2026/9/9 2:46:12