姜茶.Blog

这是一个正在成长的程序员

搞定技术面试

Unix 五种 IO 模型

Unix 五种 IO 模型 Unix 的 IO 模型有哪几种?分别是咋样的? 各种IO模型有什么特点? 阻塞和非阻塞的区别? 同步和异步的区别? epoll 为什么比较高效? IO 模型 Unix 提供了五种 IO 模型,分别是阻塞式IO、非阻塞式IO、IO复用、信号驱动式IO、异步IO。 一个IO操作通常包括两个阶段: 等待数据准备好; 从内核向进程复...

搞定技术面试

图算法相关内容

图 图的基本表示 表示一个图有两种标准方法:图邻接表和图的邻接矩阵; 邻接矩阵就是用数组(二维)表示图。具体可以看下面例子。当然,这种情况很容易造成空间浪费,所以很多人进行空间优化,甚至是邻接表的方式。 邻接表咋是数组嵌套链表,这样会比邻接矩阵省不少空间,但对无向图来说,依旧会浪费一半的空间。 在本文中,使用 G=(V,E) 表示一个图,V表示顶点,E表示边。 图的常见概念 ...

给 Github pages 用上 CDN加速

阿里云 & 腾讯云

给博客用上 CDN 加速 我们先假设大家已经知道如何使用 github pages 托管自己的静态博客网站了,这样我们不用花钱自己维护一个云服务器,也不需要在C某家充满广告的博客网站上写博客,很美好对吧。 但 Github pages 在国内的效果不佳,常常出现打开缓慢、或者无法打开等情况。 为了提高网站的访问速度,除了减少网页的请求数量,精简网页所依赖的js、css文件外,最常用的就是...

操作系统

C 程序的存储空间分布

C语言程序的存储空间布局 C程序一般有以下几个部分组成 正文段 初始化数据段 未初始化数据段 栈 堆 正文段:存储CPU执行的机器指令部分,正文段常常是只读的,防止其他程序意外修改指令;正文段可以共享,同一个程序运行多个时,系统内只有一个正文段的副本。 初始化数据段:通常称为数据段,包含了明确需要赋初值的变量。这个分区一般存储所有赋初值了的全局变量和静...

操作系统

在 main() 函数运行前发生了什么

在 main函数之前发生了什么 对于编程人员来讲,main 函数是程序的入口,但事实上 main 函数之前也发生了很多操作。在 main 函数开始前,分成两部分 “系统调用部分” 和 “C++ 程序自身的部分”。 我们首先假设程序的 main 函数原型是int main(int argc, char *argv[]);,其中,argc 指命令行参数的数目, argv 是指向参数的各个指针...

Operating System

C语言程序栈

操作系统 编译 UNIX上编译一个c语言程序使用如下命令生成可执行文件gcc -o hello hello.c 编译系统分为预处理器(preprocessor)、编译器(compiler)、汇编器(assembler)和链接器(linker)四个部分组成。 预处理阶段:预处理器(cpp)将根据以字符 ‘#’ 开始的命令修改原始的C语言程序,得到另一个C语言程序,通常以.i作为文件...

Hello CMake

入门 CMake

GCC 编译过程 UNIX上编译一个c语言程序使用如下命令生成可执行文件gcc -o hello hello.c 编译系统分为预处理器(preprocessor)、编译器(compiler)、汇编器(assembler)和链接器(linker)四个部分组成。 预处理阶段:预处理器(cpp)将根据以字符 ‘#’ 开始的命令修改原始的C语言程序,得到另一个C语言程序,通常以.i作为文件...

Share mouse and keyboard

共享鼠标和键盘

键鼠共享 Synergy 是一款在不同操作系统间共享键鼠的软件,支持 Windows, Mac OS X, LINUX。 非常适合程序猿在桌上有多台电脑时使用,配置参考 破解 有个老外根据源码,写了个C++ 程序用来激活程序,该程序有个在线执行的地址C++ Shell,可以在线执行,获得序列码。 也可以直接复制下方的代码,编译成C++ 程序,经验证,此破解程序在 1.10版本依旧有效,尚...

Ice Breaker

敲冰块

敲冰块 利用随机数来实现一个掷骰子的功能 点击跳转

OpenMesh

半边数据结构汇总

半边数据结构 半边数据结构具有如下特点: 每个顶点对应一个出边。例如,一个半边从顶点1出发; 每个面对应一个半边为它的边界,例如面2; 每个半边指向的对象如下: 指向下一个顶点3; 指向一个面4; 指向下一边半边5; 指向反向的半边6; 指向上一个半边7(可选) OpenMesh ...