自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

initHeart的博客

我的小房子

  • 博客(45)
  • 收藏
  • 关注

转载 linux系统编程之进程(四):进程退出exit,_exit区别即atexit函数

一,进程终止有5种方式:正常退出:从main函数返回 调用exit 调用_exit异常退出:调用abort 由信号终止二,exit和_exit区别:关于_exit():       #include <unistd.h>       void _exit(int status);       #include <stdlib.h>...

2018-08-07 11:33:28 268

原创 ffmpeg安装及常用命令使用

ffmpeg的安装系统为:CentOs 7.3 两种安装方式: 1. yum install ffmpeg(我安装的时候是版本2.6.8) 2. 编译安装 方法链接如下:https://trac.ffmpeg.org/wiki/CompilationGuide ps:链接内文末有sh脚本可供直接下载,运行,一键安装。ffmpeg常用命令使用方式 ffmpeg...

2018-07-23 10:47:53 1152

转载 epoll LT/ET 深度剖析

EPOLL事件的两种模型:Level Triggered (LT) 水平触发.socket接收缓冲区不为空 有数据可读 读事件一直触发.socket发送缓冲区不满 可以继续写入数据 写事件一直触发符合思维习惯,epoll_wait返回的事件就是socket的状态Edge Triggered (ET) 边沿触发.socket的接收缓冲区状态变化时触发读事件,即空的接收缓冲区刚接收到数据时触发读事件....

2018-07-10 19:57:56 2633

原创 lua高阶函数思考——暂无结果,求解答

问题来源:lua程序设计(第二版)第六章高阶函数演示:函数如下前言:在一个非形式化的定义中,一个函数f在点x的导数就是(f(x+d)-f(x))/d,其中d趋向于无限小。可以用如下方式来近似地计算这个函数f的导数:function derivative(f,delta)delta = delta or 1e-4return function(x) return (f(x+delta)...

2018-06-27 20:02:22 447 1

原创 Lua中,泛型for循环遍历table时,ipairs和pairs的区别

为了看出两者的区别,首先定义一个table:a={"Hello","World";a=1,b=2,z=3,x=10,y=20;"Good","Bye"}使用ipairs对其进行遍历:for i, v in ipairs(a) doprint(v)end输出的结果是:HelloWorldGoodBye可见ipairs并不会输出table中存储的键值对,会跳过键值对,然后按顺序输出table中的值。再...

2018-06-27 17:09:51 332 2

转载 shell中各种括号的作用详解()、(())、[]、[[]]、{}(推荐)

一、小括号,圆括号()1、单小括号 ()  ①命令组。括号中的命令将会新开一个子shell顺序执行,所以括号中的变量不能够被脚本余下的部分使用。括号中多个命令之间用分号隔开,最后一个命令可以没有分号,各命令和括号之间不必有空格。  ②命令替换。等同于`cmd`,shell扫描一遍命令行,发现了$(cmd)结构,便将$(cmd)中的cmd执行一次,得到其标准输出,再将此输出放到原来命令。有些shel...

2018-06-26 10:51:25 259

转载 shell解析命令行的过程以及eval命令

本文说明的是一条linux命令在执行时大致要经过哪些过程?以及这些过程的大致顺序。1.1 shell解析命令行shell读取和执行命令时的大致操作过程如下图:(注:图中没有画出"函数"的位置。它的位置和别名并列,但优先级低于别名。也就是说,如果函数和命令别名同名,则先执行别名。)以执行以下命令为例:echo -e "some files:" ~/i* "\nThe date:$(date +%F)...

2018-06-23 16:41:53 241

原创 C++中关于子类指针指向基类对象

在C++的学习过程中,不可避免的我们会遇上基类指针指向子类对象的情况,这种情况是这样的,当成员函数被声明为虚函数时,通过基类指针或引用调用该虚函数时,被调用的函数是属于子类的那一个,这其实就是我们所说的多态。今天,我们讨论另外一种不是特别常见的情形:子类指针指向基类对象。我们知道:子类指针或引用转化为基类指针或引用是可隐式转化的,我们称这为上行转换。但是下行转换呢,即基类指针转为子类指针。隐式转换...

2018-06-07 15:23:31 5041 1

转载 libevent核心原理

转载至:http://www.cnblogs.com/stonehat/Libevent 是一个事件驱动框架, 不能仅说他是一个网络库。notejs就是采用与libevent类似的libev来做核心驱动的。 Libevent支持三种事件:io事件、信号事件、时间事件,并且事件的设置和使用方式是一样的。libevent的核心原理是采用io多路复用的方式来单线程处理事件。至于为什么这么说,下面会分别对...

2018-04-20 16:11:58 577

原创 将程序跳转到指定内存地址执行

要对绝对地址 0x100 赋值, 我们可以用 (unsigned int*)0x100 = 1234; (地址变量没有负值);那么要是想让程序跳转到0x100去执行,应该怎么做?*((void(*)()) 0x100)();解释如下:先将 0x100 转化为 函数指针  (void(*)()) 0x100然后再调用它:*((void(*)())0x100)();用typedef可以看的直观些typ...

2018-04-20 09:34:14 2710 2

转载 TCP连接建立过程中为什么需要“三次握手”

作者:郭无心链接:https://www.zhihu.com/question/24853633/answer/63668444在谢希仁著《计算机网络》第四版中讲“三次握手”的目的是“为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误”。在另一部经典的《计算机网络》一书中讲“三次握手”的目的是为了解决“网络中存在延迟的重复分组”的问题。这两种不用的表述其实阐明的是同一个问题。谢希仁版...

2018-04-19 10:44:45 4360 1

转载 实现一个算法打印出n对括号的有效组合

转载于:http://www.code123.cc/841.html 侵删题目实现一个算法打印出n对括号的有效组合。例如:输入:3 (3对括号)输出:((())), (()()), (())(), ()(()), ()()()解答对于括号的组合,要考虑其有效性。比如说,)(, 它虽然也是由一个左括号和一个右括号组成,但它就不是一个有效的括号组合。 那么,怎样的组合是有效的呢?对于一个左括号,在它右...

2018-04-18 14:01:02 609

原创 自己动手实现C语言函数memcpy()

memcpy指的是c和c++使用的内存拷贝函数,memcpy函数的功能是从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中。我自己其实对于C语言不是那么熟悉,这个函数之前也没用过,但是上星期恰好面试**的时候,面试官出过相似的问题,加上自己也在上面的文章中总结过,所以直接将memmove()的实现写上了。下面的是在网上查到的版本,也就是将内存重叠问题考虑在内...

2018-04-18 13:38:53 5581 4

转载 全排列算法思路解析

1.全排列的定义和公式:从n个数中选取m(m<=n)个数按照一定的顺序进行排成一个列,叫作从n个元素中取m个元素的一个排列。由排列的定义,显然不同的顺序是一个不同的排列。从n个元素中取m个元素的所有排列的个数,称为排列数。从n个元素取出n个元素的一个排列,称为一个全排列。全排列的排列数公式为n!,通过乘法原理可以得到。2.时间复杂度:n个数(字符、对象)的全排列一共有n!种,所以全排列算法至...

2018-04-10 17:17:28 8680

原创 现代操作系统笔记——第一章 引论

第一章  引论1.3.2 存储器分层结构:寄存器、高速缓存、内存、磁盘、磁带寄存器:典型存储容量:32位CPU中为32*32位,而在64位CPU中位64*64位。内存(主存):RAM只读存储器(ROM)在工厂中就被编程完毕,然后再也不能被修改。CMOS :易失性1.3.3 磁盘信息写在磁盘上的一系列同心圆上。任意一个给定臂的位置,每个磁头可以读取一段环形区域,称为磁道。把一个给定臂的位置上的所有磁...

2018-04-09 10:44:07 301

原创 文件的逻辑结构与物理结构

逻辑结构:指一个文件在用户面前所呈现的形式.逻辑结构有两种形式:①记录式文件(有结构式文件).②字符流式文件(无结构式文件),也称流式文件.1) 顺序文件,其记录是按某种顺序排列所形成的,记录在文件中的位置由某种顺序决定,第一个位置上的记录,第二个位置上的记录,…,由某种顺序来决定记录在文件中的位置。2) 索引文件,记录在文件中的位置由索引表来指向,其实是按某个记录键来确定位置的,即第一个位置的记...

2018-04-07 21:35:03 15224

转载 理解Linux文件系统之inode

转载于:https://blog.csdn.net/haiross/article/details/39157885 侵删理解inode作者: 阮一峰inode是一个重要概念,是理解Unix/Linux文件系统和硬盘储存的基础。我觉得,理解inode,不仅有助于提高系统操作水平,还有助于体会Unix设计哲学,即如何把底层的复杂性抽象成一个简单概念,从而大大简化用户接口。下面就是我的inode学习笔...

2018-04-07 20:57:36 166

转载 从文件 I/O 看 Linux 的虚拟文件系统

1 引言Linux 中允许众多不同的文件系统共存,如 ext2, ext3, vfat 等。通过使用同一套文件 I/O 系统 调用即可对 Linux 中的任意文件进行操作而无需考虑其所在的具体文件系统格式;更进一步,对文件的 操作可以跨文件系统而执行。如图 1 所示,我们可以使用 cp 命令从 vfat 文件系统格式的硬盘拷贝数据到 ext3 文件系统格式的硬盘;而这样的操作涉及到两个不同的文件系...

2018-04-07 14:34:02 143

原创 软链接”和“硬链接”的区别

什么是链接?链接简单说实际上是一种文件共享的方式,是 POSIX 中的概念,主流文件系统都支持链接文件。它是用来干什么的?你可以将链接简单地理解为 Windows 中常见的快捷方式(或是 OS X 中的替身),Linux 中常用它来解决一些库版本的问题,通常也会将一些目录层次较深的文件链接到一个更易访问的目录中。在这些用途上,我们通常会使用到软链接(也称符号链接)。软链接和硬链接的区别是?下面我们...

2018-04-05 11:45:46 193

原创 查看linux上安装的软件来自哪个套件

一个关于软链接值得注意的问题就是查看linux上安装的软件来自哪个套件 比如查看java来自哪个套件:[root@liyong: shell]# rpm -qf `which java`file /usr/bin/java is not owned by any package这样查不到java的包来源,查看Java命令ll `which java`lrwxrwxrwx. 1 root roo...

2018-04-05 11:38:31 668

转载 守护进程详解及创建,daemon()使用

转载于:http://www.cnblogs.com/mickole/p/3188321.html侵删一,守护进程概述Linux Daemon(守护进程)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。它不需要用户输入就能运行而且提供某种服务,不是对整个系统就是对某个用户程序提供服务。Linux系统的大多数服务器就是通过守护进程实现的。常见的守护进程包...

2018-04-04 15:02:26 826

原创 Linux系统编程 笔记一

1. dup和dup2int dup(int oldfd);dup调用成功:两个文件描述符指向同一个文件。返回值:取最小的且没被占用的文件描述符。int dup2(int oldfd, int newfd);1.如果newfd已经指向一个文件且oldfd不指向这个文件,首先close与那个文件的连接,newfd指向oldfd指向的文件。2.newfd没有被占用,直接指向oldfd指向的文件。3....

2018-04-04 13:22:49 116

原创 高性能mysql备忘摘抄

以下内容摘抄自 【 高性能Mysql 】表锁:一个用户对表进行写操作(插入、删除、更新等前,需要先获得写锁,这会阻塞其他用户对该表的所有读写操作。只有没有写锁时,其他读取的用户才能获取读锁,读锁之间是不互相阻塞的。 写锁比读锁具有更高的优先级。 ALTER 之类的语句会使用表所,而忽略存储引擎的锁机制行锁:行级别锁可以最大程度的支持并发处理(同时也带来了最大的性能开销)。事物 ACID 原则: ...

2018-04-03 19:03:14 106

原创 数组指针,指针数组与数组名的指针操作

1. 指针的算术运算一个指针和一个整数量进行算术运算时,会根据合适的大小进行调整,这个“合适的大小”就是指针所指类型的大小,“调整”就是把整数值和“合适的大小相乘”。2. 指针数组与数组指针指针数组是数组, 由于 [] 优先级高于*,所以 int *a[10]表示指针数组。数组指针是指针,所以 int (*p)[10],p表示指针,p指向一个有10个int的数组。3. 指针运算在数组中的作用二维数...

2018-04-02 15:21:47 288

转载 next_permutation(全排列)

1、碰到next_permutation(permutation:序列的意思)今天在TC上碰到一道简单题(SRM531 - Division Two - Level One),是求给定数组不按升序排列的最小字典序列(Sequence of numbers A is lexicographically smaller than B if A contains a smaller number on ...

2018-04-02 11:45:55 722

原创 unordered_map, hash_map, map 区别

1. unordered_map, hash_map, map 概述C++中,map(来自于 STL) ,底层实现采用红黑树。hash_map(有很多种实现,底层实现均采用hashtable。目前普遍使用的来自 SGI 的 STL),还未成为C++标准,不过,在可预见的将来,会成为C++标准。unordered_map 实现来自于 boost 库,底层实现也是hashtable。2. hash_m...

2018-03-30 17:18:47 1493

原创 malloc 详解

昨天接到腾讯面试官的电话面试,面试官问了我一个问题,malloc分配的空间地址连续么?我先回答:逻辑地址连续,物理地址不一定连续。你讲讲malloc怎么实现的?就不是很熟悉了,于是网上看了几篇博客,觉得这一篇讲的很好,于是转载了过来。面试过后,心知自己知识浅薄,要努力加强的地方还有很多。malloc 函数 malloc()函数其实就在内存中找一片指定大小的空间,然后将这个空间的首地址范围给一个指针...

2018-03-30 16:36:17 421

转载 浅谈trie树(字典树)

一、引入字典是干啥的?查找字的。字典树自然也是起查找作用的。查找的是啥?单词。看以下几个题:1、给出n个单词和m个询问,每次询问一个单词,回答这个单词是否在单词表中出现过。答:简单!map,短小精悍。好。下一个2、给出n个单词和m个询问,每次询问一个前缀,回答询问是多少个单词的前缀。答:map,把每个单词拆开。judge:n<=200000,TLE!这就需要一种高级数据结构——Trie树(字...

2018-03-30 16:21:56 212

原创 HTTP请求、响应报文格式

HTTP请求报文格式:HTTP请求报文主要由请求行、请求头部、请求正文3部分组成1,请求行由3部分组成,分别为:请求方法、URL(见备注1)以及协议版本,之间由空格分隔请求方法包括GET、HEAD、PUT、POST、TRACE、OPTIONS、DELETE以及扩展方法,当然并不是所有的服务器都实现了所有的方法,部分方法即便支持,处于安全性的考虑也是不可用的协议版本的格式为:HTTP/主版本号.次版...

2018-03-21 22:31:01 158

转载 Linux写时拷贝技术(copy-on-write)

源于网上资料COW技术初窥:      在Linux程序中,fork()会产生一个和父进程完全相同的子进程,但子进程在此后多会exec系统调用,出于效率考虑,linux中引入了“写时复制“技术,也就是只有进程空间的各段的内容要发生变化时,才会将父进程的内容复制一份给子进程。      那么子进程的物理空间没有代码,怎么去取指令执行exec系统调用呢?      在fork之后exec之前两个进程用

2018-01-18 10:43:39 232

原创 01背包问题内层循环必须是逆序的解释

01背包问题的具体描述自行百度:有N件物品和一个容量为V的背包。第i件物品的重量是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的重量总和不超过背包容量,且价值总和最大。(01背包中这些物品每种都只有1个,每个物品只能装一次)基本问题用子问题定义状态:即f[i][v]表示前i件物品恰放入一个容量为v的背包可以获得的最大价值。则其状态转移方程

2018-01-12 15:34:31 6430 2

转载 Reactor模式

文章转自这里,侵删,Reactor模式最近一直在看游双的《高性能linux服务器编程》一书,下载链接: http://download.csdn.net/detail/analogous_love/9673008书上是这么介绍Reactor模式的: /** *@desc: 用reactor模式练习服务器程序,main.cpp *@author: zhangyl *@date:

2018-01-11 20:37:53 183

原创 SIGPIPE信号处理

SIGPIPE信号处理今天写程序遇到这个问题,搜索一番之后觉得该文较好,于是转了过来。SIGPIPE信号详解当服务器 close 一个连接时,若 client 继续向服务器发数据,根据 TCP 协议的规定,客户端会收到一个 RST 响应,client再往这个服务器发送数据时,系统会发出一个 SIGPIPE 信号给客户端进程,导致客户端进程退出。具体分析可以结合 TCP 的“四次

2018-01-11 20:10:27 6208 1

原创 错误:reference to non-static member function must be called

问题:今天刷牛客这道题的时候:题目描述:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。这是我的代码:class Solution {public: bool bijiao(int a, int b) { st

2018-01-10 11:06:54 39762

原创 类的成员指针

类的成员指针指向成员变量的指针 可以通过打印地址来看看其具体含义,其存储的是偏移量,不是实际地址 定义:成员变量的类型 类名::*指针变量名 string Student::*pstr; 赋值:指针变量名 = &类名::成员变量名 pstr = &String::m_name; 解引用:对象.* 指针变量名, 对象指针->.* 指针变量名

2017-10-09 16:22:29 599

原创 数塔

数塔问题描述:在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这样描述的: 有如下所示的数塔,要求从顶层走到底层,若每一步只能走到相邻的结点,则经过的结点的数字之和最大是多少? 已经告诉你了,这是个DP的题目,你能AC吗?input: 输入数据首先包括一个整数C,表示测试实例的个数,每个测试实例的第一行是一个整数N(1 <= N <= 100),表示数塔的高度,接下来用N行数字表示数

2017-09-25 16:25:15 307

原创 关于 STL 的 remove_if

函数原型:#include forward_iterator remove_if( forward_iterator start, forward_iterator end, Predicate p );函数remove_if()移除序列[start, end)中所有应用于谓词p返回true的元素.

2017-08-27 11:23:09 246

原创 特殊方式求求1+2+3+...+n

1. 题目要求 求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。2. 代码/*用公式是不可以的,公式里有乘法!!实现乘法可以用sizeof多维数组,两行代码就可以class Solution {public:    int Sum_Solution(int n) {        bool a[n

2017-08-22 17:49:32 456

转载 虚继承

http://blog.csdn.net/qq_26369213/article/details/47861973

2017-04-06 19:02:23 173

转载 openJudge 2的幂次方表示

描述任何一个正整数都可以用2的幂次方表示。例如:    137=27+23+20同时约定方次用括号来表示,即ab可表示为a(b)。由此可知,137可表示为:    2(7)+2(3)+2(0)进一步:7=22+2+20(21用2表示)        3=2+20所以最后137可表示为:    2(2(2)+2+2(0))+2(2+

2017-03-04 13:40:03 740

空空如也

空空如也

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

TA关注的人

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