随笔分类 -  程序设计

arm上的参数列表传递的分析(以android为例)
摘要:1. Linux中可变列表实现的源码分析查看Linux0.11的内核源代码,对va_list, va_start, va_arg 的实现如下:va_list的实现没有差别,chartypedef char va_list;va_start的实现#define va_start(AP, LASTARG... 阅读全文

posted @ 2014-09-29 00:12 rainduck 阅读(1216) 评论(0) 推荐(0)

Binder与interface
摘要:在Interface中,asBinder函数涌来将服务类接口类型转换为IBinder类型;相反的,asInterface函数用来将Ibinder类型转换为服务接口类型 阅读全文

posted @ 2014-08-18 20:42 rainduck 阅读(348) 评论(0) 推荐(0)

python中ascii码和字符的转换
摘要:将ASCII字符转换为对应的数值即‘a’-->65,使用ord函数,ord('a')反正,使用chr函数,将数值转换为对应的ASCII字符,chr(65) 阅读全文

posted @ 2014-03-04 15:42 rainduck 阅读(26712) 评论(0) 推荐(2)

系统开机时间、关机时间的获取
摘要:1.方法开机时间:1)利用timeGetTime获取开机后到当前的毫秒数,然后转换为秒数(舍去毫秒);2)再和当前时间做差,得到Unix格式的格林威治时间。上次关机时间:保存在注册表local machine下的SYSTEM\\CurrentControlSet\\Control\\Windows中的ShutdownTime中,其值为8字节的FILETIME。2. 参考代码其中注释掉的部分主要为中间输出,需要的额话可以还原。其中包含两个额外函数:time_t和FILETIME的相互转化//参考自http://msdn.microsoft.com/en-us/library/windows/de 阅读全文

posted @ 2013-04-24 17:03 rainduck 阅读(6839) 评论(0) 推荐(0)

lpVtbl不是Com接口的成员
摘要:在c++中以c的方式使用接口时,应当:i->lpVtbl->....,但是编译器可能会提示lpVtbl不是相应com接口的成员。这是因为在com头文件中有两种定义方式,即c和c++;这两种方式通过 __cplusplus和CINTERFACE来区分。。 故,我们不仅需要定义CINTERFACE,而且还需要把#define CINTERFACE的定义放在头文件包含之前。 阅读全文

posted @ 2012-03-09 15:13 rainduck 阅读(1285) 评论(0) 推荐(0)

dll动态链接库导出函数相关
摘要:以前写导出函数时,都是在*.def中声明,但是ide自动生成的导出函数却是利用__declspect(dllexport)实现,那么我们自己在添加导出函数时,则需: 1. 在需要导出的函数或类前添加__declspect(dllexport)即可。例如要导出函数void test(),则应该为:__declspect(dllexport) void test(){...} 2. 步骤1导出的函数如果用pe工具查看导出函数,则看到的是"?test@@YAXXZ",产生这种现象的原因是我们以c++的方式导出,而c++有名字粉碎机制,C++编译器对程序员编写的函数名、变量名进行粉 阅读全文

posted @ 2011-11-06 17:17 rainduck 阅读(2127) 评论(0) 推荐(0)

2011年10月百度笔试 RD3—第4题
摘要:题目:给定一个整数N,求编码函数f,f满足M=f(N),M可以不存在,且M和n的关系满足:M的位数和N相同M的各个位之和与N的各个位之和相同M>NM是满足上述条件中,值最小的一个解分析:对于整数N = 18990,将其最高位到最低位一次存在数组a[p]={1, 8, 9, 9, 0},那么要求解则需低位-1,次低位+1;但是当位为0,则无法-1;位为9则无法+1;为了找到合适的操作位,进行如下判断:最低的不为0的位(非0才可以-1)上进行-1;在比进行-1操作高位的区间内,找最低的非9位,进行+1操作。在进行+1、-1的操作位后,需要对比+1操作的位低的所有位进行排序,按照从高位的低位升 阅读全文

posted @ 2011-10-10 01:59 rainduck 阅读(2313) 评论(15) 推荐(2)

【转】python中使用 C 类型的数组以及ctypes 的用法
摘要:【转自】http://hi.baidu.com/jxq61/blog/item/90037f272a9ae46c35a80fdc.htmlPython 在 ctypes 中为我们提供了类似C语言的数据类型,它的用途(我理解的)可能是:(1) 与 其他语言(如 C、Delphi 等)写的动态连接库DLL 进行交换数据,因为 python 的 数据与 DLL难以进行数据交换。(2) python 的字符串一旦形成,是不可变的,为了算法的需要,我们有时需要对字符串进行原位操作 ( in place ),而不想浪费另外的内存空间。(3) python 具有很简明的语法,人们乐于使用。在解决实际问题时, 阅读全文

posted @ 2011-09-02 01:18 rainduck 阅读(29047) 评论(0) 推荐(1)

获取外网ip
摘要:看内容会很失望,,让人hurt的易语言。。。没办法帮别人看一个易语言的程序,要添加这个东西,,其实这是我第一次接触,然后修改和写易语言的程序。。http://www.ip138.com/ip2city.asp 这个不错————————————————————————————————.版本 2.子程序 取外网IP, 文本型, 公开, 取外网IP.局部变量 原文, 文本型.局部变量 过度, 文本型, , "0".局部变量 IP, 文本型原文 = 到文本 (彗星HTTP读文件 (“http://www.ip138.com/ip2city.asp”))过度 = 分割文本 (原文, 阅读全文

posted @ 2011-08-24 21:19 rainduck 阅读(480) 评论(0) 推荐(0)

ruby下无法显示mysql的查询结果
摘要:很诡异,昨天折腾后,搞定了第一个rails app。今天用ruby直接调用数据库,,,结果无法显示结果。。提示:in `each_hash': NULL pointer given (ArgumentError from。。。。mysql版本:5.1.42-community-loggoogle之后,采用如下方式解决:从instantrails那里找个libmysql.dll放到ruby/bin里面,一切ok了事实上,还是不是很清楚,昨天也是mysql gem的问题。。。今天又是这个。。应该不仅仅是单纯版本问题。。先继续,稍后深入接触了希望可以理解其中的原因,mark! 阅读全文

posted @ 2011-04-04 03:45 rainduck 阅读(228) 评论(0) 推荐(0)

VC 获取系统特殊文件夹的路径如:系统目录,桌面等
摘要:[转自]http://blog.sina.com.cn/s/blog_4b44e1c00100luh8.html如果需要,请在StdAfx.h中添加 #include <shlobj.h>TCHAR MyDir[_MAX_PATH];SHGetSpecialFolderPath(this->GetSafeHwnd(),MyDir,CSIDL_APPDATA,0);AfxMessageBox(MyDir);其中第三个参数CSIDL_APPDATA可以为以下的值:CSIDL_BITBUCKET回收站CSIDL_CONTROLS控制面板CSIDL_DESKTOPWindows桌面D 阅读全文

posted @ 2011-03-03 15:21 rainduck 阅读(1709) 评论(0) 推荐(0)

获得剪切板中文字内容的VBS脚本
摘要:如题,代码如下:这里只是获得文本内容,对于剪贴板中的其他类型数据,则略有差异,需要指定类型。 阅读全文

posted @ 2010-09-21 11:10 rainduck 阅读(808) 评论(0) 推荐(0)

程序员必须掌握的基本正则表达式
摘要:正则表达式是什么?   正则表达式是使用一套特殊符号模式做为表达格式的字符串,主要用处是描述和解析文本。许多程序员(甚至一些不错的高手)都无视(也不用)正则表达式,我认为这是一个耻辱,因为在解决很多问题的时候,正则表达式常常让我们有得心应手的感觉。一旦你掌握了,就会发现它能解决无数真实世界的问题。   正则表达式的工作方式就象Windows或者*nix系统里面的文件名替代符 - 你可以使用... 阅读全文

posted @ 2010-05-18 22:22 rainduck 阅读(1025) 评论(1) 推荐(3)

导航