- 博客(10)
- 资源 (1)
- 收藏
- 关注
原创 C++对象模型之继承与多态的探索
多态在C++中继承和多态为它的俩大特性:那么对于我们常说的动态多态,它是如何形成的? 通常我们都会说应用赋值兼容规则,让一个Base类指针或引用指向一个派生类对象,那么当我们在基类中定义出一个虚函数,在派生类中我们对它进行重写后。当我们用指向派生类对象的基类指针调用这个函数时,就会发生多态,当指针指向对象不同时,它就会调用不同类中的该函数。那么何为赋值兼容规则呢,为什么Base类指针就可以指向
2017-06-29 19:37:34 532
原创 守护进程
守护进程 它是特殊的进程。它独立于控制终端并周期性的执行某种任务或等待处理某些中断事件。其他进程都是在用户登录或运行程序时创建,在运行结束或用户注销时终止(因为用户注销就代表着会话注销,则这个会话中所有的进程都会终止)。 在Linux系统启动时,会启动很多系统服务进程,这些进程就是守护进程。通常为用户提供服务。我们可以通过ps axj 指令查看到当TPGID(前台进程组id)为-1时都为没
2017-06-29 18:28:37 421
原创 Linux 下多线程的消费者-生产者模型
消费者-生产者模型 所谓这个模型指在ipc时,由扮演的生产者进程产生数据,由扮演消费者的进程去拿走数据。 这个模型是由3种关系俩种角色一个场景所描述而成。 三种关系指: 消费者-消费者 ---> 互斥 生产者-生产者 ---> 互斥 消费者-生产者 ---> 同步与互斥 俩种角色指: 消费者与生产者
2017-06-07 17:29:17 773
原创 B-树
B树 它是多叉平衡树。 我们知道二叉搜索树、平衡二叉树、红黑树都是动态查找树,典型的二叉搜索树结构,查找的时间复杂度和树的高度相关为O(log2N)。 当我们查找时数据时一般可分为如下三情况: 数据无序 -----> 线性搜索 O(n) 有数数据 -----> 二分查找
2017-06-05 15:00:35 393
原创 Crond 与 Crontab
Crond Crond是linux系统用来定期执行命令或指定程序任务的一个守护进程。Crond会定期(默认每分钟检查一次)检查系统中是否有要执行的任务工作。如果有,便会根据其预先设定的定时任务规则自动执行该定时任务工作。这个Crond定时任务服务就相当于我们早上使用的闹钟一样。 linux系统中定时任务调度的工作可以分为以下两种情况:1、 linux系统自身定期执行的任务工作:系统周期性自行执行的
2017-06-29 22:59:27 272
原创 线程安全与可重入函数
线程安全 当一个函数被多个并发线程反复调用时,它会一直产生正确的结果,那么这个函数就是线程安全的。可重入函数 它是一类重要的线程安全的函数,其特点在于当它们被多个线程调用时,不会引用任何共享数据。它包括显式可重入函数与隐式可重入函数。显式就是在函数中所以数据的引用都是用户栈上的变量,可以显而易见的看出是可重入函数。隐式可重入函数指函数中的形参是通过指针或引用传递的,这些引用都指向了非共享的数据
2017-06-17 19:12:48 322
原创 sleep函数的实现
在linux下,通过调用信号的一系列函数来模拟sleep函数的实现。竞态条件:因时序问题而导致的结果不正确称为竞态条件。普通版本的sleep实现:#include#include#includevoid handle (int x){} unsigned int mysleep(size_t x){ int ret=0; struct sigactio
2017-06-16 14:30:25 1057
原创 Top k - 海量数据处理问题
所谓的top k 问题,海量数据找最大的或者最小的前K个数据。最大的这种问题处理方式:先进行哈希分割,再将这些数据前K个元素建立一个最小堆,如果之后的元素比堆顶大的话,将堆顶元素替换为该元素,这样将剩余的元素依次这样遍历完,这个堆的所有元素就是最大的前K个元素。最小的这种问题处理方式:先进行哈希分割,将这些数据,前K个元素建立一个最大堆,如果其后元素,比堆顶小,用该元素完成替换即可
2017-06-15 23:09:25 289
原创 子进程的异步等待方式
进程等待 在写多进程程序时,我们创建的子进程要自己回收否则会造成僵尸进程。如果调用waitpid阻塞等待,这会很浪费性能,导致父进程不能做其他的事情去一直阻塞等待子进程,如果选择非阻塞,父进程在执行其他任务时还要不停的去查看子进程是否退出这样太麻烦。 所以我们可以应该子进程退出时会向父进程发送一个SIGCHLD信号,我们应用它编写一个异步等待的程序,这样父进程只需专心做...
2017-06-15 22:55:54 349
原创 GDB 下的多线程多进程调试
多线程 通过set non-stop 来设置当一个线程中断在断点时,整个程序其他线程可以继续运行。 通过info threads 来查看生成的子线程 通过thread 编号可以切换线程多进程 当我们调试多进程程序前,需要设置俩个选项。 follow-fork-mode (默认parent)和 detach-on-fork(默
2017-06-08 18:48:36 475
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人