自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 收藏
  • 关注

原创 C/C++获取程序堆栈信息

碧玉妆成一树高万条垂下绿丝绦前言如果是想做profile,可以使用libunwind获得C++的堆栈信息。libunwind这玩意说实话,资料特别特别少,特别是相关接口使用的例子,我只找到了一个,然后其他人全部抄的这一个,而且他还是获取当前程序堆栈的,也就是必须在被profile的程序中调用libunwind接口才能获取到堆栈信息。。。然后还不是中文的,国内关于libunwind的资...

2020-02-21 22:58:36 3230 3

原创 使用MQTT实现简单命令控制

塞上长城空自许镜中衰鬓已先斑前面的博文中已经讲了如何安装MQTT的环境,以及如何进行测试,并给出了一个C语言的小例子。今天再讲讲paho.mqtt.c中一些常用接口的使用以及实现一个命令控制及回显功能。接口介绍这里讲的不详细,如果有读者读到了感觉不太懂的话,需要先了解一下MQTT的的工作机制。MQTTClient_create()int MQTTClient_create(MQTT...

2019-10-27 19:16:40 5469

原创 Linux下MQTT安装及测试

雨打梨花深闭门忘了青春误了青春物联网老师上课的时候突然让用MQTT写一个通信程序,实现命令控制,他说的是客户端输入ls,那边就得返回目录信息,不是很懂,查了一大堆也不会,今天有点时间把第一步走了。MQTT程序安装千里之行,始于足下这东西安装也是费了大劲,百度一查全是介绍协议的,CSDN博客上也是互相抄的飞起,没一个是真正能用的,要么抄别人没抄完,要么抄的就是错的。理一下我们...

2019-10-24 23:06:23 4859 1

原创 apt install 出现 Encountered a section with no Package header

流水下滩非有意白云出岫本无心安装uuid的时候报错了,其实很多次安装的时候都报过这种错:sudo apt install libuuid-devel然后就出现:正在读取软件包列表... 有错误!E: Encountered a section with no Package: headerE: Problem with MergeList /var/lib/apt/lists/...

2019-10-24 23:05:44 238

原创 球队“食物链”

竹杖芒鞋轻胜马谁怕?一蓑烟雨任平生这是PTA上一道作业题,大概就是在有向图中找出一个字典序最小的环,要求这个环连接了所有的点。首先想到的就是DFS了,思路如下:根据输入,建立所有的有向边,当然可能出现双向的使用深度优先遍历,用一个vector记录路径,用一个vis数组记录当前路径经过的点每进入下一个点前,判断这个点有没有访问过,是不是连通如果记录路径的vector存下了n个...

2019-10-13 21:04:28 574 1

原创 使用select函数监测http请求超时

人生如逆旅我亦是行人最近研究怎么实现HTTP请求超时检测并踢掉请求的功能。一开始想到用linux的信号机制,可是用了感觉问题挺多的,好多时候不生效,要么就是不能一个进程里重复用。然后就在博客上找,基本都是说select的,索性我就两个都用了,DNS请求用信号,TCP连接和HTTP请求用seletct。一般我们用select都是在用到多路复用的情况下,也就是委托系统内核帮我们先检测一下...

2019-10-13 17:00:04 367

原创 删除链表中重复的结点

玉颜不及寒鸦色犹带昭阳日影来C++,链表题。对,链表题往往都不难,就是麻烦。。。其实就是找到连续重复子序列的左右端点,然后删就行了。当然OJ没法判断你删没删,实际上你只要移动指针改变指向就好了哈哈哈。有个屡试不爽的技巧,就是在原链表前加个头。详细见代码:/*struct ListNode { int val; struct ListNode *next; ...

2019-10-11 23:29:05 105

原创 C/C++使用信号实现超时功能

若教眼底无离恨不信人间有白头Python可以通过装饰器实现函数的超时,C/C++就得想点别的办法了,可以借助一个操作系统的信号机制。网上资料很多,这里我直接放代码,一看就懂,其实就调用了两个系统调用。#include <signal.h>#include <cstdio>#include <unistd.h>void handle(int s...

2019-10-11 17:25:28 2700 1

原创 C/C++跨文件共享全局变量

满堂唯有烛花红歌且从容杯且从容最近有这么个需求,在utils.h中定义一个跨文件全局变量tmp,然后要在其他几个源文件a.cpp,b.cpp,c.cpp中用到这个tmp,包括修改和查看。一开始想到的就是直接用static修饰不就好了吗?结果发现了,static修饰的全局变量不能跨文件共享,新知识。当然了,普通的全局变量也是不可以的,不然会直接拷贝一份,这样就不是共享同一个变量了。...

2019-10-11 17:15:46 7300 4

原创 C/C++中分割字符串

我最怜君中宵舞道“男儿到死心如铁”看试手,补天裂解析HTTP响应报文的时候,响应头中除了第一行,其他行都是key: value结构,怎么高效方便地解析成map类型的数据呢?我首先想到的就是sscanf函数,于是写了如下程序:#include <cstdio>int main() { char *str = "sss: sssss"; char key[...

2019-10-10 14:11:50 160

原创 剑指offer真题:链表中环的入口结点

风乍起吹皱一池春水C++,链表快慢指针,leetcode原题。我们定义快慢两个指针,从第一个结点触发,快指针一次走两个结点,慢指针一次走一个结点,于是会存在如下情况:如果有环,则两个指针一定会再次相遇,且快指针经过的结点数是慢指针的两倍数;如果无环,快指针先碰到空指针。所以我们假设l_slow为慢指针经过的结点数,l_quick是快指针经过的结点数,环中的结点数为circle,...

2019-10-09 21:12:19 131

原创 C++头文件中函数被多次定义

疏影横斜水清浅暗香浮动月黄昏重定义问题:之前由碰到过类似的问题,然后可以通过条件编译来解决:#ifndef XXXX#define XXXX...... #endif大概就是头文件被多个源文件包含以后,里面的函数也会被多次编译生成可执行文件,就发生了重定义的问题。通过条件编译,可以解决一种情况下的问题,那就是头文件中只声明,而不定义或者说不实现。发生这个问题的本...

2019-10-09 18:27:40 3836

原创 http的chunked编码

但远山长云山乱晓山青之前在http响应报文的长度中讲了http响应报文是如何告知客户端他要接收的长度的,其中就降到了“chunked”编码,那“chunked”编码具体怎么控制实现的呢?首先看一下http的响应头:HTTP/1.1 200 OKBdpagetype: 1Bdqid: 0x8329f5fd0015bc7cCache-Control: privateConnect...

2019-10-06 23:40:44 360

原创 C++使用ssl发送https请求

最近用C++写爬虫,发现很不对劲。。。因为大部分网站都换成了https,每次获得的响应都是302。。提示重定向到他们的https站点上去,这太伤人心了,搞了半天,居然访问不了。当然不能这么放弃了,于是各种搜,终于明白了,https请求如何发出去和收到响应。总的来说,需要经过以下步骤:初始化OpenSSL创建CTX上下文环境建立TCP连接创建SSL套接字,将SSL与TCP SOCK...

2019-09-28 20:48:06 6396 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 6294

原创 对‘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 4564

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

原创 不用加减乘除做加法---剑指offer

不用加减乘除做加法C++,位运算。不能用四则运算实现加法,就只能用位运算来实现了。在十进制中,加法的过程如下,例如a + b = 134 + 267:加法包括按位相加以及进位按位相加就是[1 + 2 = 3, 3 + 6 = 9, 4 + 7 = 1], 即a = [0, 3, 9, 1];进位就是把和当成四位数来看[0, 1 + 2 = 0, 3 + 6 = 0, 4 + 7 = ...

2019-05-21 15:24:58 158

原创 数组中只出现一次的数字---剑指offer

数组中只出现一次的数字C++,位运算,按位异或和按位与。首先就是要知道,一个数a和初始为0的数b一次异或(b = a ^ b),会得到b = a,两次异或,则b = 0。所以如果一个序列中,只有一个元素a出现次数为奇数,其他序列出现次数为偶数,将数b = 0与序列中所有值进行异或运算,则最终b = a。这道题中给的序列中有两个出现了一次的元素a、b,其他都出现了两次。我们可以把这个序列分成两...

2019-05-11 00:16:58 227

原创 丑数----剑指offer

丑数C++,丑数,质因数。网上很多代码讲了怎么获得下一个最小的丑数,就是利用前面的每一个丑数分别*2,*3,*5,然后选出最小的那个。按照这个描述,只能每次将之前所有的丑数都和2、3、5乘一遍,那复杂度就是O(n),可网上写出来的代码都是O(n)的,你说气人不气人???看了一会自己看懂了,把思路讲一下:首先每个丑数都是由之前的丑数乘(*2,*3,*5)出来的;为了得到所有丑数,我们可以...

2019-05-09 17:29:27 170

原创 剑指offer---二进制中1的个数 C++ 题解

C++,其实考点中已经说了是位运算了,所以应该首先考虑利用位运算。按位与(&amp;)运算符顾名思义,就是对操作数的二进制进行与运算,比如2&amp;1,结果就是0,因为二进制计算10&amp;01就是00嘛。n&amp;n-1做了什么我们举个例子,假设n = 10,n的二进制为1010,n - 1即9,二进制为1001,此时我们再用1010&amp;1001,结果就是1000,然后就发...

2019-03-14 22:57:39 420 1

原创 leetcode---114. Flatten Binary Tree to Linked List C++题解

114. Flatten Binary Tree to Linked ListC++,数据量不大的情况下,时间没什么意义,看运气都。。。复杂度O(n),思路如下:分两步:将每个结点的右子树,接到左子树叶子结点上,有如下规则:一直遍历左子树,如果有右子树,将右子树结点入栈,直到叶节点;当前结点为叶节点时,取当前结点或者最近的祖父结点的右子树作为左子树结点(取栈顶);递归每个左儿子结...

2019-03-14 15:37:29 240

原创 leetcode---113. Path Sum II C++题解

113. Path Sum IIC++。dfs,回溯,不剪枝。没有说是正整数就不要剪枝了。。。typedef TreeNode* TNP;class Solution {public: vector&lt;vector&lt;int&gt;&gt; pathSum(TreeNode* root, int sum) { vector&lt;vector&lt;in...

2019-03-14 15:36:34 258

原创 leetcode---109. Convert Sorted List to Binary Search Tree C++题解

109. Convert Sorted List to Binary Search TreeC++,代码很简短。。。本来可以真的去构造AVL树,但是给的序列已经是有序的了,就没必要了。不然AVL写下来至少也得七八十行。。。思路就是利用分治的思想,将中间结点作为分割点,分成左子树和右子树。首先链表元素可以先用vector存一下,因为后面如果用链表再去找中间结点的话,很影响效率;找到当前区间...

2019-03-14 15:35:48 255

原创 leetcode---106. Construct Binary Tree from Inorder and Postorder Traversal C++题解

106. Construct Binary Tree from Inorder and Postorder Traversal以下思路参考柳婼文章:已知后序与中序输出前序(先序)C++。首先要知道一个结论,前序/后序+中序序列可以唯一确定一棵二叉树,所以自然而然可以用来建树。看一下中序和后序有什么特点,中序[9,3,15,20,7] ,后序[9,15,7,20,3];有如下特征:...

2019-03-14 15:34:00 312

原创 leetcode---105. Construct Binary Tree from Preorder and Inorder Traversal C++题解

105. Construct Binary Tree from Preorder and Inorder Traversal这道题剑指offer已经做过了,见重建二叉树直接复制思路:C++。首先要知道一个结论,前序/后序+中序序列可以唯一确定一棵二叉树,所以自然而然可以用来建树。看一下前序和中序有什么特点,前序1,2,4,7,3,5,6,8 ,中序4,7,2,1,5,3,8,6;有...

2019-03-14 15:28:16 282

原创 leetcode---103. Binary Tree Zigzag Level Order Traversal C++题解

103. Binary Tree Zigzag Level Order Traversal102题解–102. Binary Tree Level Order Traversal上一题递归做的,这题也可以递归做,同样也是线性复杂度,但是递归的效率肯定比较低,所以这次也提供用队列和栈的解法。递归版本,就是在102解法的基础上,将ans的行按照奇数反向reverse:class Solu...

2019-03-14 15:27:18 271

原创 leetcode---102. Binary Tree Level Order Traversaleode C++ 题解

102. Binary Tree Level Order TraversalC++,应该是最短的代码了。层序遍历一般来说确实是用队列实现的,但是这里很明显用递归前序遍历就能实现呀,而且复杂度O(n)。。。要点有几个:利用depth变量记录当前在第几层(从0开始),进入下层时depth + 1;如果depth &gt;= vector.size()说明这一层还没来过,这是第一次来,...

2019-03-14 15:26:11 252

原创 剑指offer真题:重建二叉树

以下思路参考柳婼文章:已知后序与中序输出前序(先序)C++。首先要知道一个结论,前序/后序+中序序列可以唯一确定一棵二叉树,所以自然而然可以用来建树。看一下前序和中序有什么特点,前序1,2,4,7,3,5,6,8 ,中序4,7,2,1,5,3,8,6;有如下特征:前序中左起第一位1肯定是根结点,我们可以据此找到中序中根结点的位置rootin;中序中根结点左边就是左子树结点,右边就是...

2019-03-12 12:44:55 216

原创 学科语文调剂信息汇总

学科语文调剂信息汇总开设学科语文的学校校友会分省份大学排名浙江温州大学人文学院联系人:李老师邮箱:[email protected]手机:17858725799宁波大学教师教育学院学科语文只有非全,少量浙江工业大学教育科学与技术学院先不管浙江海洋大学人文学院、教师教育学院------教育硕士0451:学科语文QQ群:786116776傅老师:05...

2019-03-12 00:11:09 15933

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

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

原创 leetcode---95. Unique Binary Search Trees II C++题解

C++。思路如下:对于连续整数序列[left, right]中的一点i,若要生成以i为根节点的BST,则有如下规律:i左边的序列可以作为左子树结点,且左儿子可能有多个,所以有vector&lt;TreeNode *&gt; left_nodes = generate(left, i - 1);;i右边的序列可以作为右子树结点,同上所以有vector&lt;TreeNode *&gt; ...

2019-03-11 17:07:11 296

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

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

原创 Linux简单常用命令

常用简单命令更换成root用户:su更换普通用户:su - &lt;username&gt;查看当前路径:pwd安装软件包:./*.sh到处跑:cd列出目录下文件及文件夹:ls、ls -a、ls -al新建文件夹:mkdir &lt;dirname&gt;删除空文件夹:rmdir &lt;dirname&gt;删除非空文件夹:rm -r &lt;dirname&gt;新建文...

2019-03-07 12:20:50 204

原创 Clion修改菜单栏(界面)字体

Clion修改菜单栏(界面)字体网上搜了我两天,都没有找到可以修改Clion界面字体的教程。。。基本全是修改编辑器字体的,这谁不会呀!终于自己找到了!!!如下:file–&gt;settings–&gt;appearance–&gt;(勾选)override default fonts(not recommended)–&gt;选择字体见图:...

2019-03-07 12:16:08 6669

原创 Linux(Ubuntu)安装字体

安装字体如果是双系统的话可以直接用windows下的字体:将字体文件复制(移动)到/usr/share/fonts/下cp &amp;lt;path&amp;gt; /usr/share/fonts在终端依次执行如下命令:sudo mkfontscalesudo mkfontdirsudo fc-cache -fv新的字体安装完成微软雅黑不能商用哎!...

2019-03-07 12:11:30 523

转载 Linux截图

截图快捷键参考:百度经验 整个屏幕截图:PrintScreen(在键盘的上方,“F12”右边) 活动窗口截图:Alt + PrintScreen 截取选定区域:shift+PrintScreen,鼠标会变成“十”字的形状,点击截取的起点,拖动鼠标设定范围后,截图就被保存了。 ...

2019-03-07 12:03:00 325

原创 Python爬虫对知乎问题下的图片进行爬取

知乎的反爬做得很严格1.翻页信息在首页的url不更新2.要拿到所有图片需要翻页,同时不能用问题首页的url,信息所在如下图,翻页信息,data里面几乎有所有需要的信息3.访问频率限制,这严重影响了爬虫的速度,我多次用try-except做出调整,防止程序崩溃这就是我爬取知乎信息后的一些经验分享,有很多不足,谢谢指正详细思路在代码和注释中:#爬取知乎回答下面照片的爬虫#难点

2017-08-20 17:40:33 3578 2

空空如也

空空如也

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

TA关注的人

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