- 博客(201)
- 收藏
- 关注
原创 《一种基于标签的电影组推荐方法》实现
本文是对论文《一种基于标签的电影组推荐方法》熊聪聪,林 颖,史艳翠,冯 阔 (天津科技大学人工智能学院,天津 300457)中,一些算法的实现。代码实现:结果:使用数据集:https://share.weiyun.com/2UP7O67E...
2022-06-22 14:55:23
842
原创 C++ STL 堆
#include<iostream>#include<vector>#include<string>#include<algorithm>using namespace std;class Cmp{public: bool operator()(string a, string b){ return a.length()>=b.length(); }};int main(int argc, char const *argv[]
2021-08-11 12:08:50
809
原创 C++11 map实现插入后按value自动排序
#include<iostream>#include<map>#include<vector>using namespace std;struct CmpByKeyLength { bool operator()(const pair<int, int>& k1, const pair<int, int>& k2) { return k1.second > k2.second; //降序排序 }};int
2021-08-08 12:48:14
1004
原创 Linux C++ Redis安装及使用
配置Redis服务器:下载、解压和编译Redis:$ wget https://download.redis.io/releases/redis-6.2.4.tar.gz$ tar xzf redis-6.2.4.tar.gz$ cd redis-6.2.4$ make现在编译的二进制文件在src 目录中可用 。运行Redis:$ src/redis-server您可以使用内置客户端与 Redis 交互:$ src/redis-cliredis> set foo barOK
2021-06-26 12:30:05
400
原创 Linux C++ 基于libevent实操简单的http协议
已解决传输大文件问题新增post数据接收(处理自定义)及返回server.cpp#include <event2/event.h>#include <event2/listener.h>#include <event2/http.h>#include <event2/buffer.h>#include <event2/keyvalq_struct.h>#include <string.h>#include <.
2021-06-11 20:28:36
827
转载 Linux 基于UDP的简单的socket通信
server.cpp#include <stdio.h>#include <string.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>int main(int argc, char * argv[]) { int server_sockfd; int len;
2021-06-08 16:02:10
433
转载 Linux 基于TCP的简单的socket通信
server.cpp#include<stdio.h>#include<string.h>#include<sys/types.h>#include<sys/socket.h>#include<netinet/in.h>#include<arpa/inet.h>int main(int argc, char const *argv[]){ int server_sockfd; //服务端套接字 int client_
2021-06-08 15:46:51
335
原创 Linux FTP服务器搭建
https://jingyan.baidu.com/article/27fa7326ba32dc46f9271f75.html1、更新源列表sudo apt-get update2、安装vsftpdsudo apt-get install vsftpd3、判断vsftpd是否安装成功sudo service vsftpd restart命令重启vsftpd服务器,回车后,vsftpd处于运行状态,则安装成功。4、新建”/home/test” 目录作为用户主目录5、新建用户test并设置密码
2021-06-07 22:13:35
1279
6
转载 Qt简单的窗口
mainwindow.h#ifndef MAINWINDOW_H#define MAINWINDOW_H#include <QMainWindow>class MainWindow : public QMainWindow{ Q_OBJECTpublic: MainWindow(QWidget *parent = 0); ~MainWindow();};#endif // MAINWINDOW_Hmain.cpp#include "main
2021-05-09 16:48:00
253
原创 Linux进程描述符
进程描述符归类调度参数:调度进程参考的参数有进程优先级、最近消耗CPU时间、最近睡眠时间内存映像:执行程序所需要的可执行文件信号:显示信号被捕捉或执行的状况寄存器:内核发生trap,保存寄存器的值系统调用状态:当前系统调用信息文件描述符表:有关文件描述符的系统被调用时,文件描述符作为索引定位相关文件的数据结构统计数据:记录用户、进程占用CPU时间表的指针内核堆栈:内核使用的固定堆栈其他:进程状态、事件等待时间等创建进程过程系统为子进程开辟一块新的用户空间的进程描述符,然后从父进程复
2021-05-07 21:09:07
356
原创 Linux信号量 signal
罗列系统使用的信号量:kiil -l常见信号量SIGABRT和SIGIOT:终止进程,在调用abort()函数时进程本身启用SIGALRM、SIGPROF、SIGVTALRM:当设置的时钟超时时将这些信号发送给进程SIGBUS:出现总线中断时发送给进程SIGCHLD:子进程终止、被中断或中断恢复发送信号SIGCONT:继续执行由SIGTOP或SIGTSTP信号暂停的进程SIGFPE:算数运算错误SIGUP:终端关闭时SIGILL:尝试执行非法、格式错误、未知或特权指令SIGINT:
2021-05-07 20:49:43
489
原创 Linux的系统调用
内核态:操作系统内核使用的模式用户态:用户应用程序所使用的的模式上下文切换:内核态与用户态模式之间的频繁切换fork 创建一个与父进程相同的子进程,子进程拥有和父进程一样的程序计数器、CPU寄存器、打开的文件。exec:系统调用的,用于执行驻留在活动进程中的文件。调用exec后新的可执行文件会替换掉先前的可执行文件并执行。旧进程会被替换,数据、代码、堆栈被修改,但PID不变。exec常用函数:execlexecleexeclpexecvexecveexecvp进程映像(程序运行
2021-05-07 20:31:54
279
原创 libevent接口分析
环境配置与初始化event_base_new/** * Create and return a new event_base to use with the rest of Libevent. * * @return a new event_base on success, or NULL on failure. * * @see event_base_free(), event_base_new_with_config() */EVENT2_EXPORT_SYMBOLstruct ev
2021-05-04 11:48:50
442
原创 /usr/bin/ld: /tmp/ccMz0hFd.o: undefined reference to symbol ‘pthread_condatt
在linux下,编写C++程序用到了线程库。由于pthread库不是Linux系统默认的库,连接时需要使用库libpthread.a,所以在编译中要加-lpthread参数:g++ xxxx.cpp -lpthread -o pthread
2021-04-14 15:17:30
2054
原创 C++ 十进制数转二进制字符串
#include <iostream>#include <bitset>#include <string>using namespace std;int main(){ int n = 5; string str; bitset<7> bits; //7位长度 bits = n; str = bits.to_string(); cout<<str<<endl;
2021-03-21 08:32:10
2943
原创 C++ getline读取
#include<bits/stdc++.h>using namespace std;int main(int argc, char const *argv[]){ string str = "1,2,3,null,null,4,5"; stringstream s(str); string str_node; while(getline(s,str_node,',')){//以逗号作为每次读取结束标志 if(str_node=="null"){
2021-03-16 14:58:13
713
原创 C++ 缺省构造函数
缺省构造函数(指没有参数的构造函数)构造函数能初始化对象,而缺省构造函数则可以不利用任何在建立对象时的外部数据就能初始化对象关于缺省构造函数的问题#include<iostream>#include<string>using namespace std;class Person{public: string name; Person(string str){ name = str; //初始化姓名 } ~Person(); };int mai.
2021-02-27 17:49:59
1717
原创 C++风格的类型转换
类型转换操作符C++通过引进四个新的类型转换操作符克服了 C 风格类型转换的缺点,这四个操作符是:static_castconst_castdynamic_castreinterpret_cast#include<iostream>#include<string>using namespace std;int main(){ int a=5; //c风格类型转换 double result = (double)(a)/2.0; cout<<
2021-02-27 17:49:49
368
原创 C++ 指针与引用区别
指针与引用区别不存在指向空值的引用这个事实意味着使用引用的代码效率比使用指针的要高。因为在使用引用之前不需要测试它的合法性。指针可以被重新赋值以指向另一个不同的对象。引用则总是指向在初始化时被指定的对象,以后不能改变。#include<iostream>#include<string>using namespace std;int main(){ string s1("Nancy"); string s2("Clancy"); string&am
2021-02-27 17:49:33
228
原创 C++ 判断一个数是否是整数问题
#include<stdio.h>#include<math.h>int judge(float c){ float d = pow(10,-6.0); if((c-(int)c<d) && (c-(int)c>-d))return 1; else return 0;}int main(int argc, char const *argv[]){ //方式一 float x = 1.001; printf("%d\n", (int
2021-02-26 13:51:56
5133
原创 关于sizeof计算的问题
sizeof用于计算数据类型大小一般的数据类型随机器不同,字节大小也不同计算int char之类的类型计算int *, char *之类的类型计算指针类型的字节大小,我这里都是4字节(包括结构体类型指针变量)计算结构体变量大小参考:https://www.cnblogs.com/wlzy/p/5897933.html#include<stdio.h>typedef struct{ char a; int b;} Test;typedef struct{ double
2021-02-22 17:15:53
288
原创 关于windows窗口编程过程中编译的错误
Compiling...GetSystemMetrics.cpperror C2065: 'SM_MOUSEWHEELPRESENT' : undeclared identifiererror C2065: 'SM_XVIRTUALSCREEN' : undeclared identifiererror C2065: 'SM_YVIRTUALSCREEN' : undeclared identifiererror C2065: 'SM_CXVIRTUALSCREEN' : undeclared i
2021-02-19 22:20:45
415
原创 C++ STL queue简单使用
#include<iostream>#include<queue>using namespace std;int main(int argc, char const *argv[]){ queue<int> q; // ueue<int> q{1,2,3};//错误 for(int i=1; i<10; i++)q.push(i); //只能通过push进行追加 //访问队首队尾元素 cout<<q.front()<&
2021-02-19 19:02:26
281
原创 C windows.h 创建窗口
#include<windows.h>#pragma comment(lib, "winmm.lib")LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);int WINAPI WinMain(HINSTANCE hInstance, //hInstance是实例句柄,具体是一个数值 HINSTANCE hPrevInstance, //此参数通常总是定义为NULL PSTR szCmdLine, //用来运行程序的命
2021-02-18 22:35:27
2474
原创 第一个Windows程序
#include<windows.h>/*WINAPI WinMain与常规的cpp文件一样,其作为入口函数*/ int WINAPI WinMain(HINSTANCE hInstance, //hInstance是实例句柄,具体是一个数值 HINSTANCE hPrevInstance, //此参数通常总是定义为NULL PSTR szCmdLine, //用来运行程序的命令行,有些Windows程序启动时用它来把文件装入内存 int iCmdShow){/
2021-02-18 22:33:17
247
1
原创 关于windows创建窗口的错误
error LNK2001: unresolved external symbol __imp__PlaySoundA@12]文件开头加入这一段代码#pragma comment(lib, “winmm.lib”)error LNK2001: unresolved external symbol _main[Project] --> [Settings] --> 选择"Link"属性页,在Project Options中将/subsystem:console改成/subsystem:w
2021-02-18 21:38:42
549
原创 sublime Text3 编辑器中 ANSI编码的汉字出现乱码
打开sublime按键Ctrl + Shift + p输入install package回车再输入ConvertToUTF8回车若左下角有说明正在安装ConvertToUTF8插件,安装完成后再打开ASNI编码的文件就不会出现乱码了
2021-02-18 21:37:43
1994
原创 C 函数不定参数使用
#include<stdio.h>#include<stdarg.h>/*函数参数的传递原理函数参数是以数据结构:栈的形式存取,从右至左入栈.eg:先介绍一下可变参数表的调用形式以及原理:首先是参数的内存存放格式:参数存放在内存的堆栈段中,在执行函数的时候,从最后一个开始入栈。因此栈底高地址,栈顶低地址*///实现多个整数值相加void add(int num, ...){//这里设计是,num代表一共有几个变参 va_list args; int total
2021-02-18 19:47:59
319
原创 关于printf及其衍生函数使用
#include<stdio.h>#include <stdarg.h>int vspf(char *fmt, ...){ va_list argptr;//需要引入头文件stdarg.h,argptr表示vspf函数后面有多个参数 int cnt; char buffer[80]; va_start(argptr, fmt); cnt = vsprintf(buffer, fmt, argptr); va_end(argptr); printf("%s\n", b
2021-02-18 19:17:51
437
原创 关于使用strlen计算宽字节字符串长度的问题
#include<stdio.h>int main(int argc, char const *argv[]){ char *pc = "Hello!"; printf("%d\n", strlen(pc));//输出6 // 字符串前面加上L表示,字符串的每个字符按照两个字节的方式进行存储 wchar_t *pw = L"Hello!"; printf("%d\n", strlen(pw));//输出1 /*因为若以每个字符两个字节方式进行存储,可以发现"Hello!"被处
2021-02-18 16:09:38
1924
原创 C++ 初识template
关于C++的template:template并非一次编译便生出适合所有型别的代码,而是针对被使用的(某个或某组)型别进行编译。这导致一个重要的问题:实际处理 template时,面对template function,你必须先提供它的某个实例,然后才能调用。如此方可通过编译。一个简单的例子:#include<iostream>#include<vector>using namespace std;template <typename T>cons
2021-02-09 15:48:04
431
转载 mongodb与mysql的区别
MySQL是关系型数据库。优势:在不同的引擎上有不同 的存储方式。查询语句是使用传统的sql语句,拥有较为成熟的体系,成熟度很高。开源数据库的份额在不断增加,mysql的份额页在持续增长。缺点:在海量数据处理的时候效率会显著变慢。Mongodb是非关系型数据库(nosql ),属于文档型数据库。文档是mongoDB中数据的基本单元,类似关系数据库的行,多个键值对有序地放置在一起便是文档,语法有点类似javascript面向对象的查询语言,它是一个面向集合的,模式自由的文档型数据库。存储...
2021-02-09 12:12:03
305
原创 jq 自定义请求头信息
可以通过自定义请求头信息的方式,从而使得服务器能够更加灵活地处理各类请求。比如判断是不是ajax请求,携带服务器错误代码号来寻找bug等等,具体的使用还要看业务逻辑。而且,请求头有些信息是不可修改的,如Referer。简单实验:前端:<!DOCTYPE html><html><head> <title>test</title></head><body><script src="https://cdn
2021-02-09 10:23:30
1096
原创 cJSON使用文档——超详细
查了一下没有发现关于cJSON的函数api的使用文档,那就自己看源代码整理一份吧,这比单纯分析源代码貌似有用多了整理一份源代码的使用文档,就不得不首先看下各个函数的定义,防止漏掉一些API,同时也对撰写文档的内容有了大概的了解。cJSON_VersionCJSON_PUBLIC(const char*) cJSON_Version(void); 打印当前cJSON的版本使用:printf("Version: %s\n", cJSON_Version());cJSON_InitHooksC
2021-02-05 23:53:37
7576
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人