📁 "教程" 分类下的文章
-
C# 快速入门指南
📅 2025-09-13 | 📝 2 分钟阅读
C# 快速入门指南
先了解 C# 语言
C#(读作 “C Sharp”)是由微软开发的一种现代、类型安全、面向对象的编程语言,最初发布于 2000 年,运行在 .NET 平台上。
它融合了 C++ 的强大性能与 Java 的简洁语法,并不断进化,支持:
- 面向对象编程(OOP)
- 异步编程(async/await)
- 函数式特性(LINQ、Lambda)
- 跨平台开发(.NET 5+ 支持 Windows、Linux、macOS)
- Web(ASP.NET Core)、桌面(WPF、WinForms)、移动(MAUI)、游戏(Unity)等多领域开发
C# 语法清晰、工具强大(Visual Studio / VS Code)、生态丰富,是企业级开发和现代应用的首选语言之一。
无论你是想开发 Web API、后台服务,还是桌面程序,C# 都是一个高效且可靠的 choice。
一个完整的 C# 控制台应用
using System; using System.Collections.Generic; using System.Linq; using System.Net.Http; using System.Threading.Tasks; // 主程序入口(.NET 6+ 单文件模式) await Main(); async Task Main() { Console.WriteLine("=== 欢迎使用 C# 快速入门示例 ===\n"); // 1. 基础变量与字符串插值 string name = "Alice"; int age = 25; bool isDeveloper = true; Console.WriteLine($"姓名: {name}, 年龄: {age}, 开发者: {isDeveloper}"); // 2. 条件判断 if (age >= 18) Console.WriteLine("✅ 成年人"); else Console.WriteLine("⚠️ 未成年人"); // 3. 循环遍历 List<string> hobbies = new() { "编程", "阅读", "跑步" }; Console.WriteLine("\n兴趣爱好:"); for (int i = 0; i < hobbies.Count; i++) { Console.WriteLine($" {i + 1}. {hobbies[i]}"); } // 4. 使用 LINQ 查询(函数式风格) var longHobbies = hobbies.Where(h => h.Length > 2).ToList(); Console.WriteLine("\n长度大于2的兴趣:"); longHobbies.ForEach(h => Console.WriteLine($" • {h}")); // 5. 定义并使用类(面向对象) var person = new Person("Bob", 30); person.Greet(); // 6. 异步获取网络数据(模拟 API 调用) Console.WriteLine("\n正在获取数据..."); string data = await FetchDataAsync(); Console.WriteLine($"✅ 数据长度: {data.Length} 字符"); // 7. 自定义工具类:简易配置管理 var config = new ConfigHelper(); config.Set("AppVersion", "1.0.0"); config.Set("MaxRetries", "3"); string version = config.Get("AppVersion", "unknown"); int retries = config.Get("MaxRetries", 1); Console.WriteLine($"\n配置信息:"); Console.WriteLine($" 版本: {version}"); Console.WriteLine($" 最大重试次数: {retries}"); Console.WriteLine("\n=== 程序执行完成 ==="); } // 自定义类:表示一个人 public class Person { public string Name { get; set; } public int Age { get; set; } public Person(string name, int age) { Name = name; Age = age; } public void Greet() => Console.WriteLine($"👋 大家好,我是 {Name},今年 {Age} 岁。"); } // 自定义工具类:简易配置管理器 public class ConfigHelper { private readonly Dictionary<string, string> _values = new(); public void Set(string key, string value) => _values[key] = value; public string Get(string key, string defaultValue = "") => _values.GetValueOrDefault(key, defaultValue); public T Get<T>(string key, T defaultValue) { var value = _values.GetValueOrDefault(key, null); return value == null ? defaultValue : (T)Convert.ChangeType(value, typeof(T)); } } // 异步方法:从 HTTP 接口获取数据 public static async Task<string> FetchDataAsync() { using var client = new HttpClient(); client.Timeout = TimeSpan.FromSeconds(10); return await client.GetStringAsync("https://httpbin.org/json"); }
-
Docker 快速入门指南
📅 2025-09-13 | 📝 2 分钟阅读
Docker 快速入门指南
先了解 Docker
Docker 是一个开源的容器化平台,它允许你将应用程序及其依赖(如库、配置、环境变量)打包成一个轻量级、可移植的“容器”,并在任何支持 Docker 的环境中运行。
传统部署中,我们常遇到:“在我机器上能跑!”的问题。
而 Docker 通过隔离环境,彻底解决了“开发环境 vs 生产环境不一致”的痛点。核心概念
- 镜像(Image):一个只读模板,包含运行应用所需的一切(如
nginx:latest
)。 - 容器(Container):镜像的运行实例,可以启动、停止、删除(如一个正在运行的 Nginx 服务)。
- Dockerfile:一个文本文件,定义如何构建镜像(类似“配方”)。
- Docker Compose:用于定义和运行多容器应用(如 Web + DB + Cache)。
- Registry:镜像仓库,如 Docker Hub,可上传/下载镜像。
为什么使用 Docker?
- ✅ 环境一致性:一次构建,到处运行
- ✅ 快速部署:秒级启动容器
- ✅ 资源高效:比虚拟机更轻量,共享宿主机内核
- ✅ 微服务友好:每个服务一个容器,独立部署
- ✅ CI/CD 集成:与 Jenkins、GitHub Actions 等无缝协作
Docker 已成为现代云原生开发的基础设施标准。
常用 Docker 命令合集(实战速查)
# 1. 镜像操作 docker images # 查看本地所有镜像 docker pull nginx:latest # 从 Docker Hub 拉取镜像 docker build -t myapp:1.0 . # 使用当前目录 Dockerfile 构建镜像 docker rmi myapp:1.0 # 删除指定镜像 docker rmi $(docker images -q) # 删除所有本地镜像(慎用!) # 2. 容器操作 docker run -d --name web -p 8080:80 nginx:latest # 启动容器(后台模式,端口映射) docker run -it ubuntu:20.04 /bin/bash # 启动并进入容器(交互模式) docker stop web # 停止容器 docker start web # 启动已停止的容器 docker restart web # 重启容器 docker rm web # 删除容器 docker rm $(docker ps -aq) # 删除所有容器(慎用!) # 3. 查看状态 docker ps # 查看正在运行的容器 docker ps -a # 查看所有容器(包括已停止) docker logs web # 查看容器日志 docker logs -f web # 实时跟踪日志(类似 tail -f) docker exec -it web /bin/bash # 进入正在运行的容器 docker inspect web # 查看容器详细信息(IP、挂载等) # 4. 数据卷(持久化数据) docker volume create app-data # 创建命名卷 docker run -d -v app-data:/app/data myapp:1.0 # 挂载卷到容器 docker volume ls # 列出所有卷 docker volume rm app-data # 删除卷 # 5. 网络 docker network create app-net # 创建自定义网络 docker run -d --network app-net --name db mongo # 容器加入网络 docker network ls # 查看网络 docker network inspect app-net # 查看网络详情 # 6. Docker Compose(多容器应用) # 创建 docker-compose.yml 后使用: docker-compose up -d # 启动所有服务(后台) docker-compose down # 停止并删除所有服务 docker-compose logs -f # 查看所有服务日志 docker-compose build # 重新构建服务镜像 # 7. 清理资源(释放磁盘空间) docker system prune # 清理未使用的容器、网络、镜像、构建缓存 docker system prune -a # 清理所有未使用的资源(更彻底) docker volume prune # 删除未使用的卷
- 镜像(Image):一个只读模板,包含运行应用所需的一切(如
-
HTML & CSS 极简入门
📅 2025-09-13 | 📝 1 分钟阅读
HTML & CSS 极简入门
先了解 HTML 与 CSS
- HTML 是网页的结构:用标签定义标题、段落、按钮等内容。
- CSS 是网页的样式:控制颜色、字体、布局和动画。
它们是所有网页开发的起点,无需复杂工具,用浏览器即可查看效果。
学会它们,你就能创建自己的第一个网页!精简代码:一个漂亮的居中卡片
<!DOCTYPE html> <html> <head> <style> body { margin: 0; height: 100vh; display: flex; justify-content: center; align-items: center; font-family: Arial, sans-serif; background: #e3f2fd; } .card { width: 300px; padding: 30px; background: white; border-radius: 12px; box-shadow: 0 4px 12px rgba(0,0,0,0.1); text-align: center; } h2 { color: #1976d2; margin-bottom: 10px; } p { color: #555; font-size: 14px; } .btn { display: inline-block; padding: 8px 16px; margin-top: 15px; background: #1976d2; color: white; text-decoration: none; border-radius: 4px; } </style> </head> <body> <div class="card"> <h2>你好,世界!</h2> <p>这是一个用 HTML 和 CSS 创建的简单卡片。</p> <a href="#" class="btn">点击试试</a> </div> </body> </html>
-
Java 面向对象指南
📅 2025-09-13 | 📝 1 分钟阅读
Java 面向对象指南
先了解 Java 与面向对象
Java 是一门纯面向对象的语言,程序通过“类”和“对象”建模现实世界。
OOP 四大特性:
- 封装:隐藏数据,用
private
+getter/setter
- 继承:子类复用父类属性和方法(
extends
) - 多态:同一方法不同行为(方法重写)
- 抽象:定义通用结构(
abstract
)
掌握 OOP,就掌握了 Java 的核心思维。
一个学生管理系统
// 抽象类:人(体现“抽象”和“封装”) abstract class Person { protected String name; public Person(String name) { this.name = name; } // 抽象方法 public abstract void study(); } // 子类:学生(体现“继承”和“多态”) class Student extends Person { private int grade; public Student(String name, int grade) { super(name); this.grade = grade; } // 重写抽象方法(体现“多态”) @Override public void study() { System.out.println(name + " 正在学习,年级:" + grade); } // Getter(体现“封装”) public int getGrade() { return grade; } } // 主程序 public class StudentDemo { public static void main(String[] args) { // 创建学生对象 Student s1 = new Student("小明", 3); Student s2 = new Student("小红", 4); // 调用方法(多态) s1.study(); // 输出:小明 正在学习,年级:3 s2.study(); // 输出:小红 正在学习,年级:4 // 简单管理 System.out.println("\n📋 学生列表:"); Student[] students = {s1, s2}; for (Student s : students) { System.out.println("学生: " + s.name + ", 年级: " + s.getGrade()); } } }
- 封装:隐藏数据,用
-
MyBatis-Plus
📅 2025-09-13 | 📝 1 分钟阅读
MyBatis-Plus
一、什么是 MyBatis-Plus?
MyBatis-Plus(简称 MP)是 MyBatis 的增强工具,在 不改变 MyBatis 原有功能的基础上,提供了大量“开箱即用”的便捷功能,极大地简化了单表 CRUD 操作,提升开发效率。
它被广泛应用于 Spring Boot 项目中,号称:“只为简化开发,提高效率而生”。
✅ 核心特性
特性 说明 无侵入 只做增强不做改变,引入不影响原有流程 强大的 CRUD 操作 内置通用 Mapper 和 Service,无需写 SQL 即可操作数据库 Lambda 查询 支持链式调用 + Lambda 表达式,类型安全,避免字段名拼写错误 代码生成器 可根据数据库表自动生成 Entity、Mapper、Service 等代码 分页插件 内置高性能分页插件,支持多种数据库 性能分析插件 输出 SQL 执行时间,辅助优化慢查询
二、快速集成(Spring Boot 项目)
1. 添加依赖(Maven)
<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.5.5</version> </dependency> <!-- 数据库驱动 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency>
-
Python 与人工智能:从零开始的完整入门指南
📅 2025-09-13 | 📝 1 分钟阅读
Python 与人工智能:从零开始的完整入门指南
在当今科技时代,人工智能(AI)正深刻改变着我们的生活——从语音助手到自动驾驶,从智能推荐到大语言模型。而在这场技术革命中,Python 是最核心、最广泛使用的编程语言。它不仅是 AI 研究的首选工具,也是工业界部署 AI 应用的主流选择。无论是谷歌、Meta、OpenAI 还是国内的百度、阿里、腾讯,它们的 AI 系统背后都离不开 Python 的支持。
为什么 Python 能成为人工智能的“第一语言”?答案在于它的三大优势:语法简洁、生态强大、社区活跃。Python 的语法接近自然语言,学习门槛低,开发效率高,让研究人员和工程师能快速实现想法。更重要的是,Python 拥有为 AI 量身定制的庞大库生态系统,覆盖数据处理、机器学习、深度学习、自然语言处理等所有关键领域。全球数百万开发者持续贡献代码、教程和预训练模型,使得 Python 成为进入 AI 世界的“通用钥匙”。
要理解 Python 如何支撑人工智能,我们首先需要掌握它的基础语法。Python 的变量定义非常直观,无需声明类型,直接赋值即可。例如,你可以写
name = "小明"
来存储一个名字,age = 20
来记录年龄,is_student = True
表示布尔状态。Python 支持多种数据结构:列表(list)用于存储有序数据,如scores = [85, 90, 78]
;字典(dict)以键值对形式组织信息,如student = {"name": "小明", "score": 85}
;元组(tuple)则用于不可变的数据集合,如坐标点point = (3, 4)
。这些数据结构是构建 AI 系统的基础组件。控制流程方面,Python 提供了清晰的条件判断和循环语句。使用
if-else
可以根据条件执行不同逻辑,比如判断学生成绩是否及格;for
循环可以遍历数据集中的每一条记录,常用于训练模型时的批量处理。Python 还有独特的“列表推导式”,可以用一行代码生成新列表,如[x**2 for x in range(5)]
会创建[0, 1, 4, 9, 16]
,这种简洁的表达方式在数据预处理中极为常用。 -
Vue.js 入门指南:用组合式 API 构建现代前端
📅 2025-09-13 | 📝 1 分钟阅读
Vue.js 入门指南:用组合式 API 构建现代前端
告别冗长的 Options API,Vue 3 的组合式 API 让逻辑复用更简单、代码组织更清晰。
无论你是从 React 转来,还是前端新手,都能快速上手并提升开发效率。核心组合式 API
ref 与 reactive
import { ref, reactive } from 'vue' const count = ref(0) // 响应式基本类型 const state = reactive({ // 响应式对象 name: 'Vue', version: 3 })
-
现代 JavaScript 异步编程模式
📅 2025-09-01 | 📝 1 分钟阅读
现代 JavaScript 异步编程模式
探索从回调函数到 async/await 及更高级异步模式的演变。
Promise 链与 Async/Await 对比
// Promise 链 fetchUser(id) .then(user => fetchPosts(user.id)) .then(posts => renderPosts(posts)) .catch(handleError); // Async/Await 写法 try { const user = await fetchUser(id); const posts = await fetchPosts(user.id); renderPosts(posts); } catch (error) { handleError(error); }