自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 资源 (2)
  • 问答 (1)
  • 收藏
  • 关注

原创 大话设计模式之备忘录模式

备忘录模式 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象回复到原先保存的状态      Originator可根据需要决定Memento存储Originator的哪些内部状态Memento有两个接口,Caretaker只能访问到备忘录的窄接口,它只能将备忘录传递给其他对象。Originator能看到一个宽接口,允许他访

2015-04-27 21:46:02 412

原创 tcp/ip ---------- 动态选路

在满足以下条件的网络中A、网络很小B、与其他网络只有单个连接点且C、没有多于路由时采用1、  在配置接口时,以默认方式生成路由表项,并用route命令增加表项2、  通过ICMP重定向生成表项是可行的。然而若A、B、C不能全满足的话,通常使用动态选路。  动态选路         当相邻路由器之间进行通信,以告知对方每个路由器当前所连接的网络,这时候就出

2015-04-27 21:39:07 399

原创 大小端问题

为什么要判断大小端:         因为在计算机中,我们是以字节为单位的,每个地址单元对应着一个字节,一个字节8bit。在编程语言中,除了1字节的char还有几个字节的int, short等数据类型,既然不止一个字节,那么就存在如何将多个字节排序的问题,由此就导致了大小端模式。 大小端区别:         大端字节是指在一个整数的高位字节(23-31 bit)存储在内存的低地址

2015-04-26 23:03:41 573

原创 IP选项初识

IPv4允许在20字节首部固定部分之后跟以最多40个字节的选项,最常用的是源路径选项。这些选项的访问途径是存取IP_OPTIONS套接字选项。IPv6允许在固定长度的40字节IPv6首部和传输层(ICMPv6、TCP或UDP)首部之间出现扩展首部。 不同于IPv4的是,IPv6的扩展首部的访问途径是函数接口。IPv4选项:    根据下图IPv4首部格式,发现IPv4选项字段跟在2

2015-04-26 20:59:08 2836

原创 tcp/ip --------- IP选路

选路是IP最重要的功能之一。需要进行选路的数据报可以由本地主机产生,也可以由其他主机产生。(不过,后一种情况下,主机必须配置成路由器,否则通过网络接口接收到的数据报,如果目的地址不是本机就会被悄无声息的丢弃掉)         本章主要目的是了解单个IP层如何做出路由决策。          如图是IP层处理过程的简单流程                             

2015-04-26 11:29:11 534

原创 大话设计模式之适配器模式

适配器模式    将一个类的接口转换成用户希望的另一个接口。Adapter模式使原本由于接口不兼容而不能一起工作的那些类可以一起工作。     当我们发现系统的数据和行为都正确,但接口不符合时,我们应该考虑用适配器,目的使控制范围之外的一个原有对象与某个接口匹配。适配器模式主要应用于希望复用一些现存的类,但是接口又与复用环境要求不一致的情况。  //这是客户所期待的接口

2015-04-26 10:06:56 445

原创 大话设计模式之状态模式

状态模式    当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类 abstractclass State{ public abstract void Handler(Context context);}; class ConcretStateA :State{ public override void Handler(Context

2015-04-25 09:57:57 1040

原创 套接字选项SO_LINGER, SO_KEEPALIVE等

int getsockopt(int sockfd, int level, intoptname, void *optval, socklen_t *optlen);int setsockopt(int sockfd, int level, intoptname, const void *optval, socklen_t optlen);//获取与设置套接字选项的函数通用套接字选项:

2015-04-21 17:23:36 2789

原创 tcp/ip ---------- traceroute

Ping通过发送ICMP回显请求和应答报文来完成,traceroute通过发送UDP报文的TTL和判断对方回复的ICMP报文来完成 Traceroute程序可以让我们看到IP数据报从一台主机传到另一台主机所经过的路由,还可以使用IP路由选项  在Ping程序中,我们描述了IP记录路由选项(RR)。为什么我们不使用这个选项,仍然要开发一个这个应用程序呢?1、  首先,原先并不

2015-04-20 20:03:44 1329

原创 服务器设计范式(二)

4、TCP预先派生子进程服务器程序,accept使用文件上锁保护为什么我们要给accept上锁呢?因为不同的系统实现。    书中提到,没加锁的程序在4.4BSD上运行,实现允许多个进程在引用同一套接字的描述符上调用accept,然而这种做法也仅仅适用于在内核中实现的源自伯里克内核。相反,System V不支持这么做。在某些不支持的系统上运行不加锁的程服务器时,某个子进程accept会返回

2015-04-20 17:02:26 458

原创 大话设计模式之抽象工厂模式

提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类 在文章一开始,作者提出针对相同的程序采用不同的数据库,从而采用工厂模式。以下结构图为对User表和Department表采用的sqlserver和access的不同的具体实现,然后提取到各自的Factory类中去。               using System;usingSystem.Coll

2015-04-20 11:42:58 506

原创 大话设计模式之观察者模式

观察者模式    该模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使他们能自动更新自己。  //Subject类,可翻译为主题或者抽象通知类,一般用一个抽象类或一个接口实现。//它把所有对观察者对象的引用保存在一个聚集里,每个主题都可以有任何数量的观察者。抽象主题提供一个接口,可以增加和删除观察者对

2015-04-19 18:55:52 427

原创 Unix域套接字

Unxi域套接字并不是一个实际的协议族,而是在单个主机上执行客户/服务器通信的一种方法,所用API就是在不同主机上执行客户/服务器通信所用的API。可以视为IPC方法之一。UNix域提供两类套接字:字节流套接字(类似TCP),数据报套接字(类似UDP)使用Unix域套接字有以下三个理由:    1、Unix域套接字往往比通信两端位于同一主机的TCP套接字快出一倍。X Window

2015-04-19 18:05:56 2565

转载 Linux修改ip ,网关

A、修改ip地址 即时生效: # ifconfig eth0 192.168.0.20 netmask 255.255.255.0 启动生效: 修改/etc/sysconfig/network-s/ifcfg-eth0 B、修改default gateway 即时生效: # route

2015-04-18 10:50:30 806

原创 服务器设计范式

我们将在本章探究并发服务器程序设计的两类变体1、预先派生子进程,让服务器在启动阶段调用fork创建一个子进程池,每个客户请求由当前可用的子进程池中的某个(闲置)子进程处理2、预先创建线程,让服务器在启动阶段创建一个线程池,每个客户由当前可用线程池中的某个(闲置)线程处理我们将针对同一客户端程序运行这些服务器以便相互比较客户端程序代码如下:#include "unp.

2015-04-16 18:39:16 598

原创 tcp/ip ---------- ping程序

Ping程序的目的是为了测试另一台主机是否可达。该程序发送一份ICMP回显请求报文给主机,并等待返回ICMP回显应答         一般而言,若不能ping到某台主机,那么就不能telnet或FTP到那台主机。反过来,如果不能Telnet到某台主机,那么通常可以用Ping来确认问题出在哪里         Ping还能测出往返时间。          但是,好多好多年前我们还可以

2015-04-15 11:13:46 750

原创 大话设计模式之外观模式

为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这一接口使得这一子系统更加容易使用   //几个子系统的类classSubSystem1{ public void Method1() { //... }}; classSubSystem2{ p

2015-04-14 16:39:07 420

原创 ICMP:Internet控制报文协议

ICMP报文通常被IP层或更高层使用:  ICMP报文:         所有报文的前4个字节都一样,但剩下的字节则互不相同ICMP类型         不同的类型由报文中的类型字段和代码字段来共同决定          ICMP分为查询报文和差错报文,因为对ICMP差错报文要进行特殊处理。                   例如在对差错报文进行响应时,永远不

2015-04-14 16:27:56 1724

原创 大话设计模式之模板模式和迪米特法则

模板方法模式         定义一个操作中算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤   abstractclass AbstractClass{

2015-04-12 10:24:03 440

原创 大话设计模式之原型模式

用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象   原型模式其实就是从一个对象再创建另外一个可定制的对象,而且不需要知道任何创建的细节,基本代码如下: //原型类abstractclass Prototype{ private string id; public Prototype(string id)

2015-04-09 11:47:37 430

原创 线程特定数据 Thread Specified Data

1、为什么需要用到线程特定数据?    因为在单个线程的程序中,当我们调用同一个函数多次,若其中有静态、全局变量,该变量会随着每一次调用发生变化。    然而在多线程中,当多个线程同时调用同一个函数,若该函数没有全局、静态变量,那么不会引发错误;否则,我们就需要用到锁来解决问题。    这里提供的线程特定数据,是使线程函数变为线程安全的一个常用技巧2、每一个系统支持的线程特定元

2015-04-08 19:33:01 557

原创 第二十六章 线程

之前提到的并发服务器,父进程accept一个连接,fork一个子进程,该子进程处理与该连接对端的客户之间的通信。但是fork调用却存在一些问题:    1、fork是昂贵的。即使如今使用了"写时复制(copy on write)"技术,用以避免在子进程切实需要自己的副本之前把父进程的数据空间复制到子进程,但仍然是昂贵的    2、fork返回之后父子进程之间的信息传递需要进程间通信(I

2015-04-08 19:30:27 403

原创 tcp/ip ---------- ARP协议

用途:当一台主机把以太网数据帧发送给同一局域网上的另一台主机时,是根据48bit的以太网地址来确定目的接口的,设备驱动程序从不检查IP数据报中的目的IP地址。ARP为IP地址到对应的硬件地址之间提供动态映射,这个过程是自动完成的,不需操心实例:当我们执行 ftp someone ,总会经历以下步骤:1、 应用程序FTP客户端调用函数把主机名(someone)转换成32

2015-04-07 17:59:55 522

原创 第十六章非阻塞connect实例 与 非阻塞accept

非阻塞connect: Web客户程序    客户先建立一个与某个Web服务器的HTTP连接,再获取一个主页(homepage)。该主页往往含有多个对于其他网页的引用,客户可以使用非阻塞connect同时获取多个网页,以此取代每次只获取一个网页的串行获取手段。    在处理web客户时,第一个连接独立执行,来自该连接的数据含有多个引用,随后用于访问这些引用的多个连接则并行执行    这

2015-04-07 16:23:00 551

原创 第十六章 非阻塞connect初识

非阻塞connect    当在一个非阻塞的TCP套接字上调用connect时,connect将立即返回一个EINPROGRESS错误,不过已经发起的三路握手将继续进行。我们接着使用select检测这个连接或成功或失败的已建立条件。    非阻塞的connect有三个用途:    1、我们可以把三路握手叠加在其他处理上。完成一个connect要花一个RTT时间,而RTT不稳定,这段时间

2015-04-07 16:17:24 350

原创 大话设计模式之工厂模式

简单工厂模式最大的优点在于工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态的实例化相关的类,对于客户端来说,去除了与具体产品的依赖         但是,查看之前关于简单工厂模式的代码中,我们发现在添加功能时我们不仅仅要添加类,更是要求修改工厂类,这显然违背了 开放-封闭 原则!         于是诞生了工厂模式          定义一个用于创建对象的接口,让子类决定实例

2015-04-07 11:40:01 392

原创 大话设计模式之代理模式

为其他对象提供一种代理以控制对这个对象的访问   abstractclass subject{ public abstract void Request();}; classRealsubject :subject{ public override void Request() {

2015-04-07 11:36:31 440

原创 鸟哥私房菜整理(二)

较高阶的硬件通常会向下兼容旧有的软件,但较高阶的软件可能无法在旧机器上面安装第十章 VIMP475页的几道例题每几天做一道 P832vim学习:【文件夹中有关于三种模式的图片更直观】所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在;很多个别软件的编辑接口都会主动呼叫 vi (例如未来会谈到的 cron

2015-04-06 17:18:16 3106

原创 鸟哥私房菜整理(一)

第一章~~~~第九章单核心CPU仅有一个运算单元、多核心CPU是在一棵CPU封装当中嵌入两个以上的运算核心一些3D运算早期是交给CPU去运作,但是CPU并非完全针对这些3D来迚行设计,而CPU平时已非常忙碌了呢! 所以后来显示适配器厂商直接在显示适配器上面嵌入一个3D加速芯片,这就是所谓GPU称谓由来硬盘的分割    主要分割不延伸分割最多可以有四笔

2015-04-06 17:13:26 711 1

原创 部分KMP算法

/*#include #include //求字串定位 // 普通算法 时间复杂度为 O(m+n) 有事可达到O(m*n)int Index(char *S,char *T,int pos){ int sl = strlen(S),tl = strlen(T); //记录字符串长度 int i,j; i = pos; j=0; while(i<sl && j<tl)

2015-04-06 17:07:15 419

原创 简单的用栈实现后缀表达式

不想过多解释了,其实就是将普通的表达式画成树的形式,进行后序遍历,后缀表达式就出来了多写几个找规律就行了直接给出代码#include //后缀表达式的实现(栈的应用)#include "stack.h"int main(){ s X; init(&X); char s[30],*tp,tc; scanf("%s",s); tp = s; //

2015-04-06 15:42:45 1707

原创 栈和队列之间的互相实现

第一部分、两个队列实现一个栈本来想画图,可实在没这时间,且理解起来相对容易主要思想是,先将 所有数先导入一个队列A中去,另一个队列B此刻为空。将队列A中除了最后一个数其他都导入B中,然后将A中仅剩的一个数输出,这样循环下去,就造成了栈的假象。实现如下://队列实现#ifndef QUEUE_H#define QUEUE_H#include #include #inclu

2015-04-06 15:24:03 637

原创 字符串左转

题目为:        定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部,如把字符串abcdef左旋转2位得到字符串cdefab。请实现字符串左旋转的函数,要求对长度为n的字符串操作的时间复杂度为O(n),空间复杂度为O(1)。 首先想到的自然是暴力解决,不过肯定有更好的办法,如下://代码如下:#incl

2015-04-06 14:05:33 679

原创 清明时节

真的是诗里所说的模样,清明时节雨纷纷。好久前就谋划着在这博客写些什么,让这里显得不那么空洞,只可惜要么时辰不对,要么场合不适,因为这,因为那。这算日记吗?不算吧,怎么可能把私人情感赤裸裸的放在任何人的面前,几年的日记本也像是生出了感情;也不是技术归纳,才不会这样矫情,只是看着这博客里的学习日志,感觉十分陌生,多是从书上搬来(记录)或是转来的。博客之前的学习笔记,大多是存在硬盘上按照图片加文

2015-04-05 22:58:41 525 1

原创 大话设计模式之三个原则与装饰模式

单一职责原则就一个类而言,应该仅有一个可以引起他变化的原因。如果一个类承担的职责太多,就等于把这些职责都耦合在一起,一个职责的变化可能会削弱或抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当变化发生时,设计会遭受到意想不到的破坏如果能想到多于一个的动机去改变一个类,那么这个类就具备多于一个的职责,就应该考虑类的职责分离 开放-封闭原则      是说软件实

2015-04-02 23:21:06 459

原创 大话设计模式之策略模式

策略模式:         它定义了算法家族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户 //定义所有支持的算法的公共接口-------------------------------abstract class Strategy{ publicabstract void AlgInterface();};//----

2015-04-02 23:10:32 363

原创 鸟哥私房菜网络工具使用整理

ifconfig    主要是可以手动的启动、观察与修改网络接口的相关参数,比如IP参数,MTU等    ifconfig            -----    列出目前已经被启动的卡,不论是否有被给予IP    ifconfig {interface} {up | down}        -----    观察与启动接口    ifconfig interface {

2015-04-02 17:16:18 613

原创 IPv4 和 IPv6的互操作性

IPv4客户与IPv6服务器通信步骤如下:    1、IPv6服务器启动后创建一个IPv6监听套接字,我们假定服务器把通配地址绑定到该套接字    2、IPv4客户调用gethostbyname找到服务器的A记录(IPv4地址)。服务主机既有一个A记录,也有一个AAAA记录(IPv6地址),因为它同时支持IPv6和IPv4,不过客户只需要A记录    3、客户调用connect,导

2015-04-02 16:55:25 3401

原创 第十六章 非阻塞I/O

第十六章、非阻塞式I/O什么是阻塞socket和非阻塞socket?两者的具体区别是什么?    读操作        对于阻塞的socket,当socket的接收缓冲区中没有数据时,read调用会一直阻塞住,直到有数据到来才返回。当socket缓冲区中的数据量小于期望读取的数据量时,返回实际读取的字节数。当sockt的接收缓冲区中的数据大于期望读取的字节数时,读取期望读取的字节数

2015-04-01 15:58:17 452

小型自动关机软件

可以用来自动关机 很方便 这个东西我最近一直在用 源代码公开

2013-09-19

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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