[{"data":1,"prerenderedAt":175},["ShallowReactive",2],{"$fr8a5zru20tbs":3,"$fvve4g6d7oc3e":43,"$f2awpywcpggwwu":167},{"code":4,"msg":5,"data":6},200,"查询成功",[7,15,21,28,33,38],{"id":8,"name":9,"alias":10,"count":11,"createTime":12,"updateTime":13,"deleted":14},1,"java","🍡 柒柒Java学习笔记",4,"2023-12-07 14:46:56","2024-11-25 01:33:15",0,{"id":16,"name":17,"alias":18,"count":8,"createTime":19,"updateTime":20,"deleted":14},2,"python"," 🍼 柒柒Python学习笔记","2023-12-07 14:47:07","2024-11-23 15:15:40",{"id":22,"name":23,"alias":24,"count":25,"createTime":26,"updateTime":27,"deleted":14},3,"前端","🍉 柒柒前端学习笔记",5,"2023-12-07 14:47:54","2024-11-23 15:15:58",{"id":11,"name":29,"alias":30,"count":16,"createTime":31,"updateTime":32,"deleted":14},"linux","🍟 柒柒Linux学习笔记","2024-11-23 14:34:45","2024-11-23 14:48:33",{"id":25,"name":34,"alias":35,"count":8,"createTime":36,"updateTime":37,"deleted":14},"数据库","🍨 柒柒数据库学习笔记","2024-11-23 14:36:39","2024-11-23 15:23:38",{"id":39,"name":40,"alias":41,"count":14,"createTime":42,"updateTime":42,"deleted":14},6,"计算机综合","🧀 柒柒计算机综合学习笔记","2024-11-28 13:42:39",{"code":4,"msg":5,"data":44},{"records":45,"total":47,"size":166,"current":8,"pages":8},[46,54,62,71,80,89,97,106,113,121,128,135,143,151,158],{"id":47,"title":48,"content":49,"description":50,"coverImg":51,"state":14,"categoryId":11,"authorName":52,"views":14,"likes":14,"createTime":53,"updateTime":53,"deleted":14},15,"如何在CentOS 8.5 系统中运行 JAR 包","在 CentOS 8.5 系统中运行 JAR 包并注册为系统服务，可通过 **`systemd`服务管理**实现开机自启和便捷运维。假设我们已经将 JAR 包（如 `api-0.0.1-SNAPSHOT.jar`）上传至服务器目录（如 `\u002Fopt\u002Fapi`）以下是具体步骤：\r\n\r\n------\r\n\r\n### ⚙️ **一、运行 JAR 包（临时测试）**\r\n\r\n#### 1. **前台运行**（关闭终端即停止）：\r\n\r\n```\r\njava -jar \u002Fopt\u002Fapi\u002Fapi-0.0.1-SNAPSHOT.jar\r\n```\r\n\r\n#### 2. **后台运行**（终端关闭后持续运行）：\r\n\r\n```\r\nnohup java -jar \u002Fopt\u002Fapi\u002Fapi-0.0.1-SNAPSHOT.jar > \u002Fopt\u002Fapi\u002Foutput.log 2>&1 &\r\n```\r\n\r\n------\r\n\r\n### 🔧 **二、注册为 Systemd 系统服务（推荐）**\r\n\r\n#### 1. **创建服务文件**\r\n\r\n进入 systemd 配置目录，创建服务文件（如 `api.service`）：\r\n\r\n```\r\nsudo vi \u002Fetc\u002Fsystemd\u002Fsystem\u002Fapi.service\r\n```\r\n\r\n#### 2. **编写服务配置**\r\n\r\n复制以下内容（按需修改参数）：\r\n\r\n```\r\n[Unit]\r\nDescription=API Application (SpringBoot Service)\r\nAfter=network.target  # 确保网络就绪后启动\r\n\r\n[Service]\r\nUser=appuser         # 替换为运行服务的非root用户（如专用用户）\r\nWorkingDirectory=\u002Fopt\u002Fapi  # JAR 所在目录\r\nExecStart=\u002Fusr\u002Fbin\u002Fjava -jar api-0.0.1-SNAPSHOT.jar\r\nRestart=always       # 异常退出时自动重启\r\nRestartSec=10        # 重启间隔（秒）\r\nSuccessExitStatus=143 # SpringBoot 默认退出码\r\nEnvironment=\"JAVA_HOME=\u002Fusr\u002Flib\u002Fjvm\u002Fjava-11-openjdk\" # 可选：指定JDK路径\r\n# 日志配置（可选）\r\nStandardOutput=file:\u002Fvar\u002Flog\u002Fapi.log\r\nStandardError=file:\u002Fvar\u002Flog\u002Fapi_error.log\r\n\r\n[Install]\r\nWantedBy=multi-user.target  # 多用户模式启用\r\n```\r\n\r\n#### 3. **设置权限并重载配置**\r\n\r\n```\r\nsudo chmod 644 \u002Fetc\u002Fsystemd\u002Fsystem\u002Fapi.service  # 服务文件权限\r\nsudo systemctl daemon-reload                    # 重载 systemd 配置\r\n```\r\n\r\n#### 4. **启动服务并设置开机自启**\r\n\r\n```\r\nsudo systemctl start api        # 启动服务\r\nsudo systemctl enable api       # 开机自启\r\nsudo systemctl status api       # 检查状态（确认 Active: active (running)）\r\n```\r\n\r\n------\r\n\r\n#### 4. **重启服务**\r\n\r\n（1）上传新 JAR 文件\r\n\r\n将新版本（如 `api-0.0.2-SNAPSHOT.jar`）上传至服务器目录（如 `\u002Fopt\u002Fapi`）。\r\n\r\n（2）编辑 `\u002Fetc\u002Fsystemd\u002Fsystem\u002Fapi.service`，更新 `ExecStart`路径：\r\n\r\n```\r\nExecStart=\u002Fusr\u002Fbin\u002Fjava -jar \u002Fopt\u002Fapi\u002Fapi-0.0.2-SNAPSHOT.jar  # 修改 JAR 文件名\r\n```\r\n\r\n（3）重载配置并重启\r\n\r\n```\r\nsudo systemctl daemon-reload     # 重载 systemd 配置\r\nsudo systemctl restart api       # 触发优雅重启\r\nsudo systemctl status api        # 检查状态（确认 Active: active (running)）\r\n```\r\n\r\n### ⚡ **三、服务管理常用命令**\r\n\r\n| **操作**     | **命令**                     | **说明**           |\r\n| :----------- | :--------------------------- | :----------------- |\r\n| 启动服务     | `sudo systemctl start api`   | 立即运行服务       |\r\n| 停止服务     | `sudo systemctl stop api`    | 安全停止服务       |\r\n| 重启服务     | `sudo systemctl restart api` | 重新加载配置并重启 |\r\n| 查看状态     | `sudo systemctl status api`  | 检查运行状态和日志 |\r\n| 查看实时日志 | `journalctl -u api -f`       | 动态追踪服务日志   |\r\n| 禁用开机自启 | `sudo systemctl disable api` | 取消开机启动       |","在 CentOS 8.5 系统中运行 JAR 包并注册为系统服务，可通过systemd服务管理实现开机自启和便捷运维","https:\u002F\u002Fimg.qiqii.cn\u002Fcover\u002F15.webp","柒柒","2025-08-27 09:29:58",{"id":55,"title":56,"content":57,"description":58,"coverImg":59,"state":14,"categoryId":8,"authorName":52,"views":8,"likes":14,"createTime":60,"updateTime":61,"deleted":14},14,"如何通过宝塔面板快速部署网站服务","闲着没事，我把网站服务器系统重装为*Alibaba* *Cloud* *Linux 3*，完全兼容Centos生态和命令。为了方便，我使用宝塔面板部署前后端项目和数据库，具体包括 MySQL、Redis、Java (jar) 和 Nuxt.js 。\r\n\r\n------\r\n\r\n### 🔧 **一、环境准备**\r\n\r\n1. **服务器配置**\r\n\r\n   - 操作系统：*Alibaba* *Cloud* *Linux 3* \r\n   - 硬件要求：2核2G\r\n   - 开放端口：\r\n     - 为了方便，云服务器安全组开放所有端口，使用宝塔面板防火墙进行管理。\r\n\r\n2. **安装宝塔面板**\r\n\r\n   - 执行命令（适用于Centos\u002FOpenCloud\u002FAlibaba）：\r\n\r\n     ```\r\n     url=https:\u002F\u002Fdownload.bt.cn\u002Finstall\u002Finstall_panel.sh;if [ -f \u002Fusr\u002Fbin\u002Fcurl ];then curl -sSO $url;else wget -O install_panel.sh $url;fi;bash install_panel.sh ed8484bec\r\n     ```\r\n\r\n   - 安装完成后记录面板地址、账号密码\r\n\r\n     安全设置：登录后修改面板端口、用户名和密码，并绑定宝塔账号\r\n\r\n------\r\n\r\n### ⚙️ **二、环境部署**\r\n\r\n#### **1. MySQL \r\n\r\n- 安装：\r\n\r\n  - 宝塔面板主页 → 数据库 → 选择MySQL→ 根据提示点击安装→选择版本（我选择MySQL 8.0.24）→ 极速安装\r\n\r\n- 配置：\r\n\r\n  - 点击“添加数据库”：输入数据库名、用户名、密码登信息，并确认\r\n\r\n  - 开启远程访问：把权限改为所有人\r\n\r\n  - 防火墙放行端口3306\r\n\r\n#### **2. Redis\r\n\r\n- 安装：\r\n\r\n  - 宝塔面板主页 → 数据库 → 选择Redis→ 根据提示点击安装→ 选择版本（我选择Redis 8.0.1）→ 极速安装\r\n\r\n- 配置：\r\n\r\n  - 点击Redis 8.0.1按钮→选择配置文件，修改为如下：\r\n\r\n    ```\r\n    bind 127.0.0.1      # 限制本地访问\r\n    requirepass password  # 设置密码\r\n    maxmemory 512mb     # 根据内存调整\r\n    ```\r\n\r\n  -  点击Redis 8.0.1按钮→服务→重载配置：\r\n\r\n\r\n#### **3. Java\r\n\r\n- 安装jdk：\r\n\r\n  - 宝塔面板主页 →网站 → Java项目→ Java环境管理→JDK管理→ 选择版本（我选择jdk-21.0.2）→ 极速安装\r\n- 部署jar 应用：\r\n\r\n  1. 上传jar  文件至服务器目录（如 `\u002Fwww\u002Fwwwroot\u002Fjar-app`）。\r\n\r\n  2. 添加Java项目，项目路径选择\u002Fwww\u002Fwwwroot\u002Fjar-app，其他信息会自动填充，点击确定。\r\n\r\n\r\n#### **4. Node.js\r\n\r\n- 安装 Node.js：\r\n\r\n  - 宝塔面板主页 →网站 →Node项目→ 安装Node版本管理器→在Node版本管理器选择版本（我选择Node-22.16）→ 极速安装\r\n\r\n- 安装 Node.js：\r\n\r\n  - 宝塔面板主页 →软件商店 →搜索“PM2管理器 5.6”→ 安装\r\n\r\n- 部署 Nuxt.js 项目：\r\n\r\n  1. 上传项目文件至目录（如 `\u002Fwww\u002Fwwwroot\u002Fnuxt-app`）。\r\n\r\n  2. 安装依赖：\r\n\r\n     ```\r\n     cd \u002Fwww\u002Fwwwroot\u002Fnuxt-app\r\n     npm install --production\r\n     ```\r\n\r\n  3. 构建项目：\r\n\r\n     - 构建命令：`npm run build`\r\n\r\n  4. PM2 守护进程：\r\n\r\n     - 项目根目录添加ecosystem.config.cjs文件：\r\n     \r\n       ```\r\n       module.exports = {\r\n         apps: [\r\n           {\r\n             name: 'NuxtAppName',\r\n             port: '3000',\r\n             exec_mode: 'cluster',\r\n             instances: 'max',\r\n             script: '.\u002F.output\u002Fserver\u002Findex.mjs'\r\n           }\r\n         ]\r\n       }\r\n       ```\r\n     \r\n     - 添加Node项目  →PM2项目 →从文件内容添加→配置文件选择\u002Fwww\u002Fwwwroot\u002Fnuxt-app\u002Fecosystem.config.cjs，其他信息会自动填充，点击确定。\r\n\r\n对比上次手动部署，使用宝塔面板极大简化操作步骤。","闲着没事，我把网站柒柒知道服务器系统重装为Alibaba Cloud Linux 3，完全兼容Centos生态和命令。为了方便，我使用宝塔面板部署前后端项目和数据库，具体包括 MySQL、Redis、Java (jar) 和 Nuxt.js 。","https:\u002F\u002Fimg.qiqii.cn\u002Fcover\u002F14.webp","2025-06-30 19:22:49","2024-11-28 15:09:03",{"id":63,"title":64,"content":65,"description":66,"coverImg":67,"state":14,"categoryId":25,"authorName":52,"views":68,"likes":14,"createTime":69,"updateTime":70,"deleted":14},13,"Redis基础：String Redis Template用法介绍","## 简述\r\n\r\nString Redis Template是Spring Data Redis提供的一个模板类，用于简化对Redis数据库的操作，特别是当数据存储为字符串格式时。\r\n\r\n#### 依赖引入\r\n\r\n```\r\n\u003Cdependency>\r\n    \u003CgroupId>org.springframework.boot\u003C\u002FgroupId>\r\n    \u003CartifactId>spring-boot-starter-data-redis\u003C\u002FartifactId>\r\n\u003C\u002Fdependency>\r\n```\r\n\r\n#### 配置文件\r\n\r\n```yml\r\nspring:\r\n  data:\r\n    redis:\r\n      host: localhost\r\n      port: 6379\r\n      database: 0\r\n```\r\n\r\n## 使用方法1（值为字符串格式）\r\n\r\n#### 设置值\r\n\r\n```\r\n@Service\r\npublic class RedisService {\r\n\r\n    @Autowired\r\n    private StringRedisTemplate stringRedisTemplate;\r\n\r\n    public void setValue(String key, String value) {\r\n        stringRedisTemplate.opsForValue().set(key, value);\r\n    }\r\n}\r\n```\r\n\r\n#### 获取值\r\n\r\n```\r\npublic String getValue(String key) {\r\n    return stringRedisTemplate.opsForValue().get(key);\r\n}\r\n```\r\n\r\n#### 删除键\r\n\r\n```\r\npublic void deleteValue(String key) {\r\n    stringRedisTemplate.delete(key);\r\n}\r\n\r\n```\r\n\r\n## 使用方法2（值为hash格式）\r\n\r\n#### 设置值\r\n\r\n```\r\n@Service\r\npublic class RedisService {\r\n\r\n    @Autowired\r\n    private StringRedisTemplate stringRedisTemplate;\r\n    \r\n    \u002F\u002F 获取 HashOperations 对象\r\n    private HashOperations\u003CString, String, String> hashOps;\r\n\r\n    \u002F\u002F 添加哈希项\r\n    public void putHashValue(String key, String hashKey, String value) {\r\n        hashOps.put(key, hashKey, value);\r\n    }\r\n}\r\n```\r\n\r\n#### 获取值\r\n\r\n```\r\n\u002F\u002F 获取哈希项\r\npublic String getHashValue(String key, String hashKey) {\r\n    return hashOps.get(key, hashKey);\r\n}\r\n\r\n\u002F\u002F 获取整个哈希\r\npublic Map\u003CString, String> getAllHashValues(String key) {\r\n    return hashOps.entries(key);\r\n}\r\n```\r\n\r\n#### 删除键\r\n\r\n```\r\n\u002F\u002F 删除哈希项\r\npublic void deleteHashValue(String key, String hashKey) {\r\n    hashOps.delete(key, hashKey);\r\n}\r\n```\r\n\r\n","String Redis Template是Spring Data Redis提供的一个模板类，用于简化对Redis数据库的操作，特别是当数据存储为字符串格式时。","https:\u002F\u002Fimg.qiqii.cn\u002Fcover\u002F13.webp",63,"2024-11-20 15:25:39","2024-12-25 19:12:19",{"id":72,"title":73,"content":74,"description":75,"coverImg":76,"state":14,"categoryId":11,"authorName":52,"views":77,"likes":14,"createTime":78,"updateTime":79,"deleted":14},12,"Ubuntu 22.04 LTS部署环境","2024年8月30日，本网站正式弃用centos5.7，改用Ubuntu 22.04，为保证网站成功运行，一共部署四个必要软件，分别是mysql8.0、redis6.0、ngnix1.18、jdk21。\r\n\r\n# 一、mysql8.0\r\n\r\n在 Ubuntu 22.04 上安装 MySQL 8.0 ，安装操作需root权限：\r\n\r\n1. 通过 sudo su -，切换到root用户\r\n\r\n   > 本文选择这种方式操作\r\n\r\n2. 或在每一个命令前，加上sudo，用来临时提升权限\r\n\r\n### 1.卸载仓库信息\r\n\r\n如果已经安装过MySQL5.7版本，需要卸载仓库信息\r\n\r\n```\r\n# 卸载MySQL5.7版本\r\napt remove -y mysql-client=5.7* mysql-community-server=5.7*\r\n\r\n# 卸载5.7的仓库信息\r\ndpkg -l | grep mysql | awk '{print $2}' | xargs dpkg -P\r\n```\r\n\r\n### 2.更新apt仓库信息\r\n\r\n```bash\r\nsudo apt update\r\n```\r\n\r\n### 3.安装mysql\r\n\r\n```bash\r\nsudo apt install -y mysql-server\r\n```\r\n\r\n### 4.**启动 MySQL 服务**：\r\n\r\n```bash\r\n\u002Fetc\u002Finit.d\u002Fmysql start\t\t\t# 启动\r\n\u002Fetc\u002Finit.d\u002Fmysql stop\t\t\t# 停止\r\n\u002Fetc\u002Finit.d\u002Fmysql status\t\t# 查看状态\r\n```\r\n\r\n### 5.登陆MySQL设置密码\r\n\r\n给root账号设置密码\r\n\r\n```\r\n# 直接执行：mysql\r\nmysql\r\nALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';\r\n```\r\n\r\n### 6.根据需要，也可以创建新用户\r\n\r\n```\r\nCREATE USER 'abcde'@'localhost' IDENTIFIED BY 'event123';\r\n```\r\n\r\n如果你希望该用户可以从任何主机连接，可以使用：\r\n\r\n```sql\r\nCREATE USER 'abcde'@'%' IDENTIFIED BY 'event123';\r\n```\r\n\r\n### 7.**授予权限**：\r\n\r\n```sql\r\nGRANT ALL PRIVILEGES ON *.* TO 'abcde'@'localhost' WITH GRANT OPTION;\r\n```\r\n\r\n如果使用 `%`，则命令为：\r\n\r\n```sql\r\nGRANT ALL PRIVILEGES ON *.* TO 'abcde'@'%' WITH GRANT OPTION;\r\n```\r\n\r\n### 8.**刷新权限**：\r\n\r\n```sql\r\nFLUSH PRIVILEGES;\r\n```\r\n\r\n### 9.退出MySQL控制台\r\n\r\n```sql\r\nEXIT;\r\n```\r\n\r\n### 10.对MySQL进行初始化\r\n\r\n```\r\n# 执行如下命令，此命令是MySQL安装后自带的配置程序\r\nmysql_secure_installation\r\n# 可以通过which命令查看到这个自带程序所在的位置\r\nroot@DESKTOP-Q89USRE:~# which mysql_secure_installation\r\n\u002Fusr\u002Fbin\u002Fmysql_secure_installation\r\n```\r\n\r\n### 11.重新登陆MySQL（用更改后的密码）\r\n\r\n```\r\nmysql -uroot -p\r\n```\r\n\r\n### 12.**退出MySQL控制台**：\r\n\r\n```sql\r\nEXIT;\r\n```\r\n\r\n### 13.检查防火墙设置\r\n\r\n确保防火墙允许 MySQL 的端口（默认是 3306）通过。\r\n\r\n```bash\r\nsudo ufw allow 3306\r\n```\r\n\r\n### 14.检查 MySQL 配置\r\n\r\n```bash\r\nsudo nano \u002Fetc\u002Fmysql\u002Fmysql.conf.d\u002Fmysqld.cnf\r\n```\r\n\r\n确保 `bind-address` 设置为 `0.0.0.0` 或注释掉这一行：\r\n\r\n```plaintext\r\nbind-address = 0.0.0.0\r\n```\r\n\r\n### 15.重启 MySQL 服务\r\n\r\n```bash\r\nsudo systemctl restart mysql\r\n```\r\n\r\n# 二、redis6.0\r\n\r\n在 Ubuntu 22.04 上安装 Redis，可以按照以下步骤进行：\r\n\r\n### 1. 更新系统包\r\n\r\n打开终端并运行以下命令：\r\n\r\n```bash\r\nsudo apt update\r\nsudo apt upgrade\r\n```\r\n\r\n### 2. 安装 Redis\r\n\r\n使用以下命令安装 Redis：\r\n\r\n```bash\r\nsudo apt install redis-server\r\n```\r\n\r\n### 3. 配置 Redis\r\n\r\n编辑 Redis 配置文件以确保其在后台运行：\r\n\r\n```bash\r\nsudo nano \u002Fetc\u002Fredis\u002Fredis.conf\r\n```\r\n\r\n找到以下行并进行修改：\r\n\r\n```plaintext\r\nsupervised no\r\n```\r\n\r\n改为：\r\n\r\n```plaintext\r\nsupervised systemd\r\n```\r\n\r\n### 4. 启动 Redis 服务\r\n\r\n启动 Redis 服务并使其在系统启动时自动启动：\r\n\r\n```bash\r\nsudo systemctl start redis\r\nsudo systemctl enable redis\r\n```\r\n\r\n### 5. 检查 Redis 状态\r\n\r\n确认 Redis 正在运行：\r\n\r\n```bash\r\nsudo systemctl status redis\r\n```\r\n\r\n### 6. 测试 Redis\r\n\r\n使用 Redis CLI 测试安装：\r\n\r\n```bash\r\nredis-cli\r\n```\r\n\r\n在 Redis 提示符下，输入：\r\n\r\n```plaintext\r\nping\r\n```\r\n\r\n如果返回 `PONG`，则表示 Redis 正在正常运行。\r\n\r\n### 7. 配置远程访问\r\n\r\n打开 Redis 配置文件：\r\n\r\n```bash\r\nsudo nano \u002Fetc\u002Fredis\u002Fredis.conf\r\n```\r\n\r\n修改允许连接的 IP 地址，找到以下行：\r\n\r\n```plaintext\r\nbind 127.0.0.1\r\n```\r\n\r\n将其修改为：\r\n\r\n```plaintext\r\nbind 0.0.0.0\r\n```\r\n\r\n这将允许 Redis 接受来自任何 IP 地址的连接。\r\n\r\n### 8. 设置密码\r\n\r\n在配置文件中添加或修改以下行，以设置访问密码：\r\n\r\n```plaintext\r\nrequirepass yourpassword\r\n```\r\n\r\n### 9. 重启 Redis 服务\r\n\r\n保存文件并退出编辑器，然后重启 Redis 服务以应用更改：\r\n\r\n```bash\r\nsudo systemctl restart redis\r\n```\r\n\r\n### 10. 配置防火墙\r\n\r\n确保你的防火墙允许访问 Redis 默认端口（6379）：\r\n\r\n```bash\r\nsudo ufw allow 6379\r\n```\r\n\r\n### 11. 测试远程连接\r\n\r\n在远程机器上使用以下命令连接：\r\n\r\n```bash\r\nredis-cli -h your_server_ip -p 6379 -a yourpassword\r\n```\r\n\r\n# 三、安装Nginx\r\n\r\n安装 Nginx，按照以下步骤进行操作：\r\n\r\n### 1. 更新包列表\r\n\r\n首先，确保你的包列表是最新的：\r\n\r\n```bash\r\nsudo apt update\r\n```\r\n\r\n### 2. 安装 Nginx\r\n\r\n使用以下命令安装 Nginx：\r\n\r\n```bash\r\nsudo apt install nginx\r\n```\r\n\r\n### 3. 启动 Nginx 服务\r\n\r\n安装完成后，启动 Nginx 服务：\r\n\r\n```bash\r\nsudo systemctl start nginx\r\n```\r\n\r\n### 4. 启用 Nginx 开机自启\r\n\r\n使 Nginx 在系统启动时自动启动：\r\n\r\n```bash\r\nsudo systemctl enable nginx\r\n```\r\n\r\n### 5. 检查 Nginx 状态\r\n\r\n确认 Nginx 服务正在运行：\r\n\r\n```bash\r\nsudo systemctl status nginx\r\n```\r\n\r\n### 6. 测试 Nginx\r\n\r\n在浏览器中访问你的服务器 IP 地址（例如 `http:\u002F\u002Fyour_server_ip`），如果看到 Nginx 的欢迎页面，说明安装成功。\r\n\r\n### 7. 配置防火墙\r\n\r\n如果你使用的是 UFW 防火墙，允许 HTTP 和 HTTPS 流量：\r\n\r\n```bash\r\nsudo ufw allow 'Nginx Full'\r\n```\r\n\r\n### 8.部署前端项目\r\n\r\nvue项目执行npm run build 命令打包后，将dist文件放到\u002Fvar\u002Fwww\u002Fhtml即可\r\n\r\n# 四、安装jdk21\r\n\r\n要安装 JDK21，请按照以下步骤进行操作：\r\n\r\n### 1. 更新包列表\r\n\r\n首先，确保你的包列表是最新的：\r\n\r\n```bash\r\nsudo apt update\r\n```\r\n\r\n### 2. 安装 JDK 21\r\n\r\n使用以下命令安装 OpenJDK 21：\r\n\r\n```bash\r\nsudo apt install openjdk-21-jdk\r\n```\r\n\r\n### 3. 验证安装\r\n\r\n安装完成后，可以通过以下命令验证 JDK 是否安装成功：\r\n\r\n```bash\r\njava -version\r\n```\r\n\r\n你应该看到类似于以下的输出：\r\n\r\n```plaintext\r\nopenjdk version \"21.0.x\" ...\r\n```\r\n\r\n### 4. 设置环境变量\r\n\r\n如果需要设置 JAVA_HOME 环境变量，可以编辑 `~\u002F.bashrc` 文件：\r\n\r\n```bash\r\nnano ~\u002F.bashrc\r\n```\r\n\r\n在文件末尾添加以下行：\r\n\r\n```bash\r\nexport JAVA_HOME=\u002Fusr\u002Flib\u002Fjvm\u002Fjava-17-openjdk-amd64\r\nexport PATH=$PATH:$JAVA_HOME\u002Fbin\r\n```\r\n\r\n保存并退出后，运行以下命令以使更改生效：\r\n\r\n```bash\r\nsource ~\u002F.bashrc\r\n```\r\n\r\n### 5.部署jar包（nohup）\r\n\r\n如果已经运行过，需先关闭进程\r\n\r\n```\r\nps aux | grep api.jar\r\n\r\nkill \u003CPID>\r\n```\r\n\r\n启动服务\r\n\r\n```\r\nnohup java -jar \u002Froot\u002Fapi.jar --server.port=8443 > \u002Froot\u002Fapi.log 2>&1 &\r\n```\r\n\r\n查看日志\r\n\r\n```\r\ntail -f \u002Froot\u002Fapi.log\r\n```\r\n\r\n### 6.部署jar包（systemd）\r\n\r\n使用以下命令运行 JAR 包：\r\n\r\n```bash\r\njava -jar \u002Fpath\u002Fto\u002Fyour\u002Ffile.jar\r\n```\r\n\r\n如果希望 JAR 包在后台运行并在系统启动时自动启动，可以使用 `systemd` 创建一个服务文件：\r\n\r\n```\r\nsudo nano \u002Fetc\u002Fsystemd\u002Fsystem\u002Fmyapp.service\r\n```\r\n\r\n添加以下内容：\r\n\r\n```\r\n[Unit]\r\nDescription=My Java Application\r\nAfter=network.target\r\n\r\n[Service]\r\nUser=your_username\r\nExecStart=\u002Fusr\u002Fbin\u002Fjava -jar \u002Fpath\u002Fto\u002Fyour\u002Ffile.jar\r\nSuccessExitStatus=143\r\n\r\n[Install]\r\nWantedBy=multi-user.target\r\n```\r\n\r\n将 `your_username` 替换为实际用户名。\r\n\r\n启动服务\r\n\r\n```bash\r\nsudo systemctl enable myapp\r\nsudo systemctl start myapp\r\n```","2024年8月30日，本网站正式弃用centos5.7，改用Ubuntu 22.04，为保证网站成功运行，一共部署四个必要软件，分别是mysql8.0、redis6.0、ngnix1.18、jdk21。","https:\u002F\u002Fimg.qiqii.cn\u002Fcover\u002F12.webp",50,"2024-11-20 15:25:26","2024-12-25 19:10:58",{"id":81,"title":82,"content":83,"description":84,"coverImg":85,"state":14,"categoryId":22,"authorName":52,"views":86,"likes":8,"createTime":87,"updateTime":88,"deleted":14},11,"css媒体查询","CSS媒体查询（Media Queries）是一种CSS技术，用于根据设备的特性和屏幕尺寸，为不同的设备或屏幕应用不同的样式。通过使用媒体查询，我们可以创建响应式的网页设计，使网页在不同设备上呈现出最佳的布局和样式。下面是对CSS媒体查询的详细介绍：\r\n\r\n1. 基本概念：\r\n\r\n   - 媒体查询允许我们根据不同的媒体类型和媒体特性来应用样式。\r\n   - 媒体类型可以是`all`（所有设备）、`screen`（屏幕）、`print`（打印机）等。\r\n   - 媒体特性可以是设备宽度、设备高度、设备方向等。\r\n\r\n2. 媒体查询的语法：\r\n\r\n   - 媒体查询使用`@media`规则来定义。\r\n\r\n   - 语法格式如下：\r\n\r\n     ```css\r\n     @media 媒体类型 and (媒体特性) {\r\n       \u002F* 样式规则 *\u002F\r\n     }\r\n     ```\r\n\r\n3. 常用的媒体特性：\r\n\r\n   - `width`：设备宽度。\r\n   - `height`：设备高度。\r\n   - `orientation`：设备方向（纵向或横向）。\r\n   - `min-width`：最小设备宽度。\r\n   - `max-width`：最大设备宽度。\r\n   - `min-height`：最小设备高度。\r\n   - `max-height`：最大设备高度。\r\n\r\n4. 示例代码：\r\n\r\n   - 下面是一个简单的媒体查询示例，当设备宽度小于等于600像素时，应用特定的样式：\r\n\r\n     ```css\r\n     @media (max-width: 600px) {\r\n       \u002F* 在宽度小于等于600px的设备上应用以下样式 *\u002F\r\n       body {\r\n         background-color: lightblue;\r\n       }\r\n     }\r\n     ```\r\n\r\n   - 另一个示例，当设备是横向方向时，应用特定的样式：\r\n\r\n     ```css\r\n     @media (orientation: landscape) {\r\n       \u002F* 在横向方向的设备上应用以下样式 *\u002F\r\n       body {\r\n         font-size: 20px;\r\n       }\r\n     }\r\n     ```\r\n\r\n通过媒体查询，我们可以根据设备的特性和屏幕尺寸，为不同的设备提供最佳的用户体验。使用媒体查询可以实现响应式布局、适配不同尺寸的屏幕、隐藏或显示特定的内容等。\r\n\r\n总结：\r\n\r\n- 媒体查询是一种CSS技术，用于根据设备的特性和屏幕尺寸应用不同的样式。\r\n- 使用`@media`规则来定义媒体查询。\r\n- 常用的媒体特性包括设备宽度、设备高度、设备方向等。\r\n- 通过媒体查询，可以创建响应式的网页设计，为不同设备提供最佳的用户体验。\r\n\r\n以上是对CSS媒体查询的详细介绍和示例代码，希望能帮助你更好地理解和应用CSS媒体查询。","CSS媒体查询（Media Queries）是一种CSS技术，用于根据设备的特性和屏幕尺寸，为不同的设备或屏幕应用不同的样式。通过使用媒体查询，我们可以创建响应式的网页设计，使网页在不同设备上呈现出最佳的布局和样式。下面是对CSS媒体查询的详细介绍：\r\n\r\nCSS媒体查询（Media Queries）是一种CSS技术，用于根据设备的特性和屏幕尺寸，为不同的设备或屏幕应用不同的样式。通过使用媒体查询，我们可以创建响应式的网页设计，使网页在不同设备上呈现出最佳的布局和样式。下面是对CSS媒体查询的详细介绍：","https:\u002F\u002Fimg.qiqii.cn\u002Fcover\u002F11.webp",17,"2023-12-22 17:06:59","2025-02-04 14:19:50",{"id":90,"title":91,"content":92,"description":93,"coverImg":94,"state":14,"categoryId":22,"authorName":52,"views":81,"likes":8,"createTime":95,"updateTime":96,"deleted":14},10,"css flex布局","CSS Flex布局是一种强大而灵活的布局模型，它可以帮助我们轻松地创建响应式和可自适应的网页布局。Flex布局通过使用容器和项目之间的关系来实现灵活的布局。\r\n\r\n1. 容器属性：\r\n   - `display: flex;`：将一个元素标记为Flex容器。\r\n   - `flex-direction: row | row-reverse | column | column-reverse;`：设置Flex容器中项目的排列方向。\r\n   - `flex-wrap: nowrap | wrap | wrap-reverse;`：定义Flex容器中项目的换行方式。\r\n   - `justify-content: flex-start | flex-end | center | space-between | space-around | space-evenly;`：设置Flex容器中项目在主轴上的对齐方式。\r\n   - `align-items: flex-start | flex-end | center | baseline | stretch;`：定义Flex容器中项目在交叉轴上的对齐方式。\r\n   - `align-content: flex-start | flex-end | center | space-between | space-around | stretch;`：设置Flex容器中多行项目在交叉轴上的对齐方式。\r\n\r\n下面是一个示例代码，展示了如何应用Flex容器属性：\r\n\r\n```css\r\n.container {\r\n  display: flex;\r\n  flex-direction: row;\r\n  justify-content: center;\r\n  align-items: center;\r\n}\r\n```\r\n\r\n2. 项目属性：\r\n   - `order: \u003Cinteger>;`：定义项目的排列顺序。\r\n   - `flex-grow: \u003Cnumber>;`：设置项目的放大比例。\r\n   - `flex-shrink: \u003Cnumber>;`：设置项目的缩小比例。\r\n   - `flex-basis: \u003Clength> | auto;`：定义项目在主轴上的初始大小。\r\n   - `flex: none | [ \u003C'flex-grow'> \u003C'flex-shrink'>? || \u003C'flex-basis'> ];`：简写形式，用于设置`flex-grow`、`flex-shrink`和`flex-basis`的值。\r\n   - `align-self: auto | flex-start | flex-end | center | baseline | stretch;`：设置单个项目在交叉轴上的对齐方式。\r\n\r\n下面是一个示例代码，展示了如何应用Flex项目属性：\r\n\r\n```css\r\n.item {\r\n  order: 2;\r\n  flex-grow: 1;\r\n  flex-shrink: 0;\r\n  flex-basis: 200px;\r\n  align-self: center;\r\n}\r\n```\r\n\r\nFlex布局是一种强大的工具，可以轻松地创建各种布局。通过灵活地使用容器属性和项目属性，我们可以实现自适应、响应式的网页布局。无论是构建简单的导航栏还是复杂的网格系统，Flex布局都能提供出色的效果。\r\n\r\n总结：\r\n\r\n- 使用`display: flex;`将元素标记为Flex容器。\r\n- 使用容器属性如`flex-direction`、`justify-content`和`align-items`来控制Flex容器中项目的排列和对齐方式。\r\n- 使用项目属性如`order`、`flex-grow`和`flex-basis`来控制Flex项目的顺序和大小。\r\n- 可以通过简写形式`flex`来同时设置`flex-grow`、`flex-shrink`和`flex-basis`的值。\r\n- Flex布局是一种强大而灵活的布局模型，适用于各种网页布局需求。\r\n\r\n以上是对CSS Flex布局的简要介绍和示例代码。","CSS Flex布局是一种强大而灵活的布局模型，它可以帮助我们轻松地创建响应式和可自适应的网页布局。Flex布局通过使用容器和项目之间的关系来实现灵活的布局。","https:\u002F\u002Fimg.qiqii.cn\u002Fcover\u002F10.webp","2023-12-22 16:56:54","2025-05-17 20:18:34",{"id":98,"title":99,"content":100,"description":101,"coverImg":102,"state":14,"categoryId":22,"authorName":52,"views":103,"likes":8,"createTime":104,"updateTime":105,"deleted":14},9,"css定位","CSS定位是一种用于控制元素在网页中的位置和布局的技术。通过使用不同的定位属性和值，我们可以精确地定位元素在页面中的位置。下面是对CSS定位的详细介绍：\r\n\r\n1. 相对定位（Relative Positioning）：\r\n   - 相对定位是相对于元素在正常文档流中的位置进行定位。\r\n   - 使用`position: relative;`来设置相对定位。\r\n   - 可以通过设置`top`、`right`、`bottom`和`left`属性来调整元素相对于原始位置的偏移量。\r\n\r\n下面是一个示例代码，展示了如何应用相对定位：\r\n\r\n```css\r\n.relative-box {\r\n  position: relative;\r\n  top: 20px;\r\n  left: 30px;\r\n}\r\n```\r\n\r\n2. 绝对定位（Absolute Positioning）：\r\n   - 绝对定位是相对于最近的已定位祖先元素（如果没有已定位的祖先元素，则相对于初始包含块）进行定位。\r\n   - 使用`position: absolute;`来设置绝对定位。\r\n   - 可以通过设置`top`、`right`、`bottom`和`left`属性来指定元素相对于祖先元素的偏移量。\r\n\r\n下面是一个示例代码，展示了如何应用绝对定位：\r\n\r\n```css\r\n.absolute-box {\r\n  position: absolute;\r\n  top: 100px;\r\n  right: 50px;\r\n}\r\n```\r\n\r\n3. 固定定位（Fixed Positioning）：\r\n   - 固定定位是相对于浏览器窗口进行定位，元素的位置在滚动时不会改变。\r\n   - 使用`position: fixed;`来设置固定定位。\r\n   - 可以通过设置`top`、`right`、`bottom`和`left`属性来指定元素相对于浏览器窗口的偏移量。\r\n\r\n下面是一个示例代码，展示了如何应用固定定位：\r\n\r\n```css\r\n.fixed-box {\r\n  position: fixed;\r\n  top: 20px;\r\n  right: 20px;\r\n}\r\n```\r\n\r\n4. 粘性定位（Sticky Positioning）：\r\n   - 粘性定位是相对于其包含块的滚动容器进行定位，当元素滚动到特定位置时，会变为固定定位。\r\n   - 使用`position: sticky;`来设置粘性定位。\r\n   - 可以通过设置`top`、`right`、`bottom`和`left`属性来指定元素相对于包含块的偏移量。\r\n\r\n下面是一个示例代码，展示了如何应用粘性定位：\r\n\r\n```css\r\n.sticky-box {\r\n  position: sticky;\r\n  top: 50px;\r\n}\r\n```\r\n\r\nCSS定位是一种强大的工具，可以帮助我们实现各种复杂的布局效果。通过灵活地使用相对定位、绝对定位、固定定位和粘性定位，我们可以精确地控制元素在页面中的位置和行为。\r\n\r\n总结：\r\n\r\n- 相对定位使用`position: relative;`，相对于元素在正常文档流中的位置进行定位。\r\n- 绝对定位使用`position: absolute;`，相对于最近的已定位祖先元素进行定位。\r\n- 固定定位使用`position: fixed;`，相对于浏览器窗口进行定位。\r\n- 粘性定位使用`position: sticky;`，相对于其包含块的滚动容器进行定位。\r\n- 可以通过设置`top`、`right`、`bottom`和`left`属性来调整元素的偏移量。","CSS定位是一种用于控制元素在网页中的位置和布局的技术。通过使用不同的定位属性和值，我们可以精确地定位元素在页面中的位置。下面是对CSS定位的详细介绍：","https:\u002F\u002Fimg.qiqii.cn\u002Fcover\u002F9.webp",8,"2023-12-22 16:56:11","2025-03-30 09:47:35",{"id":103,"title":107,"content":108,"description":109,"coverImg":110,"state":14,"categoryId":22,"authorName":52,"views":25,"likes":8,"createTime":111,"updateTime":112,"deleted":14},"css浮动","CSS浮动（float）是一种布局技术，用于控制元素在网页中的位置和排列方式。通过使用浮动属性，我们可以使元素脱离正常文档流，并实现元素的左右浮动。下面是对CSS浮动的详细介绍：\r\n\r\n1. 浮动的基本概念：\r\n   - 使用`float`属性可以将元素浮动到其容器的左侧或右侧。\r\n   - 浮动元素会脱离正常文档流，其他元素会围绕浮动元素进行排列。\r\n   - 浮动元素可以使文本环绕在其周围，实现图文混排的效果。\r\n\r\n2. 浮动的属性值：\r\n   - `float: left;`：将元素向左浮动。\r\n   - `float: right;`：将元素向右浮动。\r\n   - `float: none;`（默认值）：取消元素的浮动。\r\n\r\n3. 清除浮动（Clearing Floats）：\r\n   - 当浮动元素后面的元素也需要脱离浮动的影响时，需要进行清除浮动。\r\n   - 可以使用`clear`属性来清除浮动。\r\n   - 常用的清除浮动方法包括：使用空的`div`元素和设置`clear: both;`。\r\n\r\n下面是一个示例代码，展示了如何应用浮动和清除浮动：\r\n\r\n```html\r\n\u003Cstyle>\r\n  .left-float {\r\n    float: left;\r\n    width: 200px;\r\n    height: 200px;\r\n    background-color: red;\r\n    margin-right: 20px;\r\n  }\r\n\r\n  .right-float {\r\n    float: right;\r\n    width: 200px;\r\n    height: 200px;\r\n    background-color: blue;\r\n    margin-left: 20px;\r\n  }\r\n\r\n  .clearfix::after {\r\n    content: \"\";\r\n    display: table;\r\n    clear: both;\r\n  }\r\n\u003C\u002Fstyle>\r\n\r\n\u003Cdiv class=\"left-float\">\u003C\u002Fdiv>\r\n\u003Cdiv class=\"right-float\">\u003C\u002Fdiv>\r\n\u003Cdiv class=\"clearfix\">\u003C\u002Fdiv>\r\n```\r\n\r\n在上面的代码中，我们创建了两个浮动元素，一个向左浮动（`.left-float`），一个向右浮动（`.right-float`）。它们具有指定的宽度、高度和背景颜色，并通过`margin`属性设置了间距。最后，我们使用一个具有`.clearfix`类的空`div`元素来清除浮动。\r\n\r\n通过浮动和清除浮动，我们可以实现多列布局、图文混排等复杂的网页布局效果。然而，需要注意的是，过度使用浮动可能会导致布局混乱，因此在使用浮动时要谨慎，并结合其他布局技术进行综合应用。\r\n\r\n总结：\r\n\r\n- 使用`float`属性可以将元素浮动到左侧或右侧。\r\n- 浮动元素会脱离正常文档流，其他元素会围绕浮动元素进行排列。\r\n- 可以使用`float: left;`和`float: right;`来设置元素的浮动方向。\r\n- 清除浮动可以使用`clear`属性，常用的清除浮动方法包括使用空的`div`元素和设置`clear: both;`。","CSS浮动（float）是一种布局技术，用于控制元素在网页中的位置和排列方式。通过使用浮动属性，我们可以使元素脱离正常文档流，并实现元素的左右浮动。下面是对CSS浮动的详细介绍：","https:\u002F\u002Fimg.qiqii.cn\u002Fcover\u002F8.webp","2023-12-22 16:55:09","2024-11-28 16:53:11",{"id":114,"title":115,"content":116,"description":117,"coverImg":118,"state":14,"categoryId":22,"authorName":52,"views":98,"likes":8,"createTime":119,"updateTime":120,"deleted":14},7,"css盒子模型","CSS盒子模型是网页布局中的一个基本概念，它描述了一个HTML元素在页面中所占据的空间。盒子模型由四个部分组成：内容区域、内边距、边框和外边距。下面是对CSS盒子模型的详细介绍：\r\n\r\n1. 内容区域（Content Area）：\r\n   - 内容区域是盒子模型的核心部分，它包含了元素的实际内容，比如文本、图像或其他子元素。\r\n   - 内容区域的大小可以通过设置`width`和`height`属性来指定。\r\n\r\n2. 内边距（Padding）：\r\n   - 内边距是内容区域与边框之间的空白区域，用于控制内容与边框之间的距离。\r\n   - 内边距可以通过设置`padding`属性来指定，也可以分别设置上、右、下、左四个方向的内边距，如`padding-top`、`padding-right`、`padding-bottom`和`padding-left`。\r\n\r\n3. 边框（Border）：\r\n   - 边框是包围内容和内边距的线条或样式，用于定义元素的边界。\r\n   - 边框可以通过设置`border`属性来指定，也可以分别设置边框的样式、宽度和颜色，如`border-style`、`border-width`和`border-color`。\r\n\r\n4. 外边距（Margin）：\r\n   - 外边距是盒子模型与其他元素之间的空白区域，用于控制元素与其他元素之间的距离。\r\n   - 外边距可以通过设置`margin`属性来指定，也可以分别设置上、右、下、左四个方向的外边距，如`margin-top`、`margin-right`、`margin-bottom`和`margin-left`。\r\n\r\n下面是一个示例代码，展示了如何应用盒子模型的属性：\r\n\r\n```css\r\n.box {\r\n  width: 200px;\r\n  height: 150px;\r\n  padding: 20px;\r\n  border: 1px solid #000;\r\n  margin: 10px;\r\n}\r\n```\r\n\r\n在上面的示例中，`.box`类表示一个具有固定宽度和高度的盒子。它具有20像素的内边距、1像素的实线边框和10像素的外边距。\r\n\r\n通过灵活地使用盒子模型的属性，我们可以精确地控制元素在页面中的布局和间距。它对于创建自适应和响应式的网页布局非常重要。\r\n\r\n总结：\r\n\r\n- 盒子模型由内容区域、内边距、边框和外边距组成。\r\n- 内容区域包含元素的实际内容，可以通过设置`width`和`height`来指定大小。\r\n- 内边距是内容区域与边框之间的空白区域，用于控制内容与边框之间的距离。\r\n- 边框是包围内容和内边距的线条或样式，用于定义元素的边界。\r\n- 外边距是盒子模型与其他元素之间的空白区域，用于控制元素与其他元素之间的距离。\r\n- 通过设置相应的属性，如`padding`、`border`和`margin`，可以调整盒子模型的各个部分。\r\n\r\n以上是对CSS盒子模型的简要介绍和示例代码，希望能帮助你更好地理解和应用盒子模型。","CSS盒子模型是网页布局中的一个基本概念，它描述了一个HTML元素在页面中所占据的空间。盒子模型由四个部分组成：内容区域、内边距、边框和外边距。下面是对CSS盒子模型的详细介绍：","https:\u002F\u002Fimg.qiqii.cn\u002Fcover\u002F7.webp","2023-12-22 16:53:53","2025-01-05 10:44:06",{"id":39,"title":122,"content":123,"description":124,"coverImg":125,"state":14,"categoryId":11,"authorName":52,"views":98,"likes":8,"createTime":126,"updateTime":127,"deleted":14},"linux常用命令","## ls命令\r\n\r\n功能：列出文件夹信息\r\n\r\n语法：`ls [-l -h -a] [参数]`\r\n\r\n- 参数：被查看的文件夹，不提供参数，表示查看当前工作目录\r\n- -l，以列表形式查看\r\n- -h，配合-l，以更加人性化的方式显示文件大小\r\n- -a，显示隐藏文件\r\n\r\n\r\n\r\n### 隐藏文件、文件夹\r\n\r\n在Linux中以`.`开头的，均是隐藏的。\r\n\r\n默认不显示出来，需要`-a`选项才可查看到。\r\n\r\n\r\n\r\n## pwd命令\r\n\r\n功能：展示当前工作目录\r\n\r\n语法：`pwd`\r\n\r\n\r\n\r\n## cd命令\r\n\r\n功能：切换工作目录\r\n\r\n语法：`cd [目标目录]`\r\n\r\n参数：目标目录，要切换去的地方，不提供默认切换到`当前登录用户HOME目录`\r\n\r\n\r\n\r\n## HOME目录\r\n\r\n每一个用户在Linux系统中都有自己的专属工作目录，称之为HOME目录。\r\n\r\n- 普通用户的HOME目录，默认在：`\u002Fhome\u002F用户名`\r\n\r\n- root用户的HOME目录，在：`\u002Froot`\r\n\r\n\r\n\r\nFinalShell登陆终端后，默认的工作目录就是用户的HOME目录\r\n\r\n\r\n\r\n## 相对路径、绝对路径\r\n\r\n- 相对路径，==非==`\u002F`开头的称之为相对路径\r\n\r\n  相对路径表示以`当前目录`作为起点，去描述路径，如`test\u002Fa.txt`，表示当前工作目录内的test文件夹内的a.txt文件\r\n\r\n- 绝对路径，==以==`\u002F`开头的称之为绝对路径\r\n\r\n  绝对路径从`根`开始描述路径\r\n\r\n\r\n\r\n## 特殊路径符\r\n\r\n- `.`，表示当前，比如.\u002Fa.txt，表示当前文件夹内的`a.txt`文件\r\n- `..`，表示上级目录，比如`..\u002F`表示上级目录，`..\u002F..\u002F`表示上级的上级目录\r\n- `~`，表示用户的HOME目录，比如`cd ~`，即可切回用户HOME目录\r\n\r\n\r\n\r\n## mkdir命令\r\n\r\n功能：创建文件夹\r\n\r\n语法：`mkdir [-p] 参数`\r\n\r\n- 参数：被创建文件夹的路径\r\n- 选项：-p，可选，表示创建前置路径\r\n\r\n\r\n\r\n## touch命令\r\n\r\n功能：创建文件\r\n\r\n语法：`touch 参数`\r\n\r\n- 参数：被创建的文件路径\r\n\r\n\r\n\r\n## cat命令\r\n\r\n功能：查看文件内容\r\n\r\n语法：`cat 参数`\r\n\r\n- 参数：被查看的文件路径\r\n\r\n\r\n\r\n## more命令\r\n\r\n功能：查看文件，可以支持翻页查看\r\n\r\n语法：`more 参数`\r\n\r\n- 参数：被查看的文件路径\r\n- 在查看过程中：\r\n  - `空格`键翻页\r\n  - `q`退出查看\r\n\r\n\r\n\r\n## cp命令\r\n\r\n功能：复制文件、文件夹\r\n\r\n语法：`cp [-r] 参数1 参数2`\r\n\r\n- 参数1，被复制的\r\n- 参数2，要复制去的地方\r\n- 选项：-r，可选，复制文件夹使用\r\n\r\n示例：\r\n\r\n- cp a.txt b.txt，复制当前目录下a.txt为b.txt\r\n- cp a.txt test\u002F，复制当前目录a.txt到test文件夹内\r\n- cp -r test test2，复制文件夹test到当前文件夹内为test2存在\r\n\r\n\r\n\r\n## mv命令\r\n\r\n功能：移动文件、文件夹\r\n\r\n语法：`mv 参数1 参数2`\r\n\r\n- 参数1：被移动的\r\n- 参数2：要移动去的地方，参数2如果不存在，则会进行改名\r\n\r\n\r\n\r\n## rm命令\r\n\r\n功能：删除文件、文件夹\r\n\r\n语法：`rm [-r -f] 参数...参数`\r\n\r\n- 参数：支持多个，每一个表示被删除的，空格进行分隔\r\n- 选项：-r，删除文件夹使用\r\n- 选项：-f，强制删除，不会给出确认提示，一般root用户会用到\r\n\r\n\r\n\r\n> rm命令很危险，一定要注意，特别是切换到root用户的时候。\r\n\r\n\r\n\r\n## which命令\r\n\r\n功能：查看命令的程序本体文件路径\r\n\r\n语法：`which 参数`\r\n\r\n- 参数：被查看的命令\r\n\r\n\r\n\r\n## find命令\r\n\r\n功能：搜索文件\r\n\r\n语法1按文件名搜索：`find 路径 -name 参数`\r\n\r\n- 路径，搜索的起始路径\r\n- 参数，搜索的关键字，支持通配符*， 比如：`*`test表示搜索任意以test结尾的文件\r\n\r\n\r\n\r\n## grep命令\r\n\r\n功能：过滤关键字\r\n\r\n语法：`grep [-n] 关键字 文件路径`\r\n\r\n- 选项-n，可选，表示在结果中显示匹配的行的行号。\r\n- 参数，关键字，必填，表示过滤的关键字，带有空格或其它特殊符号，建议使用””将关键字包围起来\r\n- 参数，文件路径，必填，表示要过滤内容的文件路径，可作为内容输入端口\r\n\r\n\r\n\r\n> 参数文件路径，可以作为管道符的输入\r\n\r\n\r\n\r\n## wc命令\r\n\r\n功能：统计\r\n\r\n语法：`wc [-c -m -l -w] 文件路径`\r\n\r\n- 选项，-c，统计bytes数量\r\n- 选项，-m，统计字符数量\r\n- 选项，-l，统计行数\r\n- 选项，-w，统计单词数量\r\n- 参数，文件路径，被统计的文件，可作为内容输入端口\r\n\r\n\r\n\r\n> 参数文件路径，可作为管道符的输入\r\n\r\n\r\n\r\n## 管道符|\r\n\r\n写法：`|`\r\n\r\n功能：将符号左边的结果，作为符号右边的输入\r\n\r\n示例：\r\n\r\n`cat a.txt | grep itheima`，将cat a.txt的结果，作为grep命令的输入，用来过滤`itheima`关键字\r\n\r\n\r\n\r\n可以支持嵌套：\r\n\r\n`cat a.txt | grep itheima | grep itcast`\r\n\r\n\r\n\r\n## echo命令\r\n\r\n功能：输出内容\r\n\r\n语法：`echo 参数`\r\n\r\n- 参数：被输出的内容\r\n\r\n\r\n\r\n## `反引号\r\n\r\n功能：被两个反引号包围的内容，会作为命令执行\r\n\r\n示例：\r\n\r\n- echo \\`pwd\\`，会输出当前工作目录\r\n\r\n\r\n\r\n## tail命令\r\n\r\n功能：查看文件尾部内容\r\n\r\n语法：`tail [-f] 参数`\r\n\r\n- 参数：被查看的文件\r\n- 选项：-f，持续跟踪文件修改\r\n\r\n\r\n\r\n## head命令\r\n\r\n功能：查看文件头部内容\r\n\r\n语法：`head [-n] 参数`\r\n\r\n- 参数：被查看的文件\r\n- 选项：-n，查看的行数\r\n\r\n\r\n\r\n## 重定向符\r\n\r\n功能：将符号左边的结果，输出到右边指定的文件中去\r\n\r\n- `>`，表示覆盖输出\r\n- `>>`，表示追加输出","一篇文章告诉你linux常用命令","https:\u002F\u002Fimg.qiqii.cn\u002Fcover\u002F6.webp","2023-12-16 13:15:27","2024-11-28 00:09:27",{"id":25,"title":129,"content":130,"description":131,"coverImg":132,"state":14,"categoryId":8,"authorName":52,"views":25,"likes":8,"createTime":133,"updateTime":134,"deleted":14},"前端”三剑客“之javascript","JavaScript作为前端开发中的重要一环，扮演着前端三剑客中的一员，负责网页交互和动态效果的实现。本文将详细介绍JavaScript的重要性、基本语法、DOM操作、事件处理、以及现代前端开发中的一些新特性。\r\n\r\n### 1. JavaScript的重要性\r\n\r\nJavaScript是一种高级的、解释型的、轻量级的编程语言，它使得网页具有丰富的交互性和动态效果。它的重要性体现在以下几个方面：\r\n\r\n- 实现网页动态效果\r\n- 处理用户输入\r\n- 与后端进行数据交互\r\n\r\n### 2. 基本语法\r\n\r\nJavaScript的基本语法包括变量、数据类型、运算符、流程控制语句等等。以下是一些基本语法的示例：\r\n\r\n```javascript\r\n\u002F\u002F 定义变量并赋值\r\nlet message = \"Hello, world!\";\r\n\r\n\u002F\u002F 控制台输出\r\nconsole.log(message);\r\n\r\n\u002F\u002F 条件语句\r\nif (condition) {\r\n  \u002F\u002F do something\r\n} else {\r\n  \u002F\u002F do something else\r\n}\r\n\r\n\u002F\u002F 循环语句\r\nfor (let i = 0; i \u003C 5; i++) {\r\n  \u002F\u002F do something repeatedly\r\n}\r\n```\r\n\r\n### 3. DOM操作\r\n\r\nDOM（文档对象模型）是JavaScript操作网页的接口，通过它可以实现对网页元素的增删改查。以下是一个简单的DOM操作示例：\r\n\r\n```html\r\n\u003C!DOCTYPE html>\r\n\u003Chtml>\r\n\u003Cbody>\r\n\r\n\u003Ch1 id=\"myHeading\">Hello, world!\u003C\u002Fh1>\r\n\r\n\u003Cscript>\r\n  \u002F\u002F 获取元素并修改内容\r\n  let heading = document.getElementById('myHeading');\r\n  heading.innerHTML = 'Hello, JavaScript!';\r\n\u003C\u002Fscript>\r\n\r\n\u003C\u002Fbody>\r\n\u003C\u002Fhtml>\r\n```\r\n\r\n### 4. 事件处理\r\n\r\nJavaScript可以通过事件来响应用户的操作，比如点击、鼠标移动等。以下是一个简单的事件处理示例：\r\n\r\n```html\r\n\u003C!DOCTYPE html>\r\n\u003Chtml>\r\n\u003Cbody>\r\n\r\n\u003Cbutton id=\"myButton\">Click me\u003C\u002Fbutton>\r\n\r\n\u003Cscript>\r\n  \u002F\u002F 添加点击事件处理\r\n  document.getElementById('myButton').addEventListener('click', function() {\r\n    alert('Button clicked!');\r\n  });\r\n\u003C\u002Fscript>\r\n\r\n\u003C\u002Fbody>\r\n\u003C\u002Fhtml>\r\n```\r\n\r\n### 5. 现代前端开发中的新特性\r\n\r\n随着前端技术的不断发展，JavaScript也在不断演进，出现了许多新的特性，如ES6的箭头函数、模板字符串、解构赋值等，以及ES7、ES8等版本带来的新特性。这些新特性使得JavaScript更加强大和便捷，极大地提高了开发效率。\r\n\r\n以上是JavaScript作为前端三剑客之一的重要性、基本语法、DOM操作、事件处理以及现代前端开发中的一些新特性的详细介绍。希望通过本文的阐述，读者能对JavaScript有一个更加全面的了解，为日后的前端开发之路打下坚实的基础。","JavaScript作为前端开发中的重要一环，扮演着前端三剑客中的一员，负责网页交互和动态效果的实现。本文将详细介绍JavaScript的重要性、基本语法、DOM操作、事件处理、以及现代前端开发中的一些新特性。","https:\u002F\u002Fimg.qiqii.cn\u002Fcover\u002F5.webp","2023-12-09 19:55:35","2023-12-10 10:20:35",{"id":11,"title":136,"content":137,"description":138,"coverImg":139,"state":14,"categoryId":8,"authorName":52,"views":140,"likes":22,"createTime":141,"updateTime":142,"deleted":14},"前端”三剑客“之css","在前端开发中，CSS（Cascading Style Sheets）作为前端开发的三大核心技术之一，扮演着关键的角色。它负责网页的样式和布局，决定了用户界面的外观和感觉。本文将深入探讨 CSS 的各个方面，包括选择器、布局、动画等，带你领略前端三剑客之一的魅力。\r\n\r\n### 1. 选择器\r\n\r\n选择器是 CSS 中最基本的部分，它允许你根据元素的类型、类、ID 等属性来选择元素并对其应用样式。常见的选择器包括：\r\n\r\n- **元素选择器：** 通过元素名称选择元素，例如 `p` 选择所有段落元素。\r\n\r\n  ```css\r\n  p {\r\n    color: blue;\r\n  }\r\n  ```\r\n\r\n- **类选择器：** 通过类名选择元素，例如 `.highlight` 选择所有具有 `highlight` 类的元素。\r\n\r\n  ```css\r\n  .highlight {\r\n    background-color: yellow;\r\n  }\r\n  ```\r\n\r\n- **ID 选择器：** 通过元素的 ID 属性选择元素，例如 `#header` 选择具有 `header` ID 的元素。\r\n\r\n  ```css\r\n  #header {\r\n    font-size: 24px;\r\n  }\r\n  ```\r\n\r\n### 2. 布局\r\n\r\n在网页开发中，布局是至关重要的一部分。CSS 提供了多种方式来实现网页布局，包括：\r\n\r\n- **盒模型：** 每个 HTML 元素都被看作一个矩形的盒子，盒模型包括内容、内边距、边框和外边距。\r\n\r\n  ```css\r\n  .box {\r\n    width: 200px;\r\n    padding: 20px;\r\n    border: 1px solid #000;\r\n    margin: 10px;\r\n  }\r\n  ```\r\n\r\n- **Flexbox 布局：** 弹性盒子布局是一种一维布局模型，可以简单而有效地对齐、排列和分配空间。\r\n\r\n  ```css\r\n  .container {\r\n    display: flex;\r\n    justify-content: space-between;\r\n  }\r\n  ```\r\n\r\n- **Grid 布局：** 网格布局是一个二维布局系统，可以定义行和列，使得网页的布局更加灵活。\r\n\r\n  ```css\r\n  .container {\r\n    display: grid;\r\n    grid-template-columns: 100px 100px 100px;\r\n    grid-gap: 10px;\r\n  }\r\n  ```\r\n\r\n### 3. 动画\r\n\r\nCSS 也可以用来创建动画效果，使得网页更加生动和吸引人。常见的动画技术包括：\r\n\r\n- **过渡效果：** 通过 `transition` 属性可以实现元素从一种样式逐渐变为另一种样式的效果。\r\n\r\n  ```css\r\n  .box {\r\n    width: 100px;\r\n    height: 100px;\r\n    background-color: red;\r\n    transition: width 2s, height 2s, background-color 2s;\r\n  }\r\n  .box:hover {\r\n    width: 200px;\r\n    height: 200px;\r\n    background-color: blue;\r\n  }\r\n  ```\r\n\r\n- **关键帧动画：** 使用 `@keyframes` 关键帧规则可以定义动画序列中的关键帧。\r\n\r\n  ```css\r\n  @keyframes move {\r\n    0% { left: 0; }\r\n    50% { left: 200px; }\r\n    100% { left: 0; }\r\n  }\r\n  .box {\r\n    position: relative;\r\n    animation: move 2s infinite;\r\n  }\r\n  ```\r\n\r\n### 结语\r\n\r\nCSS 作为前端开发的重要组成部分，为我们提供了丰富的样式和布局手段，同时也能够实现丰富多彩的动画效果。通过灵活运用各种选择器、布局方式和动画技术，我们能够打造出精美、交互丰富的网页界面，为用户提供更好的浏览体验。希望本文对你理解 CSS 的重要性和强大功能有所帮助！","在前端开发中，CSS（Cascading Style Sheets）作为前端开发的三大核心技术之一，扮演着关键的角色。它负责网页的样式和布局，决定了用户界面的外观和感觉。本文将深入探讨 CSS 的各个方面，包括选择器、布局、动画等，带你领略前端三剑客之一的魅力。","https:\u002F\u002Fimg.qiqii.cn\u002Fcover\u002F4.webp",16,"2023-12-09 19:52:43","2024-11-28 17:00:10",{"id":22,"title":144,"content":145,"description":146,"coverImg":147,"state":14,"categoryId":8,"authorName":52,"views":148,"likes":16,"createTime":149,"updateTime":150,"deleted":14},"前端”三剑客“之html","在前端开发中，HTML（HyperText Markup Language）作为构建网页结构的基础语言，扮演着至关重要的角色。它是前端开发的三剑客之一，与CSS和JavaScript共同构成了Web前端开发的核心。本文将深入探讨HTML的重要性，结构及其关键特性。\r\n\r\n### 1. HTML的重要性\r\n\r\nHTML是网页的基础，它定义了网页的结构和内容。通过使用HTML，开发者可以创建各种各样的网页，从简单的文本页面到复杂的多媒体交互页面。HTML的结构清晰，易于理解，是构建网页的必备工具。\r\n\r\n### 2. HTML的基本结构\r\n\r\nHTML文档由以下基本结构组成：\r\n\r\n```html\r\n\u003C!DOCTYPE html>\r\n\u003Chtml>\r\n\u003Chead>\r\n    \u003Ctitle>页面标题\u003C\u002Ftitle>\r\n\u003C\u002Fhead>\r\n\u003Cbody>\r\n    \u003C!-- 页面内容 -->\r\n\u003C\u002Fbody>\r\n\u003C\u002Fhtml>\r\n```\r\n\r\n- `\u003C!DOCTYPE html>`：声明文档类型，告诉浏览器使用HTML5进行解析。\r\n- `\u003Chtml>`：HTML文档的根元素，包裹整个页面内容。\r\n- `\u003Chead>`：包含了页面的元信息，如标题、引入的外部资源等。\r\n- `\u003Ctitle>`：定义网页的标题，显示在浏览器的标题栏或标签页上。\r\n- `\u003Cbody>`：包含了可见的页面内容。\r\n\r\n### 3. HTML的常用标签\r\n\r\nHTML提供了丰富的标签来定义页面结构和内容，其中一些常用的标签包括：\r\n\r\n- `\u003Ch1>` - `\u003Ch6>`：定义标题，数字表示标题的级别，从大到小依次递减。\r\n- `\u003Cp>`：定义段落。\r\n- `\u003Ca>`：定义超链接。\r\n- `\u003Cimg>`：插入图像。\r\n- `\u003Cul>` 和 `\u003Col>`：定义无序列表和有序列表。\r\n- `\u003Cli>`：定义列表中的项目。\r\n- `\u003Cdiv>` 和 `\u003Cspan>`：用于组织页面结构和样式。\r\n\r\n示例：\r\n\r\n```html\r\n\u003Ch1>这是一个标题\u003C\u002Fh1>\r\n\u003Cp>这是一个段落。\u003C\u002Fp>\r\n\u003Ca href=\"https:\u002F\u002Fwww.example.com\">这是一个链接\u003C\u002Fa>\r\n\u003Cimg src=\"image.jpg\" alt=\"图片描述\">\r\n\u003Cul>\r\n    \u003Cli>列表项1\u003C\u002Fli>\r\n    \u003Cli>列表项2\u003C\u002Fli>\r\n\u003C\u002Ful>\r\n\u003Cdiv>这是一个div\u003C\u002Fdiv>\r\n\u003Cspan>这是一个span\u003C\u002Fspan>\r\n```\r\n\r\n### 4. HTML的表单元素\r\n\r\nHTML提供了丰富的表单元素，用于用户输入和提交数据。常见的表单元素包括：\r\n\r\n- `\u003Cform>`：定义表单。\r\n- `\u003Cinput>`：用于输入框、单选框、复选框等。\r\n- `\u003Ctextarea>`：用于多行文本输入。\r\n- `\u003Cselect>` 和 `\u003Coption>`：用于下拉菜单选择。\r\n\r\n示例：\r\n\r\n```html\r\n\u003Cform action=\"\u002Fsubmit-form\" method=\"post\">\r\n    \u003Clabel for=\"username\">用户名：\u003C\u002Flabel>\r\n    \u003Cinput type=\"text\" id=\"username\" name=\"username\">\r\n    \u003Clabel for=\"password\">密码：\u003C\u002Flabel>\r\n    \u003Cinput type=\"password\" id=\"password\" name=\"password\">\r\n    \u003Cinput type=\"submit\" value=\"提交\">\r\n\u003C\u002Fform>\r\n```\r\n\r\n### 5. HTML的语义化标签\r\n\r\nHTML5引入了许多语义化的标签，用于更好地描述页面内容的含义，提高页面的可访问性和搜索引擎优化。\r\n\r\n- `\u003Cheader>`：定义页面或区块的页眉。\r\n- `\u003Cnav>`：定义页面的导航链接部分。\r\n- `\u003Cmain>`：定义页面的主要内容。\r\n- `\u003Csection>`：定义文档中的节（section）。\r\n- `\u003Carticle>`：定义页面中独立的文章内容。\r\n- `\u003Cfooter>`：定义页面或区块的页脚。\r\n\r\n这些标签使页面结构更清晰，有助于开发者和浏览器更好地理解页面内容。\r\n\r\n### 结语\r\n\r\nHTML作为前端开发的重要组成部分，为构建现代Web页面提供了强大的基础。通过合理运用HTML的结构、标签和元素，开发者可以打造出功能丰富、结构清晰的网页，为用户提供更好的浏览体验。掌握HTML，是每位前端开发者的基本功之一。","在前端开发中，HTML（HyperText Markup Language）作为构建网页结构的基础语言，扮演着至关重要的角色。它是前端开发的三剑客之一，与CSS和JavaScript共同构成了Web前端开发的核心。本文将深入探讨HTML的重要性，结构及其关键特性。","https:\u002F\u002Fimg.qiqii.cn\u002Fcover\u002F3.webp",18,"2023-12-09 19:29:42","2024-11-28 15:14:04",{"id":16,"title":152,"content":153,"description":154,"coverImg":155,"state":14,"categoryId":16,"authorName":52,"views":148,"likes":11,"createTime":156,"updateTime":157,"deleted":14},"python必备基础知识","Python作为一种易学易用的编程语言，受到了广泛的欢迎。它适用于各种领域，包括Web开发、数据科学、人工智能等。如果对Python感兴趣，或者想要学习编程，那么这篇文章将提供Python入门所需的基础知识和技能。\r\n\r\n### 1. Python的基本概念\r\n\r\nPython是一种高级编程语言，它具有简洁而清晰的语法，使得代码易于阅读和编写。学习Python的第一步是理解以下几个基本概念：\r\n\r\n- **易读易学**：Python的语法设计简洁，使用空白符而不是大括号来组织代码块，这使得代码更具可读性。\r\n- **解释型语言**：Python是一种解释型语言，这意味着你可以直接运行代码而无需预先编译。\r\n- **面向对象**：Python支持面向对象编程，但也可以以函数式或过程式方式编写代码。\r\n\r\n### 2. Python开发环境的搭建\r\n\r\n在开始学习Python之前，需要先搭建好Python的开发环境。通常情况下，你需要安装Python解释器和一个文本编辑器或集成开发环境（IDE）。以下是搭建Python开发环境的简要步骤：\r\n\r\n- **安装Python**：从Python官网下载并安装最新版本的Python解释器。\r\n- **选择编辑器或IDE**：可以选择Sublime Text、PyCharm、VS Code等作为编辑器或IDE，根据个人喜好进行安装和配置。\r\n\r\n### 3. 第一个Python程序\r\n\r\n现在，让我们来编写你的第一个Python程序，一个经典的“Hello, World!”程序。在你的编辑器中创建一个新的Python文件，然后输入以下代码：\r\n\r\n```python\r\nprint(\"Hello, World!\")\r\n```\r\n\r\n这行简单的代码就足以输出“Hello, World!”到控制台。\r\n\r\n### 4. 基本语法和数据类型\r\n\r\n学习任何编程语言，都离不开对其基本语法和数据类型的了解。Python的基本语法包括变量声明、条件语句、循环语句等，而数据类型则包括整型、浮点型、字符串、列表、元组、字典等。以下是一个简单的示例：\r\n\r\n```python\r\nnum1 = 10\r\nnum2 = 5.5\r\nname = \"Alice\"\r\nmy_list = [1, 2, 3, 4, 5]\r\nmy_dict = {'a': 1, 'b': 2, 'c': 3}\r\n```\r\n\r\n### 5. 控制流和循环结构\r\n\r\nPython提供了丰富的控制流和循环结构，包括if-else语句、while循环、for循环等。下面是一个简单的例子：\r\n\r\n```python\r\nnum = 10\r\nif num > 0:\r\n    print(\"Number is positive\")\r\nelif num \u003C 0:\r\n    print(\"Number is negative\")\r\nelse:\r\n    print(\"Number is zero\")\r\n```\r\n\r\n### 6. 函数和模块\r\n\r\n在Python中，函数是一组用来完成特定任务的语句，而模块则是包含了函数和变量的Python文件。以下是一个简单的函数示例：\r\n\r\n```python\r\ndef add(a, b):\r\n    return a + b\r\n```\r\n\r\n### 7. 类和对象\r\n\r\nPython同样支持面向对象编程。类是对象的蓝图，它定义了对象的属性和行为。对象则是类的实例。以下是一个简单的类和对象的示例：\r\n\r\n```python\r\nclass Car:\r\n    def __init__(self, brand, color):\r\n        self.brand = brand\r\n        self.color = color\r\n\r\n    def start(self):\r\n        print(\"The car is starting.\")\r\n```\r\n\r\n### 结语\r\n\r\n通过本文的介绍，已经初步了解了Python的基本概念、开发环境搭建、基本语法和面向对象编程等内容。当然，Python作为一门功能强大的编程语言，还有很多其他重要的知识点和特性等待你去探索和学习。希望本文能够帮助建立起对Python编程的基础认识，为你在学习Python的道路上提供一些帮助。\r\n\r\n","Python作为一种易学易用的编程语言，受到了广泛的欢迎。它适用于各种领域，包括Web开发、数据科学、人工智能等。如果对Python感兴趣，或者想要学习编程，那么这篇文章将提供Python入门所需的基础知识和技能。","https:\u002F\u002Fimg.qiqii.cn\u002Fcover\u002F2.webp","2023-12-22 09:18:42","2024-12-03 17:19:27",{"id":8,"title":159,"content":160,"description":161,"coverImg":162,"state":14,"categoryId":8,"authorName":52,"views":163,"likes":11,"createTime":164,"updateTime":165,"deleted":14},"java入门，看这篇文章就够了","作为一门广泛应用的编程语言，Java在软件开发领域有着重要的地位。无论是在大型企业级应用、移动应用开发还是嵌入式系统中，Java都有着广泛的应用。如果对Java感兴趣，或者想要学习编程，那么这篇文章将提供Java入门所需的基础知识和技能。\r\n\r\n### 1. Java的基本概念\r\n\r\nJava是一种面向对象的编程语言，它具有平台无关性和强大的跨平台能力。Java程序可以在不同的操作系统上运行，这得益于Java虚拟机（JVM）的存在。学习Java的第一步是理解以下几个基本概念：\r\n\r\n- **面向对象编程**：Java是一种面向对象的编程语言，它的核心思想是将现实世界的事物抽象成对象，通过对象之间的交互来实现程序的逻辑。\r\n- **JVM和跨平台性**：Java程序在编译后并不直接变成机器码，而是变成字节码，这些字节码可以在任何安装了JVM的平台上运行。\r\n- **Java标准库**：Java拥有丰富的标准库，提供了大量的类和方法，可以帮助开发者快速实现各种功能。\r\n\r\n### 2. Java开发环境的搭建\r\n\r\n在开始学习Java之前，需要先搭建好Java的开发环境。通常情况下，你需要安装Java Development Kit（JDK）和一个集成开发环境（IDE），比如Eclipse、IntelliJ IDEA或者NetBeans。以下是搭建Java开发环境的简要步骤：\r\n\r\n- **安装JDK**：从Oracle官网下载并安装最新版本的JDK，安装完成后设置系统环境变量。\r\n- **安装IDE**：选择一个你喜欢的IDE，按照其官方指南进行安装和配置。\r\n\r\n### 3. 第一个Java程序\r\n\r\n现在，让我们来编写你的第一个Java程序，一个经典的“Hello, World!”程序。在你的IDE中创建一个新的Java项目，然后创建一个名为HelloWorld的类，代码如下：\r\n\r\n```java\r\npublic class HelloWorld {\r\n    public static void main(String[] args) {\r\n        System.out.println(\"Hello, World!\");\r\n    }\r\n}\r\n```\r\n\r\n在这段代码中，我们定义了一个名为HelloWorld的类，其中包含了一个名为main的方法。在main方法中，我们使用System.out.println输出了一行文本。\r\n\r\n### 4. 基本语法和数据类型\r\n\r\n学习任何编程语言，都离不开对其基本语法和数据类型的了解。Java的基本语法包括变量声明、条件语句、循环语句等，而数据类型则包括整型、浮点型、字符型、布尔型等。以下是一个简单的示例：\r\n\r\n```java\r\nint num1 = 10;\r\ndouble num2 = 5.5;\r\nchar letter = 'A';\r\nboolean isTrue = true;\r\n```\r\n\r\n### 5. 控制流和循环结构\r\n\r\n控制流和循环结构是编写程序时必不可少的部分，它们用于控制程序的执行流程。Java提供了if-else语句、switch语句以及for、while、do-while等循环结构。下面是一个简单的例子：\r\n\r\n```java\r\nint num = 10;\r\nif (num > 0) {\r\n    System.out.println(\"Number is positive\");\r\n} else if (num \u003C 0) {\r\n    System.out.println(\"Number is negative\");\r\n} else {\r\n    System.out.println(\"Number is zero\");\r\n}\r\n```\r\n\r\n### 6. 函数和方法\r\n\r\n在Java中，函数被称为方法。方法是用来执行特定任务的一组语句，它可以接受参数并返回一个值。以下是一个简单的方法示例：\r\n\r\n```java\r\npublic static int add(int a, int b) {\r\n    return a + b;\r\n}\r\n```\r\n\r\n### 7. 类和对象\r\n\r\n面向对象编程是Java的核心特性之一，因此理解类和对象的概念至关重要。类是对象的模板，它定义了对象的属性和行为。对象则是类的实例。以下是一个简单的类和对象的示例：\r\n\r\n```java\r\npublic class Car {\r\n    String brand;\r\n    String color;\r\n\r\n    void start() {\r\n        System.out.println(\"The car is starting.\");\r\n    }\r\n}\r\n```\r\n\r\n### 结语\r\n\r\n通过本文的介绍，可以初步了解了Java的基本概念、开发环境搭建、基本语法和面向对象编程等内容。当然，Java作为一门功能强大的编程语言，还有很多其他重要的知识点和特性等待我们去探索和学习。希望本文能够帮助建立起对Java编程的基础认识，为学习Java的道路上提供一些帮助。","作为一门广泛应用的编程语言，Java在软件开发领域有着重要的地位。无论是在大型企业级应用、移动应用开发还是嵌入式系统中，Java都有着广泛的应用。如果对Java感兴趣，或者想要学习编程，那么这篇文章将提供Java入门所需的基础知识和技能。","https:\u002F\u002Fimg.qiqii.cn\u002Fcover\u002F1.webp",66,"2023-12-22 08:47:47","2025-05-16 16:08:06",100,{"code":4,"msg":5,"data":168},{"records":169,"total":47,"size":25,"current":8,"pages":22},[170,171,172,173,174],{"id":47,"title":48,"content":49,"description":50,"coverImg":51,"state":14,"categoryId":11,"authorName":52,"views":14,"likes":14,"createTime":53,"updateTime":53,"deleted":14},{"id":55,"title":56,"content":57,"description":58,"coverImg":59,"state":14,"categoryId":8,"authorName":52,"views":8,"likes":14,"createTime":60,"updateTime":61,"deleted":14},{"id":63,"title":64,"content":65,"description":66,"coverImg":67,"state":14,"categoryId":25,"authorName":52,"views":68,"likes":14,"createTime":69,"updateTime":70,"deleted":14},{"id":72,"title":73,"content":74,"description":75,"coverImg":76,"state":14,"categoryId":11,"authorName":52,"views":77,"likes":14,"createTime":78,"updateTime":79,"deleted":14},{"id":81,"title":82,"content":83,"description":84,"coverImg":85,"state":14,"categoryId":22,"authorName":52,"views":86,"likes":8,"createTime":87,"updateTime":88,"deleted":14},1789441954048]