学习笔记与开发环境配置指南
1. Maven 相关
1.1 Maven 是不是类似于前端的 node_modules?
Maven 整体更接近 npm + 构建工具,而不仅仅是“一个依赖目录”。
它主要用于构建项目和依赖管理。
1.2 Maven 和 Java 版本要求
- Maven 3.8.1 和 Java 17.0.12 可以配合使用。
- 最低要求限制:每一个 Maven 的大版本都有一个“最低 Java 版本”要求。
- Maven 3.3.x 及以上:至少需要 JDK 7
- Maven 3.9.x:至少需要 JDK 8
- 未来的 Maven 4.0:将至少需要 JDK 17
1.3 Maven 的 Archetype(项目模板)有哪些?
日常开发中最常用的基本上只有以下几种:
最常用的基础模板(Top 2)
maven-archetype-quickstart- 作用:创建一个普通的、标准的 Java 应用程序(Java SE 项目)。
- 结构:会自动帮你建好
src/main/java和src/test/java目录,以及一个包含基础 JUnit 测试的App.java。打包方式默认为jar。
maven-archetype-webapp- 作用:创建一个经典的 Java Web 应用程序。
- 结构:会自动建好
src/main/webapp/WEB-INF/web.xml目录结构和基本的index.jsp文件。打包方式默认为war。
其他特定用途的官方模板
maven-archetype-plugin:如果你想自己写一个 Maven 插件,用这个模板。maven-archetype-j2ee-simple:创建一个包含 EJB、WAR、EAR 多个模块的传统 J2EE 项目。maven-archetype-site:用于生成项目文档站点(Site)的模板。
1.4 jar 包执行
java -jar 和 java -cp 命令有什么区别?什么时候用哪个?
- Spring Boot 项目 / 胖包 (Fat Jar):项目依赖已经全打在一个大 jar 包里了,直接用
java -jar。 - 传统 Java 项目 / 瘦包:主程序和依赖的第三方 jar 包是分开存放的,必须用
java -cp将它们组合起来运行。
问题:执行 java -jar target/java_maven_test2-1.0-SNAPSHOT.jar 报错 jar中没有主清单属性?
解决:需要在 pom.xml 中配置 maven-jar-plugin 插件指定入口类(mainClass):
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.3.0</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>org.example.App</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
2. Windows 命令行与网络排查
2.1 端口占用处理
- 查看所有正在使用的端口
netstat -ano - 查看特定端口占用情况(如 80 端口)
netstat -ano | findstr "80" - 根据 PID 查找占用端口的程序名称
拿到 PID(比如
12345)后,可以查看是哪个程序在运行:tasklist | findstr "12345" - 强制结束占用端口的进程
将
12345替换为实际的 PID:taskkill /F /PID 12345
2.2 ping 命令详解
ping 命令用来测试电脑与目标(网站或服务器)之间网络是否连通以及连接速度(延迟)。
例如输入 ping baidu.com,主要看以下 4 个核心部分:
- 基础信息行:
正在 Ping baidu.com [39.156.66.10] 具有 32 字节的数据:- 含义:告诉你域名已被成功解析成了 IP 地址。如果这步失败,说明 DNS 或者是网络完全断了。默认发送的数据包大小是 32 字节。
- 回复详情(核心数据):
来自 39.156.66.10 的回复: 字节=32 时间=15ms TTL=52- 时间 (Time/延迟):最重要的数据。表示数据包发过去再回来的总耗时,单位毫秒(ms)。
< 50ms:网络极好。50 ~ 100ms:正常水平(浏览网页无卡顿)。> 100ms:延迟较高(跨国服务器常见)。
- TTL (Time To Live/生存时间):数据包在网络中最多能经过几个路由器。也可用来大致判断目标服务器系统(通常接近 64 是 Linux,接近 128 是 Windows)。
- 时间 (Time/延迟):最重要的数据。表示数据包发过去再回来的总耗时,单位毫秒(ms)。
- 统计结果(总结连通性):
Ping 统计信息: 数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失)- 丢失 (Packet Loss/丢包率):极其重要。
0% 丢失:网络非常稳定。出现丢失:网络极其不稳定,可能 Wi-Fi 信号差、宽带拥堵或目标服务器有问题。
- 丢失 (Packet Loss/丢包率):极其重要。
- 常见异常提示:
- 请求超时 (Request timed out):数据发出去了但目标没有回应。可能对方服务器挂了、禁用了 Ping(防火墙拦截)或中途网络不通。
- 目标主机不可达 (Destination host unreachable):找不到去往该 IP 的路。通常是本地网络配置错了。
- 找不到主机 (Ping request could not find host):连 IP 都解析不出来,说明域名拼错或 DNS 服务器出问题。
进阶技巧:在 Windows 下可以使用
-t参数(例如ping baidu.com -t)持续测试网络稳定性,直到按下Ctrl + C强制停止。
2.3 ipconfig 命令详解
核心参数(IPv4 - 开发者最常用的部分)
- IPv4 地址:例如
192.168.13.179- 含义:电脑在当前局域网(连的 Wi-Fi)中的“门牌号”。
- 开发者用途:如果在本机跑了一个 Web 服务(比如
8080端口),只要局域网内的手机或其他电脑连着同一个 Wi-Fi,在浏览器输入http://192.168.13.179:8080就能直接访问该项目。
2.4 PowerShell 相关
PowerShell 如何自动补全历史命令? 手动敲吧,还要改配置比较麻烦,建议保持 PowerShell 原始状态。
3. IDEA 配置与使用指南
3.1 代码格式化设置
默认快捷键:右键选择 Reformat Code 或 Ctrl + Alt + L
终极解决:如何把“格式化”加到代码区的右键菜单最外层? 如果习惯用鼠标右键格式化,可以手动加到菜单里:
- 打开设置:
File->Settings。 - 左侧找到
Appearance & Behavior->Menus and Toolbars。 - 在右侧展开
Editor Popup Menu(即代码区的右键菜单)。 - 选中列表里的任意一项(比如最顶部的
Cut/Copy/Paste Group)。 - 点击顶部的
+号 -> 选择Add Action...。 - 在弹出的搜索框里输入
Reformat Code,选中它并点击OK。 - 最后点击
Apply和OK保存。 回到代码里点右键,就能直接看到熟悉的格式化选项了!
3.2 关闭 IDEA 的自动保存
强烈建议在关闭自动保存的同时开启**“未保存显示星号(*)”**的提示,否则很难看出哪些文件还没有手动保存。
第一步:关闭自动保存触发条件
- 打开设置:
File->Settings(macOS 是IntelliJ IDEA->Preferences/Settings)。 - 左侧菜单栏找到:
Appearance & Behavior->System Settings。 - 在右侧找到
Autosave(自动保存)区域。 - 取消勾选以下两项:
Save files if the IDE is idle for N seconds(如果 IDE 空闲 N 秒则自动保存文件)Save files when switching to a different application(切换到其他应用程序时自动保存文件)
第二步:开启未保存时的星号(*)提示(强烈推荐)
- 在设置窗口左侧找到:
Editor->General->Editor Tabs。 - 在右侧找到
Appearance(外观)区域。 - 勾选
Mark modified (*)(标记已修改的页签)。 - 点击右下角的
Apply和OK保存设置。
完成! 现在修改文件后,顶部文件名旁边会出现 * 号,需要养成手动按 Ctrl + S(macOS 为 Cmd + S)保存的习惯。