Linux
未读写在最前一、Linux 指令的本质与执行逻辑 指令与可执行程序的关系 指令即程序:用户输入的指令(如 ls、cp)本质是 可执行程序或脚本,以文件形式存储在系统路径中(如 /bin、/usr/bin)。 位置依赖:指令执行前需在系统预设路径(由 $PATH 环境变量定义)中查找对应文件。若未找到,提示 command not found。 指令执行流程 查找与验证:系统按 $PATH 路径顺序搜索可执行文件,并检查文件权限(需具备可执行权限)。 执行过程:找到文件后,操作系统加载程序至内存运行,用户通过命令行解释器间接与内核交互。 二、核心设计哲学:Linux 下一切皆文件 抽象统一性 硬件设备抽象为文件: 显示器:通过 fwrite 写入数据(如 echo "Hello" > /dev/tty)。 键盘:通过 fread 读取输入(如 cat /dev/input/eventX)。 统一操作接口:无论是硬件设备(如显示器、键盘)还是普通的文件,都可以通过文件操作进行读 read()、写 write() 等系统调用,简化编程与设 ...
C++ 模板概述 C++模板详解 —— 函数模板与类模板 | CSDN 在 C++ 中,模板(Template)是一个非常强大的特性,它可以让我们编写与特定数据类型无关的代码,最终由编译器根据实际的类型生成特定的代码。模板主要分为两类:函数模板 和 类模板。模板的引入大大增强了 C++ 语言的灵活性和代码复用性,减少了重复代码的编写。 1. 为什么需要模板?假设你想编写一个通用的函数来交换两个变量的值。最初,你可能会想到通过函数重载来实现,例如: 123456789101112131415161718192021void Swap(int& left, int& right){ int temp = left; left = right; right = temp;}void Swap(double& left, double& right){ double temp = left; left = right; right = temp;}void Swap(char& ...
C/C++内存管理C/C++内存分布问题引入: 1234567891011121314151617181920212223242526272829int globalVar = 1;static int staticGlobalVar = 1;void Test(){ static int staticVar = 1; int localVar = 1; int num1[10] = { 1, 2, 3, 4 }; char char2[] = "abcd"; const char* pChar3 = "abcd"; int* ptr1 = (int*)malloc(sizeof(int) * 4); int* ptr2 = (int*)calloc(4, sizeof(int)); int* ptr3 = (int*)realloc(ptr2, sizeof(int) * 4); free(ptr1); free(ptr3);}1. 选择题:选项 : A.栈 B.堆 C.数据段(静态区 ...
Linux
未读操作系统(OS)的基础概念操作系统是计算机硬件和软件之间的中介,它负责管理计算机硬件资源并为应用程序提供一个运行环境。简单来说,操作系统的目标是使计算机变得更好用。它使得硬件的复杂性对用户透明,提供更高效的资源管理,并使应用程序能够正常运行。 1. 操作系统的层次结构操作系统通常由多个层次构成,每一层提供不同的功能: 硬件层(硬件) 这是计算机的基础物理部分,包括 CPU、内存、硬盘、显示器、键盘等。硬件直接提供计算和存储资源。 设备驱动层 这一层负责控制和管理硬件设备,如声卡、显卡、打印机等。操作系统通过设备驱动程序与硬件进行通信,确保硬件的正常运行。 操作系统层 这一层是操作系统的核心部分,负责管理硬件资源,调度进程,提供文件管理、内存管理等基本功能。常见的操作系统包括 Windows、Linux、macOS 等。 应用软件层 最顶层是应用软件,它包括各种应用程序,如 Word、Matlab 等。用户通过这些软件与计算机互动,完成各种任务。 2. 操作系统的功能 资源管理 操作系统需要高效管理计算机的资源,如 CPU 时间、内存、磁盘存储等。它通过调度算法分配资源,确保每个进程 ...
在 Linux 系统中管理用户账户:创建、设置密码及删除操作1. 创建新用户在 Linux 系统中,我们可以使用 adduser 或 useradd 命令来创建新用户。推荐使用 adduser 命令,因为它相对简单,且可以交互式地引导你完成用户创建过程。 创建新用户命令:1adduser 用户名 这里,用户名 是您自定义的用户名称。假设我们要创建一个名为 friend 的新用户,那么命令应该是: 1adduser friend 执行该命令后,系统将自动创建一个新的用户账户。具体操作步骤如下: 在 /home 目录下为该用户创建一个子目录(即 home/friend)。 配置默认的 shell(通常是 /bin/bash)。 创建该用户的相关信息文件,并将用户信息记录到 /etc/passwd 文件中。 示例输出:1[root@server]# adduser friend 执行该命令后,系统会创建新用户,并在终端中显示相关信息。 2. 为新用户设置密码在创建新用户后,我们需要为该用户设置一个密码。可以使用 passwd 命令来设置用户密码。 设置密码命令:1passwd 用户 ...
Linux 环境搭建全解析:从历史到实践Linux 作为开源操作系统,已经成为了当今信息技术领域的重要组成部分。无论是服务器、桌面,还是嵌入式设备,Linux 的身影几乎无处不在。那么,Linux 究竟是如何发展而来的?它又是如何在当今的技术世界中占据一席之地的?本篇博客将从 Linux 的历史背景出发,逐步讲解如何在 Linux 环境下进行开发与管理,最后提供具体的 Linux 环境搭建教程。 一、Linux 的起源与发展1.1 UNIX 的历史背景 在深入探讨 Linux 之前,我们需要了解它的前身——UNIX。UNIX 的诞生始于 1969 年,由 AT&T 贝尔实验室的 Ken Thompson 和 Dennis Ritchie 等人开发。最初,UNIX 被设计为一种多任务、多用户的操作系统,能够有效地支持科研工作。UNIX 继承了当时 Multics 操作系统的部分思想,但它的设计更加简洁和高效,这使得 UNIX 逐渐成为主流操作系统之一。 随着 UNIX 的逐步发展,不同的版本也相继诞生,包括伯克利软件发行版(BSD)和 System V。这两个版本代表了 UNIX ...
C++
未读1. 再谈构造函数在面向对象编程中,构造函数 是一种特殊的成员函数,它在对象创建时自动调用,负责初始化对象的成员变量(创建对象时赋初值),确保对象在创建时有一个有效的状态。接下来,我们将详细讲解关于构造函数的几个重要概念。 1.1 构造函数体赋值当我们创建一个对象时,构造函数会被自动调用,用来给对象的各个成员变量提供一个初始值。例如: 123456789class MyClass{public: int a; MyClass() { a = 10; // 这里是构造函数体中的赋值操作 }}; 在这个例子中,构造函数的作用是将 a 赋值为 10。然而,这里要注意,构造函数体中的赋值操作和初始化是有区别的。构造函数体中对成员变量的赋值只能算是给成员变量“赋初值”,而不是“初始化”。因为初始化是指给成员变量设置一个初始值,而且初始化只能发生一次,而赋值操作可以发生多次。 再例如: 12345678910111213class A{ int _x;public: A(int x) ...
C++
未读1. 类的 6 个默认成员函数默认成员函数的含义: 即使一个类什么都不写,编译器也会默认生成 4 以下个成员函数: 默认构造函数(初始化对象时调用)。 拷贝构造函数(用已有对象创建新对象时调用)。 析构函数(对象生命周期结束时调用)。 赋值运算符重载(用 = 赋值时调用)。 可以直接使用的操作符: 取地址操作符 &。 常量取地址操作符 const &。 代码示例: 12345678910111213141516#include <iostream>using namespace std;class Example{ // 空类,未显式定义任何成员函数};int main(){ Example e1; // 调用默认构造函数 Example e2 = e1; // 调用拷贝构造函数 Example* ePtr = &e1; // 调用取地址操作符 return 0; // 在程序结束时,e1 和 e2 调用析构函数} 传道解惑:Q1:e ...
C++
未读一、本节目标 面向过程和面向对象初步认识 类的引入 类的定义 类的访问限定符及封装 类的作用域 类的实例化 类的对象大小的计算 类成员函数的 this 指针 二、面向过程和面向对象初步认识(过程与面向对象编程)面向过程编程(ProceduralProgramming): 关注“过程”或“步骤”。 将问题分解为函数,每个函数执行一个特定的任务。 主要依赖函数调用,常见于 C 语言。 12345678910111213#include <stdio.h>// 面向过程编程: 通过函数处理数据void process(int data){ printf("Processing data: %d\n", data);}int main() { int data = 42; process(data); return 0;} 面向对象编程(Object-OrientedProgramming): 关注“对象”,将数据与操作数据的方法结合。 通过对象之间的交互解决问题,常见于 C++。 12 ...
同款博客网站搭建教程 声明:本篇文章是介绍安知鱼博客网站的搭建及其魔改,对待 0 基础的朋友比较不友好,但你仍然可以凭借好的学习能力和借助 B 站、AI、百度等完成个人网站的搭建!如有不懂可在文章下方评论区评论,我会尽力解答…… 1. hexo 和 安知鱼主题的安装 前提必备技能:GitHub 仓库的基本使用以及 VS Code 的基本使用! 环境与工具准备(最好可以稳定连接 GitHub) Git - 下载 Node.js — Download Node.js®(这里选用 v18.17.1 到 22.16.0 版本兼容性较好,请确保勾选 Add to PATH 选项(默认已勾选)) 安装完成后,检查是否安装成功。在键盘按下 win + R 键,输入 CMD,然后回车,打开 CMD 窗口,执行 node -v 命令,看到版本信息,则说明安装成功。 文本编辑器:VS Code 下载(推荐) 或者 Trae - AI 原生 IDE 下载(看个人,选任意一个或者都选都可以) 后续的 hexo cl;hexo g;hexo s 命令可能执行会出问题,解决方法:使用管理员身份运行 ...











