- 博客(35)
- 收藏
- 关注
转载 二叉树广度/深度优先遍历
转载自 https://www.cnblogs.com/llguanli/p/7363657.html二叉树是一种非常重要的数据结构,非常多其他数据结构都是基于二叉树的基础演变而来的。对于二叉树,有深度遍历和广度遍历,深度遍历有前序、中序以及后序三种遍历方法,广度遍历即我们寻常所说的层次遍历。由于树的定义本身就是递归定义,因此採用递归的方法去实现树的三种遍历不仅easy理解并且代码非常简洁,而对...
2018-05-14 14:02:25
5178
转载 Linux下gcc编译器生成和使用静态库和动态库学习笔记
转载自 https://blog.youkuaiyun.com/arackethis/article/details/43340065我们通常把一些公用函数制作成函数库,供其它程序使用。函数库分为静态库和动态库两种。静态库在程序编译时会被链接并拷贝到目标代码中,程序运行时将不再需要该静态库。动态库在程序编译时并不会被拷贝到目标代码中,而是在程序运行时才被载入,因此在程序运行时还需要动态库存在。本质上说库是一种...
2018-05-04 17:18:02
220
转载 定义与声明、头文件与extern总结(转)
转自:https://www.cnblogs.com/tshua/p/5741009.html用#include可以包含其他头文件中变量、函数的声明,为什么还要extern关键字? 如果我想引用一个全局变量或函数a,我只要直接在源文件中包含#include<xxx.h> (xxx.h包含了a的声明)不就可以了么,为什么还要用extern呢?? 这个问题一直也是似...
2018-05-04 16:19:55
459
1
转载 https://blog.youkuaiyun.com/benkaoya/article/details/17342711
1 参考资料Ø http://www.ibm.com/developerworks/cn/linux/1307_liuming_linuxtime1/Ø 《linux系统编程》第“10.9 定时器”章节2 概要要在linux中使用定时器,有如下三种方法:定时器方式一个进程允许使用的数量通知方式简单的闹钟 - alarm1个Ø 信号:SIGALRM间歇定时器 - setitimer1个...
2018-04-09 10:38:29
342
转载 epoll与fork
转载自 https://blog.youkuaiyun.com/gqtcgq/article/details/48791745使用epoll时,如果在调用epoll_create之后,调用了fork创建子进程,那么父子进程虽然有各自epoll实例的副本,但是在内核中,它们引用的是同一个实例。子进程向自己的epoll实例添加、修改和删除文件描述符时,是可以影响到父进程的epoll_wait的。所以会发生意想不到...
2018-04-04 22:14:48
717
转载 Linux下I/O多路转接之epoll(绝对经典)
转载自 https://www.cnblogs.com/melons/p/5791788.htmlepoll关于Linux下I/O多路转接之epoll函数,什么返回值,什么参数,我不想再多的解释,您不想移驾,我给你移来:http://blog.youkuaiyun.com/colder2008/article/details/5812487 返回值,参数说明等;最后将一个用epoll设计的网络服务器...
2018-04-03 16:55:53
194
转载 POSIX线程互斥量的使用
转载自 https://www.cnblogs.com/blueclue/archive/2010/07/17/1779594.htmlMutex Variables(互斥量)Mutex(互斥量)是“mutual exclusion”的缩写,互斥量最主要的用途是在多线程中对共享数据同进行写操作时同步线程并保护数据。互斥量在保护共享数据资源时可以把它想象成一把锁,在Pthreads库中互斥量最基本...
2018-03-23 13:21:36
279
转载 linux多线程之自旋锁
转载自 http://blog.youkuaiyun.com/daiyudong2020/article/details/52202526基本概念:何谓自旋锁?它是为实现保护共享资源而提出一种锁机制。其实,自旋锁与互斥锁比较类似,它们都是为了解决对某项资源的互斥使用。无论是互斥锁,还是自旋锁,在任何时刻,最多只能有一个保持者,也就说,在任何时刻最多只能有一个执行单元获得锁。但是两者在调度机制上略有不同。对于互...
2018-03-22 17:21:46
784
转载 linux c之信号signal处理机制
最近同事的程序设计过程中用到了Linux的signal机制,从而引发了我对Linux中signal机制的思考。Signal机制在Linux中是一个非常常用的进程间通信机制,很多人在使用的时候不会考虑该机制是具体如何实现的。signal机制可以被理解成进程的软中断,因此,在实时性方面还是相对比较高的。Linux中signal机制的模型可以采用下图进行描述。个进程都会采用一个进程控制块
2018-03-22 16:51:01
196
转载 linux下exit()与_exit()的区别
转载自 http://blog.youkuaiyun.com/chilumanxi/article/details/47050969void exit(int staus) 函数, 在头文件 #include <stdlib.h>void _exit(int status) 函数,在头文件 #include <unistd.h>中在Linux & C中描述两者区别是:_exi...
2018-03-18 16:52:20
1138
转载 c++拷贝初始化和直接初始化的底层区别
https://www.cnblogs.com/cposture/p/4925736.html下面的源代码修改自http://blog.youkuaiyun.com/ljianhui/article/details/9245661 1 #include <iostream> 2 #include <cstring> 3 using namespace std; 4 cla...
2018-03-15 17:20:58
273
转载 C++抽象类
一、纯虚函数定义 纯虚函数是在基类中声明的虚函数,它在基类中没有定义,但要求任何派生类都要定义自己的实现方法。在基类中实现纯虚函数的方法是在函数原型后加“=0”二、引入原因:1、为了方便使用多态特性,我们常常需要在基类中定义虚拟函数。2、在很多情况下,基类本身生成对象是不合情理的。例如,动物作为一个基类可以派生出老虎、孔雀等子类,但动物本身生成对象明显不合常理。 为了解决上述问题,...
2018-03-10 17:09:23
390
转载 C++中构造函数居然是可以直接调用的
转载自 http://blog.youkuaiyun.com/Veaxen/article/details/60467221代码如下#include class A{public: A():a(0),b(0){std::cout"调用第一个构造函数"::endl;} A(int x):a(x),b(x+1){std::cout"调用第二个构造函数"::en
2018-03-07 22:26:49
1416
转载 c++中 static 变量和函数能否被子类继承
1. 父类的static变量和函数在派生类中依然可用,但是受访问性控制(比如,父类的private域中的就不可访问),而且对static变量来说,派生类和父类中的static变量是共用空间的,这点在利用static变量进行引用计数的时候要特别注意。 2. static函数没有“虚函数”一说。因为static函数实际上是“加上了访问控制的全局函数”,全局函数哪来的什么虚函数?
2018-03-07 21:13:23
8270
转载 Python内存管理机制及优化简析
转载自 http://kkpattern.github.io/2015/06/20/python-memory-optimization-zh.html准备工作为了方便解释Python的内存管理机制, 本文使用了gc模块来辅助展示内存中的Python对象以及Python垃圾回收器的工作情况. 本文中具体使用到的接口包括:gc.disable() # 暂停自动垃圾回收.g
2018-01-31 10:50:09
609
转载 关于C语言中 字符串常量的问题
(Linux环境下),编译能够通过,但是运行的时候老是报段错误。我当时非常郁闷,因为代码不长。其中主函数中有这样一句话: char *str="epmzm bpmzm qa eqtt bpmzm qa i eig";以后的代码对这个字符串进行操作(修改了其中的字符)。但是改成char str[]="epmzm bpmzm qa eqtt bpmzm qa i eig";
2018-01-30 19:10:26
692
转载 宏定义中的特殊参数(#、##、...和__VA_ARGS__)
最近在android的某个代码的头文件中发现很多__VA_ARGS__,google一下.还是比较有用.附带其它宏定义参数,一起记录之.1. ...和__VA_ARGS__看看msdn上给得例子吧[cpp] view plaincopy#include #define EMPTY #define CHEC
2018-01-23 11:54:28
1564
转载 typedef void (*Fun) (void) 的理解——函数指针——typedef函数指针
转载自 http://blog.youkuaiyun.com/u014221279/article/details/50978204首先介绍大家比较熟悉的typedef[cpp] view plain copyint i;//定义一个整型变量i typedef int myInt; myInt j;//定义一个整型变量
2018-01-22 13:51:55
255
转载 setsockopt :SO_LINGER 选项设置
转载自 http://blog.youkuaiyun.com/factor2000/article/details/3929816setsockopt 设置 SO_LINGER 选项 此选项指定函数close对面向连接的协议如何操作(如TCP)。内核缺省close操作是立即返回,如果有数据残留在套接口缓冲区中则系统将试着将这些数据发送给对方。 S
2018-01-17 10:41:59
370
转载 使用變數型別的良好習慣
在32bit 機器上#include int main(){ int i = 10; int *p = &i; int pp = (int)p; return 0;} gcc 不會warning 但同樣程式在64bit 機器上跑cast.c:7:20: war
2017-12-22 13:55:38
250
转载 非阻塞Connect对于select时应注意问题
转载自 http://www.cnitblog.com/zouzheng/archive/2010/11/25/71711.html对于面向连接的socket类型(SOCK_STREAM,SOCK_SEQPACKET)在读写数据之前必须建立连接,首先服务器端socket必须在一个客户端知道的地址进行监听,也就是创建socket之后必须调用bind绑定到一个指定的地址,然后调用int
2017-12-22 11:08:18
607
转载 linux进程状态详解
Linux是一个多用户,多任务的系统,可以同时运行多个用户的多个程序,就必然会产生很多的进程,而每个进程会有不同的状态。Linux进程状态:R (TASK_RUNNING),可执行状态。只有在该状态的进程才可能在CPU上运行。而同一时刻可能有多个进程处于可执行状态,这些进程的task_struct结构(进程控制块)被放入对应CPU的可执行队列中(一个进程最多只能出现在一个CPU的可
2017-12-12 15:15:59
264
转载 Epoll在LT和ET模式下的读写方式
转载自 http://kimi.it/515.html在一个非阻塞的socket上调用read/write函数, 返回EAGAIN或者EWOULDBLOCK(注: EAGAIN就是EWOULDBLOCK)从字面上看, 意思是:EAGAIN: 再试一次,EWOULDBLOCK: 如果这是一个阻塞socket, 操作将被block,perror输出: Resource temporarily
2017-12-10 12:47:46
231
转载 Linux系统编程——I/O多路复用select、poll、epoll的区别使用
转载自 http://blog.youkuaiyun.com/tennysonsky/article/details/45745887I/O 多路复用技术是为了解决进程或线程阻塞到某个 I/O 系统调用而出现的技术,使进程不阻塞于某个特定的 I/O 系统调用。select(),poll(),epoll()都是I/O多路复用的机制。I/O多路复用通过一种机制,可以监视多个
2017-12-10 12:05:19
161
转载 Linux分页机制概述
linux中的分段和分页http://blog.youkuaiyun.com/hguisu/article/details/6152921 Linux 内存管理觉得这篇文章写分段和分页机制还是挺清晰的,在此转载一下。 前一段时间看了《深入理解Linux内核》对其中的内存管理部分花了不少时间,但是还是有很多问题不是很清楚,最近又花了一些时间复习了一下,在这里记录下自己的理解和对L
2017-12-09 21:21:56
466
转载 TCP状态转移
读懂TCP状态转移过程,对理解网络编程颇有帮助,本文将对TCP状态转移过程进行介绍,但各状态(总共11个)含义不在本文介绍的范围,请参考文末的书目列表。TCP状态转换图(state transition diagram)1. 建立连接(three-way hand shake)主动打开(passive open):服务器必须准备好接受外来的连接,通常通过so
2017-12-05 14:11:53
354
转载 GCC常用命令详解
GCC(GNU Compiler Collection)是Linux下最常用的C语言编译器,是GNU项目中符合ANSI C标准的编译系统,能够编译用C、C++和Object C等语言编写的程序。同时它可以通过不同的前端模块来支持各种语言,如Java、Fortran、Pascal、Modula-3和Ada等。穿插一个玩笑: GNU意思是GNU’s not Unix而非角马。然而GNU还是一个未拆
2017-12-01 17:27:39
215
转载 GCC 编译使用动态链接库和静态链接库的方法
1 库的分类根据链接时期的不同,库又有静态库和动态库之分。静态库是在链接阶段被链接的(好像是废话,但事实就是这样),所以生成的可执行文件就不受库的影响了,即使库被删除了,程序依然可以成功运行。有别于静态库,动态库的链接是在程序执行的时候被链接的。所以,即使程序编译完,库仍须保留在系统上,以供程序运行时调用。(TODO:链接动态库时链接阶段到底做了什么)2 静态库和动
2017-12-01 16:51:53
202
转载 gcc常用命令简介
gcc常用命令1简介2简单编译2.1预处理2.2编译为汇编代码(Compilation)2.3汇编(Assembly)2.4连接(Linking)3多个程序文件的编译4检错5库文件连接5.1编译成可执行文件5.2链接5.3强制链接时使用静态链接库1简介GCC 的意思也只是 GNU C Compiler 而已。经过了这么多年的发
2017-12-01 16:24:50
166
转载 Linux互斥锁
转载自http://blog.youkuaiyun.com/zmxiangde_88/article/details/7998458在线程实际运行过程中,我们经常需要多个线程保持同步。这时可以用互斥锁来完成任务;互斥锁的使用过程中,主要有pthread_mutex_init,pthread_mutex_destory,pthread_mutex_lock,pthread_mutex_unl
2017-11-28 11:38:09
152
转载 Linux 互斥锁
linux下为了多线程同步,通常用到锁的概念。posix下抽象了一个锁类型的结构:ptread_mutex_t。通过对该结构的操作,来判断资源是否可以访问。顾名思义,加锁(lock)后,别人就无法打开,只有当锁没有关闭(unlock)的时候才能访问资源。即对象互斥锁的概念,来保证共享数据操作的完整性。每个对象都对应于一个可称为" 互斥锁" 的标记,这个标记用来保证在任一时刻,只能有一个
2017-11-28 10:54:34
150
转载 Python深入学习之内存管理
转载自http://www.jb51.net/article/54544.htm语言的内存管理是语言设计的一个重要方面。它是决定语言性能的重要因素。无论是C语言的手工管理,还是Java的垃圾回收,都成为语言最重要的特征。这里以Python语言为例子,说明一门动态类型的、面向对象的语言的内存管理方式。 对象的内存使用赋值语句是语言最常见的功能了。但即使是最简单的赋
2017-11-16 13:20:35
197
转载 Python命名空间的本质
转自: https://www.cnblogs.com/windlaughing/archive/2013/05/26/3100362.htmlPython的命名空间是Python程序猿必须了解的内容,对Python命名空间的学习,将使我们在本质上掌握一些Python中的琐碎的规则。接下来我将分四部分揭示Python命名空间的本质:一、命名空间的定义;二、命名空间的查找
2017-11-15 15:38:26
582
转载 Python3 async def和@asyncio.coroutine的区别
转载自http://blog.youkuaiyun.com/youzhouliu/article/details/51965036用asyncio提供的@asyncio.coroutine可以把一个generator标记为coroutine类型,然后在coroutine内部用yield from调用另一个coroutine实现异步操作。为了简化并更好地标识异步IO,从Python 3.5开
2017-11-15 11:08:39
9679
转载 Python asyncio使用范例
转载自伯乐在线:http://python.jobbole.com/63897/web数据抓取是一个经常在python的讨论中出现的主题。有很多方法可以用来进行web数据抓取,然而其中好像并没有一个最好的办法。有一些如scrapy这样十分成熟的框架,更多的则是像mechanize这样的轻量级库。DIY自己的解决方案同样十分流行:你可以使用requests、beautifulsoup或者py
2017-11-15 10:05:14
859
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人