- 博客(80)
- 资源 (5)
- 收藏
- 关注
转载 new失败
《编写高质量代码:改善C++程序的150个建议》本书是C++程序员进阶修炼的必读之作,包含的全部都是C++编码的最佳实践,从语法、编码规范和编程习惯、程序架构和设计思想等三大方面对C++程序和设计中的疑难问题给出了经验性的解决方案,为C++程序员编写更高质量的C++代码提供了150条极为宝贵的建议。本节为大家介绍建议30:new内存失败后的正确处理。AD:51CTO云计算架构师峰会 抢票进行中
2012-09-26 07:30:34 1044
转载 c++ malloc/free、new/delete
方案1:c++ malloc/free、new/delete 内存申请函数比较转自:http://blog.csdn.net/zgbsoap/article/details/567970 感谢原作者!有了malloc/free 为什么还要new/delete ?malloc 与free 是C++/C 语言的标准库函数,new/delete 是C++的运算符。它们都可用于申请动态
2012-09-25 23:56:43 827
原创 memcpy 和 memmove的重写(有待考察)
void* mymemcpy(void* dest,void* source, size_t count){ char *ret = (char*)dest; char *dest_t = ret; char *source_t = (char*)source; while(coun
2012-09-25 12:24:27 639
转载 bss段,数据段,程序段,堆和栈之间的区别
BSS 段: BSS 段( bsssegment) 通常是指用来存放程序中未初始化的全局变量的一块内存区域。 BSS 是英文 Block Startedby Symbol 的简称。 BSS 段属于静态内存分配。数据段:数据段(datasegment )通常是指用来存放程序中已初始化的全局变量的一块内存区域。数据段属于静态内存分配。
2012-09-23 23:17:36 1088
转载 STL的线程安全性
Thread-safety for SGI STLSGI STL provides what we believe to be the most useful form of thread-safety. This explains some of the design decisions made in the SGI STL implementation.Client must l
2012-09-23 22:48:51 510
转载 常用算法
一、快速排序void qsort(int x,int y) //待排序的数据存放在a[1]..a[n]数组中 {int h=x,r=y; int m=a[(x+y)>>1]; //取中间的那个位置的值 while(h{while (a[h] while (a[r]>m) r--; //比中间那个位置的值大,循环直到找一个比中间那个值小的 i
2012-09-23 20:01:27 933
转载 内存抖动
现代操作系统都有一个叫虚拟内存的概念。操作系统如果只使用物理内存作为可用内存的话,会很受限制。于是就提出一种以廉价硬盘代替昂贵内存的方法,“扩充”可用内存。 于是,就在硬盘上划出一部分硬盘空间用来暂时存放内存数据。当系统进程发现物理内存不够了,就在内存空间上找一些不活跃的进程,把它占用的内存复制到硬 盘上,空出来的内存就可以重新使用了。而这时内存被空出来的进程并不知道其实他们其实已经被
2012-09-23 19:56:46 8869
转载 unix树形目录结构
unix操作系统采用树形带沟连的目录结构,如下图所示,在这种结构中,一个文件的名字是由根目录到该文件的路径上所有节点名按顺序构成的,相互之间用“/”分开,如文件pong的全路径名为:/user/smith/pong,根目录用“/”表示。 根文件系统常用目录 根文件系统的常用目录举例如下表: / 根目录,这是所有目录和文件的起点 /bin
2012-09-23 18:33:06 1749
转载 数据库冷备份和热备份
问题:数据库冷备份和热备份的不同点以及各自的优点解答:热备份针对归档模式的数据库,在数据库仍旧处于工作状态时进行备份。而冷备份指在数据库关闭后,进行备份,适用于所有模式的数据库。热备份的优点在于当备份时,数据库仍旧可以被使用并且可以将数据库恢复到任意一个时间点。冷备份的优点在于它的备份和恢复操作相当简单,并且由于冷备份的数据库可以工作在非归档模式下,数据库性能会比归档模
2012-09-23 00:02:50 576
转载 Linux - 进程和信号
1. 进程标识符(PID)的取值范围从2到32768,数字1是为特殊进程init保留的,init进程负责管理其他进程。2. Linux进程表就像一个数据结构,它把当前加载在内存中的所有进程的相关信息保存在一个表中,PID是进程表的索引。3. $ ps -afTTY一列显示了进程是从哪一个终端启动的。CMD一列显示启动进程所使用的命令。TIME一列是进程迄今所占用的CPU
2012-09-22 23:33:14 439
转载 数据库中的锁
11.5.1 锁的概念 锁(Lock) 是在多用户环境下对资源访问的一种限制。机制当对一个11.5.1 锁的概念 锁(Lock) 是在多用户环境下对资源访问的一种限制。机制当对一个数据源加锁后,此数据源就有了一定的访问限制。我们就称对此数据源进行了“锁定”。在SQL Server中,可以对以下的对象进行锁定:数据行(Row):数据页中的单行数据; 索引行(Key):索引页中的单
2012-09-22 23:00:26 1002
转载 给定能随机生成整数1到5的函数,写出能随机生成整数1到7的函数
问题:给定能随机生成整数1到5的函数,写出能随机生成整数1到7的函数。解答:假设我们要等概率生成一个3位的10进制数(000 - 999),我们可以在 随机生成整数0到9的函数 基础上,随机生成3个数字组成三位数就得到了结果。这里类似,我们首先必须认识到:任何一个数都可以用5进制的数来表示,如12 = 5进制(22) = 2*5 + 2。因此假设我们要随机生成[0,444]范围
2012-09-22 22:39:54 709
转载 警长逃犯的黑白帽的问题
问题:有一位警长,抓了三个逃犯。现警长决定给他们一次机会。他拿出3顶黑帽子,两顶白帽子,然后往这三个逃犯头上每人戴了一顶帽子,每个逃犯只能看到另外两个逃犯帽子的颜色,不能看到自己帽子的颜色,而且不能进行通讯,不能进行讨论,只能靠自己的推理推出来,如果猜出来了,放一条生路,否则处死。警长先问第一逃犯,结果第一逃犯猜错了,被杀掉了。警长问第二个逃犯,结果还是猜错了,同样被杀掉了。警长再
2012-09-22 22:32:30 2619
转载 只有三只酒杯,如何将酒平均分给4个人喝?
只有三只酒杯,如何将酒平均分给4个人喝?问题:有三个酒杯,其中两个大酒杯每个可以装8两酒,一个可以装3两酒。现在两个大酒杯都装满了酒,只用这三个杯子怎么把酒平均的分给4个人喝?解答:16 / 4 = 4,即每个人要喝4两酒。我们很容易用3两的杯子得到3两酒,难度在于怎么得到1两酒。我们怎么可以得到1两呢? 1 = 3*3 - 8因此我们用3两的杯子量3次倒入8两的杯
2012-09-22 22:19:49 2880
转载 根据上排的数填写下排的数,并满足要求
问题:根据上排给出十个数,在其下排填出对应的十个数, 要求下排每个数都是上排对应位置的数在下排出现的次数。上排的数:0,1,2,3,4,5,6,7,8,9解答:ZZ分析:这应该是一道智力题,下面是来自http://blog.csdn.net/wcyoot/article/details/6428305的思路分析,感觉不错,可以参考下:解题思路:关键是理解“要求下排每个数都是
2012-09-22 22:03:58 673
转载 找出数组中出现次数超过一半的数
问题:现在有一个数组,已知一个数出现的次数超过了一半,请用O(n)的复杂度的算法找出这个数。解析:这个题目类似于:微软的寻找发帖水王,思想:类似于擂台赛,设最多的数为X,每次删除两个不同的数(不管是否为最多的数X),则我们能保证剩下的数中X还是超过剩余总数的一半,一直循环这个过程,则最后一个肯定是X简单代码:int FindMost(const int* A,
2012-09-22 21:48:15 901
转载 说谎国与诚实国
两个人,一个一直说谎,一个一直说真话,他们来自说谎国和诚实国,想要只问一个人一个问题,来确定去说谎国的路?应该这样问,随便问一个人:“请问如果我问另一个人去说谎国怎么走,他会告诉我走哪条路呢?”说谎的人回答的是去诚实国的路诚实的人回答的是去诚实国的路故只要是向反方向走就行了
2012-09-22 20:52:51 3202
转载 找出字典中的兄弟单词
问题:给定一个单词A,如果通过交换单词中字母的顺序可以得到另外的单词B,那么定义B是A的兄弟单词。现在给定一个字典,用户输入一个单词,如何根据字典找出这个单词有多少个兄弟单词?解析:思路1:1. 关键时怎么定义一个key,使得兄弟单词有相同的key,不是兄弟的单词有不同的key。例如,将单词按字母从小到大重新排序后作为其key,比如bad的key为abd。2. 先做一个预处
2012-09-22 20:52:19 868
转载 代码段与程序段的区别
一个程序本质上都是由 bss段、data段、text段三个组成的。这样的概念,不知道最初来源于哪里的规定,但 在当前的计算机程序设计中是很重要的一个基本概念。而且在嵌入式系统的设计中也非常重要,牵涉到嵌入式系统运行时的内存大小分配,存储单元占用空间大小的 问题。在采用段式内存管理的架构中(比如intel的80x86系统),bss段(Block Started by Symbol segment
2012-09-21 23:23:18 3741
转载 七层协议模式
各层功能应用层(Application Layer) 与其它计算机进行通讯的一个应用,它是对应应用程序的通信服务的。例如,一个没有通信功能的字处理程序就不能执行通信的代码,从事字处理工作的程序员也不关心OSI的第7层。但是,如果添加了一个传输文件的选项,那么字处理器的程序员就需要实现OSI的第7层。示例:telnet,HTTP,FTP,NFS,SMTP等。表示层(Presentati
2012-09-21 22:54:09 1048
转载 脏数据简介
脏数据在临时更新(脏读)中产生。事务A更新了某个数据项X,但是由于某种原因,事务A出现了问题,于是要把A回滚。但是在回滚之前,另一个事务B读取了数据项X的值(A更新后),A回滚了事务,数据项恢复了原值。事务B读取的就是数据项X的就是一个“临时”的值,就是脏数据。
2012-09-21 22:19:22 974
转载 脏数据
很少有什么IT项目比数据整合更令人头疼的了。如果我们换个方式思考,就会发现有一件事是比数据整合更可怕的,那就是数据整合出现了问题。 有时候,这是由于用户出错或者恶意用户的蓄意破坏,导致不良数据堆积引起的问题。有时候原始数据是完好无损的,但是从一个系统/数据库转移到另一个系统/数据库的过程中丢失、被删截或者被修改了,也会造成麻烦。数据会过时,也会在你企业内部的人事斗争过程中不幸被流弹击中,
2012-09-21 22:12:15 2164
转载 编程断言概述
编程断言概述 编写代码时,我们总是会做出一些假设,断言就是用于在代码中捕捉这些假设。断言表示为一些布尔表达式,程序员相信在程序中的某个特定点该表达式值为真,可以在任何时候启用和禁用断言验证,因此可以在测试时启用断言而在部署时禁用断言。同样,程序投入运行后,最终用户在遇到问题时可以重新启用断言。 使用断言可以创建更稳定、品质更好且易于除错的代码。当需要在一个值为FALSE时
2012-09-21 21:02:48 711
转载 最常用的设计模式
最常用的设计模式设计模式通常是对于某一类的软件设计问题的可重用的解决方案,将设计模式引入软件设计和开发过程,其目的就在于要充分利用已有的软件开发经验。最常用的设计模式根据我的经验我把我经常用到的设计模式在这里做个总结,按照我的经验,它们的排序如下:1)单件模式、2)抽象工厂模式和工厂模式、3)适配器模式、4)装饰模式、5)观察者模式、6)外观模式 其他模式目前还很少用到。单件模式这
2012-09-21 08:22:41 653
转载 常用的设计模式
整个设计模式贯穿一个原理:面对接口编程,而不是面对实现.目标原则是:降低耦合,增强灵活性. 一些基本的设计模式Abstract Factory:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。(使用得非常频繁。)Adapter:将一个类的接口转换成客户希望的另外一个接口。A d a p t e r模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。Br
2012-09-21 08:02:13 494
转载 软件的开发流程
开发流程 第一步:需求调研分析 1相关系统分析员向用户初步了解需求,然后用word列出要开发的系统的大功能模块,每个大功能模块有哪些小功能模块,对于有些需求比较明确相关的界面时,在这一步里面可以初步定义好少量的界面。 2 系统分析员深入了解和分析需求,根据自己的经验和需求用WORD或相关的工具再做出一份文档系统的功能需求文档。这次的文档会清楚列出系统大致的大功能模块,大功能模
2012-09-21 07:58:39 667
转载 软件架构设计原则
1:单一职责原则(SRP):一个优良的系统设计,强调模块间保持低耦合、高内聚的关系,在面向对象设计中这条规则同样适用,所以面向对象的第一个设计原则就是:单一职责原则(SRP,Single Responsibility Principle)。 单一职责,强调的是职责的分离,在某种程度上对职责的理解,构成了不同类之间耦合关系的设计关键,因此单一职责原则或多或少成为设计过程中一个
2012-09-21 07:44:01 831
转载 字符过滤(2013华为校园招聘上机考试)
一个字符串,如aAbas__a;要求,过滤为每个字符只出现一次:aAbs_;#include#include#include#include#includevoid chstr(const char *Input,char *Out){ int m=strlen(Input); const char *p=Input; char *q=Out;
2012-09-20 09:04:58 679
转载 一些程序题(上机考)
1.找出一个数组中满足2^N的元素#include using namespace std;int find(int a[],int len);void main(){int a[]={1,2,3,5,7,8,16};int len=sizeof(a)/sizeof(int);cout}int find(int a[],int len) {
2012-09-20 09:00:02 801
转载 ip地址转化为整数 整数转化为IP地址
1.IP地址转换为一个整数intipstrtoint(const char *ip){int result = 0;int tmp = 0;int shift = 24;const char *pEnd = ip;const char *pStart = ip;while(*pEnd != '\0'){while(*pEnd != '.' &
2012-09-20 08:31:49 1074
转载 两个线程交替打印ABABAB
一个简单的办法:定义一个全局变量flag 初始化为TRUE;在线程a中判断flag是否为true 为true就打印 然后赋值为false在线程b中判断flag是否为FALSE 为FALSE就打印 b 然后赋值为true
2012-09-20 08:17:36 2708
转载 统计一串字符串中出现次数最多和次多的单词
//统计一串字符串中出现次数最多和次多的单词#include#include#includeint compare(const char * st1,const char * st2){ if (strcmp(st1,st2)==0) return 1; else return 0;}void PickWord(const char* p
2012-09-20 08:11:50 3025
转载 一条直线可以把一个平面分成两部分,两条直线可分成4部分,20条直线最多可分几部分?
1条直线最多将平面分成2个部分;2条直线最多将平面分成4个部分;3条直线最多将平面分成7个部分;现在添上第4条直线.它与前面的3条直线最多有3个交点,这3个交点将第4条直线分成4段,其中每一段将原来所在平面部分一分为二,所以4条直线最多将平面分成7+4=11个部分.完全类似地,5条直线最多将平面分成11+5=16个部分;6条直线最多将平面分成16+6=22个部分;7条直线最多将平面分成
2012-09-20 08:04:56 26956
转载 判断完全二叉树以及求二叉树深度的递归与非递归算法实现
/* 判断完全二叉树,依据定义:任何一个节点(除去叶子节点)有且仅有两个“孩子” */#include<stdlib.h>#define MAX_TREE_DEGREE 10typedef struct BTnode{//以二叉链表作为存储结构 char data; struct BTnode* lchild; str
2012-09-20 07:51:12 3194 2
转载 智力题
2009-09-25 20:58 面试智力题1、题目:有五个海盗,抢劫了一批黄金,共200两,五个海盗商议如何分配这笔不义之财。于是决定,按顺序,五个海盗轮流提出一个分配方案,所提出的分配方案要得到半数以上的海盗通过。比如说第一个海盗提出的分配方案没有得到半数以上的海盗通过,那么就将这个海盗抛下海(海盗就是够狠),然后由第二个海盗继续提方案,如果也没有得到半数以上的海盗通过,抛
2012-09-17 23:27:21 1045
转载 最大连续子数列和问题
问题描述:给定一串整数,找出其中和最大的连续子数列,包括子数列的位置和最大和。给定整数序列:{0, -3, 6, 8, -20, 21, 8, -9, 10, -1, 3, 6, 5}其中和最大的连续子数列为:{21, 8, -9, 10, -1, 3, 6, 5}【PS】如果序列里都是负数的话,本文的算法返回最大的负数。有一种思想是,如果所有输入数据都是负数,则最大连续子
2012-09-17 22:19:08 846
转载 哈佛结构与冯诺依曼结构的异同
内容特点 冯.诺依曼结构处理器具有以下几个特点: 1:必须有一个存储器;2:必须有一个控制器;3:必须有一个运算器,用于完成算术运算和逻辑运算;4:必须有输入设备和输出设备,用于进行人机通信。:另外,程序和数据统一存储并在程序控制下自动工作功能 根据冯·诺依曼体系结构构成的计算机,必须具有如下功能: 把需要的程序和数据送至计算机中。 必须具
2012-09-17 12:51:12 5204
转载 贪婪算法与计数排序
1.贪婪法:初学算法时便知道这是解决问题一种很好很简单的方法,听课后才发现它能解决的问题还真是多。解决这类问题的方法可概括为“步步为营”,即每一步的选择一定是最优的过后不能更改,这一点是与动态规划最大的区别,动态规划也是类似的自底向上的解决方法,但是其做每一次选择的时候可能会对前面的选择作出动态的调整,由于这种特性使用动态规划时采用递归是很常见甚至是必须的方法。贪婪法典型例题有邮局建设问题
2012-09-14 21:14:21 1200
转载 微软等面试100题答案V0.3版[第21-40题答案]
转自:v_JULY_v第21题2010年中兴面试题编程求解:输入两个整数 n 和 m,从数列1,2,3.......n 中 随意取几个数,使其和等于 m ,要求将其中所有的可能组合列出来.//此题与第14题差不多,在次不做过多解释。//July、本程序,经网友指出有误,但暂时没有想到解决的办法。见谅。2010/10/22。 updated:第20题首次勘误,请
2012-09-13 23:24:01 2954
转载 微软等面试100题答案V0.2版[第1-20题答案]
1.把二元查找树转变成排序的双向链表题目:输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。要求不能创建任何新的结点,只调整指针的指向。 10 / / 6 14/ / / /4 8 12 16 转换成双向链表4=6=8=10=12=14=16。首先我们定义的二元查找树 节点的数据结构如下:struct BSTre
2012-09-13 23:20:44 1410
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人