- 博客(118)
- 收藏
- 关注
原创 [操作系统] 进程终止
进程终止是计算机程序运行的最终阶段,理解它的机制有助于更好地进行进程控制和调试。我们可以使用returnexit()_exit()进行正常终止,也可能因信号、非法操作等导致异常终止。此外,进程退出码是进程状态的反馈,在 Linux Shell 和 C 语言编程中都非常重要。
2025-02-05 17:14:19
702
4
原创 [JavaScript] 面向对象编程
通过类与对象的概念,可以更好地模拟现实世界的实体,提升代码的可重用性、可维护性和扩展性。JavaScript 的面向对象编程非常灵活,类的引入让代码更加清晰和直观。多态是指不同的类在调用相同方法时,可以表现出不同的行为。静态方法是直接定义在类上的方法,而不是在实例上的方法。在 JavaScript 早期,使用函数和原型链实现面向对象的思想,语法复杂且容易出错。继承允许我们定义一个类,继承另一个类的属性和方法,从而实现代码复用。是用来定义对象蓝图的关键字,其中包含对象的属性和方法。调用父类的构造函数。
2025-01-25 23:20:49
1240
30
原创 [操作系统] 进程地址空间管理
当一个应用程序数据过大的话,不会立即将所有的数据全部从硬盘上加载到物理内存中,会先加载一部分。但是在进程的虚拟地址空间中会将所有的数据对应的地址全部建立。于是当需要使用一个虚拟地址空间的时候会在页表中进行查找映射的物理地址,但是没有物理地址,还未加载进内存中。操作系统会动态加载数据,当需要的时候再申请物理空间,加载数据,然后建立映射关系。即使加载到物理内存的数据是乱序存储的,通过页表的映射关系也可以进行有序的管理。关于进程地址空间整体的管理结构如上图所示(虚拟区间较少情况下)。
2025-01-25 23:19:24
1087
4
原创 [JavaScript] ES6及以后版本的新特性
在 ES5 之前,JavaScript 没有原生模块化系统,开发者通常使用全局变量或外部库(如。在 JavaScript 中,异步操作(如网络请求、文件读取、定时器等)是常见场景。进行更加详细的讲解,包括其语法背景、具体用法、以及背后的原理和实用场景。此外,插入表达式和动态生成内容也较为麻烦。在 ES5 中,字符串的操作非常繁琐,尤其是在拼接变量时,需要使用。的出现解决了这些问题,提供了一种更加优雅的方式来处理字符串。的引入解决了这些问题,使异步代码更加可读和可维护。,使代码难以阅读和维护。
2025-01-24 18:50:33
1166
15
原创 [操作系统] 深入进程地址空间
程序地址空间回顾程序地址空间回顾在C语言学习的时,对程序的函数、变量、代码等数据的存储有一个大致的轮廓。在语言层面上存储的地方叫做程序地址空间,不同类型的数据有着不同的存储地址。下图为程序地址空间的存储分布和和特性:staticstaticstatic。
2025-01-24 18:27:49
1392
89
原创 [JavaScript] 数组与对象详解
数组是一个有序的元素集合,可以存储多种数据类型(数字、字符串、对象等)。创建数组的方式// 方式1:字面量// 方式2:使用Array构造函数// 创建一个长度为5的空数组// 创建包含具体元素的数组对象是键值对的集合,每个键值对称为对象的一个属性。键是字符串或符号,值可以是任意类型。创建对象的方式// 方式1:对象字面量// 方式2:构造函数。
2025-01-22 20:07:21
1024
17
原创 [操作系统] 环境变量详解
环境变量是Linux系统中一个不可或缺的机制,通过灵活运用环境变量,可以极大地提高系统的可用性和效率。了解环境变量的基本概念、设置方式以及在程序中的使用方法,对于开发和管理系统具有重要意义。以上就是关于环境变量的全部讲解。
2025-01-22 20:05:39
2077
69
原创 [JavaScript] 函数详解
闭包是指函数能够记住并访问它所在的词法作用域,即使函数是在作用域外被调用。关键点闭包是函数与其词法作用域的组合。当函数返回后,外部依然可以通过闭包访问函数内的变量。
2025-01-21 23:31:10
787
13
原创 我的2024:创作历程与成长总结
2024年是一个值得回顾与总结的一年。这一年里,我在多个技术领域和创作方向上不断尝试与突破,完成了一系列内容创作。从个人成长到社区参与,每一步都凝聚着努力与热爱。在这篇文章中,我将对这一年的创作历程进行总结盘点,分享心得与收获。
2025-01-21 13:52:47
463
13
原创 [操作系统] 进程的优先级
Linux 中的进程优先级和 nice 值是系统调度和资源管理的核心组成部分。通过合理设置进程的优先级和 nice 值,可以有效提高系统性能,确保重要任务优先执行,而不重要的任务则被适当延迟。希望通过本文的介绍,您对 Linux 中进程优先级的概念和操作有了更深入的了解。如果有任何问题或建议,欢迎在评论区留言讨论!
2025-01-21 10:15:00
596
10
原创 [操作系统] 进程的调度
CPU内有多个寄存器,每个寄存器作用都不同寄存器就是CPU内部的临时空间,存放正在运行的进程的临时数据寄存器不包含寄存器内的数据,寄存器只是临时空间!比如说当计算1 + 1时,两个1单独存放在不同的寄存器中,add存放在一个寄存器中,然后计算后再返回值。寄存器的内容又叫做进程的上下文数据,**TSS**就是任务状态段。进程切换最核心的就是,保存和回复当前进程的硬件的上下文的数据,即CPU内寄存器的内容!当前进程(例如进程A)运行并占用CPU资源,运行时其相关的上下文保存在寄存器和内存中。
2025-01-20 21:54:32
1038
5
原创 [JavaScript] 深入理解流程控制结构
if-else:用于条件判断,决定执行哪段代码。:用于多条件选择,尤其适用于固定值判断。for:用于已知次数的循环,通常用于遍历数组或固定次数的任务。while:用于在未知次数的情况下执行循环,直到条件不再满足。break:用于跳出当前循环或switch语句块。continue:用于跳过当前循环的剩余部分,进入下一次迭代。掌握这些控制结构和语句的使用,可以使你在编写代码时更加灵活和高效,能够应对各种复杂的逻辑需求。在实际开发中,合理地选择控制结构将直接影响代码的可读性和执行效率。
2025-01-19 22:27:50
1354
33
原创 [JavaScript] 运算符详解
JavaScript中的运算符是有优先级的,高优先级的运算符会优先计算。位运算符操作二进制位,用得较少,但在某些性能优化或算法中很重要。算术运算符用于完成基本的数学计算。赋值运算符用来给变量赋值。
2025-01-19 22:26:51
1734
32
原创 [JavaScript] 变量与数据类型:从基础到进阶
JavaScript中的变量和数据类型是编程的基础,掌握它们可以帮助你避免常见错误并写出更清晰的代码。随着你对这些概念的理解不断深入,你会更加得心应手地编写功能丰富的应用程序。变量声明varletconst三者之间的差异决定了它们在不同场景下的使用。现代开发中建议使用let和const,尤其是const用于声明常量。数据类型:JavaScript的原始类型包括字符串、数字、布尔值、未定义、空值、符号和大整数,而引用类型则包括对象、数组和函数。理解这两类类型的区别,可以帮助你更好地管理数据。
2025-01-17 21:35:33
984
21
原创 [操作系统] 进程的概念与基础操作详解
前文所提:应用程序从磁盘加载进内存,而操作系统的管理方法是描述 + 组织,所以通过该种管理方法形成的管理对象就是进程。从用户的视角来看,进程是一个程序的运行实例;从操作系统的视角来看,进程是一个拥有资源分配能力的实体。进程 = 内核数据结构对象 + 自己的代码和数据在Linux中进程可以看做是和自己的代码和数据组成的。PCB中包含该进程的所有属性,与代码以及数据共同组成进程,PCB中存在指向其他进程的指针,通过指针的指向,进程通过双向链表的数据结构来进行链接,而进程的管理就是对链表的增删查改。
2025-01-17 21:13:43
1502
10
原创 [操作系统] 深入理解约翰·冯·诺伊曼体系
冯诺依曼体系的核心思想是将存储器作为中央组件,所有数据的输入、输出、处理都围绕存储器进行。本质就是将数据进行拷贝,从一个节点拷贝到另一个节点然后进行处理,而拷贝的输入输出设备之间的拷贝效率会影响这个计算机的运行效率,所以说实际上计算机的性能就是各个节点之间的输入输出效率。而需要站在内存(存储器)的角度进行理解,下文会做出解答。冯诺依曼体系组成部分输入单元(输入设备):如键盘、鼠标、触摸屏等,将数据传入存储器。中央处理器(CPU):包括运算器和控制器,用于从内存中读取数据和指令并执行。
2025-01-15 22:18:02
1101
42
原创 [Linux] GDB 和 CGDB的使用及理解
在软件开发中,Debug是指通过各种手段和工具,定位和修复程序中的问题。发现错误:找出程序运行中产生的问题,例如变量值不对、程序崩溃等。了解程序行为:通过分析程序运行时的状态,理解程序的实际行为是否符合预期。提高程序健壮性:通过发现和修复问题,确保程序能在各种情况下正常工作。Linux系统中的调试工具以GDB(GNUDebugger)为代表,它提供了对程序运行的全面控制,可以帮助开发者快速定位问题。CGDB则是GDB的增强版,带有代码高亮和更直观的界面,进一步提升了调试效率。
2025-01-14 18:49:35
803
16
原创 [Git] 深入理解 Git 的客户端与服务器角色
为了更好地理解这一特性,我们通过一个实际的GitHub远程仓库和本地仓库的场景来详细说明Git如何在客户端和服务器之间协作,如何独立地进行版本管理,以及它是如何通过。GitHub是一个基于Git的远程托管服务,提供了代码协作的中心化远程仓库(裸仓库)。接下来,我们通过一个具体的例子展示GitHub远程仓库和本地仓库之间的交互过程,涵盖初始化、版本管理和同步等操作。如果当前本地仓库与Github仓库同步,则需先拉取Github仓库,然后再进行推送。等待本地仓库的交互。
2025-01-14 18:48:29
1405
3
原创 [Git] 如何理解及基础操作
Git 是一种版本控制器,能够帮助你记录文件的历史和变化过程,并支持多人协同作业。这样的方式带来了突出的问题:你还记得每个版本修改了什么吗?Git 为解决这些问题而生,它能够对各类文件进行维护,特别是对开发者而言,能够管理源代码。
2025-01-13 14:05:10
868
8
原创 腾讯云AI代码助手编程挑战赛-创业者青桔
《创业者青桔》是一款基于 Vue 3 和 TDesign Vue Next 组件库构建的智能聊天对话系统。项目以简洁、直观的聊天界面为核心,不仅支持消息发送、对话分享和下载,还提供了删除、引用、反馈等丰富功能。通过对消息内容支持 LaTeX 语法解析,项目在提供高质量对话交互的同时,也适用于需要公式渲染的场景。整体风格清新简约,既适合创业者的沟通需求,也方便用户管理对话记录。主题切换顶部按钮切换主题,通过改变外层容器的 CSS 类控制背景色,满足用户在不同场景下的视觉需求。发消息。
2025-01-13 11:43:34
848
3
原创 [Linux工具] Makefile
Linux的make程序用来自动化编译大型源码,很多时候,我们在Linux下编译安装软件,只需要敲一个make就可以全自动完成,非常方便。make能自动化完成这些工作,是因为项目提供了一个Makefile文件,它负责告诉make,应该如何编译和链接程序。Makefile相当于Java项目的pom.xml,Node工程的package.json,Rust项目的Cargo.toml,不同之处在于,make虽然最初是针对C语言开发,但它实际上并不限定C语言,而是可以应用到任意项目,甚至不是编程语言。
2025-01-02 14:58:19
1795
95
原创 库的概念:动态库与静态库
库是一组封装好的函数或方法,它们可以被多个程序复用,从而避免重复编写相同功能的代码。例如,标准的数学函数库、字符串操作库都属于常用的库。根据链接方式的不同,库可以分为静态库和动态库。动态库和静态库各有优缺点,选择使用哪种库需要根据具体的项目需求来权衡。动态库:节省磁盘和内存资源,便于更新,但运行时依赖性较强。静态库:程序运行时独立性强,适合资源受限的环境,但程序体积较大。无论是动态库还是静态库,它们的核心本质都是目标文件的集合,通过不同的链接方式为程序提供功能支持。
2025-01-02 14:55:24
1064
53
原创 为什么C / C++编译要要先完成汇编?
C/C++ 编译先生成汇编语言是历史选择、技术优势和实践经验的共同结果。它顺应了早期计算机发展的历史,减少了编译器的复杂度,并且提高了编译的效率和灵活性。即使在现代,汇编语言仍然是编译过程中重要的中间桥梁,帮助开发者更好地理解和优化代码。因此,无论是学习编译原理还是深入理解 C/C++,了解为什么编译器保留汇编阶段对于掌握编译器的工作机制和高效编程都有重要意义。
2024-12-30 15:03:56
1090
28
原创 深入理解GCC 和 G++ 编译器
GCC 和 G++ 是 C 和 C++ 开发中不可或缺的工具,它们提供了从预处理到最终链接的完整编译支持。理解编译的每个阶段及其常用选项,可以帮助开发者更高效地开发、调试和优化程序。同时,动态链接和静态链接各有优劣,开发者需要根据项目需求合理选择。
2024-12-30 15:03:10
733
4
原创 在 Linux 中如何使用粘滞位 (t-bit)共享文件
在 Linux 系统中,共享文件是日常管理和协作中的常见任务,而粘滞位(Sticky Bit 或 t-bit)是实现共享目录安全性的重要工具之一。本文将带您详细了解如何在 Linux 中共享文件并配置粘滞位来保护共享资源的安全。
2024-12-28 15:07:40
1178
54
原创 深入理解 Linux 文件时间戳:atime、mtime 和 ctime 的概念及应用
时间戳是 Linux 文件系统中不可或缺的一部分,通过 atime、mtime 和 ctime,可以记录文件的访问、内容修改和元数据变化。这些信息在文件编译、备份同步、性能优化和系统审计等领域都具有重要价值。
2024-12-28 15:06:40
2235
73
原创 [Linux] Shell 命令及运行原理
Shell是 Linux 和 Unix 系统中的命令行解释器,调用用户输入的命令来与操作系统核心进行交互。进入 Shell 就像进入一个为您开放的环境,你可以在这里输入指令。Shell 能夠识别命令,解释为可执行的代码,然后通过系统调用为你进行实现。输入解析查找命令fork 和 exec执行命令结果显示深入了解这个流程,可以在命令行上可以更好地调试和解决问题。
2024-12-24 12:58:29
846
51
原创 从 x86 到 ARM64:CPU 架构的进化与未来
CPU 架构的发展,既是科技创新的历史,也映射出我们日常生活中对计算需求的不断变化。
2024-12-24 12:52:24
6727
62
原创 [Python] 进阶之路:模块、包和异常处理
模块(Module)是Python中用于组织代码的基本单位,一个.py文件就是一个模块。通过模块,我们可以将相关功能的代码放在一起,便于重用和维护。例如,一个名为包(Package)是多个模块的集合,用于构建更大规模的项目。一个包是一个包含文件的目录。异常(Exception)是程序运行时发生的错误。例如,除以零会引发,访问未定义的变量会引发NameError。可以通过继承Exception类创建自定义异常。
2024-12-04 22:16:54
1963
83
原创 [Python] 类和对象:从基础到高级
*类(Class)**是对象的蓝图或模板。它定义了对象的属性和行为。**对象(Object)**是类的实例(Instance),通过类实例化而来。类是“模具”,定义了物体的形状和特性。对象是用模具生产出来的“产品”,每个产品有相同的结构,但可以有不同的特性。2.1 定义类在Python中,使用class关键字定义类。pass # 空类,暂时不定义任何属性或方法2.2 创建对象使用类名加括号即可创建对象。person1 = Person() # 创建一个Person类的实例。
2024-12-04 22:12:34
918
17
原创 [C++] 异常
异常机制的优势提高代码的可读性和可维护性。将错误检测与处理解耦,增强模块化设计。支持复杂对象的生命周期管理(如RAII)。开发建议只在异常场景中使用异常,避免过度使用。异常处理应尽量精准,不要捕获所有异常(如保证栈展开期间资源正确释放,推荐使用智能指针(如查找匹配代码的关键点完全匹配优先。支持类型转换,如派生类向基类的转换。提供通配符捕获()以处理未知异常。异常重新抛出使用throw;重新抛出当前异常。可以抛出不同的异常对象,向上传递更多的上下文信息。
2024-11-16 15:16:51
956
26
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人