自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

fengxiaoke_fxk的专栏

你若盛开,清风自来

  • 博客(50)
  • 资源 (7)
  • 收藏
  • 关注

原创 100囚犯问题

题目:国王招来100个囚犯,对他们说:你们犯的是死罪,但我给你们一次求生的机会。15分钟以后,你们将被关进一个有100间隔离牢房的监狱里,每人一间牢房,都与外界隔绝,什么也听不见看不到,连时间都没法计算,无法获得外界的任何信息。 这所监狱有一个院子,每天只少随机(注意是完全随机)打开一间牢房的门,让一个囚犯到院子里来放风。院子里有一盏灯,放风的囚犯可以控制它的开关,将它打开或是关闭。除囚犯之外,其

2015-12-01 12:48:38 4866 3

原创 基础篇——集合与泛型

一、集合TreeSet:以有序状态保持并可防止重复,其元素必须是ComparableHashMap:可用成对的key/value来存取LinkedList:针对经常插入或者删除中间元素所设计的高效率集合HashSet:防止重复的集合,可快速地找出相符的元素LinkedHashMap:类似HashMap,但可以记住元素插入的顺序,也可以设定成依照元素上次存取的先后来排序Arr

2014-07-28 19:21:57 1223 1

原创 基础篇——网络与线程

一、客户端读/写Socket s = new Socket("127.0.0.1",5000);InputStreamReader stream = new InputStreamReader(s.getInputStream());BufferedReader reader = new BufferedReader(stream);String message = reader.rea

2014-07-28 18:49:44 1031

原创 基础篇——序列化和文件的输入输出

一、对象序列化(存储)FileOutputStream fileStream = new FileOuputStream("file.ser");ObjectOutputStream os = new ObjectOutputStream(fileStream);os.writeObject(one);os.writeObject(two);os.close();当对象被序列

2014-07-28 18:26:09 1278

原创 博客总结十三——ORACLE

1、select distinct ..from ..where..order by..2、decode()select e.ename,e.sal,d.dname,decode(s.grade,1,'fifth',2,'forth',3,'third',4,'seconde',5,'first'),m.ename,m.sal,decode(ms

2014-07-15 14:37:48 769

原创 博客总结十二——C++复制控制

1、复制构造函数:1)单个形参,形参为对本类类型对象的引用,通常为const;复制初始化(=赋值):调用复制构造函数;首先使用指定构造函数创建一个临时对象,然后用复制构造函数将那个临时对象复制到正在创建的对象;直接初始化(圆括号赋值):直接调用与实参匹配的构造函数;ifstream file1("filename");//okifstream file2="filename

2014-07-13 23:57:17 623

原创 博客总结十一——C++的类

1、构造函数:实例化对象是自动使用构造函数初始化对象2、成员函数:类内部定义的函数默认为inline;类内部声明成员函数是必须的;const成员函数:double Sales_item::avg_price() const{}:const成员函数不能改变其所操作的对象的数据成员,const必须同时出现在定义和声明中;3、完全限定名:Sales_item::用于函数定义在

2014-07-13 02:14:46 679

原创 博客学习十——二分搜索、扫描算法、C难点

1、二分搜索:返回第一次出现的位置:start、end,遇到等于的移动end指针,最后返回end指针的数据返回最后一次出现的位置:遇到等于的移动start指针,最后返回start指针的数据2、一个问题:怎么重新编写代码使二分搜索执行得更快?用二分搜索树?但是空间上会增大3、assert艺术4、计时:starttime=clock()clicks=clock()-

2014-07-12 16:36:58 710

原创 博客总结九——Hadoop、Redis配置以及编程珠玑第二章的思考

Hadoop配置:http://www.cnblogs.com/vovlie/archive/2012/09/01/2666807.htmlRedis配置:

2014-07-09 22:39:11 743

原创 博客总结八——1M内存排序1000w整数

前提:每个整数互异解决:位图排序代码:

2014-07-09 22:35:45 1694

原创 博客学习七——redis虚拟内存、mongodb分片

Redis是一个开源、支持网络、基于内存、键值对存储数据库,使用ANSI C编写。其开发由VMware主持。根据月度排行网站DB-Engines.com的数据显示,Redis是最流行的键值对存储数据库。对于Redis这样的内存数据库,内存总是不够用的,除了可以将数据分割到多个Redis服务器以外,另外的能够提高数据库容量的办法就是使用虚拟内存技术

2014-07-06 15:46:00 1073

原创 博客学习六——快排和其他算法

1、平衡二叉树2、B树3、快排为什么比归并高效:关键在于对枢纽元的选择和分割策略对于枢纽元:一种错误的方法:将第一个元素作为枢纽元或选取前两个互异的关键字中较大者作为枢纽元一种安全的方法:随机选取枢纽元三数中值分割法:随机选取三个元素,去中值作为枢纽元对于分割策略:一种方法是i指向第一个元素,j指向倒数第二个元素,当i元素大于枢纽元并且j元素小于枢纽元时,交换两

2014-07-03 15:59:07 873

原创 博客学习五——hadoop

1、mapper将输入进行过滤和转换reducer完成聚合2、NameNode:位于HDFS的主端,指导从端的DataNode执行底层的I/O任务;跟着HDFS中文件如何被分割成文件块,而这些块又被哪些节点存储,以及分布式文件系统的整体运行状态是否正常;DataNode:将HDFS数据块读取或者写入到本地文件系统的实际文件

2014-07-03 10:14:32 707

原创 博客学习三

1、windows下多线程创建机制:参考博客:http://www.jb51.net/os/windows/121172.html进程:系统进行资源分配和调度的一个独立单位线程:进程的一个实体,CPU调度和分派的基本单位windows下进程线程创建:1)打开在该进程中执行的映像文件2)创建执行体进程对象3)创建初始线程4)通知系统新进程创建了5)开始执行

2014-07-02 08:57:06 956

原创 博客学习二

数据库知识点,掌握基础就行一、数据库基础参考博客:http://wenku.baidu.com/link?url=I44Yro6cGg75mllslomnLpSO0LmMjsChl5ld0fHV_BU2dMkY_BqaIVu8o08_Km4yYZ0DbaLLK6rotPBacKCTcVBK8cY4G8dOlCBccK1NEWy1、数据抽象概念模式(面向单个用户)、外模式(面向全

2014-06-30 22:48:27 1047

原创 博客学习一

一、Linux多线程编程的高效开发技术参考博文:http://www.ibm.com/developerworks/cn/linux/l-cn-mthreadps/几种环境:1、递归锁2、条件变量的自动复位3、pthread_cond_wait执行前加锁,执行时会解锁,成功后会加锁,执行之后解锁4、pthread_join阻塞当前线程,知道指定线程结束二、t

2014-06-30 12:47:01 1059 1

原创 位向量排序

1、位向量表示0~N的整数在普通机器上,一个int型整数有4个字节,共32位,我们可以通过这32位中不同的位来表示不同的整数;创建一个数组array[100],利用类的概念,array[0]存放32个除32等于0的整数,它的模数在32位中的相应位表示,相应的array[1]存放除32等于1的整数;如:int i = 5; // 5/32 = 0; 5%32 =

2013-03-23 10:35:03 2561 1

原创 简单的malloc分配器设计

1、隐式空闲链表结构隐式空闲链表由N多个块组成,一个块由一个字的头部、有效载荷(只包括已分配的块),以及可能的一些额外的填充(为了保证内存字节对齐而需要的填充)和尾部组成。头部大小为一个字,即四个字节,在强加双字对齐的约束之后,块大小总是8的倍数,所以用高29位来表示存储块大小,剩余3位中利用最低位来表示块是否已分配;尾部和头部的内容一样,加入尾部是为了分配器可以判断出一个块的起始位置和状态

2013-03-21 21:22:46 1460 2

原创 Linux内核0.12——理清内核相关知识

1、Linux内核的主要用途是为了与计算机硬件进行交互,实现对硬件的编程控制和接口操作,调度对硬件资源的访问,并为计算机上的用户程序提供一个高级的执行环境和对硬件的虚拟接口2、Linux内核结构,如图:3、虚拟地址:由程序产生的由段选择符和段内偏移地址两部分组成的地址;虚拟地址空间由GDT映射的全局地址空间和由LDT映射的局部地址空间组成。逻辑地址:由程序产生的与段相关的偏移地

2012-11-26 23:52:46 1304

原创 Linux内核0.12——从一个简单的多任务内核实例学习保护模式

《Linux内核完全剖析——基于0.12内核》(赵炯著)P.140/******引导启动程序boot.s******/此程序仅能加载长度不超过16个扇区的head代码,并且直接使用BIOS默认设置的中断向量号首先利用BIOS中断把内核代码加载到内存0x10000处,然后移动到内存0处最后进入保护模式,并跳转到内存0开始处继续运行把内核代码移动到物理内存0开始处的主要原因是为了设

2012-11-21 10:46:54 2450 1

原创 Linux内核0.12——内核编程语言和环境

/********AT&T 汇编格式********/1、为了维持与gcc输出汇编程序的兼容性,as汇编器使用AT&T系统V的汇编语法,这里主要说明一下它与intel汇编的语法区别2、AT&T与intel汇编语法格式的区别1)寄存器引用:mov %eax,%ebx2)操作数顺序:mov %eax(源),%ebx(目的)3)立即数格式:mov $4,%ebx(如果不加$,则认为4

2012-10-29 09:15:01 1766 3

原创 Linux内核0.12——微机组成结构

冯诺依曼体系结构计算机:CPU、ALU、存储器、输入输出设备总线:传统PC总线:CPU通过数据总线、地址总线和控制总线与外部设备进行通信,所有的外部设备都将连都这三条总线上,也就是说只有CPU和外部设备两个层次,效率肯定不行现代PC总线:在intel的设计中,CPU、AGP和存储器接口连在了I/O北桥上,其他的传输速度较慢的设备则连接到I/O南桥上,包括CPU在内的所有硬件都加入了缓冲

2012-10-21 10:23:10 1080

原创 Linux内核0.12——8086中断

中断:CPU不再继续依序执行指令,而是转去处理某一从CPU外部或内部产生的特殊信息从汇编角度理解:内中断:对于8086CPU来说,以下发生在CPU内部的的情况会产生内中断:除法错误;单步执行;执行into指令;执行int指令。其相应的中断类型码为0,1,4,n(n为字节型立即数)中断向量表:8086CPU利用此表中的中断类型码来找到相应的中断处理程序的入口地址;中断向量表必须存入内

2012-10-16 22:44:32 1489

原创 数据结构之各种排序的比较

(一)直接插入排序算法简洁,但是只有当待排元素n比较少的时候效率才高所需空间:一个当前元素的哨兵array[0]即可所需时间:主要与所需关键字的比较次数及移动的次数有关最坏的情况——逆序:总的比较次数为n(n-1)/2,记录的移动次数也为n(n-1)/2最好的情况——正序:比较次数为n-1,记录移动次数为0由此可以推断出插入排序算法的平均时间为O(n^2),最坏的情况为

2012-09-02 00:07:27 4904 5

原创 两种方法搭建IA-32汇编设计环境

/*******DOS : 16bit 汇编程序环境搭建********/16汇编程序设计需要在DOS环境下,利用MASM5.0以上的版本才能编译链接16位汇编为实地址模式,这里的环境其实不需要搭建,只管利用masm编译即可,以下是方法:1、编写*.asm文件这个可以直接用txt文件编写,然后将扩展名由txt改为asm2、masm编译WIN+R键进入DOS,输入如下

2012-08-20 01:28:06 1795 1

原创 数据结构----二叉树非递归实现

/*********构造二叉树*********/输入一串以二叉树先序序列遍历的字符,空格表示空指针。比如这串字符:ABD123CE4F5G678(为方便阅读,以数字代替空格),以先序顺序逆推出的二叉树应是:从中观察出构造二叉树的算法:以字符串的遍历为循环条件,构造一个栈来存放左右孩子指针都未被赋值的节点,空指针不允许入栈。(1)循环开始前,让头节点先入栈(2)st

2012-08-05 15:58:00 2962

原创 汇编学习笔记----转移指令及子程序原理

/*******8086CPU执行指令的步骤********/极重要:1、从CS:IP指向的内存单元读取指令,读取的指令进入指令缓冲器2、(IP)=(IP)+所读取指令的长度,从而指向下一条指令3、执行指令,转到第一步,重复这三步(注意:CPU是先指向要执行指令的下一条指令再开始执行指令)/******offset:获取标记地址******/获得伪代码中的标记地址后,我

2012-07-04 22:50:44 1614

原创 C专家编程精华第二篇----C对内存的使用,底层探索

这里以Linux中C编程为例,有些东西可能在不同的系统中处理是不一样的/**************运行时:内存的布局****************/以下面这段程序为例:// A:未初始化的全局和静态变量int array[40];static int num1;// B:初始化后的全局和静态变量int num2 = 10;static int num3 = 15;i

2012-07-04 17:09:30 1271

原创 数据结构之二叉树的非递归实现及“狡猾”的指针

先说说我实现二叉树的方法,才能开始讲述我被指针搞得晕头晕脑的痛苦经历。/****************二叉树非递归的总体分析*****************/(1)建立二叉树栈的应用:用空格键表示空指针,我们利用栈来保存左右孩子指针未都被赋值的节点,空指针不允许入栈开始建立:以循环遍历用户输入的字符串来建立二叉树,如:"AB#D##CE###"(这里先用#代替空格,方便查看)

2012-06-30 17:28:37 2164 2

原创 C专家编程精华篇----头疼的C语言声明:const、typedef、define及函数高级声明

**************const有关的变量声明*****************(1)const == read-onlyconst修饰的变量被许多人错误的认为是常量,但是const所修饰的变量应该是只读变量检验这个结论可以用下面这个方法:const int two = 2;switch(i){case 1: printf("case 1.\n");case tw

2012-06-24 22:44:17 13523 16

原创 汇编学习笔记----8086CPU的段寄存器

(1)在8086CPU中,它是16bit结构,一次可以传送一个字的数据,但其地址总线有20根,一次可以传送2的20次方的数据也就是说它的寻址能力为1MB,很明显,如果将地址从CPU内部简单的发出来,一次就只能传送16bit的地址,寻址能力只有64KB了。至于为什么这么设计,真心还不知道,但8086CPU采用了用两个地址相加的方法来解决 了这种消耗。8086CPU提供一个16bit的

2012-06-14 15:41:31 5187 4

原创 多系统进入Ubuntu时的Grub Rescue

当windows和Ubuntu共存时,Ubuntu会自带一个Grub系统引导,你可以从里面选择开启哪一个系统但是,如果我们在windows里面进行了磁盘分区的话,就会重新整理磁盘信息,Grub获得的系统启动盘就会发生改变,如果windows在/dev/sda1启动、Ubuntu在/dev/sda8启动的话,分区所造成的磁盘启动可能会把Ubuntu的启动改到了随机的一个区,如/dev/s

2012-06-10 20:56:03 1675

原创 Linux里必须掌握的命令

--------------------grep------------------------工作方式:在一个或多个文件中搜索字符串模板,若模板包括空格,则必须被引用模板后的所有字符串被看作文件名,不影响原文件内容常用参数:-a:将二进制文件以text文件的形式查找数据-c:计算找到的字符串模板的次数,不会输出与字符串模板符合的那一行内容,仅输出次数-i:忽略大小写

2012-06-07 18:54:36 4506 6

原创 Linux的标准文件系统----EXT2

EXT2分为几个重要部分:inode、block、superblockEXT2将文件分为两部分存储,文件的权限等属性放在inode中,而其实际的数据放在block中,superblock当然就是记录整个文件系统的inode和block的信息了。(1)inode:一个inode的大小被固定为128字节,一个文件占用一个inode,但是并不代表一个inode只保存一个block的指向,

2012-06-05 21:06:31 1449

原创 数据结构之栈的应用----迷宫求解

/***********程序设计思想*************/(1)迷宫地图相关:利用动态二维数组来初步勾勒出迷宫:建议先用malloc申请一维数组,再用calloc申请每个元素中的一维数组,因为我用的是1来表示迷宫的通路,0表示死路,calloc申请完后就会自动初始化为0迷宫交岔路结点:我们要有一个扫描通路的函数,对一个坐标进行东南西北的扫描,当遇到交岔路的坐标时,需要将所

2012-06-05 20:16:42 2349 3

原创 Linux目录配置标准FHS

FHS全称:Filesystem Hierarchy Standard由于利用Linux来开发产品的团队和个人实在太多了,如果每个人都以自己的想法来配置文件放置的目录,那么将可能造成很多管理上的困扰。在这种Linux文件目录配置极其混乱的局面下,FHS出现了,它的主要目的是希望让用户可以了解到已安装软件通常放置于哪个目录下。遵循FHS标准,这大大方便了独立的软件开发商、操作系统制作者及

2012-06-01 18:38:17 1039

原创 数据结构之栈的应用----算术表达式的实现

这次所讲的是又一个栈的应用:算术表达式这个程序是栈的应用的典型例子,是很好的栈的诠释,这个程序在K&R的书上也被叫做逆波兰计算器/**********算术表达式的设计思想***********/(1)首先,根据四则运算表达式,我们要先了解到其计算规则:括号为界限符,其优先率最高,其次为运算符*和/,最后为+和-;(2)然后,我们根据把一个算术表达式划分为:开始('#')、运

2012-05-29 13:36:52 2311

原创 数据结构之栈的应用----C程序的括号配对检查

这周学完了严老师的栈及其应用。已经对栈的应用有了一定的了解了,并且感觉到数据结构实在是很强大,它几乎可以解决我们生活中的大部分问题。关于栈的基本常识,这里不做过多的解释,总之,其核心就是先进后出(FILO)联想到这种模式我们就可以很容易的知道,栈可以有如下几种应用:1、进制之间的转换2、C程序的括号配对检查3、迷宫求解问题4、算术表达式求值5、递归函数.....

2012-05-26 19:01:49 2287 1

原创 数据结构之双向链表的实现

*****双向链表的实现*****双链表就可以看成两个单链表组合成的,只是相比单链表而言,它能从两个方向进行遍历链表,目前还不知道这有什么优势,因为当我们想查找一个元素时,并不知道一个有序的链表里面这个被查找的元素离哪一边较近。(1)双链表的结构与单链表有点不一样,它要保证从链表的任意一端都能遍历链表,所以下面是双链表里面的结点的结构:typedef str

2012-05-25 20:57:26 2080

原创 数据结构之单链表的实现

*****单链表的实现*****我们在这里只实现单链表里面最常见的几个操作,如果有新功能会进行更新。《数据结构》一书中讲了线性表的有关算法,实现的数据类型有:静态数组、动态数组、单链表、循环链表和双向链表,这里,我实现了在实际开发中应用比较广阔的两种的数据结构:单链表和双向链表。(1)单链表的结构定义:typedef struct list{ int data;

2012-05-17 21:51:27 731

软盘刻录软件

《自己动手写操作系统》书中的软盘刻录软件,利用vc++编写

2013-11-07

ProgrammInLinux

linux program,to use socket between server and client. Experiment in network programming in linux

2013-06-29

Linux文件管理的总结

Linux文件管理; Linux文件和目录的权限管理和区别; Linux文件和目录的内容操作; Linux文件系统EXT2的详解

2012-06-19

C语言必知的二十个算法实现

ABC全排列 猜车牌号 产生随机数 创建动态二维数组并排序 方阵 分解质因数 画圆圈 计算器 卖鱼 判断素数 数字黑洞 水仙花数 杨辉三角 找数字1-3种方法 正余弦函数图

2012-05-06

shell脚本学习指南(中文版)

shell脚本学习指南 一本久负盛名的shell学习工具书

2012-05-06

数据结构(C语言版)清华严老师PDF

C语言描述的数据结构,清华严老师所写 几乎涵盖了所有数据结构的知识,深奥,但多读几遍应该能理解

2012-05-01

空空如也

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

TA关注的人

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