图解 Linux 文件系统

之前我写过有关 Linux 文件系统源码分析的文章,但从源码角度分析文件系统略显枯燥(对新手不友好),所以这次主要通过图文的方式来讲解 Linux 文件系统的原理,而不用陷入源代码的深渊之中。一、硬盘简介在介绍文件系统前,我们先来了解一下 硬盘。众所周知,内存在断电后数据就会丢失,所以现代计算机都通过 硬盘 来进行数据存储。也就是说,硬盘中的数据在断电后依然...
2024-02-12 阅读全文 →

校招进腾讯,二本也可以?

熟悉我的朋友应该知道,我对自己的介绍一直是:普通二本毕业,本科进腾讯,去过外企,肝过头条,目前回腾讯窝着。我经常在后台收到小伙伴的私信:“你真的是二本毕业吗?进腾讯有什么秘诀?”“我不是985、211,能不能进腾讯?”“哥,是不是随着竞争越来越激烈,普通学校与BAT彻底无缘?”对于这类问题、这种迷茫,普通院校毕业的我,可以说是感同深受。曾几何时,我也无数次问...
2024-02-12 阅读全文 →

逻辑面试题:图解1+1=2最复杂的打开方式

01故事起源一个逻辑学教授,有三个学生,而且三个学生都非常聪明!  有一天教授给他们出了一个题:  教授在每个人脑门上贴了一张纸条每个人的纸条上都写了一个正整数,且某两个数的和等于第三个数每个人可以看见另两个数,但看不见自己的教授问第一个学生:你能猜出自己的数吗?回答:不能。  问第二个,不能;第三...
2024-02-12 阅读全文 →

为何某些公司不允许使用 C++ STL?

作者:陈甫鸼来源:知乎,可点击阅读原文你们公司允许使用C++STL吗?各位老铁可以在我价值¥2700的评论区留言。最初开始禁用 C++ STL,是因为早期项目编码实践中留下的惯例,被后来的程序员继承下来。老项目中这种选择尤其地多。不过如果有人将其上升到公司行为在不同项目中全面禁用 STL,则没有必要,而且我倾向于做这种决定的人并不理解 C++ 编译系统。一般...
2024-02-12 阅读全文 →

深入理解Linux内核

1.开场白环境:处理器架构:arm64内核源码:linux-5.11ubuntu版本:20.04.1代码阅读工具:vim+ctags+cscope我们或许经常听说过内核抢占,可是我们是否真正理解它呢?内核抢占和抢占式内核究竟有什么关系呢?抢占计数器究竟干什么用?... 本文我们就来好好讨论下,关于内核抢占的一些技术细节,力求让大家理解内核抢占。注:本文主要关...
2024-02-12 阅读全文 →

CPU是如何制造出来的?|高清图解

CPU是现代计算机的核心部件,又称为“微处理器”。对于PC而言,CPU的规格与频率常常被用来作为衡量一台电脑性能强弱重要指标。Intelx86架构已经经历了二十多个年头,而x86架构的CPU对我们大多数人的工作、生活影响颇为深远。许多对电脑知识略知一二的朋友大多会知道CPU里面最重要的东西就是晶体管了,提高CPU的速度,最重要的一点说白了就是如何在相同的CP...
2024-02-12 阅读全文 →

size_t 这个类型的意义是什么?

大家好,我是程序喵。在知乎上看到一个好问题,精选了三个优质回答,分享给大家!类型名称不直观,从size_t这个名字很难理解它的用处,使用时候还要特别留意是unsigned类型,而且在数数的时候可以用int或者unsigned 代替。这种类型的优势在哪里?1学过计算机组成原理应该不会对此有疑问。int小于等于数据线宽度,size_t大于等于地址线宽度。size...
2024-02-12 阅读全文 →

捋一捋系统调用

最近C++技术交流群发现了很多水平很高的朋友,欢迎大家来加喵哥微信,进群一起讨论计算机知识!正文:系统调用就是调用操作系统提供的一系列内核功能函数,因为内核总是对用户程序持不信任的态度,一些核心功能不能交由用户程序来实现执行。用户程序只能发出请求,然后内核调用相应的内核函数来帮着处理,将结果返回给应用程序。如此才能保证系统的稳定和安全,关于系统调用的这些理论...
2024-02-12 阅读全文 →

C++后台开发知识点及学习路线

点击上方 蓝字  可以关注我呢!校招形势在去年结束的秋季招聘中,后台开发或服务器开发的岗位需求一度火热,甚至超过了算法岗。不少同学从诸神黄昏的算法岗战场上退下,转向更偏向工程能力的后台开发岗,从而造成后台开发岗位竞争的大爆发。后台开发工程师主流使用的编程语言有C++、Java、PHP以及目前慢慢流行的Golang等。本文就将以C...
2024-02-12 阅读全文 →

右值引用的意义!

文章来源:知乎|作者:Tinro右值引用是C++11中最重要的新特性之一,它解决了C++中大量的历史遗留问题,使C++标准库的实现在多种场景下消除了不必要的额外开销(如std::vector, std::string),也使得另外一些标准库(如std::unique_ptr, std::function)成为可能。即使你并不直接使用右值引用,也可以通过标准库...
2024-02-12 阅读全文 →

一文读懂 | 进程怎么绑定 CPU

昨天在群里有朋友问:把进程绑定到某个 CPU 上运行是怎么实现的。首先,我们先来了解下将进程与 CPU 进行绑定的好处。进程绑定 CPU 的好处:在多核 CPU 结构中,每个核心有各自的L1、L2缓存,而L3缓存是共用的。如果一个进程在核心间来回切换,各个核心的缓存命中率就会受到影响。相反如果进程不管如何调度,都始终可以在一个核心上执行,那么其数据的L1、L...
2024-02-12 阅读全文 →

深入理解ELF文件

ELF文件(Executable Linkable Format)是一种文件存储格式。Linux下的目标文件和可执行文件都按照该格式进行存储,有必要做个总结。1. 链接举例2. ELF文件类型2.1 可重定位目标文件(.o文件)2.2 可执行目标文件(a.out文件)2.3 共享对象文件(.so文件)3. ELF文件作用4. ELF文件格式4.1 从编译和链...
2024-02-12 阅读全文 →

我对经验的理解:一点小思考

经验是什么上面这张图,大概在 4 月份的时候我就画出来了,这也是这段时间以来,我一直在思考一个问题:到底什么才是经验?我输出的文章,究竟对读者的帮助有多大?首先啊,我不是说自己的想法很高尚,是完全一点私心没有的助人为乐行为。在公众号里写文章,最希望的结果就是让更多的人看到文章、关注我,形成正反馈之后,就会有更强的意愿来持续输出。说明了这一点之后,我们再来从知...
2024-02-12 阅读全文 →

双非研二师弟的春招总结和实习感悟

大家好,我是阿秀。考虑到最近校招提前批已经开始了,最近会多分享一些校招秋招经验!前段时间有位研二师弟经过自己的努力终于拿到了字节和腾讯的offer,跟我分享他春招过程和实习感悟,我感觉还是挺有意义的,特意整理出来跟大家分享一波!其实这位粉丝,早些关注我的朋友是知道他的,下面这篇文章的主人公就是他,这是他第二次给我投稿了。阿秀朋友先后折戟腾讯、字节、快手、网易...
2024-02-12 阅读全文 →

推荐一本C++书籍!

千呼万唤始出来亲爱的各位读者,我的新书《C++ 服务器开发精髓》终于终于终于与大家见面了,图书如下:图书的封面设计很精美,当然内容一定不负众望。因出版社老师要求提供一张照片放到封面上,今年的 6 月 1 日儿童节去拍了一张,照片拍出来放在下面大家自己看吧。人到中年,生活不易,没有少年时代那种懵懂与青涩,多了一份厚实与坚定了。一些想做的事情...
2024-02-12 阅读全文 →

有了这几个Linux 技巧,让你工作效率翻倍!

谨慎删除文件如果要谨慎使用 rm 命令,可以为它设置一个别名,在删除文件之前需要进行确认才能删除。有些系统管理员会默认使用这个别名,对于这种情况,你可能需要看看下一个技巧。$ rm -i    <== 请求确认关闭别名你可以使用 unalias 命令以交互方式禁用别名。它不会更改别名的配置,而仅仅是暂时禁用,直到下次登录或重新设置了...
2024-02-12 阅读全文 →

这是我平时看的技术视频!

现在网上的学习资料是真的丰富,我上大学时除了图书馆借书看之外很难看到自己想看的知识,羡慕现在的大学生可以在网上搜到海量的学习资料,甚至可以去听清华北大等名校教授的课程,这对自己的职业发展是非常有好处的。我记得刚毕业的时候做嵌入式linux开发,市面上只能看韦东山和宋宝华等老师的书籍,遇到不理解的知识也很难找到人一起讨论,更不要说现在微信群里小伙伴们的学习。现...
2024-02-12 阅读全文 →

Linux 常见面试题汇总

置顶/星标公众号????,硬核文章第一时间送达! 来源 | thinkwon.blog.csdn.net/本文一共 3W + 字,分别从 Linux概述、磁盘、目录、文件、安全、语法级、实战、文件管理命令、文档编辑命令、磁盘管理命令、网络通讯命令、系统管理命令、备份压缩命令等方面拆解 Linux 知识点。本文预计阅读时间 2h,可以先收藏,慢慢读。...
2024-02-12 阅读全文 →

深入理解mmap

1.开场白环境:处理器架构:arm64内核源码:linux-5.11ubuntu版本:20.04.1代码阅读工具:vim+ctags+cscope我们知道,linux系统中用户空间和内核空间是隔离的,用户空间程序不能随意的访问内核空间数据,只能通过中断或者异常的方式进入内核态,一般情况下,我们使用copy_to_user和copy_from_user等内核a...
2024-02-12 阅读全文 →

完全剖析 - Linux虚拟内存空间管理

在 《漫画解说内存映射》一文中介绍过 虚拟内存 与 物理内存 映射的原理与过程,虚拟内存与物理内存进行映射的过程被称为 内存映射。内存映射是硬件(内存管理单元)级别的功能,必须按照硬件的规范设置好内存映射的关系,进程才能正常运行。但内存映射并不能区分内存的用途,比如我们想知道虚拟内存区间 0 ~ 2MB 是用作存储数据还是存储指令,这就很难从内存映射中获取到...
2024-02-12 阅读全文 →

上海有哪些牛逼的互联网公司?

作者:墨菲来源:https://zhuanlan.zhihu.com/p/191577083第一梯队:六巨头1.阿里巴巴(阿里上海研发中心,闵行大虹桥,本地生活总部:盒马/口碑,阿里国际站等,10-10-5,加班氛围浓,年底一般1+3=4个月,极少数最多可拿7个月,考核按3-6-1比例);2.腾讯(腾讯华东总部,徐汇漕河泾,游戏、人工智能、云计算等,10-1...
2024-02-12 阅读全文 →

编程思考:对象生命周期的问题

前情提要只要写过 c/c++ 的项目的童鞋应该对对象生命周期的问题记忆犹新。怕有人还不理解这个问题,笔者先介绍下什么是生命周期的问题?一个 struct 结构体生命周期分为三个步骤:出生:malloc 分配结构体内存,并且初始化;使用:这个就是对内存的常规使用了;销毁:free 释放这个内存块;最典型结构体“生命周期”问题的场景就是:你在使用对象正嗨的时候,...
2024-02-12 阅读全文 →

C++编程习惯与编程要点

来源:CPP开发前沿以良好的方式编写C++ class假设现在我们要实现一个复数类complex,在类的实现过程中探索良好的编程习惯。① Header(头文件)中的防卫式声明complex.h:# ifndef __COMPLEX__# define __COMPLEX__class complex{}# endif防止头文件的内容被多次包含。② 把数据放在...
2024-02-12 阅读全文 →

C++并发编程(C++11到C++17)

置顶/星标公众号????,硬核文章第一时间送达!为什么要并发编程大型的软件项目常常包含非常多的任务需要处理。例如:对于大量数据的数据流处理,或者是包含复杂GUI界面的应用程序。如果将所有的任务都以串行的方式执行,则整个系统的效率将会非常低下,应用程序的用户体验会非常的差。另一方面,自上个世纪六七十年代英特尔创始人之一 Gordon Moore 提出&nbsp...
2024-02-12 阅读全文 →

百度C++工程师的那些极限优化(并发篇)

导读:对于工程经验比较丰富的同学,并发应该也并不是陌生的概念了,但是每个人所理解的并发问题,却又往往并不统一,本文系统梳理了百度C++工程师在进行并发优化时所作的工作。全文15706字,预计阅读时间24分钟。一、背景简单回顾一下,一个程序的性能构成要件大概有三个,即算法复杂度、IO开销和并发能力。由于现代计算机体系结构复杂化,造成很多时候,工程师的性能优化会...
2024-02-12 阅读全文 →

百度C++工程师的那些极限优化(内存篇)

导读:在百度看似简简单单的界面后面,是遍布全国的各个数据中心里,运转着的海量C++服务。如何提升性能,降低延时和成本就成了百度C++工程师的必修功课。伴随着优化的深入攻坚,诞生并积累下来一系列的性能优化理论和方案,其中不乏一些冷门但精巧实用的经验和技巧。本文从内存访问角度,收集总结了一些具有通用意义的典型案例,分享出来和大家学习交流。1  背景在百...
2024-02-12 阅读全文 →

C++基础知识汇总

扫码关注“程序喵大人”,选择“星标”公众号重磅干货,第一时间送达! 来源:高效程序员 链接:https://mp.weixin.qq.com/s/z2ysvalLedD3YzRrptq2nw大家好,应粉丝要求,我们今天带来了C++的基础知识大汇总,当然这是精简版的,但是篇幅也不少,应该说该有的也都有了,建议大家收藏慢慢学习,同时希望对大家...
2024-02-12 阅读全文 →

吐血整理 | 肝翻 Linux 进程调度所有知识点

前面我们重点分析了如何通过 fork, vfork, pthread_create 去创建一个进程或者线程,以及后面说了它们共同调用 do_fork 的实现。现在已经知道一个进程是如何创建的,但是进程何时被执行,需要调度器来选择。所以这一节我们介绍下进程调度和进程切换的详情。进程的分类在 CPU 的角度看进程行为的话,可以分为两类:CPU 消耗型:此类进程就...
2024-02-12 阅读全文 →

提升C++开发效率的几个小技巧

我们说的 Modern C++,一般指的是 C++11 及以后的标准,从 C++ 11 开始,Modern C++ 引入了大量的实用的特性,主要是两大方面,学习的时候也可以从这两大方面学习:增强或者改善的语法特性;新增的或者改善的 STL 库。我们来看几个具体的案例:案例 1:统一的类成员初始化语法与 std::initializer_list<T&g...
2024-02-12 阅读全文 →

如何阅读源码

大家好,我是飞哥!经常在后台收到读者的交流,Linux 源码那么庞大,飞哥你是如何读的呢?由于问这个问题的太多,我想有必要专门写一篇文章聊一聊。首先,我先说一点,其实我本人不是搞内核相关工作的。我和大多数同学都一样,从事的也是应用层上的开发,负责的是后端模块。那我为什么要研究源码这个之前我说过,是因为我在多年的工作中遇到的很多问题都是底层相关的。不深入底层看...
2024-02-12 阅读全文 →