- 博客(87)
- 收藏
- 关注
原创 Linux探秘坊-------12.库的制作与原理
库是写好的现有的,成熟的,可以复⽤的代码。现实中每个程序都要依赖很多基础的底层库,不可能每个⼈的代码都从零开始,因此库的存在意义⾮同寻常。本质上来说库是⼀种可执⾏代码的⼆进制形式,可以被操作系统载⼊内存执⾏。静态库 .a[Linux]、.lib[windows]动态库 .so[Linux]、.dll[windows]
2025-05-09 15:36:29
467
3
原创 Linux探秘坊-------10.基础IO
在c语言的fopen函数中,类型是FILE,那么FILE到底是什么类型呢?,如果写入东西的话,不是重新写文件,而是在原来文件得结尾处继续输入内容。答案是,文件会被清空,因为文件被打开时,默认被清空。,,需要在open函数中添加 O_APPEND。,需要在open函数中添加 O_TRUNC。进程打开为1:n的形式,什么意思?添加清空功能,每次打开文件需要清空文件。可以在centos环境下,稍作修改,-----重定向命令,如果只输入。,那怎么管理打开的文件呢?
2025-03-28 14:37:09
1060
1
原创 python速通小笔记-------3.Numpy库
为克服列表的缺点,一个NumPy数组 只容纳一种数据类型,以节约内存。为方便起见,可将NumPy数组简单分为整数型数组与浮点型数组。
2025-03-23 18:14:47
362
2
原创 python速通小笔记-------2.类和对象
类似c++中类的this指针可以看到,这是类内部定义的一个函数,参数必须要有self,而且访问类的内部成员时要带上 self.成员变量。
2025-03-22 20:38:44
1099
原创 Linux探秘坊-------9.进程控制
/自己的shell1024//1.命令行参数表128// last exit code 退出码// 2. 环境变量表100const char* GetUserName()//从环境变量中拿到Userconst char* GetHostName()//从环境变量中拿到hostnameconst char* GetPwd()//从环境变量中拿到路径//不再从环境变量中拿,而是直接获取当前进程的地址,避免因环境变量未更新导致的地址不变if(pwd!
2025-03-21 11:10:27
930
1
原创 python速通小笔记-------1.容器
与c++不同,c++是自动不换行,\n表示换行,但python则是自动换行,不换行需要。pop函数是有返回值的------------str是无法修改的,其余操作和元组一致。与c++中的printf函数一致。列表的嵌套(多维vector)与c++不同,python。
2025-03-15 22:56:49
862
原创 Linux探秘坊-------8.进程详解
内存资源充足时,数据会从swap分区唤出和PCB重新组合为进程--------------------阻塞挂起。如果某一个进程在调度队列中,而调度其需要从键盘上读取数据,但键盘上没响应,所以cpu会把这个进程从。这是普通的双端队列,可以看到next指针是指向下一个元素的头,prev也是指向上一个元素的头。内存资源不足时,如果进程处于阻塞状态,那么会将进程的数据交换到硬盘的swap分区,,可以属于调度队列,可以属于等待队列,也可以属于设备队列。挂起的本质是--------将数据唤入或唤出到。
2025-02-17 18:12:42
438
7
原创 Linux探秘坊-------7.进程概念
可以理解为,如果两个进程共用同一份数据,但若其中一个修改了数据,那么内存会重新开辟一个数据给那个进程修改,促使两个进程独立。(processcontrolblock),Linux操作系统下的PCB是:task_struct。下使用ps axj 可以展示所有进程,那如果我只想要我刚刚运行的a.out程序的进程咋办呢?对冯诺依曼的理解,不能停留在概念上,要深⼊到对软件数据流理解上,请解释,从。任何计算机系统都包含⼀个基本的程序集合,称为。,管理所有的软硬件资源。只能直接和内存打交道。有特定的名字————
2025-02-13 21:00:34
941
3
原创 Linux探秘坊-------6.gdb
而Linux下的gcc/g++默认都是release环境,是没办法直接用gdb调试的,那么有什么解决办法嘛?初始位置在第16行(打断点的位置)按下s后进入函数,再按下finish就直接走完函数进程,回到第16行。我们开发内容时的模式一般为debug模式,方便我们进行调试,而release一般是不支持调试的。这样make出来的可执行程序就满足进行调试的要求哩。有兄弟发现gdb好难用呀,有木有更加简单好用的呢?为1,位置为mycode.c的第五行。可以看到,输入s就进入到了函数内部。走函数还是不走函数呢?
2025-02-07 21:53:06
1021
2
原创 Linux探秘坊-------5.git
为了能够更⽅便我们管理这些不同版本的⽂件,便有了版本控制器。所谓的版本控制器,就是能让你了解到⼀个⽂件的历史,以及它的发展过程的系统。通俗的讲就是⼀个可以记录⼯程的每⼀次改动和版本迭代的⼀个管理系统,同时也⽅便多⼈协同作业。⽬前最主流的版本控制器就是 Git。Git可以控制电脑上所有格式的⽂件,例如doc、excel、dwg、dgn、rvt等等。对于我们开发⼈员来说,Git最重要的就是可以帮助我们管理软件开发项⽬中的源代码⽂件!
2025-01-23 12:45:17
4254
92
原创 Linux探秘坊-------4.进度条小程序
如果我们使用这样的代码,会 先打印出hello bite,再停顿两秒。执行此代码后,会 先停顿两秒,再打印出hello bite。,但是明明打印在sleep前面,为什么会后打印呢?那么我们有没有办法 不用\n也能先打印呢?可以发现和上面的代码对比多了一个。
2025-01-22 11:08:12
8179
52
原创 2024年度总结:成就与挑战并存,与君协同,砥砺前行2025
这个题就是走迷宫的类型,对于第一次,没学过任何算法的我,写了40多分钟才完成,可以说是里程碑的一题,csdn大佬的回溯入门文章也给了我很大的启发,希望我之后也能写出自己的迷宫小游戏。,自己进行了思考,也逐渐了解了其中的一些奥秘,并尝试着自己写出谜底,红黑树的奇妙结构无一不展示着 编程的魅力与前人的智慧。我是一名211大学的大二学生,专业为软件工程,经历了高考的残酷斗争,我只想报复性地玩耍,然而在平淡的大学生活中,,学校的课程终究只是纸上谈兵,并不系统化,所以在大一下时,我决定了我要去 学技术。
2025-01-20 18:25:59
2151
85
原创 Linux探秘坊-------3.开发工具详解(2)
这里%是通配符,:左边匹配所有.c结尾的文件,<表示将展开的所有.c文件,一个接一个地匹配命令。,⽽是在程序执⾏时由运⾏时链接⽂件加载库,这样可以节省系统的开销。之前我们在makefile里都是直接写文件名的,这里使用 类似宏替换。静态库是指编译链接时,把库⽂件的代码全部加⼊到可执⾏⽂件中。这句话表示,SRC拿到了当前目录里 所有以.c结尾的文件。,在编译链接时并 没有把库⽂件的代码加⼊到可执⾏⽂件中。这行表示OBJ是由SRC中 所有.c变为.o得来的。,但在运⾏时也就不再需要库⽂件了。
2025-01-20 16:20:55
1020
1
原创 Linux探秘坊-------3.开发工具详解(1)
我这边写入setnu(显示行数)和setmouse=a(支持鼠标)结论:命令模式可以理解为Windows系统中的鼠标。成功使用sudo,代表白名单配置成功。创建第一个vim编辑的代码。,可以快速,高效得进行编程。,通常使用键盘上的箭头。发现已经添加了行号。
2025-01-18 17:28:16
1761
2
原创 Linux探秘坊-------2.权限与开发工具
root蓝色框框中表示,user和group都是我自己,但进行身份对比时只比较了一次,所以我自己* 先匹配的是user(匹配成功,不再匹配group了*,自然不能进行写操作。
2025-01-16 12:50:34
818
2
原创 算法妙妙屋-------2..回溯的奇妙律动
回溯算法是一种用于系统性地搜索和解决问题的算法,它以深度优先搜索(DFS)为基础,用来探索所有可能的解决方案。通过递归地尝试候选解并在必要时回退(即“回溯”),它能够高效地解决许多涉及组合、排列和分割问题的场景。
2025-01-14 13:33:22
2515
73
原创 Linux探秘坊-------1.系统核心的低语:基础指令的奥秘解析(3)
zip 压缩⽂件.zip ⽬录或⽂件:将⽬录或⽂件压缩成zip格式。
2025-01-14 09:37:33
2068
48
原创 豆包MarsCode测评:编程效率再提升
高效:AI 生成的代码质量高,减少了手动编写的时间。智能:一键Apply功能能自动识别文件位置并生成差异视图,方便直观。全面:功能覆盖代码生成、单测生成、代码优化,满足开发全流程需求。易用:界面设计简洁,功能按钮明确,上手快。豆包MarsCode 是一款非常值得尝试的 AI 编程工具,尤其是它的一键Apply功能,为开发者提供了新的高效工作方式。从代码生成到单测覆盖,它都表现出色。如果你是一个想要提升效率的开发者,不妨试试看 MarsCode,或许它会成为你的得力助手。
2024-12-22 11:16:39
11099
158
原创 Linux探秘坊-------1.系统核心的低语:基础指令的奥秘解析(2)
cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息。less与more类似,但使用less可以随意浏览文件,而more仅能向前移动,却不能向后移动,而且less在查看之前。(move (rename) files),是Linux系统下常用的命令,经常用来备份文件或者目录。mv命令是move的缩写,可以用来 移动文件或者将文件改名。
2024-12-10 23:47:53
1227
15
原创 算法妙妙屋-------1.递归的深邃回响:全排列的奇妙组合
全排列(Permutation)是数学中一个经典的问题,指的是从一组元素中,将所有元素按任意顺序排列形成的所有可能序列。
2024-12-01 22:40:44
4036
104
原创 移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——15.C++11(2)
C++11 引入的可变模板参数(variadic templates)使得模板参数的数量可以是任意多个,极大地提升了 C++ 的模板编程能力。可变模板参数的引入,让函数、类和类型定义都可以处理任意数量的参数,从而大大增强了 C++ 的泛型编程能力。expand函数中的逗号表达式:(printarg(args), 0),也是按照这个执行顺序,先执行。在此基础上,可以定义不同类型和数量的模板参数,以实现功能更为复杂的泛型数据结构。例如,实现一个通用的。可变模板参数的展开是指将模板参数包展开成实际的参数。
2024-11-30 18:23:42
1493
55
原创 Linux探秘坊-------1.系统核心的低语:基础指令的奥秘解析(1)
Linux 操作系统的发展历程充满了激情与创新喵~🎀萌芽期 (1983 - 1991):Linux 的历史可追溯到 1983 年,理查德·斯托曼 (Richard Stallman) 发起 GNU 计划,目标是创建一个自由软件操作系统。1987 年发布的 MINIX 是一个小型 UNIX 系统,为 Linux 提供了灵感。诞生 (1991):1991 年,芬兰大学生林纳斯·托瓦兹 (Linus Torvalds) 开始编写自己的内核并将其命名为 Linux。
2024-11-13 16:51:01
2966
139
原创 算法妙妙屋-------1.递归的深邃回响:二叉树的奇妙剪枝
⼆叉树中的深搜(介绍)深度优先遍历(DFS,全称为DepthFirstTraversal),是我们树或者图这样的数据结构中常⽤的⼀种***遍历算法***。这个算法会尽可能深的搜索树或者图的分⽀,直到⼀条路径上的所有节点都被遍历完毕,然后再回溯到上⼀层,继续找⼀条路遍历。前序遍历中序遍历以及后序遍历。因为树的定义本⾝就是递归定义,因此采⽤递归的⽅法去实现树的三种遍历不仅容易理解⽽且代码很简洁。并且前中后序三种遍历的唯⼀区别就是 ***访问根节点的时机不同。
2024-11-04 18:28:54
2865
142
原创 算法妙妙屋-------1.递归的深邃回响:C++ 算法世界的优雅之旅
递归是一种在算法中广泛应用的思想,其主体思想是通过将复杂的问题分解为更简单的子问题来求解。基本情况(Base Case):每个递归算法必须有一个或多个基本情况,用于定义何时停止递归。基本情况是问题的 最小实例,直接返回结果,不再进行进一步的递归。递归情况(Recursive Case):当问题不是 基本情况时,递归算法会将问题拆分成更小的子问题。算法会调用自身来解决这些子问题,通常会在调用中传递参数以反映问题的简化。合并结果(Combining Results):在递归调用返回后,算法。
2024-11-02 17:43:42
4953
121
原创 移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——15.C++11(1)
C++11 中引入的 std::array 是标准模板库(STL)中的一个容器类,提供了一个固定大小的数组,具有数组的简单性和 STL 容器的功能。定义时const修饰符后的左值,不能给他赋值,但是可以取它的地址。:与 C 风格的数组相比,std::array 提供了更好的边界安全性,可以使用。,可以根据初始值的类型自动推导变量的类型,从而减少了手动声明类型的繁琐。右值可以出现在赋值符号的右边,但是不能出现出现在赋值符号的左边,这里没有调用深拷贝的拷贝构造,而是调用了移动构造,移动构造中。
2024-10-27 11:56:02
3641
106
原创 了解AIGC——自然语言处理与生成
自动文本摘要可以从长篇文档中提取关键信息,生成简洁的摘要。这类任务中可以使用 BERT 这样的预训练模型来理解上下文,并通过生成模型生成摘要。
2024-10-26 20:03:59
5114
63
原创 重生之“我打数据结构,真的假的?”--3.栈和队列(无习题)
在C语言中,**栈(Stack)队列(Queue)**是两种非常重要的数据结构。它们广泛用于各种应用中,比如内存管理、任务调度、表达式求值等。本文将对这两种数据结构进行详细的介绍,并展示如何在C语言中实现它们。
2024-10-25 14:55:08
2232
62
原创 重生之“我打数据结构,真的假的?”--2.单链表(无习题)
在C语言中,我们可以使用结构体来定义单链表的节点。int data;// 数据部分// 指向下一个节点的指针} Node;单链表是一种灵活且实用的数据结构,通过动态内存分配和简单的插入、删除操作,使得它在许多实际应用中都能发挥重要作用。掌握单链表的基本操作,为深入学习其他数据结构奠定了基础。希望本总结对理解和使用单链表有所帮助。
2024-10-23 19:41:48
2319
85
原创 移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——14.哈希(3)(布隆过滤器和位图)
bitset是 C++ 标准库中的一个类模板,主要用于管理固定大小的位集合。它能够在一个单一的对象中存储多个二进制位,非常适合用于需要高效存储和快速访问位信息的场景。Bloom Filter 是一种空间效率极高的概率性数据结构,主要用于检测某个元素是否在集合中。与bitset不同,Bloom Filter 允许出现一定的误判,即可能会错误地判断某个元素在集合中(假阳性),但绝不会漏掉真实存在的元素(假阴性)。高效存储:两者都能够在内存使用上做到高效。位操作:都可以在位级别进行操作,适合处理布尔类型的数据。
2024-10-23 19:13:26
2578
50
原创 重生之“我打数据结构,真的假的?”--1.顺序表(无习题)
顺序表是一种存储线性表的顺序存储结构,其存储单元采用一段连续的内存区域,可以直接通过索引来访问任意元素。这使得顺序表在进行随机访问时效率非常高,时间复杂度为 O(1)。然而,由于内存是连续的,所以在插入或删除元素时,可能需要移动大量的数据,因此插入和删除操作的时间复杂度较高。首先,定义顺序表的结构体。该结构体包含一个指针指向存储数据的数组,以及顺序表的当前长度和最大容量。10// 顺序表结构体定义int *data;// 存储数据的数组int length;// 当前顺序表的长度// 顺序表的容量。
2024-10-22 20:29:23
2180
53
原创 移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——8.stack&&queue&&priority_queue(无习题)
C++ 标准模板库(STL)提供了一系列容器,其中stack和queue是两种常用的适配器容器。它们基于底层的序列容器(如vectordeque)实现,分别用于支持栈和队列的操作模型。栈(stack)遵循“后进先出”(LIFO)的原则,而队列(queue)遵循“先进先出”(FIFO)的原则。本文将详细介绍这两种容器的特点、使用方法、实现机制及其应用场景。stackqueue以下是一个完整的示例代码,展示了stackqueue和// stack 示例s.push(1);s.push(2);
2024-10-22 20:21:38
1655
62
原创 我与C语言二周目邂逅vlog——8.编译和链接
C 语言中的编译和链接是程序构建过程中最为关键的步骤。编译器和链接器通过分阶段处理源代码,从预处理到生成可执行文件,确保程序的正确性和效率。理解编译和链接过程,可以帮助程序员更好地诊断和解决编译器报错、链接错误等问题。此外,掌握这些过程还可以帮助优化程序的运行效率,合理利用静态库和动态库,从而编写出高效、可靠的代码。在现代软件开发中,理解这些底层细节不仅是编写 C 语言代码的基础,也是开发复杂项目的重要技能。
2024-10-21 13:13:09
2021
70
原创 移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——14.哈希(2)(模拟实现)
开散列(Open Hashing),也叫链地址法,是一种解决哈希冲突的方法。每个哈希表槽位保存一个链表,所有散列到同一位置的元素都存储在该链表中。当插入元素发生冲突时,将新元素添加到相应槽位的链表末尾。
2024-10-20 12:01:19
3172
73
原创 【Python知行篇】代码的曼妙乐章:探索数据与逻辑的和谐之舞
Python是一种功能强大且用途广泛的编程语言,适用于从数据分析到Web开发再到机器学习的各个领域。本文从Python基础语法到高级应用,涵盖了多个方面,并通过大量的代码示例帮助读者理解如何学习和应用Python。希望这篇指南能为您的Python学习之旅提供帮助,并激发您对编程的热情。注:以上代码仅作示例,实际使用时请根据具体需求进行调整和优化。
2024-10-20 12:00:31
3905
63
原创 移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——5.string(无习题)
C++ 中的string是标准模板库(STL)中一个用于处理字符序列的类。相较于 C 语言中的字符数组,string提供了更丰富和安全的功能,可以轻松进行字符串的创建、修改和操作。string是 C++ 标准库中的一个重要部分,广泛用于各种需要处理文本的程序中。本篇文章将详细总结 C++ 中的string容器,涵盖其基本使用方法、成员函数、与 C 风格字符串的相互转换、高级功能及其在实际应用中的一些优化技巧。stringC++ 中的string容器是一个功能强大的类,提供了丰富的接口来处理各种字符串操作。
2024-10-19 13:52:23
1433
42
原创 我与C语言二周目邂逅vlog——7.预处理
预处理器(Preprocessor)是C编译器的一部分,负责在源代码正式进入编译阶段前对代码进行处理。预处理通过一系列以开头的指令对源代码进行文本替换、宏展开、文件包含等操作。C语言的预处理是一个文本处理过程,它不涉及编译器的语法分析,预处理的结果是生成“编译准备好”的代码。文件包含(#include宏定义(#define条件编译(#if#ifdef#ifndef#else#elif#endif行控制(#line错误生成(#error其他指令(如#pragma。
2024-10-18 13:43:10
1735
49
原创 高德开放平台——实时路径规划优化指南
高德开放平台是中国领先的地图服务平台,提供包括地图展示、导航、路径规划、交通信息等一系列服务的开放API。借助高德的地图服务,开发者可以实现实时位置追踪、路径规划、物流调度等多种应用。要使用高德开放平台的API,需要先前往高德开放平台注册账号并申请开发者Key。驾车路径规划接口步行路径规划接口骑行路径规划接口公交路径规划接口每个接口都可以根据用户需求提供不同的路线选择,包括最短时间、最短距离、避开收费路段等。params = {'origin': origin, # 起点经纬度。
2024-10-17 10:24:30
5180
68
原创 移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——13.map&&set(无习题)
C++ 标准模板库(STL)提供了多种关联容器,用于管理键值对和集合的数据。其中,set和map是最常用的两种关联容器。set用于存储唯一的元素集合,而map则用于存储键值对,其中每个键都是唯一的。它们都使用红黑树(自平衡二叉搜索树)作为底层实现,因此可以提供高效的插入、查找和删除操作。本文将详细介绍set和map容器的特点、使用方法、底层机制及其应用场景。setmap以下是一个完整的示例代码,展示了setmapmultisetmultimap和// set 示例s.erase(3);
2024-10-17 10:06:46
1961
78
原创 移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——7.list(无习题)
list双向链表是一种链式存储结构,与单向链表相比,它多了一个指向前驱节点的指针。这样设计的优点是,可以从任意一个节点向前或向后遍历链表,操作更加灵活。数据部分:存储节点的数据元素。前驱指针:指向前一个节点。后继指针:指向后一个节点。这种结构使得插入和删除节点的操作效率较高,因为只需修改相关节点的前驱和后继指针,而不需要移动其他节点的数据。C++ 中的list容器是一种基于双向链表的数据结构,适合需要频繁插入和删除元素的场景。list。
2024-10-16 09:21:18
1855
97
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人