dychenyi/
共539个网摘 [
1 ...
8 9 10 11 12 13 14 15 16 17 18 ]
上一页 |
下一页 |
访问dychenyi的个人空间
dychenyi收录,时间:2007-12-13 15:20:07 | 相关网摘,我也收藏
function uncoding(str){
var arr = str.substring(9).split("%");
var temp = "";
for(var k = 0 ;k < arr.length; k++){
if(isNaN(parseInt(arr[k])))continue;
temp += String.fromCharCode(parseInt(arr[k]));
}
return temp;
}
for(var i = 0 ;i < document.all.length;i++){
var e = document.all[i];
if(e.innerHTML && e.innerHTML.indexOf("up000122:") == 0){
e.innerHTML = uncoding(e.innerHTML);
}
}
http://topic.csdn.net/u/20071212/20/2a17d79c-9593-48be-9c6a-91297bf45d18.html
dychenyi收录,时间:2007-12-11 10:05:52 | 相关网摘,我也收藏
部署项目的类型
如何创建安装程序包
如何将文件添加到安装程序包
参考
概要
本文阐述了在 Visual Studio .NET 开发环境中创建安装程序包的步骤。此外,本文还阐述了各种类型的安装项目以及如何将文件或依赖项包含在安装程序中。
回到顶端
部署项目的类型
部署项目有五种类型:合并模块项目、安装项目、Web 安装项目以及 Cab 项目。安装向导可以指导您完成创建部署项目的过程。以下是为项目选择正确的部署项目类型应遵循的规则。
项目类型 用途
合并模块项目 (.msm) 将可能由多个应用程序共享的组件打包
安装项目 (.msi) 为基于 Windows 的应用程序生成安装程序
Web 安装项目 (.msi) 为 Web 应用程序生成安装程序
Cab 项目 (.cab) 创建压缩文件以便下载到旧版 Web 浏览器
安装向导 (.msi) 帮助自动创建此表前面提到的一个部署项目
http://support.microsoft.com/kb/307353/zh-cn#
dychenyi收录,时间:2007-12-7 9:15:10 | 相关网摘,我也收藏
srand((unsigned int)time(NULL));
firstrun=false;
}
SPoint sp;
do
{
GetCoordinateFromNum(GetPTable(),rand() % m_iTotleBlockNums,sp);
}while(!CanAddFoodOrPoison(sp));
m_ppiBoard[sp.x][sp.y] = TB_POISON;
}
由于srand()每次指定rand()入口,调用srand()后立即调用rand()会使rand()返回一致的数值:srand()序列起点。就算srand()由time()指定,也只有60种不同的情况
luobonic
驼背老人
等 级:
发表于:2007-12-02 20:49:365楼 得分:0
time()返回time_t,这个time_t表示当前年+月+日+小时+秒,所以如果从开始调用到结束调用不垮小时的话只有60种情况
http://topic.csdn.net/u/20071202/17/9c868f82-40d9-4c6b-98d6-807aa63d00e5.html
dychenyi收录,时间:2007-11-28 13:29:44 | 相关网摘,我也收藏
Big endian machine: It thinks the first byte it reads is the biggest.
Little endian machine: It thinks the first byte it reads is the littlest.
举个例子,从内存地址0x0000开始有以下数据
0x0000 0x12
0x0001 0x34
0x0002 0xab
0x0003 0xcd
如果我们去读取一个地址为0x0000的四个字节变量,若字节序为big-endian,则读出
结果为0x1234abcd;若字节序位little-endian,则读出结果为0xcdab3412.
如果我们将0x1234abcd写入到以0x0000开始的内存中,则结果为
big-endian little-endian
0x0000 0x12 0xcd
0x0001 0x23 0xab
0x0002 0xab 0x34
0x0003 0xcd 0x12
x86系列CPU都是little-endian的字节序.
http://hi.baidu.com/aberlee/blog/item/8cce88337db1f141ad4b5ff4.html
dychenyi收录,时间:2007-11-28 13:29:36 | 相关网摘,我也收藏
代表该对象的地址?
这就引出了大端(Big Endian)与小端(Little Endian)的问题。
如果LSB在MSB前面, 既LSB是低地址, 则该机器是小端; 反之则是大端。
DEC (Digital Equipment Corporation,现在是Compaq公司的一部分)和Intel的机器(X86平台)一般采用小端。
IBM, Motorola(Power PC), Sun的机器一般采用大端。
当然,这不代表所有情况。有的CPU即能工作于小端, 又能工作于大端, 比如ARM, Alpha,摩托罗拉的PowerPC。 具体情形参考处理器手册。
具体这类CPU是大端还是小端,应该和具体设置有关。
(如,Power PC支持little-endian字节序,但在默认配置时是big-endian字节序)
一般来说,大部分用户的操作系统(如windows, FreeBsd,Linux)是Little Endian的。少部分,如MAC OS ,是Big Endian 的。
所以说,Little Endian还是Big Endian与操作系统和芯片类型都有关系。
Linux系统中,你可以在/usr/include/中(包括子目录)查找字符串BYTE_ORDER(或
_BYTE_ORDER, __BYTE_ORDER),确定其值。BYTE_ORDER中文称为字节序。这个值一般在endian.h或machine/endian.h文件中可以找到,有时在feature.h中,不同的操作系统可能有所不同。
对于一个数0x1122
http://hi.baidu.com/serial_story/blog/item/7e110587c3ed8e29c75cc3c7.html
dychenyi收录,时间:2007-11-28 11:44:24 | 相关网摘,我也收藏
#include
// VC环境必然little-endian
int main()
{
int a[5]={1,2,3,4,5};
int *ptr1=(int *)(&a+1);
// a本身就为一个数组的地址,其值=&a[0],即数组第一个元素的地址,对a再取址
// &a = a,似乎没什么不同,其实这里发生了对齐变更,a+1的对齐是以int为界的
// 而&a+1是以整个数组为单位的,即5个int=20字节,这是关键!!!
// 那么&a+1实际是跨越了整个数组,可得ptr1存储了数组a最后一个元素5紧跟着的一个int的地址
int *ptr2=(int *)((int )a+1);
// 同理,(int)a先将其值(地址)转为整型值,再加一成为一个新的整数
// (int *)将这个值转换为一个指向int型变量的指针(地址)
// ptr2即存储了这个地址和指向的变量的类型
printf("%x,%x",ptr1[-1],*ptr2);
// 先解释一下a[-1],即将数组向前偏差一个类型大小的距离
// 数组a的内存布局(16进制):01000000 02000000 03000000 04000000 05000000
// ptr1[-1]
// 你说这里等于什么呢?数组a最后一个元素(5)紧跟着一个int的前面一个元素当然就是5了。
// *ptr2
// ptr2的值为a保存的地址值的绝对值+1,假设a=1000,那么(int)a+1=1001。
// 而后将其再转为(int *)指针,那么指针指向的内存布局为000000 02,即向后移了一个字节
// 那么在little-enddian架构下显示出来为02000000,低位在高地址。
return 0;
}
http://topic.csdn.net/u/20071127/17/d521c586-bc0a-4c31-bcfe-5d90f0ed7c5e.html
dychenyi收录,使用标签:无库(exe)->SLL(.lib)->DLL(.dll)->COM(.dll)->OLE, Control, eXtention(.ocx)->ActiveX, Control(.ocx),时间:2007-11-20 10:44:48 | 相关网摘,我也收藏
脑袋快糨糊了,停下来,理理头绪。标题是今天早上到目前为止一直试图理清楚的概念,加上顺序和箭头表示这是windows组件化软件开发的发展进化道路。详细一点:
无库(exe)->SLL(.lib)->DLL(.dll)->COM(.dll)->OLE Control eXtention(.ocx)->ActiveX Control(.ocx)
1.SLL(Static Link Library)和DLL(Dynamic Link Library)静动态链接库,区别是静态库是整个要在编译时就导入调用程序,运行时无需SLL了,DLL可以编译时就导入(例如,import ADO.dll),也开以在运行时静态加载,或者动态加载和释放,升级时更换DLL完全不会影响主调程序运行,只要维持原游接口不变。
DLL是组件化的开始,它使应用程序更加灵活了。
2.COM组件对象模型是二进制层次上(不分开发语言)组件规范和标准,组件对象模型(COM)将DLL概念扩充到了面向对象编程。对象能够从另外一个进程调用或者在另外一台机器上运行。COM对象有一个唯一的GUID并且能够实现强大的后台以简化如Visual Basic和ASP这样的GUI前台应用。早期COM的实现也是一个DLL文件,不过库的内容是符合COM规范的接口和对象,而不再是任意的函数,类或变量常量,与传统DLL不同的是,作为COM服务器DLL需要将GUID和Path记录在操作系统注册表中,客户应用程序则通过GUID创建对象获取接口调用服务。
从COM开始,组件开始跨平台跨语言跨进程跨机器,完全面向对象。
3.COM is the foundation technology for Microsoft's OLE (compound documents) and ActiveX(Internet-enabled components) technologies。OLE Control eXtension-OCX是基于标准COM接口来实现的OLE(对象连接与嵌入)组件,开发时需要实现的接口也更加庞大了,OCX的典型应用时MS Studio里的那些UI控件。
OCX在COM组件的基础上增加了更多功能特点,组件开始具备UI界面,持续属性,事件和方法,可以向容器通知自定义事件。
4. OLE Control96是ActiveX控件的基础,OC96规范的特点是让OCX控件尺寸变小,速度更快,它还可使控件可以没有窗口句柄而存在,是自定义控件历史上第一次出现无窗口控件,可以说ActiveX是小巧的面向Internet Explorer技术的OCX控件,ActiveX控件典型应用是浏览器插件,flash player之类的,是Active X控件使Web页面播放音频视频成为可能。
组件开发常用MFC/ATL,组件开发是下半年学习的重点了,开发上有这些库和VStudio大多简单,但原理上越来越复杂,架子越来越大了,考虑因素越来越多了。
http://topic.csdn.net/u/20071119/10/bf941f83-7d39-4617-ad7e-da756118a188.html
dychenyi收录,时间:2007-11-19 16:21:33 | 相关网摘,我也收藏
Top
1 楼tengyilong(脱胎换骨)回复于 2002-07-12 16:47:34 得分 0 在MFC中的CMutex等类用起来还是蛮方便的,不知道标准C和C++里有什么机制来实现互斥访问。
Top
2 楼kaku_you(正义的味方)回复于 2002-07-12 17:07:22 得分 80pthread_mutex_t
我没用过,只知道有这么个东西,好像是posix标准里的
Top
3 楼tengyilong(脱胎换骨)回复于 2002-07-12 17:19:41 得分 0 什么东东,好像msdn里找不到啊。
大侠说得详细点。
Top
相关问题求帖临界资源的互斥访问的实现
如何在C里边实现临界区(通过互斥信号量)
救急!vb+SQL server中怎样对临界资源实现互斥访问和修改!
互斥访问的问题?
使用互斥区互斥访问资源的问题。
对资源互斥访问的问题
互斥访问问题___急用
有关多进程访问数据库的互斥问题。
如何实现一段代码访问的互斥性?
这种环境下需要互斥访问吗?
关键词
http://topic.csdn.net/t/20020712/16/869947.html
dychenyi收录,时间:2007-11-19 16:03:49 | 相关网摘,我也收藏
class T>
inline const T& max(const T& a, const T& b)
{ return a > b ? a : b; }
3. string *stringarray1 =static_cast(malloc(10 * sizeof(string)));
string *stringarray2 = new string[10];
其结果是,stringarray1确实指向的是可以容纳10个string对象的足够空间,但内存里并没有创建这些对象。而且,如果你不从这种晦涩的语法怪圈(详见条款m4和m8的描述)里跳出来的话,你没有办法来初始化数组里的对象。换句话说,stringarray1其实一点用也没有。相反,stringarray2指向的是一个包含10个完全构造好的string对象的数组,每个对象可以在任何读取string的操作里安全使用。
把new和delete与malloc和free混在一起用也是个坏想法。对一个用new获取来的指针调用free,或者对一个用malloc获取来的指针调用delete,其后果是不可预测的。大家都知道“不可预测”的意思:它可能在开发阶段工作良好,在测试阶段工作良好,但也可能会最后在你最重要的客户的脸上爆炸。
如果你调用new时用了[],调用delete时也要用[]。如果调用new时没有用[],那调用delete时也不要用[]。
17.Malloc的一个问题
对于malloc在ANSI C之前的C版本中,还需要用类型转换运算符。
http://blog.csdn.net/hongweijin/archive/2007/09/01/1768214.aspx
dychenyi收录,时间:2007-11-19 8:57:35 | 相关网摘,我也收藏
标准答案来了,各位注意审题。
//////////////////////////////////
#define compare(a,b) ((a)-(b))
//////////////////////////////////
CUG87525842
小优
等 级:
发表于:2007-11-18 20:49:2433楼 得分:0
#define max(a,b) (((a+b)+fabs(a-b))/2)
PcrazyC
等 级:
发表于:2007-11-18 17:44:2129楼 得分:0
浮点数的比较应该可以用==,虽然浮点数在储存的过程中可能会有误差,但同一个数在内存中储存的肯定相同,另外不同的数(如果在浮点数的精度内)在内存中的储存应该存在一定的差异,不然的话那就不是精度了.
http://topic.csdn.net/u/20071117/20/4b8aed52-1bfb-487c-849f-d6e0b220537d.html
dychenyi收录,时间:2007-11-15 15:57:21 | 相关网摘,我也收藏
厂商已经给了如下的文件:
Upsmate.mib
RFC1155-SMI-rfc1155.txt
RFC1213-MIB-rfc1213.txt
RFC-1212-rfc1212.txt
RFC-1215-rfc1215.txt
现在我使用WinSNMP的相关API,已经作了一个程序,但是不知道怎么获得UPS的具体运行状态。
SnmpRecvMsg、SnmpGetPduData、SnmpGetVb这些函数分析出来的东西里面,怎么查数据呢?
我是这两天才开始接触SNMP,完全是菜鸟!
我在网上查了很多的例子,但是都没有说明怎么通过SNMP来提取具体内容的。
比如我即使通过SnmpRecvMsg获得一个消息,我怎么知道里面到底是什么含意呢?
烦请众位大虾指点一二,最好能够有一个足够方便修改的例子,怎么通过SNMP协议获得一个设备的具体参数内容。
谢谢!!
http://topic.csdn.net/u/20071026/17/0ebe51ad-628d-4ea8-8128-801ff7369f1b.html?86158758
dychenyi收录,时间:2007-11-12 10:47:20 | 相关网摘,我也收藏
对于这个问题:首先说明一下不带虚函数时候的情况,其分配规则为:
VC对一些变量的起始地址做了“对齐”处理。在默认情况下,VC规定1.各成员变量存放的起始地址相对于结构的起始地址的偏移量必须为该变量的类型所占用的字节数的倍数。下面列出常用类型的对齐方式(vc6.0,32位系统)。
类型 对齐方式(变量存放的起始地址相对于结构的起始地址的偏移量)
Char 偏移量必须为sizeof(char)即1的倍数
Short 偏移量必须为sizeof(short)即2的倍数
int 偏移量必须为sizeof(int)即4的倍数
float 偏移量必须为sizeof(float)即4的倍数
double 偏移量必须为sizeof(double)即8的倍数
各成员变量在存放的时候根据在结构中出现的顺序依次申请空间,同时按照上面的对齐方式调整位置,空缺的字节VC会自动填充。同时2.VC为了确保结构的大小为结构的字节边界数(即该结构中占用最大空间的类型所占用的字节数)的倍数,所以在为最后一个成员变量申请空间后,还会根据需要自动填充空缺的字节。
===========================
上面红色的部分是两条主要的规则。而绿色的部分是解决这个问题的关键。
代码实例1
C/C++ code
#include
using namespace std;
class A
{
double a;
char b;
int c;
};
void main()
{
cout < }
对于你的问题,我们把最后的虚函数改为int ;根据规则1,a占8个字节,b占1个字节,而后c要根据规则1对齐,所以b后面会有3个字节被填充掉,c从b后的第4个字节开始。它占4个,最后结果是:8+(1+3)+4=16。同时符合了规则2。所以为16。
用图表示为:
--
a 8个字节
---
b 一个字节
----
三个填充字节
-----
c 四个字节
---
那么现在请注意上面文字中的绿色部分。我们改变一下顺序。
代码实例2
C/C++ code
#include
using namespace std;
class A
{
int c;
double a;
char b;
};
void main()
{
cout < }
那么开始的c占4个字节,根据规则1,a在分配之前,c和a之间的距离应该为8,即c后面有4个空间需要被填充。对于b,其占一个字节。所以最后是(4+4)+8+1=17;根据规则2,整个类要是8的倍数,所以b后面会再填充7个,即17+7=24。
图示:
----
c 四个字节
----
4个填充
----
a 八个字节
---
b 一个字节
----
七个填充字节
------
接下来是本帖的解答:
既然虚函数指针也是4个字节,那么结果为什么不是16呢?而是24呢。?
因为在分配空间的时候,其顺序是先分配虚函数表指针,然后才是变量的。所以虚函数在类中的位置对类的大小无影响,其始终是在最前面的。
用图实例:
----
vptable 4个字节
-------
4个填充
-----
a 八个
-----
b 一个
-----
7个填充。。
==========
总结:本帖的关键是虚函数表指针不是按照它在类中出现的顺序分配的,而是总是首先被分配的。你可以把他放到类中的其他位置,做实验,始终是24。。。。
http://topic.csdn.net/u/20071110/22/9c60e7a4-2de7-452a-98ad-fb449f428286.html
dychenyi收录,时间:2007-11-7 13:46:09 | 相关网摘,我也收藏
的),这种接口就只能通过自动化的方式来调用,COM组件的事件一般都用的是这种形式的接口。
Custom接口就是从IUnknown接口派生的类,显然它就只能用虚函数表的方式来调用接口了
(4) COM组件有三种,进程内、本地、远程。对于后两者情况必须调度接口指针及函数参数。
COM是一个DLL,它有三种运行模式。它可以是进程内的,即和调用者在同一个进程内,也可以和调用者在同一个机器上但在不同的进程内,还可以根本就和调用者在两台机器上。这里有一个根本点需要牢记,就是COM组件它只是一个DLL,它自己是运行不起来的,必须有一个进程象父亲般照顾它才行,即COM组件必须在一个进程内.那谁充当看护人的责任呢?先说说调度的问题。调度是个复杂的问题,以我的知识还讲不清楚这个问题,我只是一般性的谈谈几个最基本的概念。我们知道对于WIN32程序,每个进程都拥有4GB的虚拟地址空间,每个进程都有其各自的编址,同一个数据块在不同的进程里的编址很可能就是不一样的,所以存在着进程间的地址转换问题。这就是调度问题。对于本地和远程进程来说,DLL 和客户程序在不同的编址空间,所以要传递接口指针到客户程序必须要经过调度。Windows 已经提供了现成的调度函数,就不需要我们自己来做这个复杂的事情了。对远程组件来说函数的参数传递是另外一种调度。DCOM是以RPC为基础的,要在网络间传递数据必须遵守标准的网上数据传输协议,数据传递前要先打包,传递到目的地后要解包,这个过程就是调度,这个过程很复杂,不过Windows已经把一切都给我们做好了,一般情况下我们不需要自己来编写调度DLL。
http://www.3800cc.com/Article/cxsj/vc/mbzjlvc/2005-08-06/Article_33065.html
dychenyi收录,时间:2007-11-5 17:01:23 | 相关网摘,我也收藏
,在许多并行算法中,只要一个结点犯错误,所有计算都会前功尽弃。
那么Google是如何开发出既有效率又能容错的并行计算的呢?
Google最资深的计算机科学家Jeff Dean认识到,Google所需的绝大部分数据处理都可以归结为一个简单的并行算法:Map and Reduce(http://labs.google.com/papers/mapreduce.html)。这个算法能够在很多种计算中达到相当高的效率,而且是可扩展的(也就是说,一千台机器就算不能达到一千倍的效果,至少也可以达到几百倍的效果)。Map and Reduce的另外一大特色是它可以利用大批廉价的机器组成功能强大的server farm。最后,它的容错性能异常出色,就算一个server farm宕掉一半,整个fram依然能够运行。正是因为这个天才的认识,才有了Map and Reduce算法。借助该算法,Google几乎能无限地增加计算量,与日新月异的互联网应用一同成长。
算法并不局限于计算机和网络
举一个计算机领域外的例子:在高能物理研究方面,很多实验每秒钟都能几个TB的数据量。但因为处理能力和存储能力的不足,科学家不得不把绝大部分未经处理的数据丢弃掉。可大家要知道,新元素的信息很有可能就藏在我们来不及处理的数据里面。同样的,在其他任何领域里,算法可以改变人类的生活。例如人类基因的研究,就可能因为算法而发明新的医疗方式。在国家安全领域,有效的算法可
http://labs.google.com/papers/mapreduce.html
共539个网摘 [
1 ...
8 9 10 11 12 13 14 15 16 17 18 ]
上一页 |
下一页