自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 斐波那契数列相关整理(非递归)

我们在平时的做题中遇到了很多关于斐波那契数列相关的问题。当我们遇到这类问题时,根据数列的特点F(n)=F(n-1)+F(n+1)。会很容易想到递归的方法,对于数字较小的情况下,递归是没有问题的,但是当遇到数字过大的时候,处理效率就会变得非常的低。因此我们需要额外了解除了递归的一些其他的算法:1.数组方法:我们知道数组存储元素信息是连续的,刚好数组经常用来解决数列的相关问题。我们可以把数列元

2018-05-05 19:25:35 237

原创 位运算相关总结

按位与运算符(&)参加运算的两个数据,按二进制位进行“与”运算运算规则:两位同时为1结果才为1,否则为0. 负数按补码形式参加按位与运算“与运算”的特殊用途:(1)清零。如果想将一个单元清零,即使其全部二进制位为0,只要与一个各位都为0的数值相与,结果为0.(2)取一个数中指定位方法:找一个数,对应X要取的位,该数的对应位为1,其余位为0,此数与X进行“与运算”可以得到x中的指定位。 按位...

2018-04-10 19:08:54 308

转载 linux下的malloc底层剖析总结

今天在看了网上一些大神的malloc底层剖析后,自己想对其做一个总结和梳理。首先我们都知道malloc()申请内存是在堆上进行的,并且需要我们主动进行free()释放,如果不释放的话,就会产生内存泄漏的问题。而在栈区上是由编译器自动释放的,存放的是函数的参数值,局部变量等,内存分配是连续的,类似于数据结构中的栈。我们生命变量时候,编译器会自动接着栈区的结尾来分配内存。在32

2018-03-21 23:56:34 692

原创 进程虚拟地址空间

首先我们要知道为什么要使用虚拟内存呢?是因为物理内存空间有限,虚拟内存用硬盘空间做内存来弥补计算机RAM空间的缺乏。当实际RAM满时(实际上,在RAM满之前),虚拟内存就在硬盘上创建了。当物理内存用完后,虚拟内存管理器选择最近没有用过的,低优先级的内存部分写到交换文件上。这个过程对应用是隐藏的,应用把虚拟内存和实际内存看作是一样的。CPU通过MMU来管理虚拟存储器,同时

2018-03-19 19:50:10 856

原创 (读书随笔)-编译和链接知识梳理

我们在编写代码时,往往编译和运行一气呵成,但我们很少知道编译器的处理操作。例如像"hello world"程序在linux下,用GCC来编译时,只需要最简单的命令(假设源代码文件名为hello.c)gcc hllo.c./a.outhello world这看似简单的代码,过程可以分成四个步骤:预处理、编译、汇编、链接。预编译:1.将所有"#define"删除,并且展开所有宏定义

2018-03-12 20:49:23 200

原创 聊天项目引发的思索

1.socket_pair的实现方式?2.什么是I/O的同步异步,什么是网络的同步异步?3.解释什么是I/O复用?4.libevent底层实现5.如果没有I/O复用如何实现并发?6.tcp/ip协议配合json会出现什么问题?如何解决惊群现象?这里为什么使用多线程?完后什么需求、解决什么问题?为什么使用libevent,为什么使用memeached以及json?统计自己代码量,测试当前服务器最大的...

2018-03-12 16:17:44 212

原创 在linux下实现简单聊天系统(三)服务器

我们在在一个主线程进行创建监听套接字,创建线程个数个双向管道(用双向管道因为消息发送是全双工的),创建cpu内核个数-1个子线程,利用libevent监听监听套接字和双向管道的一端,接受客户端连接,为客户端选择处理消息的子线程。在子线程中,我们分别创建三个子线程来分别完成相应的功能。子线程1负责通过sock_pair双向管道进行与主线程的信息交换,用同一个套接字cli_fd可以让用户选择不同模

2018-03-12 15:38:57 1631

原创 在linux下实现简单聊天系统(二)客户端的具体实现

客户端实现的具体内容:利用多线程实现,采取输入命令的方式让用户选择服务类型,根据不同的服务类型调用不同的处理函数,完成请求,利用json和自定义的上层协议完成和服务器端的数据的交互。在登陆成功之后启动一个线程用于接受服务器端的消息。通过socket进行服务器连接,之后绑定信号处理函数,让用户选择“注册”,“登陆”,“推出”等操作。其中操作具体实现都用json包进行发送,在服务器端接收后,进行解析,...

2018-03-07 21:05:45 2008

原创 在linux下实现简单聊天系统(一)项目基本框架内容

项目主要实现的功能:注册,登陆,获取好友列表,一对一聊天,消息群发,离线消息缓存,下线。需要的工具:libevent,json,mysql,memcached开发平台:vmware基本项目思路:         客户端:利用多线程实现,采取输入命令的方式让用户选择服务类型,根据不同的服务类型调用不同的处理函数,完成请求,利用json和自定义的上层协议完成和服务器端的数据的交互。在登陆成功之后启动一...

2017-11-30 19:53:25 6523 2

空空如也

空空如也

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

TA关注的人

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