2007年12月12日星期三

Magic C Point

在C/C++ 语言里面,指针真是一个奇妙、魔力无穷而又难以掌握的东西。今天上 csdn 看到下面这一段代码,要写出结果( 原地址在:一道考遍东北三省和青岛没有一人做出来的简单题目 )


[code:c]
#include
int main()
{
int a[5]={1,2,3,4,5};
int *ptr1=(int *)(&a+1);
int *ptr2=(int *)((int)a+1);
printf("%x,%x",ptr1[-1],*ptr2);
return 0;
}
[/code]


37楼 kingqin 大牛给的答案不错,学习了。
[code:c]
#include
int main(void)
{
int a[5]={1,2,3,4,5};
//假设a的地址为0x80000000,sizeof(int)=4
//假设是little-endian,则0x80000000-0x80000013的数据为:
// addr: 00 01 02 03 04 05 06 07
// data: 01 00 00 00 02 00 00 00
// addr: 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13
// data: 03 00 00 00 04 00 00 00 05 00 00 00
int *ptr1=(int *)(&a+1);
//ptr1 = 0x80000000+20=0x80000014
int *ptr2=(int *)((int)a+1);
//ptr2 = 0x80000000+1 = 0x80000001
//&ptr1[-1] = 0x80000014-4 = 0x80000010 ;
//so ptr1[-1] = *(int *)0x80000010 = 5
//*ptr2 = *(int *)0x80000001 = 0x02000000
printf("%x,%x",ptr1[-1],*ptr2);
return 0;
}
[/code]


csdn 上很多人说这个很简单,意思是其实就是 我太菜了! 怎么办啊 ?!!

2007年12月7日星期五

ChangIp

在我们学校,提供网络服务的有两家,学校和电信。各有优缺点我就不说了,关键是我需要经常在这两种网络之间换来换去,如果每次都手工去该的话,真累,于是ChangIP诞生了。
写出来的目的是给自己用的,所以没有考虑多网卡或者其他的什么情况

见谅

运行时如果发现有内存读写错误, 请把 changeIP.ini 删除就好

没有加入错误输入检查, 所以问你输入的东西不要乱输, 按照提示来比较好, 否则, 呵呵……

没有什么技术含量, 纯粹是手工活。

弄得还比较抓狂,自己用着还够用, 所以本软件 不再更新。

提供下载:ChangIp.rar

2007年12月1日星期六

iplussMessage

iplussMessage是我在华侨大学桑梓年华开源板块发布的一个linux下聊天的小程序,目前版本是0.02版,现在在这里也发布一下

这里下载:
第一个版本iplussMessage0.01:
iplussMessage0.01
第二个版本iplussMessage0.02pre:
iplussMessage0.02pre

第二个版本源文件:
iplussMessage0.02pre-src
V0.02 pre 发布:

为什么叫做 V0.02pre呢,因为它远没有达到我预想的要求, 再最后阶段, 我删除了一半的文件, 所以本来应该有20个文件在里面的

因为马上要考试, 不愿意急着写下去了, 所以就地开源

源代码全部贴出来,希望可以在桑梓开源社区得到良好的发展。

代码写的超级烂的, 因为这完全不是正式版, 至于小小程序有这么多代码, 讲个简单的例子,公交车载一个人也要跑一趟,十个人也是一趟。

最近几天真的很抓狂,前天嘛, 误删一个已经写好的 函数库, 要知道那个那个文件写了好久啊, 这了给大家一个建议: 千万不要哟哦嗯shift+delete 删文件了,就算这个文件再没用,也要先把它请到回收站, 一闪,然后 2秒后就后悔的事情太多了。

刚刚又遇到抓狂的事情是 用到的一个函数库 ,建立了一个表单 ,为了传递 用户输入的参数, 花了我一个晚上的时间, 因为那个死BT函数变态至极,没有说明文档, 害我瞎蒙N次, 在gdb里面按到手酸才好。

因为很抓狂 连Makefile都忘了怎么写了, 于是写了一个极其 愚蠢的 Makefile

-----------------------------------------------------------------------------------------------------------------------------
V0.01发布:

华侨大学开源社区第一炮

由我来点!嘿嘿

刚刚上手linux网络编程 ,写了一个 linux下的 聊天小程序

发布为 0.01版

因为实在是太简单,都不好意思把源代码贴出来, 故只贴出 可执行文件先,等以后的版本搞复杂了再全部公开代码 (不让你一下就看懂,嘿嘿)

从本帖下载 可执行文件

用法;

解压 (ZIP格式的 用右键吧……)

1.先在一台机器上 运行 使其成为主机 命令 ./iplussMessage 你的呢称

2。然后在另外一台机器上运行 ./iplussMessage 交谈对方自己的昵称 主机的IP地址

请把上面的中文改成你需要的东西(汗……)

需要注意的是 你的昵称不能超过 8个字节, 否则缓冲区 溢出……(不关我的事,我要把缓冲区设为一万个字也行,让费的是你的内存)

当然上面的步骤可以在一台机器上面试验,不过 下面的那个 “主机IP地址” 就换成 127.0.0.1 就行了

接下来的版本准备加入文件传输功能,还有 GUI 界面

2007年11月30日星期五

EDA 技术

EDA就是电子设计自动化的英文缩写。作为电子系的学生,这个东西当然要学了。
而VHDL是EDA软件里面一种重要的描述语言。

这个礼拜开始,正式开始要学VHDL了,作为一门专业技术,学好它对于以后找饭碗当然是有莫大的帮助,稍微了解了一下,发现VHDL和verilog比起来,好想比较“不行”,这个也就算了,只要用它的人强就好了,但是我们的那个VHDL“老师”差劲的可不是一般两般。之所以老师打双引号,是因为她根本就不是老师,而是我们正式老师的一个研究生,看样子是今年就要毕业,但是她的那个水平(跟学了三天EDA的人水平差不多)居然还有脸出来教我们,真是晕极了……

看到这种人我就知道为什么大学毕业生找不到工作了,又为什么研究生也找不到工作了,原因是读了跟没读是一样的。

跟堂哥聊天得知的一些信息是学FPGA是非常有前途的。

2007年11月29日星期四

关于

这是一个 WordPress 页面范例,您可以编辑本页面并增加您或者网站的信息,这样访问者便可知道您来自何方。您可以创建类似本页面的任意多的页面或者子页面,并通过 WordPress 来管理。

2007年11月8日星期四

行动代号:“十万火急”

这个世界实在是太疯狂,大学生找工作比不上民工!固然跟有些大学生本身的素质有关系,但是这个世界也确实是太疯狂,竞争太激烈,赚钱太不易,花钱太简单!

ipluss自认为是一个有进取心的新世纪好青年,为了毕业后能找到一份好的工作,早点在这个乱世中博得属于自己的一份事业和天地,经过与Microstar的深入探讨,特制定“十万火急”计划!

该计划的目的是:毕业的第一年至少拿年薪十万!

因为任务比较重要并且时间也不多了,特命名“十万火急”!

这个计划的实行讲彻底改变以前的懒散态度,加速的学习谋生的技能,为快速的实现计划目标,必须用积极的态度和更用心的面对每一天。

谢谢大家的支持!

《C++语言的设计和演化》读后感

看这本书最主要的收获还是关于C++的八卦……因为基本上看不懂,除了前面那一部分八卦……


既然看不懂,哪里来的读后感?答案是:我觉得C++实在是太棒了!


C++继承了它之前许多语言的优点和特点,经过有机的组合,在不抛弃C的高效率构架的情况下,为程序员提供和许多的新特点,为了实现的目标是让程序员“控制一切”,基于这几点,我对那个“被阉割了的C++->java”非常的有意见,就因为“安全”这一个借口,砍掉许许多多实用的C++功能并且慢的跟蜗牛似的还说性能不错?(其实C++的安全机制非常不错,不见得java会更好)然后借着SUN公司的背景,到处乱推销……实在是……


在我看来java唯一的好处就是一次编译,到处运行。相信这个也不是别的语言做不出来的,不就是一个Java虚拟机吗?等我以后强大了,也做一个C++虚拟机和配套的编译器,让C++也跨平台乱运行……


强力顶C++!

《Exceptional C++ Style》读后感

好久没有写日志,因为最近老逛图书馆(虽然实际上看书不多,因为基本上再找书),书看完写书评,不错不错。


和《Effective C++》、《More Effective C++》一样,获得无数好评的关于C++讨论的书籍。


看这种书,真的是能够看出国产计算机书和“鬼佬”书的差距!可能跟国产的专家一般都有有受过毛概、邓论、马哲的熏陶有关系吧,看他们写的书真正的味同嚼蜡……呆板,也就算了,如果肚子里真的有货,写出来跟大家分享一下未尝不可以读一下,但可恶的是国内做学术的氛围啊……!真可悲,如果像他们那样写书,拜托,以我目前的视野广度,完全可以写一个计算机图书系列!抄来抄去有什么意思也不知道,他们的销量主要决定于谁的手段多、出版社牛逼,唉……


虽然《Exceptional C++ Style》这本书我好多地方看不懂,但是能够看的懂的几个问题里,真正切切的感受到了大师的风范,很多细节之处看的出来是作者开发过程的亲身体验写成,对于指导我们这种小菜鸟甚至老鸟有太多的好处。看书也不累,因为作者很风趣,比如其中讲到类的封装的时候,给出了一个没有进行好的封装的后果:客户急了,并且警告这样的开发者:“收到客户送来的礼物时,如果听到里面有嘀嗒声,千万不要打开!”相信国人专家能这样写书的……找不到吧?


关于代码的优化和内存分配,书上写的都非常的好,佩服和学习中。

2007年10月29日星期一

我的blog,我的学习笔记

超级久没有访问自己的blog了,还以为是主机挂掉了,后来偶然用在线代理居然上了,才明白是“和谐”搞的鬼!

唉,不说了,关于blog很重要的变化是,本人越来越懒了,我打算的blog接下来的一段时间只写我自己的学习笔记和技术文章摘录,有关于C++,linux和ARM以及Internet,其它一概不写或者少写,欢迎订阅哦。

2007年10月17日星期三

Vim是一个很好的文本编辑器

因为近一段时间很想把C/C++的水平提高一下,顺带应付一下java选修课,决定真正要在linux下面搞开发了,用了许多种类的编辑器之后,效果都不太好,比不上notepad++好用,可是很奇怪的事情是notepad++是一款开源软件却没有linux下的版本,真的是失败之极。

随即,我就把目光转向了emacs和vim,这两款编辑器在linux程序员中享有很高的声誉,据说是功能强大的不得了,于是就到图书馆借了一本《linux程序员与用户指南》,其实我早就借过这本书看,不过原来都没有认真看,搞的现在linux技术还是这么菜鸟。现在借过来主要就是看看vim和emacs这两部分,比较了一下之后,发现还是vim比较合我的胃口。

vim对于初学者来说确实是够恐怖的,不过还好,我身经百战,修炼到已经面不改色心不跳了。
不过有牛人说是编辑器用emacs的是一流程序员,用vi的是二流程序员,其他的都是三流,这句话让我相当的不爽,岂不是我在起跑线上就输给那些用emacs的一截了?

不过emacs确实是够强大的,其实vim一样强大。没想到,电脑玩到现在,还得从文本编辑学起。

2007年10月1日星期一

到家了

和计划的不一样,我已经到家了。

      回家的路上发生了许多有趣的故事,不是三言两语可以说的清楚,要写起来估计可以出小说,还是意识流派的。

      说我做的一件好事:我发现一位孕妇没位子,在拥挤不堪的车厢里一直站着却没有人给她让座(我没有位置),实在是看不下去,于是跟乘务员说了下,想让乘务员安排一个位置给她,乘务员果然猪狗不如地说这件事情跟他(或者是她,因为我问了两位乘务员)没有关系,不属于他们管的范围,我没办法自由亲自出动,当我走到那位孕妇旁边打量旁边的人,想选择应该说服谁给她让位子时,从那些人眼神里看到的全部是没有希望可不可能,流露出来的冷漠几乎可以让车厢瞬间冰冻飘雪让那些厦门人看看下雪是到底怎么回事。我试着想叫一位中年妇女给让个位置,没想到这位大嫂眼皮都不舍得多抬一下。最后我试着叫旁边的一位先生给让个位置,他听完我说的事情显然十分的不情愿但是发至人内心的隐藏的甚至自己都没有发现的爱心最终使他让出了位置。

       ……

      故事超多的,写累了。

2007年9月29日星期六

MC9S08QG8

因为ARM核对于我这种小菜鸟来说,立刻入门确实是有点难度,于是我把计划学习时间加长了,并且想先学习一段时间freescale的s12系列或者atmel的AVR单片机,一是为了开阔一下视野,而是学习嵌入式在线开发的方法。

       刚好飞锐泰克有免费派送仿真器的活动,马上就申请一个。虽然派送的是8位的单片机,但是开发环境和方法与s12对比都没有变,所以就也很开心。

        昨天,喔,不对(看看现在时间),应该是前天早上,收到了飞锐泰克派送的BDM仿真器,收到的时候很兴奋,但是一拆开包装,傻眼了,那个仿真器还有demo的小目标板小的跟mp3似的。尤其是那个demo的小板,小到我竟然不知道这是一块单片机的最小系统板,因为事先不知道派送的型号,以至于没有认出来那块小板上的那个长的像普通74芯片的那个东西原来就是一块单片机!

         认真的把那块芯片对着光看了看,得到该芯片型号为MC9S08QG8,到查了下资料,发现这片芯片的资源的丰富程度,完全出乎我的意料之外:
MC9S08QG8/QG4产品特性
基于HCS08内核
在高于2.1V时,时钟频率高达20MHz (总线10MHz),最短指令执行时间为100ns。在低于2.1V时,时钟频率为16MHz(总线8MHz)
8K 和 4K的可编程闪存选择
同步和异步的串行外围设备(SPI、IIC、SCI)
带温度传感器的8通道10位模数转换器(ADC)
模拟比较器模块(ACMP)
2通道定时器/PWM模块(TPM)和8位模数定时器模块(MTIM)
8脚键盘中断模块,极性可由软件选择的边沿或边沿/电平模式
包含锁频环(FLL)的内部时钟源模块(ICS)
支持外部时钟源的外部振荡器
系统保护功能,例如低电压检测(LVD)、上电复位(POR)、带独立振荡器的计算机运行正常(COP)计数器
背景调试系统,具有实时总线捕捉功能的内置在线仿真(ICE)

价格和供货信息
此8位微控制器的建议零售价格:MC9S08QG4为0.89美元,MC9S08QG8为0.99美元。
该芯片的价格也是意料之外的。

        兴奋了一个白天,想把设备连接起来测试一下看是否正常,却找不到一个电源,到前天半夜三更,才做成实验,确实是很兴奋。因为调试一次性成功,并且开发环境也很和我胃口,就是大名鼎鼎的codewarrior:我对这个软件充满了好的印象,除了其体积超级庞大之外。

        freescale的东西做的真不错。freescale的嵌入式学习中心更是好地方:http://www.embeddedlearningcenter.com  居然提供免费的网络在线实时仿真(需要java支持),我这里因为网速比较慢一点的原因,体验有点不好。不过这确实是一个好东西,以至于你可以不用买开发板,就可以免费学习freescale的任意款式的嵌入式处理器。

       那么接下来的一小段时间,我会以研究MC9S08QG8为主,ARM暂时先放一放。

2007年9月23日星期日

Embedded学习进展

既然已经规划好了,那么更加有必要的事情当然是监督自己去执行。

      (先说成果会比较增加自己的自信心)首先,对java语言已经有了一个总体的了解,不得不说的是,java真的是一门糟糕的语言,在我的理解,java能够如此流行的关键因素是“java语言结合了C语言的简单和C++对C的改进的优点,并且抛弃了C++里面的很多复杂的东西,使语言更加的简单”(自己概括的,不要到处乱抄),但是简单的后果就是java的运行的低效和语言功能的弱小,比不上C++强大,甚至跟C也是没法比,因为它甚至连指针都不要了,真是失败。记得当年学C语言的时候,老师说C的最大的优势就是指针,当时我也不觉得指针有什么神奇的,不过后来自己慢慢领悟之后,发现指针真的是绝好的东西啊。没想到到了java居然有人说:“Java语言的一个优点就是取消了指针的概念 ”。晕倒,这是说什么嘛。

      第二个成果,《C++ primer》看到186页,感觉还不错。

      警钟:《ARM微控制器基础与实践》这本书才看到39页,并且没有看其他的关于ARM的书。这样的速度真的是让人感到伤心。

ps:想买一块ARM7的开发板,价格528RMB,好贵哦。但是大家都说学习这个花点钱是值得的,因为学成以后就……哈哈哈哈
有没有高手鉴别下这个块板好不好:http://www.hzlitai.com.cn/product/ARM7/sys44B0/2006101120.html
另外还要买一本书:《嵌入式系统设计与开发实例详解——基于ARM的应用》