自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 资源 (1)
  • 收藏
  • 关注

转载 CGI编程

CGI 可以执行 del mkdir ipconfig 这样的cmd 命令:////system(temp); //没有重定向,所以没有显示////char cmd[256] = { 0 };//sprintf(cmd, "%s>cmd.txt", temp); //打印到文件 cmd.txt中,然后再读出来即可。//system(cmd);#define _CRT_SECURE_

2016-08-29 17:42:24 387

转载 非缓冲文本操作

#define _CRT_SECURE_NO_WARNINGS#include#include#include#include //控制文件打开#include //系统底层//文件实时复制void main(){ char *path = "E:\\q1.txt"; char *pathnew = "c:\\newq.txt"; int pfr = _open(p

2016-08-29 12:13:51 420

原创 CGI相关知识

CGI的C语言代码里最好不要使用 syste("pause");这样的暂停语句,这里会导至网页无法往下运行下去。

2016-08-29 12:12:08 334

转载 编码转换

如果使用CGI 从前台获到的字符串有时需要进行编码转换,下面就是对中文字符的编码进行转换。详见代码:%D6%D0%B9%FA:的中文编码为:中国#define _CRT_SECURE_NO_WARNINGS#include#include#includechar * chang(char *str){ char *tempstr = malloc(strlen(str

2016-08-29 10:45:52 469 1

转载 密码库

生成密码库可以查询密码使用最多的字符串:思路:从文本文件中提取密码字符串,保存在链表中,链表有密码字段和密码出现次数的字段,当有新的密码出现就开辟一个新的空间,如果出现的密码在链表字段中,就把相应的密码次数加 1 。相应代码如下:密码.h#define _CRT_SECURE_NO_WARNINGS#include#include#includetypedef stru

2016-08-25 15:10:25 6654 1

转载 数据挖掘

从文本文件或字符串中进行数据提取或挖掘:这时就需要用到格式输入字符串函数:sscanf() - 从一个字符串中读进与指定格式相符的数据。swscanf()- 用于处理宽字符字符串,和sscanf功能相同。而 scanf() 按用户指定的格式从键盘上把数据输入到指定的变量之中。fscanf()其功能为根据数据格式(format)从输入流(stream)中写入数据(argument)

2016-08-25 09:31:55 255

转载 文本文件大数据查询

大数据查询的步骤://读入到内存、排序、写入到文件、创建索引、二分查找下面代码听课时写的有点乱,可以按上面的 步骤来实现。#define _CRT_SECURE_NO_WARNINGS#include#include#include#include#define LINE 10000000//读入到内存、排序、写入到文件、创建索引、二分查找char **g_pp

2016-08-25 09:07:00 1736

转载 大数据索引

体会代码,有二种方式。第一种是初始化索引,第二种是在第一种建立好索引的基础上使用的移动文件指针的方式,减少读入内存数据的方式移动指针。详见下面代码:#define _CRT_SECURE_NO_WARNINGS#include#include#include#include#define N 84357484//读取大数据有多少行(不知道行数,无法开辟内存空间)//把索引读入

2016-08-23 16:24:34 1160

转载 多线程多文件查询

多线程多文件查询所使用的场景:当要查询的内容存在多个文件中,如果一个个调用,比较麻烦,所以这时可以使用多线程多文件查询,让一个线程查询一个文件,这样就可以解决一次性查询多个文件的工作。如果要查询的文件较大,可以让线程一次只执行一部分,等当前线程查询结束时,清理此线程所占用的空间,然后再载入其它线程继续查询。本程序 查询了10个文件的,使用了10个线程,而一次加载10个文件到内存中,如果内存空间

2016-08-19 15:55:46 393

转载 二进制文件排序及文件二分法查询

二进制文件排序,注意这个使用的场景:   如果文件较大,无法一次性读入到内存中,可以使用这样的排序法对文件进行排序,排序好的文件可以使用 文件二分查询法 对文件进行查询。 注意这儿的 文件二分查询法与普通 的 二分查询法的不同,这儿是操作的文件指针进行移动来查询。详见下面的代码:#define _CRT_SECURE_NO_WARNINGS#include#include#defi

2016-08-19 15:37:43 1769

转载 多线程查询数据

多线程查询数据:此处主要是对内存与数据的联系的理解,如使用到的地二级指针#define _CRT_SECURE_NO_WARNINGS#include#include#include#include#include#define N 2027358char **g_bh;void init(char *path){ //初始化 printf("init sta

2016-08-16 17:14:49 2172

转载 内存数据查询

海量数据查询:由于要查询的数据较多,如果在磁盘上进行查询则速度较慢,这时可以把要查询的相关数据读到内存中,然后再进行查询。这儿是使用的把数据按行读入到内存中,然后在内存中进行查询。这儿需要注意的几个问题是开辟内存时的初始化工作,比如初始化 memset(g_bh, "\0", sizeof(char *)*NUM); //初始化时这儿不小心把 '\0' 写成了 "\0",结果造

2016-08-16 16:59:23 962

转载 文件批量修改

文件批量修改,其中使用到了获取目录下所有文件的字符拼接技巧,代码如下://这样可以批量修改文件#define _CRT_SECURE_NO_WARNINGS#include#include#includevoid changAll(char *path){ char list[50] = "D:\\list.txt"; char cmd[100]; remove(lis

2016-08-12 17:04:04 355

转载 文件操作-按行加密解密

文本文件按行加密和解密这样可以保证文本文件的安全性,即使用文本文件丢失也不会造成文件内容的泄密。按行加密有一点就是 \n 的转换 与一行的判断。因为是按行加密的,而一行的结束标识是 \n,字符串的结束标识是 \0 而当遇到 \n 时加密后的字符肯定不再是 \n 这样再解密时就没有办法判断这是一行的位置,因为这时没有 \n 的结束标识位了。这时我们手动处理 \n,因为\n 在文本文件中都是以 \

2016-08-11 22:06:18 1479

转载 文件分割合并

#define _CRT_SECURE_NO_WARNINGS#include#includeint getFileSize(char *path){ FILE *pfr = fopen(path, "rb"); if (pfr == NULL) { printf("文件打开失败!\n"); return; } else { int sum = 0; int

2016-08-11 10:36:28 399 1

原创 文件加密码

文件的获取大小与文件的密码都需要注意 使用 int ch = fgetc(); 这样可以避免因加密或解密造成的溢出,损坏文件。#define _CRT_SECURE_NO_WARNINGS#include#include#include//加密码最好使用 二进制,否则会出现一些问题。//这儿的 获取字符也应该使用 int ch = fgetc(pfr); 使用 int 类型而不要使

2016-08-10 15:02:20 298

转载 获取文件大小及注意事项

#define _CRT_SECURE_NO_WARNINGS#include#include//文本文件 读取 \r\n -->\n 写入 \n -->\r\n 获取文件二进制大小,理论都是 rb//获取大小理论都用 rb int getfilesize(char *path){ int sum = 0; FILE *pfr = fopen(path, "rb");// i

2016-08-09 22:41:12 704

转载 文件-加密码

下面是段简单加密码代码:#define _CRT_SECURE_NO_WARNINGS#include#include//非密码加密码void jia(char *path, char *newpath){ FILE *pfr = fopen(path, "rb"); FILE *pfw = fopen(newpath, "wb"); if (pfr == NULL ||

2016-08-09 16:27:52 314

转载 文件操作

注意下面代码所产生的问题。这一段是读文件,没有什么问题。#define _CRT_SECURE_NO_WARNINGS#include#includevoid main(){ char *p = "I:\\文件字符读写\\1.txt"; FILE *pr = fopen(p,"r"); if (pr == NULL) { return; } while (!feo

2016-08-09 16:19:43 218

转载 定时器

/*用户感觉到软件的好用,就是可以定时地做一些工作,而不需要人参与进去。比如每天定时地升级病毒库,定时地下载电影,定时地更新游戏里的人物。要想 实现这些功能,就可以使用定时器的API函数CreateWaitableTimer和SetWaitableTimer来实现了,这对API函数创建的 时钟是比较精确的,可以达到100倍的10亿分之一秒。*/#include#include#i

2016-08-08 11:29:38 317

转载 进程通信 - 信号量

//注意事项:另一进程意外终止,semaphore 不会接收。所以如果在进程通信最好用 互斥量 mutex.  //这个缺陷同 event 事件机制一样。所以进程通信最好使用 互斥量 mutex。代码如下:代码一:#include#include#includechar name[100] = "shanghai";void main(){ //创建信号量,初始化可

2016-08-05 17:18:08 283

转载 进程通信-事件机制

另一进程意外终止,event 事件机制不会接收。所以如果在进程通信最好用 互斥量 mutex.进程通信代码如下:代码一:#include#include#includechar name[256] = "shanghai";void main(){ HANDLE event = CreateEvent(NULL, TRUE, FALSE, name); //创建事件

2016-08-05 16:47:58 729

转载 多进程通信 互斥量

多进程通信:线程一代码:#include#include#includechar name[100] = "shanghai";void main(){ //互斥量在内核创建。 // 参数:1、指向安全属性的指针, //2、 初始化互斥对象的所有者,如创建进程希望立即拥有互斥体,则设为TRUE。一个互斥体同时只能由一个线程拥有 //3、 指向互斥对象名的指针 //一旦

2016-08-05 16:12:24 1474

转载 多线程-互斥锁

#include#include#include//HANDLE mutex = NULL;SRWLOCK g_lock; //改变一个变量的时候需要锁定int num = 6400000;//在读期间,值一直在变化,没有锁定。DWORD WINAPI reada(void *p){ int i = 0; while (1) { Sleep(1000); pr

2016-08-05 15:07:05 406

转载 多线程-信号量

//信号量:多个线程运行,其它等待。//利用信号量的这一特点,也可以让信号量只有1 ,则就实现了资源共享冲突的解决。#include#include#include//信号量一开始是 0 //这儿可以这样理解,像资源池一样。如果资源池开辟了5个,每个使用要使用时//就拿去一个,这时资源池就减少一个。如果资源池里的资源为 0 则没有资源可以//使用,而当使用者 使用完后归还给

2016-08-05 12:22:00 266

转载 线程-事件机制

一对一 模式:这里主要是对 createevent() 参数的设置有所了解。#include#include#include//互斥:解决线程冲突//事件:解决线程通信//临界区:解决线程冲突//定时器:解决同步线程HANDLE event[5] = { 0 };HANDLE thread[5] = { 5 };DWORD WINAPI aa(void *p){ i

2016-08-05 10:20:56 285

转载 多线程-定时器

这不是一个完整的例子:#include#include#include//单独定时器只能用于同步通信HANDLE timer;void main1(){ timer = CreateWaitableTimer(NULL, TRUE, NULL); //创建定时器 if (timer == NULL) { return 0; } else { LARGE_

2016-08-04 11:15:12 313

转载 多线程-原子操作

#include#include#includeint sum = 0;//多个线程同时访问(读、写)一个变量,就会发生冲突。//一个变量的线程安全:多个线程同时读写没有误差。//解决方法:临界区、事件机制、互斥量、原子操作//原子操作的 速度快于 临界区、事件机制、互斥量//原子操作函数,解决多线程安全DWORD WINAPI run(void *p){ for (in

2016-08-03 16:43:59 472

转载 多线程-互斥量

多线程线程同步机制是为是各线程能够协同工作而设计的。Windows系统中有很多种机制可以用于线程同步,最常用的有下面几种:◇互斥对象( Mutex);◇ 事件对象(Event);◇信号量(Semaphore);◇ 临界区( critical section);◇ 可等待计时器(Waitable Timer)。下面的代码是互斥量代码的演示:#include#incl

2016-08-03 14:59:28 307

转载 多线程-事件机制

多线程-事件机制:即线程B的启动需要等待线程A的某个信号,如果等待到信息则开始执行,代码如下,摘自《精通Windows API》 :/* *************************************《精通Windows API》 * 示例代码* Event.c* 7.2.1 演示使用Event同步线程********************************

2016-08-03 14:06:28 1953

转载 多线程—临界区

多线程—临界区:解决多个线程同时防访一个变量的解决方法。#include#include#include//#define N 65 //临界区最多只能开辟 64 个线程#define N 64 int num = 0;CRITICAL_SECTION cs1;CRITICAL_SECTION cs2; //定义临界区,临界区是结构体DWORD WINAPI add

2016-08-02 16:36:49 342

转载 多线程

多线程:#include#include#include//创建线程 _beginthread() CreateThread().//内部结束线程:_endthread() ExitThread()、外部结束线程 TerminateThread()//冻结线程:SuspendThread(hd); 解冻线程 ResumeThread(hd); DWORD WINA

2016-08-02 14:47:00 257

关于java的简介

关于java的简介,java的分类,如javaSE,javaEE,javaME.

2012-12-27

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除