- 博客(24)
- 资源 (4)
- 收藏
- 关注
转载 Go语言包管理
转载:https://www.cnblogs.com/sevenyuan/p/4548748.htmlGolang使用包(package)这种语法元素来组织源码,所有语法可见性均定义在package这个级别,与Java 、python等语言相比,这算不上什么创新,但与C传统的include相比,则是显得“先进”了许多。Golang中包的定义和使用看起来十分简单:通过pack
2018-01-16 22:09:12
2517
转载 libevent数据结构-TAILQ_QUEUE队列
转载出处: http://blog.youkuaiyun.com/luotuo44/article/details/38374009Libevent源码中有一个queue.h文件,位于compat/sys目录下。该文件里面定义了5个数据结构,其中TAILQ_QUEUE是使得最广泛的。本文就说一下这个数据结构。队列结构体: TAILQ_QUEUE由下面两个结构体一起
2017-09-14 12:14:04
733
原创 Muduo库源码分析(9):线程特定数据
线程私有数据 这些数据不会因为多进程共享数据而影响,因为是每个线程特有的数据。线程私有数据实现对于POD类型可以使用__thread来修饰(详解见Thread类封装) http://blog.youkuaiyun.com/jacktangj/article/details/76222350非POD类型可以使用线程特定数据封装 线程特定数据讲解: http://www.cnblogs.com/java
2017-08-08 12:48:39
312
原创 Muduo库源码分析(8):单例模式实现
单例模式 保证一个类只有一个实例,并提供一个访问它的全局访问点参考资料 C++设计模式——单例模式: http://www.jellythink.com/archives/82Muduo库实现单例模式的思想: 通过pthread_once在多个线程中只会初始化一次的特性实现的线程安全的单例模式template<typename T>class Singleton : noncopyab
2017-08-07 21:51:01
367
原创 Muduo库源码分析(7):线程池
线程池的本质 生产者与消费者模型,往线程池添加任务相当于生产者,从线程池取出任务相当于消费者,线程池容量相当于有界的缓冲区,所以实现类似于有界缓冲区class ThreadPool : noncopyable{ public: typedef std::function<void ()> Task; explicit ThreadPool(const string& nameArg =
2017-08-07 21:26:00
284
原创 Muduo库源码分析(6):有界缓冲区,无界缓冲区
缓冲区的实现 类似于生产者消费者模型,往缓冲区添加任务相当于生产者,从缓冲区提取任务相当于消费者,Muduo库使用条件变量加互斥锁实现的有界和无界缓冲区 简易的条件变量加互斥锁实现的生产者消费者模型(无界)实现: http://blog.youkuaiyun.com/zjf280441589/article/details/43883113 有界缓冲区class BoundedBlockingQueu
2017-08-07 10:19:54
820
原创 Muduo库源码分析(5):互斥锁,条件变量类
互斥锁(muduo库简单的封装) 将muduo库的线程id的操作去除的简单版本// 出错处理#define MCHECK(ret) ({ __typeof__ (ret) errnum = (ret); assert(errnum == 0); (void) errnum;})class MutexLock : noncopyable{ public: MutexLock() {
2017-07-31 16:40:55
337
转载 C++中的RAII机制
转载:http://www.cnblogs.com/gnuhpc/archive/2012/12/04/2802307.html1.概念Resource Acquisition Is Initialization 机制是Bjarne Stroustrup首先提出的。要解决的是这样一个问题:在C++中,如果在这个程序段结束时需要完成一些资源释放工作,那么正常情况下自然是没
2017-07-31 14:30:42
260
原创 muduo库源码分析(4):线程类
与muduo线程类封装有关的源文件: Thread.cc Thread.h CurrentThread.hmuduo线程类封装实现方式: 基于对象的编程(利用boost::function/boost::bind实现)简化版的线程类封装可参考: http://blog.youkuaiyun.com/jacktangj/article/details/76166554muduo线程类整体结构:
2017-07-27 21:58:23
504
原创 muduo库源码分析(3):异常类
异常类Exception 前言:#include <execinfo.h>int backtrace(void** buffer,int size);buffer:是一个指针数组,数组中存放的是调用过的函数地址buffer-----> --------------- | 调用函数地址 | ----------
2017-07-27 18:52:59
260
原创 Muduo源码分析(2):原子类
原子性操作: 不会被线程调度机制打断的操作,效率高于锁操作Muduo封装的gcc原子操作函数:// 如果*ptr == oldval,就将newval写入*ptr,然后返回*ptr// 否则直接返回*ptr__sync_val_compare_and_swap(type *ptr, type oldval type newval, ...)// 返回修改前的值__sync_fetch_
2017-07-27 14:30:09
331
原创 muduo源码分析(1):时间类
在muduo库中建立两个基类:copyable和noncopyable来标识派生类是否是可拷贝或者不可拷贝的。muduo库中大部分类为不可拷贝的。class noncopyable{ protected: noncopyable(){} // 封装了拷贝构造函数和复制操作符,使得派生类不可进行拷贝和赋值操作 private: noncopyable(const noncopya
2017-07-27 13:28:45
406
1
原创 多线程Thread类不同封装实现
多线程Thread类实现 1.C语言实现方式:通过建立多个全局线程回调函数实现 2.面向对象实现方式:通过多态特性实现,虚函数在派生类中不同的行为方式 3.基于对象实现方式:通过boost::function和bind实现- 对于Linux线程创建方式:int pthread_create(pthread_t *restrict thread, const pthrea
2017-07-26 22:13:55
802
转载 结构体struct 和 联合union 内存分配
转载:http://www.cnblogs.com/fly1988happy/archive/2012/04/12/2444408.html1.C语言中的结构体1.1 定义结构体是由一系列相同或不同类型的变量组成的集合。struct 结构体名{ //struct为关键字,“结构体名”为用户定义的类型标识。数据类型1 成员名1;
2017-06-12 16:49:04
2549
转载 C++ opeartor new, new opeartor, placement new
转载:http://blog.youkuaiyun.com/songthin/article/details/1703966“new”是C++的一个关键字,同时也是操作符。关于new的话题非常多,因为它确实比较复杂,也非常神秘,下面我将把我了解到的与new有关的内容做一个总结。new的过程当我们使用关键字new在堆上动态创建一个对象时,它实际上做了三件事:获得一块内存空间、调用构造函数
2017-06-09 16:13:07
644
转载 linux中fork()函数详解
一、fork入门知识 一个进程,包括代码、数据和分配给进程的资源。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。 一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都复制到新的新进程中,只有少数值与原来
2017-05-06 13:02:54
427
原创 ARP协议解析
ARP协议在数据链路层的以太网的协议中,每一个数据包都有一个MAC地址。我们知道每一块以太网卡都有一个MAC地址,这个地址是唯一的,那么IP包是如何知道这个MAC地址的?这就是ARP协议的工作。ARP(地址解析)协议是一种解析协议,本来主机是完全不知道这个IP对应的是哪个主机的哪个接口,当主机要发送一个IP包的时候,会首先查一下自己的ARP高速缓存表(最近数据传递更新的IP-MAC
2016-09-19 13:40:56
12622
转载 IP协议:IP数据报解析以及IP数据传输
IP数据报解析转载:点击打开链接 TCP/IP协议定义了一个在局域网上传输的包,称为IP数据报(IP Datagram)。IP数据报由首部和数据两部分组成,首部部分包括版本,长度,IP地址等信息。数据部分一般用来存储上层协议其他的协议,如TCP,UDP和ICMP协议等。(2)IP数据报首部格式 版本: 指IP协议
2016-09-19 12:37:58
4418
原创 linux下安装ffmpeg
1.下载git,根据官方文档,下载编译ffmpeg需要git来实现,所以下载git,执行命令:sudo apt-get install git git-core2.更新git至最新版本库,执行命令:git clone git://git.kernel.org/pub/scm/git/git.git3.安装git成功,执行命令:git --version4.下载ffmpeg,
2016-07-06 22:09:42
698
转载 main函数的参数
转载:http://blog.youkuaiyun.com/yhawaii/article/details/7361302main函数可以不带参数,也可以带参数,这个参数可以认为是 main函数的形式参数。C语言规定main函数的参数只能有两个,习惯上这两个参数写为argc和argv。因此,main函数的函数头可写为: main (argc,argv)C语言还规定argc(第
2016-07-02 11:10:53
277
转载 HM在帧内预测中如何指定一幅图像作为一个slice,一个CU作为一个PU的
转载:点击打开链接1,如何指定一幅图像就是一个slice:首先,HM实现slice内CU循环终止的条件就是,判断下一个预测CU的地址有没有超过slice的边界uiBoudingCUAddr,其中slice的边界也是以CU为基础进行定义的,从另一个角度,也就是决定slice是不是一幅图像,也是以这个CU边界进行判决的,这个时候还需要另外一个量来做对比,即定义一个变量表示下一个slice开
2016-06-16 15:35:48
1108
转载 C++文件操作函数详解
转载:http://blog.youkuaiyun.com/mafuli007/article/details/7271975C++通过以下几个类支持文件的输入输出(1) ofstream:写操作,输出文件类;(2) ifstream:读操作,输入文件类;(3) fstream:可同时读写的文件类。1. open函数:打开文件
2016-06-15 12:51:15
3973
转载 Z扫描和光栅扫描(HEVC)
原文链接:http://blog.youkuaiyun.com/u010854339/article/details/8994985本文首先参考了 ① http://blog.youkuaiyun.com/hevc_cjl/article/details/8183144 ②http://blog.youkuaiyun.com/tianzhaixing/article/details/8694105 两位的帖子,过
2015-11-04 16:48:46
3117
原创 C++primer学习笔记(一):第二章.变量和基本类型
1.关于C++Primer的学习资料我已经上传到论坛资源上了,附上链接:1.C++Primer书上的源代码 http://download.youkuaiyun.com/detail/jacktangj/9029297 2.C++primer书籍 http://download.youkuaiyun.com/detail/jacktangj/9029261 3.C++primer课后答案 htt
2015-08-20 19:23:58
303
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人