- 博客(107)
- 收藏
- 关注
原创 TCP/IP详解,卷1:协议,第十章:动态选路协议
小结: 静态选路:在配置接口时,以默认方式生成路由表项(对于直接连接的接口),并通过route命令增加表项(通常从系统自引导程序文件),或是通过ICMP重定向生成表项(通常是在默认方式出错的情况下)。 动态选路协议:用于路由间的通信。 IGP(Interior Gateway Protocol,内部网关协议)包括:RIP(Routing Information Protocol,选路信息协议)
2016-09-06 16:08:51
1303
1
原创 TCP/IP详解,卷1:协议,第九章:IP选路
小结:选路是IP最重要的功能之一。路由表项的内容包括:5bit标志、目的IP地址(主机、网络或默认)、下一站路由器的IP地址(间接路由)或者本地接口的IP地址(直接路由)及指向本地接口的指针。 主机表项比网络表项有更高的优先级,而网络表项比默认项具有更高的优先级。 系统产生的或转发的每份IP数据报都要搜索路由表,它可以被路由守护程序或ICMP重定向报文修改。系统在默认情况下不转发数据报,除非进行
2016-09-06 11:47:48
890
原创 TCP/IP详解,卷1:协议,第八章:Traceroute程序
小结:Traceroute程序可以让我们看到IP数据报从一台主机传到另一台主机所经过的路由。 其操作很简单:开始时发送一个TTL字段为1的UDP数据报,然后将TTL字段每次加1,以确定路径中的每个路由器。每个路由器在丢弃UDP数据报时都返回一个ICMP超时报文,而最终目的主机则产生一个ICMP端口不可达的报文。习题: 1.当IP将接受到的TTL字段减1,发现它为0时,将会发生什么结果? 答:如
2016-09-06 10:32:41
1480
原创 TCP/IP详解,卷1:协议,第七章:Ping程序
小结:”Ping这个名字源于声纳定位操作。目的是为了测试另一台主机是否可达。该程序发送一份ICMP回显请求报文给主机,并等待发挥ICMP回显应答。不需经过传输层。ping服务器一般在内核中实现ICMP的功能。 ping程序是对两个TCP/IP系统连通性进行测试的基本工具。 本章分析了在LAN、WAN以及SLIP链路(拨号和线路)上运行ping程序的输出结果。习题: 2. 若把bsdi和slip
2016-09-06 09:09:09
1114
1
原创 Cocos2dx-3.10学习之PhysicsWorld解析
简介-Cocos2dx中的物理属性:1.在createScene()的时候,我们可以创建基于物理世界的场景或者不使用物理世界的场景(即普通的场景)。2.Node和Sprite拥有自己的身体(body)属性。3.而Cocos2dx3.x已经封装了物理属性,Body(PhysicsBody), Shape(PhysicsShape), Contact碰撞(PhysicsContact), Joint
2016-09-05 20:32:47
3547
原创 SQL基础学习2
第8章:使用函数处理数据 SQL函数带来的问题:某些函数不可移植,每个DBMS有其特有的函数。 多数SQL支持的函数处理:文本函数、数值函数、日期和时间函数、系统函数。将检索值转换为大写,并赋一个别名:SELECT vend_name, UPPER(vend_name) AS vend_name_upcaseFROM VendorsORDER BY vend_name;常用的文本处理函数:L
2016-09-05 19:54:57
399
原创 TCP/IP详解,卷1:协议,第六章:ICMP,Internet控制报文协议
小结:ICMP是IP层的一个组成部分,它传递差错报文以及其他需要注意的信息。通常被IP层或更高层(TCP或UDP)使用。本章详细讨论了ICMP地址掩码请求和应答以及时间戳请求和应答。这些是典型的请求-应答报文。二者在ICMP报文中都有标识符和序列号。发送端应用程序在标识字段内存入一个唯一的数值,以区别于其他进程的应答。序列号字段使得客户程序可以在应答和请求之间进行匹配。 一种常见的ICMP差错:I
2016-09-05 10:49:39
910
原创 TCP/IP详解,卷1:协议,第五章:RARP,逆地址解析协议
小结:RARP协议是许多无盘系统在引导时用来获取IP地址的。RARP分组格式基本上与ARP分组一致。一个RARP请求在网络上进行广播,它在分组中标明发送端的硬件地址,以请求相应IP地址的响应。应答通常是单播传送的。 并不是所有TCP/IP实现都提供RARP服务器。习题: 1.RARP需要不同的帧类型字段吗?ARP和RARP都使用相同的值0x0806吗? 答:一个单独的帧类型并不是必须的,因为图4
2016-09-05 10:00:35
1200
原创 TCP/IP详解,卷1:协议,第四章:ARP,地址解析协议
小结:在大多数的TCP/IP实现中,ARP是一个基础协议,但是它的运行对于应用程序或系统管理员来说一般是透明的。ARP高速缓存在它的运行过程中非常关键,我们可以用arp命令对高速缓存进行检查和操作。高速缓存中的每一项内容都有一个定时器,根据它来删除不完整和完整的表项。arp命令可以显示和修改ARP高速缓存中的内容。 委托ARP(当路由器对来自于另一个路由器接口的ARP请求进行应答时)和免费ARP(
2016-09-05 09:27:51
1415
原创 TCP/IP详解,卷1:协议,第三章IP:网际协议
小结:1.对IP首部的讲解。2.IP路由选择:如果目的主机在直接相连的网络上,那么就把数据报直接传给目的主机,否则传给默认路由器。3.在进行路由选择决策时,主机和路由器都使用路由表。在表中有三种类型的路由:特定主机型、特定网络型和默认路由型。主机路由>网络路由>默认路由。4.IP路由是通过逐跳来实现的。数据报在各站的传输过程中目的IP地址始终不变,但是封装和目的链路层地址在每一站都可以改变。5.A类
2016-09-05 08:35:18
857
原创 Git问题
1.如遇到密钥不匹配时,可删除GitHub上的密钥,在本地重新生成密钥并添加至GitHub。可以添加多台电脑的密钥,方便在公司或家里即多台电脑推送。2.将一个本地文件夹git init为一个本地库, 然后在GitHub新建一个同名的库。(Git命令行最好从桌面打开) 将它们连接的方法:把一个已有的本地仓库与之关联,命令如下:$ git remote add origin https://gith
2016-09-04 10:53:06
370
原创 Git命令大全
Git 是一个很强大的分布式版本控制系统。它不但适用于管理大型开源软件的源代码,管理私人的文档和源代码也有很多优势。常用Git命令清单,简单版Git 常用命令 git branch 查看本地所有分支 git status 查看当前状态 git commit 提交 git branch -a 查看所有的分支 git branch -r 查看本地所有分支 git commit -am “
2016-09-03 19:42:30
350
原创 TCP/IP详解,卷1:协议,第二章链路层
小结:链路层是Internet协议族中最底层的协议。1.比较了以太网和IEEE802.2/802.3的封装格式,以及SLIP和PPP的封装格式。2.由于SLIP和PPP经常用于低速的链路,二者都提供了压缩不常变化的公共字段的方法,这使交互性能得到提高。3.大多数的实现都提供环回接口,其地址一般为127.0.0.1。当环回数据回到上层的协议栈中时,它已通过传输层和IP层完整的处理过程。4.MTU:最大
2016-09-02 16:22:32
836
原创 TCP/IP详解,卷1:协议,第一章
第一章: 概述 小结:TCP/IP协议族分为四层:链路层、网络层、运输层、应用层,每一次有不同的责任。网络层(IP)提供点对点的服务,而运输层(TCP和UDP)提供端到端的服务。构造互联网的共同基石是路由器,它们在IP层把网络连在一起。 在一个互联网上,每个接口都用IP地址来标识,尽管用户习惯用主机名而不是IP地址。域名系统为主机名和IP地址之间提供动态的映射。端口号用来标识互相通信的应用程序。服
2016-09-02 11:38:25
2421
1
原创 SQL基础学习
SQL是Structured Query Language(结构化查询语言)的缩写。SQL是一种专门用来与数据库沟通的语言。本文使用SQLite3测试。SELECT prod_id --利用SELECT语句从Products表中检索一个名为prod_name的列FROM Products;SELECT prod_id, prod_name, prod_price --检索多个列FROM Pro
2016-08-31 11:49:47
459
原创 SQLite3安装
SQLite 的一个重要的特性是零配置的,这意味着不需要复杂的安装或管理。 1.在 Windows 上安装 SQLite 请访问SQLite下载页面,从Windows区下载预编译的二进制文件。您需要下载sqlite-tools-win32-x86-3140100.zip和sqlite-dll-win32-*.zip 压缩文件。 创建文件夹 C:\sqlite,并在此文件夹下解压上面两个压缩文件
2016-08-28 17:29:01
3434
转载 VMware下RedHat9.0安装
1. 安装完VMware Workstation后,启动VMware Workstation,新建一个虚拟机,其主界面如下图。 2.VMware Workstation的配置Vmware workstation安装完毕后,利用它可以建立多个虚拟机,每新建一个虚拟机,就会要求你建立一个配置文件。这个配置文件实际上相当于新电脑的“硬件配置”,你可以在配置文件中决定虚拟机的硬盘如何配置,内存多大、准备
2016-08-03 19:34:25
923
1
原创 Linux下jdk安装和配置环境变量及j2ee环境搭建
一. 解压安装jdk 1.把mypackage.iso挂在到linux操作系统上,在VMware做好挂载配置,执行mount /mnt/cdrom 2.把安装文件拷贝 /home 3. cd /home 切换目录到home 4.执行安装 ./文件名 5./etc/profile 修改环境配置文件 6.配置刚才自己安装的jdk二. 需要配置的环境变量 1. PATH环境变量。作用是
2016-08-02 22:23:01
1082
转载 Python time模块详解
Python 的内嵌time模板翻译及说明一、简介time模块提供各种操作时间的函数,一般有两种表示时间的方式: 第一种是时间戳的方式(相对于1970.1.1 00:00:00以秒计算的偏移量),时间戳是惟一的。 第二种以数组的形式表示即(struct_time),共有九个元素,分别表示同一个时间戳的struct_time会因为时区不同而不同 year (f
2016-07-31 16:41:16
472
原创 VMware中RedHat下安装VMware Tools
1.打开VMware,启动RedHat; 2.启动RedHat后,命令行进入root; 3.Ctrl+Alt调出鼠标,在VMware上方菜单栏中单击“虚拟机”–>安装VMware Tools; 4.这时RedHat中会自动挂载出一个光驱图标,双击图标,光驱里面的文件有VMwareTools-6.0.0-45731.i386.rpmVMwareTools-6.0.0-45731.tar.gz两
2016-07-22 21:04:54
2210
原创 基础知识
1.什么是脚本? 脚本是使用特定的语言格式来编写的描述一定逻辑功能的文本文件,它可以实现在文本文件中通过访问特定格式的函数对系统逻辑进行编程。这个文本文件不被编译进可执行程序中,而是动态的在需要的时候通过系统对这个文本文件的解释来执行。脚本引擎则可以理解为对脚本的使用管理进行封装的相关的类和接口函数。2.什么事引用计数? 引用计数是一种内存管理方式。通过一个无符号的成员变量计算当前有多少使用者在
2016-07-22 20:34:38
283
原创 XML基础学习
一、什么是 XML? XML 指可扩展标记语言(EXtensible Markup Language) XML 是一种标记语言,很类似 HTML XML 的设计宗旨是传输数据,而非显示数据 XML 标签没有被预定义。您需要自行定义标签。 XML 被设计为具有自我描述性。 XML 是 W3C的推荐标准。(万维网联盟World Wide Web Consortium,又称W3C
2016-07-01 22:16:50
3234
原创 C++设计模式浅识访问者模式
访问者模式(Visitor):表示一个作用于某对象结构中的各元素的操作,它使你可你在不改变各元素类的前提下定义作用于这些元素的新操作。五个角色类:Visitor:为该对象结构中ConcreteElement的每一个类声明一个Visit操作。ConcreteVistor:具体访问者,实现每个由Visitor声明的操作。每个操作实现算法的一部分,而该算法片段是对应于结构中对象的类。ELement定
2016-07-01 19:23:48
479
原创 C++设计模式浅识解释器模式
解释器模式(Interpreter):给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。解释器模式解决的问题:如果一种特定类型的问题发生的频率足够高,那么可能就值得将该问题的各个实例表述为一个简单语言中的句子。这样就可以构建一个解释器,该解释器通过解释这些句子来解决该问题。正则表达式就是它的一种应用,解释器为正则表达式定义了一个文法和表示一个特定的正则表
2016-06-26 16:34:17
617
原创 C++设计模式浅识享元模式
享元模式(Flyweight):运用共享技术有效地支持大量细粒度的对象。四个角色类:Flyweight享元类:所有具体享元类的超类或接口,通过这个接口,Flyweight可以接受并作用于外部状态。Flyweight享元工厂类:一个享元工厂,用来创建并管理Flyweight,当用户请求一个Flyweight时,FlyweightFactory对象提供一个已创建的实例或者创建一个(如果不存在的话)。
2016-06-26 13:00:52
418
原创 C++设计模式浅识组合模式
组合模式(Composite):将对象组合成树形结构以表示‘部分-整体’的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。何时使用组合模式: 当你发现需求中是体现部分与整体层次的结构时,以及你希望用户可以忽略组合对象与单个对象的不同,统一地使用组合结构中的所有对象时,就应该考虑使用组合模式。下面代码使用组合模式定义了包含人力资源部和财务部这些基本对象和分公司、办事处等组合对象的类层
2016-06-25 11:47:06
496
原创 C++设计模式浅识备忘录模式
备忘录模式(Memento):在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。模式实现:struct State{ wchar_t wcsState[260];};class Memento{public: Memento(State *pState): m_pState(pState) {} Stat
2016-06-25 11:30:50
307
原创 C++设计模式浅识适配器模式
适配器模式(Adapter):将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。何时使用适配器模式:两个类所做的事情相同或相似,但是具有不同的接口时需要它。双方都不太容易修改的时候再使用适配器模式。模式实现://Targetclass Target{public: virtual void Request(){
2016-06-25 11:23:04
334
原创 C++设计模式浅识状态模式
状态模式(State):当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。 状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类当中,可以把复杂的判断逻辑化。模式实现:class Context;class State{public: virtual void Handle(Context *pCont
2016-06-25 11:16:14
358
原创 C++设计模式浅识抽象工厂模式
抽象工厂模式(Abstract Factory):提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。模式实现://create ProductAclass ProductA{public: virtual void Show() = 0;};class ProductA1: public ProductA{public: void Show(){
2016-06-25 11:09:57
422
原创 C++设计模式浅识观察者模式
观察者模式(Observer):定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主体对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。模式实现://观察者抽象基类class Observer{public: virtual void Update(int) = 0;};//主题、目标class Subject{public: vi
2016-06-25 11:03:26
371
原创 C++设计模式浅识建造者模式
建造者模式(Builder):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。模式实现:class Builder;//产品class Product{public: void AddPart(const char *info){ m_PartInfoVec.push_back(info); } void ShowProduct
2016-06-25 10:56:20
387
原创 C++设计模式浅识中介者模式
中介者模式(Mediator):用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地交互引用,从而使耦合松散,而且可以独立地改变它们之间的交互。四个角色:抽象中介者Mediator具体中介者对象ConcreteMediator抽象类Abstract具体抽象类ConcreteAbstract中介者模式优点:Mediator的出现减少了各个Abstract的耦合,使得可以独立地改
2016-06-25 10:42:57
723
原创 C++设计模式浅识职责链模式
职责链模式(ChainOfResponsibility):使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。职责链的好处:当客户提交一个请求时,请求时沿链传递直至有一个ConcreteHandler对象负责处理它。使得接收者和发送者都没有对方的明确信息且链中的对象自己也并不知道链的结构。结果是职责链可简
2016-06-25 09:46:14
413
原创 C++设计模式浅识命令模式
命令模式(Command)将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。 测试用例:int main(){ Barbecuer boy; BakeChickenWingCommand bakechickenwingcommand1(boy); BakeChickenWingCommand bakechick
2016-06-25 09:22:01
316
原创 C++设计模式浅识桥接模式
合成/聚合都用原则(CARP): 优先使用合成/聚合,而不是使用类继承。聚合表示一种弱的”拥有关系”,体现的是A对象可以包含B对象,但B对象不是A对象的一部分。 合成表示一种强的”拥有关系”,体现了严格的部分和整体的关系,部分和整体的生命周期一样。其好处:优先使用对象的合成/聚合将有助于你保持每个类被封装,并被集中在单个任务上。这样类和类继承层次会保持较小规模,并且不太可能增长为不可控制的庞然大
2016-06-23 19:43:13
478
转载 C++11闭包函数:Lambda表达式的使用λ
C++11中的Lambda表达式用于定义并创建匿名的函数对象,以简化编程工作。Lambda的语法形式如下: [函数对象参数] (操作符重载函数参数) mutable或exception声明 -> 返回值类型 { …函数体…}一、[函数对象参数],例如[&,a,b] 标识一个Lambda的开始,这部分必须存在,不能省略。函数对象参数是传递给编译器自动生成的函数对象类的构造函数的。函数对象参数只能使
2016-06-23 18:58:56
5115
原创 树中两个结点的最低公共祖先50
题目描述:输入两个树节点,找出它们的最低公共祖先。这是一棵普通树而且没有指向父节点的指针。解题思路:使用了两个链表分别保存从根节点到输入的两个结点的路径,然后把问题转换成两个链表的最后公共节点。首先得到一条从根节点到树中某一结点的路径,借助前序遍历,VLR。找出两个输入节点的两条路径。找到这两条路径的公共结点,便是输入两个树节点的最低公共祖先。函数实现://第一步:得到输入节点路径boo
2016-06-22 22:07:35
544
原创 不能被继承的类49
题目描述:用C++设计一个不能被继承的类,在C#中定义了关键字sealed,被sealed修饰的类不能被继承。在JAVA中同样也有关键字final表示一个类型不能被继承。解法一:把构造函数设为私有成员在C++中子类的构造函数会自动调用父类的构造函数,子类的析构函数也会自动调用父类的析构函数。定义公有的静态函数来创建和释放类的实例。此方法缺点:只能得到位于堆上的实例,而得不到位于栈上的实例。
2016-06-22 20:52:25
585
原创 不用加减乘除做加法48
题目描述:写一个函数,求两个整数之和,要求在函数体内不能使用+、-、*、/ 四则运算符号。解题思路:使用位运算;第一步相加不考虑进位,0加0、1加1的结果都是0;0加1、1加0的结果都是1,所以第一步是异或的结果;第二步考虑进位,0加0、0加1、1加0都不产生进位;只有1加1会向前产生一个进位。此时可以想象成是两个数先位与运算,然后再做移1位。最后将前两个步骤的结果相加。但仍然要重复前面的
2016-06-22 19:32:00
483
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人