- 博客(162)
- 资源 (1)
- 收藏
- 关注
原创 TCP中在发送的数据的ACK未回来前,能继续发送其他数据包吗?
##基础##- 对应层数据的名称 - Application Package - Translation Segment - Networking Packet - DataLink Frame- TCP是一种基于字节流的协议,TCP 中的ACK是接收端期待发送端下一个发来的数据包的序列号- MSS 是在建立连接
2014-09-13 12:51:46 5747
原创 Linux IPC简单总结
###Linux IPC###---------------##消息传递##- 信号: 非亲缘,传递信息少,只能是控制信息而不是数据信息 - 管道: 要亲缘,无边界字节流,先进先出,消耗掉就没了,没有窥探功能MSG_PEEK - FIFO: 非亲缘,无边界字节流,先进先出,消耗掉就没了,没有窥探功能MSG_PEEK - Socket: 非亲缘,边界可有可
2014-09-11 19:51:10 1673
原创 从一道面试题(死循环里分配内存)阐述Linux的内存管理
int cnt = 0; while(1) { ++cnt; ptr = (char *)malloc(1024*1024*128); if(ptr == NULL) { printf("%s\n", "is null"); break; } } printf("%d\n", cnt);这个程序会有怎样的输出呢?
2014-05-23 12:59:29 2228
原创 C++ 复制构造和赋值操作符调用
主要是为了记录说明 :class A;A a;A b = a; //这个是调用复制构造函数呢?还是先构造,再调用赋值操作符? 结果是前者。测试代码: #include #include class A { public: A() { printf("%s\n", "A constructor"); } A(cons
2014-05-13 15:04:03 1113
原创 产生segment fault的原因及调试方法总结
段错误(以下定义摘自C专家编程)段错误通常是由于解除引用一个未初始化或非法值的指针引起的。以发生频率为序,最终可能导致段错误的常见编程错误是:1、坏指针错误:在指针赋值之前就用它来引用内存;或者向库函数传递一个坏指针(如果调试器显示系统程序中出现了段错误,很可能并不是系统程序引起的段错误,问题可能就出现在自己的代码中);或者指针被释放后还继续访问它的内容。2、改写错误:越过数组边界写入
2014-03-11 21:31:34 8591
原创 用C模拟异常
/** * @file test_try_catch.c * @Brief 使用形如C++的异常来检测超时 * @author email:huangkq1989@gmail.com blog:http://blog.csdn.net/kangquan2008 * @version 1.0 * @date 2013-10-22 */#include #include #inc
2013-10-22 11:41:44 1208
原创 让gvim的NERDTree只显示.h .c .cc .cpp等头文件和源文件
需求:在用了automake之后会产生好多在编码时不操作的文件,把它们隐藏起来更方便于编程。 在.vimrc中写入let NERDTreeIgnore=['\w*[^hcpy]$', '[^\.]\(h\|[^\.]c\|..p\|.y\)$','\.[^c]c', '\..[^p]p$', '\.[^c]pp$', '\.[^p]y'] 按f切换是否过滤,shift+
2013-10-21 14:31:44 2334
原创 系统结构概述
我应了解的系统结构1. 单核微架构:1.1. 处理器架构[http://blog.csdn.net/wyzxg/article/details/5027738]x86、ARM、MIPS算是是目前最常见也相对最知名的处理器架构了。1.2. 指令集指令集主要分为两类:CISC和SISC,有时又从SISC把VILW、EPIC分出来,各当一类l
2013-07-22 21:54:38 1568
原创 Linux性能调优
Linux性能调优1. 调优的时间点:1.1. 初始阶段1.2. 遇到瓶颈的时候2. 调优的注意事项:2.1. 做好变更管理控制变量,每次更改不能多于一个变量不能在生成环境中随意调优2.2. 要多次测试预期的调优结果是否能重现3. 配机器阶段的考虑:为使系统达到一个特定的性能目标,调优应当在设计和安装阶段开始。
2013-07-22 21:47:13 1893
原创 apt代理的设置与取消
这篇文章主要是解决取消apt代理的,原因是在apt-get update时遇到了Unable to connect to 代理。则这篇文章所描述的问题http://forum.ubuntu.org.cn/viewtopic.php?p=2612408 解决方案是:除了环境变量的要取消/etc/apt/apt.conf的要取消还要检查/etc/apt/apt.conf.d
2013-07-12 19:55:58 7474
原创 网络程序为什么要处理SIGPIPE
根据unix环境高级编程一书,我们知道管道在读端关闭时,写端继续写会引发SIGPIPE,而在网络(socket)连接的情况下,如果接收端在发送端正在写的情况下关闭,发送端也会触发SIGPIPE,如果不处理该信号,那么程序就会崩溃。 测试代码: 服务端:#include #include #include #include #include #i
2013-03-29 15:08:17 1475
原创 svn自动生成并简易配置repository和重启服务的脚本
svn的安装及配置:http://blog.csdn.net/kangquan2008/article/details/8070391svn自动生成并简易配置repository和重启服务的脚本:========================脚本=========================#!/bin/bashconf=/conf/svnserve.confpw
2013-01-24 18:57:01 2557
转载 shell 特殊变量及比较操作
表格 B-1. 特殊的shell变量变量含义$0脚本名字$1位置参数 #1$2- $9位置参数 #2 - #9${10}位置参数 #10$#位置参数的个数"$*"所有的位置参数(作为单个字符串) *"$@"所有的位置参数(每个都作为独立的字符串)
2013-01-24 14:45:34 701
原创 性能测试
WEB性能测试工具1.Ab,apache benchhttp://httpd.apache.org/docs/2.2/programs/ab.html2. JMeterhttp://jmeter.apache.org/Linux系统性能测试1.free2.iostat3. top4.vmstat5.ipcs6.iozone7.time
2013-01-24 13:35:54 792
原创 Linux内核数据结构中链表的实现
一般来说,我们实现数据结构通常是把指针放在目标struct中,也就是说:struct data_strct{ int data; struct data_struct *prev; struct data_struct *next;};但链表在linux中大量地使用,很多struct都用了链表来实现,能不能提供一套通用的接口来保证这些struct实现链表的功能,
2013-01-03 14:49:38 1064
原创 VIM Eclim的配置与使用
本篇博客目标读者不是vim初用者,没怎么用过vim的人可以去看吴垠的手把手配vim。主要的目的是记录以便换了系统方便自己重新配vim,配置好的环境可支持python,C\C++和java1、VIM的常用常用插件及配置文件有:(打包下载:http://download.csdn.net/detail/kangquan2008/4951827)auto-pairs具体的作用在此不说
2013-01-02 16:45:19 3315
原创 使用bochs对内核进行调试
1.安装http://www.cnblogs.com/bitbyte/archive/2012/10/31/2747216.html2. 注意apt-get install方式安装是无法调试的,需要使用源码安装,并启动选项--enable-debugger --enable-disasm
2012-12-01 14:01:21 864
转载 x86的段式存储-实模式与保护模式
http://www.cnitblog.com/ygb/articles/8872.html在 X86 系列中, 8086 和 8088 是 16 位处理器,而从 80386 开始为 32 位处理器, 80286 则是系列从 8088 到 80386, 也就是从 16 位到 32 位过渡的一个中间步骤。 80286 虽然仍是 16 位处理器,但是在寻址方式上开始了从“初地址模式”到
2012-12-01 13:58:46 1101
转载 C++ 关键字的使用(const static explict reinterpret_cast)
1 volatile有些变量是用volatile关键字声明的。当两个线程都要用到某一个变量且该变量的值会被改变时,应该用volatile声明,该关键字的作用是防止优化编译器把变量从内存装入CPU寄存器中。如果变量被装入寄存器,那么两个线程有可能一个使用内存中的变量,一个使用寄存器中的变量,这会造成程序的错误执行。 volatile的意思是让编译器每次操作该变量时一定要从内存中真正取出,而不是
2012-10-16 19:38:59 1377
原创 linux 进程(关于守护进程、检查一个进程是否活着、如何写一个进程号文件)
本文主要包括三个部分: 一是如何实现一个守护进程,二是如何检测一个进程是否活着,三是保证某一执行文件只有一个实例在运行。/* * 1.守护进程 */守护进程的最大特点就是脱离了中断,Linux提供了一个系统调用daemon(),要想自定义实现的话,主要包括以下六个步骤:1.第一步是使用umask函数,把所有的文件屏蔽字置0。文件屏蔽字是可以继承的,当你有相关操作时,如
2012-10-14 21:31:28 7738
原创 centos svn安装及配置与使用
暑假换了个40G的固态硬盘,跑了两个系统,快用完了,主要是一些代码资源和书籍占用硬盘,所以在学校的服务器上配个SVN,以后代码往上面传,也好培养自己的版本管理习惯。 下面是安装及配置:主要参考:http://hi.baidu.com/chxl800/item/445d9dd7b095d14afa576821安装:#yum install subversion测试
2012-10-14 19:42:15 10303
原创 存放MySQL 的磁盘满了
今天插入了大量的数据到数据库,结果查到一半不动了。比较奇怪,查了磁盘,结果显示满了:[testuser@rendering mysql]$ df -ThFilesystem Type Size Used Avail Use% Mounted on/dev/sda1 ext3 24G 23G 0 100% //dev/sda3 ext
2012-05-08 18:52:58 9676 3
原创 磁盘及Linux文件系统的一些参考资料
硬盘发展简史、当今主流硬盘知识介绍、未来硬盘技术前瞻 http://bbs.nhzj.com/thread-126128-1-1.htmlLinux 下查看块大小命令,默认4096http://www.net527.cn/a/caozuoxitong/Linux/9798.html更改linux文件块大小http://www.bizsn.com/info/a/fuwuq
2012-04-30 15:16:22 1028
原创 mysql 查看信息的命令(show\desc\explain)
/** * @file mysql查看信息的命令及帮助命令 * @author email:huangkq1989@gmail.com blog:http://blog.csdn.net/kangquan2008 *//* *1.好记性不如烂笔头: */1. 查看配置show variable;2.查看目前处理的列表;show processlist;3
2012-04-29 19:04:58 5942
原创 Linux 性能检测
Linux 性能检测的常用命令或工具有:top、free、iostat、vmstat、time 测试文件系统的工具有: dd 、 iozone top : 详细的说明见http://www.cnblogs.com/xuxm2007/archive/2010/12/02/1894809.html free : 看我的系统的截图
2012-04-29 16:39:19 2167
原创 Centos5.4 消息队列rabbitmq的安装及使用
消息队列的使用能使一些操作异步化,从而能更快的响应用户,相关操作则在后台处理。同类产品有memcacheq(新浪微博在用),rabbitmq虎扑在用。1.进入rabbit的主页,找到rabbitmq for Redhat : http://www.rabbitmq.com/install-rpm.html2.下载rabbitmq-server-2.8.1-1.noarch.rpm3.根
2012-04-21 13:43:45 2748
原创 MySQL在Centos的卸载和安装
MySQL的分区表功能自5.1才开始支持,Centos的MySQL为5.0的,需要将其卸载后安装5.1 下面是一些操作、错误和解决方案的记录:1.关闭目前的mysql服务 /etc/init.d/mysqld stop2.确保已正常关闭 ps -ef | grep mysql 如果没关闭,kill之3. 查询mysql的安装情况:
2012-04-20 23:33:03 1017
原创 新浪微博开发平台试用
最近因为需要一些测试数据,打算从新浪微博获取,因为新浪微博有开放平台,提供了API访问,就不必要像其他网站一样写爬虫了。加上微博获取数据是用js去拿的,写起爬虫比较麻烦。下面是测试的过程(主要是记录出现的错误,其他一般信息它官方文档已经很清楚了http://open.weibo.com/):1.我需要的是客户端的应用,把weibo4j SDK,下载下来,在配置文件填入:clie
2012-04-15 21:13:47 5070 2
转载 使用gprof和oprofile查找性能瓶颈
http://blog.sina.com.cn/s/blog_3e26e9390100b2sn.html有些时候,我们特别关注程序的性能,特别是底层软件,比如驱动程序,OS等。为了更好的优化程序性能,我们必须找到性能瓶颈点,“好钢用在刀刃上”才能取 得好的效果,否则可能白做工作。为了找到关键路径,我们可以使用profilng技术,在linux平台上,我们可以使用gprof和oprofile工
2012-02-27 13:33:22 452
原创 Linux在无root的权限下如何安装程序
对于一些共用的机器,可能我们并没有root权限,在安装程序时会稍微麻烦点,其实只要把相关文件放在自己的目录下就可以免去root权限限制了。 我装libevent,无root 权限,通过prefix指定安装路径为我的/home目录下即可: ./configure --prefix=/home/****/libevent --enable-shared
2012-02-25 23:26:39 5262
转载 epoll
Q:网络服务器的瓶颈在哪?A:IO效率。在大家苦苦的为在线人数的增长而导致的系统资源吃紧上的问题正在发愁的时候,Linux 2.6内核中提供的System Epoll为我们提供了一套完美的解决方案。传统的select以及poll的效率会因为在线人数的线形递增而导致呈二次乃至三次方的下降,这些直接导致了网络服务器可以支持的人数有了个比较明显的限制。自从Linux提供了/dev
2012-02-25 14:57:25 391
原创 css 圆角
.example { display: inline-block; padding: 15px; border: 1px solid #eeeeee; margin: 10px 0; background-color: #fefefe; -moz-border-radius: 10px; -webkit-border-radius: 10px; -o-border-rad
2012-02-20 22:32:24 895
原创 STL实现的底层数据结构简介
C++ STL 的实现:1.vector 底层数据结构为数组 ,支持快速随机访问2.list 底层数据结构为双向链表,支持快速增删3.deque 底层数据结构为一个中央控制器和多个缓冲区,详细见STL源码剖析P146,支持首尾(中间不能)快速增删,也支持随机访问4.stack 底层一般用23实现,封闭头部即可,不用vector的原因应该是容量大小有限制,扩容耗时
2012-02-20 22:28:43 9533 4
转载 sendfile原理,实现文件传输性能的提升
http://calmness.iteye.com/blog/378463在apache,nginx,lighttpd等web服务器当中,都有一项sendfile相关的配置,在一些网上的资料都有谈到sendfile会提升文件传输性能,那sendfile到底是什么呢?它的原理又是如何呢? 在传统的文件传输里面(read/write方式),在实现上其实是比较复杂的,需要经过多次上下
2012-02-15 09:50:59 611
原创 Unix API 列表
其实man最实在.......// restrict 表明所限定的指针是访问一个数据唯一且初始的方式,不会有其他指针指向该数据,是用于编译器优化处理的一种方式。// p.274#include void abort(void); // 终止#include int accept(int sockfd,struct sockaddr * restrict add
2012-02-14 20:58:53 986 1
转载 用autotools(Automake\Autoconf)生成Makefile
automake所产生的Makefile除了可以做到程序的自动编译和链接外,还可以用来生成各种文档(如manual page, info文件),可以将源代码文件包装起来以供发布。所以程序源代码所存放的目录结构最好符合GNU的标准惯例.下面以hello.c程序生成Makefile文件作为例子。1.在当前目录下创建一个名为hello的子目录。hello这个目录用于存放hello.c这个程序
2012-02-08 22:00:14 491
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人