自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 资源 (11)
  • 收藏
  • 关注

原创 [Muduo网络库源码分析] (9) base/Thread.cc_h_CurrentThread_h线程对象

线程对象实现:实现Thread类、ThreadData结构体 、CurrentThread命名空间功能:实现线程对象并实现当前线程信息存储知识点:__thread __thread是GCC内置的线程局部存储设施,存取效率可以和全局变量相比。__thread变量每一个线程有一份独立实体,各个线程的值互不干扰。可以用来修饰那些带有全局性且值可能变,但是又不值得用全局变量保护的变量。

2017-07-31 09:25:15 1189

原创 [Muduo网络库源码分析] (8) base/StringPiece.h_字符串参数传递类型

字符串参数传递类型实现:StringPiece、StringArg类功能:实现字符串类型、字符串参数传递类型知识点:__type_traits 对一个类型进行描述,从而对其运算速度进行优化reinterpret_cast 其可以进行指针间的转换,并且其可以实现指针和整数的相互转换用途:可用于字符串传参,和其他字符串处理代码及分析:StringPiece.h// Taken

2017-07-31 09:21:46 757

原创 [Muduo网络库源码分析] (7) base/Singleton.h_SINGLETON对象创建型模式

SINGLETON(单件)—对象创建型模式实现:Singleton类功能:保证一个类仅有一个实例,并提供一个访问它的全局访问点。知识点:pthread_once 保证init_routine()函数在本进程执行序列中仅执行一次static用法Singleton设计模式用途:当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时。当这个唯一实例应该是通过子类化可扩展的,并且

2017-07-31 09:20:09 563

原创 [Muduo网络库源码分析] (6) base/Mutex.h_互斥锁操作

互斥锁操作功能:封装对互斥锁的操作知识点:MCHECK()宏的实现#define MCHECK(ret) ({ __typeof__ (ret) errnum = (ret); \ if (__builtin_expect(errnum != 0, 0)) \ __assert_

2017-07-31 09:18:32 1189

原创 [Muduo网络库源码分析] (5) base/FileUtil.cc_h_文件操作

文件操作实现:ReadSmallFile、AppendFile类功能:实现文件内容、信息的读取与写入知识点:fwrite_unlocked fwrite 和 fwrite_unlocked是一对,其中fwrite_unlocked是fwrite的线程不安全版本,因为不加锁。O_CLOEXEC 调用open函数O_CLOEXEC模式打开的文件描述符在执行exec调用新程序中关闭

2017-07-31 09:15:39 2060

原创 [Muduo网络库源码分析] (4) base/Exception_cc_h_带 stack trace 的异常基类

带 stack trace 的异常基类实现:Exception类功能:实现对boost异常类的封装,可以有效存储异常知识点:int backtrace(void **buffer, int size); 该函数用与获取当前线程的调用堆栈,获取的信息将会被存放在buffer中,它是一个指针数组。参数 size 用来指定buffer中可以保存多少个void* 元素。函数返回值是实际获取的指

2017-07-31 09:13:31 765

原创 [Muduo网络库源码分析] (3) base/CountDownLatch.cc_h_“倒计时门闩”同步

“倒计时门闩”同步实现:CountDownLatch类功能:利用条件变量、倒计时实现同步知识点:mutable:mutable修饰符表示其可以在任何情况下变化条件变量互斥锁用途:用于实现倒计时同步代码及分析:CountDownLatch.h// Use of this source code is governed by a BSD-style license// that can be

2017-07-31 09:10:59 593

原创 [Muduo网络库源码分析] (2) base/Condition.cc_h_条件变量操作

条件变量操作功能:封装对条件变量的一系列操作知识点:条件变量常用的函数 pthread_cond_init pthread_cond_wait pthread_cond_signal pthread_cond_broadcast pthread_cond_destroy pthread_cond_tim

2017-07-31 09:08:59 521

原创 [Muduo网络库源码分析] (1) base/Atomic.h_原子操作与原子整数

原子操作与原子整数前言:C/C++中数值操作,如自加(n++)自减(n–-)及赋值(n=2)操作都不是原子操作,如果是多线程程序需要使用全局计数器,程序就需要使用锁或者互斥量,对于较高并发的程序,会造成一定的性能瓶颈。为了提高赋值操作的效率,gcc提供了一组api,通过汇编级别的代码来保证赋值类操作的原子性,相对于涉及到操作系统系统调用和应用层同步的锁和互斥量,这组api的效率要高很多。类名:m

2017-07-31 09:06:27 852

原创 [设计模式]SINGLETON(单件)_对象创建型模式

1. 意图保证一个类仅有一个实例,并提供一个访问它的全局访问点。2. 动机对一些类来说,只有一个实例是很重要的。虽然系统中可以有许多打印机,但却只应该有一个打印假脱机( printer spooler),只应该有一个文件系统和一个窗口管理器。一个数字滤波器只能有一个 A / D转换器。一个会计系统只能专用于一个公司。我们怎么样才能保证一个类只有一个实例并且这个实例易于被访问呢?一个全局变量使得一

2017-07-31 08:59:39 353

转载 c++ static的作用,以及static对象在类和函数中区别

static对象如果出现在类中,那么该对象即使从未被使用到,它也会被构造以及析构。而函数中的static对象,如果该函数从未被调用,这个对象也就绝不会诞生,但是在函数每次被调用时检查对象是否需要诞生。下面详细说说static的功能以及它的来龙去脉:static作为编程语言里面一种重要的数据类型,它的地位在面试的过程里也是相当的高。为什么要引入static  函数内部

2017-07-29 15:32:59 3084 1

转载 __type_traits

之前我们对iterator_traits有了一些了解,现在我们要了解__type_traits。Iterator_traits负责萃取迭代器的特性,__type_traits则负责萃取型别的特性。 对于型别的特性,我们关注的点可能在于对该型别是否需要复杂处理。如果答案是否定的,我们在对这些型别进行构造、析构、拷贝赋值等操作时,就可以采取最有效率的措施,比如不使用析构函数,直接free等

2017-07-28 14:59:01 483

转载 __type_traits详解

在STL中为了提供通用的操作而又不损失效率,我们用到了一种特殊的技巧,叫traits编程技巧。具体的来说,traits就是 通过定义一些结构体或类,并利用模板类特化和偏特化的能力,给类型赋予一些特性,这些特性根据类型的不同而异。在程序设计中可以使用这些traits来判 断一个类型的一些特性,引发C++的函数重载机制,实现同一种操作因类型不同而异的效果。traits的编程技巧极度弥补了C++语言的不

2017-07-28 14:43:44 1541

转载 static_cast、dynamic_cast、const_cast和reinterpret_cast总结

C++中的类型转换分为两种:隐式类型转换;显式类型转换。而对于隐式变换,就是标准的转换,在很多时候,不经意间就发生了,比如int类型和float类型相加时,int类型就会被隐式的转换位float类型,然后再进行相加运算。而关于隐式转换不是今天总结的重点,重点是显式转换。在标准C++中有四个类型转换符:static_cast、dynamic_cast、const_cast和reint

2017-07-28 11:32:28 953

转载 Event Loop

Event Loop 是一个很重要的概念,指的是计算机系统的一种运行机制。JavaScript语言就采用这种机制,来解决单线程运行带来的一些问题。本文参考C. Aaron Cois的《Understanding The Node.js Event Loop》,解释什么是Event Loop,以及它与JavaScript语言的单线程模型有何关系。想要理解Event

2017-07-28 00:12:16 297

转载 mutable和volatile

13、mutable和volatile       很少遇到这两个关键字,学嵌入式估计知道后者,深入研究C++的估计知道前者。       (1)mutable       在C++中,mutable是为了突破const的限制而设置的。被mutable修饰的变量,将永远处于可变的状态,即使在一个const函数中,甚至结构体变量或者类对象为const,其mutable成员也可

2017-07-27 16:32:09 564

转载 boost::bind 详解

boost::bind是标准库函数std::bind1st和std::bind2nd的一种泛化形式。其可以支持函数对象、函数、函数指针、成员函数指针,并且绑定任意参数到某个指定值上或者将输入参数传入任意位置。1. 通过functions和function pointers使用bind给定如下函数:1 int f(int a, int b)2 {3 return a

2017-07-27 16:07:41 422

转载 boost::static_cast、implicit_cast、const_cast、dynamic_cast

在C++中有四种类型转换 1、static_cast:这个是最常用的类型转换,凡是C++隐式执行的类型转换都可以用static_cast显式完成。在隐式转换时有时编译器会有警告信息,但是显示转换就不会有。2、const_cast:从名字可以看出和const有关,这个转换的作用是去除或添加const特性,它可以将一个const变量转换为非const变量,或将一个非const变量转换为co

2017-07-26 15:52:58 688

转载 C/C++中volatile关键字详解

1. 为什么用volatile?    C/C++ 中的 volatile 关键字和 const 对应,用来修饰变量,通常用于建立语言级别的 memory barrier。这是 BS 在 "The C++ Programming Language" 对 volatile 修饰词的说明:A volatile specifier is a hint to a compiler that

2017-07-25 16:19:51 292

转载 prctl()函数应用

int prctl ( int option,unsigned long arg2,unsigned long arg3,unsigned long arg4,unsigned long arg5 )这个系统调用指令是为进程制定而设计的,明确的选择取决于option:PR_GET_PDEATHSIG :返回处理器信号; PR_SET_PDEATHSIG :arg2作为处理器信号pd

2017-07-22 14:26:34 333

转载 (推荐)智能指针boost::weak_ptr 详解

【1】boost::weak_ptr简介boost::weak_ptr属于boost库,定义在namespace boost中,包含头文件 #include便可以使用。【2】boost::weak_ptr详解智能指针boost::scope_ptr和智能指针boost::shared_ptr就完全可以解决所有单个对象内存的管理问题。这儿咋还多出一个boost::we

2017-07-22 11:23:19 375

转载 性能优化:__builtin_expect详解

转自:http://hi.baidu.com/lammy/blog/item/bc5e3d4e869073c3d1c86a89.html在GTK+2.0源码中有很多这样的宏:G_LIKELY和G_UNLIKELY。比如下面这段代码:if (G_LIKELY (acat == 1))     /* allocate through magazine layer */    {

2017-07-22 10:50:26 1734 2

原创 Linux网络编程:进程池 + CGI服务器

前记:这两天在看Linux的网络编程,准备了解一下网络库,对于多线程编程和多进程编程,还是有点模糊,于是就跟着书实现可一个小的进程池。进程池结构图如下:下面给出进程池的代码,进程池被封装在一个processpool类中,包含在processpool中。代码给出了详细的注释:/** * filename: processpool.h * created by cdf ^_^~~ */#ifnd

2017-07-21 19:18:19 836

转载 socket阻塞与非阻塞,同步与异步

转自:http://blog.csdn.net/hguisu/article/details/7453390socket阻塞与非阻塞,同步与异步作者:huangguisu1. 概念理解     在进行网络编程时,我们常常见到同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)四种调用方式:

2017-07-21 17:06:35 325

原创 分享一个比较好用的Makefile文件

############################################################# # Generic Makefile for C/C++ Program # # License: GPL (General Public License) # Author: whyglinux <whyglinux AT gmail DOT com> # Dat

2017-07-20 18:03:59 548

原创 Muduo网络库学习知识点总结

static_cast (expression) 该运算符把expression转换为type-id类型,但没有运行时类型检查来保证转换的安全性。它主要有如下几种用法:  ①用于类层次结构中基类(父类)和派生类(子类)之间指针或引用的转换。  进行上行转换(把派生类的指针或引用转换成基类表示)是安全的;  进行下行转换(把基类指针或引用转换成派生类表示)时,由于没有动态类型检查,所

2017-07-20 11:34:37 951

转载 fcntl函数详解

功能描述:根据文件描述词来操作文件的特性。#include #include  int fcntl(int fd, int cmd); int fcntl(int fd, int cmd, long arg); int fcntl(int fd, int cmd, struct flock *lock);[描述]fcntl()针对(文件)描述符提供控制。参数fd

2017-07-19 16:57:07 413

转载 GCC 提供的原子操作

GCC 提供的原子操作gcc从4.1.2提供了__sync_*系列的built-in函数,用于提供加减和逻辑运算的原子操作。其声明如下:type __sync_fetch_and_add (type *ptr, type value, ...)type __sync_fetch_and_sub (type *ptr, type value, ...)type __sync_fetch_and_o

2017-07-17 16:34:16 581 1

原创 ubuntu装机必备+主题美化

首先先上几张图系统优化更新源把源更新为阿里云或者其他的国内速度快的源sudo apt-get updatesudo apt-get upgrade删除Amazon的链接sudo apt-get remove unity-webapps-common系统软件类常用软件搜狗输入法: sougoupinyin网易云音乐播放器Haroopad Markdown 编辑器浏览器: ChromeWPS数据库及

2017-07-16 21:37:58 2321 1

转载 MATLAB中plot的用法

第五讲计算结果的可视化本节介绍MATLAB 的两种基本绘图功能:二维平面图形和三维立体图形。5.1 二维平面图形5.1.1 基本图形函数plot 是绘制二维图形的最基本函数,它是针对向量或矩阵的列来绘制曲线的。也就是说,使用plot 函数之前,必须首先定义好曲线上每一点的x 及y 坐标,常用格式为:(1)plot(x) 当x 为一向量时,以x 元素的值为纵坐标,x 的序号为

2017-07-03 20:14:23 6267

深度学习机器学习经典教材

深度学习机器学习经典教材

2019-04-29

vimrc配置文件

vim 配置文件vim 配置文件vim 配置文件vim 配置文件vim 配置文件vim 配置文件

2018-05-23

ACM数学公式

ACM数学公式

2017-10-27

64位GCC编译器

编译器 编译器 编译器 编译器 编译器 编译器 编译器 编译器 编译器 编译器

2017-10-16

网易云音乐 for linux

网易云音乐 for linux

2017-07-14

haroopad markdown 编辑器

haroopad markdown 编辑器

2017-07-14

搜狗 for ubuntu

搜狗 for ubuntu

2017-07-14

jTessBoxEditor(Linux环境)

先解压,然后进入目录 执行: java -jar jTessBoxEditor.tar 运行

2016-10-17

自写聊天室

自写Linux聊天室

2016-09-06

基于Easyx的文本显示器的C语言实现

基于Easyx的文本显示器的C语言实现

2016-04-24

贪吃蛇C++实现

基于MFC的C++贪吃蛇实现

2016-04-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除