自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

simon、夏不弃疗

凡心所向,素履所往。 stay hungry ,stay foolish

  • 博客(34)
  • 资源 (12)
  • 收藏
  • 关注

原创 博客搬家

为了更大的自由(bi)度(ge),再次捣鼓独立博客本博客暂停更新。新的博客通过以下三个域名均可访问:simonxia.netwww.simonxia.netblog.simonxia.net欢迎各位围观,期待和大家学习交流

2014-12-11 09:08:55 814

原创 正则、grep、sed、awk

每次用到正则都要蛋疼一下,索性总结一下在这里。正则表达式主要分为基础正则和扩展正则基础部分:[abc] 匹配括号中的一个[^abc] 匹配非括号中的一个(取反)^word 以word开头word$ 以word结尾[n1-n2] 从n1到n2之间的所有连续字符.注意:这个连续与否,与ASCII编码有关,不同的语系编码方式不同:

2014-09-30 21:54:01 1488

原创 单例模式初探

大致思路是,将该类的构造函数定义为私有方法,代码其他地方不能实例化该对象,只能通过调用该类的一个静态成员函数(get_instance())来获取这个唯一实例。更进一步,把该类的复制构造函数和重载的=赋值运算也声明为私有,即Singleton(const Singleton);和 Singleton & operate = (const Singleton&);函数,需要声明成私有的,并且只声明不

2014-09-30 21:30:54 1112

原创 C99中的restrict和C89的volatile关键字

1、restrict它只可以用于限定指针,并表明指针是访问一个数据对象的唯一且初始的方式

2014-09-30 17:29:02 1778

原创 网络测量和拓扑发现

拓扑发现的方法主要包括两大类:1、基于中间路由器协作的使用类traceroute工具进行目标网络拓扑识别。2、不要求中间路由器协作(但要求网络端节点进行网络端到端路径级测量协作),基于层析成像技术的统计学方法。本文主要讨论前者。前者测量方法直接简便且生成的拓扑精度高,后者还主要在理论研究层面上。互联网的拓扑目前主流的方式是从三个层级去

2014-07-31 21:32:26 4844

原创 前中后缀表达式以及表达式树

中缀表达式就是我们平时喜闻乐见的

2014-07-31 20:59:52 4846

原创 linux文件系统,dup2等

UNP的图已经说得很清楚了,直接上图:每个目录项指向一个i节点,每个节点有一个链接计数(硬连接),减为0时文件被删除

2014-07-31 20:09:20 1008

原创 教你分分钟画出越南全境的主干路由拓扑

标题党了一次,用一个高大上的的题目先吸引各位看官点进来。其实原理很简单,我们要做的工作只是做一些数据处理并最终生成kml脚本呈现在Google Earth上。进入正题:首先数据来源http://www.caida.org .这是一个英特网数据分析的合作组织,数据比较权威,全球很多网络方面的科研数据都来源于此。而对本文有用的信息在这里:http://www.caida.org/dat

2014-06-17 23:19:49 5089 6

原创 一个简单的带缓存http代理

目前1.0版模型很简单,即

2014-06-15 20:09:00 1830 2

原创 linux网络编程学习笔记之六 -----I/O多路复用服务端

多进程和多线程的目的是在于最大限度地利用CPU资源,当mou

2014-06-13 22:55:04 1755

原创 linux网络编程学习笔记之五 -----并发机制与线程池

进程线程分配方式简述下常见的进程和线程分配方式:(好吧,我只是举几个例子作为笔记。。。并发的水太深了,不敢妄谈。。。)1、进程线程预分配简言之,当I/O开销大于计算开销且并发量较大时,为了节省每次都要创建和销毁进程和线程的开销。可以在请求到达前预先进行分配。2、进程线程延迟分配预分配节省了处理时的负担,但操作系统管理这些进程线程也会带来一定的开销。由此,有个折中的方法是,当某个

2014-06-11 20:18:08 1463

原创 linux网络编程学习笔记之四 -----多线程并发服务端

相对于使用进程实现并发,用线程的实现更加轻量。每个线程都是独立的逻辑流。线程是CPU上独立调度运行的最小单位,而进程是资源分配的单位。当然这是在微内核的操作系统上说的,简言之这种操作系统的内核是只提供最基本的OS服务,更多参看点击打开链接每个线程有它自己的线程上下文,包括一个唯一的线程ID(linux上实现为unsigned long),栈,栈指针,程序计数器、通用目的寄存器和条件码,

2014-06-11 20:01:10 1545

原创 linux网络编程学习笔记之三 -----多进程并发服务端

首先是fork()函数,比较清晰的解释可以参考http://blog.csdn.net/lingdxuyan/article/details/4993883和http://www.oschina.net/question/195301_62902

2014-06-11 19:55:16 1976

原创 linux网络编程学习笔记之二 -----错误异常处理和各种碎碎(更新中)

在unix系统中对大部分系统调用非正常返回时,通常返回值为-1,并设置全局变量errno,如socket(), bind(), accept(), listen()。erron存放一个正整数来保存上次出错的错误值。对线程而言,每个线程都有专用的errno变量,不必考虑同步问题。慢系统调用指可能永远阻塞而无法返回的系统调用,通常是一些读写的例子,如pipe,终端设备,网络连接,典

2014-06-11 19:51:19 2260

原创 深入理解C语言----动态库 & 静态库 & 链接

库是代码共享的主要方式,动态库和静态库的主要区别在于他们链接形式的不同(静态和动态链接),它们都是目标文件的集合,再加上一些索引表项来表征各文件的信息。通常,linux里目标文件是ELF格式,而win则为PE静态库和静态链接linux下静态库是以.a为后缀,而win下静态库是以lib为后缀。静态链接是由链接器将一个或多个目标文件及静态库中所被引用的目标文件完全链接到一个可执行文件中,由

2014-04-21 21:24:36 5339 1

原创 用静态KML脚本在GoogleEarth上实现动态效果

项目遇到这样蛋疼的问题。

2014-04-18 22:04:29 8522

原创 2013华为第五届编程大赛 成都初赛题目和解答

昨天看到今年的报名,把隔壁zy同学的题目拿过来做了一下,http://blog.csdn.net/zy416548283/article/details/23712151前两个解法差不多,第三个用dfs,bfs方法可参考zy同学1、路灯统计:    题目描述某省会城市街道纵横交错,为了监控路灯的运行状况,每条街道使用一个数字字符串标识该街道上所有路灯的运行状况。假设路灯

2014-04-17 15:00:35 2415

原创 深入理解C语言----标准I/O小结(缓冲区,I/O函数及其他相关问题)

与文件I/O围绕文件描述符操作不同,标准I/O的操作是围绕

2014-04-11 22:44:34 5806 2

原创 Linux内核链表的浅析和模拟

linux内核的链表设计非常独特。和通常的把数据结构装入链表不同,linux反其道而行之,把链表节点装入数据结构。这样的做法很好地实现了对数据的封装。并且为所有的链表操作提供了统一的接口。简单而高效。关于链表所有操作的函数都在/linux/list.h文件里PS:由于list.h文件没有署名的注释,民间猜测内核的链表机制很有可能就是Linux Torvalds本人的作品内核中的链表通常是一

2014-04-08 14:10:37 1738 1

原创 linux网络编程学习笔记之一 -----各种基础知识小结

以前小有接触,正好这学期选了一门类似的课,重新整理下。首先是几个常用的网络基本配置文件:/etc/hosts 主机名解析/etc/services 不同服务所使用的端口定义/etc/netmasks 网络掩码然后是地址结构netinet/in.h每个协议族都定义自己的套接口地址结构,这些结构名字以sockaddr_开头,并以每个协议族对应的唯一后缀结束。地址

2014-03-26 21:30:43 2024 2

原创 深入理解C语言-----副作用(Side Effect)和顺序点(Sequence Point)

先看几个概念:1。引用透明:如果一个表达式(或子表达式)只计算出值而不改变环境,我们就说它是引用透明的,这种表达式早算晚算对其他计算没有影响(不改变计算的环境。当然, 它的值可能受到其他计算的影响)。比如:(a+b)*(c+d),无论先计算乘号两边都可以2.  副作用:如果一个表达式不仅算出一个值,还修改了环境,就说这个表达式有副作用(因为它多做了额外的事)。比如:a++ 那么

2014-03-11 16:27:39 6152

原创 深入理解C语言-----各数据类型大小

首先看下C标准中“未明确定义”的三种类型Implementation-defined、Unspecified和Undefined。(以下内容部分摘自宋劲彬老师的文章)Implementation-defined 的情况,是C 标准没有明确规定,但是要求编译器必须对此做出明确规定,并写在编译器的文档中。Unspecified的情况,往往有几种可选的处理方式,C 标准没有明

2014-02-24 11:31:15 9325

原创 用回溯法求解N皇后和迷宫问题

关于回溯法不再赘述太多,大家移步各种百科,本文介绍两种应用的实现其典型应用之一: N皇后问题按皇后摆放规则顺序遍历棋盘依次安放皇后,直到某一个皇后找不到合适的位置时,倒退至上一步,调整上一个皇后位置,如还不满足,继续调整再上一个,依次类推。上述过程很容易想到用栈实现,其一组特解的代码如下void search_solution(){ struct position tm

2014-02-15 21:39:45 2036

原创 排序小结之插入排序及其升级版

1、直接插入排序比较次数最好n-1,最坏n(n-1)/2,平均时间复杂度为O(n^2),稳定的排序方法void insert_sort(int a[], int len) { int i, j, temp; for(i = 1; i < len; i++) { temp = a[i]; for( j = i

2014-01-17 13:51:33 2220

原创 矩阵连乘的动态规划求解

矩阵连乘的动态规划求解

2013-12-27 17:21:01 2026

原创 排序小结之冒泡排序及其改进版

1、概述和基本实现由于是相邻元素比较交换,所以冒泡排序是一种稳定排序算法在最优的情况下,时间时间复杂度O(n);平均和最坏情况均是O(n^2)基本实现:void bubble_sort(int a[], int len){ int i, j, tmp; for (i = 0; i < len; i++) for (j = 0; j < len - i; j++)

2013-12-23 21:52:14 1449 2

原创 二叉树的基本操作(创建、递归和非递归遍历、求深度、求叶子数)

1、创建递归地调用即可顺便注意一下,C中指针作为函数的参数和返回值在上面的函数中传递的是一个指向指针的指针,以使函数中使用malloc来动态地分配空间。如果直接使用指针则不行,因为编译器要为每个函数参数制作临时副本,对于指针也不例外,它的副本即是实参所指向对象的内存地址,如果函数中修改了形参指向的内容,实参所指向的内容也作了相应的修改,这就是为什么指针可以用作输出参数的原因

2013-10-31 22:39:07 2196

原创 打造win下vim+gcc+gdb的环境

本着提高程序员的可移植性,把linux下的那一套搬到win里,用了一段时间,嘿,挺称手的,特别是各种大大小小的IDE都有各种不尽人意的地方。这个套件,轻量,方便,也能让那些经常在win和linux来回切换的朋友平滑过渡。正好昨天重装了系统,需要重新配置。整个流程整理如下,聊做参考:首先是vim,编辑器之神,就不废话了,她的图形化版本gvim,下载地址:点击打开链接安装完成后,需

2013-10-16 23:13:42 1609

翻译 探寻Chrome的内部玄机---Chrome:// Pages

原文链接:Find Hidden Features On Chrome’s Internal谷歌浏览器Chrome内置的 chrome:// pages 包含了实验性功能、诊断工具和详细的统计数据。她藏在用户界面下,因此只有你的主动寻找才能感知她的存在。这些隐藏页面是谷歌版的火狐about page我们可以通过输入chrome:// 紧跟页面名字访问其中的每一个,当然也可以使用

2013-10-15 20:55:39 2404

原创 基于OpenGL的C版贪食蛇(简陋版)

终于找到一个合适的图形库,比之前一个DOS窗口的稍微好了点,DOS窗口版刷屏不给力,就算是一个sleep()下去是毫秒级的精度,等屏上信息刷出来,黄花菜都凉了。介绍下GLUT,OpenGL Utility Toolkit,即OpenGL应用工具包,是一套可用于所有主流平台的支持函数库。提供了解决如窗口、菜单和设备输入等基本问题的方法,同时还保持了对操作系统平台的独立性。下载:点

2013-10-12 16:40:22 2919

原创 深入理解C语言----函数调用过程浅析

读了韩宏老师的《老码识途》第一章,忍不住自己动手试一下,利用反汇编来查看函数调用过程#includetypedef struct{ int i1; int i2; int i3}myrd;myrd myfunc(int a, int b, int c){ myrd r1; r1.i1 = a; r1.i2 = b; r1.i3 = c; return r1;

2013-09-22 23:00:08 2596 2

翻译 测试Linux服务器SCSI/SATA硬盘是否正常

原文链接:http://www.cyberciti.biz/tips/linux-find-out-if-harddisk-failing.html    我们读者中的一个常客提到一个问题:    怎么测试我的硬盘是否出故障?我在 /var/log/messages 文件中只能看到很少的错误    /var/log/messages 文件中的 I/O 错误表明硬盘出了一些故障甚至可

2013-09-13 20:22:08 6346

原创 Keep It Simple and Stupid

看到刘汝佳提到的一个KISS(Keep It Simple and Stupid)原则很受启发,程序的目的是为了解决问题,应该用尽量简洁的方式,不是为了写程序而写程序,不是展示技巧比如:交换两个数的顺序输出。可以用中间变量,也可以直接用相加的和来分别减a = a + b;b = a - b;a = a - b;最直接的莫过于scanf("%d%d",&a,&b);printf

2013-07-24 10:16:44 3624

原创 带宽测试初探(UDP发包方式)

在做毕设的时候遇到一个对实际带宽估计的问题,想到一个简单方式对网络情况不复杂的带宽测试方法,可行性还需进一步确认。http://bbs.csdn.net/topics/390523727无人答复,默泪大致原理是:在链路上没有其他数据流量的情况下,用高于带宽的吞吐量发送UDP包,然后在收端统计收包或丢包数量,对实际带宽进行估计。程序很简单,定义一个包含序列号的UDP包,链路两

2013-07-22 15:27:46 6054 2

插入和希尔排序及测试用例

http://blog.csdn.net/simon_xia_uestc/article/details/17616379

2014-01-17

C程序设计语言(第2版·新版)

《C程序设计语言》是由C语言的设计者Dennis M. Ritchie和著名计算机科学家Brian W. Kernighan编写的一部介绍标准C语言及其程序设计方法的权威性经典著作。全面、系统地讲述了C语言的各个特性及程序设计的基本方法,包括基本概念、类型和表达式、控制流、函数与程序结构、指针与数组、结构、输入与输出、UNIX系统接口、标准库等内容。 《C程序设计语言》的讲述深入浅出,配合典型例证,通俗易懂,实用性强,适合作为大专院校计算机专业或非计算机专业的C语言教材,也可以作为从事计算机相关软硬件开发的技术人员的参考书。 在计算机发展的历史上,没有哪一种程序设计语言像C语言这样应用如此广泛。

2013-10-23

STL源码解析

本书所呈现的源码,使你踏上了基度山岛。源码之前了无秘密,你将看到vector的实现、list的实现、heap的实现、deque的实现、Red Black tree的实现、hash table的实现、set/map的实现;你将看到各种算法(排序、查找、排列组合、数据移动与复制技术)的实现;你甚至能够看到底层的memory pook和高阶抽象的traits机制的实现。

2013-10-17

glutdll工具包

GLUT代表OpenGL应用工具包,英文全称为OpenGL Utility Toolkit,是一个和窗口系统无关的软件包,它由Mark Kilgard在SGI时写的。作为AUX库的功能更强大的替代品,用于隐藏不同窗口系统API的复杂性。 GLUT是专为构建中小型OpenGL程序。虽然GLUT是适合学习OpenGL和开发简单的OpenGL应用程序。GLUT并不是一个功能全面的工具包所以大型应用程序需要复杂的用户界面最好使用本机窗口系统工具包。所以GLUT是简单的、容易的、小的。 GLUT中有C,C + +(C一样),FORTRAN和Ada编程绑定。GLUT的源代码分布是移植到几乎所有的OpenGL实现和平台。目前最新版本为3.7 。[1]

2013-10-12

gvim for windows

Vim是Linux上的著名的文本编辑器,他是早年的Vi编辑器的加强版。这个gVim是windows版的,并且有了标准的windows风格的图形界面,所以叫g(graphical)Vim。这是一个国际版本,会根据安装的平台自动选择相应语言包,支持中文及其各种编码,连界面也是中文的,请放心使用。这个极具Unix特色和风格(simple is the best)的编辑器相信会给您带来不同的感受。

2013-10-11

gcc中文手册

GCC(GNU Compiler Collection,GNU编译器集合)是一套由GNU工程开发的支持多种编程语言的编译器。GCC是自由软件发展过程中的著名例子,由自由软件基金会以GPL协议发布。GCC是大多数类Unix操作系统(如Linux、BSD、Mac OS X等)的标准的编译器,GCC同样适用于微软的Windows。GCC支持多种计算机体系芯片,如x86、ARM,并已移植到其他多种硬件平台。GCC原名为GNU C编译器(GNU C Compiler),因为它原本只能处理C语言。GCC很快地扩展,并支持处理C++。后来又扩展能够支持更多编程语言,如Fortran、Pascal、Objective-C、Java、Ada、Go等。

2013-10-01

空空如也

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

TA关注的人

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