Linux入门指南:从系统概念到基础命令实战
Linux入门指南:从系统概念到基础命令实战 本文系统梳理Linux操作系统的核心概念、安装方式及常用命令,帮助初学者快速建立知识框架并上手实操。 一、Linux是什么?Linux是一种开源、免费使用的类Unix操作系统,其内核由芬兰大学生**林纳斯·托瓦兹(Linus Torvalds)**于1991年首次发布。与Windows或macOS不同,Linux并非由单一公司拥有,而是由全球开源社区共同维护和发展。 Linux系统的层次结构Linux系统由以下四个层次组成,自底向上依次为: 层次 说明 内核(Kernel) 系统的核心和基础,负责管理硬件设备、内存、进程调度等底层服务 系统库(System Libraries) 为应用程序提供调用接口的软件库,如glibc Shell 用户与操作系统交互的接口,常见的有Bash、Zsh等 应用程序(Applications) 各类软件工具和服务程序,如文本编辑器、Web服务器等 二、为什么选择Ubuntu作为入门发行版?Linux拥有众多发行版(Distribution),如Ubuntu、CentOS、...
两张面孔:对女性的隐形霸凌
社会观察当今社会,一种对女性的隐形霸凌正在悄无声息地发生。提到霸凌,大家通常想到的是男性对女性的侵害——无论是言语侮辱,还是直接的霸凌行为。这些都是显性的、可见的、必须被谴责的。也是必须要指出来的问题。但还有些隐形的霸凌也正在发生,只是施暴者不是男性。所以深究起来,问题远没有表面那么简单。这篇文章试图从一个新的角度撕开那些施暴者的丑恶嘴脸。声明一下:这篇文章不搞性别对立,也不站队。我只是描述现象,能引发一些思考,就够了。 男人的面孔社会上男性对女性的霸凌,有一种是明晃晃的、公开的、甚至已被默认为“正常”的。 首先是言语上的肆意冒犯:饭局上、工位旁,甚至擦肩而过的街头,对女性的身材、相貌、穿着评头论足,从不避讳。“这女的长得骚”、“她穿成这样不就是让人看的”……这些话被当作“玩笑”,甚至“男人之间正常的聊天内容”。说的人不觉得自己在作恶,听的人如果皱眉,反倒成了“开不起玩笑”。 其次是行为上的曲解与贬低:女性在职场中表达合理诉求,被说成“情绪化”;在生活里需要帮助,被嘲笑“矫情”;遇到不公时愤怒,被归因于“姨妈来了”。男性的标准被默认为“正常”,女性的反应则被贴上“非理性”的标签。...
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提供的不可变历史链路,是团队互信与问题定位的基石。 ...
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...
Java基础·第7篇:Java抽象类——把共性的先做了,剩下的你自己看着办
一、为什么需要抽象类?假如我们需要编写一个员工管理系统。系统的要求如下: 12- 所有员工都有姓名、工号、薪水等基本属性,并且都需要打卡上班。- 所有员工都需要记录工作内容 对于第一个要求,这些属性和行为都是通用的,如果每一个都写一遍,整个系统的代码会变得冗余;对于第二个要求,这些工作内容每个员工的都不一样,无法统一。为了提高代码的简洁性和高效性,我们提出了抽象类的解决方案。 抽象类的解决方案: 通用的属性和方法(姓名、工号、薪水、职位、打卡)→ 父类写好,子类直接继承 无法统一的方法(工作内容)→ 父类只声明,子类各自实现 12345678910111213abstract class Employee { private String name; public Employee(String name) { this.name = name; } public void clockIn() { System.out.println(name + "打卡上...
Java基础·第6篇:Java接口——能飞的就实现Flyer,能游的就实现Swimmer
引入现在需要对宠物管理系统增加一个飞行的功能: 1234狗不会飞行老鹰会飞行麻雀会飞行企鹅不会飞行 在这个宠物管理系统体系中,狗和企鹅是不会飞行的。那如果只用继承,那么狗和企鹅都会飞行,显然不符合常理。也许你也会想,给老鹰和麻雀分别写个飞行的方法,在创建对象之后分别调用,显然会很麻烦 12public void letFly(Eagle e) { e.fly(); }public void letFly(Sparrow s) { s.fly(); } 这时候就需要一个接口,来集中抽象一个系统中只有少部分子类拥有的行为和方法。 接口的概述接口的概念和定义格式 接口:一个用来父类下少部分子类独有功能的方法声明,且只声明,没有方法体 定义格式: 1234567 //接口的定义格式:interface 接口名称{ // 抽象方法}// 接口的声明:interface// 接口名称:首字母大写,满足“驼峰模式” 对于引入中出现的问题在我们了解接口后,可以做出以下的改进: 定义一个包含飞行方法的接口,让拥有飞行能力...
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基础·第4篇:Java继承——不用重复造轮子,一篇搞懂
什么是继承?继承的特点?继承的好处?引入假如现在需要你开发一个教务管理系统中一个最基础的功能————存储学生和教职工的身份信息,你会怎么做?你的做法可能是这样的:分别创建学生类、教师类和工人类,即 123学生类:属性(姓名,年龄,学工号)、行为(吃饭,睡觉,学习)老师类:属性(姓名,年龄,学工号,薪水)、行为(吃饭、睡觉,上课)工人类:属性(姓名,年龄,学工号,薪水)、行为(吃饭、睡觉,管理) 很明显,如果这样去设计教务管理系统,这三个类中有着大量重复的代码,这样就导致系统的代码复用率低,整个系统显得臃肿笨重。那么应该如何去解决这样的问题呢?假如多个类中存在相同属性和行为时,我们可以将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那一个类即可。如图所示: 其中,多个类可以称为子类,单独被继承的那一个类称为父类、超类(superclass)或者基类。 继承的概念继承描述的是事物之间的所属关系,这种关系是:is-a 的关系。类似于数学中的集合A属于集合B,表示集合A是集合B的子集,在这里我们用父类和子类来表示这样的继承关系,我们通过继承,可以使多种事物之间形...
MyBatis 入门系列(一):从零搭建到查询实现,附踩坑记录
从零开始学 MyBatis:新手踩坑之路与核心原理详解 适合完全零基础的新手,用最直白的语言讲清楚 MyBatis 是什么、怎么用,以及必须搞懂的 5 个核心问题。 一、为什么要学 MyBatis?在我们以前的学习中,我们用Java操作数据库的方法只有JDBC,我们先回顾一下JDBC是怎么操作数据库的,为了操作数据库我们需要编写加载驱动、建立连接、写 SQL、处理结果集、关闭连接…… 十几行甚至几十行模板代码,不仅枯燥,而且代码量上来之后,出错的概率也增大了。 从这我们就可以看出JDBC的劣势了,基本就是我们全自动的去操作数据库,JDBC只是一个用Java操作数据库的一个桥梁。本身并没有给我们带来任何便捷,经过技术的迭代,我们看到了Mybatis这项新的技术。 MyBatis 就是来拯救你的:你只需要定义接口 + 写 SQL,它自动帮你完成剩下的一切(获取连接、预编译、执行、对象封装)。在一定程度上实现了Java操作数据库的半自动流程,省去我们的麻烦。 二、环境搭建(IDEA + Maven + MySQL)1. 创建项目(普通 Maven 项目,不要直接用 Spring Bo...
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&...










