- 博客(56)
- 资源 (3)
- 收藏
- 关注
原创 c++:数据类型的判断type_traits
//判断左值右值引用void main(){ int i(10);//i是左值 有内存实体 int &ri(i); int &&rri(i + 5);//右值引用 cout ::value
2015-08-23 02:50:30 3202 1
原创 c++:自动获取数据类型,auto与decltype的异同
//decltype、auto 自动推理数据类型//auto 无法区分是否是引用 是否是常量还是变量//decltype 基本数据类型是一定可以区分的,可以获取常量属性 可是识别引用//typeid只能获取基本数据类型 不能获取引用以及常量auto main()->int{ const vectormyint{ 1, 2, 3, 4, 5, 7, 8 }; //myint[
2015-08-23 02:38:24 839 1
原创 进程(WINAPI),遍历并查找树状的进程信息,实现控制系统进程
#include //检索系统所有进程void showall(){ PROCESSENTRY32 pe32 = {0}; pe32.dwSize = sizeof(pe32); //查找进程 HANDLE hpprocess = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);//CreateToolhelp32Snapshot创建快
2015-08-23 01:38:23 1278
原创 c++11:正则表达式
#include #include//正则表达式头文件using namespace std;//regex_search 检索//regex_replace 将检索到的对象进行替换替换//match 是否匹配void main(){ regex reg("^select ([A-Za-z]*) from ([A-Za-z]*)$"); //判断表达式是否合法 cmatch
2015-08-23 01:14:16 588 1
原创 c++:函数模板与函数包装器
#include #include#includeusing namespace std;using std::function;templatevoid showall(vector v)//数据类型未知{ for (auto i:v) { cout
2015-08-22 23:25:44 655 1
原创 CPP线程:生产者与消费者的问题
#include #include #include#include #include#include #include using namespace std;mutex m;condition_variable full,empty;bool flag = true;//标志 消费完了就退出vectormyint(10);//开辟10个元素int num = 10;
2015-08-22 01:31:00 585 1
原创 线程自动加锁与自动解锁:lock_guard & unique_lock
#define N 1000000mutex g_mutex;void add(int *p){ for (int i = 0; i < N; i++) { unique_lockulk(g_mutex);//OK unique_lock 加锁,没有mutex所有的权限(根据mutex的属性来判断是否能够加锁, 自动加锁自动解锁) 时间上比lock_guard 慢 //
2015-08-22 01:03:35 4109 4
原创 线程调度实现面试题:输出ABCDABCD.....
#include #include #include #include using namespace std;int LOOP = 10;//执行次数int flag = 0;//0 1 2 切换线程mutex m;//互斥量condition_variable cv;//用于通知全局void fun(int id){ for (int i = 0; i < LO
2015-08-22 00:48:22 365
原创 CPP多线程实现并行计算
#include #include #include #include #include #include #include using namespace std;#define COUNT 5000000long long add(vector *arr, long long start, long long count){ static mutex m;//仅仅初始
2015-08-22 00:31:19 3119 1
原创 CPP多线程与可变参数
#include //可变参数头文件//可变参数 在多线程中的应用int go(const char*ftm, ...){ va_list ap;//指针 第一个数据 va_start(ap, ftm);//开始读取的位置 vprintf(ftm, ap);//调用 接受可变参数 va_end(ap);//结束 return 0;}//使用可变参数创建线程void
2015-08-22 00:13:46 487
原创 CPP:动态数组vector是如此之简单,array显得不友好
#include#include //适用于任何数组using namespace std;//array 一旦分配 就无法变长//vector分配的数组在堆上,适用于任何数据类类型 可以无限嵌套 收缩使用迭代器,动态数据增长 相当于数据结构中的线性表,可以实现线性存储void main1(){ vector myint{ 1, 2, 3, 4, 5, 6 };
2015-08-22 00:03:47 997 1
原创 CPP:new在堆区、栈区、静态区开辟内存
char str[1024] = { 0 };//全局静态区void main1(){ int *p1 = new int[10]{1, 2, 3, 4, 5, 6, 7, 8, 9, 0};//堆上创建 开辟的内存 int *p2 = new (str)int[10]{1, 2, 3, 4, 5, 6, 7, 8, 9, 0};//ok 在str字段处开始 分配内存 int
2015-08-21 17:56:16 1121 1
原创 线程4:原子变量与原子操作
int data = 0;//多个线程同时访问一个变量,同时写入,会冲突//一个变量是线程安全,多线程同时读写没有误差//使用原子变量解决线程冲突问题DWORD WINAPI runX(void *p){ for (int i = 0; i < 10000; i++) { //InterlockedIncrement(&data);//精确 操作完成了后续才能继续
2015-08-21 17:26:31 430 1
原创 线程3:时间同步
void main1(){ HANDLE timer = CreateWaitableTimer(NULL, TRUE, NULL);//创建定时器 if (NULL==timer ) { return; } else { LARGE_INTEGER time; time.QuadPart = -50000000;//2秒 SetWaitableTimer(time
2015-08-21 17:24:34 344
原创 线程6:互斥量,解决线程冲突
HANDLE mutex = NULL;int num = 0;DWORD WINAPI add(void *p){ WaitForSingleObject(mutex, INFINITE); for (int i = 0; i < 100000; i++) { num++; } ReleaseMutex(mutex);}//临界区 超过64个线程就over了、互斥量用
2015-08-21 17:04:45 410 1
原创 线程2:线程通信事件机制(单线程、两个线程、多个线程通信)
//一个线程之间的通信 DWORD WINAPI firstthread(void *p) { MessageBoxA(0, "1", "1", 0); printf("第1个线程执行完成\n"); SetEvent(event[0]);//发出事件信号 return 0; } DWORD WINAPI secondthread(void *p) { WaitForS
2015-08-21 14:35:32 777 1
原创 线程:CPP lambda表达式与多线程
c++ lambda表达式获取线程ID以及线程等待#include #includethread th1([]() { this_thread::sleep_for(chrono::seconds(3)); cout
2015-08-21 14:32:04 1912
原创 线程操作:冻结与解冻线程
DWORD WINAPI fun(void *p){ int i = 0; while (++i) { printf("\n%d", i); if (i>8000) { ExitThread(0); } Sleep(500); } return 0;}//主线程,主导作用,管理调用其他线程void main(){ HANDLE hd = Create
2015-08-21 14:22:39 2838
原创 线程1:临界区,解决线程访问冲突问题
#define N 64int num = 0;CRITICAL_SECTION cs1;CRITICAL_SECTION cs2;//定义临界区,结构体变量DWORD WINAPI add(void *p){ EnterCriticalSection(&cs1); for (int i = 0; i < 100000;i++) { num++; } LeaveCri
2015-08-21 14:17:31 884
原创 Python实战:递归
Python递归是一种非常重要的算法思想,它可以使得我们在处理复杂问题时更加高效。运行环境:Windows Shell Python 3.4 IDE(注意:与2.*版本的Python在语法上是有差别的)
2015-08-21 00:34:41 566 1
翻译 欢迎使用CSDN-markdown编辑器
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl
2015-08-21 00:10:16 307
原创 1.线程与进程概念性总结(初级)
线程特点:1.线程共享进程数据,但也拥有自己的一部分数据2.一切进程至少都有一个执行线程fork和创建新线程的区别 :fork:一个进程,包括代码、数据和分配给进程的资源。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。 一个进程调用fork()
2015-08-20 00:48:19 483 1
原创 系统函数C字符串的实现(15):strncmp
static void change(char *pch){ if (*pch >= 'A' && *pch
2015-08-19 18:38:46 524
原创 系统函数C字符串的实现(14):strcmpi
#define _CRT_SECURE_NO_WARNINGS#include #include #include //strcmpi用于排序void change(char *pch){ if (*pch>='A' && *pch
2015-08-19 18:35:10 608
原创 通过劫持系统函数malloc和free实现实时检测内存防泄漏(初级)
int i = 0;void * mymalloc(size_t _Size){ i++; void *p = malloc(_Size); return p;}void myfree(void * _Memory){ i--; free(_Memory);}//内存防泄漏 通过劫持系统的malloc与free函数实现 检测内存泄露void main(){
2015-08-18 16:55:05 889 1
原创 编译原理:实现高级表达式计算器(初级)
#define _CRT_SECURE_NO_WARNINGS#include #include #include //处理空格void delspace(char *str){ char *p1 = str; char *p2 = str; while ((*p1 = *(p2++)) != '\0') { if (*p1 != ' ') { p1++;
2015-08-16 13:36:21 2319 3
原创 系统函数C字符串的实现(13):wcscpy与wcslen
实现宽字符的拷贝与计算宽字符的长度int mywcslen(wchar_t *wstr){ int i = 0; while (*wstr!=L'\0') { i++; wstr++; } return i;}wchar_t *mywcscpy(wchar_t *dest, const wchar_t *source){ if (NULL==dest||NULL==
2015-08-16 02:31:19 1404
原创 系统函数C字符串的实现(12):strset
//函数名: strset// 功 能 : 将一个串中的所有字符都设为指定字符// 用 法 : char *strset(char *str, char c);char *mystrset(char *str, char c){ for (char* pnew = str; *pnew != '\0'; *pnew=c,pnew++) { }}//递归方式void *mys
2015-08-16 02:13:51 1217
原创 系统函数C字符串的实现(11):strchr
字符查找函数strchrchar *mystrchr(const char *str, const char c){ char *p = NULL; for (char*newp = str; *newp != '\0'; newp++) { if (*newp==c) { p = newp;//一个一个的查找 break; } } return p;}
2015-08-16 01:58:10 1055
原创 系统函数C字符串的实现(10):strcat
字符串拼接strcatchar *mystrcat(char *dest,const char *source){ char *pstart = dest; while (*pstart != '\0') { pstart++; } //从尾部 while ((*pstart++)=(*source++)) { }}void main(){ char str1[22]
2015-08-16 01:47:06 724
原创 系统函数C字符串的实现(8):strlwr与strupr
字符串大小写转换void mystrlwr(char * _Str){ if (*_Str == '\0') { return; } else { if (*_Str >= 'A' && *_Str
2015-08-15 23:06:07 1016
原创 系统函数C字符串的实现(7):wcsrev
实现宽字符串的逆转//将空格处理成字符串结束标志 void set0(wchar_t wstr[20]) { wchar_t *p = wstr; while (*p != L'\0') { if (*p == L' ') { *p = L'\0'; } p++; } } //结束标志各位空格 void set1(wchar_t wstr[
2015-08-15 22:59:11 708 1
原创 系统函数C字符串的实现(9):strrchr
//函数名: strrchr// 功 能 : 在串中查找指定字符的最后一个出现// 用 法 : char *strrchr(char *str, char c);char *mystrrchr(char *str, char c){ char *p = NULL;//保存找到的字符的地址 //尾部指针 for (char*px=str+strlen(str) ;px>=str;
2015-08-15 22:50:06 950
原创 系统函数C字符串的实现(6):strpbrk
//函数名: strpbrk// 功 能 : 在串中查找给定字符集中的字符// 用 法 : char *strpbrk(char *str1, char *str2);char *mystrpbrk(char *str1, char *str2){ while (*str1!='\0') //循环str1 { char *p = str2;//备份,反复循环 防止副本
2015-08-15 22:45:57 511
原创 系统函数C字符串的实现(5):strdup
strdup不需要分配内存空间,自动实现字符串的拷贝char *mystrdup(char *str){ char*p = malloc(sizeof(char)*(strlen(str) + 1)); strcpy(p, str);//拷贝 return p;}/*函数名: strdup功 能: 将串拷贝到新建的位置处用 法: char *strdup(char *str
2015-08-15 22:40:17 1429
原创 哈希运用于大数据查找中
使用哈希,实现6428633条CSDN账户数据的简单查询#define _CRT_SECURE_NO_WARNINGS#include #include char path[256] = "E:\\Big_Data\\csdn.txt";#define N 6428633unsigned int BKDRHash(char *str);struct beitai{ char
2015-08-14 23:51:30 1156 1
原创 建立简单的哈希表
#include#include unsigned int SDBMHash(char *str){ unsigned int hash = 0; while (*str) { // equivalent to: hash = 65599*hash + (*str++); hash = (*str++) + (hash
2015-08-14 23:41:36 1166 1
原创 希尔排序(简单)
void show(int*arr,int length){ for (int i = 0; i < length; i++) { printf("%d ", arr[i]); }}void shellsort(int *arr,int length){ //选择增量 int add = length / 2; while (add>=1)//增量终止条件 {
2015-08-12 00:16:22 348
原创 系统函数C字符串的实现(4):strcpy
char* mystrcpy(char*_Dest, const char*_Src){ if (_Src == NULL || _Dest == NULL) { return NULL; } for (int i = 0;; i++) { _Dest[i] = _Src[i]; if (*(_Src + i) == '\0') { break; } }
2015-08-11 23:00:01 390
staruml-5.0-with-cm.zip
2023-04-21
Windows Sysmon.zip
2023-04-11
Django Rest Framework分页过滤排序代码示例
2023-04-06
7、DRF实战总结:JWT认证原理和使用,以及第三方库simplejwt 的详解源码
2023-04-05
序列化器(Serializer)、重写序列化器、认证及使用Token认证代码示例
2023-04-05
自定义manage.py shell管理命令
2023-03-25
基于函数视图、自定义序列化器、类视图APIView, GenericAPIView和GenericViewSet视图集代码
2023-03-25
Django3.1新特性-主要变化,支持异步详解示例代码
2023-03-23
Django的MVT设计模式(Model-View-Template)示例代码
2023-03-19
prometheus、grafana、alertmanager、windows、node exporter 安装包
2023-03-15
Windows InfluxDB2-2.5.1 x64数据库
2023-02-17
WIndows Redis可视化工具:resp-2022.1.0.0 GUI
2023-02-17
Windows PostgreSQL-15.2-1 64位数据服务安装包
2023-02-17
Windows x64 Redis服务安装包
2023-02-17
Windows应用的工具包pywin32-220.win32-py3.4.exe
2020-11-17
Windows XP支持最高的Python版本安装包python-3.4.4
2020-11-17
Windows开发PyQt5应用依赖包PyQt5-5.5.1-gpl-Py3.4-Qt5.5.1-x32
2020-11-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人