自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(44)
  • 收藏
  • 关注

原创 一个简单的linux的测试修改模板

//一个简单的linux的测试用例模板//编译命令 : g++ -o1 -g simple_test_template.cpp -lpthread -o simple_test.exe //标准c头文件#include #include #include #include #include #include //linux下头文件#include #include #i

2017-03-23 10:35:29 438

原创 c/c++函数 -strtol strtoll strtoul strtoull 使用注意项cc

strtol strtoll strtoul strtoull 使用注意项

2017-03-22 14:24:09 21972

原创 c++primer笔记之数组与指针的一些总结

关于数组与指针的一些总结。数组的定义方式:类型 数组名[维度];eg: int a[10] , int b[10][10][10]; //注意:  1.数组的维度也是数组类型的一部分。    eg: int a[10];  数组a的类型为int[10];        int b[10][10][10] 数组b的类型为int[10][10][10];

2017-01-19 15:47:14 453

转载 How to use epoll? A complete example in C

How to use epoll? A complete example in Con 2 Jun 2011 by Mukund (@muks)Network servers are traditionally implemented using a separate process or thread per connection. For high performance ap

2017-01-16 14:00:51 594

原创 c++11 decltype

c++11 decltype在c++11中decltype跟auto都可以作为类型指示符用来进行类型推导(编译期)。语法:decltype ( e )推导规则:1. 如果参数是一个没有带括号的标记符表达式(id-expression)或者没有带括号的类数据成员访问的表达式。则decltype(e)的结果为e参数的实际类型。2. 如果e是其他T类型的表达式。a. 若e

2016-11-14 19:08:51 342

原创 linux socket编程之getsockname getpeername函数

getsockname函数#include int getsockname(int sockfd, struct sockaddr *addr, socklen_t *addrlen);返回值:成功返回0,失败返回-1,并将errno设置为对应的错误。描述:getsockname用来获取sockfd当前关联的地址,结果存在ad

2016-09-22 13:41:41 5026

原创 linux socket编程之listen函数

linux socket:相关的一些函数的介绍,是从linux的man帮助文档中翻译来的,如果有不正确的地方,欢迎指正。listen #include int listen(int sockfd, int backlog);返回值 :            成功返回0,失败返回-1,并将errno设置为对应的错误描述 :          listen()函数将

2016-09-21 21:09:35 2831

原创 用十条命令在一分钟内检查Linux服务器性能

转自:http://www.infoq.com/cn/news/2015/12/linux-performance如果你的Linux服务器突然负载暴增,告警短信快发爆你的手机,如何在最短时间内找出Linux性能问题所在?来看Netflix性能工程团队的这篇博文,看它们通过十条命令在一分钟内对机器性能问题进行诊断。概述通过执行以下命令,可以在1分钟内对系统资源使用情况有个大致

2016-09-12 20:31:04 514

原创 linux命令行常用快捷命令

linux命令行常用快捷命令ctrl + a   跳到命令行的开头ctrl + e   调到命令行的结尾ctrl + b   向前跳一个字符ctrl + f   向后跳一个字符ctrl + ?   撤消前一次输入ctrl + k   删除命令行开头到当前位置的所有字符ctrl + u   删除当前位置到行尾的所有字符ctrl + l   清屏

2016-04-08 14:29:34 524

转载 互斥锁与自旋锁

自旋锁是一种非阻塞锁,也就是说,如果某线程需要获取自旋锁,但该锁已经被其他线程占用时,该线程不会被挂起,而是在不断的消耗CPU的时间,不停的试图获取自旋锁。互斥量是阻塞锁,当某线程无法获取互斥量时,该线程会被直接挂起,该线程不再消耗CPU时间,当其他线程释放互斥量后,操作系统会激活那个被挂起的线程,让其投入运行。两种锁适用于不同场景:如果是多核处理器,如果预计线程等待锁的时

2016-03-15 09:19:48 428

原创 gdb调试技巧总结

将遇到的gdb调试的技巧慢慢总结下。1. gdb 调试程序设置参数set args  可以在gdb调试时指定运行时的参数.show args 命令可以查看设置好的运行参数.#include int main(int argc, char *argv[]){printf("argc = %d\n", argc);for (int i = 0;i

2016-03-14 10:43:41 508

转载 线程安全与可重入函数

本文主要转csapp[深入理解计算机系统]第1版13.7.1。线程安全:一个函数被称为线程安全的(thread-safe),当且仅当被多个并发进程反复调用时,它会一直产生正确的结果。如果一个函数不是线程安全的,我们就说它是线程不安全的(thread-unsafe)。我们定义四类(有相交的)线程不安全函数。第1类:不保护共享变量的函数将这类线程不安全函数变为线程安全的,相对比

2016-03-05 10:26:13 661

转载 经典的”服务器最多65536个连接”误解

原文地址"因为TCP端口号是16位无符号整数, 最大65535, 所以一台服务器最多支持65536个TCP socket连接." - 一个非常经典的误解! 即使是有多年网络编程经验的人, 也会持有这个错误结论.要戳破这个错误结论, 可以从理论和实践两方面来.理论系统通过一个四元组来唯一标识一条TCP连接. 这个四元组的结构是{local_ip, local_po

2016-02-22 15:15:17 545

原创 一个简单的makefile

弄了一个简单的makefile文件,记录下,方便以后使用。################################################################### to build the program, just use "make"# to clean the objs and bin files, use "make clean"#######

2016-02-20 09:48:02 345

转载 在Linux进行IO的正确姿势

原文地址很多C/C++程序虽然在做网络编程, 但大多用别人封装好的库, 对底层不甚了解, 感觉 IO 操作不是很简单吗? 我敢说, 大多数人进行 IO 的姿势都不对, 所谓的 IO, 主要是 read()/write() 两个函数.先说错误的 IO 读操作:int ret = read(fd, buf, len);if(ret == -1){ exit(-1);

2016-02-19 14:27:29 400

原创 c++11 chrono应用 - 一个超时timer的实现

c++11中的一个超时的timer的实现,在一些程序测试中比较有用。#ifndef __TIMEWATCHER_H__#define __TIMEWATCHER_H__#include templateclass TimeWatcher{public: TimeWatcher(unsigned int timeout = 3) :_time_out(timeout) {} ~

2016-02-16 12:08:05 3869

转载 VS2013中如何将代码自动保存为UTF8格式

原文来自百度经验  点击打开链接在利用VS2013在编写代码时,源代码会自动编码为GBK字符集,GBK可以识别中文,但是在英文编译环境下GBK则会显示成乱码。这时我们需要把GBK字符集转换为另一种国际通用字符集,即UTF8国际编码字符集。这样在编译中遇到中文字符时就不会出现乱码现象了。方法/步骤1. 如果不将字符集更改为UTF-8格式,就会出现如下形式的乱码。   2. 下

2016-01-28 09:11:58 5496

原创 无符号整形压缩与解压缩的一种实现

无符号整形的压缩与解压缩算法。今天浏览公司的私有协议的实现,在将数据序列化的代码中发现对无符号整形做了一些特殊的处理,了解下才发现是无符号整形压缩跟解压缩算法的一种。于是上网了解了下相关的内容,记录下。对于无符号整形数字,在其二进制形式上可以将其分为两部分,实际能够表示其大小以及填充的零部分. 举几个例子。              uint32_t

2015-12-26 20:41:39 738

原创 c++11 单例模式

#ifndef __SINGLETON_H__#define __SINGLETON_H__#include #include #include #include templateclass Singleton{public: Singleton() = default; ~Singleton() = default; Singleton(const Singleton

2015-12-01 00:37:55 550

原创 gettimeofday

函数原型 #include int gettimeofday(struct timeval *tv, struct timezone *tz); int settimeofday(const struct timeval *tv, const struct timezone *tz); 返回值 : 正确返回0 失败返回-1,并且设

2015-09-12 14:21:48 630

原创 Linux网络编程echo简单示例2--select实现

#include #include #include #include #include #include #include #include #include #include #include #include #define log_msg(fmt,...) do\ {\ fprintf(stderr,fmt,##__VA_AR

2015-09-11 09:44:28 712

翻译 c++ std::getline

c++ std:getline

2015-09-05 19:31:03 890

原创 linux free详解

一直以来对linux的内存的查看都是一知半解, 今天有时间详细了解了下free的命令 ,在这块整理记录下。      free命令可以在linux下查看系统的内存的使用情况。      主要参数有:      -b    结果以Bit的形式显示。      -k    结果以KB的形式显示(默认的显示方式)。      -m  结果以MB的形式显示。

2015-09-05 14:56:35 418

原创 Linux网络编程echo简单示例1

今天看<<unix网络编程>>,看了书上简单的tcp/ip的简单示例,决定还是写一写.服务端//simple_echo_server.c#include <stdio.h>#include <errno.h>#include <string.h>#include <stdlib.h>#incl...

2015-09-01 13:56:53 634

转载 字节对齐算法

字节对齐是在分配内存时需要考虑的问题.正常人类算法:unsigned int calc_align(unsigned int n,unsigned align){ if ( n / align * align == n) return n; return (n / align + 1) * align;}非正常人类算法:其一

2015-08-31 18:14:29 566

原创 c/c++可变宏定义

c99支持了可变参数的宏.使用宏的时候,参数如果不写,宏里用 #,## 这样的东西会扩展成空串。example:#include#define log(fmt, ...) do{ fprintf(stdout,fmt,##__VA_ARGS__); }while(0);int main(){ log("aaaaaaaaaaaaaaa\n"); log("a = %d

2015-08-30 22:38:29 378

转载 技巧:在 C/C++中如何构造通用的对象链表

说明 本文转自 : http://www.ibm.com/developerworks/cn/linux/l-tip-prompt/tip02/index.html  点击原文地址虚拟链表和类链表可以很好地实现这一点您是否做过这样一个项目,它要求您在内存中保存数目不定的若干不同对象?对于某些情况,二叉树是最佳选择,但在通常情况下,更简单的链表是显而易见的选择。

2015-08-19 11:14:53 434

转载 深入分析为Visual Assist设置快捷键的方法

Visual Assist(以下称VA)是一款非常棒的Visual Studio插件工具,特别是在VS2005中,提供了很多很好用的辅助功能。如下图的“Create Implementation”,就很方便。 但是每次都要点鼠标,是不是太烦呢? 如果能设置一个快捷键就好了。探索了一番, 找到了设置快捷键的方法,分享给大家。方法如下:Visual Studio 的

2015-01-14 14:01:38 501

原创 c++ 一个简单的allocator

#include #include #include #ifndef NULL#define NULL 0#endif//!内存分配.封装operator new函数template T *allocate(size_t n,T*){ T *tmp = (T*) operator new(n * sizeof(T)); if (tmp == NULL) { fpri

2014-12-06 15:10:53 533

转载 C++ STL中哈希表 hash_map介绍

用过map吧?map提供一个很常用的功能,那就是提供key-value的存储和查找功能。例如,我要记录一个人名和相应的存储,而且随时增加,要快速查找和修改:岳不群-华山派掌门人,人称君子剑张三丰-武当掌门人,太极拳创始人东方不败-第一高手,葵花宝典...这些信息如果保存下来并不复杂,但是找起来比较麻烦。例如我要找"张三丰"的信息,最傻的方法就是取得所有的记录,然后按照

2014-11-04 19:41:44 399

原创 __GUNC__宏定义

Common Predefined MacrosThe common predefined macros are GNU C extensions. They are availablewith the same meanings regardless of the machine or operating system onwhich you are using GNU C. Their n

2014-11-03 13:59:03 2996

转载 c/c++预处理

C语言与C++中中编译预处理的学习记录:首先三种形式的命令:宏定义,文件包含,条件编译命令。1、宏定义主要是:#define,#undef如下:#define PI 3.1415926                    /*不带参数的宏定义*/#define Max(a,b)  a>b?a:b                    /*带参数的宏定义*/说明:宏定义在C

2014-10-29 19:10:55 497

转载 字节序

字节序是指多字节数据在计算机内存中存储或者网络传输时各字节的存储顺序。

2014-10-28 18:58:50 408

转载 宏定义中使用do{}while(0)的好处

#define MACRO_NAME(para) do{macro content}while(0) 的格式,总结了以下几个原因: 1,空的宏定义避免warning:#define foo() do{}while(0)2,存在一个独立的block,可以用来进行变量定义,进行比较复杂的实现。3,如果出现在判断语句过后的宏,这样可以保证作为一个整体来是实现: 

2014-09-24 19:25:43 384

转载 setsockopt :SO_LINGER 选项设置

setsockopt 设置 SO_LINGER 选项   此选项指定函数close对面向连接的协议如何操作(如TCP)。内核缺省close操作是立即返回,如果有数据残留在套接口缓冲区中则系统将试着将这些数据发送给对方。 SO_LINGER选项用来改变此缺省设置。使用如下结构:struct linger {     int l_onoff; /* 0 = off, noz

2014-05-07 19:27:43 577

转载 C++ 字符串操作经验集

1.    字符类型和字符串 lchar,wchar_t,CHAR,BYTE,UCHAR,WCHAR,TCHAR,TBYTE char是C语言标准数据类型,字符型,至于由几个字节组成通常由编译器决定,一般一个字节。wchar_t是char的Unicode版本。相当于unsigned short。一般两个字节。CHAR 和WCHAR分别是char和wchar_t的别名,决不会等同。

2014-04-28 14:25:07 618

转载 gcc编译器相关

gcc and g++分别是gnu的c & c++编译器 gcc/g++在执行编译工作的时候,总共需要4步 1.预处理,生成.i的文件 2.将预处理后的文件不转换成汇编语言,生成文件.s 3.有汇编变为目标代码(机器代码)生成.o的文件 4.连接目标代码,生成可执行程序 -c    只激活预处理,编译,和汇编,也就是他只把程序做成obj文件   例子用法:

2014-04-02 20:55:08 511

转载 用 Redis 实现分布式锁

Redis有一系列的命令,特点是以NX结尾,NX是Not eXists的缩写,如SETNX命令就应该理解为:SET if Not eXists。这系列的命令非常有用,这里讲使用SETNX来实现分布式锁。用SETNX实现分布式锁利用SETNX非常简单地实现分布式锁。例如:某客户端要获得一个名字foo的锁,客户端使用下面的命令进行获取:SETNX lock.foo  如返回1,则该

2013-11-13 21:40:27 550

转载 log4cplus的一个常用封装实例

、、VLog.h#pragma once#ifndef VLOG_H#define VLOG_H#include #include #include #include #include #include using namespace log4cplus;using namespace helpers;/** * 使用log4cplus * @param lo

2013-11-09 21:50:03 4070

转载 关于pthread_cond_wait使用while循环判断的理解

在Stevens的《Unix 环境高级编程》中第11章线程关于pthread_cond_wait的介绍中有一个生产者-消费者的例子P311,在进入pthread_cond_wait前使用while进行条件判断,而没有直接使用if,耐人费解!#include struct msg { struct msg *m_next; /* value...*/}; struct m

2013-10-29 18:21:34 2153 3

空空如也

空空如也

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

TA关注的人

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