- 博客(12)
- 资源 (4)
- 收藏
- 关注
转载 const char*, char const*, char*const
const char*, char const*, char*const的区别问题几乎是C++面试中每次都会有的题目。 事实上这个概念谁都有,只是三种声明方式非常相似很容易记混。 Bjarne在他的The C++ Programming Language里面给出过一个助记的方法: 把一个声明从右向左读。 char * const cp; ( * 读成 pointer to ) cp is...
2019-01-09 09:50:18 328
转载 深度分析同步、异步、阻塞、非阻塞
同步和异步与阻塞与非阻塞是在通信和I/O中常用的字眼,之前在许多地方同步与阻塞,异步与非阻塞常常被混为一谈,带来了许多混乱,其实同步、异步和阻塞、非阻塞是两个不同的概念。最近随着异步IO(AIO)越来越多的应用,对这两个概念进行区分和解释的文章也越来越多,但是问起身边的同学,能说清楚的倒也不多,所以我就顺便跟风写一篇科普文吧(越来越水了=_=)。同步(synchronous)和异步(async...
2019-01-08 15:39:53 153
转载 程序员面试如何与HR谈薪
作为“生在红旗下,长在春风里”的“四有新人”(现在90后00后还有知道这个词的吗?_),张小方同志从毕业至今,与各路HR、HRD斗智斗勇,再加上自己的不懈努力,历尽千辛万苦终于将毕业时的1500每月的薪资提高了二十几倍。本文就和大家唠唠这些年风里来雨里去无数次铩羽而归、兢兢业业、如履薄冰、诚惶诚恐、夜不能寐、枕戈待旦、惴惴不安、临盆一脚,最终守得云开见月明的谈薪经历。当然,本文说的主要是技术面试中...
2019-01-08 12:30:12 478
原创 linux内核分析--内核中的数据结构之红黑树(续)
#include<linux/rbtree.h>#include <linux/string.h>#include "kn_common.h" MODULE_LICENSE("Dual BSD/GPL");struct student{ int id; char* name; struct rb_node node;}; stat...
2019-01-04 15:27:14 167
原创 linux内核分析--内核中的数据结构之红黑树(四)
红黑树由于节点颜色的特性,保证其是一种自平衡的二叉搜索树。红黑树的一系列规则虽然实现起来比较复杂,但是遵循起来却比较简单,而且红黑树的插入,删除性能也还不错。所以红黑树在内核中的应用非常广泛,掌握好红黑树,即有利于阅读内核源码,也可以在自己的代码中借鉴这种数据结构。红黑树必须满足的规则:所有节点都有颜色,要么红色,要么黑色根节点是黑色,所有叶子节点也是黑色叶子节点中不包含数据...
2019-01-04 15:25:59 531
原创 linux内核分析--内核中使用的数据结构之哈希表hlist(三)
前言:1.基本概念:散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。2. 常用的构造散列函数的方法散列函数能使对一个数据序列的访问过程更加迅速有效,通过散列函数,数据元素将被更快地定位。散列表的常用构造...
2019-01-04 15:21:32 1064
转载 muduo库整体架构简析
muduo是一个高质量的Reactor网络库,采用one loop per thread + thread pool架构实现,代码简洁,逻辑清晰,是学习网络编程的很好的典范。 muduo的代码分为两部分,base和net,base部分实现一些基础功能,例如log, thread, threadpool, mutex, queue 等,这些基础模块在后面网络库中很多地方都可以复用, bas...
2019-01-04 14:34:36 237
转载 linux内核--使用内核队列实现ringbuffer
/**@brief 仿照linux kfifo写的ring buffer *@atuher Anker date:2013-12-18* ring_buffer.h * */ #ifndef KFIFO_HEADER_H #define KFIFO_HEADER_H #include <inttypes.h>#include <string.h>#i...
2019-01-04 14:00:05 1284 2
转载 linux内核分析--内核中的数据结构之队列(二)
内核中的队列是以字节形式保存数据的,所以获取数据的时候,需要知道数据的大小。如果从队列中取得数据时指定的大小不对的话,取得数据会不完整或过大。内核中关于队列定义的头文件位于:<linux/kfifo.h> include/linux/kfifo.h头文件中定义的函数的实现位于:kernel/kfifo.c内核队列编程需要注意的是:队列的size在初始化时,始终设定为...
2019-01-04 13:51:19 530
原创 引用和指针
在学习C语言的时候,函数传参介绍了两种方式,一种是传值,另一种是传址。传值的时候,函数调用过程中会生成一种临时变量用形参的形式代替,最终把实参的值传递给新分配的临时变量。这种方式的有点很明显,就是避免函数调用的副作用,确定无法改变形参的值,不过缺点也是这个,当需要改变形参的时候,却无法实行。这个时候可以通过传址,即,通过指针的传递来改变实参的值。比如:最开始我们学习的交换函数。void ...
2019-01-04 10:38:31 107
原创 C++三大特性:封装,继承,多态
封装可以隐藏实现细节,使得代码模块化,继承可以扩展已存在的模块,它们目的都是为了:代码重用。而多态是为了实现另一个目的:接口重用。什么是多态? eg:开门,开窗户,开电脑,这里“开”就是多态。 多态性可以简单概括为“一个接口,多种实现”,是通过虚函数实现的。基类提供一个虚接口,其派生类重写这个接口,这样就构成了多态。面向对象———封装(特性之一) 封装是面...
2019-01-04 10:29:56 163
转载 Linux Epoll介绍和程序实例
1. Epoll是何方神圣?Epoll可是当前在Linux下开发大规模并发网络程序的热门人选,Epoll 在Linux2.6内核中正式引入,和select相似,其实都I/O多路复用技术而已,并没有什么神秘的。其实在Linux下设计并发网络程序,向来不缺少方法,比如典型的Apache模型(Process Per Connection,简称PPC),TPC(Thread PerConnecti...
2019-01-04 10:11:36 167
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人