2018年3月9日
摘要: 文章目录: 1. Demo 效果展示: 2. 进程和端口乱扯淡: 3. 查询进程和端口的 API 的介绍: 4. 根据进程 ID 获得该进程所打开的 TCP 和 UDP 端口: 5. 根据端口号来获得打开该端口号的进程: 6. 小结: 1. Demo 效果展示: 下面的这个 Demo 我只是用最简单 阅读全文
posted @ 2018-03-09 12:36 xmj 阅读(653) 评论(0) 推荐(0)
摘要: 一、HTTP协议简介 什么是HTTP?全称是HyperText Transfer Protocal,即:超文本传输协议,从1990年开始就在WWW上广泛应用,是现今在WWW上应用最多的协议,目前版本是1.1。 Http是应用层协议,当你上网浏览网页的时候,浏览器和Web服务器之间就会通过HTTP在I 阅读全文
posted @ 2018-03-09 12:35 xmj 阅读(271) 评论(0) 推荐(0)
摘要: 要理解static,就必须要先理解另一个与之相对的关键字,很多人可能都还不知道有这个关键字,那就是auto,其实我们通常声明的不用static修饰的变量,都是auto的,因为它是默认的,就象short和long总是默认为int一样;我们通常声明一个变量: int a; string s; 其实就是: 阅读全文
posted @ 2018-03-09 12:34 xmj 阅读(240) 评论(0) 推荐(0)
摘要: 写这篇博客源于在阅读lighttpd源代码是遇到的一个关于assert应用的疑问。 在阅读lighttpd源代码时,发现比比皆是的对malloc的调用结果进行assert检查,比如:Buffer.c: 这里的assert(b)似乎有问题,实际release版本在运行中难道不会发生malloc返回NU 阅读全文
posted @ 2018-03-09 12:33 xmj 阅读(227) 评论(0) 推荐(0)
摘要: 我们曾经在讨论C++的时候,经常会问到:“虚函数能被声明为内联吗?”现在,我们几乎听不到这个问题了。现在听到的是:“你不应该使print成为内联的。声明一个虚函数为内联是错误的!” 这种说法的两个主要的原因是(1)虚函数是在运行期决议而内联是一个编译期动作,所以,我们将虚函数声明为内联并得不到什么效 阅读全文
posted @ 2018-03-09 12:32 xmj 阅读(322) 评论(0) 推荐(0)
摘要: (一)基本概念 结构体是一个或是多个变量的集合,这些变量可能为不同的类型,为了处理的方便而将这些变量组合在一个名字之下。我们将关键字struct引入了结构声明中。结构声明包含在花括号内的一系列声明组成。例如: // 以下是一个巨普通的结构体,表示坐标。 // point 为结构标记;x, y为成员。 阅读全文
posted @ 2018-03-09 12:32 xmj 阅读(1078) 评论(0) 推荐(0)
摘要: 一、简介: SQLite是目前最流行的开源嵌入式数据库,和很多其他嵌入式存储引擎相比(NoSQL),如BerkeleyDB、MemBASE等,SQLite可以很好的支持关系型数据库所具备的一些基本特征,如标准SQL语法、事务、数据表和索引等。事实上,尽管SQLite拥有诸多关系型数据库的基本特征,然 阅读全文
posted @ 2018-03-09 12:31 xmj 阅读(146) 评论(0) 推荐(0)
摘要: tcp/ip网络通讯安全是一个广受关注的话题,现在也有一些基于tcp/ip加密技术标准如SSL,TLS等。但很多时候编写一些简单的网络通讯把这标准加密应用添加进来乎一下子把程序变得复杂了,而实现自己的加密算法那就更加不可取;其实通过一些现有的加密的技术应用完全可以实现即简单又安全的网络通讯程序。首先 阅读全文
posted @ 2018-03-09 12:31 xmj 阅读(556) 评论(0) 推荐(0)
摘要: 设计概述 服务端通信组件的设计是一项非常严谨的工作,其中性能、伸缩性和稳定性是必须考虑的硬性质量指标,若要把组件设计为通用组件提供给多种已知或未知的上层应用使用,则设计的难度更会大大增加,通用性、可用性和灵活性必须考虑在内。 现以一个基于 IOCP 的通用异步 Windows Socket TCP 阅读全文
posted @ 2018-03-09 12:31 xmj 阅读(1623) 评论(0) 推荐(0)
摘要: 写在前面:出于项目的需要,最近打算对SQLite的内核进行一个完整的剖析,在此希望和对SQLite有兴趣的一起交流。我知道,这是一个漫长的过程,就像曾经去读Linux内核一样,这个过程也将是辛苦的,但我相信结果一定是美好的... ...接下来是第一章。 1、SQLite介绍 自几十年前出现的商业应用 阅读全文
posted @ 2018-03-09 12:30 xmj 阅读(215) 评论(0) 推荐(0)
摘要: Linux网络核心数据结构是套接字缓存(socket buffer),简称skb。它代表一个要发送或处理的报文,并贯穿于整个协议栈。1、 套接字缓存skb由两部分组成:(1) 报文数据:它保存了实际在网络中传输的数据;(2) 管理数据:供内核处理报文的额外数据,这些数据构成了协议之间交换的控制信息。 阅读全文
posted @ 2018-03-09 12:29 xmj 阅读(950) 评论(0) 推荐(0)
摘要: 3、套接字的实现套接字最先是在UNIX的BSD版本实现的,所以也叫做BSD套接字,它隐藏了各个协议之间的差异,并向上提供统一的接口。Linux中实现套接字的基本结构:3.1、BSD套接字3.1.1、核心数据结构为了实现BSD套接字,内核提供一个重要的数据结构struct socket,它的定义如下: 阅读全文
posted @ 2018-03-09 12:29 xmj 阅读(235) 评论(0) 推荐(0)
摘要: 1、TCP/IP参考模型为了实现各种网络的互连,国际标准化组织(ISO)制定了开放式系统互连(OSI)参考模型。尽管OSI的体系结构从理论上讲是比较完整的,但实际上,完全符合OSI各层协议的商用产品却很少进入市场。而使用TCP/IP 协议的产品却大量涌入市场,几乎所有的工作站都配有TCP/IP协议, 阅读全文
posted @ 2018-03-09 12:29 xmj 阅读(215) 评论(0) 推荐(0)
摘要: 网络设备(network device)是内核对网络适配器(硬件)的抽象与封装,并为各个协议实例提供统一的接口,它是硬件与内核的接口,它有两个特征:(1) 作为基于硬件的网络适配器与基于软件的协议之间的接口;(2) 内核协议栈异步输入输出点。记住:网络设备软件对硬件的抽象网络设备与协议和网络适配器的 阅读全文
posted @ 2018-03-09 12:28 xmj 阅读(518) 评论(0) 推荐(0)
摘要: 1、接收帧当网络适配器接收到数据帧时,就会触发一个中断,中断处理程序执行一些需要及时处理的任务,然后在下半部进行其它可以延迟的处理。中断处理程序主要进行以下一些操作:(1) 分配sk_buff数据结构,并将接收到的数据帧从网络适配器I/O端口拷贝到sk_buff缓冲区中;(2) 从数据帧中提取出一些 阅读全文
posted @ 2018-03-09 12:27 xmj 阅读(387) 评论(0) 推荐(0)
摘要: 2.1、网络设备的注册与注销注册网络设备发生在下列情形: (1)加载网卡驱动程序 网卡驱动程序如果被编译进内核,则它在启动时被初始化,在运行时被作为模块加载。无论初始化是否发生,所以由驱动程序控制的网卡都被注册。 (2)插入可热拔插网络设备 当用户插入一块热拔插网卡,内核通知其对应的驱动程序以注册设 阅读全文
posted @ 2018-03-09 12:27 xmj 阅读(393) 评论(0) 推荐(0)
摘要: 第一部分 编程模型 1、服务器编程模型 关于server编程模型,大师stevens在他的《UNP》一书中已经做了详细论述,这里不再重复,这里主要讲一下我的一些理解。 从线程的角度,可以分为两类,一是单线程,一是多线程。先来看单线程模型。 1.1、单线程模型 整个进程只有一个线程,由于只有一个线程, 阅读全文
posted @ 2018-03-09 12:26 xmj 阅读(154) 评论(0) 推荐(0)
摘要: 2、协议相关2.1、第3层协议的管理在Linux内核中,有两种不同目的的3层协议:(1) ptype_all管理的协议主要用于分析目的,它接收所有到达第3层协议的数据包。(2) ptype_base管理正常的3层协议,仅接收具有正确协议标志符的数据包,例如,Internet的0x0800。注意sb_ 阅读全文
posted @ 2018-03-09 12:26 xmj 阅读(750) 评论(0) 推荐(0)
摘要: 对于服务器程序,I/O是制约系统性能最关键的因素。对于需要处理大量连接的高并发服务器程序,异步I/O几乎是不二的选择。Linux和Windows都为异步I/O构建了大量的基础设施。本文总结了一下Linux和Windows下的异步I/O模型,并给出了一些使用这些模型的例子。 一般来说,服务器端的I/O 阅读全文
posted @ 2018-03-09 12:25 xmj 阅读(281) 评论(0) 推荐(0)
摘要: Free 我们经常用free查看服务器的内存使用情况,而free中的输出却有些让人困惑,如下: 图1-1 先看看各个数字的意义以及如何计算得到: free命令输出的第二行(Mem):这行分别显示了物理内存的总量(total)、已使用的 (used)、空闲的(free)、共享的(shared)、buf 阅读全文
posted @ 2018-03-09 12:25 xmj 阅读(178) 评论(0) 推荐(0)
摘要: 在最近的日常工作中由于经常会和Linux服务器打交道,如Oracle性能优化、我们数据采集服务器的资源利用率监控,以及Debug服务器代码并解决其效率和稳定性等问题。因此这段时间总结的有关Linux Shell的系列博客就给予了我极大的帮助,然而在实际的使用中却发现,有的时候确实忘记了某个技术点或某 阅读全文
posted @ 2018-03-09 12:24 xmj 阅读(133) 评论(0) 推荐(0)
摘要: curl-loader介绍 curl-loader(也被称为“omes-NIK”和“davilka”)是一个开源的C语言编写的工具,模拟应用负载和成千上万的几十万人的HTTP / HTTPS和FTP/ FTPS的客户端应用程序的行为,每个有其自己的源IP地址。相反,其他curl-loader使用真正 阅读全文
posted @ 2018-03-09 12:24 xmj 阅读(538) 评论(0) 推荐(0)
摘要: 近来文章被踩的厉害,我只想把自己从马哥学的知识自己总结下发到博客里,但是没想到昨天一篇文章刚发一上午被踩了9次。。。如果您真的觉得我的文章很烂,请告诉我原因,不胜感激。 这星期,马哥讲了关于Linux内核的编译和Linux的内核模块,浅显易懂,所以写出来和大家一起分享学习成果。首先说明,这只是简单的 阅读全文
posted @ 2018-03-09 12:23 xmj 阅读(676) 评论(0) 推荐(0)
摘要: CDN是互联网中使用较频繁的一种技术。你也许常听人说:“我们的网站使用了CDN技术”,但可能他们对CDN的了解并不多,也许只局限于--用了以后网站访问速度会变快。 其实,CDN的原理非常简单。当浏览器请求一资源时,第一步是做DNS解析,DNS解析就像是从通讯录根据姓名找号码,浏览器发送域名,然后得到 阅读全文
posted @ 2018-03-09 12:22 xmj 阅读(231) 评论(0) 推荐(0)
摘要: 2.1 U-Boot Makefile分析 2.1.1 U-Boot编译命令 对于mini2440开发板,编译U-Boot需要执行如下的命令: $ make mini2440_config $ make all 使用上面的命令编译U-Boot,编译生成的所有文件都保存在源代码目录中。为了保持源代码目 阅读全文
posted @ 2018-03-09 12:22 xmj 阅读(242) 评论(0) 推荐(0)
摘要: 最近在Linux环境下做C语言项目,由于是在一个原有项目基础之上进行二次开发,而且项目工程庞大复杂,出现了不少问题,其中遇到最多、花费时间最长的问题就是著名的“段错误”(Segmentation Fault)。借此机会系统学习了一下,这里对Linux环境下的段错误做个小结,方便以后同类问题的排查与解 阅读全文
posted @ 2018-03-09 12:21 xmj 阅读(605) 评论(0) 推荐(0)
摘要: 现在,图像类信息越来越多了,对图像的编程需求也越来越多。图像类项目的特点是性价比高,单行代码的价格一般是普通的程序的10倍,每行代码能够卖几块钱。很多人把目光放在这个上面。刚才又有网友咨询,做图像要看些什么书?结合我的自学经验,写一篇博客谈谈这个问题。 需要先明确几个问题: (1)你的基础如何?做图 阅读全文
posted @ 2018-03-09 12:20 xmj 阅读(305) 评论(0) 推荐(0)
摘要: 指令 功能 nand info 显示可使用的 Nand Flash nand device [dev] 显示或设定当前使用的 Nand Flash nand read addr off size Nand Flash 读取命令,从 Nand 的 off 偏移地 址处读取 size 字节的数据到 SD 阅读全文
posted @ 2018-03-09 12:19 xmj 阅读(1107) 评论(0) 推荐(0)
摘要: 问题: 如何增量同步文件,例如一个文本文件有10M,分别存放在A,B两个地方,现在两个文件是完全一样的,但是我马上要在A上对这个文件进行修改,B如何实现自动和A上的文件保持一致,并且网络的传输量最少。 应用场景: 这样的使用场景太多,这里随便列举几个 1.A机器为线上运营的机器,现在需要一台备份的机 阅读全文
posted @ 2018-03-09 12:19 xmj 阅读(5575) 评论(0) 推荐(0)
摘要: 前几天看了一下Memcached,看到Memcached的分布式算法时,知道了一种Consistent Hashing的哈希算法,上网搜了一下,大致了解了一下这个算法,做下记录。 数据均衡分布技术在分布式存储系统中非常重要,数据分布越均匀,系统的总体性能就越好。 简单的哈希算法:以K取余法,这种算法 阅读全文
posted @ 2018-03-09 12:18 xmj 阅读(138) 评论(0) 推荐(0)
摘要: Cyclic Redundancy Check循环冗余检验,是基于数据计算一组效验码,用于核对数据传输过程中是否被更改或传输错误。 算法原理 假设数据传输过程中需要发送15位的二进制信息g=101001110100001,这串二进制码可表示为代数多项式g(x) = x^14 + x^12 + x^9 阅读全文
posted @ 2018-03-09 12:17 xmj 阅读(671) 评论(0) 推荐(0)
摘要: 基于BusyBox-1.19.2 (以其它作者的作为参考) 1. 下载BusyBox的源码 http://busybox.net/ 2. 解压#tar xvzf busybox-1.19.2.tgz (命令参数搞忘了,查一下tgz文件解压命令) 3. 进入解压目录,对BusyBox进行配置 #mak 阅读全文
posted @ 2018-03-09 12:16 xmj 阅读(315) 评论(0) 推荐(0)
摘要: 在进入讲解linux内存管理的kernel阶段以前,了解一下uboot阶段是如何准备好内存物理设备的,这是非常有意义的。通常进入到linux内核阶段之后,对内存芯片的物理特性寄存器访问是比较少的,强调的是linux在管理上的用法,而大部分必要工作由uboot阶段进行处理,如打开内存功能,配置内存,初 阅读全文
posted @ 2018-03-09 12:15 xmj 阅读(1054) 评论(0) 推荐(1)
摘要: 讲解复杂繁琐的机制原理,最通俗的方法就是用模型架构的方式向读者呈现,先要在整体上了解大方向大架构,再根据大方向大架构来进行分支深入,犹如毛主席那句话“战略上蔑视敌人,战术上重视敌人”。下面我也以这种方式把各个大模型方式向大家画出,并作出简略解述。 一. 地址划分。 1. CPU地址。 CPU地址是指 阅读全文
posted @ 2018-03-09 12:14 xmj 阅读(308) 评论(0) 推荐(0)
摘要: 工作队列(work queue)是Linux kernel中将工作推后执行的一种机制。这种机制和BH或Tasklets不同之处在于工作队列是把推后的工作交由一个内核线程去执行,因此工作队列的优势就在于它允许重新调度甚至睡眠。 工作队列是2.6内核开始引入的机制,在2.6.20之后,工作队列的数据结构 阅读全文
posted @ 2018-03-09 12:13 xmj 阅读(249) 评论(0) 推荐(0)
摘要: Linux块设备的原理远比字符设备要复杂得多,尽管在linux这一块的方法论有很多相似之处,但考虑到它是用中块结构,它常常要搭配内存页管理,页缓冲块缓冲来改善硬盘访问的速度,按照块硬件最大的性能要求进行软件发挥。 我们现在从入门级别的角度来理解块设备在初建时候需要的数据结构和过程,在这里,我以图形的 阅读全文
posted @ 2018-03-09 12:13 xmj 阅读(335) 评论(0) 推荐(0)
摘要: 上一篇文章《Linux设备模型 (1)》主要介绍了Linux设备模型在用户空间的接口sysfs,用户通过这个接口可以一览内核设备的全貌。本文将从Linux内核的角度来看一看这个设备模型是如何构建的。 在Linux内核里,kobject是组成Linux设备模型的基础,一个kobject对应sysfs里 阅读全文
posted @ 2018-03-09 12:12 xmj 阅读(161) 评论(0) 推荐(0)
摘要: 随着计算机的周边外设越来越丰富,设备管理已经成为现代操作系统的一项重要任务,这对于Linux来说也是同样的情况。每次Linux内核新版本的发布,都会伴随着一批设备驱动进入内核。在Linux内核里,驱动程序的代码量占有了相当大的比重。下图是我在网络上搜索到的一幅Linux内核代码量的统计图,对应的内核 阅读全文
posted @ 2018-03-09 12:12 xmj 阅读(199) 评论(0) 推荐(0)
摘要: 《Linux设备模型 (2)》和《Linux设备模型 (3)》主要通过一些简单的实作介绍了kobject、kset、kobj_type、attribute等数据结构的用法,但这些实作并没有涉及到实际环境下的设备模型和sysfs。本文将以/sys下的module子目录为例,看看内核是如何构建sysfs 阅读全文
posted @ 2018-03-09 12:11 xmj 阅读(243) 评论(0) 推荐(0)
摘要: 在上文中,我们介绍到如何使用default attribute。Default attribute使用很方便,但不够灵活。比如上篇文章在Kobject一节中提到的那个例子,name和val这两个attribute使用同一个show/store函数来访问,如果attribute非常多,show/sto 阅读全文
posted @ 2018-03-09 12:11 xmj 阅读(243) 评论(0) 推荐(0)
摘要: 一、首先下载libpcap包http://www.tcpdump.org/#latest-release 然后安装,安装完成后进入安装根目录的tests文件夹,编译运行findalldevstest.c(编译时加上-lpcap),查看是否发现所有网络设备。 二、下载wireshark观察抓包软件的各 阅读全文
posted @ 2018-03-09 12:10 xmj 阅读(541) 评论(0) 推荐(0)
摘要: 前言。。。。。。 最近总是有人问研究音频编解码要看什么书 其实这是一个很难回答的问题,原因有很多。 首先,做工程首先一个问题就是和课本学习不同,不是看书能解决的。 其次,音频编解码技术在国内研究的人很少包括总体的音频技术国内相对国外都研究的不多。(从中国的潜艇噪声技术一直解决不好就能看出一二)。 第 阅读全文
posted @ 2018-03-09 12:10 xmj 阅读(198) 评论(0) 推荐(0)
摘要: 写在最前面的 就像上一篇文章说的,“编程永远是后话”!在有了可靠的问题分析过程和数据结构的选择,能正确运行的“二分搜索”代码出现之前,把其主要的思路先在草稿上实现,即伪代码。但由于伪代码执行结果的不确定性,需要有一个验证的过程。笔者非常不喜欢这个过程,因为这个过程很繁琐,而且推出的结论不一定是正确的 阅读全文
posted @ 2018-03-09 12:09 xmj 阅读(394) 评论(0) 推荐(0)
摘要: 写在最前面的 手贱翻开了《珠玑》的最后几章,所以这一篇更多是关于13、14、15章的内容。这篇文章的主要内容是“AVL树”,即平衡树,比红黑树低一个等次。捣乱真惹不起红黑树,情况很复杂;而AVL思路比较清晰。《编程珠玑,字字珠玑》910读书笔记——代码优化更新了,做了点关于“哨兵”的笔记。在这篇文章 阅读全文
posted @ 2018-03-09 12:09 xmj 阅读(218) 评论(0) 推荐(0)
摘要: 写在前面的 2012年3月25日买下《编程珠玑》,很期待但不知道它能给我带来什么! 编程珠玑,字字珠玑。但是翻译有点拗口,有时候整句话读下来都不知道在讲什么,多少有点掩饰了珠玑的魅力,真怀疑是不是直接有道翻译了。 位图数据结构法 在“开篇”的里,讲述了排序的一个问题,大意就是,对一个“最多占n位的( 阅读全文
posted @ 2018-03-09 12:08 xmj 阅读(156) 评论(0) 推荐(0)
摘要: 写一下我使用串口向开发板传送文件中遇到的问题及解决办法: 使用的软硬件环境: 虚拟机:VMware® Workstation 8.0.1 Linux操作系统:Fedora 9 开发板:mini6410 下面使用通过串口终端minicom传送文件到开发板上: 1. USB 串口无法识别的问题: 我的笔 阅读全文
posted @ 2018-03-09 12:07 xmj 阅读(1951) 评论(0) 推荐(0)
摘要: 基于顺序表创建赫夫曼树 说明:赫夫曼树在信息传输上有很多的用途,刚刚学习二叉树,就遇上了赫夫曼,在学习算法的时候学到了不少的的东西。 代码实现: 1 //哈弗曼节点数据结构 2 struct HuffmanNode//数据结构的设计是本赫夫曼的一大败笔,我居然用了里面的很多东西我居然用了指针。 3  阅读全文
posted @ 2018-03-09 12:07 xmj 阅读(278) 评论(0) 推荐(0)
摘要: Gdb调试多进程程序 程序经常使用fork/exec创建多进程程序。多进程程序有自己独立的地址空间,这是多进程调试首要注意的地方。Gdb功能强大,对调试多线程提供很多支持。 方法1:调试多进程最土的办法:attach pid Attach是调试进程的常用办法,只要有可执行程序以及相应PID,即可工作 阅读全文
posted @ 2018-03-09 12:06 xmj 阅读(276) 评论(0) 推荐(0)
摘要: Tool GDB Examining Memory (data or in machine instructions) You can use the command x (for “examine”) to examine memory in any of several formats, ind 阅读全文
posted @ 2018-03-09 12:06 xmj 阅读(237) 评论(0) 推荐(0)
摘要: 1. gdb attach [pid] -- debug a running process 2. valgrind-- a suite of tools for debugging and profiling programs Very powerful tool to debug linux p 阅读全文
posted @ 2018-03-09 12:05 xmj 阅读(177) 评论(0) 推荐(0)
摘要: [原创]桓泽学音频编解码(1):MPEG1 MP3 系统算法分析 [原创]桓泽学音频编解码(2):AC3/Dolby Digital 系统算法分析 [原创]桓泽学音频编解码(3):AAC 系统算法分析 [原创]桓泽学音频编解码(4):MP3 和 AAC 中反量化原理,优化设计与参考代码中实现 [原创 阅读全文
posted @ 2018-03-09 12:04 xmj 阅读(564) 评论(0) 推荐(0)
摘要: GCD为我们提供了三种类型的调度队列(dispatch queue),分别为串行,并行和主调度队列。 串行(Serial) 你可以创建任意个数的串行队列,每个队列依次执行添加的任务,一个队列同一时刻只能执行一个任务(串行),但是各个队列之间不影响,可以并发执行。每个队列中的任务运行在一个由各自串行队 阅读全文
posted @ 2018-03-09 12:04 xmj 阅读(222) 评论(0) 推荐(0)
摘要: 内核随机数产生器 Linux内核实现了一个随机数产生器,从理论上说这个随机数产生器产生的是真随机数。与标准C库中的rand(),srand()产生的伪随机数不同,尽管伪随机数带有一定的随机特征,但这些数字序列并非统计意义上的随机数。也就是说它们是可重现的--只要每次使用相同的seed值,就能得到相同 阅读全文
posted @ 2018-03-09 12:04 xmj 阅读(854) 评论(0) 推荐(0)
摘要: 红黑树是一种二叉查找树,它能保证在最坏的情况下,基本的动态操作的时间为O(lgn)。 1. 红黑树的性质 红黑树是一种二叉查找树,与普通二叉查找树不同之处在于以下几个方面: a) 红黑树在每一个结点上增加一个域来存储该结点的颜色,颜色可以是红(RED)的或者是黑(BLACK)的。因此树的结点包括5个 阅读全文
posted @ 2018-03-09 12:03 xmj 阅读(186) 评论(0) 推荐(0)
摘要: 上一篇写了关于红黑树基本性质的东西,这篇来说一说如何创建一棵红黑树吧。 如果对红黑树的基本性质还有疑问,请先查看一下我的前一篇:http://www.cnblogs.com/unpolishedgem/archive/2012/05/16/2504311.html。 如果图片打不开的话,就去看我的c 阅读全文
posted @ 2018-03-09 12:02 xmj 阅读(385) 评论(0) 推荐(0)
摘要: KMP是一种著名的字符串模式匹配算法,它的名称来自三个发明人的名字。这个算法的一个特点就是,在匹配时,主串的指针不用回溯,整个匹配过程中,只需要对主串扫描一遍就可以了。因此适合对大字符串进行匹配。 搜了网上很多KMP的代码下来调试,发现不是下标越界,就是死循环的,相当诡异...最后重新拿起严老师那本 阅读全文
posted @ 2018-03-09 12:01 xmj 阅读(214) 评论(0) 推荐(0)
摘要: 本文示例代码采用的是c语言。之前介绍过数据驱动编程《什么是数据驱动编程》。里面介绍了一个简单的数据驱动手法。今天更进一步,介绍一个稍微复杂,更加实用的一点手法——表驱动法。关于表驱动法,在《unix编程艺术》中有提到,更详细的描述可以看一下《代码大全》,有一章专门进行描述(大概是第八章)。简单的表驱 阅读全文
posted @ 2018-03-09 12:01 xmj 阅读(439) 评论(0) 推荐(0)
摘要: 最近在百度上看了uCOS-III 的介绍后,诸多功能有很大的提升和改进,感觉有必要升级一下开发环境。百度介绍:http://baike.baidu.com/view/8531313.htm 环境: 1. uCos-III 源文件KRN-K3XX-000000.zip 官网http://micrium 阅读全文
posted @ 2018-03-09 12:00 xmj 阅读(3305) 评论(0) 推荐(0)
摘要: © 野比 2012 欢迎大家和我讨论相关问题。 代码在此(注意此版并非最终版) 光学字符识别(OCR)是非常有用的技术。在验证码识别、车牌号识别、文字识别方面,基于字符的识别技术算是比较容易上手的了(相比图文识别)。 闲来看到有朋友研究验证码识别,一时手痒,野比自己动手来做做验证码识别。当然,肯定只 阅读全文
posted @ 2018-03-09 12:00 xmj 阅读(360) 评论(0) 推荐(0)
摘要: 写在开始 从6月7日开始到今天已经有5天了,在这5天的业余时间(工作之余)里终于系统的完成了C++反汇编的大部分问题的学习,今天写篇总结,算是对这几天学习的总结。 首先我想说明的一个问题就是我为什么要花时间研究C++反汇编? 这事得从笔者遇到的一个问题开始说起,大约2周前我们项目做在开发过程中遇到了 阅读全文
posted @ 2018-03-09 11:59 xmj 阅读(224) 评论(0) 推荐(0)
摘要: 数据类型基本数据类型基本数据类型是JS语言最底层的实现。简单数值类型: 有Undefined, Null, Boolean, Number和String。注意,描述中的英文单词在这里仅指数据类型的名称,并不特指JS的全局对象N an, Boolean, Number, String等,它们在概念上的 阅读全文
posted @ 2018-03-09 11:57 xmj 阅读(176) 评论(0) 推荐(0)
摘要: 网络爬虫是捜索引擎抓取系统的重要组成部分。爬虫的主要目的是将互联网上的网页下载到本地形成一个或联网内容的镜像备份。这篇博客主要对爬虫以及抓取系统进行一个简单的概述。 一、网络爬虫的基本结构及工作流程 一个通用的网络爬虫的框架如图所示: 网络爬虫的基本工作流程如下: 1.首先选取一部分精心挑选的种子U 阅读全文
posted @ 2018-03-09 11:57 xmj 阅读(113) 评论(0) 推荐(0)
摘要: 原文链接 http://blog.163.com/lanka83/blog/static/32637615200801793020182/http://blog.csdn.net/taina2008/archive/2007/08/09/1733464.aspx1. 前言:有的程序可以通过编译, 但 阅读全文
posted @ 2018-03-09 11:56 xmj 阅读(238) 评论(0) 推荐(0)
摘要: 进程、轻量级进程(LWP)、线程 进程:程序执行体,有生命期,用来分配资源的实体 线程:分配CPU的实体。 用户空间实现,一个线程阻塞,所有都阻塞。 内核实现,不会所用相关线程都阻塞。用LWP实现,用线程组表示这些线程逻辑上所属的进程。 用户空间实现,一个线程阻塞,所有都阻塞。 内核实现,不会所用相 阅读全文
posted @ 2018-03-09 09:54 xmj 阅读(1605) 评论(0) 推荐(0)
摘要: 引言 cpu无端占用高?应用程序响应慢?苦于没有分析的工具? oprofile利用cpu硬件层面提供的性能计数器(performance counter),通过计数采样,帮助我们从进程、函数、代码层面找出占用cpu的"罪魁祸首"。下面我们通过实例,了解oprofile的具体使用方法。 常用命令 使用 阅读全文
posted @ 2018-03-09 09:00 xmj 阅读(196) 评论(0) 推荐(0)
摘要: 之前的博客写了很多关于Windows编程的内容,在Windows环境下的黑客必须熟练掌握底层API编程。为了使读者对黑客常用的Windows API有个更全面的了解以及方便日后使用API方法的查询,特将这些常用的API按照7大分类进行整理如下,希望对大家的学习有所帮助。 一、进程 创建进程: Cre 阅读全文
posted @ 2018-03-09 08:59 xmj 阅读(360) 评论(0) 推荐(0)
摘要: 前言 本章节是用基本的Linux基本函数加上epoll调用编写一个完整的服务器和客户端例子,可在Linux上运行,客户端和服务端的功能如下: 客户端从标准输入读入一行,发送到服务端 服务端从网络读取一行,然后输出到客户端 客户端收到服务端的响应,输出这一行到标准输出 服务端 代码如下: 下载和编译 阅读全文
posted @ 2018-03-09 08:59 xmj 阅读(306) 评论(0) 推荐(0)
摘要: Linux共享内存编程实例 原文链接:http://blog.csdn.net/pcliuguangtao/article/details/6526119 阅读全文
posted @ 2018-03-09 08:58 xmj 阅读(196) 评论(0) 推荐(0)
摘要: 一、 C语言编译过程 C语言的编译过程可分为四个阶段: 1、预处理(Preprocessing) 对源程序中的伪指令(即以#开头的指令)和特殊符号进行处理的过程。 伪指令包括:1)宏定义指令; 2)条件编译指令; 3)头文件包含指令; 2、编译(Compilation) 编译就是将源程序转换为计算机 阅读全文
posted @ 2018-03-09 08:57 xmj 阅读(389) 评论(0) 推荐(0)
摘要: 简介 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。 tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、no 阅读全文
posted @ 2018-03-09 08:57 xmj 阅读(172) 评论(0) 推荐(0)
摘要: 1. 硬件特性: 【Flash的硬件实现机制】 Flash全名叫做Flash Memory,属于非易失性存储设备(Non-volatile Memory Device),与此相对应的是易失性存储设备(Volatile Memory Device)。关于什么是非易失性/易失性,从名字中就可以看出,非易 阅读全文
posted @ 2018-03-09 08:56 xmj 阅读(219) 评论(0) 推荐(0)
摘要: A 。选中Executable file formats/Emulations > Kernel support for ELFbinaries 加载运行rootfs 中的程序.B 。选中Device Drivers --> ATA/ATAPI/MFM/RLL support --> Enhance 阅读全文
posted @ 2018-03-09 08:56 xmj 阅读(199) 评论(0) 推荐(0)
摘要: 【读(read)操作过程详解】 以最简单的read操作为例,解释如何理解时序图,以及将时序图 中的要求,转化为代码。 解释时序图之前,让我们先要搞清楚,我们要做的事情:那就是,要从nand flash的某个页里面,读取我们要的数据。 要实现此功能,会涉及到几部分的知识,至少很容易想到的就是:需要用到 阅读全文
posted @ 2018-03-09 08:55 xmj 阅读(323) 评论(0) 推荐(0)
摘要: 【Nand Flash引脚(Pin)的说明】 图3.Nand Flash引脚功能说明 上图是常见的Nand Flash所拥有的引脚(Pin)所对应的功能,简单翻译如下: 1. I/O0 ~ I/O7:用于输入地址/数据/命令,输出数据 2. CLE:Command Latch Enable,命令锁存 阅读全文
posted @ 2018-03-09 08:55 xmj 阅读(220) 评论(0) 推荐(0)
摘要: 首先解释一下,什么是堆内存? 堆是一种常见的内存管理器,应用程序通过堆来动态地分配和释放内存,通常使用堆的情况是无法预先知道所需要的内存大小,或者申请内存太大,无法通过栈内存来自动分配,下面让我们再来看一段英文解释。 A heap is a form of memory manager that a 阅读全文
posted @ 2018-03-09 08:54 xmj 阅读(857) 评论(0) 推荐(0)
摘要: 知识这东西有时候很奇怪,每次当你重新审视他的时候可能都会有新的收获。最近为了研究一个内存相关的问题,把windows heap相关的内容又复习了一遍,收获不小,记录一下,希望有朋友使用的时候少走些弯路。 老话说的好,知己知彼方可百战不殆,没准备就去打仗无异于以卵击石,后果可想而知,那分析heap的问 阅读全文
posted @ 2018-03-09 08:54 xmj 阅读(1104) 评论(0) 推荐(0)
摘要: 2. 软件方面 如果想要在Linux下编写Nand Flash驱动,那么就先要搞清楚Linux下,关于此部分的整个框架。弄明白,系统是如何管理你的nand flash的,以及,系统都帮你做了那些准备工作,而剩下的,驱动底层实现部分,你要去实现哪些功能,才能使得硬件正常工作起来。 【内存技术设备,MT 阅读全文
posted @ 2018-03-09 08:54 xmj 阅读(455) 评论(0) 推荐(0)
摘要: 本文将介绍怎样读取一个分区的superblock: 1. 首先我们查看一下在磁盘上有哪些分区,通过fdisk -l 这里有三个分区,我们下面查看/dev/sda3(这是一个device file) 2. 从/dev/sda3拷贝1024B-2048B(这就是superblock的位置)到一个叫sup 阅读全文
posted @ 2018-03-09 08:53 xmj 阅读(339) 评论(0) 推荐(0)
摘要: 通常我们认为一旦内存写溢出,程序就很容易崩溃。所以服务器上通常会对一些重要进程做脚本保护,一旦崩溃立即重新拉起。 最近发现我们一个公共服务内存写溢出时程序没有崩溃,而是卡死了。 为了深入分析原因,我们仔细review了glibc的代码,并发现一个较为隐蔽的bug。 先来看这个卡死的程序堆栈(64位环 阅读全文
posted @ 2018-03-09 08:53 xmj 阅读(310) 评论(0) 推荐(0)
摘要: C++编程语言是一个应用广泛的计算机应用语言,它功能强大,在一定程度上大大提高了程序开发效率。C++单例模式也称为单件模式、单子模式。使用单例模式,保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。有很多地方需要这样的功能模块,如系统的日志输出等。 单例模式有许多种实现 阅读全文
posted @ 2018-03-09 08:52 xmj 阅读(222) 评论(0) 推荐(0)
摘要: 内存对很多人来说感觉是个很熟悉的东西,因为我们在用VC调试程序时,很多时候都会察看内存中变量的值。但是,很多时候我们的思维也就因此局限在有源码的模块,当遇到一些跨模块或是没有源代码的Bug,我们还是无从下手。因此,很有必要我们要对整个程序内存有个比较全局性的认识,这样遇到任何问题,你都能从容面对。我 阅读全文
posted @ 2018-03-09 08:51 xmj 阅读(202) 评论(0) 推荐(0)
摘要: 目录索引: 一、LibCurl基本编程框架 二、一些基本的函数 三、curl_easy_setopt函数部分选项介绍 四、curl_easy_perform 函数说明(error 状态码) 五、libcurl使用的HTTP消息头六、获取http应答头信息 七、多线程问题 八、什么时候libcurl无 阅读全文
posted @ 2018-03-09 08:50 xmj 阅读(335) 评论(0) 推荐(0)
摘要: 在B/S模型的Web应用中,客户端常常需要保持和服务器的持续更新。这种对及时性要求比较高的应用比如:股票价格的查询,实时的商品价格,自动更新的twitter timeline以及基于浏览器的聊天系统(如GTalk)等等。由于近些年AJAX技术的兴起,也出现了多种实现方式。本文将对这几种方式进行说明, 阅读全文
posted @ 2018-03-09 08:50 xmj 阅读(1047) 评论(0) 推荐(0)
摘要: 一个困扰我两天的问题, Google和Baidu没有找到解决方法! 此文为记录这个问题,并给出原因和解决方法。 1、Unix domain socket简介 unix域协议并不是一个实际的协议族,而是在单个主机上执行客户/服务器通信的一种方法,所用API于在不同主机上执行客户/服务器通信所有的API 阅读全文
posted @ 2018-03-09 08:46 xmj 阅读(338) 评论(0) 推荐(0)
摘要: 最近无意中看到博客园中一篇介绍wireshark的文章,写得不错,它简单清楚介绍了wireshark的使用 简介 wireshark以前叫做Ethereal, 在大学时候的网络课程中就常看到它,它是世界上最流行的网络抓包分析工具(world's most popular network protoc 阅读全文
posted @ 2018-03-09 08:46 xmj 阅读(1098) 评论(0) 推荐(0)
摘要: 前言 发现这个漏洞的时候, 笔者正在机房上课。正想用3389远程桌面去控制宿舍电脑的时候,因为重做系统忘记自己的IP地址,因此就随手扫描了一下IP段开3389端口的电脑。 没想到就随手扫描到一台WIN8的系统,而且这个系统还装了QQ输入法WIN8纯净版。 当时我就想起初中时候的那个极品五笔的漏洞,就 阅读全文
posted @ 2018-03-09 08:45 xmj 阅读(263) 评论(0) 推荐(0)
摘要: 我希望本文有助于你了解测试软件是一件很重要也是一件不简单的事。 我们有一个程序,叫 ShuffleArray (),是用来洗牌的,我见过N多千变万化的 ShuffleArray (),但是似乎从来没有要想过怎么去测试之。所以,我在面试中我经常会问如何测试 ShuffleArray (),没想到这个问 阅读全文
posted @ 2018-03-09 08:44 xmj 阅读(364) 评论(0) 推荐(0)
摘要: 作者:Vamei 出处:http://www.cnblogs.com/vamei 严禁任何形式转载。 “小喇叭开始广播啦”,如果你知道这个,你一定是老一辈的人。“小喇叭”是五十年代到八十年代的儿童广播节目。在节目一开始,都会有一段这样的播音:“小朋友,小喇叭开始广播了!” 听到这里,收音机前的小朋友 阅读全文
posted @ 2018-03-09 08:43 xmj 阅读(219) 评论(0) 推荐(0)
摘要: 首先感激陈硕大大,附链接 陈硕的CSDN。《UNP》这本书肯定也是必须的,豆瓣的评价。 最近项目需要有一个嵌入式网络服务器,在系统中,该模块需要与每个客户端保持多个socket连接,然后将收到的数据分别转发给对应的上层处理模块。有点像云风的blog中提到的游戏服务端的接入服务器。但为了满足实时性,转 阅读全文
posted @ 2018-03-09 08:43 xmj 阅读(161) 评论(0) 推荐(0)
摘要: 最近在分析C++ dump 文件的时候觉得有必要将一些必要的反汇编东西总结一下以备别人参考,自己有时间的时候也可以进行更多的改进。下面通过一个简单的C++代码转成汇编代码后的详细解释说明一下C++和汇编的对应关系,以及如何识别汇编代码中进行的一些操作的意义。代码的调用关系如下图所示: 完整C++代码 阅读全文
posted @ 2018-03-09 08:42 xmj 阅读(915) 评论(0) 推荐(0)
摘要: 好长一段时间没写文章了,最近一直忙于为项目的可调式性做一些脚本和扩展工具,鉴于对windbg强大威力的震撼,以及相对较少的资料,笔者决定写一系列关于如何开发Windbg脚本和扩展命令的文章,您的支持是我最大的动力,希望本系列文章对您有所帮助。 那么一个完整的windbg script是什么样子的呢? 阅读全文
posted @ 2018-03-09 08:42 xmj 阅读(308) 评论(0) 推荐(0)
摘要: 本文由 伯乐在线 - 黄利民 翻译。未经许可,禁止转载!英文出处:howtogeek。欢迎加入翻译组。 【2013-08-09 更新】:最近又开始讨论“Chrome浏览器明文保存密码这个话题了,国外一位软件工程师 Elliott Kember 在他博客上写文提了这个问题,他认为这是一个安全漏洞。随后 阅读全文
posted @ 2018-03-09 08:41 xmj 阅读(3385) 评论(1) 推荐(0)
摘要: 对于服务器的优化,很多人都有自己的经验和见解,但就我观察,有两点常常会被人忽视 – 上下文切换 和 Cache Line同步 问题,人们往往都会习惯性地把视线集中在尽力减少内存拷贝,减少IO次数这样的问题上,不可否认它们一样重要,但一个高性能服务器需要更细致地去考察这些问题,这个问题我将分成两篇文章 阅读全文
posted @ 2018-03-09 08:40 xmj 阅读(243) 评论(0) 推荐(0)
摘要: 几个月一直懒得没动笔写写博客,最近开始动笔写点什么,今天就趁着加班出版本,横下心决定把上次烂尾的文章给收了(上篇:http://www.cppthinker.com/linux/224/context_switch_1/)。 接上篇,我们已经通过分析内核代码看到pthread_cond_signal 阅读全文
posted @ 2018-03-09 08:39 xmj 阅读(523) 评论(0) 推荐(0)
摘要: 写这篇文章的目的在于帮助那些既要使用Visual Studio编写程序又要开发和调试嵌入式Linux 程序的苦命程序员们! 第一步, 安装 WinGDB ,下载位置 http://www.wingdb.com/ ,连接是http://www.wingdb.com/WinGDB-latest_tria 阅读全文
posted @ 2018-03-09 08:38 xmj 阅读(821) 评论(0) 推荐(0)
摘要: WEB前端研发工程师,在国内算是一个朝阳职业,这个领域没有学校的正规教育,大多数人都是靠自己自学成才。本文主要介绍自己从事web开发以来(从大二至今)看过的书籍和自己的成长过程,目的是给想了解 JavaScript或者是刚接触JavaScript的朋友,介绍如何通过循序渐进的看书来学习javascr 阅读全文
posted @ 2018-03-09 08:38 xmj 阅读(2565) 评论(0) 推荐(1)
摘要: apache服务器本质上说是一个TCP socket服务,socket模型如下: 下面以worker MPM来说明apache代码中相应处理的位置在哪里: (以apache httpd 2.2.23版本的代码为基础) 1) 在第一次启动时验证配置没有异常时,创建了socket。 2) open_lo 阅读全文
posted @ 2018-03-09 08:36 xmj 阅读(248) 评论(0) 推荐(0)
摘要: Source Insight可以说是一款程序员必备的开发/阅读源码工具,美中不足的是SI没有标签栏,多个源码之间切换很不方便,于是我就乘闲暇之余写了该作品sihook:标签插件;不过严格意义上来说sihook并不算是插件,而是一个内挂:) 如何给Source Insight添加标签栏呢?可以查看or 阅读全文
posted @ 2018-03-09 08:36 xmj 阅读(211) 评论(0) 推荐(0)
摘要: 不经意间发现,大半年没写博客了,自觉汗颜。实则2012后半年,家中的事一样接着一样发生,实在是没有时间。快过年了,总算忙里偷闲,把最近的一些技术成果,总结成了文章,与大家分享。 前些日子,也是项目需要,花了一些时间研究了HTTP Live Streaming(HLS)技术,并实现了一个HLS编码器H 阅读全文
posted @ 2018-03-09 08:35 xmj 阅读(509) 评论(0) 推荐(0)
摘要: 【高清】Linux 最佳入门ULE112- RHCE033部分高清视频教程【尚观原创】 视频简介:高清RHCE033部分是RHCE考试中的基础部分,同时也是我们Linux入门的必 备学习资料。想学好Linux,就必须从基础做起,根基打好了,一切应付自如!尚观提供了 成套高清视频教程,只要你用心,尚观 阅读全文
posted @ 2018-03-09 08:34 xmj 阅读(434) 评论(0) 推荐(0)