我太菜了

喜欢写Hello World的未来程序员.

extern "C"的作用

C/C++编译的区别

鹿门月照开烟树 忽到庞公栖隐处 目前我直到 extern "C" 的作用就是告诉C++编译器在生成符号的时候按照C的风格生成。 普遍用在两个方面: C++函数声明时,使用 extern "C" 可以让C也能调用到这个函数 C++调用部分C函数时,使用 extern "C" 包裹 include 能够成功链接到对应的C函数 第一个用法常常用在C++需要编写某些...

关于系统调用

过程是怎么样的,和glibc的关系?

春宵一刻值千金 花有清香月有阴 很多的资料都会把 read/fork/mmap 等函数称之为系统调用,经过一番了解后,我发现这种叫法应该算是广义的系统调用,也就说这些函数实际上不是真的系统调用。 一般我们在C/C++代码中调用的 read/fork/mmap 等函数其实只是libc/glibc 提供的封装函数,这些函数的实现在 libc.so 里。狭义上的系统调用应该是经过...

632. Smallest Range Covering Elements from K Lists

632. 最小区间

解把飞花蒙日月 不知天地有清霜 每日一题连续hard,让人有点难受呀。 大部分情况下,hard我都搞不出来呀,思路也是看了大佬的。 思路大概是这样: 首先把k个数组合并成一个数组 数组的每个元素都是一个结构体 结构体包含元素的值以及元素原来所在的数组的索引 将合并的数组进行排序 在该有序数组中查找一个区间,...

共享内存和tmpfs

操作系统

角声满天秋色里 塞上燕脂凝夜紫 之前有写过一篇文章 mmap基本用法和共享内存,讲了通过mmap使用共享内存的基本操作,但是对共享内存原理(sys v, posix)基本没怎么介绍,这里当是自己学习,好好深挖一波。 最难受的是之前面过一次wxg二面,面了三个小时(确实是3小时。。。我这么菜完全不值得3小时),面试官当时问了我共享内存(System v, POSIX)两种实现...

329. Longest Increasing Path in a Matrix

329. 矩阵中的最长递增路径

心似双丝网 中有千千结 虽然是每天刷一道题,但好几次都没时间写题解。。。 这道题算是dp的一种,一般从暴力的角度出发很容易想到dfs能直接获得每个点作为起始点得到的最长递增路径。 这样的话,对着每个点做一次暴力dfs,就得到答案了。 不过显然这样子会超时,复杂度差不多O((m * n)^2)。。。 仔细想想实际上,dfs在经过每个点的时候,无论是不是从这个点开始的,都...

浅谈C++虚函数的实现

虚函数可以在构造函数中调用吗?

曲径通幽处 禅房花木深 前言 在比较多的面经中有看到这么一个问题:虚函数可以在构造函数和析构函数中调用吗? 从能不能通过编译并执行的角度来说:肯定是可以的。 但是不推荐这么做。 虚函数在构造/析构函数中调用 前面结论是肯定是能编译通过的。。。为了尽快验证这个事情,这里给一个简单的小例子。 #include <bits/stdc++.h> using ...

TCP拥塞控制算法Reno

计算机网络

盈盈一水间 脉脉不得语 春招实习的时候,经过几次面试,发现这里都讲的不是很好,打算用心好好整一下。 为什么会有拥塞控制 如果说把网络链路比喻成一根水管,于是传输数据就成了给水管注水。 所以对应网络上能存在的数据量: 网络上能容量的数据包的数量(水管容量) = 链路带宽(水管截面积) x 往返延迟(水管长度) 这样存在的问题就是水的流量太大的时候,会发生爆...

在函数入口出口插桩

C++插桩

千里共如何 微风吹兰杜 知乎上有个问题 如何快速地在每个函数入口处加入相同的语句?。 问题好像已经蛮久了,最近工作中需要做一个插桩的工具,然后结合蓝色大大的回答,这里我讲个可能更可用,更简单的方法。 因为clang也支持,所以实际上还能用在android上和ios上。。。这样一想可以做的事情就很多了23333。 插桩 毫无疑问,像蓝色说的那样,我们可以利用clang/...

785. Is Graph Bipartite?

785. 二分图

人言落日是天涯 望极天涯不见家 唉,孤陋寡闻,第一次听到“染色”这个词。 简单来说,可以在深度遍历的过程中,依次将邻接点染成与自己相反的颜色。 在遍历的过程中,如果碰到已经被染色,但是和自己颜色一样的邻接点,就说明这个图无法被二分。 因为是深度遍历,同一个连通图在一次遍历中,都会被染色,所以每次深度遍历第一个结点的时候,任意颜色都可以的。 class Solution...

174. Dungeon Game

174. 地下城游戏

少年安得长少年 海波尚变为桑田 这种题目,基本就能考虑套dp了。 然后发现按照从上到下,从左到右进行递推,并不能推出什么关系。 一般这个时候就可以考虑反向递推了。 解法实现已经很多了,我这里解释一下很多人没讲清楚的东西。 其实骑士在经过每个房间时,存在两种状态,一种是进入房间 (i, j) 之前,一种是进入房间 (i, j) 之后。 这里我们用 dp[i][j]...