- 博客(150)
- 资源 (3)
- 收藏
- 关注
原创 ffmpeg入门(一)
文章目录前言ffmpeg能做什么ffmpeg解码流程从后往前了解计算机是怎么显示图片RGB24YUV图像编码的意义视频编码的意义音视频封装的意义小结前言我也是通过雷神才入门的,首先感谢雷神的无私奉献,希望未来能向雷神这样的好哥哥靠拢,下面是雷神的博客,讲解很到尾,在此记录自己的学习过程。雷霄骅 (Lei Xiaohua)leixiaohua1020@126.comhttp://blo...
2019-04-18 20:54:11 740
原创 页面置换算法之LRU缓存机制
LRU缓存机制LRU是页面置换算法的其中一个,是一种最近最少使用的缓存机制,它支持以下操作获取数据 get(key) - 如果密钥 (key) 存在于缓存中,则获取密钥的值(总是正数),否则返回 -1。写入数据 put(key, value) - 如果密钥不存在,则写入其数据值。当缓存容量达到上限时,它应该在写入新数据之前删除最近最少使用的数据值,从而为新的数据值留出空间。我们使用O(...
2019-03-10 12:24:37 474
原创 SOCKS5实现代理服务器(C++)
文章目录代理服务器的简介我们需要借助的SOCKS协议SOCKS简单介绍SOCKS运作过程第一步:身份验证(authentication)第二步:SOCKS请求 (客户端-->代理服务器)SOCKS的请求格式第三步:响应 (代理服务器-->客户端)请求格式SOCKS5资料参考网址如何使用SOCKS5进行IP代理现在说说原理原理图小结代理服务器的简介就拿翻墙作为一个例子,当我们搜索谷...
2019-01-25 20:17:18 21750 2
原创 epoll/poll/epoll & 高级IO详解
五种IO模型阻塞IO阻塞IO:在内核将数据准备好之前,系统调用会一直等待,所有的套接字,默认都是阻塞方式非阻塞IO非阻塞IO:如果内核的还未将数据准备好,系统调用仍然会直接返回,并且返回EWOULDBLOCK错误码非阻塞IO往往需要程序员循环的方式反复尝试读写文件描述符,这个过程称为轮询,这对CPU来说是较大的浪费,只有特定的场景下才使用。信号驱动信号驱动IO:内核将数据准...
2019-01-22 14:06:16 3065
原创 数据链路层详解
文章目录数据链路层的目的认识以太网以太网帧格式理解MAC地址和IP地址认识MTUMTU对IP协议的影响MTU对UDP协议的影响MTU对于TCP协议的影响ARP协议ARP协议的作用ARP通信的过程查看ARP缓存表 (这样就不用再次请求IP地址对应的MAC地址了)为什么要有缓存表?为什么表项要有过期时间而不是一直有效?ARP数据报的格式DNS协议发展互联网信息中心统一管理 (不方便,要每次下载更新)h...
2019-01-21 22:29:29 1275
原创 Linux网络知识入门篇
文章目录网络基础入门局域网和广域网区别局域网通信的原理(两种方式)OSI七层模型简介优点TCP/IP五层模型物理层 (集线器)数据链路层 (交换机---解决数据碰撞问题)网络层 (路由器 --- 实现网到网之间的转发)传输层 (TCP/UDP)应用层与网络有关的硬件路由器交换机集线器关于局域网我们必须知道局域网通信原理解决局域网数据冲突的方法以太网驱动程序 (防碰撞算法,等待)令牌环驱动程序 (...
2019-01-14 10:37:39 395
原创 模板使用&&模板为什么不能分离编译
文章目录模板模板的基本用法模板函数用法用例隐式实例化显式实例化模板参数的匹配原则模板定义的格式类模板类外的函数定义需要加上模板参数列表模板的实例化非类型模板参数示例代码注意模板的特化模板特化的步骤注意利用非类型模板参数的特性解题解题思路代码模板的偏特化部分特化对参数进行限制模板特化的应用类型萃取关于为什么模板不能分离编译?模板为什么要模板,其实目的就是一个,就是将本来应该我们做的重复的事情...
2019-01-13 16:14:09 503 1
原创 C++中的继承&&多态博客
前言是因为有了继承才有了多态的存在,我们明白继承的原理和特性才能去理解多态文章目录前言继承什么叫做继承继承的定义继承方式导致访问方式的变化切片-基类和派生类对象赋值转换继承中的作用域(同名问题)父子都是独立作用域同名会被隐藏,可以显示访问函数同名就构成隐藏派生类的默认成员函数构造函数拷贝构造函数operator=析构函数const对象取地址函数普通对象取地址函数实现不能被继承的类传统写法思...
2019-01-02 19:47:57 285
原创 守护进程
文章目录守护进程守护进程概念创建守护进程知识储备最关键的一步调用setsid函数调用该函数的作用成功调用该函数的结果创建守护进程的步骤(1)umask(0)(2)调用fork(3)调用setsid()(4)设置忽略SIGCHLD信号(5)将当前工作目录更改为根目录(6)关闭不需要的文件描述符fork两次的原因第一次第二次系统提供创建守护进程的接口daemon函数参数返回值守护进程守护进程概念...
2018-12-28 16:49:21 299 1
原创 32位机器和64位机器的区别
前言64位系统和32位系统首先涉及到提取数据的能力,64位系统肯定比32位系统提取数据的能力强一倍但是这只是建立在64位操作系统的64位软件上。进程的64位和32位和编译器有关系,而不是和操作系统有绝对关系64位系统和32位的寻址能力的比较1.64位CPU拥有更大的寻址能力,最大支持到16GB内存(了解64位系统支持多少内存,看下面介绍),而32bit只支持4G内存64位系统和32位的...
2018-11-10 22:26:20 7216
原创 C C++内存管理&delete/free/new/malloc
前言总结一下C/C++中的内存管理,我们需要了解不同类型的变量分别储存在哪里,他们又是如何储存的,存储他们的区域又有多大,这系列问题,下面将会解答。C/C++中程序内存区域划分学习过linux的虚拟内存机制我们知道,对于每个进程而言,它的地址实际上是虚拟地址,所以现在我们讨论依然是虚拟地址,只是c++程序运行后它认为是物理地址,这样的机制也是为了方便管理内存并且节省空间。虚拟地址和物理地址是...
2018-11-10 22:23:35 267
原创 类和对象1
前言在c语言中没有类,但是有结构体结构体中只能定义变量,不能定义函数但是在c++中,结构体多了可以定义函数的能力,并且c++中多了一个限定符的概念即结构体的成员是有访问权限的:public,protected,private,再没有特别声明的情况下,结构体的成员默认为public,并且在使用结构体时候,在定义结构体变量时也不需要再加上一个struct的关键字了。但是c++中习惯用class,因为...
2018-11-07 21:41:49 220
转载 互斥与同步&生产者消费者问题
进程互斥与同步的基本概念 进程互斥与同步机制的主要任务是,对多个相关进程在执行次序上进行协调,使并发执行的诸进程间能按照一定的规则(或时序)共享系统资源,并能很好的相互合作,从而使程序能够正确执行。 在多个进程共享资源或为完成某一任务而相互合作时,可能存在以下两种形式的制约关系:(1)间接相互制约关系(互斥) 多个程序并发执行时,要对临界资源进行共享,所以只能互斥的访...
2018-11-06 17:20:01 3702
原创 时间类的实现
文章目录要求Date.h其中几个巧妙实现的函数(1)比较日期(2)计算日期的加法(3)计算日期的减法(4)计算日期之差完整代码Date.c要求Date.hDate.h#pragma once#include<iostream>using namespace std; class Date{public: Date(int year = 1900, int month...
2018-10-29 17:17:30 450
原创 Linux下怎么创建动态库和静态库
文章目录前言程序运行后调用动态库编译链接程序链接静态库生成静态库生成动态库前言linux下的生成的动态库和静态库没有windows下方便linux下gcc编译默认动态链接和release程序运行后调用动态库动态库:程序在运行的时候才去链接动态库的代码,多个程序共享使用库的代码可执行文件里包含的不是库,只是包含用到的函数入口地址一个表一个动态库链接的可执行文件仅仅包含它用到函数...
2018-10-28 21:01:23 354
原创 简述inode
文章目录inode的好处文件系统是以块为单位的,对于每个块而言,它可以分成5个部分超级块:inode表:数据区:inode位图表:数据位图表:创建一个文件时,在文件系统中发生的故事寻找一个文件时,在文件系统中发生的故事inode的好处inode也叫"索引节点",每个文件都有一个独一无二的inode号,通过这个inode号操作系统就可以轻松的找到文件数据所在的位置。理解inode我们可以通过理...
2018-10-28 17:14:04 415
转载 Linux 调研popen/system, 理解这两个函数和fork的区别.
自己的总结: 1.popen是并行(最后子进程是由pclose回收),system是串行(会等待子进程做完事,然后收拾)。 2.system() 在等待命令终止时将忽略SIGINT 和SIGQUIT 信号,同时阻塞SIGCHLD 信号,但是popen里面都没有涉及到信号 3.system返回值比较复杂,里面有fork,exec...
2018-10-16 17:26:56 401
转载 C++基础知识汇总
推荐链接:https://blog.csdn.net/weiyuefei/article/details/52089054
2018-10-06 20:27:44 305 1
转载 HTTP与HTTPS的区别
原文:HTTP与HTTPS的区别 超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。 为了解决HTTP协议的这一缺陷,需要使用另一种...
2018-10-06 16:25:18 224
转载 scanf中的%[^\n]%*c格式
scanf 语法: #include <stdio.h> int scanf( const char *format, ... ); 类似函数有 int scanf(const char *format, ...); int fscanf(FILE *stream, const char *format, ...);//指定输入流 ...
2018-10-03 08:05:54 1135
原创 Linux小结(2)
调研readelf命令:https://blog.csdn.net/linux_ever/article/details/78210089我的Makefile博客https://blog.csdn.net/QQ1910084514/article/details/82871166
2018-09-27 18:38:03 176
原创 Centos下git连接github
1.git基础配置2.生成ssh公钥3.到root/.ssh目录下,复制id_rsa.pub的全部内容4.登录github,打开设置选项,选择SSH and GPG keys菜单,添加新的ssh keys5.回到linux,输入命令 ssh git@github.com提示错误,并不是出错,此时输入 ssh -T git@github.com可得到 ...
2018-09-25 16:52:38 219
原创 布隆过滤器和海量数据面试题
哈希切割topK问题给一个超过100G大小的logfile,log中存着ip地址,设计算法找到出现次数最多的ip地址,与上题条件相同,如何找到topK的ip?如何直接用Linux系统命令实现?(1)topK的ip思路:使用堆(2)寻找次数最多思路:分割成多个文件,分别多每个文件进行统计,统计方式用hash,ip为key,次数为value,然后就可以统计出每个ip出现的次数,然后...
2018-09-23 10:10:25 948
原创 树中两个节点的最低公共祖先
首先想一下一.如果是搜索二叉树的话可以采用递归的方式思路:树的根节点作为寻找的起点,把根节点作为当前节点1.如果这两个节点都大于当前节点,那么这两个节点的最低祖先肯定在当前节点节点的右子树中,然后在当前节点的右子树中找2.如果两个节点的都小于当前节点节点,那么这两个节点的最低祖先肯定在当前节点节点的左子树中,然后在当前节点的左子树中找3.如果当前节点大于其中一个节点,并...
2018-09-21 23:15:09 438
原创 栈的压入、弹出序列
题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)class Solution {public: bool IsPopOrde...
2018-09-20 17:46:49 156
原创 Linux笔记之进程的概念和基本操作
====================================概念1.PCB的概念描述进程-PCB PCB包含了进程的所有信息为了描述控制进程的运行,系统中存放进程的管理和控制信息的数据结构称为进程控制块(PCB Process Control Block),它是进程实体的一部分,是操作系统中最重要的记录性数据结构。它是进程管理和控制的最重要的数据结构,每一个进程均有一个...
2018-09-18 22:46:56 320
转载 十大经典排序算法
转载自 https://www.cnblogs.com/onepixel/articles/7674659.html十大经典排序算法(动图演示)0、算法概述0.1 算法分类十种常见排序算法可以分为两大类:非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此称为非线性时间比较类排序。线性时间非比较类排序:不通过比较来决定元素间...
2018-09-18 00:11:01 287
原创 《每日一题》判断一棵树是不是平衡二叉树
题目描述输入一棵二叉树,判断该二叉树是否是平衡二叉树。平衡二叉树特性根节点左右子树的的高度差不大于1 //平衡二叉树 根节点的左右子树高度都相等//需要比较每一个根节点的子树高度//需要用到一个小函数 计算高度class Solution {public: //深度之差不能大于1 int RootDepth(TreeNode* pRo...
2018-09-16 23:33:18 165
原创 构建乘积数组
题目描述给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。不能使用除法。代码class Solution {public: vector<int> multiply(const vector<int>& A...
2018-09-15 20:54:16 188
原创 《每日一题》把二叉树打印成多行
题目描述从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。思路在层序遍历的基础上,设置两个遍历纪录当前层有几个结点,和下一层有几个结点,根据两个变量即可确定是否来到下一层代码/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; Tr...
2018-09-14 16:20:35 151
原创 《每日一题》对称的二叉树
题目描述请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。代码/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), l...
2018-09-13 21:15:32 131
原创 《每日一题》求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
题目描述求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。代码class Solution {public: int Sum_Solution(int n) { int ret=0; n&&(ret=Sum_Solution(n-1)...
2018-09-09 13:43:53 336
原创 《每日一题》把数组排成最小的数
题目描述输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。思路先把整数转化为字符串,这样容易处理现在假设有三个字符串 "3" "32" "321"对这三个字符串排序,比如说 "3" 和 "32" 排序 先拼成 "332"
2018-09-09 13:22:17 179
原创 《每日一题》数组中重复的数字
题目描述在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。代码//改变位置的方式//每个数都有属于自己的位置,如果有一个数寻找位置时,发现对应位置已经有这个数的值,说明...
2018-09-09 00:19:54 163
原创 《每日一题》连续子数组的最大和
题目描述HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。给一个数组,返回它的最大连续子序...
2018-09-08 18:06:21 202
原创 制作GIF
前言之前一直不会制作GIF,经过摸索终于知道了方法,现在分享给大家准备工作所需软件:PowerPoint选择它的屏幕录制如果没有Mix选项则需要下载安装:https://github.com/455920/OfficeMix.git开始制作第一步:选择PowerPoint中的屏幕录制然后选择你所需要录制的区域开始录制后按 shift+windows+q ...
2018-09-07 08:47:46 666 3
原创 编写MakeFile
前言关键词:依赖关系,依赖方法编写依赖关系性质makefile在编译文件的时候会依据文件的修改时间决定是否再次编译 加入.PHONY则会让这个指令不会受是否修改限制例hello:hello.c gcc -o hello hello.c//必须以tab键开头//定义伪目标 让clean总是可以直接执行.PHONY:clean//clean没...
2018-09-06 20:25:26 175
原创 《每日一题》不用加减乘除做加法
题目描述写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。代码//方法一,按位比较,一步一步计算 class Solution {public: int Add(int num1, int num2) { int ret=0; int flag=0;//进位标志 for(int i=0;i<32;i+...
2018-09-05 12:06:39 133
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人