- 博客(68)
- 资源 (15)
- 收藏
- 关注
转载 MySql常用命令总结
1:使用SHOW语句找出在服务器上当前存在什么数据库:mysql> SHOW DATABASES;2:2、创建一个数据库MYSQLDATAmysql> CREATE DATABASE MYSQLDATA;3:选择你所创建的数据库mysql> USE MYSQLDATA; (按回车键出现Database changed 时说明操作成功!)4:查看现在的数据库中存在什么表m
2013-05-30 13:28:25 749
转载 频繁分配释放内存导致的性能问题的分析 --(附)malloc分配原理浅析 mmap关注焦点 如何优化分配内存
现象1 压力测试过程中,发现被测对象性能不够理想,具体表现为: 进程的系统态CPU消耗20,用户态CPU消耗10,系统idle大约70 2 用ps -o majflt,minflt -C program命令查看,发现majflt每秒增量为0,而minflt每秒增量大于10000。 初步分析majflt代表major fault,中文名叫大错误,min
2013-05-29 17:16:59 1716
转载 Linux网络配置与IP高级路由命令
懂得网络配置命令是一般技术人员必备的技术,经过一段时间的研究和学习,总结了一些常用的命令和示例以便日后查阅. 传统的在1--3点,ip高级路由命令在4--12点,两者部分可以通用,并达到同样的目的,但ip的功能更强大,可以实现更多的配置目的。 首先,先了解传统的网络配置命令: 1. 使用ifconfig命令配置并查看网络接口情况 示例1: 配置eth
2013-05-28 15:18:53 1078
转载 漫谈TCP/IP
1.tcp的基础:三次握手+4次分手 握手简言之:SYN; ACK,SYN; ACK; //用红色表示被动端,这里表示服务器端 分手简言之: FIN; ACK; FIN; ACK; //用红色表示被动关闭端,这里发起关闭可以是服务器,也可以是客服端。 1.5 换个角度看tcp握手和分手 Q:握手中,最后一次ACK可以缺少吗? A:等价于问最后一次ACK的意义。 只有
2013-05-28 11:52:43 1064
转载 Linux应用的延时和丢包模拟
本文将要介绍的是 RHCA 中的一个 BDP 的测试,这也是公司很常用的一种延时和丢包的模拟,你可以测试你的应用软件在不同的情况下的性能,也可以测试你 tcp/ip 调优后是否合适之类,很多地方可以用到。我们做的应用软件,还有测试 TCP/UDP 对比,测试 BDP 对 TCP/IP 的影响时,我们都需要一些网络中的延时和丢包模拟,很多商业的软件可以做这个事,其实完美的 Linux 本身
2013-05-28 10:59:42 1593
转载 在 Linux下调试内存泄漏的方法
由于内存泄漏不是显而易见,而且存在内存错误的 C 和 C++ 程序会导致各种问题,所以需要特别关注 C 和 C++ 编程的内存问题,特别是内存泄漏。本文先从如何发现内存泄漏,然后是用不同的方法和工具定位内存泄漏,最后对这些工具进行了比较,另外还简单介绍了资源泄漏的处理(以句柄泄漏为例)。本文使用的测试平台是:Linux (Redhat AS4)。但是这些方法和工具许多都不只是局限于 C/C++
2013-05-28 10:57:54 4063
转载 如何借助Sniffer来诊断Linux网络故障?
夫运维者、善假于物也、形如 Sniffer(嗅探器)。Sniffer 在网络安全领域是一把双刃剑、或被黑客作为网络攻击工具、或协助运维诊断网络故障,本文以 Linux 平台下三个常用的网络嗅探器 Tcpdump、Ethereal 和 EtherApe 为例,介绍如何借助 Sniffer 来诊断网络故障,从而保障网络高效安全地运行,但由于 Sniffer 实在太强大、本文也只是入门性的做些介绍、有兴
2013-05-28 10:45:12 1488
转载 Linux网络编程--10. 原始套接字 --11. 后记
10. 原始套接字 我们在前面已经学习过了网络程序的两种套接字(SOCK_STREAM,SOCK_DRAGM).在这一章 里面我们一起来学习另外一种套接字--原始套接字(SOCK_RAW). 应用原始套接字,我们可以编写出由TCP和UDP套接字不能够实现的功能. 注意原始套接字只能够由有root权限的人创建. 10.1 原始套接字的创建 int sock
2013-05-28 10:42:14 996
转载 Proxy源代码分析--谈谈如何学习linux网络编程
Linux是一个可靠性非常高的操作系统,但是所有用过Linux的朋友都会感觉到,Linux和Windows这样的"傻瓜"操作系统(这里丝毫没有贬低Windows的意思,相反这应该是Windows的优点)相比,后者无疑在易操作性上更胜一筹。但是为什么又有那么多的爱好者钟情于Linux呢,当然自由是最吸引人的一点,另外Linux强大的功能也是一个非常重要的原因,尤其是Linux强大的网络功能更是引人注
2013-05-28 10:41:33 876
转载 Linux网络编程--8. 套接字选项
有时候我们要控制套接字的行为(如修改缓冲区的大小),这个时候我们就要控制套接字的选项了. 8.1 getsockopt和setsockopt int getsockopt(int sockfd,int level,int optname,void *optval,socklen_t *optlen) int setsockopt(int sockfd,int
2013-05-28 10:37:57 859
转载 Linux网络编程--7. TCP/IP协议
你也许听说过TCP/IP协议,那么你知道到底什么是TCP,什么是IP吗?在这一章里面,我们一起来学习这个目前网络上用最广泛的协议. 7.1 网络传输分层 如果你考过计算机等级考试,那么你就应该已经知道了网络传输分层这个概念.在网络上,人们为了传输数据时的方便,把网络的传输分为7个层次.分别是:应用层,表示层,会话层,传输层,网络层,数据链路层和物理层.分好了层以后,传输数据
2013-05-28 10:30:49 1051
转载 Linux网络编程--6. 高级套接字函数
在前面的几个部分里面,我们已经学会了怎么样从网络上读写信息了.前面的一些函数(read,write)是网络程序里面最基本的函数.也是最原始的通信函数.在这一章里面,我们一起来学习网络通信的高级函数.这一章我们学习另外几个读写函数. 6.1 recv和send recv和send函数提供了和read和write差不多的功能.不过它们提供 了第四个参数来控制读写操作.
2013-05-28 10:26:32 790
转载 Linux网络编程--5. 用户数据报发送
我们前面已经学习网络程序的一个很大的部分,由这个部分的知识,我们实际上可以写出大部分的基于TCP协议的网络程序了.现在在Linux下的大部分程序都是用我们上面所学的知识来写的.我们可以去找一些源程序来参考一下.这一章,我们简单的学习一下基于UDP协议的网络程序. 5.1 两个常用的函数 int recvfrom(int sockfd,void *buf,int le
2013-05-28 10:26:01 893
转载 Linux网络编程--4. 完整的读写函数
一旦我们建立了连接,我们的下一步就是进行通信了.在Linux下面把我们前面建立的通道 看成是文件描述符,这样服务器端和客户端进行通信时候,只要往文件描述符里面读写东西了. 就象我们往文件读写一样. 4.1 写函数write ssize_t write(int fd,const void *buf,size_t nbytes) write函数将buf中
2013-05-28 10:23:18 864
转载 Linux网络编程--2. 初等网络函数介绍(TCP)
Linux系统是通过提供套接字(socket)来进行网络编程的.网络程序通过socket和其它几个函数的调用,会返回一个 通讯的文件描述符,我们可以将这个描述符看成普通的文件的描述符来操作,这就是linux的设备无关性的 好处.我们可以通过向描述符读写操作实现网络之间的数据交流. 2.1 socket int socket(int domain, int type,int
2013-05-28 10:21:52 699
转载 Linux网络编程--1. Linux网络知识介绍
1.1 客户端程序和服务端程序 网络程序和普通的程序有一个最大的区别是网络程序是由两个部分组成的--客户端和服务器端. 网络程序是先有服务器程序启动,等待客户端的程序运行并建立连接.一般的来说是服务端的程序 在一个端口上监听,直到有一个客户端的程序发来了请求. 1.2 常用的命令 由于网络程序是有两个部分组成,所以在调试的时候比较麻烦,为此我们有必要
2013-05-28 10:16:41 684
转载 好书推荐
TCP/IP Illustrated Volume 1 The Protocols.chm Addison Wesley UNIX.Network.Programming.chm The.Apache.Modules.Book.Jan.2007.pdf How.the.Internet.Works.chm Reilly HTTP T
2013-05-27 16:30:58 780
转载 tcpcopy架构漫谈
基于server的请求回放领域,一般分为离线回放和在线实时复制两大领域,一般研究者都是从离线回放的角度在苦苦研究,而在实时复制领域,研究非常少,至少从sigcomm评审人的评审意见来看,没有看到相关内容。请求实时复制,据我所知,一般可以分为两类:1)基于应用层的请求复制2)基于底层数据包的请求复制传统的做法一般从应用层面进行复制,比如基于服务器的请求复制,这种复制的好处
2013-05-27 16:16:32 1087
转载 学习学习
至少掌握其中一门语言: C, C++, Objective-C, Java, PHP, Python 或 Ruby。了解至少一门其他语言,熟悉Scala,Haskell或者Lisp。学习数据结构( data structures)。尝试实现其中的大部分。理解他们的时间复杂度( time complexities)。解决编程问题。阅读下面的文章( Read this)和解决这里的大多数
2013-05-27 15:46:48 754
转载 通过 TCP/IP 三向握手的说明
概要本文专供熟悉TCP/IP协议的群体,并讨论了客户端和服务器启动或终止 TCP 连接时的三步握手过程。关于 TCP/IP 协议的其他信息,请参阅 Microsoft 匿名 ftp 服务器上以下可用的白皮书:文件名: Tcpipimp2.doc位置: ftp://ftp.microsoft.com/bussys/winnt/winnt-docs/papers/"Micros
2013-05-27 14:35:31 1234
转载 网络驱动移植之例解netdev_priv函数
http://blog.csdn.net/npy_lp/article/details/7090541 开发平台:Ubuntu 11.04 编译器:gcc version 4.5.2 (Ubuntu/Linaro 4.5.2-8ubuntu4) 内核源码:linux-2.6.38.8.tar.bz2 1、如何分配struct net_de
2013-05-24 12:16:49 942
转载 netdev_priv函数的分析
1. 函数netdev_priv分析[cpp] view plaincopyinclude/linux/netdevice.h #define NETDEV_ALIGN 32 #define NETDEV_ALIGN_CONST (NETDEV_ALIGN - 1) static inline void
2013-05-24 12:04:53 1285
转载 linux module的编写方法
#include #include MODULE_LICENSE("GPL"); //协议声明MODULE_AUTHOR("David Xie"); //作者MODULE_DESCRIPTION("Hello World Module"); //模块描述MODULE_ALIAS("a simplest module"
2013-05-24 10:55:37 1074
转载 printk内核调试
首先阐明一点,我调试的目的是为了学习,看看内核代码是如何运行,打印一些内核运行时候的信息帮助自己学习,不是为了调试出系统的BUG(原因很简单,我没那个水平^-^). 在编程时候,最简单的调试莫过于用打印语句打印出结果从而判断BUG出在哪儿,写JAVA的都写过System.out.println这样的语句来调试。后来高级点,用了DEBUG来调试。不过打印语句简单,对付简单的BUG和一
2013-05-24 10:53:45 886
转载 Linux内存机制简介
Linux内存分配有其特殊性,理解其分配机制,将有助于调试程序,特别是和内存泄露相关的问题分析,本文件试图以示例的方式简单的讲解一下Linux内存分配机制,希望对你的工作有所帮助。先粘贴出示例将使用的源代码,为了方便讲解,为每行加上行号,如下:1) #include 2) #include 3) #include 4)5) int main()6) {7)
2013-05-24 10:21:32 962
转载 Linux进程ID的内核管理
在进程创建的时候,Linux系统会分配一个号码给当前这个进程,这个号码在进程所在的命名空间中是唯一的,但在其它的兄弟进程中,这个号码就不是唯一的了,也就是对于全局的命名空间来说,这个号不是全局唯一。这个号码就是进程的ID号,简称为PID。一,进程号数据结构表示这个PID被保存在进程的结构表示task_struct中。[cpp] view plaincop
2013-05-24 10:11:35 814
转载 -bash: /bin/rm: Argument list too long
今天要删除shopex的cache目录下的文件,结果提示 -bash: /bin/rm: Argument list too long 百度查到可以用xargs命令 删除数量比较多的文件 ls | xargs -n 10 rm -fr ls当然是输出所有的文件名(用空格分割) xargs就是将ls的输出,每10个为一组(以空格为分隔符),作为rm -rf的参数 也就是说将所有文件名10个为一组
2013-05-23 17:14:03 1158
转载 Linux网络协议栈之数据包处理过程
Linux网络协议栈之数据包处理过程 1 前言本来是想翻译《 The journey of a packet through the linux 2.4 network stack 》 这篇文章的。但在查阅相关的资料时,发现需要补充一些技术细节,才使得我这种菜鸟理解更加深刻,所以综合了上面两篇文档,在加上自己的裁减和罗嗦,就有了下面的文字。我不知道这是否侵犯了作者权益。
2013-05-23 17:04:24 7817
转载 Linux协议栈报文收发流程记录
RX流程1.非NAPI的RXdriver的isr调用eth_type_trans //确定skb->pkt_type和skb->protocoldriver的isr调用netif_rx //可查看返回值,NET_RX_DROP表示丢包, __skb_qu
2013-05-23 16:45:43 3134
转载 Linux内核原子函数,自旋锁,信号量了解(转)
一.为什么内核需要同步方法并发指的是多个执行单元同时,并行被执行,而并发的执行单元对共享资源(硬件资源和软件上的全局变量,静态变量等)的访问则很容易导致竞态。主要竞态发生如下:1.对称多处理器(SMP)多个CPU SMP是一种紧耦合,共享存储的系统模型,它的特点是多个CPU使用共同的系统总线,因此可访问共同的外设和存储器。 2.单CPU内进程与抢占它的进程Linux2.
2013-05-23 14:39:05 904
转载 Linux 下动态库和静态库的创建和调用
每个程序实质上都会链接到一个或者多个的库。比如使用C函数的程序会链接到C运行时库,GUI程序会链接到窗口库等等。无论哪种情况,你都会要决定是链接到静态库(static libary)还是动态库(dynamic libary)。 链接到静态库会使你的程序臃肿,并且难以升级,但是可能会比较容易部署。 而链接到动态库会使你的程序轻便,并且易于升级,但是会难以部署最近写的.c文件比较大,先
2013-05-22 16:08:50 797
转载 Linux下pthread的线程亲和性研究
一、什么是线程的亲和性: 了解 Linux2.6 调度器如何处理 CPU 亲和性(affinity)可以帮助您更好地设计用户空间的应用程序。软亲和性 意味着进程并不会在处理器之间频繁迁移,而 硬亲和性 则意味着进程需要在您指定的处理器上运行。 简单地说,CPU 亲和性(affinity) 就是进程要在某个给定的 CPU 上尽量长时间地运行而不被迁移到其他处理器的倾向性。
2013-05-22 15:16:06 1421
转载 一种高效无锁内存队列的实现
Disruptor是LMAX公司开源的一个高效的内存无锁队列。这两天看了一下相关的设计文档和博客,下面尝试进行一下总结。第一部分。引子谈到并发程序设计,有几个概念是避免不了的。1.锁:锁是用来做并发最简单的方式,当然其代价也是最高的。内核态的锁的时候需要操作系统进行一次上下文切换,等待锁的线程会被挂起直至锁释放。在上下文切换的时候,cpu之前缓存的指令和数据都将失效,对性能有很
2013-05-22 11:52:56 1327
转载 无锁队列的实现
关于无锁队列的实现,网上有很多文章,虽然本文可能和那些文章有所重复,但是我还是想以我自己的方式把这些文章中的重要的知识点串起来和大家讲一讲这个技术。下面开始正文。关于CAS等原子操作在开始说无锁队列之前,我们需要知道一个很重要的技术就是CAS操作——Compare & Set,或是 Compare & Swap,现在几乎所有的CPU指令都支持CAS的原子操作,X86下对应的是
2013-05-22 11:39:12 1084
转载 线程同步与双队列
关于线程同步与双队列性能2009年7月12日星期日1问题背景这是在2008年3月学习多线程编程时遇到的一个问题。当时我写了一个代码片段,其中两个线程共享一个队列,一个线程往队列中写数据,而另一个线程从队列中读取数据。这是典型的生产者和消费者模型。但在这里并不适合使用semaphore来做。由于当时的我对多线程编程不太熟练,在线程中大量使用了printf输出调试信息,
2013-05-22 11:34:41 1276
转载 随想录(写给那些学校不是985、211的同学们)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 每年的6、7月份都是一年一度的毕业季。按照某些新闻机构的统计数字来说,现在每一年毕业的人数达到了600万之多。然而随着社会经济的放缓、贫富差距的拉开,找工作变得越来越困难。公务员考试不好考、事业单位进不去、国有企业和外资企业门槛高、中小企业不规范,对于那些不是9
2013-05-22 10:03:53 994
转载 vim 配置文件 ,高亮+自动缩进+行号+折叠+优化
将一下代码copy到 用户目录下 新建文件为 .vimrc保存即可生效; 如果想所有用户生效 请修改 /etc/vimrc (建议先cp一份)"=========================================================================" DesCRiption: 适合自己使用的vimrc文件,for Linux/Windows,
2013-05-22 09:27:35 963
转载 手把手教你把Vim改装成一个IDE编程环境
手把手教你把Vim改装成一个IDE编程环境(图文)By:吴垠Date:2007-09-07Version:0.5Email:lazy.fox.wu#gmail.comHomepage:http://blog.csdn.net/wooinCopyright:该文章版权由吴垠和他可爱的老婆小包子所有
2013-05-22 09:21:10 807
转载 两篇很牛的vim使用技巧
读本文之前请注意:1. 本文的目标是提供一些vim的使用技巧,利用这些技巧可以提高vim的操作效率。部分技巧在vi上也可以使用,但是现在基本上都是用vim了。2. 本文是整理和总结使用技巧,而非讲解vim入门,因此不会涉及最基本的使用,例如如何上移或下移光标,对此类操作请参阅任何一本vim或者vi教程。3. 本文阅读对象是了解了vim的基本操作,而希望高效地利用vim进行工
2013-05-21 15:05:29 738
转载 C语言下的ip与long之间的互换(long2ip,ip2long)
#include //--------------------------------------------------------------------- unsigned long ip2long(const char* ip){ unsigned char a, b, c, d; sscanf(ip, "%hhu.%hhu.%hhu.%hhu", &a, &
2013-05-21 13:36:56 2625
uthash hash string
2013-09-04
cJSON解析json数据
2013-09-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人