扎扎实实写代码的专栏

勤勤恳恳打基础,扎扎实实写代码。勿忘初衷。。。。

c++--学习笔记

1、c++编译链接模型 2、c++二进制兼容性问题 3、c++值语义和对象语义区别 4、c++ 数据对象ADT 5、闭包 6、RVO和NRVO优化 7、boost::noncopyable 8、boost::asio 9、对象 拷贝复制构造 问题

2017-06-13 16:42:29

阅读数 221

评论数 0

boost::circular_buffer的push_back简单分析

circular_buffer为了效率考虑,使用了连续内存块保存元素 使用固定内存,没有隐式或者非期望的内存分配 快速在circular_buffer头或者尾部插入,删除元素,并且是常量时间复杂度 常量时间访问元素 适合实时和对性能要求苛刻的应用 可能适用的场景 可存储最新接收到的sa...

2017-06-12 10:16:04

阅读数 356

评论数 0

智能指针boost::weak_ptr 详解

1、boost::weak_ptr简介 boost::weak_ptr属于boost库,定义在namespace boost中,包含头文件 #include<boost/weak_ptr.hpp>便可以使用。 2、boost::weak_ptr详解 智能指针boost::scop...

2017-06-12 10:14:19

阅读数 302

评论数 0

文章标题

详见:http://blog.csdn.net/liang13664759/article/details/1771246/

2017-06-09 21:12:40

阅读数 297

评论数 0

linux服务器之间传输文件的四种方式

转自:http://www.jb51.net/article/82608.htm本文为大家分享了linux服务器之间传输文件的四种方式,供大家参考,具体内容如下 1. scp 【优点】简单方便,安全可靠;支持限速参数 【缺点】不支持排除目录 【用法】 scp就是secure copy,...

2017-06-08 11:58:22

阅读数 28806

评论数 0

c++-头文件编译

转自:http://blog.csdn.net/walker19900515/article/details/46442777 一、C++编译模式通常,在一个C++程序中,只包含两类文件——.cpp文件和.h文件。其中,.cpp文件被称作C++源文件,里面放的都是C++的源代码;而.h文件则被称...

2017-05-04 13:40:20

阅读数 206

评论数 0

muduo源码分析--线程池的实现

muduo线程池主要有3个类的实现:EventLoop,EventLoopThreadPool,EventLoopThread,和Thread. 1.Thread为对一个线程的封装:class Thread : boost::noncopyable { public: typedef bo...

2017-04-25 10:39:43

阅读数 286

评论数 0

linux多线程编程关键字:__thread,__bulitin_expect

最近读代码的时候,看到有__thread这个东西,查了一下资料。表示为每个线程声明这样一个变量,并且线程与线程之间的这个变量毫无关联。__thread是GCC内置的线程局部存储设施,存取效率可以和全局变量相比。__thread变量每一个线程有一份独立实体,各个线程的值互不干扰。可以用来修饰那些带有...

2017-04-18 15:53:38

阅读数 368

评论数 0

linux-muduo线程通信eventfd

eventfd 在内核版本,2.6.22以后有效。查看内核版本可以用命令 uname -r 在看muduo源码时,项目中使用eventfd机制实现线程间的唤醒(通知)。觉得效率比较高,所以拿来学习下。其也可以实现父子进程间的通信。 首先使用: man eventfd name:eventfd...

2017-04-17 20:47:30

阅读数 868

评论数 0

muduo-源码分析2:注册监听socket和建立连接

阅读库源码时可以从库的接口层着手,看看关键功能是如何实现的。对于muduo而言,可以从TcpServer/TcpClient/EventLoop/TcpConnection这几个类着手。 首先理解muduo如何注册监听socket建立连接,其函数调用时序图如图:

2017-04-11 17:18:01

阅读数 252

评论数 0

muduo源码分析2:整体框架

muduo简化类图: Channel 是selectable IO channel,负责注册与响应IO 事件,注意它不拥有file descriptor。它是Acceptor、Connector、EventLoop、TimerQueue、TcpConnection 的成员,生命期由后者...

2017-04-11 16:16:37

阅读数 302

评论数 0

muduo-源码分析 1:基础概念准备

一 网络模型-Reactor模式 1.什么是reator模式 Wikipedia上说:“The reactor design pattern is an event handling pattern for handling service requests delivered conc...

2017-04-11 16:04:44

阅读数 402

评论数 0

muduo-源码分析(前言0)

前言0 个人高性能、高并发linux服务器端编程(网络编程)比较感兴趣,自己写过一些简单的tcp通信程序,用进程池实现简单CGI服务器,用线程池实现简单web服务器。熟悉c++编程语言,但是没有用c++参与过一个项目,所以想寻找一个开源项目,用c++自己实现一个相对完整的网络库,所以选择...

2017-04-11 15:41:15

阅读数 202

评论数 0

c++--Singleton单例模式的实现

1.线程安全的懒汉单例模式 懒汉式的特点是延迟加载,比如配置文件,采用懒汉式的方法,顾名思义,懒汉么,很懒的,配置文件的实例直到用到的时候才会加载。。。。。。class Singleton{ public: static Singleton& GetInstance(void) ...

2017-04-05 16:25:43

阅读数 373

评论数 0

c++--静态成员变量

1.引言 对象的内存中包含了成员变量,不同的对象占用不同的内存,这使得不同对象的成员变量相互独立,它们的值不受其他对象的影响。例如有两个相同类型的对象 a、b,它们都有一个成员变量 m_name,那么修改 a.m_name 的值不会影响 b.m_name 的值。 可是有时候我们希望在多个对象之...

2017-04-05 10:51:46

阅读数 142

评论数 0

c++-静态成员函数和非静态成员函数的区别

1.virtual与静态函数 C++中,静态成员函数不能被声明为virtual函数。 例如,下面的程序会编译失败。#include<iostream> class Test { public: // 编译错误:static成员函数不能声明为virt...

2017-04-05 10:28:07

阅读数 4596

评论数 0

9个offer,12家公司

转载自:到该找工作的时候了,今天辉爷给推荐了一篇牛人写的牛文,看完以后顿时觉得跟跟人家不是能量级的,感觉咱就是一线性的,人家整个一个NP hard~果断转载,在以后这一段找工作的日子里,看着这篇文章,每天鞭策自己!!!1, 简介 毕业答辩搞定,总算可以闲一段时间,把这段求职经历写出来,也作为之前...

2017-03-29 15:36:28

阅读数 1486

评论数 0

深度理解IO模型-同步异步,阻塞非阻塞

一、基础知识: 我们都知道linux将所有的设备都看作文件,那么我们对linux的设备操作都可以看做是文件操作.我们打开一个文件的时候内核会返回给我们一个文件描述符,那么我们对文件的操作都是文件描述符来操作的. 系统调用是如何完成IO操作的呢?网上有一个系列文章讲解一次IO操作的真实...

2017-03-26 17:31:54

阅读数 239

评论数 0

linux-编译和添加库和头文件路劲

一、创建动态库和静态库 从源代码到可执行程序,通常要经过最重要的两大步是:编译,链接。编译就是将源文件生成中间文件的过程,在linux下就是生成 .obj 文件。链接就是用链接器将,这些个中间文件有序地”糅合“在一起,构成一个可执行文件。通常,一个.c文件或者.cpp源文件编译后,就...

2017-03-05 16:44:38

阅读数 798

评论数 0

TCP/IP协议--拥塞避免

为了防止网络的拥塞现象,TCP提出了一系列的拥塞控制机制。最初由V. Jacobson在1988年的论文中提出的TCP的拥塞控制由“慢启动(Slow start)”和“拥塞避免(Congestion avoidance)”组成,后来TCP Reno版本中又针对性的加入了“快速重传(Fast ret...

2017-02-26 15:42:55

阅读数 569

评论数 0

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