自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(198)
  • 资源 (5)
  • 收藏
  • 关注

原创 _GLIBCXX_USE_CXX11_ABI 定义不一致带来的宕机问题

@TOC很久没有写文章了,记录一下ABI 是什么我们看看wiki定义: 应用二进制接口(英语:application binary interface,缩写为ABI)是指两程序模块间的接口,一个ABI定义了机器代码如何访问数据结构与运算程序,此处所定义的界面相当低端并且相依于硬件。而类似概念的API则在源代码定义这些,则较为高端,并不直接相依于硬件,通常会是人类可阅读的代码。一个ABI常见的样貌即是调用约定:资料怎么成为计算程序的输入或者从中得到输出;x86的调用约定即是一个ABI...

2021-05-29 23:59:23 3694 7

原创 linux 编译安装 jsoncpp

编译安装jsoncpp下载jsoncpp源码$ wget https://github.com/open-source-parsers/jsoncpp/archive/0.10.1.zip2、解压缩源码文件$ mv 0.10.1.zip jsoncpp-0.10.1.zip$ unzip jsoncpp-0.10.1.zip3、编译安装$ cd

2018-01-11 12:45:41 2495

转载 linux互斥锁和条件变量的关系

互斥锁一个明显的缺点是它只有两种状态:锁定和非锁定。而条件变量通过允许线程阻塞和等待另一个线程发送信号的方法弥补了互斥锁的不足,它常和互斥锁一起配合使用。使用时,条件变量被用来阻塞一个线程,当条件不满足时,线程往往解开相应的互斥锁并等待条件发生变化。一旦其他的某个线程改变了条件变量,他将通知相应的条件变量唤醒一个或多个正被此条件变量阻塞的线程。这些线程将重新锁定互斥锁并重新测试条件是否满足。一般说来,条件变量被用来进

2017-02-26 02:18:44 1648

原创 makefile 强制使用静态链接库

方法1-static : 所有的库文件使用静态库链接g++ -static -ltest -lfoo 方法 2:这里有2个命令介绍一下:–Bdynamic : 用于在各种可能的情况下为共享动态绑定设置首选项。-Bstatic : 将绑定只限制于静态库。当库的静态和动态版本都可用时,使用这2个选项在命令行首选项间进行切换。 注意使用这2个命令需要配合 -Wl 选项一个例子g++ -Wl,-Bsta

2017-02-23 15:11:50 13774

原创 GDB的一些小技巧

examine命令(简写是x)来查看内存地址中的值。x命令的语法如下所示: x [n/f/u] [addr] n、f、u是可选的参数,下面每个参数详解参数n: 是一个正整数,表示需要显示的内存单元的个数,也就是说从当前地址向后显示几个内存单元的内容。 参数f: 表示显示的格式,一般来说GDB会根据变量的类型输出变量的值,也可自定义参见下面x 按十六进制格式显示变量。 d 按十进制格式显示变量。

2016-07-22 17:07:54 937

原创 redis 性能优化

1. 如果redis客户端和服务端都在同一台服务器,可以使用 unix socket ,不需要走TCP监听网络端口,使用后效果非常明显。UNIX Domain Socket是在socket架构上发展起来的用于同一台主机的进程间通讯(IPC),它不需要经过网络协议栈,不需要打包拆包、计算校验和、维护序号和应答等,只是将应用层数据从一个进程拷贝

2016-04-26 18:45:36 5379 1

转载 google c++ 编码规范

1. 命名约定最重要的一致性规则是命名管理. 命名风格快速获知名字代表是什么东东: 类型? 变量? 函数? 常量? 宏 ... ? 甚至不需要去查找类型声明. 我们大脑中的模式匹配引擎可以非常可靠的处理这些命名规则.命名规则具有一定随意性, 但相比按个人喜好命名, 一致性更重, 所以不管你怎么想, 规则总归是规则.

2016-03-24 16:55:01 31625 2

原创 linux 编译安装GCC4.9.3(完整版)

第一步首先下载gcc源码包wget http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-4.9.3/gcc-4.9.3.tar.bz2第二步将下载好的文件放在非root用户也有读权限的地方,例如 /home/myuser 或者 /usr/gcc-build/ 下面第四步我会讲为什么要这么做.第三步解压文件,做一些准备工作tar.........

2016-02-01 19:05:55 31128 5

原创 linux 挂载硬盘,创建新分区,删除分区

1.主分区,扩展分区,逻辑分区的联系和区别 一个硬盘可以有1到3个主分区和1个扩展分区,也可以只有主分区而没有扩展分区,但主分区必须至少有1个,扩展分区则最多只有1个,且主分区+扩展分区总共不能超过4个。逻辑分区可以有若干个**1. 查看当前磁盘信息**执行 fdisk -l 可以看到系统有sda, sdb 两块硬盘,其中 sdb 是我刚刚加的5G硬盘, 可以看到里面是没有任何分区的

2016-01-15 20:43:03 46141 2

转载 std bind 原理简单图解(清晰简明)

本文解释了bind 是如何工作的。为了清晰,我对图中的语法作了一些简化(例如,省略函数调用操作符的参数类型),并且简化了 bind 的实现.bind 可以用来将用户提供的需要一个参数的函数转换成不需要参数的函数对象。绑定的值(在这个例子中是123)存储在函数对象内并且会被自动

2016-01-14 15:34:38 7322 1

原创 mysql 无法远程登陆解决办法

linux MySQL数据库无法远程连接的解决办法 关于MySql数据库无法远程连接的问题可以归结为以下几点:1). 没有授予相应的权限: 2). 修改数据user表3). 修改防火墙3306端口打开4). 修改my.cnf 配置

2016-01-13 23:23:07 5970

原创 Redhat7 CentOS7 无法启动mysql 的解决办法

# mysqlERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (111)

2016-01-13 20:52:12 10382 1

原创 linux 编译安装log4cxx

首先从 https://github.com/apache/log4cxx/tree/mcatan 下载源代码,目前最新的版本是0.10.0git clone https://github.com/apache/log4cxx.git这时直接./configure 会报错,找不到apr和apr-uitl, 所以还需要先安装这2个包wget http://mirrors.hust.edu.cn/apache//apr/apr-1.5.2.tar.gzwget http://mirrors.hust

2016-01-08 10:36:18 2972

原创 linux 无法使用pstree命令

pstree是linux很有用的一个命令,可打印系统当前各个进程父子关系,最近买了aws,安装redhat 7没有预装pstreeyum list | grep pstree 也没有找到可安装的包.实际上在linux平台要安装psmisc

2015-11-16 17:08:21 13678 1

原创 linux 开启独立iptables日志

系统日志配置在CentOS5上叫syslog,而在CentOS6上叫rsyslog,叫增强版的syslog,CentOS5上的配置文件在/etc/syslog.conf下,而CentOS6在/etc/rsyslog.conf下1. 在rsyslog.conf 添加配置 /etc/rsyslog.conf中添加不同的日志级别(默认warn(=4))kern.war

2015-08-26 11:58:42 22138

转载 整理 putty 自动登陆的几种方法

一:用 Putty v6.0 修改版,可保存登陆名和密码,实现自动登陆Putty 默认版只能保存登陆名,每次需输入登陆密码,主机和登陆名是保存在注册表中的。不过因为它是开源,所以有相关需求者做了个能同时保存用户和密码的版本,这些信息是保存在文件中的。该保存登陆名和密码版可在些下载:putty_v6.0.rar。就是设置起来有点是特别好理解,默认版本也是这样子的。操作步骤

2015-08-25 15:24:53 25399 1

原创 linux下安装google protobuf(详细)

说明: protobuf已经全面迁移到github,地址:https://github.com/google/protobuf 直接下载2.6.1版本:https://github.com/google/protobuf/archive/v2.6.1.zip我转linux不久所以对linux的各种系统路径不是特别熟悉,网上看了几个教程都没有提到 添加 LIBRARY_PATH路径,导致自...

2015-08-10 11:55:13 101267 25

转载 A* 寻路算法

A* 寻路算法原文地址: http://www.gamedev.net/reference/articles/article2003.asp概述虽然掌握了 A* 算法的人认为它容易,但是对于初学者来说, A* 算法还是很复杂的。搜索区域(The Search Area)我们假设某人要从 A 点移动到 B 点,但是这两点之间被一堵墙隔开。如图 1 ,绿色是 A ,红色是 B 

2015-05-19 01:12:23 1067

转载 详解 C++11 lambda表达式

lambda表达式是函数式编程的基础。咱对于函数式编程也没有足够的理解,因此这里不敢胡言乱语,有兴趣的可以自己查找相关资料看下。这里只是介绍C++11中的lambda表达式以及与此相关的闭包(closure)。 同样,这里首先给出参考文档http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2927.pdf

2015-05-18 02:22:32 3812 1

转载 常用排序算法时间复杂度和空间复杂度

摘自维基百科: http://zh.wikipedia.org/wiki/%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95#.E7.A8.B3.E5.AE.9A.E6.80.A7名称数据对象稳定性时间复杂度空间复杂度描述平均最坏冒泡排序数组(无序区,有序区

2015-05-17 20:50:08 17142 2

转载 nmake命令(windows下的makefile)

1. 如果已经有vc6的dsp工程,可直接导出nmake脚本文件(.mak)    “Project - Export Makefile...”nmake -f nMakeTest.mak CFG="nMakeTest - Win32 Debug"nmake -f nMakeTest.mak CFG="nMakeTest - Win32 Debug" allnmake -f

2015-05-17 00:14:39 46316

转载 【网络协议】TCP分段与UDP/IP分片 (MTU最大传输单元,MSS最大分段大小)

我们在学习TCP/IP协议时都知道,TCP报文段如果很长的话,会在发送时发生分段,在接受时进行重组,同样IP数据报在长度超过一定值时也会发生分片,在接收端再将分片重组。    我们先来看两个与TCP报文段分段和IP数据报分片密切相关的概念。    MYU(最大传输单元)    MTU前面已经说过了,是链路层中的网络对数据帧的一个限制,依然以以太网为例,MTU为1500个字节

2015-04-23 19:46:40 7324

转载 TCP/IP/UDP/ICMP/ARP/ethernet 各种协议头部结构体

TCP/IP协议头部结构体(转) 网络协议结构体定义[cpp] view plaincopyprint?// i386 is little_endian.  #ifndef LITTLE_ENDIAN  #define LITTLE_ENDIAN   (1)   //BYTE ORDER  #else  #er

2015-04-23 19:41:33 22944

转载 UDP SOCKET编程中的connect()

UDP是一个无连接的协议,因此socket函数connect()似乎对UDP是没有意义的,然而事实不是这样。    一个插口有几个属性,其中包括协议,本地地址/端口,目的地址/端口。    对于UDP来说:    socket()函数建立一个插口;    bind()函数指明了本地地址/端口(包括ADDR_ANY, 通配所有本地网络接口);    conne

2015-04-23 17:31:12 885

转载 linux 下获取线程ID

linux多线程环境下gettid() pthread_self() 两个函数都获得线程ID,但这2个ID有所不同gettid是内核中的线程的ID:POSIX thread ID可以在一个进程内唯一标识一个线程,但如果放到系统范围内的话就得用gettid了。pthread_self是POSIX thread ID:创建线程函数返回的第一个参数就是 pthread_s

2015-04-22 17:29:02 9099

转载 linux select 并发连接上不去

一般linux下TCP连接的限制在TD_SETSIZE,系统默认为1024,由FD_SETSIZE决定。1.修改方法:  修改/usr/etc/security/limits.conf文件,加入    *soft nofile 20000    *hard nofile 20000  然后reboot系统。服务器就可以建立连接到20000个了,其连接方法是直接用conn

2015-04-21 18:01:50 1799

转载 Linux下高并发socket最大连接数所受的各种限制

转自:http://blog.sae.sina.com.cn/archives/19881、修改用户进程可打开文件数限制在Linux平台上,无论编写客户端程序还是服务端程序,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为系统为每个TCP连接都要创建一个socket句柄,每个socket句柄同时也是一个文件句柄)。可使用ulimi

2015-04-20 21:15:31 2153

转载 Linux流量监控工具 - iftop

在类Unix系统中可以使用top查看系统资源、进程、内存占用等信息。查看网络状态可以使用netstat、nmap等工具。若要查看实时的网络流量,监控TCP/IP连接等,则可以使用iftop。一、iftop是什么?iftop是类似于top的实时流量监控工具。官方网站:http://www.ex-parrot.com/~pdw/iftop/二、iftop有什么用?

2015-04-20 11:56:32 780

转载 在linux下配置iptables防火墙

在CentOS下配置iptables防火墙,是非常必要的。来我们学习如何配置!在Linux中设置防火墙,以CentOS为例,打开iptables的配置文件:vi /etc/sysconfig/iptables   通过/etc/init.d/iptables status命令查询是否有打开80端口,如果没有可通过两种方式处理:1.修改vi /etc/sy

2015-04-19 13:16:14 1443

转载 Windows下编译OpenSSL最新版(openssl-1.0.2a)

如何在Windows下编译OpenSSL (VS2010使用VC10的cl编译器)1、安装ActivePerl//初始化的时候,需要用到perl解释器2、使用VS2010下的Visual Studio 2010 Command Prompt进入控制台模式(这个模式会自动设置各种环境变量)3、解压缩openssl的包,进入openssl的目录4、perl configure VC-W

2015-04-18 18:37:11 13351 2

转载 5种网络IO模型

同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO分别是什么,到底有什么区别?这个问题其实不同的人给出的答案都可能不同,比如wiki,就认为asynchronous IO和non-blocking IO是一个东西。这其实是因为不同的人的知识背景不同,并且在讨论这个问题的时候上下文(context)也不

2015-04-10 10:39:07 12444 1

转载 Visual Studio 2012 CPU高的解决办法

http://blog.csdn.net/rmxming/article/details/40299433笔者一直都喜欢用VAX插件来做C++的开发,但发现VS2012安装了VAX后,CPU占用超级高,有时界面卡死得非常厉害。我卸了又装,升级最新版,都不管用。直到有天,看到网友说:VS2012的sdf文件和pch文件夹很大,可以设置个临时目录进行存放,以便及时删除而节约

2015-03-31 00:41:44 5613

原创 编译 googleBreakpad

一. 在Linux下的编译: 暂时不讲,看readme就行了,不难二. 在Windows下编译: 1. 安装python 2.x.x就行,据说3.x.x系列会报错,我没试 2. 然后确保有这个目录“googleBreakpad\src\tools\gyp”,如果没有去 github下载 一个gyp 包,解压放到tools下 3. 在

2015-03-27 11:14:22 3808

转载 cocos2dx锚点简述

由于我们在使用Cocos2dx进行开发时,一般都是在场景中加载精灵来实现的,而精灵上挂载的往往都不是一个点而是一张图片资源,那么我们在场景中设置这个精灵的位置时,对这张资源图片来说是应该把这张图片资源中的哪个点与我们设置的点对齐呢?这里就引出了锚点这个概念,我们通过设置锚点来确定资源图片上哪个点与我们设置位置点对齐。简而言之,锚点确定精灵自己在父节点的加载位置。 锚点就是你在CCNode中,使

2015-03-25 14:48:21 776

原创 基于C++ 的苹果apns消息推送实现(2)

1.本模块使用C++ 和 Openssl 代码 实现了一个简单的apns客户端 2.本文的姐妹篇:基于boost 的苹果apns消息推送实现(1) 3.最初使用的sslv23/sslv2/sslv3只能和apple 建立连接,但一直是handshake失败, 最后换tls连接,握手成功! original_ssl_client.h#ifndef original_ssl_client_h#

2015-03-20 17:07:08 7630 3

原创 基于boost 的苹果apns消息推送实现(1)

1. 当时为了测试,做了2份C++代码实现,一份是基于boost的实现 较完整,一份是C++加Openssl实现(可以用,不少细节需要调整) 2. 本模块只涉及apns客户端部分 3. 涉及boost的主要模块有boost bind,boost asio,boost ssl,boost deadline_timer, boost 正则表达式 4. 有一点需要注意,最初使用的sslv23/ssl

2015-03-20 11:42:17 3266

转载 C++11 语法特性

一、Lambda表达式C++ 11中的Lambda表达式用于定义并创建匿名的函数对象,以简化编程工作。Lambda的语法形式如下:              [函数对象参数] (操作符重载函数参数) mutable或exception声明 ->返回值类型 {函数体}      可以看到,Lambda主要分为五个部分:[函数对象参数]、(操作符重载函数参数)、muta

2015-03-20 10:09:23 793

原创 无法进入adb shell 和 adb install无响应的解放方法

1。 adb devices //看看模拟器或手机设备是否连接正常或下线2。 adb shell //是否能进入系统目录3。 adb kill-server //关闭adb服务 adb start-server //启动adb服务4。 如果adb shell 正常5。试试 adb push .apk /sdcard/.apk adb shell pm install /s

2015-02-06 11:45:56 24894 1

转载 用Intel HAXM加速Android Emulator

周末试玩了一下在Eclipse中使用ADT开发Android应用程序的环境,当然诚如大家都懂的那样,Android Emulator模拟器启动和运行的速度确实是比较慢的,也都“有口皆碑”了的,呵呵。当然,Intel去年开发并在Google Android官方网站发布了一个对Android Emulator的驱动,大幅提升了在Intel x86平台上Android Emulator的启动和运行效率,

2015-01-27 10:40:49 2124

转载 boost::noncopyable

今日粗看boost的代码,发现很多类都继承noncopyable,以下是noncopyable的代码:class noncopyable  {   protected:      noncopyable() {}      ~noncopyable() {}   private:  // emphasize the following members are private

2015-01-20 20:00:46 609

googlebreakpad

googlebreakpad编译和使用 详细见我的博客

2015-03-27

在动态库(dynamic libraries)和静态库(static libraries)使用模板(template)

在动态库(dynamic libraries)和静态库(static libraries)使用模板(template)

2013-01-14

临时文件删除工具

自己做的一款 临时文件\中间文件删除工具 程序利用MFC搭建框架,在你硬盘工程项目很多的时候 尤其有用,希望能帮到和我有相同需求的朋友。

2012-08-24

MFC自绘控件 播放器

利用MFC自绘控件做的一款播放器,自己封装了播放类,压缩文件中有详细的说明.

2011-07-08

空空如也

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

TA关注的人

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