当前位置: 编程技术>c/c++/嵌入式
本页文章导读:
▪Windows API 逐个逐个学(3)----Windows系统基本服务API GetSystemDirectory 贴代码VC++ code: 1 /* ************************************ 2 *《精通Windows API》 3 * 示例代码 4 * basic.c 5 * 2.2 Windows API的功能分类 6 **************************************/ 7 8 /* 头文件 */ 9 #include <windows.h>10 1.........
▪[zlib]使用Intel PPL来提zlib高性能 服务器经常会用到压缩,zlib是默认选择,虽然还有很多其他的快速压缩算法,比如snappy和lz4.可是zlib拥有最广泛的支持和良好的压缩率,就是速度太不理想了.intel有一个高性能库ppl,期中包含zlib的优.........
▪分离浮点数的整数和小数部分 问题描述:如何将获取一个浮点数的整数部分以及小数部分 方法一: 1 #include <iostream> 2 using namespace std; 3 4 void main() 5 { 6 float f = -23.04f; 7 int i = f; 8 float .........
[1]Windows API 逐个逐个学(3)----Windows系统基本服务API GetSystemDirectory
贴代码
VC++ code:
1 /* ************************************
2 *《精通Windows API》
3 * 示例代码
4 * basic.c
5 * 2.2 Windows API的功能分类
6 **************************************/
7
8 /* 头文件 */
9 #include <windows.h>
10
11 /* ************************************
12 * 功能 获取系统目录信息,并存储到文件中
13 **************************************/
14 int main1(int argc, TCHAR argv[])
15 {
16 //文件句柄
17 HANDLE hFile;
18
19 DWORD dwWritten;
20 //字符数组,用于存储系统目录
21 TCHAR szSystemDir[MAX_PATH];
22 //获取系统目录
23 GetSystemDirectory(szSystemDir,MAX_PATH);
24
25 //创建文件systemroot.txt
26 hFile = CreateFile("systemroot.txt",
27 GENERIC_WRITE,
28 0,NULL,CREATE_ALWAYS,
29 FILE_ATTRIBUTE_NORMAL,
30 NULL);
31 //判断文件是否创建成功
32 if(hFile != INVALID_HANDLE_VALUE)
33 {
34 //将系统目录系统信息写入文件
35 if(!WriteFile(hFile,szSystemDir,lstrlen(szSystemDir),&dwWritten,NULL))
36 {
37 return GetLastError();
38 }
39 }
40 //关闭文件,返回。
41 CloseHandle(hFile);
42 return 0;
43 }
2 *《精通Windows API》
3 * 示例代码
4 * basic.c
5 * 2.2 Windows API的功能分类
6 **************************************/
7
8 /* 头文件 */
9 #include <windows.h>
10
11 /* ************************************
12 * 功能 获取系统目录信息,并存储到文件中
13 **************************************/
14 int main1(int argc, TCHAR argv[])
15 {
16 //文件句柄
17 HANDLE hFile;
18
19 DWORD dwWritten;
20 //字符数组,用于存储系统目录
21 TCHAR szSystemDir[MAX_PATH];
22 //获取系统目录
23 GetSystemDirectory(szSystemDir,MAX_PATH);
24
25 //创建文件systemroot.txt
26 hFile = CreateFile("systemroot.txt",
27 GENERIC_WRITE,
28 0,NULL,CREATE_ALWAYS,
29 FILE_ATTRIBUTE_NORMAL,
30 NULL);
31 //判断文件是否创建成功
32 if(hFile != INVALID_HANDLE_VALUE)
33 {
34 //将系统目录系统信息写入文件
35 if(!WriteFile(hFile,szSystemDir,lstrlen(szSystemDir),&dwWritten,NULL))
36 {
37 return GetLastError();
38 }
39 }
40 //关闭文件,返回。
41 CloseHandle(hFile);
42 return 0;
43 }
VB6 code:
1 Public Function GetSysDirectory() As String
2 '取得系统目录
3 Dim strSysDir As String, filePath As String
4 filePath = App.Path & "\systemroot.txt"
5
6 strSysDir = Space(200)
7 Call GetSystemDirectory(strSysDir, 200)
8 strSysDir = left(strSysDir, InStr(strSysDir, Chr(0)) - 1)
9
10 Open filePath For Output As #1
11 Print #1, strSysDir
12 Close #1
13 End Function
2 '取得系统目录
3 Dim strSysDir As String, filePath As String
4 filePath = App.Path & "\systemroot.txt"
5
6 strSysDir = Space(200)
7 Call GetSystemDirectory(strSysDir, 200)
8 strSysDir = left(strSysDir, InStr(strSysDir, Chr(0)) - 1)
9
10 Open filePath For Output As #1
11 Print #1, strSysDir
12 Close #1
13 End Function
运行结果:
在当前目录下会生成systemroot.txt.
本文链接
[2][zlib]使用Intel PPL来提zlib高性能
服务器经常会用到压缩,zlib是默认选择,虽然还有很多其他的快速压缩算法,比如snappy和lz4.可是zlib拥有最广泛的支持和良好的压缩率,就是速度太不理想了.
intel有一个高性能库ppl,期中包含zlib的优化.使用方式比较简单,就是链接一下就OK,性能大约可以提升30%左右.
我把ppl装到/usr/local/ppl下面,所以有可能会需要添加include路径,看你需要初始化CPU么.
include目录/usr/local/ipp/ipp/include
然后是静态库/动态库目录:
/usr/local/ipp/composer_xe_2013.1.117/ipp/lib/intel64
/usr/local/ipp/composer_xe_2013.1.117/ipp/interfaces/data-compression/ipp_zlib/bin/intel64
再然后是链接,因为ppl的zlib和zlib兼容,所以头文件可以用zlib的,
依次链接ipp_z,ippdc_l,ipps_l,ippcore_l这几个库
如果是动态链接的话,去掉_l就可以了.
lz4的速度不错,也可以考虑一下 http://code.google.com/p/lz4/
PS:
Intel的PPL库,不贵,如果是商业使用,请支持正版.
非商业的话,可以申请一个免费的License.
本文链接
[3]分离浮点数的整数和小数部分
问题描述:如何将获取一个浮点数的整数部分以及小数部分
方法一:
1 #include <iostream>
2 using namespace std;
3
4 void main()
5 {
6 float f = -23.04f;
7 int i = f;
8 float ff = f - i;
9
10 cout << "i=" << i << ", ff=" << ff << endl;
11 }
2 using namespace std;
3
4 void main()
5 {
6 float f = -23.04f;
7 int i = f;
8 float ff = f - i;
9
10 cout << "i=" << i << ", ff=" << ff << endl;
11 }
output:
i=-23, ff=-0.0400009
缺点:不能够精确小数的位数,因为小数部分是由差求得,会丢失部分精度。
方法二:
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
void main()
{
float f = -23.04f;
int i = 0;
float ff = 0.0f;
stringstream ss;
ss << f;
ss >> i >> ff;
cout << "i=" << i << ", ff=" << ff << endl;
}
output:
i=-23, ff=0.04
缺点:小数部分无法获取浮点数的正负号
方法三:
void FloatData(float f)
{
float fp = f;
unsigned char *p = ( unsigned char *)&fp;
int nSign = 1;
/*符号位*/
if(*(p+ 3) & 0x80) /*获取最高位,如果是1则为负*/
{
nSign = - 1;
最新技术文章:
 
站内导航:
特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!