Home

变长数组的问题

# 今天在gcc里写代码,偶然发现好像下标可以用变量(非const),比如: int n=0; scanf("%d",&n); int a[n];//当然这里一定要有合法性判断 这个理念太颠覆了,从学c语言的时候就被灌输说数组长度是不可变的,想用可变长度的话,要么malloc一块内存,要么用vector这种动态表。后来试了试发现vc里是直接无法通过编译的。查到如下一段说明: 在C99中新加入了对变长数组的支持,即数组的长度可以由某个非const变量来定义。可变数组的空间大小直到程序运行时才能确定,因此只有程序在运行时才能为程序分配空间。在gcc编译器程序会在运行时根据实际指定的大小(变量当前的值)调节esp的值,为数组在栈上分配适当大小的空间。由于要在运行时才能...

Read more

指针数组,数组指针与函数指针

指针数组是指由指针组成的数组,这个比较好理解;数组指针是指向一个数组的指针,其实字面上也比较好理解。容易混淆的地方在于书写形式有些类似 :::cpp int *p[n]; //array of pointers int (*p)[n];//pointer to an array

Read more

关于Django url映射的一些小问题

# 之前写Django一直没想着去用patterns的prefix,偶然用的时候发现总不起作用,后来才发觉原来是写法的问题 urlpatterns = patterns('book.views', (r'^(\w ).html$', 'default_render'), ) 在这种情况下肯定是没问题的,但是不排除会有同学跟我一样的写成如下的格式 urlpatterns = patterns('book.views', (r'^(\w ).html$', default_render), ) 看到差别了吧,只有字符串才可以拼接嘛。 另外是关于Django 1.4之后的路径的问题,每个app被放到跟主project同级的目录,所以引用的时候都变成与proje...

Read more

关于函数式编程

本来想写点东西的,后来发现自己的理解还是比较浅薄,所以直接贴两篇文章好了。 [1]阮一峰老师的函数式编程初探 http://www.ruanyifeng.com/blog/2012/04/functional_programming.html [2]Steve Yegge的大作名词王国中的死刑 http://steve-yegge.blogspot.com/2006/03/execution-in-kingdom-of-nouns.html 看完之后相信你会对函数式编程有一个基本的理解。

Read more

通过goagent使用Picasa客户端

# goagent这一神器就不多说了,配置详见goagent教程。这里主要探讨picasa客户端使用代理的问题。 picasa本身的代理设置只有一个用户名和密码,不明所以,所以一直用hosts文件的方法,但是后来发现配置里还有一项“自动检测网络设置”,勾选之后只要在系统里设置好goagent代理(PS,Internet选项那里,Linux没试,Linux下也没有picasa端吧),就可以使用代理上传照片了。 最后吐槽一下:picasa也是google神器了,更有牛逼的人脸识别,但自从picasa相册编程google plus相册之后,就有了很多纠结的问题。比如我只是想把认识的人圈点一下,结果你非要在Google Plus群发一条消息,这如何是我等低调之人所能容忍的。算了,pica...

Read more

在这个才人辈出的时代

# 偶然翻bootstrap的资料,在bootstrap的中文网站看到如下三个sample: http://wrongwaycn.github.com/bootstrap/docs/examples.html 神吐槽,不解释。膜拜楼主。细软跑。

Read more

关于结构体字节对齐的一些问题

# 字节对齐的目的 字节对齐的作用不仅是便于cpu快速访问,同时合理的利用字节对齐可以有效地节省存储空间。对于32位机来说,4字节对齐能够使cpu访问速度提高,比如说一个long类型的变量,如果跨越了4字节边界存储,那么cpu要读取两次,这样效率就低了。但是在32位机中使用1字节或者2字节对齐,反而会使变量访问速度降低。所以这要考虑处理器类型,另外还得考虑编译器的类型。在vc中默认是4字节对齐的,GNU gcc 也是默认4字节对齐。 字节对齐的基本原则 如下三条 结构体变量的首地址能够被其最宽基本类型成员的大小所整除; 结构体每个成员相对于结构体首地址的偏移量(offset)都是成员大小的整数倍,如有需要编译器会在成员之间加上填充字节(internal...

Read more