以图明志

计算机数学与基础

不要以为写写代码就是计算机科学

重拾你理解偏颇的计算机科学
我一直认为计算机科学与技术这门专业,在本科阶段是不可能切分成计算机科学和计算机技术的,因为计算机科学需要相当多的实践,而实践需要技术;每一个人(包括非计算机专业),掌握简单的计算机技术都很容易(包括程序设计),但计算机专业的优势就在于,我们掌握许多其他专业并不“深究”的东西,例如,算法,体系结构,等等。

C/C++编程语言

C语言的回归

唯一真正重要的部分是设计
语言之争永远是火药味十足的话题。尤其是 C 和 C++ 的目标市场又有很高的重合性,C++ 程序员往往对C++ 其有着宗教般的虔诚。我想,今天我在自己的 blog 上继续这个战争,一定会换来更多的骂名。只不过这次 Linus 几句话真是说到我心坎里去了,不喊出来会憋坏的。

编程思想

独到见解,编程语言的神吐槽

旋风式的编程语言简介
这是我写的旋风式的编程语言简介—我本来为亚马逊开发者杂志本月的期刊写的,但是发现我写的东西没法…见人。我的旋风式简介会讲C,C++,Lisp,Java,Perl,(我们在亚马逊用到的所有语言),Ruby (我就是喜欢),和Python,把Python加进来是因为—好吧,你看了就知道了,现在我可不说。

PHP服务器脚本

[专题] PHP CodeBase: 获取远程图片的体积大小

CURL的使用
有时候,我们需要知道远程图片的体积大小,那么PHP如何可以做到呢?这里介绍一个函数,函数的思路是,先CURL获取图片到缓冲区,然后正则获取图片的Content-Length信息就OK了。

PHP服务器脚本

[专题] PHP CodeBase: 求最近一个周一和上周一的日期

时间戳的运算
有时候,会有这么一些需求:在每周的周一会更新一些内容,那么我要获取本周周一的数据,或者上周周一的数据,那么就需要知道本周或上周周一的日期了。对于程序来说,需求就变成了:这周的周一是几号?或者说,上周一是几号?

PHP服务器脚本

[专题] PHP CodeBase: 将时间显示为“刚刚”“n分钟/小时前”等

PHP的时间轴开发
在很多场合为了显示出信息的及时性,一般会将时间显示成“刚刚”,“5分钟前”,“3小时前”等,而不是直接将时间打印出来。比如微博,SNS类应用就最长用到这个功能。而一般存储在数据库中的时间格式为 Unix时间戳,所以这里记录一个将 Unix时间戳 转化为时间轴显示的PHP函数。

PHP服务器脚本

[专题] PHP CodeBase: 过滤XSS攻击的PHP函数

一个通用的过滤函数
关于XSS攻击,如果不是很清楚,可以先看看以下三篇文章:什么是XSS跨站脚本攻击,XSS跨站脚本与CSRF跨站请求伪造,利用XSS注入漏洞能对网站做什么。那么PHP站点如何防御XSS攻击呢?下面的函数可以用来过滤用户的输入,保证输入是XSS安全的。具体如何过滤,可以参看函数内部,也有注释。

PHP服务器脚本

[专题] PHP CodeBase: 通过新浪微博API获取数据

使用CURL方法
要获取新浪微博的数据,可以通过他们提供的API,地址:http://open.weibo.com/wiki/API文档_V2。补充一下,json_decode($data) 会输出一个对象,而json_decode($data, true) 则强制输出为数组。获取数组则使用了 CURL 库。

C/C++编程语言

[专题] C CodeBase:初始化一个数组

简单强大的C数组
数组在所有的语言中,以C最为简单,就是一起始地址,外加一数组的长度,而且基本上没有任何功能可言。然而,在所有的数组使用中,却是C的这种简单的数组形式,以其灵活性和效率,让人惊叹。C数组从逻辑上讲,是分形一致的(想不到其他词来形容了),分形的意思,就是部分与整体保持一致的构造形式,也即是数组的任何一部分也都是数组。

C/C++编程语言

[专题] C语法陷阱:C语言的二维数组模拟

用指针与一维数组理解与构造
现在我们可以考虑二维数组了,正如前面所讨论的,它实际上是以数组为元素的数组,尽管我们也可以完全依据指针编写操纵一维数组的程序,这样做在一维情形下并不困难,但是对于二维数组从记法上的便利性来说采用下述形式就几乎是不可替代了。还有,如果我们仅仅使用指针来操纵二维数组,我们将不得不与C语言中最为“晦暗不明”的部分打交道,并常常遭遇到潜伏着的编译器bug。

C/C++编程语言

[专题] C语法陷阱:指针与数组

理解指针与变量间的关系
如果一个指针指向的是数组中的一个元素,那么我们只要给这个指针加1,就能够得到指向数组中下一个元素的指针,同样的,如果我们给这个指针减一,得到就是指向该数组中前一个元素的指针。对于除了1以外的其他整数的情形,以此类推。上面这段讨论暗示了这样一个事实:给一个指针加上一个整数,与给该指针二进制表示加上同样的整数,两者的含义截然不同。

C/C++编程语言

[专题] C语法陷阱:理解如何声明一个数组

声明一个数组的实质
语言中指针与数组这两个概念之间的联系是密不可分的,以至于如果不能理解一个概念,就无法彻底理解另一个概念。C语言中只有一维数组,而且数组的大小必须在编译期就作为一个常数确定下来。然而,C语言中数组的元素可以是任何类型的对象,当然也可以是另外一个数组。

C/C++编程语言

[专题] C语法陷阱:理解(*(void(*)())0)()

用(void (*)())0来替换函数指针fp
拥有了前面的预备知识,我们现在可以分两步来分析表达式 (*(void(*)())0)() 。第一步,假定变量fp是一个函数指针,那么如何调用fp所指向的函数呢?因为fp是一个函数指针,那么*fp就是该指针所指向的函数,所以(*fp)()就是调用该函数的方式。

C/C++编程语言

[专题] C语法陷阱:从变量与函数的声明到类型转换符

一个转换“恐慌区”到“学习区”的过程
程序设计错误,或者你无法按某个算法写出程序,实际上反应的是程序员与该程序与算法的“心智模式”不匹配,或者说,你的心智模式无法包容与理解下该程序算法所包含的思想。比如下面的一个语句:( *( void(*)())0)();这是一个什么东西呢?

C/C++编程语言

const int* p 表达的是什么意思

const int* p 的语义问题
先来看一行代码:const int* p = new int(10); 问题来了,new出来的地址应该是块堆内存啊,const常量应该保存在内存静态区啊,那指针p指向的那块内存到底是在静态区还是堆里?const可以修饰函数的参数、返回值,甚至函数的定义体。被const修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。

C/C++编程语言

[专题] 漫谈C指针:函数指针作为函数参数使用

附加一个实例
既然函数指针变量是一个变量,当然也可以作为某个函数的参数来使用的。所以,你还应知道函数指针是如何作为某个函数的参数来传递使用的。要求:我要设计一个CallMyFun函数,这个函数可以通过参数中的函数指针值不同来分别调用MyFun1、MyFun2、MyFun3这三个函数(注:这三个函数的定义格式应相同)。
137 / 139 首页 < Prev 135 136 137 138 139 Next > 尾页 页码: