03 2017 档案

摘要:1 简介 之前学习了执行I/O操作的基本函数,主要是围绕普通文件I/O的打开、读或写。下面继续学习Unix文件系统的其他特征和文件的基本性质。我们将从stat函数开始,了解stat结构所代表的文件属性,了解Unix文件系统的结构和符号链接,最后学习对目录进行操作的各个函数。 2 stat、fstat 阅读全文
posted @ 2017-03-31 16:39 糖炒栗子Sugar 阅读(156) 评论(0) 推荐(0)
摘要:1 Linux下Git和GitHub环境的搭建 2 利用Git从本地上传到GitHub 3 从GitHub克隆项目到本地 4 GitHub的分支管理 创建分支 删除分支 5 常见错误 如果出现报错为ERROR: Repository not found.fatal: The remote end h 阅读全文
posted @ 2017-03-29 17:02 糖炒栗子Sugar 阅读(3363) 评论(1) 推荐(0)
摘要:一、简介 Boost Asio ( asynchronous input and output)关注数据的异步输入输出。Boost Asio 库提供了平台无关性的异步数据处理能力(当然它也支持同步数据处理)。一般的数据传输过程需要通过函数的返回值来判断数据传输是否成功,而Boost Asio将数据传 阅读全文
posted @ 2017-03-24 11:39 糖炒栗子Sugar 阅读(357) 评论(0) 推荐(0)
摘要:1 概述 之间的学习中发现,传统的阻塞式系统调用不仅浪费进程运行时间,而且会带来狠毒问题。因此进程需要有一种预先告知内核的能力,使得内核一旦发现进程指定的一个或者多个I/O条件就绪,它就通知进程。这个能力称为I/O复用,是由select和poll函数支持的。 I/O复用的典型使用场景: 当客户处理多 阅读全文
posted @ 2017-03-22 14:37 糖炒栗子Sugar 阅读(342) 评论(0) 推荐(0)
摘要:1 概述 TCP和UDP网络编程存在一些本质的差异,主要是由于传输层的差别:UDP是无连接的不可靠的数据报协议,而TCP是面向连接的字节流协议。 下图是典型的UDP客户端和服务器之间的通信流程。客户不与服务器建立连接,而是只管使用sendto函数。服务器不接受来自客户的连接,而是只管调用recvfr 阅读全文
posted @ 2017-03-22 14:37 糖炒栗子Sugar 阅读(541) 评论(0) 推荐(0)
摘要:相对于C语言,C++增加了重载(overload)、内联(inline)、const和virtual四种新机制。 1 重载 只能靠参数列表而不能紧靠返回值类型的不同来区分重载函数。编译器根据参数列表为每个参数产生不同的内部标识符。由于编译后的名字不同,C++程序不能直接调用编译后的C函数。C++提供 阅读全文
posted @ 2017-03-21 10:32 糖炒栗子Sugar 阅读(436) 评论(0) 推荐(0)
摘要:1 引言 本章首先讨论Unix系统中大多数文件I/O最常用的5个系统函数:open、read、write、lseek以及close。 本章所说明的函数又被成为不带缓冲的I/O,不带缓冲是指每个read和write都调用内核中的一个系统调用。 接着讨论原子操作的概念,只要涉及到多个进程之间共享资源,原 阅读全文
posted @ 2017-03-20 17:03 糖炒栗子Sugar 阅读(205) 评论(0) 推荐(0)
摘要:HTTP 简介 HTTP协议(HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广泛的一种网络传输协议,所有的WWW文件都必须遵守这个标准。HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。 HTTP 工作原理 HT 阅读全文
posted @ 2017-03-19 20:52 糖炒栗子Sugar 阅读(1005) 评论(0) 推荐(0)
摘要:1 概述 编写一个简单的ECHO(回复)程序来分析TCP客户和服务器之间的通信流程,要求如下: 客户从标准输入读入一行文本,并发送给服务器 服务器从网络输入读取这个文本,并回复给客户 客户从网络输入读取这个回复,并显示在标准输出上 通过这样一个简单的例子来学习TCP协议的基本流程,同时探讨在实际过程 阅读全文
posted @ 2017-03-18 15:11 糖炒栗子Sugar 阅读(2642) 评论(0) 推荐(0)
摘要:1 OSI,TCP/IP,五层协议的体系结构,以及各层协议 OSI分层 (7层):物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。TCP/IP分层(4层):网络接口层、 网际层、运输层、 应用层。五层协议 (5层):物理层、数据链路层、网络层、运输层、 应用层。 每一层的协议如下:物理层 阅读全文
posted @ 2017-03-16 14:38 糖炒栗子Sugar 阅读(310) 评论(0) 推荐(0)
摘要:static关键字至少有下列几个作用: const关键字至少有下列几个作用: 阅读全文
posted @ 2017-03-16 14:00 糖炒栗子Sugar 阅读(314) 评论(0) 推荐(0)
摘要:TCP协议是一个复杂的、可靠的字节流协议.不通用UDP协议。 TCP提供客户与服务器之间的连接。TCP客户先与给定的服务器建立一个连接,再跨该连接与服务器交换数据,最后终止这个连接。 TCP提供了可靠性。 TCP动态估算客户与服务器之间的往返时间(RTT)。 TCP通过对序列号对发送的数据进行排序。 阅读全文
posted @ 2017-03-16 10:00 糖炒栗子Sugar 阅读(281) 评论(0) 推荐(0)
摘要:1 套接字地址结构 大多数套接字函数都需要一个指向套接字地址结构的指针作为参数。每个协议族都定义了自己的套接字结构。这些套接字的结构以sockaddr_开头,以每个协议族唯一的后缀名结尾。 1.1 IPV4套接字地址结构 IPV4套接字结构通常被称为网际套接字结构,以sockaddr_in命名,定义 阅读全文
posted @ 2017-03-15 15:03 糖炒栗子Sugar 阅读(416) 评论(0) 推荐(0)
摘要:1 内存分配方式 内存分配方式有如下三种: 一般的原则是:如果使用堆栈和静态存储就能够满足应用需求,就不要使用动态存储。因为,在堆上动态分配内存需要很多额外开销。 2 常见的内存错误及其对策 使用free()或者delete释放了内存之后,没有把指针设置为NULL,产生“野指针”。 函数return 阅读全文
posted @ 2017-03-05 15:11 糖炒栗子Sugar 阅读(385) 评论(0) 推荐(1)
摘要:1 管道 管道一般是一种半双工的进程间通信方式,只能够在具有公共祖先的进程之间使用,比如一个管道由一个进程创建,然后该进程调用fork,之后父、子进程就可以使用该管道。 管道是调用pipe函数创建的。 调用fork之后做什么取决于想要数据流的方向。对于从父进程到子进程的管道,父进程关闭fd[0],子 阅读全文
posted @ 2017-03-03 16:30 糖炒栗子Sugar 阅读(205) 评论(0) 推荐(0)
摘要:整理了一下Hash表相关内容,如下:Hash 表是使用 O(1) 时间进行数据的插入删除和查找的表,但是 hash 表不保证表中数据的有序性,这样在 hash 表中查找最大数据或者最小数据的时间是 O(N) 。 1 寻址和 hash 函数 理想状态下 hash 足够大,每一数据保存在一个 hash 阅读全文
posted @ 2017-03-03 09:43 糖炒栗子Sugar 阅读(259) 评论(0) 推荐(0)
摘要:1 概念 线程是程序执行流的最小单元。线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。由于线程之间的相互 阅读全文
posted @ 2017-03-02 21:29 糖炒栗子Sugar 阅读(277) 评论(0) 推荐(0)
摘要:1 对象的概念 面向对象(Object Oriented Analysis Design,OOAD)的思想把整个世界看成是由具有某种特征行为功能的基本单元——对象构成的。OOAD把一个对象的特征称为属性,把其行为称为一种方法。一个对象,可以接受外部信息,也可以向外部提供某种服务,我们可以将参数传递给 阅读全文
posted @ 2017-03-02 14:29 糖炒栗子Sugar 阅读(3990) 评论(0) 推荐(0)
摘要:多态(polymorphism)在C++中可以简单地概括为“通用一个接口,实现多种方法”,它是面向对象编程领域的核心概念,只有程序在运行时才决定调用对应的函数。 C++多态性是通过虚函数来实现的,虚函数允许子类重新定义成员函数,而子类重新定义父类的做法称为覆盖(override),或者称为重写。重写 阅读全文
posted @ 2017-03-02 14:23 糖炒栗子Sugar 阅读(192) 评论(0) 推荐(0)
摘要:1 信号传递过程 当引发信号的事件发生时(如软硬件异常、软件定时、终端产生信号或调用kill函数等等),会产生信号,内核会发送给目标进程。 在信号产生到信号传递给目标进程之间的时间间隔内,称该信号为未决的(pending)。 进程可以对信号进行阻塞操作。若进程选择了对一个信号进行阻塞,并且对该信号的 阅读全文
posted @ 2017-03-02 13:37 糖炒栗子Sugar 阅读(349) 评论(0) 推荐(0)
摘要:vim中设置自动在=+-之类的运算符号左右两边加上空格。原版的vim不带这个功能,写出的代码例如z=x+y,不美观,很多编译器(如VS)能够自动在符号两边加上空格,如z = x + y,看起来比较美观。 只要在.vimrc里面加入如下代码: 就可以了。另外还可以加入如下代码,增加vim的便利性: 阅读全文
posted @ 2017-03-02 11:52 糖炒栗子Sugar 阅读(2100) 评论(0) 推荐(0)
摘要:网上下载的漫画是jpg或png之类的图片文件,用系统自带的图片管理器看不方便,想要能把图片想网页一样浏览的功能,找了很多图片管理器也没有带这个功能,于是就自己编写了一个小程序实现。思想就是在图片目录添加一个html文件,里面包含所有漫画图片,就可以使用浏览器观看,效果比在电脑上直接打开浏览好多了。主 阅读全文
posted @ 2017-03-02 11:46 糖炒栗子Sugar 阅读(529) 评论(0) 推荐(0)
摘要:之前一直用的CSDN的博客,网站卡慢经常出问题,发布文章要审核,连修改几个标点符号也要审核,这些我都忍了,毕竟之前发的文章舍不得弃掉。 现在竟然无故封禁我的博客?请问我写的都是技术文章,有哪点违反规定了? 网站十分霸道,不给任何理由,就丢了一个客服邮箱,一副有事自己来找我的态度。 目前正在申请解封, 阅读全文
posted @ 2017-03-02 10:09 糖炒栗子Sugar 阅读(293) 评论(0) 推荐(2)