位运算实现简单算数运算

1.用位运算实现加法int Add(int a, int b) { if(b == 0) return a; int sum = 0; int carry = 0; sum = a^b; carry = (a&b)<<1;...

2017-08-10 21:40:03

阅读数 299

评论数 0

秋招面试——持续更新

CVTE(提前批一面) 日期:8月8日 时间:38分钟 形式:一对一 结果:pass 内容: (1)自我介绍 (2)说一下聊天项目的整个过程 (3)MVC模式是怎样实现的? (4)libevent库底层的IO复用机制 (5)TCP粘包问题 (6)邮箱验证码的暴力破解问题怎么解...

2017-08-10 15:30:00

阅读数 779

评论数 0

为什么epoll比select更高效?

1.select和epoll有什么不同? <1>**select可以监听文件描述符是有限的**,由FD_SETSIZE设置,默认是1024,可以通过修改这个宏来增加可监听文件描述符的个数,但资料同时指出这样修改将导致不可预期的效果。 **epoll可监听的文件描述符的个数为进程可...

2017-08-04 15:57:25

阅读数 2143

评论数 0

select源码剖析

select只有一个系统调用 select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *expectfds, struct timeval *timeout);nfds指定被监听文件描述符的总数,一般为socket监听的所有文件描述符...

2017-08-04 13:52:47

阅读数 340

评论数 0

epoll源码剖析

epoll的实现主要依赖于一个文件系统eventpoll。 epoll使用中有三个重要的函数:epoll_create(), epoll_ctl(), epoll_wait epoll有四个重要的数据结构:struct eventpoll, struct epitem,struct epoll...

2017-08-02 22:35:10

阅读数 535

评论数 0

fork源码剖析

大家一定听过这样一段话: 调用fork(),创建子进程; 调用pthread_create()创建子线程; 如果你要创建一个立刻执行exec()函数的进程,就使用vfork()。说法没有错误,在我平时编写多进程/多线程项目时的确是这样使用的。那请问:为什么?它们有什么区别?既然在Linux系...

2017-07-29 22:31:34

阅读数 452

评论数 0

系统调用

系统调用(system call)是内核提供给应用程序的一系列函数接口。系统调用将应用程序的请求通知内核,调用相应的内核函数处理请求,处理完成后,将处理结果返回给应用程序,user space 只能通过系统调用来访问kernel提供的函数。 中断有两个重要的属性,中断号和中断处理程序。中断号用来...

2017-07-28 13:04:26

阅读数 334

评论数 2

Nginx解决惊群现象

惊群现象:所有的工作进程都在等待一个socket,当socket客户端连接时,所有工作线程都被唤醒,但最终有且仅有一个工作线程去处理该连接,其他进程又要进入睡眠状态。 Nginx通过控制争抢处理socket的进程数量和抢占ngx_accept_mutex_held锁解决惊群现象。只有一个ngx_...

2017-07-27 21:02:25

阅读数 311

评论数 0

设计模式——单例模式

你肯定被面过这样一个问题:C++中如何实现一个类只能实例化一个对象? 单例模式可以保证一个类只能实例化一个对象!单例模式的核心数据结构中只包含一个被称为单例的特殊类。 防止用户随意的调用构造函数,将类的构造函数写成私有的,给用户提供返回对象的方法,在调用时不能依赖对象。 版本一: 懒加载(不...

2017-07-27 18:48:17

阅读数 277

评论数 0

socketAPI

1.创建套接字 ``` #include <sys/types.h> #include <sys/socket.h> int sockfd = socket(int demain, int type, int protocal); ``` domain参数告诉系统使用哪个...

2017-07-27 16:54:51

阅读数 209

评论数 0

TCP/IP——传输层

本文章通过对以下几个问题的解答,增加对传输层的理解。 1.传输层的作用是什么? 答:传输层作为底层数据的最高层,应用程序的最底层,要保证为两个应用程序提供无差错的端到端的通信。 2.传输层如何区别不同应用程序之间的数据? 答:传输层对TCP报文经行分装或解析,在TCP报头中,有16位的源端...

2017-07-27 13:25:06

阅读数 458

评论数 0

拥塞控制

1.拥塞控制:提高网络利用率、降低丢包率、保证网络资源对每条数据流的公平性。2.拥塞控制的方法: <1>慢启动 TCP连接建立好后,拥塞窗口CWND被设置成初始值IW,此时,发送端酶促最多发送IW字节的数据。此后,发送端每接收到一个接收端的确认,就将CWND+1,CWND呈指数形式...

2017-07-26 00:18:06

阅读数 279

评论数 2

TCP常见面试题

1.画出TCP的报头 2.说一下TCP的三次握手过程3.为什么TCP握手需要三次?TCP是可靠的传输控制协议,三次握手能保证数据可靠传输又能提高传输效率。如果TCP的握手是两次: <1>如果client发给server的SYN报文因为网络原因,延迟发送。由于client没有收到se...

2017-07-25 21:51:32

阅读数 11523

评论数 0

运输层协议——TCP

1.TCP和UDP是传输层两个重要的协议。 TCP提供面向连接、可靠的字节流服务。使用TCP协议的两端必须先建立连接,才能开始数据的读写,双方必须都为连接分配必要的数据结构。TCP有发送缓冲区和接收缓冲区,TCP模块发出的数据报的个数和应用程序执行的写操作次数之间没有固定的关系。TCP的连接是全...

2017-07-25 20:29:12

阅读数 772

评论数 0

IP协议

1.IP协议是网络层的协议,为上层提供无状态、无连接、不可靠的服务。 无状态:IP通信双方不同步传输数据的状态信息,IP数据报的发送、传输、接收都是独立的。 无连接:IP通信双方都不长久地维持对方地任何信息。上层协议每次发送数据的时候,都必须明确对方的IP地址。 不可靠:IP协议不能保证IP...

2017-07-25 14:30:12

阅读数 207

评论数 0

网络基本知识

1.OSI七层协议模型 2.TCP/IP四层协议模型 3.TCP/IP四层协议模型,各层常用的协议。 应用层:HTTP/DNS/SMTP/POP3传输层:TCP/UDP网络层:IP/ICMP数据链路层:ARP/RARP各层协议会对上层的数据包加上自己的报头信息,再发给下一层。解析时,各层对收...

2017-07-25 13:06:16

阅读数 1637

评论数 0

死锁

1.死锁 (1)死锁:一组进程中的每个进程都在等待某个事件,而只有这组进程中的其他被阻塞的进程才可以触发该事件,这是就称这组进程发生死锁。死锁是永久性的。 (2)可重用资源:不会因为使用而被耗尽和消耗的资源。如I/O通道或一块内存 (3)可消耗资源:当被一个进程获取时就消耗了的资源。如缓冲区...

2017-07-21 22:30:24

阅读数 239

评论数 0

Linux基础总结

1.linux版本 内核版本 1991,芬兰大学生 www.kernel.org 发行版本 公司对内核版本进行软件/操作集成,更方便使用 选最稳定的版本2.linux基本命令 目录: cd 切换目录 pwd 显示当前路径 mkdir 创建目录 rmdir 删除...

2017-07-21 16:58:45

阅读数 408

评论数 2

排序、树和图

本文章只对解释基本知识,数据结构的代码以后的文章会着重总结1.排序 <1>插入排序 稳定 基本思想:每次从待排序列中找到最小的,插入到已排序好的对列中。 时间复杂度:O(n^2) 空间复杂度:O(1) 特点:完全有序时,时间复杂度为O(n)<2>希尔排序 不...

2017-07-20 01:05:28

阅读数 424

评论数 0

进程与线程

1.进程和线程 进程是伴随着操作系统被提出的,随着计算机技术的发展,进程暴露出一些弊端。一是,**进程是资源分配的单位,创建、切换等过程中的时空开销较大**,因此需要引进轻量级进程;二是由于多对称处理机(SMP)出现,可以满足多个运行单位,但是**多个进程并行运行的开销过大**。因此,线程作为能...

2017-07-19 16:40:29

阅读数 241

评论数 1

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