- 博客(69)
- 资源 (5)
- 收藏
- 关注
转载 TCP Keepalive
TCP Keepalive的起源 TCP协议中有长连接和短连接之分。短连接环境下,数据交互完毕后,主动释放连接;长连接的环境下,进行一次数据交互后,很长一段时间内无数据交互时,客户端可能意外断电、死机、崩溃、重启,还是中间路由网络无故断开,这些TCP连接并未来得及正常释放,那么,连接的另一方并不知道对端的情况,它会一直维护这个连接,长时间的积累会导致非常多的半打开连接,造成端系统资源的消耗和...
2020-02-21 14:52:14
510
原创 git合并解决
远程分支被修改了,本地分支落后修改,合并 方法一: 在你自己的分支上,如果有本地修改先gitstash gitpull gitmergeorigin/master (如果本地分支是master 则这两个效果一样,本地分支不是master,拉下来的是远程和本地分支同名的分支代码) 如果有本地修改,恢复本地修改gitstashpop g...
2020-02-14 11:52:16
1416
转载 c++static关键字的作用
c++static关键字的作用c/c++共有1):修饰全局变量时,表明一个全局变量只对定义在同一文件中的函数可见。2):修饰局部变量时,表明该变量的值不会因为函数终止而丢失。3):修饰函数时,表明该函数只在同一文件中调用。c++独有...
2019-12-09 20:16:02
863
原创 LeetCode算法打卡--模拟
118. 杨辉三角给定一个非负整数numRows,生成杨辉三角的前numRows行。链接:https://leetcode-cn.com/problems/pascals-triangle//*基本思想:按照杨辉三角的构造规则直接写就好*/class Solution {public: vector<vector<int>> generat...
2019-11-12 18:08:03
222
转载 详解STL中的map和hash_map区别
在网上看到有关STL中hash_map的文章,以及一些其他关于STL map和hash_map的资料,总结笔记如下: 1、STL的map底层是用红黑树实现的,查找时间复杂度是log(n); 2、STL的hash_map底层是用hash表存储的,查询时间复杂度是O(1); 3、什么时候用map,什么时候用hash_map? 这个药看具体的应用,不一定常数级别的hash...
2019-11-11 20:29:13
213
原创 TCP流量控制和拥塞控制
先来了解2个TCP的概念:MSS:Maximum Segment Size,TCP一次传输发送的最大数据段长度。RTT:Round-Trip Time,往返时延,表示从发送端发送数据开始,到发送端收到来自接收端的确认(接收端收到数据后便立即发送确认),总共经历的时延。TCP传输大块数据时,肯定需要进行数据分段,而每个分段所能携带的最大数据就是1个MSS,假设大块数据为100个MSS,那...
2019-11-07 16:59:56
2871
原创 c++虚函数表详解
一、单继承和多继承 我们了解一下何为单继承,何为多继承?? 单继承:一个子类只有一个直接父类。 多继承:一个子类有两个或多个直接父类。二、类的虚函数表与类实例的虚函数指针 首先不考虑继承的情况。如果一个类中有虚函数,那么该类就有一个虚函数表。这个虚函数表是属于类的,所有该类的实例化对象中都会有一个虚函数表指针去指向该类的虚函数表。一个类...
2019-11-07 11:27:16
1417
3
转载 c++堆排序原理和实现
堆排序,C++实现 堆是一种特殊的树形数据结构,即完全二叉树。堆分为大根堆和小根堆,大根堆为根节点的值大于两个子节点的值;小根堆为根节点的值小于两个子节点的值,同时根节点的两个子树也分别是一个堆。基本思路步骤一:建立大根堆--将n个元素组成的无序序列构建一个大根堆, 步骤二:交换堆元素--交换堆尾元素和堆首元素,使堆尾元素为最大元素; 步骤三:重建大根堆--将前n-1个元...
2019-10-29 20:01:01
804
1
原创 LeetCode算法打卡--分治
69. x 的平方根实现int sqrt(int x)函数。计算并返回x的平方根,其中x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。链接:https://leetcode-cn.com/problems/sqrtx/*基本思想:二分法,就是x除以一个数等于这个数的思想,找这个数从x/2之内找,注意找不到的时候取相近的那个*/c...
2019-10-28 17:26:56
302
原创 LeetCode算法打卡--树
129. 求根到叶子节点数字之和给定一个二叉树,它的每个结点都存放一个0-9的数字,每条从根到叶子节点的路径都代表一个数字。例如,从根到叶子节点路径 1->2->3 代表数字 123。计算从根到叶子节点生成的所有数字之和。说明:叶子节点是指没有子节点的节点。链接:https://leetcode-cn.com/problems/sum-root-to-lea...
2019-10-08 18:17:48
258
原创 LeetCode算法打卡--查找
35. 搜索插入位置给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。链接:https://leetcode-cn.com/problems/search-insert-position//*基本思想:二分查找*/class Solution {public: int...
2019-09-26 17:50:25
162
原创 搜狗语料库word2vec获取词向量
一、中文语料库本文采用的是搜狗实验室的搜狗新闻语料库,数据链接http://www.sogou.com/labs/resource/cs.php首先对搜狗语料库的样例文件进行分析。搜狗语料库由搜狗实验室提供,我们使用搜狗新闻语料库,下载地址在:http://www.sogou.com/labs/resource/cs.php。分析语料格式时先下载迷你版分析。下载下来的文件名为:...
2019-09-19 10:34:40
4854
10
原创 LeetCode算法打卡--区间问题
57. 插入区间给出一个无重叠的 ,按照区间起始端点排序的区间列表。在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。链接:https://leetcode-cn.com/problems/insert-interval//*基本思想:先找到要插入的区间的位置,拆入之后,区间合并 如果插入式头,那就从后面判断合并的区间,找后面的s...
2019-09-17 17:13:22
349
原创 LeetCode算法打卡--复杂度
136. 只出现一次的数字给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?链接:https://leetcode-cn.com/problems/single-number/*基本思路:两种方法: 方法一: 数组排序,前后相同则跳过继续,...
2019-09-16 14:48:24
222
原创 LeetCode算法打卡--回溯,dfs搜索
77. 组合给定两个整数n和k,返回 1 ...n中所有可能的k个数的组合。链接:https://leetcode-cn.com/problems/combinations//* 基本思想:回溯算法,相当于深度优先搜索组合*/class Solution {public: void huisu(vector<vector<int&g...
2019-09-09 17:51:51
224
原创 LeetCode算法打卡--全排列
46. 全排列给定一个没有重复数字的序列,返回其所有可能的全排列。链接:https://leetcode-cn.com/problems/permutations//*基本思想:回溯递归的基本方法,从一个开始继续找下一个进行交换,递归的过程是后面的排列再加前面的数字*/class Solution {public: void dfs(vector<int>...
2019-08-28 15:15:30
200
原创 LeetCode算法打卡--动态规划
62. 不同路径一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?链接:https://leetcode-cn.com/problems/unique-paths/* 基本思想:基本动态规划思想*/c...
2019-08-27 16:06:51
241
原创 LeetCode算法打卡--数组
130. 被围绕的区域给定一个二维的矩阵,包含'X'和'O'(字母 O)。找到所有被'X'围绕的区域,并将这些区域里所有的'O'用'X'填充。链接:https://leetcode-cn.com/problems/surrounded-regions//*基本思想:遍历四条边上(上下左右边界)的O,并深度遍历dfs与其相连的O,将这些O都转为1 ...
2019-08-27 15:11:11
589
原创 LeetCode算法打卡
75. 颜色分类给定一个包含红色、白色和蓝色,一共n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、1 和 2 分别表示红色、白色和蓝色。注意:不能使用代码库中的排序函数来解决这道题。链接:https://leetcode-cn.com/problems/sort-colors/*基本思想:先用...
2019-08-26 17:24:37
160
原创 LeetCode算法打卡--字符串
28. 实现 strStr()实现strStr()函数。给定一个haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回-1。链接:https://leetcode-cn.com/problems/implement-strstr/*基本思想:最简单的就是对于n...
2019-08-16 14:41:01
294
原创 LeetCode算法打卡--最大面积
84. 柱状图中最大的矩形给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来的矩形的最大面积。以上是柱状图的示例,其中每个柱子的宽度为 1,给定的高度为[2,1,5,6,2,3]。图中阴影部分为所能勾勒出的最大矩形面积,其面积为10个单位。链接:https://leetcode-cn.com/...
2019-08-15 16:11:32
487
原创 LeetCode算法打卡
832. 翻转图像给定一个二进制矩阵A,我们想先水平翻转图像,然后反转图像并返回结果。水平翻转图片就是将图片的每一行都进行翻转,即逆序。例如,水平翻转[1, 1, 0]的结果是[0, 1, 1]。反转图片的意思是图片中的0全部被1替换,1全部被0替换。例如,反转[0, 1, 1]的结果是[1, 0, 0]。链接:https://leetcode-cn.c...
2019-08-14 14:50:42
110
原创 LeetCode算法打卡--数字计算
1. 两数之和给定一个整数数组 nums和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。链接:https://leetcode-cn.com/problems/two-sum/*基本思想:使用一个哈希表来解,第一遍扫描,保存到哈希表中,第二遍扫,看ta...
2019-08-13 10:48:02
174
原创 LeetCode算法打卡
475. 供暖器冬季已经来临。你的任务是设计一个有固定加热半径的供暖器向所有房屋供暖。现在,给出位于一条水平线上的房屋和供暖器的位置,找到可以覆盖所有房屋的最小加热半径。所以,你的输入将会是房屋和供暖器的位置。你将输出供暖器的最小加热半径。说明:给出的房屋和供暖器的数目是非负数且不会超过 25000。给出的房屋和供暖器的位置均是非负数且不会超过10^9。只要房屋位于供暖器...
2019-08-12 16:19:21
124
原创 LeetCode算法打卡--链表
61. 旋转链表给定一个链表,旋转链表,将链表每个节点向右移动k个位置,其中k是非负数。链接:https://leetcode-cn.com/problems/rotate-list//**基本思想:先把单链表改成循环链表,然后头指针一直走loop的长度,最后改成单链表返回头*//*** Definition for singly-linked list.* s...
2019-08-08 20:15:06
271
原创 LeetCode贪心算法
316. 去除重复字母给定一个仅包含小写字母的字符串,去除字符串中重复的字母,使得每个字母只出现一次。需保证返回结果的字典序最小(要求不能打乱其他字符的相对位置)。链接:https://leetcode-cn.com/problems/remove-duplicate-letters//*贪心思想:首先统计所有字符出现的次数,以及字符是否写入,用栈辅助,对于当前字符,如果栈顶元素字典...
2019-07-18 10:52:09
274
原创 linux的基本命令
1.常用指令 ls 显示文件或目录 -l 列出文件详细信息 -a 列出当前目录下所有文件及目录,包括隐藏的amkdir 创建目录 -p 创建目录,若无父目录,则创建p cd 切换目录touch 创建空文件echo 创建带
2017-09-23 08:52:21
197
原创 内存管理
1.程序的内存分配 栈区auto 静态区static 堆区heap 文字常量区 代码区栈区:存储局部变量和参数,编译时已经规划好,运行时已存在使用,用户无法干预 静态区:存全局数据和静态数据,编译时已确定并初始化,初始化的全局变量和静态变量放在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域,程序结束后有系统释放
2017-09-11 21:09:11
168
转载 如何限制对象只能建立在堆上或者栈上
在C++中,类的对象建立分为两种,一种是静态建立,如A a;另一种是动态建立,如A* ptr=new A;这两种方式是有区别的。 静态建立一个类对象,是由编译器为对象在栈空间中分配内存,是通过直接移动栈顶指针,挪出适当的空间,然后在这片内存空间上调用构造函数形成一个栈对象。使用这种方法,直接调用类的构造函数。 动态建立类对象,是使用new运算符将对象建立
2017-09-04 19:25:48
203
原创 C++设计模式----单例模式
单例模式是我们在项目开发中最为常见的设计模式之一,而单例模式有很多实现方式,1.什么是单例模式 单例模式是为了确保一个类只有一个实例,并为整个系统提供一个全局访问点的一种模式方法 特点: (1).在任何情况下,单例类永远只有一个实例存在 (2).单例需要有能力为整个系统提这供唯一实例 便于理解的实例: 在计算机系统中...
2017-09-03 19:43:30
236
原创 大数据处理
1. 给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url? 方案1:可以估计每个文件安的大小为50G×64=320G,远远大于内存限制的4G。所以不可能将其完全加载到内存中处理。考虑采取分而治之的方法。 s 遍历文件a,对每个url求取 ,然后根据所取得的值将url分别存储到1000个小文件(记为 )中。这样每个小文件的大约为3
2017-08-27 16:32:50
225
原创 各种排序算法和应用场景
简介插入排序插入排序是一种较为简单的排序算法,它的基本思想是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。 形象的可以理解为打扑克抓拍的过程,通常我们右手抓牌,没抓一张牌,就放到左手,抓下一张牌后,会把这张牌依次与左手上的牌比较,并把它插入到一个合适的位置(按牌面大小)。希尔排序希尔排序是对直接插入排序的一种优化,实质就是把直
2017-08-15 15:43:18
3522
原创 C++11 标准新特性:Defaulted 和 Deleted 函数
Defaulted 函数背景问题C++ 的类有四类特殊成员函数,它们分别是:默认构造函数、析构函数、拷贝构造函数以及拷贝赋值运算符。这些类的特殊成员函数负责创建、初始化、销毁,或者拷贝类的对象。如果程序员没有显式地为一个类定义某个特殊成员函数,而又需要用到该特殊成员函数时,则编译器会隐式的为这个类生成一个默认的特殊成员函数。例如:清单 1 class X{ pr
2017-08-15 11:35:15
223
原创 C++11新特性之auto的使用
前言C++是一种强类型语言,声明变量时必须明确指出其类型。但是,在实践中,优势我们很难推断出某个表达式的值的类型,尤其是随着模板类型的出现,要想弄明白某些复杂表达式的返回类型就变得更加困难。为了解决这个问题,C++11中引入的auto主要有两种用途:自动类型推断和返回值占位。auto在C++98中的标识临时变量的语义,由于使用极少且多余,在C++11中已被删除。前后两个标准的auto,完全
2017-08-15 11:28:26
679
转载 sizeof的使用总结
1定义 sizeof是一个操作符(operator)。 其作用是返回一个对象或类型所占的内存字节数。 其返回值类型为size_t。(size_t在头文件stddef.h中定义,它依赖于编译系统的值,一般定义为 typedef unsignedint size_t;)2语法 sizeof有三种语法形式: 1)
2017-08-14 16:44:49
336
原创 reactor和proactor模式 同步异步 阻塞 非阻塞
Reactor模式,或者叫反应器模式高性能IO设计的Reactor和Proactor模式 首先就第一篇《Reactor模式,或者叫反应器模式》做一下笔记: 刚开店做生意,老板为了给顾客一个美好的印象,给顾客最好的服务,一对一: 随着经营的生意越来越好,顾客多了,不能服务员也多吧,那样得支出的成本也太大了,要是一下子来个1000个顾客,难道老板
2017-08-11 16:26:24
773
转载 shared_ptr基于引用计数智能指针实现
智能指针是什么简单来说,智能指针是一个类,它对普通指针进行封装,使智能指针类对象具有普通指针类型一样的操作。具体而言,复制对象时,副本和原对象都指向同一存储区域,如果通过一个副本改变其所指的值,则通过另一对象访问的值也会改变.所不同的是,智能指针能够对内存进行进行自动管理,避免出现悬垂指针等情况。普通指针存在的问题C语言、C++语言没有自动内存回收机制,关于内存的操作的安全
2017-08-11 12:05:09
432
转载 Valgrind内存读写越界检测工具使用说明
valgrind这款工具是运行在linux下的,可以用来定位c/c++程序中内存使用方面的错误。包括:内存泄漏、使用未初始化的内存、读/写已释放的内存、读/写内存越界、使用malloc/new/new[]和free/delete/delete[]不匹配,等等。valgrind官方网站:http://valgrind.org/,是一款open source软件。我下载的时候最新版是3.2.3
2017-08-04 18:46:05
1466
原创 C++学习笔记-----string类的使用
1.头文件 : #include2.sting的相关函数及使用 1).string类的构造函数 string(const char *s); //用字符串s初始化 string(int n,char c); //用n个字符c初始化 2).string类的字符操作可以用下标访问每个字符,可用 = 直接赋值,可用+=连接
2017-07-27 17:37:15
359
转载 Linux进程调度
进程调度: 在可运行态进程之间分配有限处理器时间资源的内核子系统。一 调度策略1 进程类型 I/O消耗型进程:大部分时间用来提交I/O请求或是等待I/O请求,经常处于可运行状态,但运行时间短,等待请求过程时处于阻塞状态。如交互式程序。 处理器消耗型进程:时间大都用在执行代码上,除非被抢占否则一直不停的运行。
2017-07-26 15:14:32
176
C++标准程序库.pdf
2017-08-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人