
C++
宝宝可乖了
这个作者很懒,什么都没留下…
展开
-
C/C++获取程序堆栈信息
碧玉妆成一树高万条垂下绿丝绦前言如果是想做profile,可以使用libunwind获得C++的堆栈信息。libunwind这玩意说实话,资料特别特别少,特别是相关接口使用的例子,我只找到了一个,然后其他人全部抄的这一个,而且他还是获取当前程序堆栈的,也就是必须在被profile的程序中调用libunwind接口才能获取到堆栈信息。。。然后还不是中文的,国内关于libunwind的资...原创 2020-02-21 22:58:36 · 3580 阅读 · 3 评论 -
Linux下MQTT安装及测试
雨打梨花深闭门忘了青春误了青春物联网老师上课的时候突然让用MQTT写一个通信程序,实现命令控制,他说的是客户端输入ls,那边就得返回目录信息,不是很懂,查了一大堆也不会,今天有点时间把第一步走了。MQTT程序安装千里之行,始于足下这东西安装也是费了大劲,百度一查全是介绍协议的,优快云博客上也是互相抄的飞起,没一个是真正能用的,要么抄别人没抄完,要么抄的就是错的。理一下我们...原创 2019-10-24 23:06:23 · 5124 阅读 · 1 评论 -
使用select函数监测http请求超时
人生如逆旅我亦是行人最近研究怎么实现HTTP请求超时检测并踢掉请求的功能。一开始想到用linux的信号机制,可是用了感觉问题挺多的,好多时候不生效,要么就是不能一个进程里重复用。然后就在博客上找,基本都是说select的,索性我就两个都用了,DNS请求用信号,TCP连接和HTTP请求用seletct。一般我们用select都是在用到多路复用的情况下,也就是委托系统内核帮我们先检测一下...原创 2019-10-13 17:00:04 · 461 阅读 · 0 评论 -
C/C++使用信号实现超时功能
若教眼底无离恨不信人间有白头Python可以通过装饰器实现函数的超时,C/C++就得想点别的办法了,可以借助一个操作系统的信号机制。网上资料很多,这里我直接放代码,一看就懂,其实就调用了两个系统调用。#include <signal.h>#include <cstdio>#include <unistd.h>void handle(int s...原创 2019-10-11 17:25:28 · 2877 阅读 · 1 评论 -
C/C++跨文件共享全局变量
满堂唯有烛花红歌且从容杯且从容最近有这么个需求,在utils.h中定义一个跨文件全局变量tmp,然后要在其他几个源文件a.cpp,b.cpp,c.cpp中用到这个tmp,包括修改和查看。一开始想到的就是直接用static修饰不就好了吗?结果发现了,static修饰的全局变量不能跨文件共享,新知识。当然了,普通的全局变量也是不可以的,不然会直接拷贝一份,这样就不是共享同一个变量了。...原创 2019-10-11 17:15:46 · 7618 阅读 · 4 评论 -
C/C++中分割字符串
我最怜君中宵舞道“男儿到死心如铁”看试手,补天裂解析HTTP响应报文的时候,响应头中除了第一行,其他行都是key: value结构,怎么高效方便地解析成map类型的数据呢?我首先想到的就是sscanf函数,于是写了如下程序:#include <cstdio>int main() { char *str = "sss: sssss"; char key[...原创 2019-10-10 14:11:50 · 219 阅读 · 0 评论 -
C++头文件中函数被多次定义
疏影横斜水清浅暗香浮动月黄昏重定义问题:之前由碰到过类似的问题,然后可以通过条件编译来解决:#ifndef XXXX#define XXXX...... #endif大概就是头文件被多个源文件包含以后,里面的函数也会被多次编译生成可执行文件,就发生了重定义的问题。通过条件编译,可以解决一种情况下的问题,那就是头文件中只声明,而不定义或者说不实现。发生这个问题的本...原创 2019-10-09 18:27:40 · 3998 阅读 · 0 评论 -
C++使用ssl发送https请求
最近用C++写爬虫,发现很不对劲。。。因为大部分网站都换成了https,每次获得的响应都是302。。提示重定向到他们的https站点上去,这太伤人心了,搞了半天,居然访问不了。当然不能这么放弃了,于是各种搜,终于明白了,https请求如何发出去和收到响应。总的来说,需要经过以下步骤:初始化OpenSSL创建CTX上下文环境建立TCP连接创建SSL套接字,将SSL与TCP SOCK...原创 2019-09-28 20:48:06 · 6637 阅读 · 3 评论 -
http响应报文的长度
HTTP1.0http1.0因为是短连接,所以是没有keepalive的,对方会直接close()掉。也就是:while (read()/recv() == -1) ...对方close()后收到的就是-1。HTTP1.1HTTP 1.1标准给出了如下方法(按照优先级依次排列):响应状态(Response Status)为1xx/204/304或者请求方法为HEAD时,消...原创 2019-09-28 16:37:23 · 6559 阅读 · 0 评论 -
对‘vtable for ×××’未定义的引用"undefined reference to `vtable for"
这个问题这的是,搞了我好久了,搜了好多,看了好多文章,最后还是自己的问题。。。代码大概是这样的:class Socket {public: Socket(std::string addr, int port, std::string out_path); virtual ~Socket(); virtual int sendl(std::string content)...原创 2019-09-28 16:36:09 · 4935 阅读 · 0 评论 -
C/C++中引用的底层原理
其实我们见到的大部分解释都是这么说的:引用就是变量的别名引用不占用空间引用和指针的区别,blablabla…引用到底占用空间没,占用的话存的是什么?首先我们来看看对引用取地址会发生什么?#include <cstdio>int main() { int a = 10; int &b = a; printf("%x\n%x\n", &a...原创 2019-09-26 14:06:44 · 950 阅读 · 0 评论 -
leetcode---98. Validate Binary Search Tree C++ 题解
98. Validate Binary Search Tree推荐办法只需要明白一个结论:BST树的中序遍历一定是严格递增的参考:二叉排序树(BST)/二叉查找树的建立(BST是笔试面试的常客);中序走一遍,生成中序序列;判断中序序列是否递增。。。class Solution {public: bool isValidBST(TreeNode* root) { ...原创 2019-03-11 17:09:58 · 329 阅读 · 0 评论 -
leetcode---96. Unique Binary Search Trees C++ 题解
96. Unique Binary Search TreesC++,讲一下思路。设n个结点的树能组成bst个数为dp(n),以点i为根结点构成的BST数目为f(i);根据以上假设,我们可以先得出dp(0) = 0,dp(1) = 1,这是边界条件;因为bst的个数应该为以每个结点作为根结点能构成的bst数目的总和,则有dp(n) = f(1) + f(2) + f(3) + ... ...原创 2019-03-11 17:08:39 · 359 阅读 · 0 评论 -
leetcode---95. Unique Binary Search Trees II C++题解
C++。思路如下:对于连续整数序列[left, right]中的一点i,若要生成以i为根节点的BST,则有如下规律:i左边的序列可以作为左子树结点,且左儿子可能有多个,所以有vector<TreeNode *> left_nodes = generate(left, i - 1);;i右边的序列可以作为右子树结点,同上所以有vector<TreeNode *> ...原创 2019-03-11 17:07:11 · 341 阅读 · 0 评论 -
leetcode---94. Binary Tree Inorder Traversal C++题解
C++,二叉树的中序遍历,这个没什么好说的2333。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), ri...原创 2019-03-11 17:06:00 · 326 阅读 · 0 评论 -
leetcode---93. Restore IP Addresses C++题解
93. Restore IP Addressesdfs,回溯+剪枝。。。就我觉得中等题做到后面,完成一道题花的时间越来越长吗?下面说下思路用left和right变量控制ip地址每段的范围,其中:left作为每段起始点,且在每次函数调用中向后递进,即dfs(ans, s, depth + 1, right + 1, temp + ts + ".");;righr作为每段终点,同时也是循...原创 2019-03-10 12:48:57 · 426 阅读 · 0 评论