- 博客(64)
- 资源 (1)
- 收藏
- 关注
原创 "显微镜"下细看字符串常量初始化数组和指针
先看代码: 1: #include "stdafx.h" 2: #include 3: 4: using namespace std; 5: 6: int main(int argc, char** argv) 7: { 8: char * p = "ABCD"; 9: cha
2011-05-15 16:59:00 1562 2
原创 ios应用程序和应用程序委托
在UIApplication.h文件中,我们可以看到UIApplication和协议UIApplicationDelegate@interface UIApplication : UIResponder { id _delegate; //应用程序持有委托对象的引用,所有实现了UIApplicationDelegate协议的类都可以作为应用程序的委托对象 .....
2012-06-09 12:38:57 1782
原创 cocoa委托 简单理解
我们需要别人帮忙的时候,通常会说,委托你帮我办个事,这里的我们就是委托者(delegator),帮你办事的人被称为受委托者(delegate),在cocoa中,委托者被称为发布委托的对象,受委托者被称为委托对象(简称为委托,即委托作用的对象),发布委托的对象接收到消息后,自己不对消息进行处理,而是将消息转发给委托对象,由委托对象进行消息处理,所以委托一般是发布委托对象所发通知的观察者,委托作为观察
2012-05-30 18:52:38 1182
转载 谈谈sizeof这个运算符(union+struct+数组)
谈谈sizeof这个运算符我们在C编程的时候经常要用到sizeof,特别是在考试的时候,这往往是一个必考的知识点。下面,我就我在编程中的理解,浅谈一下sizeof的一些问题,让朋友们在遇到它的时候,知道它到底是怎么一回事。不过在讲之前,先熟悉一下这个公式。A % ( min(B,C) ) == 0 /*此公式不是我总结的,但文章是我根据这个公式写的*/A:变
2012-02-26 15:10:54 1249
原创 计算阶乘末尾0的个数
这个题目是编程之美上出现的,今年在几个公司笔试的时候都出现了这个题目,之前一直以为 直接用 N / 5 就是结果,昨天被土豆面试的时候,才发现自己理解错了,思路是这样的,0 的个数就是 1,,2,...,n中n个数中能够分解出5的因子的个数。之前以为 5,10,20,..., n/5 * 5 总共有 n/5个能够提出5的因子的,但是显然这里出现了问题,对于 25 这个数 = 5^2 能提
2011-11-30 18:05:29 1698 1
原创 Linux 每日小技巧
1.统计当前文件夹下所有的 C语言代码行数: find ./ -name '*\.[ch]' | xargs wc -l 解析: 用find命令按名字查找出当前文件夹下所有的 后缀为 *.c 、*.h 的文件,将所有的文件作为 xargs的输入参数,xargs
2011-10-17 10:55:26 577 1
原创 如何很好的回答进程与线程的区别
这个问题,貌似很简单,但要回答好,却不是那么简单。以下总结下怎么回答这个问题。step 1:解释进程和线程的概念 进程:a process is an instance of a computer program that is being executed.
2011-09-17 17:35:04 991 1
原创 2012年华为校园招聘上机试题(重庆地区)及答案解析
1. 数组比较(20分)问题描述:比较两个数组,要求从数组最后一个元素开始逐个元素向前比较,如果2个数组长度不等,则只比较较短长度数组个数元素。请编程实现上述比较,并返回比较中发现的不相等元素的个数比如:数组{1,3,5}和数组{77,21,1,3,5}按题述
2011-09-08 10:53:17 3298
原创 微软面试题 寻找数组中出现的唯一重复的一个数
// 找数组中唯一出现2次的数.cpp : Defines the entry point for the console application.///*假设你有一个用1001个整数组成的数组,这些整数是任意排列的,但是你知道所有的整数都在1到1000(包括1000
2011-09-02 11:27:10 6690 5
原创 百度面试题 c++ 实现引用类型与被引用的对象分离的一种方法
这个问题想了很久,一般情况下,一个引用变量一旦指定被引用变量后,是不能作为另一个变量的引用的,这也是为什么人家喜欢将引用与int * const p 等价的原因,即引用和指针常量有相同的性质,所以p不能指向其他对象,而且p必须在定义的时候初始化,这和引用性质一样。 其实通过
2011-09-01 20:29:05 1772 6
原创 从底层汇编理解 c++ 引用实现机制
引用类型到底是什么?它和指针有什么关系?它本身占用内存空间吗? 带着这些疑问,我们来进行分析。 先看代码:#include #include using namespace std;void main(){ int x = 1; i
2011-09-01 16:17:09 10556 11
原创 百度面试题 不改变正负数相对顺序将正负数分开
题目:假设一整型数组存在若干正数和负数,现在通过某种算法使得该数组的所有负数在正数的左边,且保证负数间和正数间元素相对位置不变。时空复杂度要求分别为:o(n),o(1)例如 -3 4 2 -1 7 3 -5 排序后 -3 -1 -5 4 2 7 3
2011-08-31 12:38:40 3262 7
原创 通过栈来实现队列
思路:这一类问题主要是考虑你的思路,算法本身应该并没有什么实际的应用(鄙人见少视浅,如果有具体的应用的地方,欢迎各位指出),其实这类问题之前也遇到过,如某概率产生器以p和1-p产生A,B,怎么构造出0.5的概率产生器。p和1-p怎么才能产生相等的关系呢,其实,我们知道p*(1-p
2011-08-21 17:44:11 755
原创 倒插法实现单链表翻转
单链表的翻转是面试中经常出现的面试题,下面是采用倒插法实现的代码:struct node* reverse(struct node *head){ struct node *pReversedHead, *qUnReversedHead, *rTmp;
2011-08-20 09:43:14 1986
转载 C语言中的多维数组
2006-12-27 17:53 439人阅读 评论(1)收藏 举报这个系列的文章主要是讲一些C语言的语法中比较模糊的问题,和一些常用的语言技巧.首先声明的是:对于C语言语法和语言技巧的讲解,我将以源码的形式给出,这些 都是C语言中比较基础,实用而且是重要
2011-08-05 16:31:53 1109
转载 一维或多维数组作为函数参数的问题
C语言中的多维数组是不能完全做为参数来使用的,因为它是受限制的:/*=====================================本程序是为了学习而使用的的测试程序,用来说明C语言中的一些学习误区,对C语言的某些知识作详细的讲解==========
2011-08-05 16:23:22 1025
转载 指针数组
不知道你是否用到了指针数组,C语言中使用指针数组是一种常用的编程技巧/*=====================================本程序是为了学习而使用的的测试程序,用来说明C语言中的一些学习误区,对C语言的某些知识作详细的讲解========
2011-08-05 16:13:35 517
原创 守护进程 wiki
Daemon In Unix and othercomputer multitasking operating systems, a daemon ( /ˈdeɪmən/ or /ˈdiːmən/)[1] is a computer progra
2011-08-04 23:39:12 664
转载 高位字节优先 低位字节优先
高位字节优先 低位字节优先2011-4-5 - Posted inC/C++ 自第一台计算机诞生,其最小存储单元就被永久的定格了——一个由8个比特(bit)组成的称为字节(byte)的单位。计算机的所有内存以字节数组的方式进行编址。 当一个逻辑上长于一个字节的整形数据放置在内存中时(比如16位,32位,和64位的整数),计算机设计者需要考虑这些
2011-07-22 23:45:35 2291
原创 Bag of words model (词袋模型)
The bag-of-words model is a simplifying assumption used in natural language processing and information retrieval. In this model, a text (such as a sentence or a document) is represented as an unord
2011-06-29 21:44:00 21505 3
转载 Epoll模型
Linux 2.6内核中提高网络I/O性能的新方法-epoll I/O多路复用技术在比较多的TCP网络服务器中有使用,即比较多的用到select函数。1、为什么select落后 首先,在Linux内核中,select所用到的FD_SET是有限的,即内核中有个参数__FD_SETSIZE定义了每个FD_SET的句柄个数,在我用的2.6.15-25-386内
2011-06-27 21:51:00 900
转载 新浪微博笔试题:删除字符串中多余的空格
给定字符串,删除开始和结尾处的空格,并将中间的多个连续的空格合并成一个。 比如 “ I like football ” 会变成 "I like football"函数接口为:void RemoveExtraSpace(char* str);代码如下:void RemoveExtraSpace(char* str){ if(st
2011-06-27 21:35:00 1480
转载 C99中的restrict关键字
今天读APUE,看到某个函数原型的声明: int stat ( const char * restrict pathname,struct stat * restrict buf);这里的restrict让我觉得有些疑惑,一查原来是C99中增加的关键字那么restrict的意义是什么呢?O
2011-06-27 14:18:00 926
原创 glibc之socket网络编程
////////////////////////////////////////////////////////////////////////////////// ///include/bits/sockaddr.h 1 /* Definition of `struct sockaddr_* common members. Generic/4.2 BSD version*/
2011-06-27 13:33:00 2211 1
原创 Fedora 键盘鼠标输入没反应及解决办法
Fedora 安装以后,在使用过程中键盘鼠标输入没反应,本文提供了问题的解决办法,由于在Fedora使用过程中本人碰到过键盘鼠标输入没反应,这里提供给大家我自己解决键盘鼠标输入没反应的方法。 最近对fedora进行了升级(Cambridge)。从fc10.i386到fc10.686,突然系统卡住了,于是我强制关机,结果重启之后,启动X后鼠标无法移动,键盘也无法操作
2011-06-26 23:17:00 2824
原创 二维数组解析
当我们写下int a[3][4]; 的时候,我不知道有多少学C语言的具体明白这个数组背后隐藏的东西。 a代表什么,&a代表什么,a[0]代表什么等等。 我们暂且放弃我们脑海中C语言老师传授给我们的那些教条概念:“a是二维数组名,表示二维数组第一个元素的地址...” 假设我们根本就没有接触过二维数组。当然我们至少得知道一维数组的知识。 我们采用从右到左的识别变量
2011-06-25 21:37:00 1800
原创 glibc之字节序
我们知道,字节序分为big-endian 和 little-endian ,采用大端的机器有IBM体系结构,相反intel体系结构主机则采用小端。另外我们需要知道的是,在网络编程中,字节序为大端,所以我们要实现主机字节序到网络字节序的转换。这里有一个需要说明的是,为什么网络字节序需要采用大端。主要是大端有一个特点,我们书写某个数的16进制形式(从左至右:高字节->低字节)和内存中存储形式一样
2011-06-25 16:03:00 4096 2
原创 glibc之数据类型定义分析
本文主要涉及到的库文件位于/usr/include/bits目录下,文件包括wordsize.h,types.h,typesizes.h 等文件。 wordsize.h中主要定义了当前机器的字大小。内容如下: ... #define __WORDSIZE 32 ... 这里的宏应该是安装系统的时候,确定的机器字的大小,然后才生成对应的宏。这个宏会在type
2011-06-24 13:16:00 2195
原创 #ifndef __cplusplus的意思?
今天师弟问我C语言下怎么没有max函数,我记得是有max宏的,直接写这个宏的话,编译会出现没有定义的错误,问题应该是没有包含该宏定义的头文件,头文件为stdlib.h,奇怪的是包含该头文件后,编译还是出错,我所有的开发工具是VC6.0.我定位到该宏所在的头文件代码,代码如下: 1: #ifndef __cplusplus 2: #define max(a,b)
2011-06-22 20:49:00 4143
转载 fork调用的内核实现
fork调用的内核实现 进程和线程是我们平时接触的比较多的两个概念,特别是线程机制,很多语言原生就支持它。前段时间主要演示了下linux下进程和线程的创建,这篇文章对其创建的过程做一个简单的分析,错误之处,还请您斧正。 在linux下,线程其实就是一个轻量级的进程,所以其实现都是通过调用给do_fork函数传入不同的参数实现的。先来看下这几个函数:Code h
2011-06-15 16:07:00 767
转载 Linux进程状态解析
Linux是一个多用户,多任务的系统,可以同时运行多个用户的多个程序,就必然会产生很多的进程,而每个进程会有 不同的状态。Linux进程状态:R (TASK_RUNNING),可执行状态。只有在该状态的进程才可能在CPU上运行。而同一时刻可能有多个进程处于可执行状态,这些进程的task_struct结构(进程控制块)被放入对应CPU的可执行队列中(一个进程最多只能出现在一个
2011-06-15 11:50:00 719
原创 关系模式及其范式
关系的描述称为关系模式(Relation Schema)。一个关系模式应当是一个五元组。它可以形式化地表示为:R(U, D, DOM, F)。其中R为关系名,U为组成该关系的属性名集合,D为属性组U中属性所来自的域,DOM为属性向域的映象集合,F为属性间数据的依赖关系集合。 关系模式通常可以简记为:R(A1, A2, …, An)。其中R为关系名,A1, A2, …, An为属性名。而域名及
2011-06-15 08:46:00 5091
转载 统计一个文件中特定字符的个数
统计一个文件中特定字符的个数 统计一个文件中某个字符串的个数,其实就是在在一块沙地里面找石头,有的人看到石头以后,在上面做个标记(grep),然后记住自己做了多少个标记;有的人看到石头以后,把它挖
2011-06-14 19:38:00 3575
转载 技巧:如何有效率的操作Linux命令行
bash有两种输入模式vi模式和emacs模式,其中emacs是默认模式,操作起来也比vi模式要快捷.可以通过 set -o vi和set -o emacs来转换. 1.在命令历史中查找 强烈推荐使用 Ctrl r, 这个键组合是反向增量查找消息历史.很好用. 比如你很久以前输入过某个命令如. gcc -c -DKKT- Dnnn 等等,一长串, 用上下方向键来
2011-06-14 14:29:00 561
原创 des算法代码:内存移动算法代码
对于有k个元素的数组int a[k]={.......};写一个高效算法将数组内容循环左移m位, 比如:int a[6]={1,2,3,4,5,6},循环左移3位后得到结果{4,5,6,1,2,3}. 要求: 1.不允许另外申请数组空间,但可以申请少许变量; 2.不允许采用每次左移。 最直观的想法,就是从第一个元素开始,
2011-06-10 21:06:00 892
转载 关于BSS段与DATA段的区别
分类: 嵌入式驱动开发 通过小代码体验程序中BSS段和DATA的差异BSS(Block Started by Symbol)用来存储未初始化的全局变量和静态变量,全局变量或静态变量值为0或NULL(对于指针变量而言)的通常会被编译器认为未初始化,属于静态内存分配区,不会占用程序文件空间,不存储这些变量在外存上,但是还是会占用一部分空间,这些空间用来标识未
2011-06-08 17:45:00 3255 1
原创 VC软件开发规范(参数、返回值以及函数内部实现规则)
4.1 参数的规则 ☆ 【规则4.1-1】 参数的书写要完整,不要贪图省事只写参数的类型而省略参数名字,如果函数没有参数,则用void填充;例如: void SetValue(int nWidth, int nHeight); // 良好的风格 void SetValue(int, int); // 不良的风格 float GetValue(void); // 良好的风格 float GetValue();
2011-05-30 12:01:00 2026 2
转载 简说GLIBC strncpy实现
Tag:语言探索<br />版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明<br />http://bigwhite.blogbus.com/logs/37947818.html<br /><br />比较以下两组代码,你认为哪组运行的更快些呢?<br />Example1:<br /> int n = 100;<br /> int n4 = n >> 2;<br /> int i = 0;<br /><br /> int
2011-05-29 20:37:00 1256 1
转载 GLIBC strlen源代码分析
GLIBC strlen源代码分析 - [语言探索]Tag:语言探索<br />版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明<br />http://bigwhite.blogbus.com/logs/37753065.html<br /><br />直接操作C标准库提供的字符串操作函数是有一定风险的,稍有不慎就会导致内存问题。这周用业余时间写了一个小型的安全字符串操作库,但是测试之后才发现自己的实现有很大的性能缺陷。<br /><br />在Solaris上初步做了一个简单的性能比对,
2011-05-29 20:21:00 932
原创 bug记事:STL map 引发的血案
1: int pairwiseOneSeqIndex = pc->pairwiseOne[i]; 2: int pairwiseTwoSeqIndex = pc->pairwiseTwo[i]; 3: 4: int pairwiseOneBetaIndex = MapSeqIndexToBetaIndex[pairwiseOneSeqIndex]; 5: int pairwiseTwoBetaIndex =
2011-05-28 09:51:00 978
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人