自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 每天一道LeetCode-----判断数组中是否存在两个位置上面的值相等并且下标的差小于某个值

原题链接Contains Duplicate II 判断给定数组中是否存在i和j,使得nums[i] == nums[j]并且j - i <= k 只需要保存每个数最后出现的下标,当再次遇到这个数时,进行比较,如果满足条件则返回,否则更新下标 实现代码如下 class...

2018-06-13 17:23:22 794 2

原创 每天一道LeetCode-----找到由连续数字组成的数组中缺失的那个连续值

原题连接Missing Number 给定大小为n的数组,由0, 1, 2, …, n构成,也就是缺少了一个值,找到它。要求时间复杂度是O(n),空间复杂度是O(1) 因为整体有序而且每个元素是严格加一递增(只有一个不是,假设这个值是m),考虑下面两个和的表示形式 sum1 = 0 ...

2018-06-12 12:42:13 3200 0

原创 每天一道LeetCode-----找到给定数组中第三大的值

原题链接Third Maximum Number 要求找到给定数组中第三大的数,第一大的数,第二大的数,第三大的数互不相同,即严格的小于关系。并且规定时间复杂度是O(n)。另外如果找不到第三大的数,则返回数组中第一大的数 可以用三个变量first, second, third分别记录第一大...

2018-06-11 17:36:47 933 0

原创 C++代码片段(五)tuple的实现

元组tuple是多类型的集合,可以当做升级版的pair来用。因为tuple可以保存多个任意类型的值,导致不能够在一个类里面保存所有的数据,所以采用每一层保存一个数据的方法实现 实现tuple template <typename... Args&amp...

2018-06-08 23:18:31 747 0

原创 数据库原理学习笔记(二)数据库范式

范式可以理解成在设计数据表时的规范级别,常见的范式有 第一范式(1NF) 第二范式(2NF) 第三范式(3NF) BC范式(BCNF) 第一范式 要满足第一范式,要求数据表的每个属性无法再分,也就是需要满足原子性。可以把“不可再分”理解成无法用一个单独的值表示,比如说“系”这个属...

2018-06-04 23:23:23 990 0

原创 数据库原理学习笔记(一)关系完整性以及数据库完整性

关系完整性是对关系的某种约束,当关系随着时间变化(增删改等操作改变数据库关系表)时应该满足一定的约束条件,通常这些约束条件都依赖于客观事实 关系完整性包含三个方面,分别是 实体完整性 参照完整性 用户自定义完整性 其中实体完整性和参照完整性是关系模型必须满足的约束条件,或者说是所有数据库...

2018-06-03 23:53:55 4219 1

原创 C++代码片段(四)萃取模板类的模板参数类型

例如有类型 Test<int, double, std::string> 可以萃取出模板参数分别是 int, double, std::string 方法如下 #include <tuple> #include &...

2018-06-03 18:51:37 252 0

原创 解决MySQL使用LOAD导入中文数据乱码的问题

假设将文本employee.txt中的数据导入到表EMPLOYEE中 出现乱码的SQL语句 LOAD DATA LOCAL INFILE "employee.txt" INTO TABLE EMPLOYEE; 解决方法,在后面添加character set utf8 ...

2018-06-03 18:40:45 2868 0

原创 C++代码片段(三)过滤可变模板参数中某些类型的变量

将可变模板参数列表中的某些类型过滤掉,然后返回剩下数据的元组。用到了上一篇中的判断可变模板参数中是否包含某一特定类型的方法 #include <iostream> #include <tuple> #include <st...

2018-05-29 19:06:35 239 0

原创 解决无法将自己github上的代码clone到/usr目录下的问题

Linux下代码存在的位置有两种 /home下面,需要当前用户权限 /user/local/include以及其他类似的位置,需要root用户权限 与之对应的.ssh位置也有两个 ~/.ssh,保存当前用户的public key /root/.ssh,保存root用户的public k...

2018-05-28 12:31:16 1098 0

原创 C++代码片段(二)判断可变模板参数中是否包含某一特定类型

首先定义基础模板类,表示不包含给定类型 template <typename T, typename... Args> struct contains : public std::false_type {}; 接着进行特化,将可变...

2018-05-26 17:26:43 1699 0

原创 C++代码片段(一)萃取函数返回值类型,参数类型,参数个数

函数的类型主要集中在以下几种 函数指针 函数对象,是一个类对象,内部重载的operator()函数是一个函数指针 lambda,匿名函数对象,同函数对象 function对象 后三者都是类对象,可以看成一种类型 定义基础模板类 template &l...

2018-05-26 15:27:49 879 0

原创 每天一道LeetCode-----判断给定字符串是否符合某个模式

Isomorphic Strings 原题链接Isomorphic Strings 给定两个字符串,判断其中一个是否能转换成另一个,转换规则如下 必须是一对一 同一个字符两次转换必须相同,如果第一次字符’a’转换成’b’,那么当下次遇到’a’时,它就只能转换成’b’ 不能有两个字符转换...

2018-03-06 11:38:51 1583 0

原创 HTTP协议学习笔记(一)请求方法名及状态码

HTTP协议是位于TCP协议之上的应用层协议,是应用进程之间通讯的一种协议。之所以称之为应用层协议,是因为它无需关心数据是通过什么方式到达对端的,在到达对方的应用程序之前都经历了什么,而只需要协商好使用的数据格式,保证一方可以解析出另一方的意图即可 这也是TCP/IP协议的真正目的,上层无...

2018-03-05 23:35:19 830 0

原创 每天一道LeetCode-----计算小于n的素数个数

Count Primes 原题链接Count Primes 计算小于n的素数个数 思路: 如果一个数m是素数,那么所有m * k就都不是素数。另外2是最小的素数 代码如下 class Solution { public: int countPrimes(int n) {...

2018-03-05 11:13:58 3636 0

原创 每天一道LeetCode-----判断一个数是否是happy number(每一位的平方和最终为1)

Happy Number 原题链接Happy Number 对一个数的每一位求平方和,如此反复下去,知道满足以下条件时证明这是一个happy number 某一时刻平方和为1 进入无限循环 按要求做就可以了 class Solution { public: bool ...

2018-03-04 22:47:51 949 0

原创 每天一道LeetCode-----计算给定范围内所有数的与运算结果

Bitwise AND of Numbers Range 原题链接Bitwise AND of Numbers Range 计算[m:n][m:n][m : n]范围内的所有数的与运算结果 首先需要明确几个知识点 a&(a+1)a&(a+1)a \&a...

2018-03-03 21:15:29 158 0

原创 TCP/IP学习笔记(九)TCP报文段首部格式

TCP为了实现稳定可靠的传输,自然是需要在发送数据时附带一些信息,对端接收到报文段后将用户数据分离开存放在接收缓冲区,然后根据附加信息决定接下来的行为。所以即使TCP是面向字节流的传输协议,但是传输的基本单元却是报文段。 报文段由报文首部和数据组成,报文首部最小占20字节最多占60字节,固定的2...

2018-03-02 21:18:11 1238 0

原创 每天一道LeetCode-----给定二维数组代表海域和岛屿,计算有多少个孤岛

Number of Islands 原题链接Number of Islands 给定一个二位数组,其中’0’代表水,’1’代表土地,判断有多少个孤岛被水隔开。假定二位数组四周都是’0’ 思路: 遇到一个’1’就代表肯定有孤岛,然后从这个位置开始将所有相邻的’1’都变为’0’ 代码如下...

2018-03-02 16:06:20 2690 0

原创 TCP/IP学习笔记(八)复位报文段

TCP报文首部中存在一个RST位,如果该位被置1则表示这是个复位报文段。当一个报文段从一端发往一个不存在或者处于异常状态的另一端时,就会以一个复位报文段应答发送端,告知发送端连接出现错误,应当被关闭 有三种连接情况可能会产生复位报文段 尝试连接到一个不存在的<ip,port&a...

2018-03-01 20:01:21 320 0

原创 每天一道LeetCode-----从右向左观察一棵二叉树,返回能看到的元素

Binary Tree Right Side View 原题链接Binary Tree Right Side View 从右向左观察一棵二叉树,返回能看到的元素 遍历一遍即可,只记录靠右的元素 代码如下 /** * Definition for a binary tree no...

2018-03-01 14:29:19 2657 0

原创 TCP/IP学习笔记(七)四次挥手

前面说过,TCP是稳定可靠的传输层协议,稳定体现在需要先建立连接(三次握手)才可以进行通讯。但是当一方想要关闭连接时,如果它一走了之,另一端又怎么知道连接已经关闭了呢,这就会导致另一端仍然保持着维护连接所需要的一切资源而无法释放。 所以TCP在关闭连接时也需要进行类似三次握手之类的流程,以通知双...

2018-02-28 20:22:30 250 0

原创 每天一道LeetCode----从数组中选择若干不连续元素使得总和最大

House Robber 原题链接House Robber 给定一个数组,选取一些元素使得总和最大,选取规则为 不能连续取两个元素,即选取的元素之间至少要间隔一个其它元素 每个元素都有选与不选两种可能,使得用动态规划求解,令dp[n]表示nums[0 : n)的选取结果 代码如下...

2018-02-28 12:41:44 2965 0

原创 TCP/IP学习笔记(六)Nagle算法

在TCP传输数据流中,存在两种类型的TCP报文段,一种包含成块数据(通常是满长度的,携带一个报文段最多容纳的字节数),另一种则包含交互数据(通常只有携带几个字节数据)。 对于成块数据的报文段,TCP采用正常的流程发送即可,因为数据利用率很高。而对于交互数据的报文段,数据利用率就显得很低,在网络环...

2018-02-27 18:54:54 7118 2

原创 每天一道LeetCode-----计算整型数二进制中1的个数/返回二进制翻转后的结果

Reverse Bits 原题链接Reverse Bits 给定一个32位无符号整型数,将它的二进制逆序,返回结果 从字符串的角度观察二进制逆序,只需要从两端开始两两交换即可。当然,完全可以不将二进制转为字符串,而是模拟字符串的逆序操作 代码如下 class Solution {...

2018-02-27 13:47:28 392 0

原创 每天一道LeetCode-----寻找给定字符串中重复出现的子串

Repeated DNA Sequences 原题链接Repeated DNA Sequences 在给定字符串中寻找重复出现的序列,每个序列长度为10 可以采用unordered_map记录每个序列出现的个数,将出现超过一次的添加到结果集中 代码如下 class Solutio...

2018-02-26 20:54:08 2913 0

原创 TCP/IP学习笔记(五)TCP的保活定时器

正常情况下,TCP连接的终止需要经历四次挥手阶段,体现在代码上就是某一端主动调用close函数关闭套接字,随后TCP向对端发送FIN位被置为1的报文段标志着连接的结束,同时对端响应应答报文段,并在随后的某一时刻同样调用close函数,发送FIN报文段,当确认完成后就标志着TCP连接正常终止。 然...

2018-02-26 16:12:04 269 0

原创 TCP/IP学习笔记(四)TCP超时重传及拥塞控制

TCP是可靠的传输层协议,但这并不意味着一端发送的数据一定可以到达另一端,因为传输过程中遇到的情况是不可控的,很有可能就有某些数据发生丢失,所以”可靠”其实并不可靠。 不过毕竟现如今的网络设备还算完善,传输过程中由于硬件错误导致数据丢失的情况基本可以忽略,那么,数据丢失的原因就只能是:传输路径过...

2018-02-26 00:21:53 1784 0

原创 TCP/IP学习笔记(三)TCP流量控制以及滑动窗口

众所周知,TCP是有缓冲区的,比如接收缓冲区用于存放已经到达但是还没有被应用程序及时处理的数据。但是任何缓冲区都是有一定大小的,如果发送方发送数据过快,而接收方处理数据过慢,就会导致接收方的接收缓冲区数据量不断累积最终塞满缓冲区。随后如果再有数据到达就只有一个结果,数据被丢掉 为了解决这一问题,...

2018-02-26 00:19:50 455 1

原创 TCP/IP学习笔记(二)TCP三次握手

TCP是一种面向连接的流传输协议,提供了对数据传输时的各种控制功能,比如 当丢包时可以重新发送 即使数据到达顺序错乱也可以保证数据的有序性 由于TCP是面向连接的协议,所以必须在确定通信对端存在时才会发送数据,即三次握手。 好比于A和B打电话,电话拨通后 A对B说:”你好,我...

2018-02-25 20:09:20 407 0

原创 每天一道LeetCode-----将数值数组按一定顺序拼接,使得拼接的结果最大

Largest Number 原题链接Largest Number 给定一个数值数组,将数组中的数值按照一定顺序拼接在一起,使得拼接的结果值最大 思路: 将原数值数组转为字符串数组,方便拼接和比较 将字符串数组排序 从头到尾拼接结果 难点在如何对字符串数组排序,为了使结果最大,可...

2018-02-25 12:58:43 3362 0

原创 每天一道LeetCode-----计算n的阶乘末尾有多少个0

Factorial Trailing Zeroes 原题链接Factorial Trailing Zeroes 计算n!(n的阶乘)末尾有多少个0 思路: 0实际上来源于10,而10来源于2×5,所以只需要判断n×(n−1)×(n−2)×...×1n×(n−1)×(n−2)×...×1...

2018-02-24 16:50:33 1505 4

原创 TCP/IP学习笔记(一)分层模型概述

Reverse Bits 原题链接Reverse Bits 给定一个32位无符号整型数,将它的二进制逆序,返回结果 从字符串的角度观察二进制逆序,只需要从两端开始两两交换即可。当然,完全可以不将二进制转为字符串,而是模拟字符串的逆序操作 代码如下 class Solution {...

2018-02-23 23:10:23 258 0

原创 每天一道LeetCode-----摩尔投票法寻找给定数组中出现个数大于n/2或n/3的元素

Majority Element 原题链接Majority Element 给定一个数组,元素个数为n,找出出现次数大于n/2的那个元素 摩尔投票法思想 每次从数组中选择两个不相等的元素进行相互抵消(删除),最后剩下的一个元素或几个相同的元素就是出现次数大于n/2的元素 代码...

2018-02-23 14:06:19 2107 0

原创 每天一道LeetCode-----将数字用字母表示(本质是26进制转换)

Excel Sheet Column Title原题链接Excel Sheet Column Title讲数字转为字母’A’到’Z’表示,对应关系如图思路:本质上是将10尽职转为26进制,不同的是模的结果从[0:25][0:25]变为[1:26][1:26]假设1<=n%26<=261...

2018-02-22 15:13:13 1359 0

原创 每天一道LeetCode-----比较两个字符串,每个字符串被若干'.'分成多个数字,一个个比较

Compare Version Numbers原题链接Compare Version Numbers字符串比较的题,给定两个字符串,每个字符串都被若干个’.’分开,形成若干个整数,从头开始比较一个个整数,判断大小代码如下class Solution { public: int compar...

2018-02-12 23:15:35 359 0

原创 每天一道LeetCode-----在给定序列中找到满足nums[i]>nums[i-1]&&nums[i]>nums[i+1]的位置,要求时间复杂度是O(logN)

Find Peak Element原题链接Find Peak Element给定一个序列,找到一个位置i满足nums[i]>nums[i−1]&&nums[i]>nums[i+1]nums[i]>nums[i-1]\&\&nums[i]>nu...

2018-02-11 22:17:53 450 0

原创 每天一道LeetCode-----寻找两个链表的交点

Intersection of Two Linked Lists 原题链接Intersection of Two Linked Lists 两个链表,从某个节点开始相交,找到相交节点 方法很多,简单列举一下 将其中一个链表的头尾相连,问题转化为求环入口节点 用两个栈分别记录两个链表的...

2018-02-10 15:22:15 4763 0

原创 每天一道LeetCode-----实现一个栈,提供一个接口用于返回栈中最小值

Min Stack 原题链接Min Stack 实现一个栈,除了基本功能外需要提供一个接口用于返回栈中元素的最小值 基本功能使用std::stack就够了,如果每次需要最小值时都遍历栈中元素的话会很麻烦,因为栈不支持遍历(本质上是没有提供迭代器),所以只能在push的时候记录最小值 思...

2018-02-09 20:37:05 1147 0

原创 C++11学习笔记-----获取异步操作执行结果

在多线程环境中,不管是传递lambda还是传递函数指针,再或者是传递函数对象给std::thread,都很难获取执行函数返回值。在以前,只能将结果以引用的形式作为线程函数参数的一部分以此保存返回值,但是仍然存在很大局限性,甚至不太美观。C++11引入的std::future可以有效解决这一问题。 ...

2018-02-08 19:40:11 1721 1

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