
Linux
文章平均质量分 74
五花肉村长
流水不争先,争的是滔滔不绝。
展开
-
Linux-网络基础
• TCP/IP 协议的本质是一种解决方案• TCP/IP 协议能分层,前提是因为问题们本身能分层。原创 2025-05-27 21:28:47 · 644 阅读 · 0 评论 -
Linux-自旋锁
自旋锁是一种适用于短时间内锁竞争情况的同步机制,它通过减少线程切换的开销来 提高锁操作的效率。然而,它也存在 CPU 资源浪费和可能引起活锁等缺点。在使用自 旋锁时,需要根据具体的应用场景进行选择,并确保锁被释放的时间尽可能短。原创 2025-05-24 21:19:36 · 317 阅读 · 0 评论 -
Linux-读者写者问题和读写锁
读写锁的选择:读写锁是解决读者写者问题的有效工具,能够区分读和写操作,提高并发性能。避免饥饿:在实际应用中,需要根据场景选择读者优先、写者优先或公平策略,以避免某一类线程长时间无法获取锁。性能优化:在多读少写的场景中,读写锁能够显著提高并发性能,但在写操作频繁时,可能需要考虑其他同步机制。原创 2025-05-24 21:10:07 · 957 阅读 · 0 评论 -
Linux-线程同步于互斥
IT⾏业这么⽕,涌⼊的⼈很多.俗话说林⼦⼤了啥⻦都有.⼤佬和菜鸡们两极分化的越来越严重.为了让 菜鸡们不太拖⼤佬的后腿,于是⼤佬们针对⼀些经典的常⻅的场景,给定了⼀些对应的解决⽅案,这个就 是设计模式。原创 2025-05-23 21:18:30 · 1362 阅读 · 0 评论 -
Linux-线程概念和控制
有没有提升效率的办法呢?计算机科学中的所有问题,都可以通过添加⼀个中间层来解决。MMU 引⼊ 了新武器,江湖⼈称快表的 TLB (其实,就是缓存)当 CPU 给 MMU 传新虚拟地址之后, MMU 先去问 TLB 那边有没有,如果有就直接拿到物理地址发到 总线给内存,⻬活。但 TLB 容量⽐较⼩,难免发⽣ Cache Miss ,这时候 MMU 还有保底的⽼武器⻚表,在⻚表中找到之后 MMU 除了把地址发到总线传给内存,还把这条映射关系给到TLB,让它记录 ⼀下刷新缓存。原创 2025-05-20 10:30:22 · 1124 阅读 · 0 评论 -
Linux-进程信号
你在⽹上买了很多件商品,再等待不同商品快递的到来。但即便快递没有到来,你也知道快递来临 时,你该怎么处理快递。也就是你能“识别快递”当快递员到了你楼下,你也收到快递到来的通知,但是你正在打游戏,需5min之后才能去取快递。那么在在这5min之内,你并没有下去去取快递,但是你是知道有快递到来了。也就是取快递的⾏为 并不是⼀定要⽴即执⾏,可以理解成“在合适的时候去取”。在收到通知,再到你拿到快递期间,是有⼀个时间窗⼝的,在这段时间,你并没有拿到快递,但是 你知道有⼀个快递已经来了。原创 2025-05-19 21:32:11 · 1162 阅读 · 0 评论 -
Linux-进程间通信
数据传输:⼀个进程需要将它的数据发送给另⼀个进程资源共享:多个进程之间共享同样的资源。通知事件:⼀个进程需要向另⼀个或⼀组进程发送消息,通知它(它们)发⽣了某种事件(如进 程终⽌时要通知⽗进程)。进程控制:有些进程希望完全控制另⼀个进程的执⾏(如Debug进程),此时控制进程希望能够 拦截另⼀个进程的所有陷⼊和异常,并能够及时知道它的状态改变。原创 2025-05-19 17:25:41 · 1328 阅读 · 0 评论 -
Linux-库的制作与原理
静态链接的出现,提⾼了程序的模块化⽔平。对于⼀个⼤的项⽬,不同的⼈可以独⽴地测试和开发 ⾃⼰的模块。通过静态链接,⽣成最终的可执⾏⽂件。我们知道静态链接会将编译产⽣的所有⽬标⽂件,和⽤到的各种库合并成⼀个独⽴的可执⾏⽂件, 其中我们会去修正模块间函数的跳转地址,也被叫做编译重定位(也叫做静态重定位)。⽽动态链接实际上将链接的整个过程推迟到了程序加载的时候。原创 2025-05-19 16:22:33 · 617 阅读 · 0 评论 -
Linux-基础IO
在认识返回值之前,先来认识⼀下两个概念: 系统调⽤ 和 库函数• 上⾯的 fopen fclose fread fwrite 都是C标准库当中的函数,我们称之为库函数(libc)。• ⽽ open close read write lseek 都属于系统提供的接⼝,称之为系统调⽤接⼝• 回忆⼀下我们讲操作系统概念时,画的⼀张图缓冲区是内存空间的⼀部分。也就是说,在内存空间中预留了⼀定的存储空间,这些存储空间⽤来缓冲输⼊或输出的数据,这部分预留的空间就叫做缓冲区。原创 2025-04-12 09:32:53 · 689 阅读 · 0 评论 -
Linux-Ext系列文件系统
我们看到,真正找到磁盘上⽂件的并不是⽂件名,⽽是inode。其实在linux中可以让多个⽂件名对应 于同⼀个inode。原创 2025-05-11 20:16:05 · 807 阅读 · 0 评论 -
Ubuntu24.04-中文输入法的切换
Ubuntu24.04在安装后自带中文全拼输入法。我自己设置的是之前我们熟悉的 ctrl+space。点击后,在键盘上设置你的快捷键。第一个:切换下一个输入法。第二个:切换上一个输入法。点击set,完成设置。原创 2025-04-02 20:36:27 · 1056 阅读 · 0 评论 -
Linux-进程控制
在继续学习新知识前,我们来思考函数和进程之间的相似性exec/exit就像call/return⼀个C程序有很多函数组成。⼀个函数可以调⽤另外⼀个函数,同时传递给它⼀些参数。被调⽤的函数执⾏⼀定的操作,然后返回⼀个值。每个函数都有他的局部变量,不同的函数通过call/return系统进⾏通信。这种通过参数和返回值在拥有私有数据的函数间通信的模式是结构化程序设计的基础。Linux⿎励将这种应⽤于程序之内的模式扩展到程序之间。如下图⼀个C程序可以fork/exec另⼀个程序,并传给它⼀些参数。原创 2025-03-17 19:47:13 · 659 阅读 · 0 评论 -
Linux-进程概念
• 认识冯诺依曼系统• 操作系统概念与定位• 深⼊理解进程概念,了解PCB• 学习进程状态,学会创建进程,掌握僵⼫进程和孤⼉进程,及其形成原因和危害• 了解进程调度,Linux进程优先级,理解进程竞争性与独⽴性,理解并⾏与并发• 理解进程切换,以及Linux2.6 kernel,O(1)调度算法架构• 理解环境变量,熟悉常⻅环境变量及相关指令, getenv/setenv函数• 理解C内存空间分配规律,了解进程内存映像和应⽤程序区别, 认识虚拟地址空间。原创 2025-03-15 21:36:19 · 632 阅读 · 0 评论 -
Linux-基础开发工具
参考资料GitHub - wsdjeg/vim-galore-zh_cn: Vim 从入门到精通。原创 2025-03-11 21:02:56 · 997 阅读 · 0 评论 -
Linux-权限
Linux严格意义上说的是⼀个操作系统,我们称之为“核⼼(kernel)“ ,但我们⼀般⽤⼾,不能直接使⽤kernel。⽽是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。如何理解?为什么不能直接使⽤kernel?从技术⻆度,Shell的最简单定义:命令⾏解释器(command Interpreter)主要包含:• 将使⽤者的命令翻译给核⼼(kernel)处理。• 同时,将核⼼的处理结果翻译给使⽤者。对⽐windows GUI,我们操作windows 不是直接操作win原创 2025-03-02 17:42:34 · 470 阅读 · 0 评论 -
Linux-基本指令3
语法: grep [选项] 搜寻字符串 ⽂件功能:在⽂件中搜索字符串,将找到的⾏打印出来常⽤选项:-i :忽略⼤⼩写的不同,所以⼤⼩写视为相同-n :顺便输出⾏号-v :反向选择,亦即显⽰出没有 '搜寻字符串' 内容的那⼀⾏。原创 2025-03-01 16:53:45 · 194 阅读 · 0 评论 -
Linux-基本指令2
mv命令是move的缩写,可以⽤来移动⽂件或者将⽂件改名(move (rename) files,经常⽤来备份⽂件或者⽬录语法: mv [选项] 源⽂件或⽬录 ⽬标⽂件或⽬录功能:常⽤选项:-f :force 强制的意思,如果⽬标⽂件已经存在,不会询问⽽直接覆盖-i :若⽬标⽂件 (destination) 已经存在时,就会询问是否覆盖!原创 2025-03-01 14:34:19 · 363 阅读 · 0 评论 -
Linux-基本指令1
常⽤选项:-f 或 --force 强⾏复制⽂件或⽬录, 不论⽬的⽂件或⽬录是否已经存在-i 或 --interactive 覆盖⽂件之前先询问⽤⼾-r 递归处理,将指定⽬录下的⽂件与⼦⽬录⼀并处理。若源⽂件或⽬录的形态,不属于⽬录或符号链接,则⼀律视为普通⽂件处理。原创 2025-02-28 16:14:04 · 393 阅读 · 0 评论 -
Linux宇宙-1
打开Linux的元宇宙原创 2024-09-25 21:58:52 · 567 阅读 · 0 评论 -
Ubuntu24.04安装教程
1.创建虚拟机(版本:VMware Workstation 17 Pro)2.选择自定义,然后点击下一步3.选择硬件的兼容性,一般默认,点击下一步4.选择安装操作系统,点击下一步5.选择Linux,点击下一步6.修改虚拟机的名称和安装位置,建议不要安装再C盘,点击下一步7.根据自己需求及逆行处理器配置,点击下一步8.配置虚拟机内存,一般为物理机内存一半,一8G为例,点击下一步9.网络配置,默认配置,点击下一步10.默认配置控制器类型,原创 2024-04-30 19:58:26 · 13129 阅读 · 21 评论 -
Ubuntu安装中文输入法
1.点击设置2.点击语言设置3.选择中文语法4.选择,然后重启5.更新系统名称6.回到步骤2,点击管理语言安装7.点击安装8.输入密码9.点击设置的键盘10.点击加号,选择汉语11.选择中文(智能拼音)12.点击添加13.点击右上角的‘中’或‘zh’图标,选择->中文(智能拼音)14.重启系统,中文输入法安装完成原创 2024-05-06 21:33:03 · 15394 阅读 · 0 评论 -
Ubuntu c++ 编译中的问题
1.编译中找不到文件或目录1.1要在C/C++配置中包含相关路径1.2要在CMakeLists.txt中添加依赖1.3保存重新编译colcon build原创 2024-05-10 20:32:37 · 379 阅读 · 0 评论 -
Ubuntu解决开机黑屏
图形驱动程序可能是导致黑屏问题的原因之一。使用命令行或恢复模式,尝试更新或重新安装图形驱动程序。在启动过程中按下Shift键,以进入Ubuntu的恢复模式。在恢复模式下,你可以尝试修复损坏的系统文件或重新配置图形驱动程序。首先,确保所有硬件设备(如显示器、键盘和鼠标)都正确连接并且正常工作.尝试重新插拔它们,确保它们连接牢固且没有松动。按下电源按钮,将计算机完全关机,然后再次启动。可以考虑重新安装Ubuntu操作系统,确保在重新安装前备份重要的数据。确保显示器正确连接到计算机,并且显示器输入源正确设置。原创 2024-05-26 20:42:47 · 8704 阅读 · 2 评论