
Linux
文章平均质量分 71
MJ813
如果万事都是一笑而过,那还有什么意思呢.......
展开
-
Linux共享内存(mmap详解)
mmap()系统调用使得进程之间通过映射同一个普通文件实现共享内存。普通文件被映射到进程地址空间后,进程可以向访问普通内存一样对文件进行访问,不必再调用read(),write()等操作。原创 2016-08-01 06:47:39 · 7870 阅读 · 1 评论 -
深入分析网络编程中踩过的坑
网络编程中经常会遇到一些异常的情况,定位问题需要了解协议栈的实现,以下是工作中遇到的一些常见问题的深入分析和解决思路。问题1:server端业务进程响应心跳超时被监控进程kill,导致数据或者逻辑异常我们的后台框架采用的是proxy,worker模型,proxy处理连接和会话,worker处理业务,proxy和worker之间通过共享内存队列转载 2016-08-09 23:22:02 · 3845 阅读 · 0 评论 -
epoll实现TCP通信
常见指令:telent 127.0.0.1 8080 连接 service iptables stop 关闭防火墙在TCP连接中,主动关闭连接的一方会进入2MSL,如果是服务器端,当TIME_WAIT时,sock不能被复用(四次挥手),使用setsockopt解决。int opt=1;setsockopt(listenfd,SOL_SOCKET,SO原创 2016-08-10 09:25:27 · 1411 阅读 · 0 评论 -
倒排索引——MapReduce实战
1.倒排索引简介倒排索引(Inverted index),也常被称为反向索引、置入档案或反向档案,是一种索引方法,被用来存储在全文搜索下某个单词在一个文档或者一组文档中的存储位置的映射。它是文档检索系统中最常用的数据结构。有两种不同的反向索引形式:一条记录的水平反向索引(或者反向档案索引)包含每个引用单词的文档的列表。一个单词的水平反向索引(或者完全反向索引)又包含每个单词转载 2016-08-10 09:42:19 · 536 阅读 · 0 评论 -
tar相关命令
tar-c: 建立压缩档案-x:解压-t:查看内容-r:向压缩归档文件末尾追加文件-u:更新原压缩包中的文件这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。-z:有gzip属性的-j:有bz2属性的-Z:有compress属性的-v:显示所有过程-O:将文件解开到原创 2016-09-25 19:59:55 · 527 阅读 · 0 评论 -
atime ctime 和mtime 的日常
在了解文件的三大时间之前,先引入stat 和touch这两个命令。stat命令用于显示文件的状态信息,stat命令的输出信息比ls命令的输出信息要更详细。 语法 stat(选项)(参数) 选项 -L:支持符号连接; -f:显示文件系统状态而非文件状态; -t:以简洁方式输出信息; --help:显示指令的帮助信息; --version:显示指令的版本信息。原创 2016-12-24 19:53:19 · 578 阅读 · 0 评论 -
linux下find指令的使用
先用一张思维导图来阐述find的选项接下来通过几个练习对上述指令进行掌握按文件名查找查找txt和pdf文件 print是可选的,注意花括号与字符之间的距离find . \( -name "*.txt" -o -name "*.pdf" \) -print查找所有非txt文本find . ! -name "*.txt" -print查找根目录下文件名为ls的文件原创 2016-12-27 17:43:01 · 739 阅读 · 2 评论 -
剖析task_struct
task_struct结构体在sched.h文件中定义:通过find指令找出文件路径进入该文件后,struct_task的定义从1317行开始整个结构体的定义380行邹游,成员大多有相应的注释。接下来看代码struct task_struct {/*调度数据成员------------------------------------------------------原创 2017-01-08 10:45:42 · 920 阅读 · 0 评论 -
剖析mm_struct
每个进程都有一个mm_struct结构体,task_struct有指向该结构体的指针。mm_struct通过MMU映射到物理地址。设计的原理在于屏蔽越界操作和限制访存操作。还有最重要的一点在于最大化利用了物理内存。可以通过grep命令查找其定义的头文件mm_struct的结构体定义如下:struct mm_struct { struct vm_area_struct * mmap原创 2017-01-08 11:31:35 · 1150 阅读 · 0 评论 -
linux下编写进度条及三种缓冲机制总结
系统的进度条:编写完成的进度条效果如下源码如下实现原理我们平常所说的换行包含两个步骤:1.另起一行 2.回到本行的开头可以看到进度条主要是靠printf函数完成的。要达到在一直在本行刷新输出,我们先来了解IO的几种缓冲机制。1、全缓冲 全缓冲指的是系统在填满标准IO缓冲区之后才进行实际的IO操作;注意,对于驻留在磁盘上的文件来说通常是由标准IO库实原创 2016-12-31 18:16:20 · 876 阅读 · 0 评论 -
一致性哈希算法及其在分布式系统中的应用
摘要本文将会从实际应用场景出发,介绍一致性哈希算法(Consistent Hashing)及其在分布式系统中的应用。首先本文会描述一个在日常开发中经常会遇到的问题场景,借此介绍一致性哈希算法以及这个算法如何解决此问题;接下来会对这个算法进行相对详细的描述,并讨论一些如虚拟节点等与此算法应用相关的话题。分布式缓存问题假设我们有一个网站,最近发现随着流量增加,服务器压力越来越大转载 2016-08-10 09:20:37 · 289 阅读 · 0 评论 -
对死锁的探究
什么是死锁 死锁是进程死锁的简称,是由Dijkstra于1965年研究银行家算法时首先提出来的。它是计算机操作系统乃至并发程序设计中最难处理的问题之一。 产生死锁的必要条件 〈1〉互斥条件即某个资源在一段时间内只能由一个进程占有,不能同时被两个或两个以上的进程占有。这种独占资源如CD-ROM驱动器,打印机等等,必须在占有该资源的进程主动释放它之后,其它进程才能占有该资源。这是由资源本身转载 2016-08-10 09:13:47 · 437 阅读 · 0 评论 -
HTTP协议及其POST与GET操作差异
引言HTTP协议我想任何IT人士都耳熟能详了,大家都能说出个所以然来。但是如果我问你HTTP协议的请求方法有哪些?POST与GET的差异?GET或POST传送数据量的大小有限制吗?HTTP响应的状态有哪些?以及在C#中你如何使用?如果你不能清楚地回答其中的大部分问题,那么这篇文章就是为你准备的!大纲如下:1、HTTP概述1.1、HTTP协议的客户端与服务器的交互1.2、HT转载 2016-08-10 09:11:37 · 733 阅读 · 0 评论 -
如何配置vim
为什么要配置vim?配置文件的位置配置方法自动补全配色原创 2016-07-21 18:29:53 · 668 阅读 · 0 评论 -
linux环境变量及权限的理解
什么是linuxlinux的发行版计算机的五大单元Linux的扩展名Linux的文件类型原创 2016-07-21 20:37:24 · 1103 阅读 · 0 评论 -
linux常见指令及时间戳
安装和登录:login、shutdown、halt、reboot、install、mount、umount、chsh、exit、last文件处理:file、mkdir、grep、dd、find、mv、ls、diff、cat、ln系统管理相关命令:df、top、free、quota、at、lp、adduser、groupadd、kill、crontab网络操作命令:ifconfig、ip、ping、netstat、telnet、ftp、route、rlogin、rcp、finger、mail系统安全:原创 2016-07-21 23:00:05 · 3469 阅读 · 0 评论 -
一行代码安装gcc、g++、gdb、telnet
软件包分类一行代码安装gcc、g++、gdb原创 2016-07-22 08:17:27 · 696 阅读 · 0 评论 -
gdb的使用
gdb:代码调试工具gdb binFile-----------开始使用ctrl+d 或quit---------退出调试过程:r /run----------------运行程序原创 2016-07-22 08:57:15 · 365 阅读 · 0 评论 -
信号的产生以及处理方式
1.用户输入命令,在Shell下启动一个前台进程。2.用户按下Ctrl-C,这个键盘输入产生一个硬件中断。3.如果CPU当前正在执行这个进程的代码,则该进程的用户空间代码暂停执行,CPU从用户态 切换到内核态处理硬件中断。4.终端驱动程序将Ctrl-C解释成一个SIGINT(#2)信号,记在该进程的PCB中(也可以说发送了一 个SIGINT信号给该进程)。5.当某个时刻要从内核返回到该进程的用户空间代码继续执行之前,首先处理PCB中记录的信号,发现有一个SIGINT信号待处理,而这个信号的默认处理动转载 2016-07-22 09:39:53 · 659 阅读 · 0 评论 -
信号未决与阻塞
一、几个基本的概念信号递达(Delivery) :实际执行信号的处理动作;信号未决(Pending) :信号从产生到递达之间的状态;进程可以选择阻塞(Block )某个信号。被阻塞的信号产生时将保持在未决状态,直到进程解除对此信号的阻塞,才执行递达的动作。注意,阻塞和忽略是不同的,只要信号被阻塞就不会递达,而忽略是在递达之后 可选的一种处理动作。转载 2016-07-22 09:42:02 · 618 阅读 · 0 评论 -
缓冲方式、文件描述符及文件操作
三种缓冲方式:进程退出时,要刷新缓冲区以清空缓冲区 ,这时就相当于修改缓冲区,这时父子进程会各有一份缓冲区里的数据(拷贝的),当把标准输出重定向到一个文件里,缓冲区里的数据的刷新方式会变为全缓冲。转载 2016-07-22 09:44:00 · 646 阅读 · 0 评论 -
如何使用git
一、git的简介Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。 Git 是 Linus Torvalds 为了帮助管理 Linux 内核 开发而开发的一个开放源码的版本控制软件。Git跟踪并管理的是修改,而转载 2016-08-09 23:12:05 · 601 阅读 · 0 评论 -
如何将代码上传至github
如何将代码上传至github原创 2017-07-22 12:50:18 · 842 阅读 · 0 评论