
c/c++
文章平均质量分 95
hguisu
这个作者很懒,什么都没留下…
展开
-
位运算符及其应用
一、C语言的六种位运算符:& 按位与| 按位或^ 按位异或~ 取反左移>> 右移 1. 按位与运算按位与运算符"&"是双目运算符。 其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1 ,否则为0。参与运算的数以补码方式出现。例如:9&5可写算式如下: 00001001 (9的二进制补码)&0000010原创 2012-08-21 18:54:31 · 15292 阅读 · 2 评论 -
socket/io(5)、IP地址的三种表示格式及在Socket编程中的应用
作者:huangguisu 使用TCP/IP协议进行网络应用开发的朋友首先要面对的就是对IP地址信息的处理。IP地址其实有三种不同的表示格式: 1)Ascii(网络点分字符串)- 2) 网络地址(32位无符号整形,网络字节序,大头) 3)主机地址 (主机字节序) IP地址是IP网络中数据传输的依据,它标识了IP网络原创 2012-04-12 09:56:56 · 18817 阅读 · 7 评论 -
C语言中的宏定义
1. 简单宏定义简单的宏定义有如下格式:[#define指令(简单的宏)] #define 标识符替换列表 替换列表是一系列的C语言记号,包括标识符、关键字、数、字符常量、字符串字面量、运算符和标点符号。当预处理器遇到一个宏定义时,会做一个 “标识符”代表“替换列表”的记录。在文件后面的内容中,不管标识符在任何位置出现,预处理器都会用替换列表代替它。原创 2012-04-18 11:23:01 · 26812 阅读 · 17 评论 -
回溯法 -数据结构与算法
1.回溯法算法思想:定义: 回溯法(探索与回溯法)是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。1、回溯法适用:有许多问题,当需要找出它的解集(全部解)或者要求回答什么解是满足某些约束条件的最优解时,往往要使用原创 2012-07-02 17:30:47 · 23253 阅读 · 7 评论 -
海量数据处理算法—Bit-Map
1. Bit Map算法简介 来自于《编程珠玑》。所谓的Bit-map就是用一个bit位来标记某个元素对应的Value, 而Key即是该元素。由于采用了Bit为单位来存储数据,因此在存储空间方面,可以大大节省。2、 Bit Map的基本思想 我们先来看一个具体的例子,假设我们要对0-7内的5个元素(4,7,2,5,3)排序(这原创 2012-08-21 16:14:19 · 46339 阅读 · 29 评论 -
二叉树的应用详解 - 数据结构
概述:平衡树——特点:所有结点左右子树深度差≤1排序树——特点:所有结点“左小右大字典树——由字符串构成的二叉排序树判定树——特点:分支查找树(例如12个球如何只称3次便分出轻重)带权树——特点:路径带权值(例如长度)最优树——是带权路径长度最短的树,又称 Huffman树,用途之一是通信中的压缩编码。1. 二叉排序树(二叉查找树Binary Sear原创 2012-06-25 11:45:05 · 42161 阅读 · 2 评论 -
socket/io(2)、socket编程原理
socket编程原理1、问题的引入1) 普通的I/O操作过程:UNIX系统的I/O命令集,是从Maltics和早期系统中的命令演变出来的,其模式为打开一读/写一关闭(open-write-read-close)。在一个用户进程进行I/O操作时,它首先调用“打开”获得对指定文件或设备的使用权,并返回称为文件描述符的整型数,以描述用户在打开的文件或设备上进行I/O操作的进程。然...原创 2012-04-10 11:37:57 · 56254 阅读 · 10 评论 -
socket/io(6)、PHP SOCKET编程
1. 预备知识 一直以来很少看到有多少人使用php的socket模块来做一些事情,大概大家都把它定位在脚本语言的范畴内吧,但是其实php的socket模块可以做很多事情,包括做ftplist,http post提交,smtp提交,组包并进行特殊报文的交互(如smpp协议),whois查询。这些都是比较常见的查询。特别是php的socket扩展库可以做的事情简直不会比c差原创 2012-04-11 10:55:08 · 86866 阅读 · 27 评论 -
java(4)-深入理解java嵌套类、内部类以及内部类builder构建构造函数
一、什么是嵌套类及内部类 可以在一个类的内部定义另一个类,这种类称为嵌套类(nested classes),它有两种类型:静态嵌套类和非静态嵌套类。静态嵌套类使用很少,最重要的是非静态嵌套类,也即是被称作为内部类(inner)。嵌套类从JDK1.1开始引入。其中inner类又可分为三种: 其一、在一个类(外部类)中直接定义的内部类; 其二、在一个方法(外部类的方法)中原创 2012-06-08 09:42:26 · 39233 阅读 · 7 评论 -
Yacc 与 Lex 快速入门(词法分析和语法分析)
原文 :Yacc 与Lex 快速入门Lex 代表 Lexical Analyzar。Yacc 代表 Yet Another Compiler Compiler。 让我们从 Lex 开始吧。LexLex 是一种生成扫描器的工具。扫描器是一种识别文本中的词汇模式的程序。 这些词汇模式(或者常规表达式)在一种特殊的句子结构中定义,这个我们一会儿就要讨论。一种匹原创 2012-04-23 16:16:24 · 17219 阅读 · 20 评论 -
socket/io(3)、socket阻塞与非阻塞,同步与异步、I/O模型
socket阻塞与非阻塞,同步与异步作者:huangguisu1. 概念理解 在进行网络编程时,我们常常见到同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)四种调用方式:同步:所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。也就是必须一件一件事做,等前一件做完了才能原创 2012-04-12 16:35:42 · 242718 阅读 · 60 评论 -
堆和栈的区别
堆和栈的区别 (转贴)非本人作也!因非常经典,所以收归旗下,与众人阅之!原作者不祥!堆和栈的区别一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结原创 2012-03-19 17:49:44 · 5114 阅读 · 1 评论 -
数据结构-栈和队列
1.栈1.1栈的定义栈是一种特殊的线性表。其特殊性在于限定插入和删除数据元素的操作只能在线性表的一端进行。如下所示:结论:后进先出(Last In First Out),简称为LIFO线性表。栈的基本运算有六种:构造空栈:InitStack(S)、判栈空: StackEmpty(S)、判栈满:StackFull(S)、进栈:Push(S,x原创 2012-06-19 12:53:15 · 113337 阅读 · 19 评论 -
数据结构(1)-线性表
1. 线性表:n个数据元素的有序集合。线性表是一种常用的数据结构。在实际应用中,线性表都是以栈、队列、字符串、数组等特殊线性表的形式来使用的。由于这些特殊线性表都具有各自的特性,因此,掌握这些特殊线性表的特性,对于数据运算的可靠性和提高操作效率都是至关重要的。 线性表是一个线性结构,它是一个含有n≥0个结点的有限序列,对于其中的结点,有且仅有一个开始结点没有前驱但有一个后继结点,有且仅有原创 2012-06-18 16:27:07 · 40054 阅读 · 11 评论 -
图的遍历 - 数据结构
概述图的遍历是指从图中的任一顶点出发,对图中的所有顶点访问一次且只访问一次。图的遍历操作和树的遍历操作功能相似。图的遍历是图的一种基本操作,图的其它算法如求解图的连通性问题,拓扑排序,求关键路径等都是建立在遍历算法的基础之上。由于图结构本身的复杂性,所以图的遍历操作也较复杂,主要表现在以下四个方面:① 在图结构中,没有一个“自然”的首结点,图中任意一个顶点都可作为第一个被访问的结点原创 2012-07-04 17:19:14 · 33530 阅读 · 1 评论 -
数据结构- 串的模式匹配算法:BF和 KMP算法
Brute-Force算法的思想1.BF(Brute-Force)算法 Brute-Force算法的基本思想是:1) 从目标串s 的第一个字符起和模式串t的第一个字符进行比较,若相等,则继续逐个比较后续字符,否则从串s 的第二个字符起再重新和串t进行比较。2) 依此类推,直至串t 中的每个字符依次和串s的一个连续的字符序列相等,则称模式匹配成功,此时串t的第一个字符在原创 2012-06-20 10:57:23 · 36569 阅读 · 3 评论 -
二叉树遍历 - 数据结构
1. 二叉树遍历1.1 遍历算法: 1.先序遍历的递归算法定义:(也叫做先根遍历、前序遍历). 若二叉树非空,则依次执行如下操作: (1) 访问根结点; (2) 遍历左子树; (3) 遍历右子树。 上图所示二叉树的遍历结果是:ABDECF2.中序遍历的递归算法定义:若二叉树非空,则依次执行如下操作: (1)遍历左子树;...原创 2012-06-21 11:13:10 · 4997 阅读 · 0 评论 -
图的应用详解-数据结构
概述最小生成树——无向连通图的所有生成树中有一棵边的权值总和最小的生成树拓扑排序 ——由偏序定义得到拓扑有序的操作便是拓扑排序。建立模型是AOV网关键路径——在AOE-网中有些活动可以并行地进行,所以完成工程的最短时间是从开始点到完成点的最长路径的长度,路径长度最长的路径叫做关键路径(Critical Path)。最短路径——最短路径问题是图研究中的一个经典算法问题, 旨在寻找图(原创 2012-07-15 12:02:26 · 27728 阅读 · 2 评论 -
B-树和B+树的应用:数据搜索和数据库索引
B-树1 .B-树定义:有序数组+平衡多叉树B-树是一种平衡的多路查找树,它在文件系统中很有用。定义:一棵m 阶的B-树,或者为空树,或为满足下列特性的m 叉树:⑴树中每个结点至多有m 棵子树;⑵若根结点不是叶子结点,则至少有两棵子树;⑶除根结点之外的所有非终端结点至少有[m/2] 棵子树;⑷所有的非终端结点中包含以下信息数据: (n,A0,K1,A...原创 2012-07-29 11:27:03 · 83393 阅读 · 19 评论 -
查找 -数据结构
几种查找算法:顺序查找,折半查找,分块查找,散列表一、顺序查找的基本思想: 从表的一端开始,向另一端逐个按给定值kx 与关键码进行比较,若找到,查找成功,并给出数据元素在表中的位置;若整个表检测完,仍未找到与kx 相同的关键码,则查找失败,给出失败信息。说白了就是,从头到尾,一个一个地比,找着相同的就成功,找不到就失败。很明显的缺点就是查找效率低。【适用性】:适用于线性表的原创 2012-07-24 16:17:19 · 12429 阅读 · 2 评论 -
socket/io(1)、Linux的socket编程详解
Linux的SOCKET编程详解1. 网络中进程之间如何通信进 程通信的概念最初来源于单机系统。由于每个进程都在自己的地址范围内运行,为保证两个相互通信的进程之间既互不干扰又协调一致工作,操作系统为进程通信提供了相应设施,如UNIX BSD有:管道(pipe)、命名管道(named pipe)软中断信号(signal)UNIX system V有:消息(mes......原创 2012-04-10 17:44:52 · 341981 阅读 · 81 评论