当前位置:  编程技术>综合
本页文章导读:
    ▪Oracle Metalink Note Search Add-On for Firefox      Write a Firefox search add-on, User can use it to search Oracle Metalink Note more quickly. Sitehttps://addons.mozilla.org/en-US/firefox/addon/ora-metalink-note/How to Use1.Input your oracle metalink note number,search(Need login with your metalink acc.........
    ▪用户接口设计五----应用任务          应用程序代码对事件进行处理。应用代码的控制流程起源于一个循环,该循环对事件队列进行读取。对一个队列来说,多个写入者是可取的,但是一般来说最好只有一个读取者.........
    ▪kernel 中 sscanf和sprintf()函数使用说明      sprintf()使用说明 在将各种类型的数据构造成字符串时,sprintf 的强大功能很少会让你失望。由于sprintf 跟printf 在用法上几乎一样,只是打印的目的地不同而已,前者打印到字符串中,后者则直.........

[1]Oracle Metalink Note Search Add-On for Firefox
    来源: 互联网  发布时间: 2013-11-10
Write a Firefox search add-on, User can use it to search Oracle Metalink Note more quickly.

Site

https://addons.mozilla.org/en-US/firefox/addon/ora-metalink-note/


How to Use

1.Input your oracle metalink note number,search(Need login with your metalink account at first time)


2.It will display note content



Contact

If you encounter any problem while using this search add-on, Please let me know

Email:tianpan@gmail.com


Enjoy...


Pan Tian

作者:pan_tian 发表于2013-1-8 13:28:06 原文链接
阅读:31 评论:0 查看评论

    
[2]用户接口设计五----应用任务
    来源: 互联网  发布时间: 2013-11-10

    应用程序代码对事件进行处理。应用代码的控制流程起源于一个循环,该循环对事件队列进行读取。对一个队列来说,多个写入者是可取的,但是一般来说最好只有一个读取者。如果你出现了需要多个读取者得情形,最好问问自己是否你真正需要的是多个队列。

主循环最主要的特色是如何识辨EventQueueEntry并且如何选择调用合适的函数。有时候,我们应该考虑从用户接口不同部分产生的事件是否可以被不同的任务进行处理,通常这将会使得系统看似更加并行执行以及更好的响应时间。例如,一个单一的任务用来处理按键按下,另外一个可以用来处理超时事件,另一个可以处理录像带插入和移除事件。为了保护对输出硬件以及公共数据结构的并发访问冲突,我们需要锁或者是信号量。

理论上来讲,这可以对确定的事件提供更好的响应时间。例如,一个特定的按键处理消耗30ms 的CPU时间,录像带插入处理消耗300ms。操作者插入录像带并立即按下按键,假使这两个看起来就像两个操作者同时操作一样。开始的50ms时间花费在处理录像带插入上。随后,按键处理操作接管了CPU,并完成按键处理操作。接下来继续处理录像带操作。如果我们考虑到上下文切换的时间,这两个任务所需的时间会有所增加。从这点上看,总的消耗时间组成如下:50ms按键处理,300ms录像带插入,以及两次上下文切换时间。

然而,从操作者的角度来看,按键操作的反馈差不多如同四分之一秒般快速。

在上面的情景中,立即发生的录像带插入操作的第一部分响应,通常会给用户这样的印象:我的操作被机器识别了。例如,点亮一颗LED告诉操作者录像带已经被机器检测到了。在电机开始运转之前,操作者几乎不会察觉到这之间的延时。

    当然,获得如此好的响应时间也是需要付出代价的。为了保护公共数据以及硬件的共享访问,需要使用一些软件保护措施,这将会使得软件的复杂性大大增加。在采用这些保护措施之前,先要对公共硬件以及数据进行分析,看看是否有太多的重叠操作,以至于任务将会等待同一资源,而这就是瓶颈所在。

    在一个通过一个单一屏幕向用户产生输出,并且通过操作屏幕来响应其它动作的系统中,系统响应只能等到与屏幕及其相关的数据结构获取到之后才能产生。在这样情形下的任一事件处理,在它能够给用户任何反馈之前,必须等待前一个事件完成,即便是前一个事件是由另外一个任务控制。因此,所有的工作都是完全的完成,不能够获得丝毫好的响应时间。如果对公共硬件以及数据的访问比较少,则可以获得一个更好的响应时间,但是这通常会带来吞吐量的损失。在RTOS中,这将会导致额外的上下文切换增加,带来额外的CPU负荷。

    更加重要需要考虑的是:事件的顺序是否对系统有意义。如果系统对按下播放键,随后插入录像带的响应与插入录像带然后按下播放键的响应不同,那么按键事件和插入事件必须投入到同一队列中并且被同一个任务进行处理,只有这样,事件的处理顺序以及系统响应才是确定的。
作者:power_mcu 发表于2013-1-8 13:27:58 原文链接
阅读:29 评论:0 查看评论

    
[3]kernel 中 sscanf和sprintf()函数使用说明
    来源: 互联网  发布时间: 2013-11-10

sprintf()使用说明

在将各种类型的数据构造成字符串时,sprintf 的强大功能很少会让你失望。由于sprintf 跟printf 在用法上几乎一样,只是打印的目的地不同而已,前者打印到字符串中,后者则直接在命令行上输出。这也导致sprintf 比printf 有用得多。

sprintf 是个变参函数,定义如下:
int sprintf( char *buffer, const char *format [, argument] ... );
除了前两个参数类型固定外,后面可以接任意多个参数。而它的精华,显然就在第二个参数:
格式化字符串上。

static ssize_t store_trace_value(struct device_driver *ddri, char *buf, size_t count)
{
    struct bma250_i2c_data *obj = obj_i2c_data;
    int trace;
    if (obj == NULL)  {
        GSE_ERR("i2c_data obj is null!!\n");
        return 0;
    }
    if(1 == sscanf(buf, "0x%x", &trace)) {//从buf中格式化输出到trace变量中
        atomic_set(&obj->trace, trace);
    }    
    else  {
        GSE_ERR("invalid content: '%s', length = %d\n", buf, count);
    }
    return count;    
}


printf 和sprintf 都使用格式化字符串来指定串的格式,在格式串内部使用一些以“%”开头的格式说明符(format specifications)来占据一个位置,在后边的变参列表中提供相应的变量,最终函数就会用相应位置的变量来替代那个说明符,产生一个调用者想要的字符串。

格式化数字字符串
sprintf 最常见的应用之一莫过于把整数打印到字符串中

如:
//把整数123 打印成一个字符串保存在s 中。
sprintf(s, "%d", 123); //产生"123"
可以指定宽度,不足的左边补空格:
sprintf(s, "%8d%8d", 123, 4567); //产生:" 123 4567"
当然也可以左对齐:
sprintf(s, "%-8d%8d", 123, 4567); //产生:"123 4567"
也可以按照16 进制打印:
sprintf(s, "%8x", 4567); //小写16 进制,宽度占8 个位置,右对齐
sprintf(s, "%-8X", 4568); //大写16 进制,宽度占8 个位置,左对齐

这样,一个整数的16 进制字符串就很容易得到,但我们在打印16 进制内容时,通常想要一种左边补0 的等宽格式,那该怎么做呢?很简单,在表示宽度的数字前面加个0 就可以了。
sprintf(s, "%08X", 4567); //产生:"000011D7"
上面以”%d”进行的10 进制打印同样也可以使用这种左边补0 的方式。


这里要注意一个符号扩展的问题:比如,假如我们想打印短整数(short)-1 的内存16 进制表示形式,在Win32 平台上,一个short 型占2 个字节,所以我们自然希望用4 个16 进制数字来打印它:
short si = -1;
sprintf(s, "%04X", si);
产生“FFFFFFFF”,怎么回事?因为spritnf 是个变参函数,除了前面两个参数之外,后面的参数都不是类型安全的,函数更没有办法仅仅通过一个“%X”就能得知当初函数调用前参数压栈时被压进来的到底是个4 字节的整数还是个2 字节的短整数,所以采取了统一4 字节的处理方式,导致参数压栈时做了符号扩展,扩展成了32 位的整数-1,打印时4 个位置不够了,就把32 位整数-1 的8 位16 进制都打印出来了。

如果你想看si 的本来面目,那么就应该让编译器做0 扩展而不是符号扩展(扩展时二进制左边补0 而不是补符号位):
sprintf(s, "%04X", (unsigned short)si);
就可以了。或者:
unsigned short si = -1;
sprintf(s, "%04X", si);


sprintf 和printf 还可以按8 进制打印整数字符串,使用”%o”。注意8 进制和16 进制都不会打
印出负数,都是无符号的,实际上也就是变量的内部编码的直接的16 进制或8 进制表示。

控制浮点数打印格式
浮点数的打印和格式控制是sprintf 的又一大常用功能,浮点数使用格式符”%f”控制,默认保
留小数点后6 位数字,比如:
sprintf(s, "%f", 3.1415926); //产生"3.141593"
但有时我们希望自己控制打印的宽度和小数位数,这时就应该使用:”%m.nf”格式,其中m 表
示打印的宽度,n 表示小数点后的位数。比如:
sprintf(s, "%10.3f", 3.1415626); //产生:" 3.142"
sprintf(s, "%-10.3f", 3.1415626); //产生:"3.142 "
sprintf(s, "%.3f", 3.1415626); //不指定总宽度,产生:"3.142"

注意一个问题,你猜
int i = 100;
sprintf(s, "%.2f", i);
会打出什么东东来?“100.00”?对吗?自己试试就知道了,同时也试试下面这个:
sprintf(s, "%.2f", (double)i);
第一个打出来的肯定不是正确结果,原因跟前面提到的一样,参数压栈时调用者并不知道跟i相对应的格式控制符是个”%f”。而函数执行时函数本身则并不知道当年被压入栈里的是个整数,于是可怜的保存整数i 的那4 个字节就被不由分说地强行作为浮点数格式来解释了,整个乱套了。不过,如果有人有兴趣使用手工编码一个浮点数,那么倒可以使用这种方法来检验一下你手工编排的结果是否正确。

字符/Ascii 码对照
我们知道,在C/C++语言中,char 也是一种普通的scalable 类型,除了字长之外,它与short,
int,long 这些类型没有本质区别,只不过被大家习惯用来表示字符和字符串而已。(或许当年该把
这个类型叫做“byte”,然后现在就可以根据实际情况,使用byte 或short 来把char 通过typedef 定义出来,这样更合适些)于是,使用”%d”或者”%x”打印一个字符,便能得出它的10 进制或16 进制的ASCII 码;反过来,使用”%c”打印一个整数,便可以看到它所对应的ASCII 字符。以下程序段把所有可见字符的ASCII 码对照表打印到屏幕上(这里采用printf,注意”#”与”%X”合用时自动为16 进制数增加”0X”前缀):
for(int i = 32; i < 127; i++) {
printf("[ %c ]: %3d 0x%#04X/n", i, i, i);
}


连接字符串
sprintf 的格式控制串中既然可以插入各种东西,并最终把它们“连成一串”,自然也就能够连
接字符串,从而在许多场合可以替代strcat,但sprintf 能够一次连接多个字符串(自然也可以同时
在它们中间插入别的内容,总之非常灵活)。比如:
char* who = "I";
char* whom = "CSDN";
sprintf(s, "%s love %s.", who, whom); //产生:"I love CSDN. "
strcat 只能连接字符串(一段以’’结尾的字符数组或叫做字符缓冲,null

    
最新技术文章:
▪error while loading shared libraries的解決方法    ▪版本控制的极佳实践    ▪安装多个jdk,多个tomcat版本的冲突问题
▪简单选择排序算法    ▪国外 Android资源大集合 和个人学习android收藏    ▪.NET MVC 给loading数据加 ajax 等待loading效果
▪http代理工作原理(3)    ▪关注细节-TWaver Android    ▪Spring怎样把Bean实例暴露出来?
▪java写入excel2007的操作    ▪http代理工作原理(1)    ▪浅谈三层架构
▪http代理工作原理(2)    ▪解析三层架构……如何分层?    ▪linux PS命令
▪secureMRT Linux命令汉字出现乱码    ▪把C++类成员方法直接作为线程回调函数    ▪weak-and算法原理演示(wand)
▪53个要点提高PHP编程效率    ▪linux僵尸进程    ▪java 序列化到mysql数据库中
▪利用ndk编译ffmpeg    ▪活用CSS巧妙解决超长文本内容显示问题    ▪通过DBMS_RANDOM得到随机
▪CodeSmith 使用教程(8): CodeTemplate对象    ▪android4.0 进程回收机制    ▪仿天猫首页-产品分类
▪从Samples中入门IOS开发(四)------ 基于socket的...    ▪工作趣事 之 重装服务器后的网站不能正常访...    ▪java序列化学习笔记
▪Office 2010下VBA Addressof的应用    ▪一起来学ASP.NET Ajax(二)之初识ASP.NET Ajax    ▪更改CentOS yum 源为163的源
▪ORACLE 常用表达式    ▪记录一下,AS3反射功能的实现方法    ▪u盘文件系统问题
▪java设计模式-观察者模式初探    ▪MANIFEST.MF格式总结    ▪Android 4.2 Wifi Display核心分析 (一)
▪Perl 正则表达式 记忆方法    ▪.NET MVC 给loading数据加 ajax 等待laoding效果    ▪java 类之访问权限
▪extjs在myeclipse提示    ▪xml不提示问题    ▪Android应用程序运行的性能设计
▪sharepoint 2010 自定义列表启用版本记录控制 如...    ▪解决UIScrollView截获touch事件的一个极其简单有...    ▪Chain of Responsibility -- 责任链模式
▪运行skyeye缺少libbfd-2.18.50.0.2.20071001.so问题    ▪sharepoint 2010 使用sharepoint脚本STSNavigate方法实...    ▪让javascript显原型!
▪kohana基本安装配置    ▪MVVM开发模式实例解析    ▪sharepoint 2010 设置pdf文件在浏览器中访问
▪spring+hibernate+事务    ▪MyEclipse中文乱码,编码格式设置,文件编码格...    ▪struts+spring+hibernate用jquery实现数据分页异步加...
▪windows平台c++开发"麻烦"总结    ▪Android Wifi几点    ▪Myeclipse中JDBC连接池的配置
▪windows平台c++开发"麻烦"总结    ▪Android Wifi几点    ▪Myeclipse中JDBC连接池的配置 iis7站长之家
▪100个windows平台C++开发错误之七编程    ▪串口转以太网模块WIZ140SR/WIZ145SR 数据手册(版...    ▪初识XML(三)Schema
▪Deep Copy VS Shallow Copy    ▪iphone游戏开发之cocos2d (七) 自定义精灵类,实...    ▪100个windows平台C++开发错误之八编程
▪C++程序的内存布局    ▪将不确定变为确定系列~Linq的批量操作靠的住...    ▪DIV始终保持在浏览器中央,兼容各浏览器版本
▪Activity生命周期管理之三——Stopping或者Restarti...    ▪《C语言参悟之旅》-读书笔记(八)    ▪C++函数参数小结
▪android Content Provider详解九    ▪简单的图片无缝滚动效果    ▪required artifact is missing.
▪c++编程风格----读书笔记(1)    ▪codeforces round 160    ▪【Visual C++】游戏开发笔记四十 浅墨DirectX教程...
▪【D3D11游戏编程】学习笔记十八:模板缓冲区...    ▪codeforces 70D 动态凸包    ▪c++编程风格----读书笔记(2)
▪Android窗口管理服务WindowManagerService计算Activity...    ▪keytool 错误: java.io.FileNotFoundException: MyAndroidKey....    ▪《HTTP权威指南》读书笔记---缓存
▪markdown    ▪[设计模式]总结    ▪网站用户行为分析在用户市场领域的应用
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3