
网络编程
C小虫
这个作者很懒,什么都没留下…
展开
-
《UNIX网络编程》读书笔记3---IO模型与IO复用以及shutdown
这是本书最重要的内容。也是我最开始想要读本书的目的。1.I/O模型图6.6画地非常之好,所以感觉一图足以。阅读这个内容,最好是先man select,看看它的参数以及返回值的意义。I/O复用的概念就好容易了解。看了信号的内容,信号驱动式I/O就很容易理解了。主要分为两个阶段,①数据从网络到内核②数据从内核到用户进程而同步IO在②中都是阻塞的。异步IO在两个阶段都不会阻塞。原创 2015-10-16 10:20:56 · 399 阅读 · 0 评论 -
muduo库的学习6---Buffer的基本设计
1.使用应用层buffer的原因这个陈硕对应的书里面讲地很清楚,见书P205 7.4.2分为两点①为什么需要output buffer②为什么需要input buffer2.Class Bufferclass Buffer : public muduo::copyable{/*******Function Member***********///genera原创 2016-02-28 16:51:44 · 773 阅读 · 0 评论 -
muduo库的学习5---loop的基本设计---Channel细节
类似于EventLoop的分析,忽略一些次要成员。1.类定义class Channel{typedef boost::function EventCallback;typedef boost::function ReadEventCallback;/***************Function Member******************///bind with loop原创 2016-02-28 10:36:39 · 451 阅读 · 0 评论 -
muduo库的学习4---loop的基本设计---EventLoop细节
除了一些测使用的函数,返回数据成员的函数,以及标志位变量,循环变量,这里会简单描述所有其他的数据成员以及函数成员的功能。不区分public与privateclass EventLoop:{/**********Function Memeber**************/typedef boost::function Functor;EventLoop();~EventLoo原创 2016-02-27 16:39:51 · 523 阅读 · 0 评论 -
muduo库的学习3---loop基本设计---总论
这里所涉及的文件包括(1)loop用的:Callbacks,Poller,EventLoop,EventLoopThread,EventLoopThreadPool(2)IO用的:Channel(3)Timer用的:Timer,TimerQueue,TimerId1.关系图与功能可以用于libev的对比来很好滴表达(1)Poller就是实现了libev的loop循环(2原创 2016-02-25 15:33:35 · 542 阅读 · 0 评论 -
muduo库的学习2--Socket的基本设计---代码细节
1.作用封装了,像socket,connect,bind,accept,listen,read,write,close,以及一些地址转换的函数。加入了出错控制信息,并且定义的操作均为非阻塞的。并且同意控制在一个muduo::net::sockets的命名空间之下。2.细节①关于VALGRIND以及NO_ACCEPT4这两个宏,它们在C++标准库里面是没有的,我用grep -原创 2016-02-24 21:08:07 · 541 阅读 · 0 评论 -
idea+maven+jetty+jfinal环境搭建
1.环境准备(1)JDK(2)maven使用osc源(3)Intellij Idea2.步骤(1)idea新建maven---web项目(2)添加依赖 com.jfinal jfinal 2.2 com.jfinal jetty-server 8.1.8原创 2016-03-23 11:06:16 · 8238 阅读 · 1 评论 -
Libev库学习3---watcher与loop的操作
1.watcher①init(初始化)作用:将watcher与cb关联②set(设置)作用:将watcher与fd关联,并设置关注的具体事件(读,写)注:这个函数可以作为最初设置,也可以作为设置更新。③start(注册)作用:将watcher与loop关联④stop(注销)作用:将watcher与loop取消关联2.loop①run作用:原创 2016-02-27 11:07:06 · 447 阅读 · 0 评论 -
制作网页---form与input
form与input两个标签,要相互搭配才能使用好。form表单用于提交数据,这个每次提交会作为一个HTTP request提交到服务器。1.form(1)作用用于提交数据(2)属性①method决定了提交的方法是post还是get②action决定了,提交参数到某个url。目的地可能是一个方法,可能是一个静态页面。如果这个参数为空,就提交参数到本页面,原创 2016-04-04 22:31:14 · 912 阅读 · 0 评论 -
制作网页---HTML小节
这个主要是为了学习JSP,Freemarker,读懂一些代码进行的拾遗。1.常用元素段落块行内区域超链接图片表格①表格行②表格数据有序列表无序列表①列表数据表单输入元素2.常用属性①id②class3.特殊属性(1)input①type②name③value(2)form①action原创 2016-04-04 21:11:04 · 350 阅读 · 0 评论 -
JavaWeb基础---从HTTP到Servlet到Jfinal
本文主要是总结自网上的资源,为自己学习中的疑惑作为解答。参考的资料如下:HTTP部分:①HTTP必知必会②HTTP协议详解Servlet部分:Java EE 7标准:servlet3.1Jfinal部分:jfinal技术框架解析1.HTTP(1)URLURL(Uniform Resource Locator) 地址用于描述一个网络上的资源,原创 2016-03-27 20:08:19 · 2055 阅读 · 0 评论 -
muduo库的学习7---TcpServer与TcpClient的基本设计---总论
这里所涉及的新文件包括:Connector,TcpConnction,Acceptor,TcpServer,TcpClient1.程序的组织原创 2016-02-29 11:32:06 · 494 阅读 · 0 评论 -
muduo库的学习8---TcpServer与TcpClient的基本设计---TcpServer
aa原创 2016-02-29 11:33:00 · 539 阅读 · 0 评论 -
制作网页---Freemarker小节
1.什么是FreemarkerFreeMarker 是一款 模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。在模板中,你可以专注于如何展现数据, 而在模板之外可以专注于要展示什么数据。上个图即 模板+数据模型=输出2.数据类型请注意,这里讲的是数据类型而上面说的是数据模型+模板=输出原创 2016-04-27 21:20:43 · 434 阅读 · 0 评论 -
制作网页---html拾遗
1.输入一大段的文本框,需要使用控件2.有时候显示不出来,是要设置高度style="height: 100%"3.使得高度不一的两个控件在同一行对齐可以将它们一起放入同一个然后设置style="vertical-align: top"4.设置一个table各个row之间的间隔原创 2016-04-13 19:50:07 · 329 阅读 · 0 评论 -
制作网页---CSS定位
1.块级元素与行级元素这两种元素的英文分别为block element和inline element其中inline element有翻译为内联元素、行内元素,这里我为了与块级元素对应所以称它为行级元素。(1)不同①显示块级元素独占一行显示行级元素一行内并排显示②用途块级元素一般用于包含其他元素,作为容器行级元素一般用于表示语义③包含块级元素可以包含其他原创 2016-04-21 11:39:29 · 528 阅读 · 0 评论 -
制作网页---BJUI订制控件
所谓定制的控件就是说,其实它本身就是html标准里面有的控件,只是在BJUI这个库里表现出来的外观不一样。调用接口data-toggle="xxx"我这里挑选,我用到的一些列出来,方便查阅。1.单选、复选、data-toggle="icheck"2.下拉选择框data-toggle="selectpicker"3.日期选择器data-toggle="da原创 2016-04-13 20:41:19 · 2062 阅读 · 0 评论 -
制作网页---JS小节
今天,看了一下JS,最重要的部分我认为是DOM,用操作对象的方式来操作HTML或者XML里面的元素。1.注释单行//多行/* xxxxxxxxxxx */2.变量可以用var声明,也可以直接x=xxx;赋值3.数据类型(1)布尔(2)数字(3)字符串(4)数组(5)类类型4.事件与JS事件里面可以直接执行JS代码。原创 2016-04-05 22:08:13 · 345 阅读 · 0 评论 -
muduo库的学习---中间遇到的问题
本帖测试用,一旦问题全部解决,将不复存在。1.channel中有个tie方法,是用来保证持有channel对象的生命周期的但是它是如何作用的?2.TcpConnection::handleClose在这个函数中为什么要调用connectionCallback?3.在TcpConnection中有1个成员context以及若干个操作它的函数这是干什么用的?原创 2016-02-29 20:58:02 · 473 阅读 · 0 评论 -
muduo库的学习10---TcpServer与TcpClient的基本设计---TcpConnection建立与关闭
aa原创 2016-02-29 11:34:50 · 1555 阅读 · 1 评论 -
muduo库的学习9---TcpServer与TcpClient的基本设计---TcpConnection成员
TcpConnection是muduo库里面最复杂的类。其复杂性来自于TCP连接固有的复杂性,包括连接建立、连接断开、数据发送、数据接收。后面的章节会针对这4个内容详细讲解。1.类的结构class TcpConnection {/*********************Function Member***********************************原创 2016-02-29 16:39:15 · 465 阅读 · 0 评论 -
muduo库的学习11---TcpServer与TcpClient的基本设计---TcpConnection接收与发送
aaa原创 2016-02-29 11:35:43 · 396 阅读 · 0 评论 -
网络编程4---poll与epoll的区别
之前在我的文章:网络编程1---select poll epoll中总结了这3个函数的接口,但是对于epoll为什么比poll好,知之甚少。今天在网上查了一些,进行了一些总结。这篇文章总结自:①linux内核poll/select/epoll实现剖析②在Linux上开发网络服务器的一些相关细节(1)---poll与epoll其中第2篇文章在网络上流传甚广,我没有原创 2016-02-26 10:10:15 · 2334 阅读 · 0 评论 -
网络编程3---常用服务器编程模型
本文的内容主要总结自:《Linux多线程服务端编程---使用muduo C++网络库》,作者是陈硕1.单线程服务器编程模型(Reactor模型)non-blocking IO + IO multiplexing(1)基本运作方式:①event loop②event-driven③call-back(2)伪代码示意while(!done){ int ti原创 2016-02-23 21:25:03 · 640 阅读 · 0 评论 -
Libev库学习1---安装
准备看一下libev这个库,由于这个库很小,所以安装来先跑一跑。1.源码下载直接百度libev进入官网就能下载源文件具体的网址为:http://dist.schmorp.de/libev/2.库的编译解压文件,进入文件目录编译的时候需要首先切换为管理员权限#./configure#make#make install编译好后,它是被放在了/usr/原创 2016-02-22 15:55:45 · 3272 阅读 · 4 评论 -
Libev库学习2---简单的IO多路复用服务器
1.用到的库①libev使用它的对于select,epoll等等的封装来实现IO多路复用②csapp使用的是csapp书中的socket函数,以及包装函数来实现一些socket的函数2.功能server关注的事件有两个。①listenfd有连接请求到来的时候,accept,并且将建立的新的socket连接建立为监听事件,加入loop之中。②在connfd上面有信原创 2016-02-23 16:49:50 · 755 阅读 · 0 评论 -
JFinal中的ActiveRecord
由上一篇文章,JFinal在网络开发中的位置,我们知道JFinal最主要的功能,就是提供操纵数据库的方便接口了。而实现这个功能,主要通过ActiveRecord模块。以下的内容,主要总结自JFinal Mannual 2.2ActiveRecord是JFinal最核心的组成部分之一,通过ActiveRecord来操作数据库,将极大地减少代码量,及大地提升开发效率。1.配原创 2016-03-18 10:39:04 · 3601 阅读 · 0 评论 -
Jfinal中的render
jfinal中的render就是渲染的意思。可以将运行的结果,渲染为网页送给brower,也可以渲染一些静态内容。1.渲染的视图类型(1)类型①根据路径根据路径就是说它们的参数都是renderXXX(String view)这个view指出,访问该文件的具体内容。这种类型有:Freemarker、Jsp、Velocity、Xml其中前三种是配置的一种渲染方法原创 2016-03-29 16:02:09 · 14722 阅读 · 0 评论 -
JFinal在网络服务端开发中的位置
这个,直接上图。1.HTTP Server直接处理的是http请求。以前的http都是静态的访问文件,直接访问mysql即可2.Application Server提供动态的内容访问,即需要在服务器这一边运行一些java程序。这些运行在服务端的java小程序,叫做Servlet。而运行Servlet的服务器就叫做容器,容器运行Servlet,然后将动态内容转换为原创 2016-03-16 21:25:25 · 637 阅读 · 0 评论 -
《UNIX网络编程》思考1---有关socket的几个重要概念
这里想要讲的就是几个概念,以及它们之间的关系。概念:端口,进程,套接字描述符,TCP连接1.TCP连接TCP通信,是建立在TCP连接之上的。可以把这个TCP连接,看成是一个管道(我这里对于进程间通信的那个pipe管道还不清楚概念,我这里说的管道就是一般的管道的意思),信息都是从管子的一端传到另一端的。只要确定好了这个管道,通信就与其他东西无关了。那么怎么唯一确定这个原创 2015-10-15 20:34:07 · 350 阅读 · 0 评论 -
《UNIX网络编程》读书笔记2---2-5章,套接字断开2,3事
关于TCP的几种关闭的边界条件1.正常终止出自书中P102-103在连接established之后,从client程序键入Ctrl+d即EOF,client这边会有一个exit(0),而多进程server那边也会有exit(0).其实我开始感觉从这里既然在退出进程之前都没有调用close函数,而进程又退出了,最多退出了发送一个FIN,但是不可能还能回复对于FIN的A原创 2015-10-14 21:40:15 · 627 阅读 · 0 评论 -
《深入理解计算机系统》读书笔记7--- 并发编程1
CSAPP介绍了三种并发编程技术:(1)进程(2)I/O多路复用(3)线程本帖总结前面两种,第三种将留到下一贴。(1)基于进程的并发编程核心函数就是fork。用父进程不停接受socket连接,fork创建子进程,用子进程来服务每一个client。主要流程就是在echo服务器的基础上。1.server会while循环阻塞在connfd=accept()那里。每当请求到达接受后,就原创 2015-10-12 17:16:45 · 578 阅读 · 0 评论 -
muduo库的学习0---总论
恩,muduo库用的版本是v1.0.8。听说下一版本会支持C++11,感觉非常地激动。毕竟当前muduo库需要boost库的支持,而据我目前看的内容来看,所有这里需要用到的boost库的内容用C++11标准都能很方便地实现。原创 2016-02-25 09:25:23 · 308 阅读 · 0 评论 -
muduo库的学习1---socket基本设计---总论
这个部分涉及最底层的一些文件,包括Endian,SocketsOps,InetAddress,Socket这几个文件。1.基本关系与内容它们的关系我用一个图来表示如图所示,Endian是封装了各种大端---小端转换的函数,SocketsOps实现了许多例如socket的各种操作。这两个文件都是位于Sockets空间命名空间之下的,它们都是直接调用linux系统函数来实现原创 2016-02-25 13:48:28 · 480 阅读 · 0 评论 -
网络编程2---select poll epoll
其实linux自带的man是非常好的学习工具。select, poll, epoll都能直接通过man得到很详细的解释,当然具体的栗子就需要在网上找找或者看看书了。1.select#include int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *ti原创 2016-02-23 19:09:04 · 439 阅读 · 0 评论 -
网络编程1---阻塞、非阻塞、同步、异步
在UNP1中Stevens老爷子先把主要是把IO分为了两个阶段:①等待socket描述符就绪②将数据从内核复制到用户空间然后给出了5种IO模型:阻塞式IO、非阻塞式IO,IO复用、信号驱动式IO、异步IO。具体见UNP1的6.2节。但是他并没有给出阻塞IO与非阻塞IO,同步IO与异步IO的明确定义。今天看到一篇译文,感觉对IO进行了比较好的明确的说明。文章出处:http:/原创 2015-11-27 11:01:18 · 279 阅读 · 0 评论 -
《深入理解计算机系统》P652页的select程序
程序是一个server的程序,主要是使用select来IO多路复用STDIN和套接字的连接请求即listenfd。重点注意line 23-34①监听到listenfd这个时候就accept产生connfd,并且调用echo函数。echo函数的作用是,一直阻塞接收对面的消息,收到消息就echo完全一样的消息给对方。②监听到有STDIN这个时候就调用command函数。原创 2016-02-23 09:47:41 · 310 阅读 · 0 评论 -
制作网页5---注意事项2
1.网页显示中文为乱码。如果源码通过记事本改过,一定要保存为UTF8编码形式。然后httpd.conf也要设置AddDefaultCharset UTF8这样网页显示中文就没有问题了。原创 2015-10-20 20:16:03 · 343 阅读 · 0 评论 -
制作网页4---注意事项1
1.为什么百度或者网易网页跳转的时候能看到关键字比如那是因为人家采用的提交方式是GET哦。你采用POST,当然就看不见了。2.关于html里面嵌套php的问题①在html里面当然可以直接 PHP代码。。。。。。。 ?>这样嵌原创 2015-10-09 14:10:51 · 347 阅读 · 0 评论 -
制作网页3---XAMPP的配置(环境是Linux Ubuntu)
参考文章:http://www.111cn.net/sys/linux/65704.htm 用于(2)http://www.myhack58.com/Article/sort099/sort0102/2011/29494.htm 用于(1)以xampp的安装目录/lampp,下面的文件夹或者目录就是在此目录之下的了。所有的配置都在etc文件夹下面。所有的可执原创 2015-10-08 21:53:10 · 472 阅读 · 0 评论