自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

IT-Goer

勤学 善思 用心积累

  • 博客(29)
  • 资源 (29)
  • 收藏
  • 关注

转载 UDP实现可靠数据传输

UDP没有Delievery   Garuantee,也没有顺序保证,所以如果你要求你的数据发送与接受既要高效,又要保证有序,收包确认等,你就需要在UDP协议上构建自己的协议。比如RTCP,RTP协议就是在UPD协议之上专门为H.323协议簇上的IP电话设计的一种介于传输层和应用层之间的协议。下面分别介绍三种使用UDP进行可靠数据传输的协议RUDPRTP

2014-08-26 20:50:46 594

转载 linux IPC通信

进程间通信就是在不同进程之间传播或交换信息,那么不同进程之间存在着什么双方都可以访问的介质呢?进程的用户空间是互相独立的,一般而言是不能互相访问的,唯一的例外是共享内存区。但是,系统空间却是“公共场所”,所以内核显然可以提供这样的条件。除此以外,那就是双方都可以访问的外设了。在这个意义上,两个进程当然也可以通过磁盘上的普通文件交换信息,或者通过“注册表”或其它数据库中的某些表项和记录交换信息。广义

2014-08-26 20:42:46 565

原创 数据库索引的实现原理

强烈建议参阅链接:http://www.linezing.com/blog/?p=798#nav-1说白了,索引问题就是一个查找问题。。。数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。索引的实现通常使用B树及其变种B+树。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向

2014-08-26 20:37:01 450

原创 位运算求解两个数的平均值

1. 给定两个数x和y,朴素算法求解两个数的平均值是(x+y)/2,但是这种方法有个问题就是当x和y的和溢出的时候得到的平均值是错误的,我们可以采用位运算来解决这个问题。    一般对于x和y不大的时候,利用(x+y) >> 1可以得到两个数的平均值    对于一个数a,a > n表示的是a/2^n2. x和y的平均值可以用以下公式求:(x&y)+((x^y)>

2014-08-20 09:10:09 1351

原创 移位运算及其compiler-dependent

C中的移位操作,其实内容不太多,但是you

2014-05-21 20:36:14 965

原创 CPU工作原理和MMU初探

具体相关内容主要来自一篇博客,

2014-04-16 09:17:01 1361

原创 C函数调用原理及函数栈帧分析

之前在看关于内联,宏和普通函数调用的时候想到了这个问题,感觉

2014-04-15 21:12:46 572

原创 二进制操作

关于二进制操作很常见,很多笔试面试题中也有涉及,本篇主要围绕

2014-04-09 20:33:45 737

原创 strcpy函数实现

要求:不使用库函数,利用C语言实现strcpy函数

2014-04-07 18:04:58 518

原创 动态规划应用—硬币组合问题

关于硬币组合问题,华为和创新工场面试题,直接上参考链接:http://www.cnblogs.com/python27/p/3303721.html/* * Filename :coins.cpp * Description: solve coin combinations using dynamic programing * Complier: g++ * Author: pyth

2014-04-04 13:17:04 951

原创 C变量(auto、static、register、extern)函数(内部、外部)与存储

本篇主要阐述下C语言中关于变量的分类,函数的分类及其在内存空间中的存储和作用域问题。基本全是文字,但是很重要,也是自己在学习C++,JAVA,C#等语言后,然后C语言中容易弄混的地方。哎,有时候语言学多了,总结少了,容易弄混~~一、变量分类1.1  按照作用域分类1)源文件程序的编译单位是源程序文件,一个源程序文件可以包含一个或若干个函数。2)局部变量与全局变量

2014-04-02 18:47:57 1033

原创 指针强制转换

C 和 C++ 的指针强制转换时不太一样的, C++ 提供了4中类型,用于更加精细化控制指针的强制转换。1、指针转换原理讨论指针的强制转换之前,我们先要理解清楚指针的根本含义。最通俗的解释,指针即是地址,但是,指针绝不仅仅只是地址。1)指针存着所指对象地址2)指针存着所指对象的类型和类型大小试想我们定义一个某类型指针p,后可以p++,p--,*p这些都与“指针记录了所指对象类型

2014-04-02 13:47:23 959

原创 Big-endian 和 Little-endian 详解

网上有一篇博文分析的非常详细,这里列出参考地址:http://blog.csdn.net/ce123_zhouwei/article/details/6971544这里自己列出一些觉得重要的地方,供后续参考。一、大小端定义 Big-Endian和Little-Endian的定义如下:1) Little-Endian就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。

2014-04-02 12:00:31 771

转载 C语言bool类型

声明:本文为转载文章,自己copy过来仅为学习之用,来源于 http://blog.csdn.net/daheiantian/archive/2011/02/05/6241893.aspx,觉得重要的地方加红色标注,谢谢博主!        也许很多人都和我一样,不知道现在的C语言已经有了布尔型:从C99标准开始,类型名字为“_Bool”。        在此之前的C语言中,使用整型i

2014-04-02 11:26:03 1101

原创 位段(bit-field)

一、位段结构struct node{ unsigned int a:4; //位段a,占4位 unsigned int :0; //无名位段,占0位 unsigned int b:4; //位段b,占4位 int c:32; //位段c,占32位 int :6; //无名

2014-04-02 10:11:56 562

原创 C语言符号扩展

C语言中,符号扩展非常常见,大体一般发生在 a =b, 而 a、b为不同数据类型情况下。一、短数据类型扩展为长数据类型1、要扩展的短数据类型为有符号数的进行符号扩展,即短数据类型的符号位填充到长数据类型的高字节位(即比短数据类型多出的那一部分),保证扩展后的数值大小不变。例如:a)char x=10001001b; short y=x; 则y的值应为11111111 100

2014-04-02 09:42:08 2418

原创 关于Union和Struct对齐

关于union,struct,还有机器数赋值,总是感觉自己认识不是特别深刻,这里使用小DEMO程序加以说明,具体的详细细节描述其它地方已经有说明和记录,这里不再说明。#include union myun {struct { int x; int y; int z; }u; int k; }a; int main() { a.u.x =4; a.u.y =5;

2014-04-01 19:26:17 546

原创 内存对齐(Data Structure Alignment)

一.何为内存对齐,内存对齐的作用        我们现在使用的算机中内存空间都是按照字节(Byte)划分的,理论上说,似乎对任何类型的变量的访问可以从任意地址开始,但实际情况则是在访问特定类型变量的时候经常在特定的内存地址访问,这就需要各种类型的数据按照一定的规则在内存空间上排列,而不是顺序的一个接一个地排放,这就是对齐。内存对齐主要是基于效率考虑,有用空间换时间的意思,减少数据存取指令周

2014-04-01 15:17:32 1017

原创 控制taskmgr CPU记录曲线

下面描述在Multi-Core CPU上控制任务管理器CPU使用记录曲线(绘制余弦曲线),具体见代码:/*@Author: yj@Description: 文件描述构造控制任务管理器,使CPU使用曲线满足余弦函数*/#include #include #include #include #include using namespace std; const doubl

2014-03-31 20:02:28 525

原创 课后习题Chapter2(2.1-4)

2.1-4

2013-12-29 11:01:08 833

原创 课后习题Chapter1

1.1-4解答:相似之处:这两个问题都是求最短的路径不同之处:最短路径问题其实是给定了情景并且不需要遍历所有的点只需要得到一个点到另外一个点的最短路径就可以了,而旅行商人问题则需要遍历所有的点并求得最短的路程,问题的复杂度不一样。亦可以找到一个最短的路径,但是你无法找到一个选择一条送货车行驶距离最短的送货顺序。其实是一个NP完全问题。(其实这个想了很久,由于要遍历所有的点,得到一个整体

2013-11-23 20:07:35 610

转载 算法问题:什么是P问题、NP问题和NPC问题

这或许是众多OIer最大的误区之一。你会经常看到网上出现“这怎么做,这不是NP问题吗”、“这个只有搜了,这已经被证明是NP问题了”之类的话。你要知道,大多数人此时所说的NP问题其实都是指的NPC问题。他们没有搞清楚NP问题和NPC问题的概念。NP问题并不是那种“只有搜才行”的问题,NPC问题才是。好,行了,基本上这个误解已经被澄清了。下面的内容都是在讲什么是P问题,什么是NP问题,什么是NPC

2013-02-18 19:05:36 449

原创 Jni 参数传递与操作——(C/C++ 代码与 java 代码的互相调用)

JNI中,C函数名的java对象参数,除了String类外则都表示为jobject类型(String类表示为jstring类型).JNI提供了在本地代码中操作Java对象的功能。基本原理首先需要找到对象属于哪个类(class).类(class)在JNI中用jclass进行表示。查找java类有两种方式:一、用类名(如android.os.Binder)在FindClass()函

2012-12-03 08:46:48 668

原创 Androd 中 NDK 编程详解(一)

上节讲解了NDK 开发环境搭建的方法,这节讲解下NDK编程的相关知识。如何将.so文件打包到.APK1、在你的项目根目录下建立libs/armeabi目录;2、将libxxx.so文件copy到 libs/armeabi/下;3、此时ADT插件自动编译输出的.apk文件中已经包括.so文件了;4、安装APK文件,即可直接使用JNI中的方法;我想还需要简单说明一下libxxx

2012-11-28 17:03:15 493

原创 NDK 开发环境搭建

JAVA开发中,我们经常要用到JNI机制,去调用一些已经实现了的库,以便代码复用,不必重新实现。NDK(Native Development Kit)。Android 常见开发方式是Java 封装的库,而这些库的底层是由C 或 C++ 实现的。NDK 是Google 公司推出的帮助Android 开发者通过C/C++ 本地语言编写应用的开发包,其包含C / C++ 头文件,库文件,示例代码。目

2012-11-27 18:27:21 307

原创 JNI使用浅谈(一)

JNI是Java Native Interface的缩写,中文为JAVA本地调用。从Java1.1开始,Java Native Interface(JNI)标准成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互。JNI一开始是为了本地已编译语言,尤其是C和C++而设计的,但是它并不妨碍你使用其他语言,只要调用约定受支持就可以了。使用JNI可以使java代码调用本地的库文件(

2012-11-26 19:26:17 438

转载 编程学习路线

编程的学习跟许多其他技艺的学习一样,首先必不可少的就是理论基础,其次就是需要大量的、不断地练习。老生常谈,这也许是每个人都懂得的道理,但说起来容易做起来难。所以想要学好编程,还需要些方法和毅力才行。对于编程来说,理论阶段的学习相对比较抽象。过早地就希望一口气掌握所有理论知识然后再开始实践,往往会越学越迷茫。因此从大的方面来说,比较好的方法是理论学习-实践-总结-理论学习-实践.....

2012-11-20 15:36:18 649

原创 android 源代码获取

接触Android差不多一年多了,这是我的第一篇博文,从今天开始,我会坚持写文章,记录自己日常学习心得。好了,言归正传。要想深入研究android,分析android源代码是必不可少的一步。网上有很多相关的教程,我自己亲自试了一下,在此做个总结。Android 源代码是用GIT分布式版本控制工具管理的,要想获取源码,我们无法用普通方式下载,只能通过GIT获取。一、windows 平台下

2012-11-16 20:11:23 502

原创 ListView BaseAdapter 简单分析

接触listview 有一段时间了,一直没有好好分析,今天仔细分析了下流程,记录在此,也给新进的同学一个参考。先附代码:RecentAdapter:package com.test.baseadapter;import java.util.ArrayList;import android.content.Context;import android.util.Log

2012-11-07 18:32:17 489

图像处理Matlab 实例集合

多个图像处理的MATLAB实现打包 挺不错的资源

2013-08-04

指纹特征提取

指纹特征提取 特征分析 适合初学参考

2013-08-04

指纹识别源代码

指纹识别MATLAB简单实现 比较适合初学看看

2013-08-04

模糊匹配特征点提取

模糊匹配 特征提取 比较好的文档 欢迎下载

2013-08-04

遥感图像特征提取

主要讲述遥感图像特征抽取的方法 比较好的文档 欢迎下载

2013-08-04

计算理论导引

计算理论导引 介绍计算机基础理论的入门级教材

2013-06-20

Cracking the Coding Interview (4th)

值得每个程序员研读的经典 主要涉及性能优化 高质量代码编程

2013-06-20

具体数学(中文版)

具体数学 国外久负盛名的计算机数学方面的经典教材 值得仔细研读

2013-06-20

计算机视觉

计算机视觉方面经典教材,适合相关研究方向读者选用阅读

2013-06-20

模式识别与机器学习

模式识别 和 机器学习方面经典国外教材,适合模式识别和机器学习相关读者

2013-06-20

机器学习导论

该PDF是国外经典机器学习方面的教材,非常适合对机器学习有兴趣的读者

2013-06-20

多媒体计算机技术

该文档主要讲授多媒体计算机相关技术及相关应用

2013-06-20

多媒体信息检索研究

该文档是关于多媒体信息检索,主要描述一些常见研究方法和手段 清晰

2013-06-20

Tomcat与JAVA web开发技术详解

孙卫琴版本的 TOMCAT JAVA WEB开发详解 清晰

2013-06-20

google I/O 2009

该文档是GOOGLE官方2009 I/O 大会公布的文档,主要设计ANDROID部分性能优化

2013-06-20

机器学习PDF

机器学习 国外大牛写的 很经典 请大家放心下载 机器学习的经典著作 清晰版

2013-06-16

数字图像处理 Matlab 第二版

该PDF是关于 冈萨雷斯的最新版 第二版 Matlab版 高清版本

2013-06-16

android 源码结构

文档主要分析android 源码结构和目录解释

2012-11-16

客户程序界面动态翻译

主要是讲述客户程序界面的动态翻译原理和采取的相关方法

2012-11-16

android 2.2 中横竖屏切换管理方案

主要是关于横竖屏切换原理,通过这个原理可以自己编程实现手机实际方向的检测

2012-11-16

UNIX环境高级编程

主要是关于UNIX 的详细讲解,很经典的一本书

2012-09-19

bash shell 源代码

主要是一份bash shell 4.2 的源码,共享给大家

2012-09-19

基于百度地图API的地图实现

主要利用百度提供的API实现常见地图功能

2012-09-18

可以直接运行的程序,描述哈弗曼编码的

哈弗曼编码,可以直接运行的程序,用C语言编写的。。。

2011-03-02

仓库管理系统源代码hvhhvcvvb吧

#include<stdio.h> #include<stdlib.h> #include<string.h> #include<malloc.h> #define max 32 int ifempty=0;//标志,判断链表是无否为空 typedef struct dnode /* 定义双向链表结构体 */ { int number; /* 货物编号 */ char name[max]; /* 货物名称 */ int counter; /* 货物数量 */ struct dnode *prior, *next; /* 定义两指针,分别指向其前驱和后继 */ }dlnode; dlnode *create(dlnode *L); dlnode *input(dlnode *L); dlnode *output(dlnode *L); dlnode * outnum(dlnode *L); dlnode * outname(dlnode *L); dlnode *current(dlnode *L); void search(dlnode *L); void print(dlnode *L); void searchnum(dlnode *L); void searchname(dlnode *L); void display(dlnode *L) ; void main() { int x; dlnode *L; if(!(L=(dlnode *)malloc(sizeof(dlnode)))) //分配空间 { printf("\n"); exit(1); } create(L);///调用函数,创建头节点 while(1) {////////////////////////主菜单/////////////////////////// printf(" ============================\n"); printf(" 1. 货物出库和入库\n"); printf(" 2. 查找货物表\n"); printf(" 3. 显示仓库货物表\n"); printf(" 4. 输出到文件\n"); printf(" 0. 退出\n"); printf(" =============================\n"); printf(" 选择0--3:"); scanf("%d",&x); switch(x) { case 2:search(L);break;//调用查找函数 case 1:current(L);break;//调用入库出库函数 case 3:display(L);break;//调用显示输出函数 case 4:print(L);break;//调用打印函数 case 0:printf("\n bye!see you!\n"); getchar();getchar();exit(0);//退出程序 default:printf("\n Enter erreor!please input 0--4!"); getchar();getchar(); } } } dlnode *create(dlnode *L)//创建链表头节点 { printf(" 欢迎使用罗利辉的仓库管理系统"); getchar(); ifempty=0; ///////初始化头节点的值//////// L->next=NULL;L->prior=NULL; L->number=L->counter=0; strcpy(L->name," "); return L; } void search(dlnode *L) ///查找的主要菜单 { int y; if(ifempty==0) { printf("没有输入货物!\n"); getchar();getchar(); return; } else { while(1) { printf("=====================\n"); printf("1.按编号查询\n"); printf("2.按货物名称查询\n"); printf("0.返回上一层\n"); printf("====================\n"); printf("选择0--2:"); scanf("%d",&y); switch(y) { case 1:searchnum(L);break;//调用按编号查找的函数 case 2:searchname(L);break;//调用按名称查找的函数 case 0:return;//返回 default:printf("enter error!Please input 0--2!\n\n"); getchar();getchar();printf("\n\n"); } } } } void searchnum(dlnode *L)///按编号查找的函数 { int num,flag=0;//flag为是否找到的标志 dlnode *head=L; if(ifempty==0) { printf("没有货物被输入\n"); getchar();getchar(); return; } printf("输入你要查找的货物编号:\n"); scanf("%d",&num); while((L=L->next)!=head) { if(L->number==num) { flag=1;//flag为1时表示找到 printf("找到指定编号货物 \n"); printf("\n编号:%d\n",L->number); printf("名称:%s\n",L->name) ; printf("数量:%d\n\n",L->counter); } } if(flag==0)//flag为0时表示没有找到 printf("没有找到指定编号货物,请查看是否还有货物。\n"); getchar();getchar(); } void searchname(dlnode *L)//按名称查找的函数 { int flag=0;//flag为是否找到的标志 char na[32]; dlnode *head=L; if(ifempty==0) { printf("没有货物被输入\n"); getchar();getchar(); return; } printf("输入你要查找的货物名称\n"); scanf("%s",&na); while((L=L->next)!=head) { if(strcmp(L->name,na)==0) { flag=1;//flag为1时表示找到 printf("找到指定名称货物 \n"); printf("\n编号:%d\n",L->number); printf("名称:%s\n",L->name) ; printf("数量:%d\n\n",L->counter); } } if(flag==0)//flag为0时表示没有找到 printf("没有找到指定编号货物,请查看是否还有货物。\n\n"); getchar();getchar(); } dlnode *current(dlnode *L)//货物出库入库函数 { int y; while(1) { printf("========================\n"); printf(" 1.货物入库\n"); printf(" 2.货物出库\n"); printf(" 0.返回上一层\n"); printf("========================\n"); printf(" 选择0--2:"); scanf("%d",&y); switch(y) { case 1:input(L);break;//调用入库函数 case 2:output(L);break;//调用出库函数 case 0:return(L);//返回上一层 default:printf("enter error!Please input 0--2!"); getchar();getchar(); printf("\n\n"); } } } dlnode *input(dlnode *L)//定义入库函数 { dlnode *in,*head; head=in=(dlnode *)malloc(sizeof(dlnode));//分配空间 head=L; printf("\n请输入货物数据:\n"); printf("编号:");scanf("%d",&in->number); printf("名称:");scanf("%s",&in->name); printf("数量:");scanf("%d",&in->counter); if(L->next==NULL) //如果只有头节点, { //把刚输入的in节点 L->next=in; //跟在头节点后面 L->prior=in; // in->next=L; // in->prior=L; // ifempty++; //ifempty加1 } else {//如果当前L的下一个节点不是头节点 while((L=L->next)!=head) {//如果输入的数大于L->number,则插到L的前面 if(L->number<in->number) { in->next=L; in->prior=L->prior; L->prior->next=in; L->prior=in; ifempty++; //ifempty加1 return(head); } } //输入的编号比其它编号都小,则插到最后个节点,并首尾相连 head->prior->next=in; in->prior=head->prior; head->prior=in; in->next=head; ifempty++; //ifempty加1 } return head; } dlnode *output(dlnode *L)//出库的函数 { int y; dlnode *head=L; if(ifempty==0)//检测是否有货物输入 { printf("没有货物输入系统\n"); getchar();getchar(); return(head); } while(1) { printf("=============\n"); printf("1.按编号出库\n"); printf("2.按名称出库\n"); printf("0.返回上一层\n"); printf("==============\n"); printf("选择0--2:");scanf("%d",&y); switch(y) { case 1:outnum(L);break;//调用按编号出库函数 case 2:outname(L);break;//调用按名称出库函数 case 0:return(L); default:printf("enter error!Please input 0--2!"); getchar();getchar();printf("\n\n"); } } } dlnode *outnum(dlnode *L)//按编号出库函数 { int num; dlnode *head=L; printf("请输入出库货物的编号:"); scanf("%d",&num); while((L=L->next)!=head) {//如果找到就删除节点 if(L->number==num) { L->prior->next=L->next; L->next->prior=L->prior; ifempty--; //ifempty减1 printf("编号为%d的货物成功出库",num); getchar();getchar(); return head; } } printf("没有此编号的货物,请查看是否还有货物。\n\n"); getchar();getchar(); return (head); } dlnode *outname(dlnode *L)//按名称出库函数 { char na[32]; dlnode *head=L; printf("请输入出库货物的名称:"); scanf("%s",&na); while((L=L->next)!=head) {//如果找到就删除节点 if(strcmp(L->name,na)==0) { L->prior->next=L->next; L->next->prior=L->prior; ifempty--; //ifempty减1 printf("名称为%s的货物成功出库",na); getchar();getchar(); return (head); } } printf("没有此名称的货物,请查看是否还有货物。\n\n"); getchar();getchar(); return(head); } void display(dlnode *L)//显示货物清单 { dlnode *head=L; if(ifempty==0) { printf("没有货物可显示\n"); getchar();getchar(); return; } L=L->next; do { printf("\n编号:%d\n",L->number); printf("名称:%s\n",L->name) ; printf("数量:%d\n\n",L->counter); }while((L=L->next)!=head); getchar();getchar(); } void print(dlnode *L) { dlnode *head=L; L=L->next; char filename[max]; FILE *out; if(ifempty==0) { printf("没有货物可输出\n"); getchar();getchar(); return; } printf("请输入文件名称:"); scanf("%s",filename); if((out=fopen(filename,"w"))==NULL) { printf("打开文件失败!\n"); getchar();getchar(); return; } do{ fprintf(out,"编号:%d\n名称:%s\n数量:%d\n\n",L->number,L->name,L->counter); }while((L=L->next)!=head); printf("输出成功\n");getchar();getchar(); fclose(out); }

2009-06-28

空空如也

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

TA关注的人

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