自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

rock_joker的博客

辛勤工作的小蜜蜂

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

转载 线性时间排序(计数排序、基数排序、桶排序)

转载:http://blog.csdn.net/luoshixian099/article/details/45043337线性时间排序  前面介绍的几种排序,都是能够在复杂度nlg(n)时间内排序n个数的算法,这些算法都是通过比较来决定它们的顺序,这类算法叫做比较排序 。下面介绍的几种算法用运算去排序,且它们的复杂度是线性时间。——————————————————————

2017-08-18 22:50:44 556

转载 Linux虚拟地址空间布局以及进程栈和线程栈总结

一:Linux虚拟地址空间布局(转自:Linux虚拟地址空间布局)  在多任务操作系统中,每个进程都运行在属于自己的内存沙盘中。这个沙盘就是虚拟地址空间(Virtual Address Space),在32位模式下它是一个4GB的内存地址块。在Linux系统中, 内核进程和用户进程所占的虚拟内存比例是1:3,而Windows系统为2:2(通过设置Large-Addres

2017-08-18 21:10:34 397

转载 高并发解决方案

一个小型的网站,比如个人网站,可以使用最简单的html静态页面就实现了,配合一些图片达到美化效果,所有的页面均存放在一个目录下,这样的网站对系统架构、性能的要求都很简单,随着互联网业务的不断丰富,网站相关的技术经过这些年的发展,已经细分到很细的方方面面,尤其对于大型网站来说,所采用的技术更是涉及面非常广,从硬件到软件、编程语言、数据库、WebServer、防火墙等各个领域都有了很高的要求,已经不是

2017-08-18 20:49:21 234

原创 SQL SERVE的聚集索引与非聚集索引

通俗的解释聚集索引:       聚集索引,来源于生活尝试。这中索引可以说是按照数据的物理存储进行划分的。对于一堆记录来说,使用聚集索引就是对这堆记录 进行 堆划分。即主要描述的是物理上的存储。举个例子:       比如图书馆新进了一批书。那么这些书需要放到图书馆内。书如何放呢?一般都有一个规则,杂志类的放到101房间,文学类的放到102房间,理工类的放到103房

2017-08-11 11:09:44 419

转载 Linux中虚拟内存和物理内存的关系

首先,让我们看下虚拟内存:第一层理解1.         每个进程都有自己独立的4G内存空间,各个进程的内存空间具有类似的结构2.       一个新进程建立的时候,将会建立起自己的内存空间,此进程的数据,代码等从磁盘拷贝到自己的进程空间,哪些数据在哪里,都由进程控制表中的task_struct记录,task_struct中记录中一条链表,记录中内存空间的分

2017-08-07 15:15:23 1111

转载 TCP协议详解(慢启动,流量控制,阻塞控制之类)

UDP协议提供了端到端之间的通讯,应用程序只需要在系统中监听一个端口,便可以进行网络通讯。随着计算机网络的发展,计算机网络所承载的业务越来越多,有些业务数据的传输需要具备可靠性,譬如我们在进行在线聊天的时候,我们发送的一条消息,我们必须明确地知道对方是否收到。如果对方对我们发送地消息不给予确认,我们就不知道对方是否已经收到。显然,UDP协议并没有提供可靠交付的能力,因此我们可能需要在应用层

2017-08-06 14:56:18 14210

转载 TCP之性能优化避免慢启动

TCP协议中有个慢启动,在《TCP/IP详解卷一》中占据的篇幅很小,但是这个东西,在某些业务场景下,对性能的影响非常大。什么是慢启动最初的TCP的实现方式是,在连接建立成功后便会向网络中发送大尺寸的数据包,假如网络出现问题,很多这样的大包会积攒在路由器上,很容易导致网络中路由器缓存空间耗尽,从而发生拥塞。因此现在的TCP协议规定了,新建立的连接不能够一开始就发送大尺寸的数据包,而只能从

2017-08-06 14:52:58 1019

转载 linux内核--段页式管理内存的方法

一、概念物理地址(physical address)用于内存芯片级的单元寻址,与处理器和CPU连接的地址总线相对应。——这个概念应该是这几个概念中最好理解的一个,但是值得一提的是,虽然可以直接把物理地址理解成插在机器上那根内存本身,把内存看成一个从0字节一直到最大空量逐字节的编号的大数组,然后把这个数组叫做物理地址,但是事实上,这只是一个硬件提供给软件的抽像,内存的寻址方式并不

2017-08-06 14:49:46 1047

转载 linux网络编程--TCP分包 粘包 MTU 和MSS之间的关系分析

其实在以前的文章中介绍了和这个话题相关的文章,TCP封包。这里还想继续回顾想以前的内容,把不明白的东西弄明白:        IP分片在以太网上,由于电气限制,一帧不能超过1518字节,除去以太网帧头14字节(mac地址等)和帧尾4字节校验,还剩1500字节,这个大小称为MTU(最大传输单元)。如果你的IP包大于1500字节,IP层就会分片了。而1492的MTU值的来源

2017-08-06 12:31:28 435

转载 再次深入理解TCP网络编程中的send和recv(TCP传输的一般过程抓包演示)

本篇我们用一个测试机上的阻塞socket实例来说明主题。文章中所有图都是在测试系统上现截取的。需要理解的3个概念1. TCP socket的buffer每个TCP socket在内核中都有一个发送缓冲区和一个接收缓冲区,TCP的全双工的工作模式以及TCP的流量(拥塞)控制便是依赖于这两个独立的buffer以及buffer的填充状态。接收缓冲区把数据缓存入内核,应用进程一直没有调用r

2017-08-06 10:53:21 1095

转载 linux网络编程--深入浅出send和recv

先明确一个概念:每个TCP socket在内核中都有一个发送缓冲区和一个接收缓冲区,TCP的全双工的工作模式以及TCP的滑动窗口便是依赖于这两个独立的buffer以及此buffer的填充状态。接收缓冲区把数据缓存入内核,应用进程一直没有调用read进行读取的话,此数据会一直缓存在相应 socket的接收缓冲区内。再啰嗦一点,不管进程是否读取socket,对端发来的数据都会经由内核接收并且缓存到

2017-08-05 21:43:48 517

转载 linux 中IO多路复用epoll函数的ET和LT工作模式详解

epoll的优点:1.支持一个进程打开大数目的socket描述符(FD)    select 最不能忍受的是一个进程所打开的FD是有一定限制的,由FD_SETSIZE设置,默认值是2048。对于那些需要支持的上万连接数目的IM服务器来说显然太少了。这时候你一是可以选择修改这个宏然后重新编译内核,不过资料也同时指出这样会带来网络效率的下降,二是可以选择多进程的解决方案(传统的 Apach

2017-08-05 20:46:53 1029

转载 epoll机制:epoll_create、epoll_ctl、epoll_wait、close用法详解

在Linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。并且,linux/posix_types.h头文件有这样的声明:#define__FD_S

2017-08-05 20:21:12 21454 2

转载 linux守护进程的详解与创建

写在前面,守护进程与后台进程的区别:后台进程:默认情况下,进程是在前台运行的,但是在运行的时候使用特殊操作使前台运行的程序放置后台运行,但是如果这个进程所依附的shell终结,就是在后台运行的程序也会被终止。守护进程:类似于一种服务,在开机启动的时候会自动启动,或者通过程序写一个守护进程,下面有讲解关于后台进程的书写规范;还可以通过命令来启动一个后太进程。即使所有的shell都关闭

2017-08-05 20:01:17 370

转载 孤儿进程与僵尸进程[总结]

孤儿进程与僵尸进程[总结]1、前言  之前在看《unix环境高级编程》第八章进程时候,提到孤儿进程和僵尸进程,一直对这两个概念比较模糊。今天被人问到什么是孤儿进程和僵尸进程,会带来什么问题,怎么解决,我只停留在概念上面,没有深入,倍感惭愧。晚上回来google了一下,再次参考APUE,认真总结一下,加深理解。2、基本概念  我们知道在unix/linux中,正常情况

2017-08-05 16:42:25 220

转载 linux网络编程--TCP分包 粘包 MTU 和MSS之间的关系分析

其实在以前的文章中介绍了和这个话题相关的文章,TCP封包。这里还想继续回顾想以前的内容,把不明白的东西弄明白:        IP分片在以太网上,由于电气限制,一帧不能超过1518字节,除去以太网帧头14字节(mac地址等)和帧尾4字节校验,还剩1500字节,这个大小称为MTU(最大传输单元)。如果你的IP包大于1500字节,IP层就会分片了。而1492的MTU值的来源

2017-08-04 17:34:25 407

转载 linux网络编程--shut_down和close()函数的区别

在Linux C网络编程中,一共有两种方法来关闭一个已经连接好的网络通信,它们就是close函数和shutdown函数,它们的函数原型分别为:1#include2int close(intsockfd)3//返回:0——成功, 1——失败4

2017-08-04 17:31:35 489

转载 epoll使用方法&简单原理介绍&详细的select/poll/epoll对比

一、 介绍    Epoll 是一种高效的管理socket的模型,相对于select和poll来说具有更高的效率和易用性。传统的select以及poll的效率会因为 socket数量的线形递增而导致呈二次乃至三次方的下降,而epoll的性能不会随socket数量增加而下降。标准的linux-2.4.20内核不支持epoll,需要打patch。本文主要从linux-2.4.32和linux-2.

2017-08-04 17:24:13 2014

转载 结合内核实现源码分析 select poll epoll区别

在博客中以前的文章有介绍epoll的使用方法,但是并没有详细介绍之间的区别http://blog.csdn.net/yusiguyuan/article/details/15027821http://blog.csdn.net/yusiguyuan/article/details/15029465http://blog.csdn.net/yusiguyuan/article

2017-08-04 17:03:07 318

转载 epoll大致结构

设想一个场景:有100万用户同时与一个进程保持着TCP连接,而每一个时刻只有几十个或几百个TCP连接时活跃的(接收到TCP包),也就是说,在每一时刻,进程值需要处理这100万连接中的一小部分连接。那么,如何才能高效地处理这种场景呢?进程是否在每次询问操作系统收集有事件发生的TCP连接时,把这100万个连接告诉操作系统,然后由操作系统找出其中有事件发生的几百个连接呢?实际上,在Linux内核2.4版

2017-08-04 16:58:16 709

转载 epoll模型讲解/源码分析

epoll模型在select/poll出现之前我们只能通过read/write的IO操作来从流中读取数据,当然在少量IO操作的时候完全是可靠的,但是当IO操作快速增长时甚至到了大规模并发阶段,这样的IO就显得捉襟见肘了。 首先我们来理解一个内核缓冲区的概念,假设A,B两个分别作为写入方与读出方,假设一开始内核缓冲区是空的,B作为读出方,被阻塞着。然后首先A往管道写入,这时候内核缓冲区由

2017-08-03 18:23:06 527

转载 Linux内存管理slab分配器

slab出现的缘由在Solaris 2.4以前,Linux内核采用基于伙伴算法实现的分区页框分配器适合大块内存的请求。伙伴将空闲页面分为m个组,第1组存储2^0个单位的内存块,,第2组存储2^1个单位的内存块,第3组存储2^2个单位的内存块,第4组存储2^3个单位的内存块,以此类推.直到m组.但是伙伴算法是以页为单位分配的,即会产生内部碎片,slab算法的出现就是为了解决这个小粒度内存分配

2017-08-03 17:42:56 225

转载 同步/异步与阻塞非阻塞的关系

一、“阻塞”与"非阻塞"与"同步"与“异步"不能简单的从字面理解,提供一个从分布式系统角度的回答。1.同步与异步同步和异步关注的是消息通信机制 (synchronous communication/ asynchronous communication)所谓同步,就是在发出一个*调用*时,在没有得到结果之前,该*调用*就不返回。但是一旦调用返回,就得到返回值了。换句话说,就是由

2017-08-03 15:09:26 154

空空如也

空空如也

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

TA关注的人

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