自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ZoMoe's eye

pthread_cond_timedwait(&♀ ,&heart_mutex,&life_time_wait);

  • 博客(43)
  • 资源 (2)
  • 收藏
  • 关注

原创 关于strace的一点东西

好久没写博客了,感觉有点惭愧,觉得自己也应该静下心来利用自己可分配的时间去提升自己.       虽然最近在看一些Python的东西,可是觉得自己还是不能忘记本行啊,Linux C的一些东西必须一直好好温习.       不废话,今天打算写一个简单的东西, strace , 应该都对它或多或少的知道一些.很多时候除了core dump, backtrace的方式去排查程序的问题外, str

2014-07-19 11:40:59 1988 2

原创 perfbook读书笔记 chapter 3~4

[读写锁]读写锁是专门为大多数读的情况设计的。在这种情况中,读写锁可以提供比互斥锁大得多的扩展性,因为互斥锁从定义上已经限制了任意时刻只能有一个线程持有锁,而读写锁允许任意多数目的读者线程同时持有读锁。很多情况下读写锁仍然十分有用,比如当读者必须进行高延迟的文件或者网络 I/O 时.读写锁的可扩展性显然说不上理想,临界区较小时尤其如此。为什么读锁的获取这么慢呢,

2014-05-29 23:25:20 1701

原创 TLV-简单的数据传输协议

有段时间没有写博客了,这段期间要说也够忙的(其实也没忙到哪去),从3月底到5月初这段期间一直在找暑期实习,幸运的是自己算是找到了自己希望的,从开始纠结TX,到后来确定,以及又拿到阿里的实习机会,这段过程真是够虐心的。不过自己还是选择了深圳,也许一开始自己想的就是这样,也许是阿里巴巴的通知有点晚,也许是自己觉得毁约去杭州有点不好,不管怎样,感谢阿里巴巴给的机会,也特别感谢六一、淘宝褚霸两位阿里大牛没

2014-05-29 22:40:11 19547 3

原创 最近面试的一些事

最近这三天,很幸运地接到了来自国内某互联网公司的电面,虽然后面可能还需要在进行面试,可是今天想说说到目前为止3面的经历。  给我的感觉是他们很注重效率,三天、面试三次。一、  第一次电面是26号中午打过来,因为有些原因,就约了晚上七点面试,可能是那时候一面的面试官开会或是正在面试其他人。到晚上8点多电话打过来,当时正在食堂吃完饭,巧的是正准备拿饭的时候电话过来,我就赶紧接了电话,手上的

2014-03-28 17:40:36 1800 5

原创 perfbook读书笔记 chapter 2

如果一个给定的线程基本不交互,那么他就没有作用并且不大需要被执行。但是,由于交互会引起开销,不仔细的分割选择会导致严重的性能退化。而且,并行线程的数量常常必须被控制,因为每个线程都会占用一些资源,比如 CPU cache 空间。如果过多的线程同时执行,CPU cache 将会溢出,引起过高的 cache miss,从而降低性能。从另外一方面看,大量的线程可能会带来大量计算和 I/O 操作。

2014-03-23 13:09:40 1564

原创 Something about "extern inline " ?

今天再看一段代码的时候看到了extern inline定义,当时没感觉,回过神来后觉得好像哪里不对。自己写代码经常是static inline,突然看到这个在自己看来的新东西而对大牛来说只是司空见惯的小菜时,我该哭还是笑嘞!!(还是太水的原因。)我们还是先来说说static inline,我们都知道对于static声明,当我们同时编译多个文件时,所有未加static前缀的全局变量和函数

2014-03-23 00:13:04 1513

原创 Something funny

有段时间没有更新blog了,今天本想写一写负载均衡中关于consistent hashing的一些东西,不过目前只是了解原理。具体的代码实现还没有看过,所以觉得写了blog也可能只是像网上众多的page一般,只能简单介绍原理,说说飘来飘去的关于object的hash映射关系,加上virtual node的概念。没有具体实现,那便没有太多的效果,所以还是再过些时候,了解完全再写一个完整的blog

2014-03-21 23:45:40 1208

原创 科普一下Linux防火墙Netfilter/iptables

最近看了一些网络安全的东西,觉得网络的世界远远没有我们想象的那么简单。去年自己只是简单的看了一些关于iptables的简单使用规则,当然现在也只是对iptables有简单的了解而已,不能算上是熟悉,写这点东西的目的也只是简单的科普,很多东西只能简单的提下,因为这部分内容实在太多,无法一一列举。       iptables本身是Linux用来处理底层网络数据的一种方法,很多人都将iptab

2014-02-27 22:45:05 2088

转载 服务端处理常用的5种基础策略

一、一个线程服务多个客户端,使用非阻塞I/O和水平触发的就绪通知把网络句柄设置为非阻塞模型,然后使用select()或poll()来告知哪个句柄已有数据在等待处理。此模型是最传统的,在此模型下,由内核告知你某个文件描述符是否准备好,是否已经完成你的任务自从上次内核告知已准备好以来(“水平触发”这个名字来源计算机硬件设计,与其相对的是“边缘触发”,JonathonLemon在它的关于kqueue

2014-02-27 20:51:47 1767

原创 说说循环缓冲区(Ring Buffer)

关于循环缓冲区(Circular Buffer)的概念,其实来自于Linux内核(Maybe),是为解决某些特殊情况下的竞争问题提供了一种免锁的方法。这种特殊的情况就是当生产者和消费者都只有一个,而在其它情况下使用它也是必须要加锁的。对应在Linux内核中有对它的定义:struct kfifo { unsigned char *buffer; unsigne

2013-11-28 21:04:54 14420

原创 浅谈server端基本的设计模型及部分问题

用了大概一个半月的时间都在做OS相关的实验感觉操作系统的东西自己还是了解适可而止,当然OS中包含了太多的设计模式以及底层相关的东西都会对自己在server端处理起到指引的作用,但是目前自己还是还是感觉自己还是对server端的处理比较感兴趣,固不再废话,进入正题--server端基本的设计模式。  [注]:所有东西基于Linux环境,并且部分设计模型在Linux下有良好的表现,不一定在Wind

2013-11-15 20:16:43 2849 3

原创 【浅谈】x86内存管理的分段分页机制

最近一直在接着操作系统的课程,着手跟着os.dev上的大神的文档写一个小型的内核,然后前期的东西自己一直在看也没时间写Blog,最近做到了内存管理这里,看了Jamesmolloy的文档还有一些os.dev.org上的关于memorymanage的东西,总觉的还是写点东西吧,虽是赘述,但对自己而言定是有用的。我不想说太多关于早期8086分段的原因,只是简单说一下这种概念。我们知道x86架构下的分

2013-11-05 21:58:56 6739 5

原创 左旋字符串问题(有点料)

今天在翻July的结构算法之道的时候许到一个问题,就是左旋字符串,意思是给了一个字符串"abcdefghijk",如果需要左移三位则变为“defghijkabc”,这个字符串的操作本身很简单:           [我的做法]:我们可以设置两个指针,将字符串分为两段,“abc” ,和”defghijk“,首先对原字符串进行反转变为”kjihgfedcba“,然后我们知道需要左移的位数3,通过指

2013-10-16 19:21:44 1618 3

原创 POJ 1416 Shredding Company

DescriptionYou have just been put in charge of developing a new shredder for the Shredding Company Although a "normal" shredder would just shred sheets of paper into little pieces so that the cont

2013-10-14 19:13:39 1454

原创 POJ 3096 surprising_string (coding with STL <map> )

[Description]:The D-pairs of a string of letters are the ordered pairs of letters that are distance D from each other. A string is D-unique if all of its D-pairs are different. A string is surpr

2013-10-13 20:46:44 1364 2

原创 POJ 1321 chessboard-problem

[Description]:在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆放方案C。[Input]:输入含有多组测试数据。 每组数据的第一行是两个正整数,n k,用一个空格隔开,表示了将在一个n*n的矩阵内描述棋

2013-10-13 18:16:14 1338

原创 hadoop-0.23.9安装以及第一个mapreduce测试程序

hadoop是一个能够对大量数据进行分布式处理的软件框架。它实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有着高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上。而且它提供高传输率(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。

2013-10-10 18:09:25 4099 8

原创 用Linux C的互斥锁机制解决哲学家就餐问题(简单实现)

在1971年,著名的计算机科学家艾兹格·迪科斯彻提出了一个同步问题,即假设有五台计算机都试图访问五份共享的磁带驱动器。稍后,这个问题被托尼·霍尔重新表述为哲学家就餐问题。这个问题可以用来解释死锁和资源耗尽。   「哲学家就餐说明」:有五个哲学家共用一张圆桌,分别坐在周围的五张椅子上,在圆桌上有五个筷子,他们的生活方式是交替进行思考和就餐,通常,一个哲学家饥饿时就会试图去取用其左右最靠近自己的筷

2013-09-29 18:50:30 6349 3

原创 记windows下简单的监控软件开发流程

最近这三个星期,参加了学校组织的实训,做的全是Windows下的东西,实际编码时间就是一周左右。哎,略扯。虽然自己是搞Linux的,但是其实有时候了解一下windows也算是不错了。毕竟了解多了不算坏事。不费话了,下面我们避开前期扯淡的LOGO First界面 Second:【一】.软件功能实现对局域网内客户机的进程管理,以及硬件信息、操作版本和网络

2013-09-06 22:13:20 2898

原创 函数指针数组做命令解析

今天偶然看到欢神的FTP代码,做命令解析用的是函数指针数组来做,这样可以省下一大堆的strcmp函数,觉得非常高端,就想记录下来,同时组内大一同学也在做这些东西,我觉得可以借鉴一下这种处理命令的方式,看一段自己写的测试函数吧,看完后应该就懂我再说什么了:#include #include #include #include char cmd[5][15]={"ls","search",

2013-08-14 17:45:31 1291

原创 用条件变量和互斥锁去管理线程池

今天终于克服众多Bug 搞出了一个简单的线程池的应用,在初始化线程池之后,可以实现向其中投放任务,多个线程完成大于线程数目的任务量,当然每个任务只能一次被一个线程执行。当一个线程完成一个任务后回去检测当前的剩余任务,从而继续执行剩余任务。大体的内容实现就是这样,下面仔细说一下整个流程问题。  首先谈到线程池,顾名思义我们需要预先建立多个线程,但是怎么去管理这些线程才是重点。下面的结构可以作为线

2013-08-08 22:56:14 2593 6

原创 浅谈Linux网络编程的基本内容

今天只是想浅谈一下对于Linux网络编程中一些基本问题的理解。我们知道互联网通信都是基于TCP/IP协议簇的,里面从一开始设计就保证了基本的通信安全和效率问题。 顾名思义的解释:IP(Internet协议)和TCP(传输控制协议),合起来叫TCP/IP。    IP协议为接入网络中的每台计算机分配了一个独一无二的地址,并负责在传输过程中寻找到目的计算机。TCP协议则负责保证传输的可靠性:一旦传

2013-07-28 21:33:09 2570 6

原创 浅谈POSIX线程的私有数据

当线程中的一个函数需要创建私有数据时,该私有数据在对函数的调用之间保持一致,数据能静态地分配在存储器中,当我们采用命名范围也许可以实现它使用在函数或是文件(静态),或是全局(EXTERN)。但是当涉及到线程时就不是那么简单了。在单线程程序中,我们经常要用到"全局变量"以实现多个函数间共享数据。在多线程环境下,由于数据空间是共享的,因此全局变量也为所有线程所共有。但有时应用程序设计中有必要提供线程私

2013-07-23 12:29:21 1631

转载 Linux 线程实现机制分析

本文转自:http://www.ibm.com/developerworks/cn/linux/kernel/l-thread/一.基础知识:线程和进程按照教科书上的定义,进程是资源管理的最小单位,线程是程序执行的最小单位。在操作系统设计上,从进程演化出线程,最主要的目的就是更好的支持SMP以及减小(进程/线程)上下文切换开销。无论按照怎样的分法,一个进程至少需要一个线程作为它的指

2013-07-17 13:28:58 1482

原创 从电脑开机加电到main函数的执行【一】

最近开始接触操作系统,在用了Linux操作系统这么久,一直不明白他是怎么做到在电脑上运行的?首先我便开始了解了这一问题,即从电脑开机加电到main函数的执行干了什么?通过自己这几日没事看看书终于了这个过程分了三步,其目的是实现从启动盘加载操作系统程序,完成执行main函数所需要的准备工作。【第1步】:启动BIOS,准备实模式下的中断向量表和中断服务程序;【第2步】:从启动盘加载操作系统

2013-07-15 16:17:47 2131

原创 C++五种类型的迭代器

迭代器定义了常用的操作集,但有些迭代器具有比其他迭代器更强大的功能。例如ostream_iterator只支持自曾、解引用和复制运算,而vector容器提供的迭代器除了这些运算,还支持自减、关系和算数运算。因此,迭代器可根据所提供的操作集进行分类。类似地,还可根据算法要求它的迭代器提供什么类型的操作,对算法分类。有一些算法,例如 find,只要求迭代器提供读取所指向内容和自增的功能。另一些算法,,

2013-05-27 17:29:26 7587 2

原创 C++ 下基于迭代器适配器和范型算法的排序

`「First」这里准备展示的是一个C++中利用库实现的范型排序,以标准库实例化迭代器适配器,包含流迭代器(输入、输出迭代器的形式)。    `「Second」基本思想:将数据流定向(用STL:中的copy()实现定向输入流到指定的容器)到标准输入流中,用STL标准库中的sort()进行范型排序,最后将容器中的数据流再copy()至标准输出流中。    `「Third」代码(以下针对i

2013-05-27 17:00:19 1457

原创 简单实现的几个C语言<string>库函数

「」 库函数算是C语言中较为常用的库了,这里简单实现了几个库函数。实现肯定会存在部分漏洞。 0.「预编译」若要将以下函数实现封装为一个库,便需要将一下每一个函数实现写为一个 .h 文件,并加上这个预编译.h文件#ifndef _M_STRING#define _M_STRING#ifndef _YVALS#include#endif#ifndef NUL

2013-05-25 16:09:40 1471

原创 VC环境下简单的贪吃蛇

下午真无聊的不知道干什么了,翻翻自己以前写的代码,偶然看到大一时写的这个简单的贪吃蛇,自己玩了几把后还是决定发到博客吧。(实在无聊,打发时间)    注:完全基于VC++6.0环境,不支持Linux 下terminal中运行。并且代码风格基本没有,写的十分扯,一大堆代码都在main()函数中,其中用了switch来搞了两关,一个是撞墙over,另一个当然可以穿墙了。代码复用就别提了,两关由于十

2013-05-25 15:29:06 1540

原创 几个基本排序算法总结( C语言实现 )

最近由于长时间没写过基本的排序算法,结果导致只知道大概思想便不知怎么去编写这些算法的代码了,所以借着一下午的时间把基本的几个排序算法的代码写了一边,算是对它的复习吧!  一  .「冒泡排序」:  冒泡排序(Bubble Sort)是一种简单的排序算法,它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数

2013-05-08 20:15:10 2149

原创 linux下 简单学习epoll处理海量链接

最近在 看一些关于linux C 服务器编程方面的东西,随及就涉及到了大量连接的处理的问题。我 们知道在linux下我们一般用tcp/ip协议去写简单的C/S模型的代码,经常会用到select()函数。它是用来确定一个或多个套接口状态的函数。对每一个套接口,调用者可查询它的可读性、可写性及错误状态信息。用fd_set结构(可以google)来表示一组等待检查的套接口,可以用来实现多路复用的I/O模

2013-04-27 20:53:57 2325 1

原创 尝试探索基于Linux C的网卡抓包过程

其实想探究网卡抓包问题已经有好久了。前几天找了时间算是基本上了解了那部分的一些基本东西,在这里只是赘述罢了。抓包首先便要知道经过网卡的数据其实都是通过底层的链路层(MAC),在Linux系统中我们获取网卡的数据流量其实是直接从链路层收发数据帧。至于如何进行TCP/UDP连接本文就不再赘述(之前的一段关于web server的程序已经大概说明),直接从最关键的原始套接字( raw socket)

2013-04-11 13:32:04 5015

原创 关于C++处理1+2+......+n的新思路

对于前n项累加求和的问题,如果要求我们不能使用for . while .switch .goto.if .else.case (A>B?a:b)等一切循环语句和判断语句#include class Temp{public: Temp() { ++N; Sum += N; } static voi

2013-04-09 12:49:01 1685

转载 JAVA中用JDBC连接mysql

本文转自http://blog.chinaunix.net/uid-26359455-id-3153931.html正其好奇java怎么连接JDBC,就看到如下方法。第一步:先下载:mysql和JDBC的驱动:下载地址:http://mysql.ntu.edu.tw/Downloads/Connector-J/mysql-connector-java-5.0.8.z

2013-04-07 23:57:32 1001

原创 关于计算字节位为1的一个问题

<!--p {margin-bottom:0.21cm; direction:ltr; color:rgb(0,0,0); text-align:justify}p.western {font-family:"Times New Roman",serif; font-size:10pt}p.cjk {font-family:"宋体","方正书宋_GBK";

2013-04-07 21:33:46 2000

原创 希尔(shell)排序简单分析

首先先说shell排序的基本思想:先取一个小于n的整数d1作为第一个增量,把文件的全部记录分成d1个组。所有距离为dl的倍数的记录放在同一个组中。先在各组内进行直接插入排序;然后,取第二个增量d2Shell排序的执行时间依赖于增量序列。好的增量序列的共同特征:① 最后一个增量必须为1;② 应该尽量避免序列中的值(尤其是相邻的值)互为倍数的情况。从时间性能上来

2013-04-06 18:41:08 1284

转载 PHP底层的运行机制与原理

PHP说简单,但是要精通也不是一件简单的事。我们除了会使用之外,还得知道它底层的工作原理。PHP是一种适用于web开发的动态语言。具体点说,就是一个用C语言实现包含大量组件的软件框架。更狭义点看,可以把它认为是一个强大的UI框架。了解PHP底层实现的目的是什么?动态语言要像用好首先得了解它,内存管理、框架模型值得我们借鉴,通过扩展开发实现更多更强大的功能,优化我们程序的性能。1. PH

2013-03-25 18:12:00 1138

原创 ubuntu12.10 配置LAMP架构(linux+apache+mysql+php)

最近自己开始学习php自然需要熟悉一个简单网站的搭建,首先便选择了主流小型网站的架构搭建设计,即LAMP写这篇blog的目的其实只是为了学习记录。如有什么错误,欢迎指正。如今Linux+Apache+Mysql+PHP的组合已经非常非常流行。可以说Linux最初的流行和Apache服务器的巨大市场占有率息息相关。LAMP又都是开源产品,在使用这一套产品的时候,除了具有不可比拟的价格优势,还

2013-03-15 18:11:45 1918

原创 关于java中super与this的简单理解

最近在学习java,遇到了关于super的一些问题,刚开始看到super是没有一点概念,自己找了资料便研究了一下:在Java中,有时会遇到子类中的成员变量或方法与父类中的成员变量或方法同名。因为子类中的成员变量或方法名优先级高,所以子类中的同名成员变量或方法就隐藏了父类的成员变量或方法,但是我们如果想要使用超类中的这个成员变量或方法,就需要用到super.    如果你想用super继

2013-03-11 18:38:32 1425

原创 linux下 简单学习epoll处理海量链接

最近在 看一些关于linux C 服务器编程方面的东西,随及就涉及到了大量连接的处理的问题。我 们知道在linux下我们一般用tcp/ip协议去写简单的C/S模型的代码,经常会用到select()函数。它是用来确定一个或多个套接口状态的函数。对每一个套接口,调用者可查询它的可读性、可写性及错误状态信息。用fd_set结构(可以google)来表示一组等待检查的套接口,可以用来实现多路复用的I/O模

2012-12-04 22:55:34 872

linux 系统分析工具

linux 系统分析工具, 《 Linux Performance Analysis and Tools》

2013-03-11

空空如也

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

TA关注的人

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