
Linux
文章平均质量分 93
繁华落尽梦一场
暮春者,春服既成,冠者五六人,童子六七人,浴乎沂,风乎舞雩,咏而归
展开
-
数据库事务中MVCC的实现
原文链接 数据库事务中MVCC的实现MVCC(Multi-Version Concurrency Control),实现了读事务不加锁。MVCC对每行数据维护多个版本,无论事务执行时间有多长,MVCC总是能够提供与事务开始时刻一致的数据以InnoDB实现为例,InnoDB对每张表增加了两个隐藏列,其中一列存储行被修改的“时间”,另一列存储行被删除的“时间”。当然了,InnoDB存储的不是时间,而是与时间对应的数据库系统的版本号,当开启一个事务时,InnoDB都会给这个事务分配一个递增的版本号,这个版本号原创 2020-10-01 11:47:17 · 257 阅读 · 0 评论 -
redis源码之一步一步解析客户端连接请求
redis是一个性能很高的内存数据库,那么从我们使用客户端连接到执行一个命令,在redis中是如何执行的?接下来我们从源码角度调试查看内部流程。由于redis 6对网络IO使用了多线程,我们暂时先用redis 5来调试。服务启动redis作为后台服务,首先自己先要运行起来,然后等待客户端的连接。我们知道,redis网络模型是常见的Reactor模式,简单来说就是主函数复杂接收包,对于处理请求通过回调函数(CallBack)处理。通常情况下,我们会把回调函数放在单独我work线程里面。我们从main函转载 2020-10-01 11:45:05 · 913 阅读 · 0 评论 -
Linux共享内存
[cpp] view plaincopy#include #include #include #include #include #include #define BUFFER_SIZE 4 int main() { int shmid = shmget((key_t)1234原创 2015-12-18 12:04:30 · 401 阅读 · 0 评论 -
linux下安装boost
1、http://www.boost.org/下载最新版本并上传到后台,我下载的是boost_1_59_0.tar.gz2、解压 tar zxvf boost_1_59_0.tar.gz3、进入目录执行./bootstrap.sh,完成后生成一些文件,其中包含bjam4、执行./bjam对待完成5、测试#include #include int main(){ u原创 2015-12-14 17:50:03 · 489 阅读 · 0 评论 -
centos安装ssh免密码登录
之前搭建Hadoop伪分布的时候需要shh,但那时很顺利,没出现什么大问题,现在在装了3台虚拟机,想搭建一个真正的分布系统,结果在安装ssh这个地方始终过不去。总结几个出问题的地方:1、关闭SELINUX具体就是将 /etc/selinux/config 中的 SELINUX设为disabled。2、.ssh文件权限.ssh文件的权限必须是700,chmod原创 2015-12-13 00:36:17 · 370 阅读 · 0 评论 -
accept与connect的超时设置
connect超时:我们都知道,connect对应与三次握手中的第一次发送SYN,而对待服务器的ACK,如果服务器没有启动服务器,有些机器会立刻返回一个RST表示服务器拒绝,从而connect失败,但又些服务器为了防止攻击,什么也不发送,直至客户端connect超时,而这一时间又75s,对于客户端来说是不能接收的。所以需要设置connect的超时时间。利用select设置connect的超原创 2015-12-11 22:46:28 · 14690 阅读 · 3 评论 -
浅谈获取shell中函数的返回值
首先看看怎么获取命令的返回值,根据linux标准,返回0就是正确,非0就是错误的原则,只要命令执行正确,返回的一般都是0,那么怎么获取命令的返回值??用位置参数 $?$? 获取上一个指令的返回值 (显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误)[plain] view plaincopyls -l a原创 2016-01-25 15:46:41 · 629 阅读 · 0 评论 -
shell编程之sort 命令详解
1 sort的工作原理sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。[plain]view plaincopy[rocrocket@rocrocketprogramming]$catseq.txtbananaapplepea原创 2016-01-25 15:48:56 · 553 阅读 · 0 评论 -
awk截取字符串
分隔字符串分三种情况,一种是分隔符是空格,一种是非空格,还有一种是多个字符作为分隔符先来创建一个文件吧:[plain] view plaincopyNam Chinese Math English Tom 80 90 100 Jack 83原创 2016-01-25 15:49:43 · 1238 阅读 · 0 评论 -
TCP中用到的定时器
TCP为每条连接建立七个定时器: 1、连接建立定时器在发送SYN报文段建立一条新连接时启动。如果没有在75秒内收到响 应,连接建立将中止。当TCP实例将其状态从LISTEN更改为SYN_RECV的时侯就会使用这一计时器.服务端的TCP实例最初会等待一个ACK三秒钟.如果在这一段时间没有ACK到达,则认为该连接请求是过期的。 2、重传定时器在TCP发送数据时设定.原创 2016-01-30 20:50:00 · 444 阅读 · 0 评论 -
HTTP中的Host字段
说白了,HTTP还是TCP协议,所以发起http请求也就是建立TCP连接并发送的过程,也就是说connect-->send。 TCP在connect的时候必须要知道对方我IP地址和监听端口。比如我们要发起对www.baidu.com的请求,那第一步就是得到www.baidu.com对应的IP地址,然后connect,进而send。 在http1.1中新增了一个Host头,那大家原创 2016-03-01 21:11:26 · 25935 阅读 · 3 评论 -
TCP初始化序列号ISN
TCP初始化序列号不能设置为一个固定值,因为这样容易被攻击者猜出后续序列号,从而遭到攻击。RFC1948中提出了一个较好的初始化序列号ISN随机生成算法。ISN = M + F(localhost, localport, remotehost, remoteport).M是一个计时器,这个计时器每隔4毫秒加1。F是一个Hash算法,根据源IP、目的IP、源端口、目的原创 2016-02-01 10:36:32 · 9993 阅读 · 2 评论 -
UDP调用connect
大家都知道,在建立TCP连接时需要connect,但UDP调用connect又是什么情况。 在普通的UDP中,我们都是用sendto和recvfrom来收发消息的,这两个函数都有一个sockaddr_in参数,参数里面存放的就是目的端的ip和端口,而TCP的send和recv就不需要这些参数,为什么呢?稍微一想我们就知道,TCP在发送数据的时候已经建立了连接,所以不需要目的端的ip和原创 2016-02-01 10:40:27 · 675 阅读 · 0 评论 -
nginx中的定时器
nginx中到处充斥着定时器,那么nginx中的定时器是怎么来管理的?是不是每个定时都要检查是否超时?要是这样,那效率太低下了,细读源码来看看nginx中的定时器是怎么样的。首先来一个大概的认识:nginx中的定时器是放在一个全局的叫做ngx_event_timer_rbtree的红黑树中的,通过ngx_add_timer来添加定时器,等超时定时事件执行完后就从红黑树中移除该定时器,所以想要达原创 2016-09-07 17:32:41 · 4480 阅读 · 0 评论 -
64位murmurhash 源码
提供了x86和新x64两个平台上生成64位MurmurHash的算法#ifndef MURMURHASH_H_INCLUDED#define MURMURHASH_H_INCLUDED// 64-bit hash for 64-bit platformsuint64_t MurmurHash64A (const void * key, int len, unsigned int se...原创 2019-03-24 00:59:05 · 2185 阅读 · 0 评论 -
浅谈获取shell中函数的返回值
首先看看怎么获取命令的返回值,根据linux标准,返回0就是正确,非0就是错误的原则,只要命令执行正确,返回的一般都是0,那么怎么获取命令的返回值??用位置参数 $?$? 获取上一个指令的返回值 (显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误)[plain] view plaincopyls -l a原创 2015-12-11 19:39:29 · 492 阅读 · 0 评论 -
CentOS安装mysql并授权远程登录
1、安装mysql[plain] view plaincopywget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm rpm -ivh mysql-community-release-el7-5.noarch.rpm yum inst原创 2015-12-11 19:36:45 · 403 阅读 · 0 评论 -
awk截取字符串
分隔字符串分三种情况,一种是分隔符是空格,一种是非空格,还有一种是多个字符作为分隔符先来创建一个文件吧:[plain] view plaincopyNam Chinese Math English Tom 80 90 100 Jack 83原创 2015-12-11 19:38:41 · 48654 阅读 · 3 评论