自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

SteveRocket's-Blog

总结知识、分享知识、热爱知识、关注博客,我们一起学习~~~

  • 博客(56)
  • 资源 (3)
  • 收藏
  • 关注

原创 UDP通信(Red Hat Enterprise Linux 6)

UDP serverUDP client

2015-08-25 00:11:16 443

原创 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

vue-devtools-chrome-5.3.4

Vue开发的调试工具(devtools Chrome)

2023-12-22

jdk-11.0.15.1-windows-x64-bin

jdk-11.0.15.1_windows-x64_bin 安装包

2023-09-05

staruml-5.0-with-cm.zip

StarUML是一款开放源码的UML开发工具,是由韩国公司主导开发出来的产品,可以直接到StarUML网站下载。可以用来创建UML类图。 StarUML(简称SU),是一种创建UML类图,生成类图和其他类型的统一建模语言(UML)图表的工具。StarUML是一个开源项目之一发展快、灵活、可扩展性强(zj). ● 可绘制9款UML图:用例图、类图、序列图、状态图、活动图、通信图、构件图、部署图以及复合结构图等。 ● 完全免费:StarUML是一套开放源码的软件,不仅免费自由下载,连代码都免费开放。尽管注册需要付费,但不注册并不影响用户个人使用。注册的价格由69美元到9900美元不等。 [1] ● 多种格式影像文件:可导出JPG、JPEG、BMP、EMF和WMF等格式的影像文件。 ● 语法检验:StarUML遵守UML的语法规则,不支持违反语法的动作。 ● 正反向工程:StarUML可以依据类图的内容生成Java、C++、C#代码,也能够读取Java、C++、C#代码反向生成类图。反向工程有两个主要用途,其一是旧有的源码反转成图之后,可以构建UML模型的方式继续将新的设计添加上去;

2023-04-21

Windows Sysmon.zip

Sysmon是一款由微软开发的安全监控工具,为Windows操作系统提供了更强大的安全监控和威胁狩猎功能。通过在系统内核驱动程序中实现高级的行为分析和记录功能,Sysmon可以监控并记录系统内发生的各种事件,包括进程创建、文件创建、网络连接等,从而帮助安全团队更好地检测和响应威胁。

2023-04-11

Django Rest Framework分页过滤排序代码示例

8、DRF实战总结:分页(Pagination)及DRF提供的分页类详解(附源码) 9、DRF实战总结:过滤(filter)与排序,以及第三方库django-filter的使用(附源码) 10、DRF实战总结:限流(throttle)、限流的使用方式详解与代码示例(附源码) 包含: 分页及DRF提供的分页类。 过滤:get_queryset、django-filter。 排序:DRF的OrderingFilter。

2023-04-06

7、DRF实战总结:JWT认证原理和使用,以及第三方库simplejwt 的详解源码

django第三方库djangorestframework-simplejwt 的使用示例代码 JSON Web Token(JWT)是一种用于认证和授权的开放标准,允许在客户端和服务器之间传递信息,以验证用户身份和授权访问特定资源。它定义了一种紧凑且自包含的方式,用于各方之间安全地将信息以JSON对象传输。由于此信息是经过数字签名的,因此可以被验证和信任。JWT用于为应用程序创建访问token,通常适用于API身份验证和服务器到服务器的授权。 JWT的优点包括:简单、轻量、可扩展、跨语言和跨平台使用。它也具有一定的安全性,因为JWT的签名只能由持有密钥的服务器生成和验证,且在传输过程中被中间人篡改可能会被检测出来。

2023-04-05

序列化器(Serializer)、重写序列化器、认证及使用Token认证代码示例

新增文章的演示示例代码 4、DRF实战总结:序列化器(Serializer)、数据验证、重写序列化器方法详解(附源码) 5、DRF实战总结:认证(Authentication)与权限(Permission)(附源码) 6、DRF实战总结:认证及使用Token认证,代码示例详解(附源码)

2023-04-05

自定义manage.py shell管理命令

自定义Django-admin命令一共分三步:创建文件夹布局、编写命令代码和测试使用。 注意事项  management和commands每个目录下都必须有个__init__.py空文件,表明这是一个python包。另外以下划线开头的文件名不能用作管理命令脚本。  management/commands目录可以位于任何一个app的目录下,Django都能找到它。  一般建议每个python脚本文件对应一条管理命令。  当使用管理命令并希望在控制台输出指定信息时,应该使用self.stdout和self.stderr方法,而不能直接使用python的print方法。另外,不需要在消息的末尾加上换行符,它将被自动添加。

2023-03-25

基于函数视图、自定义序列化器、类视图APIView, GenericAPIView和GenericViewSet视图集代码

文章2、DRF实战总结:基于函数的视图API以及自定义序列化器 文章3、DRF实战总结:基于类的视图APIView, GenericAPIView和GenericViewSet视图集 DRF提供了4种编写CBV类API的方式,到底哪种CBV开发模式更好? 答案是各有利弊 o 基础的API类:可读性最高,代码最多,灵活性最高。当需要对API行为进行个性化定制时,建议使用这种方式。 o 通用generics.*类:可读性好,代码适中,灵活性较高。当需要对一个模型进行标准的增删查改全部或部分操作时建议使用这种方式。 o 使用视图集viewset: 可读性较低,代码最少,灵活性最低。当需要对一个模型进行标准的增删查改的全部操作且不需定制API行为时建议使用这种方式。 o mixin类和GenericAPI的混用,这个和generics.*类没什么区别,不看也罢。 Django视图集viewset代码最少,但这是以牺牲了代码的可读性为代价的,因为它对代码进行了高度地抽象化。另外urls由router生成,不如自己手动配置的清楚。

2023-03-25

Django3.1新特性-主要变化,支持异步详解示例代码

随着Django 3.1最终支持异步视图(async views),异步中间件和测试,这篇文章探讨了如何开始使用Django 3.1提供的新异步视图。可以在异步视图中尝试其他一些操作,例如发送电子邮件,调用第三方API以及写入文件。考虑一下代码中具有简单过程的视图,这些视图不一定需要直接向最终用户返回任何内容,可以将这些视图快速转换为异步视图。

2023-03-23

Django的MVT设计模式(Model-View-Template)示例代码

如果要开发一个好的网站或网络应用,就必需了解经典的软件开发所遵循的MVC 设计模式。本篇详细总结软件开发所遵循的MVC (Model-View-Controller, 模型-视图-控制器) 设计模式以及Django的MVT设计模式(Model-View-Template)如何遵循这种设计理念。Django Model(模型), URL(链接), View(视图) 和Template(模板)又是如何遵循MVC软件设计模式的。

2023-03-19

prometheus、grafana、alertmanager、windows、node exporter 安装包

开发过程中应用到的安装包软件: alertmanager-0.25.0.linux-amd64.tar.gz alertmanager-0.25.0.windows-amd64.zip grafana-enterprise-9.3.6.windows-amd64.zip node_exporter-1.5.0.linux-amd64.tar.gz prometheus-2.41.0.linux-amd64.tar.gz prometheus-2.41.0.windows-amd64.zip windows_exporter-0.21.0-amd64.msi

2023-03-15

Windows InfluxDB2-2.5.1 x64数据库

1、InfluxDB simplifies time series data management. Designed to handle high speed and high volume data ingest and real-time data analysis, InfluxDB's robust data collectors, common API across the entire platform, highly performant time series engine, and optimized storage lets you build once and deploy across multiple products and environments. 2、InfluxDB是一个由InfluxData开发的开源时序型数据库,专注于海量时序数据的高性能读、高性能写、高效存储与实时分析等,在DB-Engines Ranking时序型数据库排行榜上排名第一,广泛应用于DevOps监控、IoT监控、实时分析等场景。

2023-02-17

WIndows Redis可视化工具:resp-2022.1.0.0 GUI

Windows Reids可视化工具RESP 版本2022.1的安装包。一款比较稳定简洁的 redis UI 工具。

2023-02-17

Windows PostgreSQL-15.2-1 64位数据服务安装包

PostgreSQL is a powerful, open source object-relational database system with over 35 years of active development that has earned it a strong reputation for reliability, feature robustness, and performance.

2023-02-17

Windows x64 Redis服务安装包

压缩包包含: redis-windows-7.0.8.1.zip 解压直接使用的包。 Redis-x64-7.0.5.msi 安装成Windows服务的安装包。

2023-02-17

Windows应用的工具包pywin32-220.win32-py3.4.exe

Windows server 2003 32bit下使用python3.4开发Windows应用的工具包,解决ImportError: No module named "win32api" "win32com"的问题。

2020-11-17

Windows XP支持最高的Python版本安装包python-3.4.4

Windows XP Windows Server2003等32位操作系统支持最高的Python版本安装包python-3.4.4

2020-11-17

Windows开发PyQt5应用依赖包PyQt5-5.5.1-gpl-Py3.4-Qt5.5.1-x32

Windows开发PyQt5应用迁移到xp系统下,需要的依赖包python3.4PyQt5-5.5.1-gpl-Py3.4-Qt5.5.1-x32.zip

2020-11-17

空空如也

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

TA关注的人

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