自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

cchangcs

公众号:hw_cchang | GitHub: https://github.com/cchangcs | Email:cchang@whu.edu.cn

  • 博客(362)
  • 资源 (5)
  • 论坛 (1)
  • 收藏
  • 关注

原创 Windows10安装WDK报错setup cannot locate windows debugging wdk integration-x86_en-us.msi

setup cannot locate windows debugging wdk integration-x86_en-us.msiIE使用了代理导致的

2021-01-15 22:25:13 11

原创 Linux平台基于epoll实现网络编程IO多路复用

epoll 是在Linux 2.6 内核中提出的,是之前select 和poll 的增强版本。相对于select 和poll 来说, epoll 更加灵活,没有描述符限制。epoll 使用一个文件描述符管理多个描述符,将用户关系的文件描述符的事件存放到内核的一个事件表中,这样在用户空间和内核空间之间的数据拷贝只需一次。一、epoll 接口使用epoll 必须包含下面的这个头文件:#include <sys/epoll .h>epoll 操作过程需要3 个接口,分别如下:int e

2020-11-14 18:14:55 53

原创 Linux平台基于poll实现网络编程IO多路复用

1、概念介绍IO多路复用模型,也称为事件驱动IO模型,它的原理为通过一个函数(如poll)不断地轮询所负责的所有socket,当某个socket有数据到达时,就通知用户进程。#include<poll.h>int poll(struct pollfd * fds,unsigned int nfds ,int timeout);pollfd结构体定义如下所示:struct pollfd {int fd; /*文件描述符*/short events ;/*等待的事件*/

2020-11-08 20:47:32 88

原创 Linux平台基于select实现网络编程IO多路复用

目录1、概念介绍2、示例代码(1)server.cpp(2) client.cpp(3) Makefile(4) 编译 & 运行1、概念介绍IO多路复用模型,也称为事件驱动IO模型,它的原理为通过一个函数(如select)不断地轮询所负责的所有socket,当某个socket有数据到达时,就通知用户进程。FD_ ZERO(int fd, fd_set * fds) ;FD_ SET(int fd, fd_set * fds) ;FD_ISSET (工.

2020-11-08 20:13:02 31

原创 LeetCode C++刷题142-145题题解

142、环形链表II题目给定一个链表,返回链表开始入环的第一个节点。如果链表无环,则返回null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意,pos 仅仅是用于标识环的情况,并不会作为参数传递到函数中。说明:不允许修改给定的链表。进阶:你是否可以使用 O(1) 空间解决此题?示例 1:输入:head = [3,2,0,-4], pos = 1输出:返回索引...

2020-10-17 23:35:45 70

原创 LeetCode C++刷题138-141题题解

138、复制带随机指针的链表题目给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。要求返回这个链表的深拷贝。我们用一个由n个节点组成的链表来表示输入/输出中的链表。每个节点用一个[val, random_index]表示:val:一个表示Node.val的整数。random_index:随机指针指向的节点索引(范围从0到n-1);如果不指向任何节点,则为null。示例 1:输入:head = [[7,...

2020-10-17 23:28:29 42

原创 剑指offer C++刷题总结(4)

调整数组顺序使奇数位于偶数前面题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。题解:双指针完整代码:class Solution {public: void reOrderArray(vector<int> &array) { int i = 0; for(int j = 0; j <

2020-10-17 21:32:53 33

原创 剑指offer C++刷题总结(3)

目录变态跳台阶题目:题解:完整代码:矩阵覆盖题目:题解:完整代码:二进制中1的个数题目:题解:完整代码:数值的整数次方题目:题解:完整代码:变态跳台阶题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。题解:动态规划完整代码:class Solution {public: int jumpFloorII(int number) {.

2020-10-17 21:18:33 53

原创 剑指offer C++刷题总结(2)

二维数组中的查找题目:题解:完整代码:二维数组中的查找题目:题解:完整代码:二维数组中的查找题目:题解:完整代码:二维数组中的查找题目:题解:完整代码:...

2020-10-17 21:09:22 42

原创 LeetCode C++刷题133-137题题解

目录133、克隆图题目题解代码134、加油站题目题解代码135、分发糖果题目题解代码136、只出现一次的数字题目题解代码137、只出现一次的数字II题目题解代码133、克隆图题目给你无向连通图中一个节点的引用,请你返回该图的深拷贝(克隆)。图中的每个节点都包含它的值 val(int) 和其邻居的列表(list[Node])。class Node { public int val; ...

2020-09-20 18:23:13 83

原创 LeetCode C++刷题129-132题题解

129、求根到叶子节点数字之和题目给定一个二叉树,它的每个结点都存放一个0-9的数字,每条从根到叶子节点的路径都代表一个数字。例如,从根到叶子节点路径 1->2->3 代表数字 123。计算从根到叶子节点生成的所有数字之和。说明:叶子节点是指没有子节点的节点。示例 1:输入: [1,2,3] 1 / \ 2 3输出: 25解释:从根到叶子节点路径 1->2 代表数字 12.从根到叶子节点路径 1->3 代表数字 13....

2020-09-20 18:17:53 43

原创 LeetCode C++刷题125-128题题解

125、验证回文串题目给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例 1:输入: "A man, a plan, a canal: Panama"输出: true示例 2:输入: "race a car"输出: false来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/valid-palindrome著作权归领扣网络所有。商业转载

2020-09-20 18:12:49 60

原创 LeetCode C++刷题121-124题题解

目录121、买卖股票的最佳时机题目题解代码122、买卖股票的最佳时机II题目题解代码123、买卖股票的最佳时机III题目题解代码124、二叉树中的最大路径和题目题解代码121、买卖股票的最佳时机题目给定一个数组,它的第i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。注意:你不能在买入股票前卖出股票。示例 1:输入: ..

2020-09-20 18:07:20 68

原创 剑指offer C++刷题总结(1)

二维数组中的查找题目:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。题解:双指针完整代码:class Solution {public: bool Find(int target, vector<vector<int> > array) { int m = array.size();

2020-09-18 21:02:01 137

原创 LeetCode C++刷题116-120题题解

目录116 填充每个节点的下一个右侧节点指针题目题解完整代码117 填充每个节点的下一个右侧节点II题目题解完整代码118 杨辉三角题目题解完整代码119 杨辉三角II题目题解完整代码120 三角形中的最小路径和题目题解完整代码116 填充每个节点的下一个右侧节点指针题目给定一个完美二叉树,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下:struct Node { int val;..

2020-09-05 12:03:54 102

原创 LeetCode C++刷题111-115题题解

111 二叉树的最小深度题目给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明:叶子节点是指没有子节点的节点。示例:给定二叉树[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最小深度 2.来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/minimum-depth-of-binary-t...

2020-09-05 11:52:49 106

原创 LeetCode C++刷题106-110题题解

106 从中序与后续遍历构建二叉树题目根据一棵树的中序遍历与后序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出中序遍历 inorder =[9,3,15,20,7]后序遍历 postorder = [9,15,7,20,3]返回如下的二叉树: 3 / \ 9 20 / \ 15 7来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/construct-binary-...

2020-09-05 11:40:25 62

原创 LeetCode C++刷题101-105题题解

101 对称二叉树题目给定一个二叉树,检查它是否是镜像对称的。例如,二叉树[1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2/ \ / \3 4 4 3但是下面这个[1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 2 \ \ 3 3进阶:你可以运用递归和迭代两种方法解决这个问题吗?来源:力扣(LeetCode)链接:https://...

2020-09-05 11:34:23 79

原创 Linux平台C++连接Redis进行相关数据操作

1、安装hiredis1.1下载hiredis可以采用两种方式:方法1、在linux平台直接运行下方命令:git clone https://github.com/redis/hiredis方法2、通过浏览器在Github官网下载后解压(注:为什么提供这种比较傻瓜的方法,因为我通过方法一下载了很多次都没成功,大哭)1.2安装hiredis进入hiredis根目录,依次运行下方命令:cd hiredismakesudo make install(复制生成的库到/u.

2020-08-30 17:53:52 134

原创 LeetCode C++刷题97-100题题解

97、交错字符串题目:给定三个字符串s1, s2, s3, 验证s3是否是由s1和s2 交错组成的。示例 1:输入:s1 = "aabcc", s2 = "dbbca", s3 = "aadbbcbcac"输出:true示例2:输入:s1 = "aabcc", s2 = "dbbca", s3 = "aadbbbaccc"输出:false来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/interlea...

2020-08-22 23:11:23 85

原创 LeetCode C++刷题93-96题题解

93、复原IP地址题目:给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。有效的 IP 地址 正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 '.' 分隔。例如:"0.1.2.201" 和 "192.168.1.1" 是 有效的 IP 地址,但是 "0.011.255.245"、"192.168.1.312" 和 "192.168@1.1" 是 无效的 IP 地址。示例 1:输入:s = "25525511135".

2020-08-22 23:04:23 79

原创 LeetCode C++刷题89-92题题解

89、格雷编码题目:格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个位数的差异。给定一个代表编码总位数的非负整数 n,打印其格雷编码序列。即使有多个不同答案,你也只需要返回其中一种。格雷编码序列必须以 0 开头。示例 1:输入:2输出:[0,1,3,2]解释:00 - 001 - 111 - 310 - 2对于给定的n,其格雷编码序列并不唯一。例如,[0,2,3,1]也是一个有效的格雷编码序列。00 - 010 - 211 -...

2020-08-22 23:00:00 80

原创 LeetCode C++刷题85-88题题解

85、最大矩形题目:给定一个仅包含0 和 1 的二维二进制矩阵,找出只包含 1 的最大矩形,并返回其面积。示例:输入:[ ["1","0","1","0","0"], ["1","0","1","1","1"], ["1","1","1","1","1"], ["1","0","0","1","0"]]输出: 6来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/maximal-rectangle著作权归领扣...

2020-08-22 22:55:53 71

原创 Linux平台 C++ shared_ptr和weak_ptr实现对象资源的管理

一、前言Shared_ptr采用引用计数实现自动化资源管理,当引用计数降为0时,对象(资源)即被销毁。weak_ptr也是一个引用计数型的智能指针,但是它不增加对象的引用计数,即弱(weak)引用。Shared_ptr在下列情况之一出现时销毁对象并释放内存:最后占有std::shared_ptr对象被销毁时; 最后占有std::shared_ptr对象被通过operator=或reset()赋值为另一个指针。●shared_ ptr控制对象的生命期。shared_ptr是强引用(想象成用铁丝

2020-08-19 22:03:13 83

原创 OSG/OSGEarth一万一千字学习实践完整总结(强烈推荐!!!)

目录01前言02编译和配置编译OSG和OSGEarth下载路径配置OSG和OsgEarth的release版本程序03搭建MFC桌面端程序1、新建MFC应用程序DigitalEarth,选择单个文档。2、实现osgEarth相关功能。3、将osgEarth程序运行结果在MFC文档视图中显示。四、运行程序,即可看到如下结果:04基本功能实现Earth文件加载地理空间数据加载影像数据加载DEM数据Earth文件加载地理空间数据显示与隐藏...

2020-08-19 19:22:41 470

原创 Linux平台基于C++实现简易HTML服务器

在实现HTML服务器时,主要分为三步:接收客户端的http请求 解析http请求 响应http请求零、HTTP请求和相应1、HTTP请求1)请求行请求方式:POST、GET请求的资源:/DemoEE/form.html协议版本:HTTP/1.1(一般都是)HTTP/1.0,发送请求,创建一次连接,获得一个web资源,连接断开。HTTP/1.1,发送请求,创建一次连接,获得多个web资源,保持连接。2)请求头请求头是客户端发送给服务器端的一些信息,使用键.

2020-08-16 17:07:50 88

原创 LeetCode C++刷题81-84题题解

81、搜索旋转排序数组II题目:假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组[0,0,1,2,2,5,6]可能变为[2,5,6,0,0,1,2])。编写一个函数来判断给定的目标值是否存在于数组中。若存在返回true,否则返回false。示例1:输入: nums = [2,5,6,0,0,1,2], target = 0输出: true示例2:输入: nums = [2,5,6,0,0,1,2], target = 3输出: fals...

2020-08-15 20:13:36 72

原创 LeetCode C++刷题 77-80题题解

77、组合题目:给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合。示例:输入:n = 4, k = 2输出:[ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4],]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/combinations著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。题解:回溯代码:...

2020-08-15 20:08:48 63

原创 Linux平台C++多线程编程

1、简介 线程(thread)技术早在60年代就被提出,但真正应用多线程到操作系统中去,是在80年代中期,solaris是这方面的佼佼者。传统的Unix也支持线程的概念,但是在一个进程(process)中只允许有一个线程,这样多线程就意味着多进程。现在,多线程技术已经被许多操作系统所支持,包括Windows/NT,当然,也包括Linux。  为什么有了进程的概念后,还要再引入线程呢?使用多线程到底有哪些好处?什么的系统应该选用多线程?我们首先必须回答这些问题。  使用多线程的理由之一是和进程相比,它

2020-08-15 15:14:40 63

原创 LeetCode C++刷题 73-76题题解

73、矩阵置零题目:给定一个m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0。请使用原地算法。示例1:输入: [ [1,1,1], [1,0,1], [1,1,1]]输出: [ [1,0,1], [0,0,0], [1,0,1]]示例2:输入: [ [0,1,2,0], [3,4,5,2], [1,3,1,5]]输出: [ [0,0,0,0], [0,4,5,0], [0,3,1,0]...

2020-08-08 21:39:35 96

原创 LeetCode C++刷题 69-72题题解

69、x的平方根题目:实现int sqrt(int x)函数。计算并返回x的平方根,其中x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例 1:输入: 4输出: 2示例 2:输入: 8输出: 2说明: 8 的平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/sqrtx著作权归领扣网络所有。...

2020-08-08 21:35:48 84

原创 LeetCode C++刷题 65-68题题解

65、有效数字题目:验证给定的字符串是否可以解释为十进制数字。例如:"0"=>true" 0.1 "=>true"abc"=>false"1 a"=>false"2e10"=>true" -90e3"=>true" 1e"=>false"e3"=>false" 6e-1"=>true" 99e2.5"=>false"53.5e93"=>true" --...

2020-08-08 21:30:48 94

原创 LeetCode C++刷题 61-64题题解

61、旋转链表题目:给定一个链表,旋转链表,将链表每个节点向右移动k个位置,其中k是非负数。示例1:输入: 1->2->3->4->5->NULL, k = 2输出: 4->5->1->2->3->NULL解释:向右旋转 1 步: 5->1->2->3->4->NULL向右旋转 2 步: 4->5->1->2->3->NULL示例2:输入: 0-...

2020-08-08 21:22:25 50

原创 LeetCode C++刷题 57-60题题解

57、插入区间题目:给出一个无重叠的 ,按照区间起始端点排序的区间列表。在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。示例1:输入:intervals = [[1,3],[6,9]], newInterval = [2,5]输出:[[1,5],[6,9]]示例2:输入:intervals = [[1,2],[3,5],[6,7],[8,10],[12,16]], newInterval = [4,8]输出:[[1,...

2020-08-08 21:11:57 71

原创 LeetCode C++刷题 53-56题题解

53、最大子序和题目:给定一个整数数组 nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释:连续子数组[4,-1,2,1] 的和最大,为6。进阶:如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/maximum-subarray著作权归领...

2020-08-01 18:32:57 89

原创 LeetCode C++刷题 49-52题题解

49、字母异位分词题目:给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。示例:输入: ["eat", "tea", "tan", "ate", "nat", "bat"]输出:[ ["ate","eat","tea"], ["nat","tan"], ["bat"]]说明:所有输入均为小写字母。不考虑答案输出的顺序。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/gr...

2020-08-01 18:26:40 75

原创 Linux 平台C++连接MySQL进行数据查询

本文主要介绍在Linux平台下,如何通过C++连接MySQL数据库,进行数据的增删改查等操作。一、安装配置MySQL(1)安装mysql在terminal中运行如下命令进行安装:sudo apt updatesudo apt install mysql-serversudo apt install mysql-clientsudo apt install libmysqlclient-dev测试是否安装成功:sudo netstat -tap | grep mysql

2020-08-01 17:42:04 78

原创 Linux平台基于C++ socket实现UDP网络通信

本文主要介绍在Linux平台基于C++ socket实现UDP网络通信。0初步构思初步的构思是在Linux平台实现一个客户端和一个服务端,实现客户端发送消息,服务端接收消息。1、通信流程2、服务端代码#include<iostream>#include<conio.h> //kbhit()所在的库#include<cstring>#include<unistd.h>#include<sys/types.h>#in

2020-08-01 15:06:50 410

原创 Linux平台基于C++ socket实现TCP 网络通信

本文主要介绍在Linux平台基于C++ socket实现TCP网络通信。0初步构思初步的构思是在Linux平台实现一个客户端和一个服务端,首先客户端和服务端建立TCP连接,然后客户端和服务端可以互发消息。1、通信流程2、服务端代码#include<iostream>#include<conio.h> //kbhit()所在的库#include<cstring>#include<unistd.h>#include<sys/

2020-08-01 14:05:48 539

原创 LeetCode C++刷题 45-48题题解

45、跳跃游戏II题目:给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。示例:输入: [2,3,1,1,4]输出: 2解释: 跳到最后一个位置的最小跳跃数是 2。 从下标为 0 跳到下标为 1 的位置,跳1步,然后跳3步到达数组的最后一个位置。说明:假设你总是可以到达数组的最后一个位置。来源:力扣(LeetCode)链接:https://leet...

2020-07-26 16:31:19 81

垃圾分类数据集及代码

资源说明: 数据集主要包括6类图片:硬纸板、纸、塑料瓶、玻璃瓶、铜制品、不可回收垃圾 代码运行说明: 1、 安装运行项目所需的python模块,包括tensorflow | numpy | keras | cv2 2、 train.py用于训练垃圾分类模型,由于训练的数据量过于庞大,因此不一并上传 3、 predict.py用于预测垃圾的类别,首先运行predict.py,然后输入需要预测的文件路径,即可得到结果。

2020-11-11

pose_deploy.prototxt

手势识别中所用到的proto file,用于基于OpenCV实现对手势的识别。 具体代码可参考:https://cchang.blog.csdn.net/article/details/87979328

2019-02-27

南瓜、西瓜、西红柿图片数据集

南瓜、西瓜、西红柿图片数据集,用于Fine Tuning的学习,包括训练集和验证集。 具体代码可参考:https://cchang.blog.csdn.net/article/details/86422080

2019-01-27

Naruto.zip

fbx模型,带奔跑和其他十多个动作。相关博客(osg读取fbx模型并播放动画(附代码和模型)):https://blog.csdn.net/github_39611196/article/details/90267276。

2019-05-16

TensorFlow transfer learning权值文件、数据集

博客:TensorFlow 迁移学习(transfering learning)[TensorFlow 迁移学习(transfering learning)]的数据集和权值文件,由于文件有700多M,因此给出了存入了百度网盘,大家可以下载后,从ReadMe文件中获取下载链接和提取码。(文件链接长期有效,失效了可给我发私信)

2019-04-14

cchangcs的留言板

发表于 2020-01-02 最后回复 2020-08-19

空空如也

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

TA关注的人 TA的粉丝

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