自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 收藏
  • 关注

原创 【游戏后端】游戏服务器端开发的一些建议(转载)

摘要: 本文作为游戏服务器端开发的基本大纲,是游戏实践开发中的总结。第一部分专业基础,用于指导招聘和实习考核, 第二部分游戏入门,讲述游戏服务器端开发的基本要点,第三部分服务端架构,介绍架构设计中的一些基本原则。希望能帮到大家一 专业基础1.1 网络1.1.1 理解TCP/IP协议网络传输模型滑动窗口技术建立连接的三次握手与断开连接的四次握手连接建立与断开过程中的各种状态TCP/IP协议...

2018-10-23 23:34:00 367

原创 最小堆 构建、插入、删除的过程图解

1.简介       最小堆是一棵完全二叉树,非叶子结点的值不大于左孩子和右孩子的值。本文以图解的方式,说明最小堆的构建、插入、删除的过程。搞懂最小堆的相应知识后,最大堆与此类似。2.最小堆示例3.最小堆的构建      初始数组为:9,3,7,6,5,1,10,2      按照完全二叉树,将数字依次填入。      填入后,找到最后一个结点(本示例为数字2的节点),从...

2018-10-10 18:48:00 248

原创 linux 自旋锁和信号量

自旋锁最多只能被一个可执行线程持有(读写自旋锁除外)。自旋锁不会引起调用者睡眠,如果一个执行线程试图获得一个已经被持有的自旋锁,那么线程就会一直进行忙循环,一直等待下去(一直占用 CPU ),在那里看是否该自旋锁的保持者已经释放了锁, " 自旋 " 一词就是因此而得名。由于自旋锁使用者一般保持锁时间非常短,因此选择自旋而不是睡眠是非常必要的,自旋锁的效率远高于互斥锁。信号量和读写信号...

2018-10-07 17:11:00 195

原创 Mutex, semaphore, spinlock的深度解析

 Mutex是一把钥匙,一个人拿了就可进入一个房间,出来的时候把钥匙交给队列的第一个。一般的用法是用于串行化对critical section代码的访问,保证这段代码不会被并行的运行。 Semaphore是一件可以容纳N人的房间,如果人不满就可以进去,如果人满了,就要等待有人出来。对于N=1的情况,称为binary semaphore。一般的用法是,用于限制对于某一资源的同时访问。...

2018-10-07 17:09:00 203

原创 socket(int family, int type, int protocol)各参数define

family:/* Supported address families. */#define AF_UNSPEC 0#define AF_UNIX 1/* Unix domain sockets*/#define AF_LOCAL 1/* POSIX name for AF_UNIX*/#define AF_INET 2/* Internet IP Protocol*/...

2018-10-06 21:19:00 492

原创 TCP之Nagle算法&&延迟ACK

1. Nagle算法:是为了减少广域网的小分组数目,从而减小网络拥塞的出现;该算法要求一个tcp连接上最多只能有一个未被确认的未完成的小分组,在该分组ack到达之前不能发送其他的小分组,tcp需要收集这些少量的分组,并在ack到来时以一个分组的方式发送出去;其中小分组的定义是小于MSS的任何分组;该算法的优越之处在于它是自适应的,确认到达的越快,数据也就发哦送的越快;而在希望减少微...

2018-09-26 23:33:00 145

原创 TCP超时重传、滑动窗口、拥塞控制、快重传和快恢复


 TCP超时重传原理是在发送某一个数据以后就开启一个计时器,在一定时间内如果没有得到发送的数据报的ACK报文,那么就重新发送数据,直到发送成功为止。  影响超时重传机制协议效率的一个关键参数是重传超时时间(RTO,Retransmission TimeOut)。RTO的值被设置过大过小都会对协议造成不利影响。  (1)RTO设长了,重发就慢,没有效率,性能差。  ...

2018-09-20 00:09:00 467

原创 常用HTTP状态码


 生产环境常见的HTTP状态码列表(List of HTTP status codes)为:200 - OK,服务器成功返回网页 - Standard response for successful HTTP requests.301 - Moved Permanently(永久跳转),请求的网页已永久跳转到新位置。 - This and all ...

2018-09-18 20:17:00 147

原创 tcp窗口滑动以及拥塞控制


 TCP协议作为一个可靠的面向流的传输协议,其可靠性和流量控制由滑动窗口协议保证,而拥塞控制则由控制窗口结合一系列的控制算法实现。一、滑动窗口协议关于这部分自己不晓得怎么叙述才好,因为理解的部分更多,下面就用自己的理解来介绍下TCP的精髓:滑动窗口协议。所谓滑动窗口协议,自己理解有两点:1. “窗口”对应的是一段可以被发送者发送的字节序列,其连续的范围称之为“窗口”...

2018-09-18 20:00:00 89

原创 time_wait状态产生的原因,危害,如何避免


 1. time_wait状态如何产生? 由上面的变迁图,首先调用close()发起主动关闭的一方,在发送最后一个ACK之后会进入time_wait的状态,也就说该发送方会保持2MSL时间之后才会回到初始状态。MSL值得是数据包在网络中的最大生存时间。产生这种结果使得这个TCP连接在2MSL连接等待期间,定义这个连接的四元组(客户端IP地址和端口,服务端IP地址和端...

2018-09-18 19:24:00 154

原创 ARP原理过程

每个主机都会在自己的ARP缓冲区中建立一个ARP列表,以表示IP地址和MAC地址之间的对应关系。当源主机要发送数据时,首先检查ARP列表中是否有对应IP地址的目的主机的MAC地址,如果有,则直接发送数据,如果没有,就向本网段的所有主机发送ARP数据包,该数据包包括的内容有:源主机 IP地址,源主机MAC地址,目的主机的IP 地址。当本网络的所有主机收到该ARP数据包时,首...

2018-09-18 19:06:00 231

原创 tcpip详解卷1

序号用来标识从T C P发端向T C P收端发送的数据字节流,它表示在这个报文段中的的第一个数据字节。如果将字节流看作在两个应用程序间的单向流动,则 T C P用序号对每个字节进行计数。序号是32 bit的无符号数,序号到达 2^32-1后又从0开始。T C P为应用层提供全双工服务。这意味数据能在两个方向上独立地进行传输。因此,连接的每一端必须保持每个方向上的传输数据序号。T C ...

2018-09-18 19:04:00 205

原创 gcc 使用入门教程

如果你还没装编译环境或自己不确定装没装,不妨先执行sudo apt-get install build-essential如果你需要编译 Fortran 程序,那么还需要安装 gfortran(或 g77)sudo apt-get install gfortranC 语言经典的入门例子是 Hello World,下面是一示例代码:include <stdio.h>...

2018-09-18 19:02:00 439

原创 gcc和makefile

GCC和程序编译过程GCC是linux下面的编译器,最初名称是GNU C Compiler (GCC) ,后面逐渐可以编译各种语言,因此GNU Compiler Collection (GCC)。他是自由软件大神Richard Stallman发起的。目前GCC系列在win和unix环境都可以使用,win中可以使用mingw或者cygwin使用GCC,就要知道它的各种编译选项,而...

2018-09-18 19:01:00 138

原创 linux 管道符号 | ,以及&& ||等等特殊符号笔记

管道和重导向:“|”、“>”、“>>”、“<”   重导向就是使命令改变它所认定的标准输出。“>”可将结果输出到文件中,该文件原有内容会被删除,“>>”则将结果附加到文件中,原文件内容不会被删除。“<”可以改变标准输入。如:    cat data1.txt>>data2.txt(将data1.txt文件的内容加在data2....

2018-09-18 19:00:00 309

原创 如何使用GCC生成动态库和静态库

根据链接时期的不同,库又有静态库和动态库之分。静态库是在链接阶段被链接的,所以生成的可执行文件就不受库的影响,即使库被删除,程序依然可以成功运行。而动态库是在程序执行的时候被链接的。程序执行完,库仍需保留在系统上,以供程序运行时调用。链接静态库从某种意义上来说是一种复制粘贴,被链接后库就直接嵌入可执行程序中了,这样系统空间有很大的浪费,而且一旦发现系统中有bug,就必须一一把链接该库的程...

2018-09-18 18:59:00 265

原创 linux内核分析--浅析内存管理机制

linux内存管理---虚拟地址、逻辑地址、线性地址、物理地址的区别linux内存管理---物理地址、线性地址、虚拟地址、逻辑地址之间的转换上述两篇文章介绍了内存寻址的方式linux内存管理--Linux中的物理和虚拟存储空间布局讲述了物理和虚拟内存之间的关系linux内存管理--linux内核高端内存讲述了内核空间(3G~4G)的划分linux内存管理--内存管理机制综述...

2018-09-18 18:57:00 91

原创 inode简单理解

一. 磁盘设备说到inode,首先必须要提及下《操作系统》中磁盘存储器的管理一节。磁盘设备是一种相当复杂的机电设备(比较详细的介绍可以参考blog硬盘内部硬件结构和工作原理详解 )。 磁盘设备可以包括一个或多个物理盘片,每个磁盘片分一个或两个存储面(如图(a)所示)。每个磁盘面被组织成若干个同心环,这种环称为磁道track,各磁道之间留有必要的间隙。每条磁道又被逻辑上划分成若干个扇区s...

2018-09-18 18:57:00 222

原创 ext2、ext3与ext4的区别

ext3 ext4区别●更大的文件系统和更大的文件ext3:16TB文件系统和最大2TB文件,ext4:1EB文件系统和最大16TB文件。●无限数量的子目录ext3:32,000个子目录,ext4:无限数量的子目录。●Extentsext3采用间接块映射,当操作大文件时,效率极其低下。比如一个 100MB 大小的文件,在ext3中要建立25,600个数据块(每个数据块大小为 4KB)的映...

2018-09-18 18:55:00 577

原创 Linux如何查看当前占用CPU或内存最多的几个进程

1. ps命令ps -aux | sort -k4nr | head -N*命令详解: 1. head:-N可以指定显示的行数,默认显示10行。 2. ps:参数a指代all——所有的进程,u指代userid——执行该进程的用户id,x指代显示所有程序,不以终端机来区分。ps -aux的输出格式如下:USER PID %CPU %MEM VSZ RSS TTY...

2018-09-18 18:52:00 1568

原创 linux下添加链接与删除链接(ln命令的用法)

添加链接使用ln命令用法:#ln --help用法:ln [选项]... 目标 [链接名]或:ln [选项]... 目标... 目录或:ln [选项]... --target-directory=目录 目标...创建连至指定<目标>的链接,并可选择性指定<链接名>。如果没有指定<链接名>,会在目前的目录中创建一个和<目标>名称一样的链接。当...

2018-09-18 18:51:00 2037

原创 gcc

1.简介GCC(GNU Compiler Collection,GNU编译器集合)是一套由GNU工程开发的支持多种编程语言的编译器。GCC是自由软件发展过程中的著名例子,由自由软件基金会以GPL协议发布。GCC是大多数类Unix操作系统(如Linux、BSD、Mac OS X等)的标准的编译器,GCC同样适用于微的Windows。GCC支持多种计算机体系芯片,如x86、ARM,并已移植...

2018-09-18 18:51:00 74

原创 gdb print详解

print命令的格式是:print xxxp xxx1. print 操作符@    是一个和数组有关的操作符,在后面会有更详细的说明。    ::    指定一个在文件或是一个函数中的变量。    {}    表示一个指向内存地址的类型为type的一个对象。2. 察看内容全局变量(所有文件可见的)静态全局变量(当前文件可见的)局部变量(当前Scope可见的)如果你的局部...

2018-09-18 18:50:00 9858

原创 GDB同步显示源代码——layout

GDB调试的时候,很多人会忽略一个强大的命令layout。1. 显示源代码窗口(gdb) layout src2. 显示寄存器窗口(gdb) layout regs3. 显示汇编代码窗口(gdb) layout asm4. 显示源代码和汇编代码(gdb) layout split5. 显示窗口的大小info win6. 切换到下一个布局模式layout next7...

2018-09-18 18:49:00 507

原创 Linux 系统结构详解

Linux系统一般有4个主要部分:内核、shell、文件系统和应用程序。内核、shell和文件系统一起形成了基本的操作系统结构,它们使得用户可以运行程序、管理文件并使用系统。部分层次结构如图1-1所示。1. linux内核内核是操作系统的核心,具有很多最基本功能,它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。Linux 内核由如下几部分组成...

2018-09-18 18:48:00 128

原创 [转]linux awk命令详解

原文链接 : http://blog.chinaunix.net/uid-23302288-id-3785105.htmlawk是行处理器: 相比较屏幕处理的优点,在处理庞大文件时不会出现内存溢出或是处理缓慢的问题,通常用来格式化文本信息awk处理过程: 依次对每一行进行处理,然后输出awk命令形式:awk [-F|-f|-v] ‘BEGIN{} //{command1; com...

2018-09-18 18:47:00 59

原创 Linux常用命令

查看磁盘分区sudo fdisk -l查看磁盘容量大小df -h快速搜索在目录下面的含有关键字的文件grep -r *根据文件内容递归查找目录grep ‘energywise’ * #在当前目录搜索带'energywise'行的文件grep -r ‘energywise’ * #在当前目录及其子目录下搜索'energywise'行的文件grep -l -r ‘energy...

2018-09-18 18:46:00 80

原创 iptables

首先说一下dport和sport的概念:dport--------目的端口sport--------来源端口需要注意的是它和我们的数据包的流动行为方式有关奥,也就是看INPUT还是OUTPUT。比如iptables -A INPUT -p tcp --dport 80 -j ACCEPT 这里的是INPUT参数,因此这个代表我们的这条数据包的是进入操作,那么这里的dport地址是80...

2018-09-18 18:45:00 119

原创 bash 重定向

>重定向输出,若无该文件则新建,若有则覆盖ls -al > log : > filename清空文件:为虚拟占位符 >>重定向输出,若无该文件则新建,若有则添加进去 默认数字中,0表示标准输入(键盘),1表示标准输出(屏幕),2表示标准错误输出(屏幕) & > filename 重定向标准输出和标准错误输出到filename...

2018-09-18 18:05:00 105

原创 ARP原理过程

每个主机都会在自己的ARP缓冲区中建立一个ARP列表,以表示IP地址和MAC地址之间的对应关系。当源主机要发送数据时,首先检查ARP列表中是否有对应IP地址的目的主机的MAC地址,如果有,则直接发送数据,如果没有,就向本网段的所有主机发送ARP数据包,该数据包包括的内容有:源主机 IP地址,源主机MAC地址,目的主机的IP 地址。当本网络的所有主机收到该ARP数据包时,首先检查数据...

2018-09-18 17:31:28 318

空空如也

空空如也

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

TA关注的人

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