• hlang(一个小语言解释器)

    一个自制小语言的解释器,纯c++11完成,内置测试文件,

    0
    199
    35KB
    2018-02-22
    12
  • 自制编程语言

    从yacc lex 开始教你制作两门语言,一门解释执行一门在虚拟机上执行,简单易懂,看不懂龙书先看这个

    0
    0
    53.64MB
    2016-02-28
    10
  • 黑客与画家.txt

    黑客与画家.txt方便手机看,讲述了作者从创业到被收购的故事以及其间心得,介绍了很多关于lisp的知识

    5
    0
    359KB
    2016-02-28
    7
  • 事件驱动多线程网络框架

    基于事件驱动的网络框架源码 首先看一下Server类,这个类就是整个框架的核心类,在这个类中只需要 s=new Server(8883,4); s->setUserConnectionCallback(onConnect); s->setUserMessageCallBack(onMessage); s->start(); 就可以启动一个4个线程在8883端口监听的完整的网络程序,其中的两个onXXX就是网络程序需要处理的业务 Server类中包括了有一个重要的类叫做Eventlooper这个类就是对epoll的封装,要用epoll_ctl注册到epoll上的fd又被封装为Channel类,当有数据到来需要操作时,channel中的几个函数指针就指向了需要回调的函数, 这里使用了boost库的function 其中的函数定义为: typedef boost::function EventCallBack; 在epoll返回的时候Eventlooper会遍历可以操作的所有channel,并调用其成员函数handleEvent,该函数会判断events,也就是EPOLLIN EPOLLPRI等,并更具相应的需要去调用处理函数。 这里的Channel并不直接使用而是做基类存在的,更直接的操作在Acceptor和TcpConnection中,其中的 Acceptor 对应了接受连接的socketfd,而TcpConnection则封装了socket的读写操作,在Server的构造函数中会创建一个Acceptor类,真正accept成功以后又会调用到Server的OnConnection函数中,这个函数会根据每个线程的负载将客服端连接的fd注册进相应线程的epoll(当然在单线程的情况下就只有一个epoll)。最后一个作为缓冲区的类charbuff,用链表将单个7KB的缓冲区穿在一起,当数据大于7kb的时候会自动将其释放,避免内存不足,如果数据的块数多余一块那么发送数据就会调用writev。至此整个框架的流程就都已经清楚了,一个简单的实现。 在此还要感谢一下linux多线程网络服务器编程的作者陈硕,CINF的实现部分就是参考其网络框架muduo来的。

    3
    205
    24KB
    2013-10-10
    9
  • 写给新手看的链表

    自己瞎的链表用C 模仿来C++的实现乱搞的应付下

    0
    61
    7KB
    2011-11-18
    3
  • 虚拟光驱的实现(源代码下载)

    虚拟光驱源代码--操作系统实验,此代码用C实现了虚拟光驱,通过编译测试

    4
    102
    132KB
    2011-05-04
    10
关注 私信
上传资源赚积分or赚钱