09 2011 档案

.h头文件 .lib动态链接库文件 .dll 动态链接库
摘要:.h头文件是编译时必须的,lib是链接时需要的,dll是运行时需要的。附加依赖项的是.lib不是.dll,若生成了DLL,则肯定也生成 LIB文件。如果要完成源代码的编译和链接,有头文件和lib就够了。如果也使动态连接的程序运行起来,有dll就够了。在开发和调试阶段,当然最好都有。.h .lib .dll三者的关系是:H文件作用是:声明函数接口DLL文件作用是: 函数可执行代码当我们在自己的程序中引用了一个H文件里的函数,编链器怎么知道该调用哪个DLL文件呢?这就是LIB文件的作用: 告诉链接器 调用的函数在哪个DLL中,函数执行代码在DLL中的什么位置,这也就是为什么需要附加依赖项 .LIB 阅读全文

posted @ 2011-09-30 20:24 sxzxcm 阅读(858) 评论(0) 推荐(2) 编辑

一个配置文件管理类
摘要:贴一个我最近写的一个配置文件的管理类,大家看看有什么bug。配置文件中安linux风格用'#'做注释,数据行按照"参数名=参数值"的方法组织。用法:1.先setFileName设定配置文件的文件名,或者在初始化的时候指定;2. 调loadConfigs函数,该函数会将配置文件中合法的数据行载入到一个map中,如果文件打开失败,该函数返回false,否则返回true;3.调用getValue/setValue进行参数的读取和修改,在读取/修改时,函数第一个参数是要读取/修改的参数名,第二个参数是读取/修改的数值。如果指定的参数名不存在函数返回false,否则返 阅读全文

posted @ 2011-09-30 16:42 sxzxcm 阅读(525) 评论(0) 推荐(0) 编辑

使用stringstream对象简化类型转换
摘要:C++标准库中的<sstream>提供了比ANSI C的<stdio.h>更高级的一些功能,即单纯性、类型安全和可扩展性。在本文中,我将展示怎样使用这些库来实现安全和自动的类型转换。为什么要学习如果你已习惯了<stdio.h>风格的转换,也许你首先会问:为什么要花额外的精力来学习基于<sstream>的类型转换呢?也许对下面一个简单的例子的回顾能够说服你。假设你想用sprintf()函数将一个变量从int类型转换到字符串类型。为了正确地完成这个任务,你必须确保证目标缓冲区有足够大空间以容纳转换完的字符串。此外,还必须使用正确的格式化符。如果使用了 阅读全文

posted @ 2011-09-30 16:01 sxzxcm 阅读(402) 评论(0) 推荐(1) 编辑

Win32多线程编程 — 线程同步与通信
摘要:一.线程间数据通信系统从进程的地址空间中分配内存给线程栈使用。新线程与创建它的线程在相同的进程上下文中运行。因此,新线程可以访问进程内核对象的所有句柄、进程中的所有内存以及同一个进程中其他所有线程的栈。这样一来,同一个进程中的多个线程可以很容易的相互通信。到目前为止,将数据从一个线程传到另一个线程的惟一方法是在创建线程时传递给新线程一个指针参数(LPVOIDlpParam)。参数lpParam为LPVOID指针类型,我们可在其中存储普通的数值(size为平台地址总线宽度),也可以存放指向某个数据结构(struct或class)的地址。在新线程函数中,解引用时需要强制类型转换回原类型,以进行正确 阅读全文

posted @ 2011-09-26 23:42 sxzxcm 阅读(9170) 评论(0) 推荐(0) 编辑

激活码方式注册的实现原理述
摘要:加密混淆授权1.软件授权方式概述目前,商用软件和共享软件绝大部份都是采用注册码授权的方式来保证软件本身不被盗用,以保证自身的利益。尽管很多常用的许多软件系统的某些版本已经被别人破解,但对于软件特殊行业而言,注册码授权的方式还是一种保护软件系统本身的一种有效的手段。通常而言,注册码授权方式有以下几种方式:l安装序列号方式这是最为常用的方式,Microsoft提供的产品(例如:Windows系列产品、Office系列产品等等)都是采用这种方式。通过一种复杂的算法生成安装序列号,在安装过程中,安装程序对用户输入的安装序列号进行校验来验证该系统是否被合法,从而完成授权。l用户名+序列号方式即软件系统的 阅读全文

posted @ 2011-09-26 20:29 sxzxcm 阅读(36012) 评论(3) 推荐(1) 编辑

大型网站采用的具有稳定性的系统构架
摘要:千万级的注册用户,千万级的帖子,nTB级的附件,还有巨大的日访问量,大型网站采用什么系统架构保证性能和稳定性? 首先讨论一下大型网站需要注意和考虑的问题。 数据库海量数据处理:负载量不大的情况下select、delete和update是响应很迅速的,最多加几个索引就可以搞定,但千万级的注册用户和一个设计不好的多对多关系将带来非常严重的性能问题。另外在高UPDATE的情况下,更新一个聚焦索引的时间基本上是不可忍受的。索引和更新是一对天生的冤家。 高并发死锁:平时我们感觉不到,但数据库死锁在高并发的情况下的出现的概率是非常高的。 文件存储的问题:大型网站有海量图片数据、视频数据、文件数据等... 阅读全文

posted @ 2011-09-26 18:06 sxzxcm 阅读(591) 评论(0) 推荐(0) 编辑

浅谈大型网站动态应用系统架构
摘要:动态应用,是相对于网站静态内容而言,是指以c/c++、php、Java、perl、.net等服务器端语言开发的网络应用软件,比如论坛、网络相册、交友、BLOG等常见应用。动态应用系统通常与数据库系统、缓存系统、分布式存储系统等密不可分。 大型动态应用系统平台主要是针对于大流量、高并发网站建立的底层系统架构。大型网站的运行需要一个可靠、安全、可扩展、易维护的应用系统平台做为支撑,以保证网站应用的平稳运行。 大型动态应用系统又可分为几个子系统: 1)Web前端系统 2)负载均衡系统 3)数据库集群系统 4)缓存系统 5)分布式存储系统 6)分布式服务器管理系统 7)代码分发系统 ... 阅读全文

posted @ 2011-09-26 17:24 sxzxcm 阅读(350) 评论(0) 推荐(0) 编辑

extern 用法,全局变量与头文件(重复定义)
摘要:用#include可以包含其他头文件中变量、函数的声明,为什么还要extern关键字,如果我想引用一个全局变量或函数a,我只要直接在源文件中包含#include<xxx.h>(xxx.h包含了a的声明)不就可以了么,为什么还要用extern呢??这个问题一直也是似是而非的困扰着我许多年了,今天上网狠狠查了一下总算小有所获了:头文件首先说下头文件,其实头文件对计算机而言没什么作用,她只是在预编译时在#include的地方展开一下,没别的意义了,其实头文件主要是给别人看的。我做过一个实验,将头文件的后缀改成xxx.txt,然后在引用该头文件的地方用#include"xxx.t 阅读全文

posted @ 2011-09-26 17:15 sxzxcm 阅读(21293) 评论(3) 推荐(9) 编辑

C/C++数据对齐
摘要:为了避免混淆,做如下规定,以下代码若不加特殊说明都运行于32位平台,结构体的默认对齐值是8,各数据类型所占字节数分别为char占一个字节int占四个字节double占八个字节。两个例子请问下面的结构体大小是多少?struct Test{ char c ; int i ;};这个呢?struct Test1{ int i ; double d ; char c ;};在公布答案之前先看一下对齐的规则。对齐规则一般来说,结构体的对齐规则是先按数据类型自身进行对齐,然后再按整个结构体进行对齐,对齐值必须是2的幂,比如1,2, 4, 8, 16。如果一个类型按n字节对齐,... 阅读全文

posted @ 2011-09-26 16:58 sxzxcm 阅读(610) 评论(0) 推荐(0) 编辑

再议gluPerspective和gluLookAt的关系
摘要:看了Opengl的相关程序,发现有些东西还是特别迷茫,尤其是gluLookAt的函数做啥用的,而gluPerspective又有什么功能. 在网上查看到了这篇: 终于搞明白gluPerspective和gluLookAt的关系了(zz) http://cowboy.1988.blog.163.com/blog/static/751057982010101574732212/ 我感觉它里面没有说清楚这些函数到底是做什么用的,只是说了不同的参数有什么效果. 我相信它做法是对的,但我更希望获取why to do it? not just how to do it. 然后在网上又搜索到了: ... 阅读全文

posted @ 2011-09-12 12:45 sxzxcm 阅读(23340) 评论(7) 推荐(8) 编辑

导航