设计模式之单例模式

什么是设计模式? 设计模式代表了最佳的实践。是软件开发人员在软件开发过程中面临的一般问题的解决方法。这些解决方案是众多软件开发人员经过相当长一段时间的试验和经验错误总结出来的。 所以,设计模式是一套被反复使用的,多数人知晓、经过分类编目的、代码设计经验的总结。 什么是单例模式? 单例...

2018-09-04 12:04:42

阅读数 29

评论数 0

HTTP服务器(三)

下面实现处理动态页面的逻辑: 创建一对命名管道,fork创建子进程;让父子进程执行不同的任务 值得注意的是,由于管道数据流动是单向的,所以要创建一对;父进程将必要的信息通过管道传递给子进程,子进程将计算的结果通过管道传递给父进程。 int HanndlerCGI(int sock, ...

2018-08-23 16:41:17

阅读数 49

评论数 0

HTTP服务器(二)

前面已经实现了服务器的整体框架,现在就来具体实现HTTP服务器处理静态页面的逻辑。 要获取具体的静态文件,就要知道要获取的文件的路径。我们分析url: 协议方案名:使用http:或https:等协议方案名获取访问资源时要指定的协议类型 登录信息:用户名和密码作为从服务器端获取的必要登录...

2018-08-23 15:07:46

阅读数 52

评论数 0

HTTP服务器实现(一)

实现一个HTTP服务器就是实现一个程序可以接受客户端发送给服务器进程的请求消息,通过解析这些请求消息,做出相应的响应。下面我们先来梳理一下整体的思路: 进行服务器的初始化: int init_server(char* ip, int port) { int sock = s...

2018-08-22 16:37:32

阅读数 339

评论数 0

Python爬虫之爬取CSDN人工智能栏目的文章

在进行正式开始爬虫之旅前,我们要认识几个Python库: urllib2:Python标准库,该库中提供了一系列针对url的操作方法 re:Python标准库,提供了一系列针对字符串匹配的方法 BeautifulSoup4:最主要的功能是从网页抓取数据(可以通过pip install Bea...

2018-08-18 16:25:43

阅读数 318

评论数 1

NAT技术

我们知道,IPv4协议中,IP地址的数量并不能够满足我们现在的需要。除了通过子网掩码划分子网的方式可以一定程度解决这个问题外,还有一个方法——NAT技术。 NAT技术是当前解决IP地址不够用的主要手段,是路由器的一个重要功能。NAT能够将私有IP转化为对外通信时的全局IP,很多学校、家庭、公司内...

2018-08-14 18:23:11

阅读数 64

评论数 0

DNS与域名解析

DNS是一整套从域名映射到IP的系统。 TCP/IP中使用IP地址和端口号来确定网络上的一台主机的一个程序,但是IP地址不方便记忆。于是人们用一个字符串来表示这个IP地址,这个字符串就叫做主机名。并且使用一个host文件来描述主机名和IP地址的关系。 最初,通过互联网信息中心来管理这个host...

2018-08-13 17:16:50

阅读数 59

评论数 0

数据链路层——以太网与ARP协议

1 以太网 以太网不是一种具体的网络,而是一种技术标准;既包含了数据链路层的内容,也包含了一些物理层的内容,例如:规定了网络拓扑结构、访问控制方式、传输速率等。例如以太网中的网线必须使用双绞线;传输速率有10M、100M、1000M等。以太网是当前应用最广泛的局域网技术,和以太网并列的还有令牌环...

2018-08-13 11:47:13

阅读数 334

评论数 0

网络层——IP协议

网络层的主要功能是寻找一条合适的路径。 1 IP协议 1.1 基本概念 主机:配有IP地址,但不进行路由控制的设备; 路由器:即配有IP地址,又可以进行路由控制的设备; 节点:主机和路由器的统称。 1.2 IP协议的结构 服务类型:3位优先权字段(已弃用);4位TOS字段:分别表示...

2018-08-11 17:07:19

阅读数 37

评论数 0

认识传输层(UDP与TCP)

传输层主要负责数据能够从发送端发送到接收端。要正确传输就要明确发送端和接收端,这时候IP地址和端口号一起就可以确定一端了。那么他们是怎么唯一标识的呢? 1 端口号(port)     端口号唯一标识一个主机上进行通信的不同应用程序。     在TCP/IP协议中,采用源IP地址、目的IP地址...

2018-08-11 12:11:31

阅读数 319

评论数 0

HTTP协议(应用层协议)

1 协议       我们都知道,协议是一种约定,我们规定好一种信息的格式,如果发送方按照这种请求格式发送信息,那么接收端就要按照这样的格式解析数据。这就是协议。       应用层协议,一方面包含客户端和服务器端需要进行交互的信息,一方面包含如何组织(序列化)以及如何解析信息(反序列化)。 ...

2018-08-09 15:48:10

阅读数 982

评论数 0

TCP协议通讯流程——三次握手四次挥手

TCP协议通讯流程(如图)   1 服务器的初始化(服务器端) 调用socket,创建文件描述符 调用bind,将当前文件描述符与IP地址跟端口号绑定在一起;如果该端口号已经被其它进程占用了,就会bind失败 调用listen, 声明当前文件描述符为服务器的文件描述符 调动acc...

2018-07-26 13:00:12

阅读数 55

评论数 0

网络编程套接字

1 IP地址 1.1 IP地址的基本理解 IP协议有两个版本,IPv4 和IPv6,我们这里使用IPv4。 IPv4有4个字节,32位来表示 IP地址四IP协议中用来标识网络中不同主机的地址 我们通常使用点分十进制标识IP地址,如192.168.1.0 1.2 源IP地址和目的IP...

2018-07-26 09:51:26

阅读数 35

评论数 0

网络传输的基本流程

1 网络传输的进本流程 同一网段内两台主机进行文件传输,文件传输的流程: 2 理解封装和分用 不同协议对数据报有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报(datagram),在链路层叫做帧(frame); 应用层数据通过协议栈发到网络上,每层协议都要加上一个数据...

2018-07-25 17:01:53

阅读数 314

评论数 0

OSI七层模型与TCP/IP五层模型

1 OSI(open system interconnection)七层模型 OSI模型为开放式系统互联参考模型,是一个逻辑上的定义和规范; 把网络从逻辑上划分为了7层,每一层都有相应的物理设备; OSI模型是一种框架性的设计方法,其主要功能是帮助不同类型的主机进行数据传输; 它最大的优点...

2018-07-25 15:19:14

阅读数 63

评论数 0

多线程的同步与互斥——读者写者模型

在读者写者模型中,同样有“一二三”,一个交易场所,两种角色,三种关系。 在读者写着模型中,读者与读者之间是共享的关系,因为并没有改变资源,所以不需要互斥;写者与写者之间是互斥的关系;读者与写者之间是同步与互斥的关系。 那么如何实现这么复杂的关系呢? 读写锁可以帮助我们进行完成以上同步与互...

2018-07-23 16:37:51

阅读数 172

评论数 0

多线程的同步与互斥---生产者与消费者模型

生产者与消费者模型是多线程同步与互斥应用的一个典型场景,在这个模型中我们要实现: 一个交易场所; 两种角色(一个是生产者,一个是消费者); 三种关系(互斥,同步,同步与互斥)。 值得注意的是,消费者与消费者,生产者与生产者之间都是互斥的关系;而生产者与消费者之间是同步与互斥的关系。说到这里...

2018-07-23 16:13:52

阅读数 175

评论数 0

Linux多线程

一、什么是线程 什么是线程?         线程是进程中一个单一顺序的执行流。我们可以假设这样一个场景,有100道数学题,我做完一道数学题需要1分钟,做完100道需要100分钟;如果我有两个脑袋,其中一个脑袋做前50个题,另外一个脑袋做后50个题,这样我就可以省下一半的时...一个进程 中...

2018-07-19 15:34:20

阅读数 46

评论数 0

找出字符串中第一个只出现一次的字符

题目:找出字符串中第一个只出现一次的字符输入描述:输入一个非空字符串输出描述:输出第一个只出现一次的字符,如果不存在输出-1示例1输入asdfasdfo 输出o解题思路:和找出一个数组中只出现一次的数字方法类似,都是利用哈希表的思想来统计每个字符或数字出现的次数。然后在进行遍历,以返回只出现一次的...

2018-07-11 16:49:05

阅读数 50

评论数 0

数组中出现次数超过一半的数字

题目:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。解题思路:要求出数组中出现超过一般的数字,也就意味着要统计每个数字出现的次数。可以...

2018-07-11 16:25:41

阅读数 30

评论数 0

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