摘要:
在开发软件的过程里,经常要做的工作就是调试程序,许多问题的出现,不但是逻辑的问题,还有可能是对API的不熟悉,或者某种条件下调用API会出错的。那么这些出错的原因是什么呢?通常只获取到错误码,也就是通过函数GetLastError得到。当然可以根据这个错误码去查找MSDN就可以知道出错的原因,但有时在客户那里并没有MSDN,那么就需要把调用API函数出错的信息显示出来,或者写到LOG里去。这时就需要调用函数FormatMessage把出错码详细原因显示出来。函数FormatMessage声明如下:WINBASEAPIDWORDWINAPIFormatMessageA( DWORD dwFlag 阅读全文
posted @ 2007-11-30 22:28
ajuanabc
阅读(171)
评论(0)
推荐(0)
摘要:
<?php$str=trim($_REQUEST['content']);$str=str_replace(" ","<br>",$str);functionuh($str){$farr=array("/s+/",//过滤多余的空白"/<(/?)(script|i?frame|style|html|body|title|link|meta|?|%)([^>]*?)>/isU",//过滤<script等可能引入恶意内容或恶意改变显示布局的代码,如果不需要插入f 阅读全文
posted @ 2007-11-30 20:23
ajuanabc
阅读(146)
评论(0)
推荐(0)
摘要:
在软件的使用过程中,经常碰到乱码的情况,那么乱码的原因是什么呢?其实很多情况下,就是字符集的不同,也就是说同一个数字代表不同意思。在Windows里,目前主要有ANSI和UNICODE的方式。如果在UNICODE的方式里直接显示ANSI的字符串是出现乱码的,同样在ANSI函数里也不能显示UNICODE的字符串,而是要进行相互转换才能显示正确的字符串。在NT以后的操作系统里,Windows底层函数已经全部改为UNICODE的方式,如果还是使用ANSI的话,要比UNICODE函数慢一些,系统底层会从ANSI的方式转换为UNICODE方式,然后再显示出来。从ANSI转换为UNICODE的字符串,就可 阅读全文
posted @ 2007-11-29 18:59
ajuanabc
阅读(142)
评论(0)
推荐(0)
摘要:
在开发软件的过程中,经常会碰到不同用户的PC系统配置不一样。比如有些用户的系统内存配置比较差,这样处理大量数据时,就不能把大量的数据读取到内存里处理了。而又有一些用户的内存比较多,或者是机器比较新,那么就可以加载大量的数据到内存里处理,这样可以随着系统的更新,软件的处理能力能大幅地提高性能。这样就需要了解系统的配置信息了,最重要的资源之一内存,就是最需要了解的,需要调用函数GlobalMemoryStatusEx来了解内存的分配情况。函数GlobalMemoryStatusEx声明如下:WINBASEAPIBOOLWINAPIGlobalMemoryStatusEx( __out LPMEMO 阅读全文
posted @ 2007-11-27 21:36
ajuanabc
阅读(196)
评论(0)
推荐(0)
摘要:
前面已经介绍两个分配内存的函数,一个全局的内存分配,一个是私有的内存分配。在进程私有的内存里分配里,又有两种分配情况,一种上基于栈式的内存分配,另一种是基于堆内存的分配。在c++里使用堆内存分配是使用HeapAlloc函数来实现的,也就是实现new操作符分配内存时会调这个函数。函数HeapAlloc声明如下:WINBASEAPI__bcount(dwBytes)LPVOIDWINAPIHeapAlloc( __in HANDLE hHeap, __in DWORD dwFlags, __in SIZE_T dwBytes );hHeap是进程堆内存开始位置。dwFlags是分配堆内存的标志。d 阅读全文
posted @ 2007-11-26 22:07
ajuanabc
阅读(161)
评论(0)
推荐(0)
摘要:
package org.apache.easframework.core.entity.impl;import java.lang.reflect.Field;public class TestEntity {private String code;private String name;public void setCode(String code){this.code = code;}public String getCode(){return this.code;}public void setName(String name){this.name = name;}public Stri 阅读全文
posted @ 2007-11-21 14:13
ajuanabc
阅读(383)
评论(0)
推荐(0)
摘要:
上一次学习了全局内存的分配,在Windows里内存管理是分为两部份,全局内存是系统管理的内存,因而所有进程都可以访问的内存,而每一个进程又有自己的内存空间,这就是虚拟内存空间了,而虚拟内存的空间比较大,当物理内存不足时,系统会把虚拟内存的数据保存到硬盘里,这样只要硬盘的空间足够大,每个进程就可以使用3G的内存。虚拟内存分配可以作为程序里分配内存的主要方式,比如大量的数据缓冲区,动态分配内存的空间。使用VirtualAlloc函数来分配内存的速度要比全局内存要快。函数VirtualAlloc声明如下:WINBASEAPI__bcount(dwSize)LPVOIDWINAPIVirtualAll 阅读全文
posted @ 2007-11-20 20:42
ajuanabc
阅读(159)
评论(0)
推荐(0)
摘要:
在Windows系统里,有一项功能非常实用,就是剪贴板功能,它能够从一个程序里与另一个程序进行数据交换的功能,也就是说两个进程上是可以共享数据。要实现这样的功能,Windows系统在底层上有相应的支持,就是高端地址的内存是系统内存,这样就可以不同的进程进行共享数据了。因此,调用函数GlobalAlloc来分配系统内存,让不同的进程实现共享数据,也就是剪贴板功能,可以在一个进程内分配内存,在另一个进程里访问数据后删除内存。函数GlobalAlloc声明如下:HGLOBALWINAPIGlobalAlloc ( __in UINT uFlags, __in SIZE_T dwBytes );uFl 阅读全文
posted @ 2007-11-19 20:54
ajuanabc
阅读(217)
评论(0)
推荐(0)
摘要:
面对华丽的Windows桌面,工作的心情或许好很多,但是久了总会失去兴趣,总想定期地更新桌面的图片。软件开发人员又面对这样的需求了,需要怎么样去做呢?努力去找API函数吧。到目前为止,还有很多变桌面图片的软件,并且还能很挣钱的。其实设置桌面图片的需求,在目前数码相片处理软件也有现实的需求,比如当你去旅游回来后,想把照片当作桌面图片,就可以在处理图片时就设置为桌面图片。这样就需要使用函数SystemParametersInfo来完成这项工作了,当然这个函数还有很多其它功能,比如获取桌面工作区的大小。函数SystemParametersInfo声明如下:WINUSERAPIBOOLWINAPISy 阅读全文
posted @ 2007-11-16 20:57
ajuanabc
阅读(240)
评论(0)
推荐(0)
摘要:
有一次,我正在开发一个视频压缩程序,而压缩算法是需要非常高效的,也就是需要使用到CPU的多媒体指令。在X86的领域里,目前主要有两家CPU,就是INTEL和AMD。它们的多媒体指令是不一样的。为了区分这种不同的指令,就需要调用函数GetSystemInfo来获取CPU的信息,然后再调用不同的动态连接库来进行多媒体数据压缩。函数GetSystemInfo声明如下:WINBASEAPIVOIDWINAPIGetSystemInfo( __out LPSYSTEM_INFO lpSystemInfo );lpSystemInfo是返回硬件信息的结构。调用函数的例子如下:#001//#002//获取当 阅读全文
posted @ 2007-11-15 20:44
ajuanabc
阅读(185)
评论(0)
推荐(0)