- 博客(95)
- 收藏
- 关注
原创 c语言 全局(静态)和局部数组初始化
全局和静态数组根据规范要求初始化为0,但是局部数组如果不显示初始化,它的值不确定。code: result:
2013-11-14 17:44:09 6822
原创 接口类使用
假设有接口类Icommand,不同的模块有不同的接口:Acommand, Bcommand,Ccommand类均继承自Icommand而对于真正的使用场合,如下:某一场合需要Acommand:Icommand *Ic_pa = cmdFactory->Create("A");某一场合需要Bcommand:Icommand *Ic_pb = cmdFactory->Create("B")
2012-12-16 14:23:40 666
原创 android back/home 键事件
@Override public boolean onKeyDown( int keyCode, KeyEvent event ) { // TODO Auto-generated method stub switch (keyCode) { case KeyEvent.KEYCODE_BACK: break ;
2012-12-13 09:38:43 634
原创 USIM Application session 激活过程
USIM Application session的激活是选择相应的DF,然后读取session所需的ef。ME UICC--------SELECT AID------->-------- READ EFs -------->.....-------- STATUS -------->
2012-12-09 19:06:47 2696 3
转载 unicode 编码表
[zz]http://jlqzs.blog.163.com/blog/static/2125298320070101826277/unicode编码表1 unicode编码表 Unicode目前普遍采用的是UCS-2,它用两个字节来编码一个字符, 比如汉字"经"的编码是0x7ECF,注意字符编码一般用十六进制来 表示,为了与十进制区分,十六进制以0x开头,0x7E
2012-11-26 17:31:39 14073
转载 BSC,MSC,HLR的作用
BSC,MSC,HLR分别的作用:MSC交换设备,程控交换机;BSC是基站控制器,用来控制BTS;HLR是本地位置寄存器,可以理解成一个数据库,存放本地移动用户的一些数据。BSC:基站控制器,它与BTS基站收发机构成基站子 系统。MSC:移动交换中心,它是网络的核心,提供交换功能并且面对下列功能实体:BSS、HLR、VLR、AUC、EIR、OMC和固定网,把移动用户与固定网用户
2012-04-01 10:13:08 9572
转载 RSA 算法
一、RSA算法 :首先: 找出三个数, p, q, r, 其中 p, q 是两个相异的质数,r 是与 (p-1)(q-1) 互质的数...... p, q, r 这三个数便是 private key .接著: 找出 m, 使得 rm == 1 mod (p-1)(q-1).....这个 m 一定存在, 因为 r 与 (p-1)(q-1) 互质, 用辗转相除法就可以得到了.....
2012-04-01 09:29:48 1161
原创 c语言中的数组与指针
在c语言中,只有在函数定义的形式参数中,数组和指针是一致的。下面一段是c expert中的代码,我另外又加了一些。char ga[] = "abcdefghijklm";void my_array_func(char ca[10]){ printf(" value of ca = %#x \n", ca); printf(" addr of array param = %#x \n"
2011-12-06 14:22:16 638 1
原创 反思程序中的代码和数据
在程序设计中,不要过分区分代码和数据,两者在一定情况下可以转换。很多著名的黑客软件,巧妙使用代码植入到数据区,然后运行自己的shell,操纵用户电脑。若以第三者来看,代码区和数据区说白了就是一系列的二进制,取决于你是怎么去看待这些个二进制数据。早期的internet蠕虫病毒,其繁殖的途径之一就是通过脆弱的finger防护进程。罪魁祸首是该进程中使用标准I/O库函数gets(), 它不检查缓冲区
2011-12-05 14:11:40 678 1
原创 c语言中的函数覆盖
在c程序设计中,不要让程序中的任何符号成为全局的,除非有意把他们作为程序的接口之一。如果不这样,就会因此产生重大bug,并且很难调试和发现。当编译器注意到库函数被另外一个定义覆盖时,它通常不会给出错误的信息。C语言的设计哲学——程序员所做的都是对的。
2011-12-05 10:13:11 3023
原创 相邻的字符串常量自动合并
在ANSI C中,相邻的字符串常量将被自动合并成一个字符串。除了最后一个字符串外,其余每个字符串末尾的'\0'字符会被自动删除(编译器的行为)#include #include int main(int argc, char *argv[]){ char* s1 = "hello""hello"; char* s2 = "hello" "hello"; char* s3
2011-12-04 12:51:00 1040
原创 crc16
#include using namespace std;// x^16+x^12+x^5+1unsigned short crc16(unsigned char *ptr, int len){ unsigned short CRC = 0xFFFF; // vc++ sizeof(unsigned short) == 2 unsigned char j, tmp =
2011-11-26 14:06:51 721
原创 数组边界引起的死循环
int main(int argc, char* argv[]){ int i, a[10]; for (i = 1; i<=10; i++) a[i] = 0; return 0;}以上代码为死循环,如栈向低地址成长,那么a[10]实际为i,于是i赋值为0,进入死循环
2011-11-16 15:24:00 507
原创 词法分析中的贪心
C语言对多字符识别时,采用贪心,使用规则如下:每一个符号应该包含更多的字符。也就是说,编译器将程序分解成符号的方法是,从左到右一个字符一个字符地读入,如果该字符可能组成一个符号,那么再读入下一个字符,判断已经读入的两个字符组成的字符串是否有可能是一个符号的组成部分;如果可能,继续读入下一个字符,重复上述判断,直到读入的字符组成的字符串以不再可能组成一个有意义的符号。这个处理策略有事被称为“
2011-11-16 14:09:20 466
原创 0长度数组问题
标准c/c++不支持0长度数组,GNU支持struct node{ char a; short b; int c; char* d; char e[0]; }; int main(int argc, char* argv[]) { printf("%d\n", sizeof(struct node)); system("pause
2011-11-08 14:20:45 585
原创 some problems
const int x = 5;int main{ int x[x]; int y = sizeof(x)/sizeof(int);}display: 5int x = 5;int main(int argc, char* argv[]){ int x = x; cout<<x<<endl; return 0;}display:uninil
2011-10-25 14:38:38 651 2
原创 状态机
从倒水问题中,深刻理解了状态机设计的重要性,包括状态机抽象和状态机转化关系的设计。倒水问题,定义好状态和状态转化关系,剪枝去掉不可能的状态和重复的状态,用一片内存空间来保存状态。
2011-10-16 20:01:10 489
原创 c++ const 重载 和 引用
class A{public: void foo(int &a) { cout<<"1"<<endl; } void foo(int a) { cout<<"2"<<endl; } const int fun() const// overload {
2011-10-13 21:57:53 679
转载 优先级倒挂
优先级倒挂是指一个低优先级任务持有一个被高优先级认为所需要的共享资源。这样高优先级任务因资源缺乏一直处于受阻状态,一直到低优先级任务释放资源为止。这样实际上造成了两个任务优先级的倒挂。如果此时有其他优先级介于两者之间的任务,并且其不需要这个共享资源,则该中级优先级的进程将获得CP
2011-10-12 20:35:33 1123
原创 Fibonacci数列的递归优化
// right = F(n-2) , return value = F(n-1)int fibonacci_R(int n, int& right){ if(2 == n) { right = 1; return 1; } int t = 0; righ
2011-10-12 14:55:15 562
原创 将有序数组转化为二叉树
using namespace std;struct node{ int val; struct node* left; struct node* right; node(int v=0) { val = v; left = 0; right = 0;
2011-10-11 21:45:13 1554
原创 如何维护一个中位数
设计一个数据结构,包括两个函数,插入数据和获得中位数。利用大根堆和小根堆,其中大根堆维护较小的一半数据,小根堆维护较大的一半数据。然后根据相应的情况,对两个堆做相应的堆化操作,以满足两个堆中元素数目一致。时间复杂度O(lgn)extension:设计一个堆
2011-10-11 21:29:38 1059
转载 写宏定义:得到一个field在结构体(struct type)中的偏移量
#define OFFSETOF(type, field) ((size_t)&(((type *)0)->field))(type *)0:把0地址当成type类型的指针。((type *)0)->field:对应域的变量。&((type *)0)->field:
2011-10-10 13:42:28 978
原创 已知一个序列seq=[a,b,....,z,aa,ab,...,zz,aaa,aab,....],求任意一个字符串s=[a-z]+在seq中出现的位置
// 26进制,不过有缺点,需要大数处理#include using namespace std;long pow(long x, long y){ long ret = 1; while(y>0) { ret = ret*x; --y; } re
2011-10-08 15:05:40 2273
原创 查找字符串中最长的连续数字子串
#include using namespace std;int max_num_str(char* pstr, char* output){ if ( *pstr == '\0') { *output = '\0'; return 0; } char
2011-10-08 14:46:53 1795
原创 查找字符串中第一个出现一次的字符
#include using namespace std;// look up the first character in the string.// using hash table to reduce the time used.char look_up(con
2011-10-08 14:15:09 618
原创 寻找两个满足条件的数
题目:输入一个数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。要求时间复杂度是O(n)。如果有多对数字的和等于输入的数字,输出任意一对即可。例如输入数组1、2、4、7、11、15和数字15。由于4+11=15,因此输出4和11。ans:用位图
2011-10-07 22:00:02 405
转载 排序N个比N^7小的数,要求的算法是O(n)
采用基数排序,用10个桶(vector),每一个桶用队列表示(queue),分别代表0-9,然后依次从低位到高位开始将要排序的数倒入桶中,然后再顺序取出来,直到排序完成。若有5个数,12,4,5,130,28第一次(个位):0: 13012: 12
2011-10-04 20:54:33 982
原创 继承的内存分布和代价
class B{private: int val; char c1; char c2; char c3;};class A1{private: int val; char c1;};class A2: public A1{private: c
2011-10-04 16:04:47 347
原创 static data members
在c++中,对于static data members,通过一个指针和通过一个对象来存取member的效果是一样的,而且这是唯一一样的situation。
2011-10-04 15:37:37 471
原创 内存分布
struct test{int a;int b;int c;};int main(int argc, char* argv[]){ test x; test y; printf("%x, %x, %x\n", &x.a, &x.b, &
2011-10-04 15:12:39 316
原创 inline关键字
inline int add(int a,int b)1.参数直接替换形参, int a = 1; int b = 2; int c = add(a, b);2.直接才编译过程中,能够判断出结果的,直接给出结果, int c = add(1,2);3.避免
2011-10-03 22:21:48 323
原创 不相关成员函数的调用
#include using namespace std;class base{public: base(): a(0){} ~base(){}; void show() { cout << "th
2011-10-03 21:08:22 349
原创 C与C++的相互调用问题
#ifdef __cplusplusextern "C" {#endif int add(int a, int b); #ifdef __cplusplus}#endif int add(int a, int b){ return a+b;
2011-10-03 20:51:53 339
原创 dijkstra算法
//Dijkstra 算法的时间复杂度为O(n^2) 空间复杂度取决于存储方式,邻接矩阵为O(n^2)//非负权, 有向#include #include using namespace std;const int max_vex = 100;const in
2011-10-03 20:29:44 1792
原创 字符存在
当有一个字符串str1,另一个字符串str2,要判断str2中的字符是否在str1中存在,可以使用hash表判断,O(m+n)。也可以将每一个字符一次赋予一个素数, 从2开始,然后将这些素数相乘。然后遍历第二个字符串,用素数去除前一次的乘积,若无余数,就存在,反之则不存在。
2011-10-03 12:24:07 363
原创 判断一个点是否在一个三角形内(二维)
设有三角形abc和点p,需要判断p是否在三角形abc内部只需要用叉乘进行判断,abXap, apXac,pbXpc是否都与abXac平行。另外面积法也能判断,判断三角形abp,acp,bcp的面积和是否等于三角形abc的面积。其中,求面积可以用叉乘来实现。
2011-09-29 21:48:24 593
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人