![](https://img-blog.csdnimg.cn/2019092010212770.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
C++
文章平均质量分 76
Antrn
和光同尘,与时舒卷;戢鳞潜翼,思属风云。
展开
-
【干货】Windows平台基于udp的socket网络编程开发
使用UDP进行windows平台下的socket网络编程,本人在vs 2019编译器上开发,语言C++,希望能为大家提供一些参考。首先建立两个项目,分别称之为客户端和服务端,唯一的区别是服务端需要绑定IP和端口,客户端指明服务端的IP和端口,这样就可以通信啦。首先是写一个简单的客户端发送字符串到服务端的程序,因为比较简单,直接上代码,其中的注释很详细,有不明白的小伙伴可以评论区或者私信~UDP_Client.cpp#include <stdio.h>#include <tchar原创 2021-06-28 17:33:00 · 4589 阅读 · 13 评论 -
Windows平台实现UDP通信
有两个学弟找我问windows上开发udp的相关问题,自己在vs 2019上面建立两个项目试一下。具体代码如下:接收端写法接收数据端,使用while循环等待数据到来并解析,单线程。暂且命名为UDP_Server.cpp#include<stdio.h>#include<tchar.h>#include <iostream>#include <WinSock2.h>#include <Windows.h>#include <W原创 2021-05-21 16:13:01 · 2333 阅读 · 2 评论 -
一文搞懂串口通信
很久之前就听说“串口”这个词。一直没明白它是什么意思,应用在什么场景,有什么特点和优点。近来又在某个文档中看到“电脑上至少配置两个RS232串口,一个RJ-45网口”,我实在拖不了了,今天一定要把它搞清楚。研究之前我先是在网上搜了一些Qt和串口通信开发相关的资料,大致看了一下大家的博文,稍微有一个简单的了解,然后我先去问一下实验室的好兄弟,简单沟通了一下,听听其他同学的想法,然后开干!百度百科上对于“串口"和"串口通信”的解释:串行接口 是一种可以将接收来自CPU的并行数据字符转换为连续的串行原创 2021-05-19 22:48:04 · 4817 阅读 · 4 评论 -
最近看的博客资料汇总备份
资料安装librealsense安装kdevelop安装`Qt creater5.5.1`ROS kinetic 机器人操作系统realsense D435cmakeQt+opencvQt Udpsocket Linux配置qt creater中opencv的库OpencvQt自启动Qt ExcelQt多线程地理坐标计算Realsense多个摄像头Qt延时QCustomPlottx2高功耗模式CPU亲和性Qt 事件安装librealsensegithublibrealsense2及pyrealsens原创 2021-03-06 16:23:29 · 245 阅读 · 0 评论 -
线程/进程和核绑定(CPU亲和性)
文章目录前言一、CPU亲和性1 前言2 为何要手动绑定线程/进程到CPU核3 多进程和多线程在多核CPU上运行:4 应用场景举例二、Linux的CPU亲和性特征1 软亲和性2 硬亲和性3 硬亲和性使用场景三、查看CPU的核1 使用指令2 使用sysconf四、Linux操作系统中修改CPU亲和性的方法1 taskset1.1 获取进程pid:`ps`1.2 查看进程当前运行在哪个cpu上1.3 指定进程运行在cpu1上1.4 如何确认绑定成功1.5 启动程序时绑定cpu2 Linux API2.1 绑定进程原创 2021-03-01 16:52:44 · 10844 阅读 · 2 评论 -
C++内存管理
目录内存简介物理结构基本构成导语内存管理内存分配方式示例区分栈和堆栈和堆的区别控制C++内存分配常见的内存错误指针和数组的对比修改内容内容复制与比较计算内存容量内存泄露内存回收内存简介内存是程序与CPU沟通的桥梁。计算机所有的程序的运行都是在内存中运行的,内存又称为“主存”,其作用是存放CPU中的运算数据,以及与硬盘等外部存储设备交换的数据。只要计算机在运行中,CPU就会把需要的数据调到主存中进行运算,当运算完成后CPU再将结果传送出来,主存的运行也决定了计算机的稳定运行。主存通过芯片与CPU进行相原创 2020-11-25 21:40:36 · 432 阅读 · 1 评论 -
【LeetCode】41.缺失的第一个正数
给你一个未排序的整数数组,请你找出其中没有出现的最小的正整数。示例 1:输入: [1,2,0]输出: 3示例 2:输入: [3,4,-1,1]输出: 2示例 3:输入: [7,8,9,11,12]输出: 1提示:你的算法的时间复杂度应为O(n),并且只能使用常数级别的额外空间。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/first-missing-positiveC++1 使用hash set记录【通过】思路:很简单,原创 2020-06-27 17:10:30 · 915 阅读 · 0 评论 -
【LeetCode每日一题】车的可用捕获量
在一个 8 x 8 的棋盘上,有一个白色车(rook)。也可能有空方块,白色的象(bishop)和黑色的卒(pawn)。它们分别以字符 “R”,“.”,“B” 和 “p” 给出。大写字符表示白棋,小写字符表示黑棋。车按国际象棋中的规则移动:它选择四个基本方向中的一个(北,东,西和南),然后朝那个方向移动,直到它选择停止、到达棋盘的边缘或移动到同一方格来捕获该方格上颜色相反的卒。另外,车不能与其他...原创 2020-03-26 12:43:17 · 295 阅读 · 0 评论 -
【LeetCode每日一题】三维形体的表面积
在 N * N 的网格上,我们放置一些 1 * 1 * 1 的立方体。每个值 v = grid[i][j] 表示 v 个正方体叠放在对应单元格 (i, j) 上。请你返回最终形体的表面积。示例 1:输入:[[2]]输出:10示例 2:输入:[[1,2],[3,4]]输出:34示例 3:输入:[[1,0],[0,2]]输出:16示例 4:输入:[[1,1,1...原创 2020-03-25 10:00:47 · 262 阅读 · 0 评论 -
【LeetCode每日一题】按摩师
一个有名的按摩师会收到源源不断的预约请求,每个预约都可以选择接或不接。在每次预约服务之间要有休息时间,因此她不能接受相邻的预约。给定一个预约请求序列,替按摩师找到最优的预约集合(总预约时间最长),返回总的分钟数。注意:本题相对原题稍作改动示例 1:输入: [1,2,3,1]输出: 4解释: 选择 1 号预约和 3 号预约,总时长 = 1 + 3 = 4。示例 2:输入: [2,...原创 2020-03-24 11:21:18 · 327 阅读 · 0 评论 -
【LeetCode每日一题】链表的中间结点
给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。示例 1:输入:[1,2,3,4,5]输出:此列表中的结点 3 (序列化形式:[3,4,5])返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。注意,我们返回了一个 ListNode 类型的对象 ans,这样:ans.val = 3, ans.next...原创 2020-03-23 11:00:02 · 193 阅读 · 0 评论 -
【LeetCode每日一题】使数组唯一的最小增量
给定整数数组 A,每次 move 操作将会选择任意 A[i],并将其递增 1。返回使 A 中的每个值都是唯一的最少操作次数。示例 1:输入:[1,2,2]输出:1解释:经过一次 move 操作,数组将变为 [1, 2, 3]。示例 2:输入:[3,2,1,2,1,7]输出:6解释:经过 6 次 move 操作,数组将变为 [3, 4, 1, 2, 5, 7]。可以看出 5...原创 2020-03-22 11:34:41 · 385 阅读 · 0 评论 -
【LeetCode每日一题】水壶问题
有两个容量分别为 x升 和 y升 的水壶以及无限多的水。请判断能否通过使用这两个水壶,从而可以得到恰好 z升 的水?如果可以,最后请用以上水壶中的一或两个来盛放取得的 z升 水。你允许:装满任意一个水壶清空任意一个水壶从一个水壶向另外一个水壶倒水,直到装满或者倒空示例 1: (From the famous “Die Hard” example)输入: x = 3, y = 5, ...原创 2020-03-21 10:35:35 · 202 阅读 · 0 评论 -
【LeetCode每日一题】最小的k个数
输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。示例 1:输入:arr = [3,2,1], k = 2输出:[1,2] 或者 [2,1]示例 2:输入:arr = [0,1,2,1], k = 1输出:[0]限制:0 <= k <= arr.length <= 10...原创 2020-03-21 09:31:45 · 322 阅读 · 0 评论 -
【LeetCode每日一题】最长回文串
给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。在构造过程中,请注意区分大小写。比如 “Aa” 不能当做一个回文字符串。注意:假设字符串的长度不会超过 1010。示例 1:输入:“abccccdd”输出:7解释:我们可以构造的最长的回文串是"dccaccd", 它的长度是 7。C++1 消偶保奇新建set,设置计数变量count,遍历一次字符串...原创 2020-03-19 10:08:30 · 216 阅读 · 0 评论 -
【LeetCode每日一题】矩形重叠
矩形以列表 [x1, y1, x2, y2] 的形式表示,其中 (x1, y1) 为左下角的坐标,(x2, y2) 是右上角的坐标。如果相交的面积为正,则称两矩形重叠。需要明确的是,只在角或边接触的两个矩形不构成重叠。给出两个矩形,判断它们是否重叠并返回结果。示例 1:输入:rec1 = [0,0,2,2], rec2 = [1,1,3,3]输出:true示例 2:输入:rec...原创 2020-03-18 10:05:35 · 265 阅读 · 0 评论 -
【LeetCode每日一题】拼写单词
给你一份『词汇表』(字符串数组) words 和一张『字母表』(字符串) chars。假如你可以用 chars 中的『字母』(字符)拼写出 words 中的某个『单词』(字符串),那么我们就认为你掌握了这个单词。注意:每次拼写时,chars 中的每个字母都只能用一次。返回词汇表 words 中你掌握的所有单词的 长度之和。示例 1:输入:words = [“cat”,“bt”,“hat...原创 2020-03-17 21:46:36 · 554 阅读 · 0 评论 -
【LeetCode每日一题】字符串压缩
字符串压缩。利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能。比如,字符串aabcccccaaa会变为a2b1c5a3。若“压缩”后的字符串没有变短,则返回原先的字符串。你可以假设字符串中只包含大小写英文字母(a至z)。示例1:输入:“aabcccccaaa”输出:“a2b1c5a3”示例2:输入:“abbccd”输出:“abbccd”解释:“abbccd"压缩后...原创 2020-03-16 11:09:12 · 220 阅读 · 0 评论 -
【LeetCode每日一题】岛屿的最大面积
给定一个包含了一些 0 和 1的非空二维数组 grid , 一个 岛屿 是由四个方向 (水平或垂直) 的 1 (代表土地) 构成的组合。你可以假设二维矩阵的四个边缘都被水包围着。找到给定的二维数组中最大的岛屿面积。(如果没有岛屿,则返回面积为0。)示例 1:[[0,0,1,0,0,0,0,1,0,0,0,0,0], [0,0,0,0,0,0,0,1,1,1,0,0,0], [0,1,1,...原创 2020-03-15 14:27:45 · 427 阅读 · 0 评论 -
【LeetCode每日一题】多数元素
给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例 1:输入: [3,2,3]输出: 3示例 2:输入: [2,2,1,1,1,2,2]输出: 2来源:力扣(LeetCode)c++1思路:先找出数组nums中不同元素的数目,存储在map中,然后遍历map...原创 2020-03-13 10:07:22 · 263 阅读 · 0 评论 -
【LeetCode每日一题】字符串的最大公因子
对于字符串 S 和 T,只有在 S = T + … + T(T 与自身连接 1 次或多次)时,我们才认定 “T 能除尽 S”。返回最长字符串 X,要求满足 X 能除尽 str1 且 X 能除尽 str2。示例 1:输入:str1 = “ABCABC”, str2 = “ABC”输出:“ABC”示例 2:输入:str1 = “ABABAB”, str2 = “ABAB”输出:“A...原创 2020-03-12 13:43:22 · 413 阅读 · 0 评论 -
【LeetCode每日一题】将数组分成和相等的三个部分
给你一个整数数组 A,只有可以将其划分为三个和相等的非空部分时才返回 true,否则返回 false。形式上,如果可以找出索引 i+1 < j 且满足 (A[0] + A[1] + … + A[i] == A[i+1] + A[i+2] + … + A[j-1] == A[j] + A[j-1] + … + A[A.length - 1]) 就可以将数组三等分。示例 1:输出:[0,...原创 2020-03-11 13:22:50 · 969 阅读 · 0 评论 -
Windows动态链接库
一、Windows的动态链接库简介DLL即动态链接库(Dynamic-Link Library)的缩写,相当于Linux下的共享对象。Windows系统中大量采用DLL机制,甚至内核的结构很大程度依赖于DLL机制。Windows下的DLL文件和EXE文件实际上是一个概念,都是PE格式的二进制文件。1.1 Windows下面的动态链接库与Linux下面的动态链接库的区别(1)文件后缀不同Li...原创 2020-03-10 19:44:08 · 3541 阅读 · 0 评论 -
【LeetCode每日一题】二叉树的直径
给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过根结点。示例 :给定二叉树 1 / \ 2 3 / \ 4 5 返回 3, 它的长度是路径 [4,2,1,3] 或者 [5,2,1,3]。注意:两结点之间的路径长度是以它们之间边的数目表示来源:力扣(LeetC...原创 2020-03-10 13:54:10 · 280 阅读 · 0 评论 -
【LeetCode每日一题】买卖股票的最佳时机
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。注意利润不能...原创 2020-03-09 22:21:22 · 153 阅读 · 0 评论 -
【LeetCode每日一题】零钱兑换
给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。示例 1:输入: coins = [1, 2, 5], amount = 11输出: 3解释: 11 = 5 + 5 + 1示例 2:输入: coins = [2], amount = 3输出: -1说明:你可以...转载 2020-03-08 11:49:56 · 293 阅读 · 0 评论 -
【LeetCode每日一题】*队列的最大值
请定义一个队列并实现函数 max_value 得到队列里的最大值,要求函数max_value、push_back 和 pop_front 的均摊时间复杂度都是O(1)。若队列为空,pop_front 和 max_value 需要返回 -1示例 1:输入:[“MaxQueue”,“push_back”,“push_back”,“max_value”,“pop_front”,“max_val...转载 2020-03-07 22:49:41 · 448 阅读 · 0 评论 -
【LeetCode每日一题】和为s的连续正数序列
输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。示例 1:输入:target = 9输出:[[2,3,4],[4,5]]示例 2:输入:target = 15输出:[[1,2,3,4,5],[4,5,6],[7,8]]限制:1 <= target <= ...原创 2020-03-06 22:06:29 · 237 阅读 · 0 评论 -
【LeetCode每日一题】腐烂的橘子
在给定的网格中,每个单元格可以有以下三个值之一:值 0 代表空单元格;值 1 代表新鲜橘子;值 2 代表腐烂的橘子。每分钟,任何与腐烂的橘子(在 4 个正方向上)相邻的新鲜橘子都会腐烂。返回直到单元格中没有新鲜橘子为止所必须经过的最小分钟数。如果不可能,返回 -1。示例 1:输入:[[2,1,1],[1,1,0],[0,1,1]]输出:4示例 2:输入:[[2,1,1]...转载 2020-03-05 16:14:02 · 473 阅读 · 0 评论 -
【简单LeetCode】数组的相对排序
给你两个数组,arr1 和 arr2,arr2 中的元素各不相同arr2 中的每个元素都出现在 arr1 中对 arr1 中的元素进行排序,使 arr1 中项的相对顺序和 arr2 中的相对顺序相同。未在 arr2 中出现过的元素需要按照升序放在 arr1 的末尾。示例:输入:arr1 = [2,3,1,3,2,4,6,7,9,2,19], arr2 = [2,1,4,3,9,6]输出...原创 2020-03-03 17:42:16 · 766 阅读 · 0 评论 -
【笔记】Effective C++ III
03 尽可能使用const允许程序员制定一个语义约束:不该被改动的对象,编译器会强制实施这项约束。可以修饰指针自身、所指物,或两者都是(不是)const。char greeting[] = "Hello;char* p = greeting; // 指针不是const,数据也不是constconst char* p = greeting; // 指针不是const,数据是constc...原创 2020-01-03 11:01:28 · 314 阅读 · 0 评论 -
LeetCode. 寻找旋转排序数组中的最小值 II
2019年最后一天,再做一道题…假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。请找出其中最小的元素。注意数组中可能存在重复的元素。示例 1:输入: [1,3,5]输出: 1示例 2:输入: [2,2,2,0,1]输出: 0说明:这道题是 寻找旋转排序数组中的最小值 的延伸...原创 2019-12-31 21:30:08 · 114 阅读 · 0 评论 -
LeetCode. 找到 K 个最接近的元素
给定一个排序好的数组,两个整数 k 和 x,从数组中找到最靠近 x(两数之差最小)的 k 个数。返回的结果必须要是按升序排好的。如果有两个数与 x 的差值一样,优先选择数值较小的那个数。示例 1:输入: [1,2,3,4,5], k=4, x=3输出: [1,2,3,4]示例 2:输入: [1,2,3,4,5], k=4, x=-1输出: [1,2,3,4]说明:k 的值为正...原创 2019-12-18 20:07:58 · 240 阅读 · 0 评论 -
LeetCode. 在排序数组中查找元素的第一个和最后一个位置
给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。你的算法时间复杂度必须是 O(log n) 级别。如果数组中不存在目标值,返回 [-1, -1]。示例 1:输入: nums = [5,7,7,8,8,10], target = 8输出: [3,4]示例 2:输入: nums = [5,7,7,8,8,10], t...原创 2019-12-14 22:48:48 · 176 阅读 · 1 评论 -
LeetCode. 寻找旋转排序数组中的最小值
假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。请找出其中最小的元素。你可以假设数组中不存在重复元素。示例 1:输入: [3,4,5,1,2]输出: 1示例 2:输入: [4,5,6,7,0,1,2]输出: 0C++1解题思路:首先明确,经过旋转的数组在旋转点两端还是有序...原创 2019-12-14 21:38:48 · 99 阅读 · 0 评论 -
LeetCode. 寻找峰值
峰值元素是指其值大于左右相邻值的元素。给定一个输入数组 nums,其中 nums[i] ≠ nums[i+1],找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回任何一个峰值所在位置即可。你可以假设 nums[-1] = nums[n] = -∞。示例 1:输入: nums = [1,2,3,1]输出: 2解释: 3 是峰值元素,你的函数应该返回其索引 2。示例 ...原创 2019-12-09 00:20:36 · 153 阅读 · 0 评论 -
LeetCode. 第一个错误的版本
你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。假设你有 n 个版本 [1, 2, …, n],你想找出导致之后所有版本出错的第一个错误的版本。你可以通过调用 bool isBadVersion(version) 接口来判断版本号 version 是否在单元测试中出错。实现...原创 2019-12-08 23:38:59 · 147 阅读 · 0 评论 -
LeetCode. 搜索旋转排序数组
假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。你可以假设数组中不存在重复的元素。你的算法时间复杂度必须是 O(log n) 级别。示例 1:输入: nums = [4,5,6,7,0,1,2], targ...原创 2019-12-08 12:58:57 · 169 阅读 · 2 评论 -
常数时间插入、删除和获取随机元素
设计一个支持在平均 时间复杂度 O(1) 下,执行以下操作的数据结构。insert(val):当元素 val 不存在时,向集合中插入该项。remove(val):元素 val 存在时,从集合中移除该项。getRandom:随机返回现有集合中的一项。每个元素应该有相同的概率被返回。示例 :// 初始化一个空的集合。RandomizedSet randomSet = new Randomi...原创 2019-11-27 17:57:05 · 252 阅读 · 0 评论 -
LeetCode. 前 K 个高频元素
给定一个非空的整数数组,返回其中出现频率前 k 高的元素。示例 1:输入: nums = [1,1,1,2,2,3], k = 2输出: [1,2]示例 2:输入: nums = [1], k = 1输出: [1]说明:你可以假设给定的 k 总是合理的,且 1 ≤ k ≤ 数组中不相同的元素的个数。你的算法的时间复杂度必须优于 O(n log n) , n 是数组的大小。...原创 2019-11-25 21:29:22 · 210 阅读 · 0 评论