- 博客(81)
- 资源 (1)
- 收藏
- 关注
原创 详解大端模式和小端模式
详解大端模式和小端模式一、大端模式和小端模式的起源 关于大端小端名词的由来,有一个有趣的故事,来自于Jonathan Swift的《格利佛游记》:Lilliput和Blefuscu这两个强国在过去的36个月中一直在苦战。战争的原因:大家都知道,吃鸡蛋的时候,原始的方法是打破鸡蛋较大的一端,可以那时的皇帝的祖父由于小时侯吃鸡蛋,按这种方法把手指弄破了,因此他的父亲,就下令,
2012-12-31 10:55:02 987
原创 readelf命令
readelf命令readelf用来显示ELF格式目标文件的信息.可通过参数选项来控制显示哪些特定信息。(注意: readelf不支持显示archive文档, 也不支持64位的ELF文件)。使用方法1:查看共享库的依赖库(NEEDED)和搜索名(SONAME)。readelf -d
2012-12-30 22:29:07 1689
原创 自己动手开发编译器之参考博客
http://www.cnblogs.com/Ninputer/archive/2011/06/10/2077991.html#2588239可以参考这个博客进行开发,加油哈~
2012-12-30 10:19:28 993
原创 Singleton模式中的DoubleCheck机制
Singleton模式中的DoubleCheck机制 在多线程环境下,使用Singleton模式很重要的一点就是要保证用Double Check机制保证线程安全。 很多时候, 我们通常需要使用singleton模式来保证对象实例的唯一性。通常我们是这么写的: class Singleton { private: static
2012-12-29 22:12:58 1446
原创 线程安全与Singleton
线程安全与Singleton 线程安全是个非常棘手的问题。即使你合理的使用了锁(lock),依然可能不会产生预期的效果。让我们来看看貌似合理的代码X=0;Thread 1 Thread2lock(); lock();x++; x++;unlock(); unlock();
2012-12-29 22:09:41 922
原创 C语言volatile关键字
C语言volatile关键字 编译器在进行优化的时候,也可能为了效率而交换毫不相干的两条相邻指令的执行顺序,有可能在多线程中产生不必要的错误,这个时候可以用volatile关键字试图阻止过度优化。 volatile基本可以做到两件事情: (1) 阻止编译器为了提高速度将一个变量缓存到寄存器内而不写回。 (2) 阻止编译器调整操作volatil
2012-12-29 22:05:40 1090
原创 linux clone()函数
linux clone()函数 clone函数调用 #include int clone(int (*fn)(void *fnarg), void *child_stack, int flags, void *arg, ... /* pid_t *pid, struct user_desc *tls, pid_t *
2012-12-29 21:38:05 6474
转载 分布式文件系统(FastDFS原理介绍)
分布式文件系统(FastDFS原理介绍)在生产中我们一般希望文件系统能帮我们解决以下问题,如:1.超大数据存储;2.数据高可用(冗余备份);3.读/写高性能;4.海量数据计算。最好还得支持多平台多语言,支持高并发。由于单台服务器无法满足以上要求,这就迫使开发者不得不考虑使用其他方式解决此类问题。分布式文件系统就在这样迫切的需求下孕育而生。今天为什么把标题定为“分
2012-12-29 00:06:23 2301
原创 Mysql常用命令行
Mysql常用命令行第一招、mysql服务的启动和停止net stop mysqlnet start mysql第二招、登陆mysql语法如下: mysql -u用户名 -p用户密码键入命令mysql -uroot -p, 回车后提示你输入密码,输入12345,然后回车即可进入到mysql中了,mysql的提示符是:mysql>
2012-12-23 09:27:22 892
原创 Linux下mysql编译配置
Linux下mysql编译配置1. 开启mysql服务以root身份运行:service mysqld start; 2. mysql/mysql.h: No such file or directory.以root身份运行: yum install mysql-devel;(顾名思义,mysql的develop包, fedroa下包名是这个
2012-12-22 18:19:26 719
原创 APUE笔记——alarm函数
APUE笔记——alarm函数alarm(设置信号传送闹钟)相关函数signal,sleep表头文件#include定义函数unsigned int alarm(unsigned int seconds);函数说明alarm
2012-12-22 14:14:49 715
原创 UNIX高级环境编程中的apue.h以及UNIX网络编程中的unp.h搭建
UNIX高级环境编程中的apue.h以及UNIX网络编程中的unp.h搭建参考:http://www.cnblogs.com/feiling/archive/2012/02/15/2353286.html http://jimslinbing.blog.163.com/blog/static/85054319201292712414518/
2012-12-22 13:08:01 1024
原创 编程之美-----24点游戏
编程之美-----24点游戏问题:给玩家4张牌,每张牌的面值在1-13之间,允许其中有数值相同的牌,采用加、减、乘、除四则运算,允许中间运算存在小数,并且可以使用括号,但每张牌只能用一次。构造表达式,使其结果为24.解法一:具体见书分析,这里利用了枚举,通过递归解法.#include iostream> #include cmath> u
2012-12-22 00:35:18 1385
原创 编程之美----俄罗斯方块
编程之美----俄罗斯方块问题:让电脑自动下俄罗斯方块游戏。解法:对当前的积木块,枚举它旋转后的每一个形状从每一列落下的棋盘,将该棋盘和前一个棋盘进行对比,并打分,最后取得分最高的那个形状和那一列作为电脑的当前操作。[cpp] view plaincopy#include #in
2012-12-21 23:29:08 1323
原创 编程之美——连连看游戏设计
编程之美——连连看游戏设计1 问题描述及分析连连看游戏是一种很流行的小游戏,记得在小时候去游戏厅玩街机的时候就有两台专门的连连看的机器(当然当时不叫这个名字),一个是连麻将牌、另一个是连水果图片。当时的麻将牌分好几层,相邻层的牌还可以连,看得人眼花缭乱。真是佩服能玩这游戏的人,我还是打“拳皇”比较擅长J。书中给出的Microsoft Link-up界面很漂亮,不过似乎图形只有一层,
2012-12-20 16:48:30 1837
原创 编程之美——NIM(2) “拈”游戏分析
编程之美——NIM(2) “拈”游戏分析问题:有N块石头和两个玩家A和B,玩家A先将石头随机分成若干堆,然后按照BABA...的顺序不断轮流取石头,能将剩下的石头一次取光的玩家获胜,每次取石头时,每个玩家只能从若干堆石头中任选一堆,取这一堆石头中任意数目(大于0)个石头。请问:玩家A要怎样分配和取石头才能保证自己有把握取胜?如果石
2012-12-20 11:11:55 1434
原创 编程之美——NIM(1)一排石头的游戏
编程之美——NIM(1)一排石头的游戏 NIM(1)一排石头的游戏这个问题书上讲解的已经很详细了,特此不讲了,可以参考《编程之美》。 下面给出扩展题的思考。 问题描述:N块石头排成一行,每块石头有固定的位置。两个玩家依次取石头,每个玩家每次可以取其中任意一块石头,或者相邻的两块石头,石头在游戏过程中不能移位,最后取光石头的
2012-12-20 10:15:50 2126
原创 编程之美——双线程高效下载
编程之美——双线程高效下载一,题目 网络上下载数据,然后存储到硬盘上。简单做法是:先下载一块然后写到硬盘,然后再下载,再写到硬盘上。 缺点:需要先下载完才能写入硬盘,下载和写是串行操作。 改进:让两个线程并行进行,设置缓冲区,采用信号量的形式。 下载线程,只要缓冲区有空余就下
2012-12-20 09:46:46 1263
原创 编程之美-----高效率地安排见面会
编程之美----高效率地安排见面会 某一天,在微软亚洲研究院有N个面试要进行,它们的时间分别为(B[i], E[i])(B[i]为面试开始时间,E[i]为面试结束时间)。假设一个面试者一天只参加一个面试。为了给面试者提供一个安静便于发挥的环境,我们希望将这N个面试安排在若干个面试点。不同的面试在同一个时间不能被安排在同一个面试点。如果你是微软亚洲研究院的HR,现在给定
2012-12-19 21:28:49 1848 1
原创 求解逆序数
求解逆序数方法一:(直接求解法,时间复杂度为0(N^2))#include#includeusing namespace std;#define MAX 10000#define N 500int a[N];int nixu(int a[],int n){ int i,j; int count=0; for(i=0;i {
2012-12-19 20:33:34 1121
原创 编程之美——饮料供货
编程之美——饮料供货题目:在微软亚洲研究院上班,大家早上来的第一件事是干啥呢?查看邮件?No,是去水房拿饮料:酸奶,豆浆,绿茶、王老吉、咖啡、可口可乐……(当然,还是有很多同事把拿饮料当做第二件事)。管理水房的阿姨们每天都会准备很多的饮料给大家,为了提高服务质量,她们会统计大家对每种饮料的满意度。一段时间后,阿姨们已经有了大批的数据。某天早上,当实习生小飞第一个冲进水房并一次拿
2012-12-19 19:22:39 1799
原创 编程之美——快速找出故障机器
编程之美——快速找出故障机器题目:假设一个机器只存储一个标号为ID的记录,假设每份数据保存2个备份,这样就有2个机器存储了相同的数据。其中ID是小于10亿的整数问题1、在某个时间,如果得到一个数据文件ID的列表。是否能够快速的找到这个表中仅出现一次的ID?即快速找出出现故障的机器存储的数据ID。问题2、如果有两台机器死机呢?(假设同一个数据的俩个备份不会同时丢失,即列表
2012-12-19 17:10:53 1304
原创 编程之美——买书问题
编程之美——买书问题一. 问题 上柜的《哈利波特》平装本系列,一共有五卷。假设每一卷单独销售均需8欧元。如果读者一次购买不同的两卷,就可以扣除5%的费用,三卷则更多。假设具体折扣的情况如下: 本数 2 折扣 5% 本数 3 折扣 10% 本数 4
2012-12-19 16:51:09 885
原创 跳转表(skip lists)
跳转表(skip lists) 跳转表是动态平衡数据结构( balanced dynamic search structure )的一种, 动态平衡数据结构还包括AVL树,2-3-4数,B数,红黑树,Treaps等. 跳转表由William Pugh在1989年创造,相对其他动态平衡数据结构,它具有容易编码实现的优点. 跳转表的一次
2012-12-19 15:29:13 1232
原创 编程之美——构造数独
编程之美——构造数独问题:构造一个9*9的方格矩阵,玩家要在每个方格中,分别填上1至9的任意一个数字,让整个棋盘每一列、每一行以及每一个3*3的小矩阵中的数字都不重复。首先我们通过一个深度优先搜索来生成一个可行解,然后随机删除一定数量的数字,以生成一个数独。测试代码为:#include #include using n
2012-12-19 10:31:19 970
原创 编程之美----数字回文
编程之美----数字回文 题目:人过大佛寺*我=寺佛大过人. 其中每个字母代表着一个不同的数字. 分析:这道题用穷举的方法来解决即可. 代码如下:#include#includeusing namespace std;int main(){ bool flag; bool IsUsed[10]; int number,
2012-12-18 22:24:31 1283
原创 编程之美----三角形测试用例扩展问题2
编程之美----三角形测试用例扩展问题2 这道题主要应该是考虑另存文件名的问题吧,包含以下几个方面:1. 判断当前的目录是否有权限可以写,是否有足够的空间2. 文件名为空,文件名过长,以及包含有各种非法字符3. 文件名已经存在,是否覆盖4. 针对单字符和Unicode设计不同case5. 带绝对路径和相对路径的的另存为...............
2012-12-18 21:37:46 1093
原创 编程之美----蚂蚁爬杆
编程之美----蚂蚁爬杆有一根27厘米的细木杆,在第3厘米、7厘米、11厘米、17厘米、23厘米这五个 位置上各有一只蚂蚁。木杆很细,不能同时通过一只蚂蚁。开始时,蚂蚁的头朝左还是朝右是任意的,它们只会朝前走或调头,但不会后退。当任意两只蚂蚁碰头 时,两只蚂蚁会同时调头朝反方向走。假设蚂蚁们每秒钟可以走一厘米的距离。编写程序,求所有蚂蚁都离开木杆的最小时间和最大时间。通过遍
2012-12-18 21:12:26 1874
原创 编程之美----桶中取黑白球
编程之美----桶中取黑白球【题目描述】有一个桶,里面有白球、黑球各100个,人们必须按照以下的规则把球取出来:1、每次从桶里面拿出来两个球;2、如果是两个同色的球,就再放入一个黑球;3、如果是两个异色的球,就再放入一个白球;问:最后桶里面只剩下一个黑球的概率是多少?【解题思路】思路1:找规律 使用(黑球个数, 白球个数)来表示桶中黑球和白球的个数变动,
2012-12-18 17:29:34 1152
原创 编程之美----磁带文件存放优化
编程之美----磁带文件存放优化从题意分析可以看出,如果访问概率相同,小文件应该排在前面,如果文件长度相同,概率大的应该在前面。即和文件长度成反比,和概率成正比。不过书上给出的例子只有一种情况,比如概率/长度相同的情况是否满足解答呢。例如A和B的访问概率P分别为0.6和0.4,长度L分别为6和4,这样应该无论怎么排列都是相同的,计算如下:0.6 x 6 + 0.4 x
2012-12-18 17:10:45 712
原创 linux系统调用fork()、vfork()、clone()讲解
linux系统调用fork()、vfork()、clone()讲解clone()主要用来创建一个线程,可以是内核线程和用户线程,也可以创建进程,有选择的复制父进程资源。fork()用来全面复制父进程资源vfork()也是用来创建线程,但主要知识作为创建进程的中间步骤。这三个函数主要是通过配置do_fork()函数来实现的。int do_fork(unsi
2012-12-17 21:32:31 1874
转载 优秀程序员不得不知道的20个位运算技巧
优秀程序员不得不知道的20个位运算技巧一提起位运算,人们往往想到它的高效性,无论是嵌入式编程还是优化系统的核心代码,适当的运用位运算总是一种迷人的手段,或者当您求职的时候,在代码中写入适当的位运算也会让您的程序增加一丝亮点,最初当我读《编程之美》求“1的数目”时,我才开始觉得位运算是如此之美,后来读到 《Hacker's Delight》,感慨到Henry S.Warren把位运算
2012-12-16 10:16:57 661
原创 线段树
线段树1.概述 线段树,也叫区间树,是一个完全二叉树,它在各个节点保存一条线段(即“子数组”),因而常用于解决数列维护问题,它基本能保证每个操作的复杂度为O(lgN)。2.线段树基本操作 线段树的基本操作主要包括构造线段树,区间查询和区间修改.3.线段树的相关操作代码(1) 线段树构造首先介绍构造线段树的方法:让根节点表示区间
2012-12-15 16:47:09 911
原创 编程之美——区间重合判断
编程之美——区间重合判断一. 问题: 1. 给定一个源区间[x,y]和N个无序的目标区间[x1,y1] [x2,y2] ... [xn,yn],判断源区间[x,y]是不是在目标区间内。 2. 给定一个窗口区域和系统界面上的N个窗口,判断这个窗口区域是否被已有的窗口覆盖。二. 解法: 问题一:先用区间的左边界值对目标区间进行
2012-12-15 15:07:42 1458
原创 编程之美——最短摘要的生成
编程之美——最短摘要的生成题目: 最短摘要的生成,具体见《编程之美》这本书。分析: 先来看看这些序列:w0,w1,w2,w3,q0,w4,w5,q1,w6,w7,w8,q0,w9,q1 问题在于,如何一次把所有的关键词都扫描到,并且不遗漏。扫描肯定是无法避免的,但是如何把两次扫描的结果联系起来呢?这是一个值得考虑的问题。
2012-12-15 11:21:22 1218
原创 编程之美——队列中取最大值操作问题
编程之美——队列中取最大值操作问题 这是一个要在队列中记录最大值的问题,但每次进队或出队又不能通过遍历去检测最大值的变化。用两个堆栈去实现一个队列是比较常见的方法,书中巧妙的用到了此方法,这样问题就转化为堆栈中取最大值操作问题。由于堆栈的变化只在栈顶,借助反向推导的思想。代码为:#include#include#includeusing namespa
2012-12-15 10:39:55 952
原创 编程之美——求二叉树中节点的最大距离
编程之美——求二叉树中节点的最大距离1.问题如果我们把二叉树看成一个图,父子节点之间的连线看成是双向的,我们姑且定义"距离"为两节点之间边的个数。写一个程序求一棵二叉树中相距最远的两个节点之间的距离。2.分析书中对这个问题的分析是很清楚的,我尝试用自己的方式简短覆述。计算一个二叉树的最大距离有两个情况:情况A: 路径经过左子树的最
2012-12-15 09:36:33 786
原创 编程之美-----重建二叉树
编程之美-----重建二叉树1.问题 假设已经有了前序遍历和中序遍历的结果,希望通过一个算法重建这棵树.2.解答(具体分析详见>)#includeusing namespace std;const int Max=20;struct Node{Node *pLeft;Node *pRight;char value;};v
2012-12-14 22:35:24 689
原创 编程之美-----分层遍历二叉树
编程之美-----分层遍历二叉树1. 简述 问题一:给定一棵二叉树,要求按分层遍历该二叉树,即从上到下的层次访问该二叉树(每一层将单独输出一行),每一层要求访问的顺序为从左到右,并将节点依次编号。 问题二:写一个函数,打印二叉树中某层次的节点(从左到右),其中根节点为第0层,函数原型为int PrintNodeAtLevel(Node* root, in
2012-12-14 21:05:07 1174
原创 编程之美——判断两个链表是否相交
编程之美——判断两个链表是否相交问题:给出两个单向链表的头指针,判断这两个链表是否相交,这两个链表可能有环。分析:具体见《编程之美》测试程序:#include "iostream"using namespace std;struct Node{ int data; Node *next;};//判断是否有环,返回bool,如果有环,返回环
2012-12-14 17:27:19 761
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人