Sparks Fly – Taylor Swift

继续阅读 »

Ubuntu 12.04 LTS正式版发布

经过6个月的开发周期,ubuntu 12.04 LTS (Precise Pangolin)终于发布了,这个版本是一个长期支持版本,大家都非常期待,而且还包括了很多新功能和技术。

官方下载地址:
http://releases.ubuntu.com/precise/
中科大镜像站点:
http://mirrors.ustc.edu.cn/ubuntu-releases/12.04/

Ubuntu 的官方中文广告——选择Ubuntu的理由。欣赏一下特地献给中文Ubuntu用户的视频。

继续阅读 »

C++十大低级错误

1、数组下标访问越界
2、使用野指针
3、内存拷贝忽略字符串结尾标志’\0’
4、判断无符号数是否小于0
5、循环变量数据类型太小
6、循环体内改写循环变量
7、混淆”==”与”=”
8、函数局部变量或参数过大,堆栈溢出
9、数据类型不一致,变量或参数赋值出错
10、分支流程未释放动态申请的内存

代码案例:
1、数组下标访问越界
(1)数组下标根据计算得出

i = a – b ;
array[i] = 0 ; //使用前应该检查i的合法性

(2)数组下标通过函数得出

void main()
{
int i, b[10];1
getIndex(&i);
b[i] = 0; //使用前应该检查i的合法性
}

(3)数组下标是循环变量

void main()
{
int i, max, b[10];
getMax(&max);
for (i = 0; i < max; i++) //使用前应该检查max的合法性
{
b[i] = 0;
}
}

继续阅读 »

PHP中使用MySQL存储SESSION会话

1、更改php.ini文件。

由于php默认保存session的方式是files所以我们要改变它。即:找到“session.save_handler = files”将“files”改为“User”。把session的模式改成用户自定义的。此步也可以在php脚本中使用ini_set函数设定。

2、建立数据库表:

CREATE TABLE `sessions` (
`session` char(32) NOT NULL,
`session_expires` int(11) unsigned NOT NULL,
`session_data` text NOT NULL,
PRIMARY KEY (`session`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

3、建立session_mysql.php文件。

继续阅读 »

几本C和C++的书籍

The C Programming Language
《C程序设计语言》本书原著为C语言的设计者之一Dennis M.Ritchie和著名的计算机科学家Brian W.Kernighan合著的一本介绍C语言的权威经典著作。人们熟知的“hello,World”程序就是由本书首次引入的,现在,这一程序已经成为所有程序设计语言入门的第一课。原著第2版根据1987年制定的ANSIC标准做了适当的修订,引入了最新的语言形式,并增加了新的示例,通过简洁的描述、典型的示例,作者全面、系统、准确地讲述了C语言的各个特性以及程序设计的基本方法。对于计算机从业人员来说,本书是一本必读的程序设计语言方面的参考书。
下载地址:http://dl.dbank.com/c01iuxrl4i

C Primer Plus(第五版)中文版
本书全面讲述了C语言编程的相关概念和知识。 全书共17章。第1.2章学习C语言编程所需的预备知识。第3到15章介绍了C语言的相关知识,包括数据类型、格式化输入输出、运算符、表达式、流程控制语句、函数、数组和指针、字符串操作、内存管理、位操作等等,知识内容都针对C99标准;另外,第10章强化了对指针的讨论,第12章引入了动态内存分配的概念,这些内容更加适合读者的需求。第16章和第17章讨论了C预处理器和C库函数、高级数据表示(数据结构)方面的内容。附录给出了各章后面复习题、编程练习的答案和丰富的C编程参考资料。
下载地址:http://dl.dbank.com/c0uoubl3fo

Expert C Programming
《C专家编程》展示了最优秀的C程序员所使用的编码技巧,并专门开辟了一章对C++的基础知识进行了介绍。书中C的历史、语言特性、声明、数组、指针、链接、运行时、内存以及如何进一步学习C++等问题进行了细致的讲解和深入的分析。全书撷取几十几个实例进行讲解,对C程序员具有非常高的实用价值。
下载地址:http://dl.dbank.com/c05zhn60lh

继续阅读 »

C语言中的回调函数

对指针的应用是C语言编程的精髓所在,而回调函数就是C语言里面对函数指针的高级应用。简而言之,回调函数是一个通过函数指针调用的函数。如果你把函数指针(函数的入口地址)传递给另一个函数,当这个函数指针被用来调用它所指向的函数时,我们就说这个函数是回调函数。

这里针对的是普通的函数,不包括完全依赖于不同语法和语义规则的类成员函数。

1.1、声明函数指针
回调函数是一个程序员不能显式调用的函数;通过将回调函数的地址传给调用者从而实现调用。要实现回调,必须首先定义函数指针。
请看下面的例子:

void f();// 函数原型

上面的语句声明了一个函数,没有输入参数并返回void。那么函数指针的声明方法如下:

void (*) ();

左边圆括弧中的星号是函数指针声明的关键。另外两个元素是函数的返回类型(void)和由边圆括弧中的入口参数(本例中参数是空)。注意本例中还没有创建指针变量,只是声明了变量类型。目前可以用这个变量类型来创建类型定义名及用sizeof表达式获得函数指针的大小:

// 获得函数指针的大小
unsigned psize = sizeof (void (*) ());

// 为函数指针声明类型定义
typedef void (*pfv) ();

pfv是一个函数指针,它指向的函数没有输入参数,返回类行为void。使用这个类型定义名可以隐藏复杂的函数指针语法。

指针变量应该有一个变量名:

void (*p) (); //p是指向某函数的指针

p是指向某函数的指针,该函数无输入参数,返回值的类型为void。左边圆括弧里星号后的就是指针变量名。有了指针变量便可以赋值,值的内容是署名匹配的函数名和返回类型。例如:

void func()
{
/* do something */
}
p = func;

p的赋值可以不同,但一定要是函数的地址,并且署名和返回类型相同。

继续阅读 »

C++中的虚函数及虚函数表

C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术 可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。

1、虚函数

定义: 虚函数必须是类的非静态成员函数(且非构造函数),其访问权限是public(可以定义为private or proteceted,但是对于多态来说,没有意义。),在基类的类定义中定义虚函数的一般形式:

virtual 函数返回值类型 虚函数名(形参表)

{ 函数体 }

虚函数的作用是实现动态联编,也就是在程序的运行阶段动态地选择合适的成员函数,在定义了虚函数后,可以在基类的派生类中对虚函数重新定义(形式也 是:virtual 函数返回值类型 虚函数名(形参表){ 函数体 }),在派生类中重新定义的函数应与虚函数具有相同的形参个数和形参类型。以实现统一的接口,不同定义过程。如果在派生类中没有对虚函数重新定义,则它继承其基类的虚函数。当程序发现虚函数名前的关键字virtual后,会自动将其作为动态联编处理,即在程序运行时动态地选择合适的成员函数。

实现动态联编需要三个条件:

1、 必须把需要动态联编的行为定义为类的公共属性的虚函数。
2、 类之间存在子类型关系,一般表现为一个类从另一个类公有派生而来。
3、 必须先使用基类指针指向子类型的对象,然后直接或者间接使用基类指针调用虚函数。

继续阅读 »

C语言中堆和栈的区别

1、预备知识——程序的内存分配
一个由C/C++编译的程序占用的内存分为以下几个部分
1.1、栈区(stack)——由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。
1.2、堆区(heap)——一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。
1.3、全局区(静态区)(static)——全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域(RW Data),未初始化的全局变量和未初始化的静态变量在相邻的另一块区域(BSS)。程序结束后由系统释放。
1.4、文字常量区——只读数据区(RO Data),常量字符串就是放在这里的,程序结束后由系统释放。
1.5、程序代码区——存放函数体的二进制代码。

2、例子程序
这是一个前辈写的,非常详细

//main.cpp
int a = 0; //全局初始化区
char *p1; //全局未初始化区
main()
{
int b; //栈
char s[] = "abc"; //栈
char *p2; //栈
char *p3 = "123456"; //123456\0在常量区,p3在栈上。
static int c = 0; //全局(静态)初始化区
p1 = (char *)malloc(10);
p2 = (char *)malloc(20); //分配得来得10和20字节的区域就在堆区。
strcpy(p1, "123456"); //123456\0放在常量区,编译器可能会将它与p3所指向的"123456"优化成一个地方。
}

继续阅读 »

Windows 8 客户预览版简体中文ISO下载

Windows 8 Consumer Preview 简体中文(x64)下载

Sha 1 hash: DF69B851F9A81DECBB16648CC452461894416EB0
Product Key: DNJXJ-7XBW8-2378T-X22TX-BKG7J
下载地址:Download (3.4G)

Windows 8 Consumer Preview 简体中文(x86)下载

Sha 1 hash: E29A2072745A48C14A1C2E5A61F5230841BEDB45
Product Key: DNJXJ-7XBW8-2378T-X22TX-BKG7J
下载地址:Download (2.6G)

系统要求

Windows 8系统的配置需求,将不会高于windows7。
——1GHz或更快的32位(x86)或64位(x64)处理器
——1GB RAM(32位)/2GB内存(64位)
——16GB可用磁盘空间(32位)/20GB(64位)
——支持DirectX 9图形处理器的WDDM(Windows显示驱动模型)1.0或更高版本驱动程序

HTC G12最新官方RUU下载及刷机方法

[国行]:Android 版本:2.3.5
HTC Sense版本:3.0
软件版本:2.13.1400.4
基带版本:20.4801.30.0822U_3822.10.08.04_M
下载地址:http://115.com/file/dpxhj8ea

[亚太]:Android 版本:2.3.5
HTC Sense版本:3.0
软件版本:2.15.707.2
基带版本:20.4801.30.0822U_3822.10.08.04_M
下载地址:http://115.com/file/dno962rk

[港版]:Android 版本:2.3.5
HTC Sense版本:3.0
软件版本:2.15.832.5
基带版本:20.4801.30.0822U_3822.10.08.04_M
下载地址:http://115.com/file/dnoe3fk9

继续阅读 »

JomePlus.com XML-Sitemap JomePlus.com Baidu-Sitemap XML JomePlus.com Baidu-Sitemap Html