Git与GitHub从零到一完整演练
Git学习实战篇——Git与GitHub从零到一完整演练 本文是理论篇的实战延续,所有操作均可借助Claude AI Agent辅助完成。从环境搭建到PR合并,全流程覆盖。 一、😊工具准备第一步:安装Git(Windows / macOS)Windows环境: 方法一: 访问Git官网下载页面:https://git-scm.com/download/win 下载.exe安装包(64位版本) 运行安装程序,一路保持默认选项(建议将”默认编辑器”选为VS Code) 安装完成后,在任意文件夹右键选择Git Bash Here,输入git --version,显示版本号则成功 方法二: 使用 winget 安装 (推荐):在“命令提示符”或“PowerShell”中运行:1winget install --id Git.Git -e --source winget macOS环境: 方法一(推荐):打开终端,执行xcode-select --install安装Xcode Command Line Tools(内置Git) 方法二:使用Homebrew执行br...
Git与Github基本概念
Git学习理论篇——AI时代下学习Git与GitHub核心概念 当AI Agent成为编程主力军,理解版本控制的底层逻辑,比记忆命令更重要。本文聚焦概念体系,为后续实战打下坚实基础。 一、为什么AI时代,Git与GitHub变得不可或缺?在AI辅助编程的今天,版本控制的价值被重新定义: AI Agent的操作中枢:无论是Claude Code、GitHub Copilot还是各类AI编程工具,其核心能力都围绕着提交(commit)、分支(branch)、合并(merge) 等Git原语运转。没有版本控制,AI的每一次修改都将成为”一次性操作”,无法追溯、无法回滚。 自然语言驱动Git:借助AI Agent(如Claude),开发者无需记忆数十条Git命令。只需理解仓库、提交、分支、远端四个核心概念,即可用自然语言下达”回退到上一次提交””将feature分支合并到主干””同步远端最新代码”等指令,AI自动执行底层操作。 协作与信任的基础:在多人AI协作场景中,每一次代码变更都应有明确的提交记录、作者信息和变更说明。Git提供的不可变历史链路,是团队互信与问题定位的基石。 ...
Java基础·第4篇:Java继承——不用重复造轮子,一篇搞懂
什么是继承?继承的特点?继承的好处?引入假如现在需要你开发一个教务管理系统中一个最基础的功能————存储学生和教职工的身份信息,你会怎么做?你的做法可能是这样的:分别创建学生类、教师类和工人类,即 123学生类:属性(姓名,年龄,学工号)、行为(吃饭,睡觉,学习)老师类:属性(姓名,年龄,学工号,薪水)、行为(吃饭、睡觉,上课)工人类:属性(姓名,年龄,学工号,薪水)、行为(吃饭、睡觉,管理) 很明显,如果这样去设计教务管理系统,这三个类中有着大量重复的代码,这样就导致系统的代码复用率低,整个系统显得臃肿笨重。那么应该如何去解决这样的问题呢?假如多个类中存在相同属性和行为时,我们可以将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那一个类即可。如图所示: 其中,多个类可以称为子类,单独被继承的那一个类称为父类、超类(superclass)或者基类。 继承的概念继承描述的是事物之间的所属关系,这种关系是:is-a 的关系。类似于数学中的集合A属于集合B,表示集合A是集合B的子集,在这里我们用父类和子类来表示这样的继承关系,我们通过继承,可以使多种事物之间形...
Java基础·第6篇:Java接口——能飞的就实现Flyer,能游的就实现Swimmer
引入现在需要对宠物管理系统增加一个飞行的功能: 1234狗不会飞行老鹰会飞行麻雀会飞行企鹅不会飞行 在这个宠物管理系统体系中,狗和企鹅是不会飞行的。那如果只用继承,那么狗和企鹅都会飞行,显然不符合常理。也许你也会想,给老鹰和麻雀分别写个飞行的方法,在创建对象之后分别调用,显然会很麻烦 12public void letFly(Eagle e) { e.fly(); }public void letFly(Sparrow s) { s.fly(); } 这时候就需要一个接口,来集中抽象一个系统中只有少部分子类拥有的行为和方法。 接口的概述接口的概念和定义格式 接口:一个用来父类下少部分子类独有功能的方法声明,且只声明,没有方法体 定义格式: 1234567 //接口的定义格式:interface 接口名称{ // 抽象方法}// 接口的声明:interface// 接口名称:首字母大写,满足“驼峰模式” 对于引入中出现的问题在我们了解接口后,可以做出以下的改进: 定义一个包含飞行方法的接口,让拥有飞行能力...
Java基础·第7篇:Java抽象类——把共性的先做了,剩下的你自己看着办
一、为什么需要抽象类?假如我们需要编写一个员工管理系统。系统的要求如下: 12- 所有员工都有姓名、工号、薪水等基本属性,并且都需要打卡上班。- 所有员工都需要记录工作内容 对于第一个要求,这些属性和行为都是通用的,如果每一个都写一遍,整个系统的代码会变得冗余;对于第二个要求,这些工作内容每个员工的都不一样,无法统一。为了提高代码的简洁性和高效性,我们提出了抽象类的解决方案。 抽象类的解决方案: 通用的属性和方法(姓名、工号、薪水、职位、打卡)→ 父类写好,子类直接继承 无法统一的方法(工作内容)→ 父类只声明,子类各自实现 12345678910111213abstract class Employee { private String name; public Employee(String name) { this.name = name; } public void clockIn() { System.out.println(name + "打卡上...
MyBatis 入门系列(一):从零搭建到查询实现,附踩坑记录
从零开始学 MyBatis:新手踩坑之路与核心原理详解 适合完全零基础的新手,用最直白的语言讲清楚 MyBatis 是什么、怎么用,以及必须搞懂的 5 个核心问题。 一、为什么要学 MyBatis?在我们以前的学习中,我们用Java操作数据库的方法只有JDBC,我们先回顾一下JDBC是怎么操作数据库的,为了操作数据库我们需要编写加载驱动、建立连接、写 SQL、处理结果集、关闭连接…… 十几行甚至几十行模板代码,不仅枯燥,而且代码量上来之后,出错的概率也增大了。 从这我们就可以看出JDBC的劣势了,基本就是我们全自动的去操作数据库,JDBC只是一个用Java操作数据库的一个桥梁。本身并没有给我们带来任何便捷,经过技术的迭代,我们看到了Mybatis这项新的技术。 MyBatis 就是来拯救你的:你只需要定义接口 + 写 SQL,它自动帮你完成剩下的一切(获取连接、预编译、执行、对象封装)。在一定程度上实现了Java操作数据库的半自动流程,省去我们的麻烦。 二、环境搭建(IDEA + Maven + MySQL)1. 创建项目(普通 Maven 项目,不要直接用 Spring Bo...
MyBatis入门系列(三):动态 SQL 完全指南:告别硬编码,一个方法搞定所有查询
MyBatis 动态 SQL 完全指南:告别硬编码,一个方法搞定所有查询一、为什么需要动态 SQL?在真实项目中,一个查询接口往往要支持多种条件组合:比如用户列表页,可以按姓名模糊查询、按年龄精确查询、两者组合查询,或者什么都不填查询全部。如果用硬编码写 SQL,你可能需要写 4 个不同的方法,代码臃肿且难维护。 动态 SQL 让你在 XML 中根据传入的参数“智能拼接” SQL 语句,一个方法搞定所有情况。 二、核心标签一览 标签 作用 类比 <if> 条件判断,满足时才拼 SQL 片段 Java 中的 if <where> 自动处理 WHERE 关键字和多余的 AND/OR 智能的 WHERE 生成器 <set> 动态生成 SET 子句,自动去掉末尾逗号 智能的 SET 生成器 <choose>/<when>/<otherwise> 多选一,只执行第一个满足的条件 Java 中的 switch <foreach> 遍历集合,生成 IN 子句或批量 VALUE...
Java高级-第一篇:JDBC操作数据库——为什么不用Statement?——PreparedStatement防SQL注入一篇搞懂
引入 这篇文章我们要学习怎么用Java程序来操作数据库,显而易见的是,我们不能直接跟MySQL说话,而是需要通过JDBC这个中间层。JDBC就是Java用来连接数据库的一套标准接口。 案例展示在写代码之前,我们需要简单配置一下:1、创建项目和模块2、在模块下面我们需要一个文件夹去存放JDBC驱动包3、最后在src文件夹下写我们的代码 4、我们需要编写的代码如下:由于关于JDBC这项技术,我们只要做到会用和看的懂的情况下,我们只需要看看知道怎么操作就行 123456789101112131415161718192021222324// 1. 注册驱动(JDBC 4.0后可以省略)Class.forName("com.mysql.cj.jdbc.Driver");// 2. 获取连接(MySQL的数据库、密码和用户名)String url = "jdbc:mysql://localhost:3306/test";String username = "root";String password = "123456&...
MySQL笔记-第3篇:一篇搞懂事务、ACID和隔离级别
一、事务是什么?简单来说,事务就是把完成同一目标的多个SQL操作打包成一个整体,举个例子:你给朋友转账100块。 对于熟悉SQL的我们来说,这个需求很快就可以完成。 12UPDATE account SET money = money - 100 WHERE id = 1; -- 你扣钱UPDATE account SET money = money + 100 WHERE id = 2; -- 朋友加钱 在实际的SQL运行环境中,如果第一个UPDATE执行完了,第二个还没执行,系统崩了,结果你的钱扣了,但朋友没收到。为了解决这一问题,我们提出的事务的概念。 简单来说,事务就是把完成同一目标的多个SQL操作打包成一个整体。在这个场景中,就是把转钱这一目标打包成一个整体,这两个操作要么都成功,要么都失败,不允许中间状态。 这样就不会出现钱丢了的故障。 二、怎么用? 123456START TRANSACTION; -- 开启事务UPDATE account SET money = money - 100 WHERE id = 1;UPDATE accoun...
MySQL笔记·第1篇:DDL、DML、DQL、DCL一篇搞定
SQL(Structured Query Language)结构化查询语言,主要分为四大类别:DDL(数据定义语言)、DML(数据操作语言)、DQL(数据查询语言) 和 DCL(数据控制语言)。 一、数据定义语言 DDL(Data Definition Language)用途:用来定义数据库对象(数据库、表、字段)。 1、数据库操作查询所有数据库1SHOW DATABASES; 查询当前数据库1SELECT DATABASE(); 创建数据库1CREATE DATABASE [ IF NOT EXISTS ] 数据库名 [ DEFAULT CHARSET 字符集 ] [ COLLATE 排序规则 ]; 说明:在同一个数据库服务器中,不能创建两个名称相同的数据库,否则将会报错。使用 IF NOT EXISTS 可避免重复创建。 示例: 1CREATE DATABASE IF NOT EXISTS itcast; 删除数据库1DROP DATABASE [ IF EXISTS ] 数据库名; 切换数据库1USE 数据库名; 2、表操作A、查询与创建查询当前数据库所有表1...















