自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 使用gprof来对程序的性能分析总结

综述 gprof用于分析函数调用耗时,可用之抓出最耗时的函数,以便优化程序。gcc链接时也一定要加-pg参数,以使程序运行结束后生成gmon.out文件,供gprof分析。gprof默认不支持多线程程序,默认不支持共享库程序。 gcc -pg 编译程序运行程序,程序退出时生成 gmon...

2016-06-17 21:39:54 3473 0

原创 服务器TIME_WAIT和CLOSE_WAIT详解和解决办法

昨天解决了一个HttpClient调用错误导致的服务器异常,具体过程如下: http://blog.csdn.net/shootyou/article/details/6615051 里头的分析过程有提到,通过查看服务器网络状态检测到服务器有大量的CLOSE_WAIT的状态。  ...

2016-06-17 21:31:19 937 0

原创 wait3,wait4 用法

在阅读redis代码的时候看到的一些新知识,新用法,wait3的用法。 redis的用法。 [cpp] view plain copy   int statloc;          pid_t pid;             if ...

2016-06-17 21:28:34 1102 0

原创 linux 下的不同函数的编程效率分享总结

操作 性能 memset  1K 150W次/s memcpy  1K 150W次/s malloc 小字节 单线程 100W次/s gettimeofday 30W~400W...

2016-06-17 18:27:19 782 0

原创 基于Web开发模式的信息抽取

基于Web 开发模式的信息抽取 信息抽取是一个互联网自然语言处理的一个首要环节,信息抽取的准确度会直接影响到后续的处理。信息抽取的目标是去除噪音,获取网页有价值的信息如网页的标题、时间、正文、链接等信息。   主流算法介绍 网页信息抽取的方法有很多,比如从算法上分:基于模板的,基于...

2016-06-17 18:22:36 7195 2

原创 性能测试、指标和优化 -- 性能相关总结

这篇博文主要是涉及到服务端性能,对于前端性能比较少涉及,但是最后一部分简单介绍了前端(Web页面)的测试和调优。这篇文章最早写于2012年,今天翻出来,又重新梳理了一下。哦,对了,如果对本博客中所有文章有疑问,请发邮件到lihaibo2006$gmail.com,我一般晚上就能看到。 一、性...

2016-06-17 18:18:20 626 0

原创 Linux下代码内存泄露检查工具valgrind

自己写的代码内存呼呼的往上涨,同事告诉我一个内存泄露检查的工具valgrind,于是就用了用。 1安装 sudo apt-get install valgrind 也可以到官方网站去下载:http://www.valgrind.org 2使用 结果输出到终端,运行命令 valgri...

2016-06-17 18:16:15 488 0

原创 推荐两篇Linux下的Socket文章

Linux Socket Linux下Socket编程 HTTP 协议的简介 HTTP 协议的简介    HTTP协议是一种超文本传输协议(Hypertext Transfer Protocol),工作于网络应用层,自1990年起广泛应用于WWW 的全球信息服务,HTTP协议的详细说明...

2016-06-17 18:13:30 2054 0

原创 memset效率问题

char buff[10] 初始化一个字符数组,只需要buff[0] = '\0'即可,没有必要用memset,在使用该buff时,需要注意末尾加'\0',这样性能比较好。 [cpp] view plain cop...

2016-06-17 18:10:24 1087 0

原创 数据表水平切分的ID规则

这个问题很突出,所以转过来说一下。 http://www.jianzhaoyang.com/database/sharding_groups_global_pk 现在通过数据的水平切分(sharding)来实现数据库 Scale Out 的解决方案受到了越来越多人的青睐,但是在切分过程...

2016-06-17 18:07:28 970 0

原创 c++声明/定义,静态/非静态,变量/函数

我以前也很糊涂,所以研究了一下,写了一个例子。如下   //----------------- def.h ---------------- #ifndef _DEF_H_ #define _DEF_H_ static int a = 1; extern int b; ...

2016-06-17 18:06:20 872 0

原创 设置正确的线程数量

《高性能服务器架构 》中提到了SEDA,我搜了一下,发现这篇文章《SEDA性能优化的分析和模拟 》,对于线程数量的建议。假如一个Web请求,代码执行的时间为ST(Service Time),读文件、网络调用之类IO等待时间为为WT(Wait Time),CPU的个数是N、核数是M则线程数量TC...

2016-06-17 17:56:15 3419 0

原创 代码行统计工具

统计h/c/cpp/cc/代码,Python写的,只是统计了行数,没有区分空行,注释等 [python] view plain copy #! /usr/bin/python   # coding=utf-8   import os,sys ...

2016-06-17 17:52:27 507 0

原创 SecureCRT自动登陆到服务器的脚本以及脚本编写简单说明

Secure用SSH登陆服务器时,如果服务器较多,登陆一次很麻烦,所以,可以自己编写VBScript来搞定。 一、Secure脚本介绍 Secure是VBScript脚本,VB脚本的教程,请参考有关文档。 Secure自带的对象如下: Application对象,就是crt...

2016-06-17 17:51:04 4338 0

原创 C/C++计时器检查程序性能

一般设计C/C++程序需要每秒能处理多少的数据,因此可以做一个简单的计时器来计时,代码如下: [cpp] view plain copy #ifndef _TIMER_H_   #define _TIMER_H_   #include    ...

2016-06-17 17:49:57 458 0

原创 Python发送邮件的例子

import base64, smtplib   from email.mime.text import MIMEText   from email.header import Header      def mail_info(data, date):       mailserver...

2016-06-17 17:48:41 313 0

原创 CPU负载的分析

最近对我的本本(4核8线程)用top命令看系统状况出现了CPU利用率超过200%的情况,非常诧异,查了下相关资料,把这个问题弄清楚了。 首先来分析下CPU Load load average: 0.09, 0.05, 0.01 分别是1分钟、5分钟、15分钟的平均Load。 ...

2016-06-17 17:48:13 361 0

原创 高性能服务器架构(High-Performance Server Architecture)

High-Performance Server Architecture 高性能服务器架构 来源:http://pl.atyp.us/content/tech/servers.html 译文来源:http://www.lupaworld.com/home/space-341888-do-blog-...

2016-06-17 17:42:41 2835 0

原创 GCC 提供的原子操作总结

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

2016-06-17 15:26:30 480 0

原创 pthread_create 解析

函数简介 pthread_create是UNIX,linux环境创建线程函数 折叠编辑本段头文件 #include 折叠编辑本段函数声明 int pthread_create(pthread_t *restrict tidp,const pthr...

2016-06-17 13:37:41 789 0

原创 工作脚本处理文本shell

简单的使用shell,而且平时学习一下,如果不动手写的话,真是完全没有啥用啊, 所以,代码还是写出来的。 把下边的脚本代码贴出来。怕忘记了。 涉及到数据库连接,awk使用,日期函数,字符串模糊匹配。 [plain] vie...

2016-06-13 10:23:27 392 0

原创 POSIX---linux多线程编程基础总结

过年不回家了,一直在工作的地方呆着,就腾出了很多时间来学习了。前几天腾讯给打电话,问了linux下的一些知识,但是答得很不好。自我分析了一下,总结如下: 1.知识学习一遍是远远不够的。还是要多学习,多揣摩,多思考。 2.知识是要经常回头复习的。 3.程序的工作是要多自己写代码实践...

2016-06-13 10:07:14 995 0

原创 多线程实现消费者生产者的例子

今天看书,看了一个例子,于是自己手动的自己敲了一下。。。 但是,期望的结果和理论结果是不一样的,求解答啊。。。 上源代ma [cpp] view plain copy #include "apue.h"      #i...

2016-06-12 16:39:23 382 0

原创 linux系统编程之fcntl使用

功能描述:根据文件描述词来操作文件的特性。 #include #include   int fcntl(int fd, int cmd);  int fcntl(int fd, int cmd, long arg);  int fcntl(int fd, int cmd, stru...

2016-06-12 16:36:02 296 0

原创 TCP头校验和计算算法详解

我就不管是按“位”(bit)取反相加,还是 按“1的补码”相加了,总之 就是把需要进行校验的“字串”加(+)起来,把这相加的 结果取反当做 “校验和” (Checksum), 比如,相加的结果是0101,那么“校验和”就 是1010,验证的时候呢,就是 0101+1010 = 1111 ,取...

2016-06-12 16:32:15 2078 0

原创 linux的进程与线程

在许多经典的操作系统教科书中,总是把进程定义为程序的执行实例,它并不执行什么,只是维护应用程序所需的各种资源。而线程则是真正的执行实体,为了让进程完成一定的工作,进程必须至少包含一个线程。进程所维护的是程序所包含的资源(静态资源),如:地址空间,打开的文件句柄集,文件系统状态,信号处理handle...

2016-06-12 16:29:32 1521 0

原创 getaddrinfo()函数详解

getaddrinfo()函数详解   1. 概述 IPv4中使用gethostbyname()函数完成主机名到地址解析,这个函数仅仅支持IPv4,且不允许调用者指定所需地址类型的任何信息,返回的结构只包含了用于存储IPv4地址的空间。IPv6中引入了getaddrinfo()的新A...

2016-06-12 16:09:58 457 0

原创 网络编程之非阻塞socket的连接

补充关于select在异步(非阻塞)connect中的应用,刚开始搞socket编程的时候   我一直都用阻塞式的connect,非阻塞connect的问题是由于当时搞proxy scan   而提出的呵呵   通过在网上与网友们的交流及查找相关FAQ,总算知道了怎么解决这一问题...

2016-06-12 16:05:07 489 0

原创 memcached源码阅读----使用libevent和多线程模型

一、libevent的使用     首先我们知道,memcached是使用了iblievet作为网络框架的,而iblievet又是单线程模型的基于linux下epoll事件的异步模型。因此,其基本的思想就是 对可读,可写,超时,出错等事件进行绑定函数,等有其事件发生,对其绑定函数回调。 ...

2016-06-12 16:02:21 1560 0

原创 FastDFS源码分析之tracker协议分析

本篇博客主要讲解fastdfs中tracker协议的讲解。 fastdfs主要是存储文件,直接把整个文件存储到磁盘上,所以,简单直接。但是也有很大的局限性。 因此,fastdfs对文件的目录设置和存储是最为核心的。 为什么这么突然的讲解这些。因为我已经看了一段时间的f...

2016-06-12 16:00:17 1946 0

原创 服务端架构中的“网关服务器”

这么一个场景:一个要承载高并发、具有高性能的后台服务,往往会有多个不同的应用服务。问题来了,你会怎样设计架构呢? 如下图所示,为了共用一个稳定高效的网络处理功能,把所有服务写在一个进程里。 接下来悲剧一幕幕就要上演了,如果各个模块是多人协作开发,网络库的作者得想办法设计个插...

2016-06-12 15:57:17 1369 0

原创 高并发Web服务的演变——节约系统内存和CPU

一、越来越多的并发连接数 现在的Web系统面对的并发连接数在近几年呈现指数增长,高并发成为了一种常态,给Web系统带来不小的挑战。以最简单粗暴的方式解决,就是增加Web系统的机器和升级硬件配置。虽然现在的硬件越来越便宜,但是一味地通过增加机器来解决并发量的增长,成本是非常高昂的。结合技术优化...

2016-06-12 15:45:46 1671 0

原创 redis源码解析----epoll的使用

平时做项目,涉及到网络层的都是epoll,前几年发现redis的epoll实现起来非常的精简,好用。因为提供的接口简单,爱并实现的很高效。于是,我就提取出来,直接使用。 今天又打开该文件详细的看看他的实现细节。 首先简单介绍epoll,它是linux内核下的一个高效的处理大批量的文件操...

2016-06-12 15:41:53 326 0

原创 我的c++服务器记录----非阻塞下的socket读取操作

服务器端的基本的一个操作就是从socket的fd上进行数据读取,也就是我们经常用到的read函数。  欢迎关注我的服务器代码:http://code.taobao.org/p/fastServer/src/ 今天主要是关注的正确的进行read操作  首相,我的socket是已经设置了非阻塞属...

2016-06-12 15:35:20 521 0

原创 linux中内存使用,swap,cache,buffer的含义总结

首先介绍一下linux中内存是如何使用的。 当有应用需要读写磁盘数据时,由系统把相关数据从磁盘读取到内存,如果物理内存不够,则把内存中的部分数据导入到磁盘,从而把磁盘的部分空间当作虚拟内存来使用,也称为Swap。如果给所有应用分配足够内存后,物理内存还有剩余,linux会尽量再利用这些空闲内存,...

2016-06-11 22:18:48 729 0

原创 GCC参数详解

gcc and g++分别是gnu的c & c++编译器  gcc/g++在执行编译工作的时候,总共需要4步  1.预处理,生成.i的文件  2.将预处理后的文件不转换成汇编语言,生成文件.s  3.有汇编变为目标代码(机器代码)生成.o的文件  4.连接目标代码,生成可...

2016-06-11 21:55:12 201 0

原创 Twitter-Snowflake,64位自增ID算法详解

Twitter-Snowflake算法产生的背景相当简单,为了满足Twitter每秒上万条消息的请求,每条消息都必须分配一条唯一的id,这些id还需要一些大致的顺序(方便客户端排序),并且在分布式系统中不同机器产生的id必须不同。 Snowflake算法核心 把时间戳,工作机器id,序...

2016-06-11 21:50:50 551 0

原创 linux 系统调用sysconf函数使用

在看开源代码的时候,尤其是获取cpu核数的时候,发现了一个很好用的一个函数 [cpp] view plain copy #include             long sysconf(int name);   通过名...

2016-06-11 21:48:11 398 0

原创 原子操作的一段代码学到的知识

本实例是我在学习原子操作看到一段很有趣的程序,包含的知识很多。 首先上程序: [cpp] view plain copy // test_atomic.cpp : 定义控制台应用程序的入口点。   //      #define _G...

2016-06-11 21:44:07 373 0

原创 C语言实现分布式自增有序的唯一ID生成算法-snowflake算法

之前有人问我设计一个分布式的递增的唯一id生成。想了半天不知道,偶然一个同事说起snowflake算法,我百度了一下,很简单高效。 参考 https://github.com/twitter/snowflake 于是,我自己用c语言随便实现了一下,还没有达到工业级别,需要细化...

2016-06-11 21:27:29 2566 0

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