自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 资源 (24)
  • 收藏
  • 关注

转载 设计模式培训之九:外观模式

一、定义:为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。二、意图:1 为一个复杂子系统提供一个简单的接口2 减少客户端和子系统的耦合外观(Facade)模式是最简单的模式,我们在开发中不自觉的在使用外观模式,比如我们在三层结构中,DataAccessLayer,BusinessLayer,Interf

2014-12-30 15:12:38 453

转载 设计模式培训之八:建造者模式

摘要: 查看本人文章索引请通过http://www.cnblogs.com/seesea125/archive/2012/04/17/2453256.html一、定义将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示。二、应用场景当一个产品需要复杂的构造,但是构造过程是稳定的,只是构造的对象有不同表示时,就可以使用建造模式。三、代

2014-12-30 15:11:02 403

转载 设计模式培训之七:模版方法

查看本人文章索引请通过http://www.cnblogs.com/seesea125/archive/2012/04/17/2453256.html一、定义定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。Template Method使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。二、应用场景Template Method模式非常简单

2014-12-30 15:00:45 492

转载 设计模式培训之六:原型模式

查看文章索引请通过http://www.cnblogs.com/seesea125/archive/2012/04/17/2453256.html一、什么是原型模式?原型模式:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象原型模式(Prototype结构图) 原型模式其实就是从一个对象再创建另外一个可定制的对象,而且不需知道任何创建的细

2014-12-30 14:57:49 400

转载 设计模式培训之五:代理模式

查看本人文章索引请通过http://www.cnblogs.com/seesea125/archive/2012/04/17/2453256.html一、 什么是代理模式?代理模式,为其他对象提供一种代理以控制对这个对像的访问。代理模式结构图: 二、 代理模式都用在一些什么场合?1. 远程代理,也就是为一个对象在不同的地址空间提供局部代表。这

2014-12-30 14:56:31 475

转载 设计模式培训之四:策略模式

查看本人文章索引请通过http://www.cnblogs.com/seesea125/archive/2012/04/17/2453256.html一、定义策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。二、概述应用场景:  1、 多个类只区别在表现行为不同,可以使用Stra

2014-12-30 14:46:23 426

转载 设计模式培训之三:抽象工厂

查看本人文章索引请通过http://www.cnblogs.com/seesea125/archive/2012/04/17/2453256.html在工厂方法里讲到了加减乘除的例子,请查阅http://www.cnblogs.com/seesea125/archive/2012/05/02/2478981.html 一、抽象工厂的定义提供一个创建一系列相关或相互依

2014-12-30 14:44:56 394

转载 设计模式培训之二:简单工厂、工厂方法

查看本人文章索引请通过http://www.cnblogs.com/seesea125/archive/2012/04/17/2453256.html一、简单工厂和工厂方法定义:简单工厂模式是由一个工厂类根据参数来决定创立出哪一种产品类的实例。工厂方法模式通过调用不同的方法返回需要的类,而不是去实例化具体的类。 对实例创建进行了包装。 工厂方法是一组方法, 他们针对不同条件

2014-12-30 14:34:16 482

转载 设计模式培训之一:为什么要用单例模式?

查看本人文章索引请通过http://www.cnblogs.com/seesea125/archive/2012/04/17/2453256.html 我们在编程中最常用的模式就是单例模式了,然而单例模式都用在什么场合?为什么不用静态方法而要用单例模式呢?要搞清这些问题,需要从静态方法和非静态方法的区别和联系说起。 一、静态方法常驻内存,非静态方法只有使用的时候才分

2014-12-30 14:27:19 459

转载 面向对象基础

查看本人文章索引请通过http://www.cnblogs.com/seesea125/archive/2012/04/17/2453256.html 一、面向对象的术语?1. 类  类作为设计蓝图来创建对象的代码段,它描述了对象的特征;该对象具有什么样的属性,怎样使用对象完成一些任务,他对事件进行怎样的响应等!    对象具有状态,一个对象用数据值来描述它的状态。

2014-12-30 14:17:03 758

转载 什么是对象,为什么要面向对象,怎么才能面向对象?

一、 面向对象,这个对象到底是什么?     这个对象不是C#中的实例,C#中我们把一个类的实例也叫做对象,这种对象严格的说应该是面向对象的编程实现(OOP)中的对象,面向对象编程,也不是面向类的实例编程。对象的定义是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。也有的定义为“一切都是对象”然而面向对象也

2014-12-30 14:15:28 460

转载 WEB架构师成长之路之一-走正确的路

查看文章索引请通过http://www.cnblogs.com/seesea125/archive/2012/04/17/2453256.html   本人也是coding很多年,虽然很失败,但也总算有点失败的心得,不过我在中国,大多数程序员都是像我一样,在一直走着弯路,如果想成为一个架构师,就必须走正确的路,否则离目标越来越远,正在辛苦工作的程序员们,你们有没有下面几种感觉?

2014-12-30 14:12:27 454

转载 HiPAC算法简介

HiPAC是一个高性能的报文分类算法,nf-HiPAC是其衍生出来的一个支持Linux内核框架包过滤模块,由用户态应用程序和内核态模块组成,用于代替iptable。这个算法其实出来挺早的,第一个版本支持linux2.4,最新的版本也可以支持2.6了。不过貌似应用不是很广泛,猜测原因是由于算法比较复杂维护困难。HiPAC和iptables对比起来,其优点主要在于分类规模很大时依然能够保持较好的性能。

2014-12-30 10:04:46 2266

转载 HiPAC高性能规则匹配算法之查找过程

收到一封邮件,有位朋友觉得我误解了nf-HiPAC,如此的一个高性能算法怎能被什么传统的hash,tree之类的胁迫。是啊,HiPAC是一个很猛的算法,文档也比较少,这就更加增加了其神秘感,但是这决不意味着它是不可理解的,相反,它的思想很简单。       HiPAC算法本质上是一种基于优先级的区间匹配算法,怎么理解呢?我们把匹配域定义成一个连续的区间,那么每一条Rule则定义了该区间的一段子

2014-12-30 09:59:38 980

转载 Linux的Netfilter框架深度思考-对比Cisco的ACL-

在前面0.1.本文不涉及具体实现,也不涉及源代码,不剖析代码0.2.本文不争辩Linux或者Cisco IOS不同版本之间的实现细节0.3.本文不正确处请指出Cisco无疑是网络领域的领跑者,而Linux则是最具活力的操作系统内核,Linux几乎可以实现网络方面的所有特性,然而肯定还有一定的优化空间,本文首先向Cisco看齐,然后从不同的角度分析Netfilter的对应特性,最

2014-12-29 15:50:33 682

转载 Linux实现的IEEE 802.1Q VLAN

第一部分:VLAN的核心概念说起IEEE 802.1q,都知道是VLAN,说起VLAN,基本上也没有盲区,网络基础。然而说到配置,基本所有人都能顺口溜一样说出Cisco或者H3C设备的配置命令,对于Linux的VLAN配置却存在大量的疑问。这些疑问之所以存在我觉得有两点原因:1.对VLAN的本质还是没有理解。不管你的Cisco/H3C命令敲得再熟练,如果看不懂Linux的vconfig

2014-12-29 15:42:50 523

转载 TCP Loop Connect

TCP state machine allows that TCP client establishes connection using connect() to itself. Look on diagram and focus on Simultaneous Open part.PreconditionsFollowing conditions are needed for th

2014-12-29 15:32:19 577

转载 NAT网关自动去掉TCP syn包的时间戳

猛士设计了Netfilter,在失眠的时候就有事做了,安息日应守为圣日,否则会激怒神,因此双休日我一般不学习和工作,相反,我会在午夜玩一些自己喜欢的东西。我没有受过洗,不是因为不是笃信者,没有安息夜...NAT和timestamps问题这个问题就不多说了,总之,NAT设备将所有数据包的大量不同的源地址都转换为了单一的或者少数几个地址,这个转换动作和TCP服务器的PAWS机制一起工作

2014-12-29 12:48:35 941

转载 tcp 的内核参数

因为一个ddns网站的防火墙将我的IP给屏蔽了,抓包看了一下,居然用的是tcp连接时间戳区别我的机器,晕掉,很多同样的设备肯定都无法使用。网上搜了一下相关的设置,只要把本机的tcp连接包中的时间戳去掉,就可以正常使用ddns服务了,具体的做法是将/proc/sys/net/ipv4/tcp_timestamps设置一下。具体的说法在RFC1323中。    以下为查阅的不错的文章,引用一下。

2014-12-29 12:45:55 691

转载 NAT网络下TCP连接建立时可能SYN包被服务器忽略-tcp_tw_recycle

最近一个长连接服务经常被反馈连接失败,刚开始怀疑是网络问题,也就没有细查。今天仔细抓包分析了一下,原来碰到了在开启tcp_tw_recycle和tcp_timestamps的机器上,当多个客户端使用同一个外网IP( NAT)时可能出现连接建立不成功的坑,具体表现为客户端发送了SYN 包给服务器,服务器也收到了,但就是不回复SYN+ACK 给客户端,从而导致客户端重传SYNC,直至一分钟左右才能成功

2014-12-29 12:43:34 739

转载 大型网站技术架构

架构演变第一步:物理分离webserver和数据库最开始,由于某些想法,于是在互联网上搭建了一个网站,这个时候甚至有可能主机都是租借的,但由于这篇文章我们只关注架构的演变历程,因此就假设这个时候已经是托管了一台主机,并且有一定的带宽了,这个时候由于网站具备了一定的特色,吸引了部分人访问,逐渐你发现系统的压力越来越高,响应速度越来越慢,而这个时候比较明显的是数据库和应用互相影响,应用出问题了

2014-12-25 15:08:30 562

转载 大型网站系统架构的演化

前言    一个成熟的大型网站(如淘宝、京东等)的系统架构并不是开始设计就具备完整的高性能、高可用、安全等特性,它总是随着用户量的增加,业务功能的扩展逐渐演变完善的,在这个过程中,开发模式、技术架构、设计思想也发生了很大的变化,就连技术人员也从几个人发展到一个部门甚至一条产品线。所以成熟的系统架构是随业务扩展而完善出来的,并不是一蹴而就;不同业务特征的系统,会有各自的侧重点,例如淘宝,要解

2014-12-25 15:06:02 386

转载 【问底】徐汉彬:Web系统大规模并发——电商秒杀与抢购

电商的秒杀和抢购,对我们来说,都不是一个陌生的东西。然而,从技术的角度来说,这对于Web系统是一个巨大的考验。当一个Web系统,在一秒钟内收到数以万计甚至更多请求时,系统的优化和稳定至关重要。这次我们会关注秒杀和抢购的技术实现和优化,同时,从技术层面揭开,为什么我们总是不容易抢到火车票的原因? 一、大规模并发带来的挑战 在过去的工作中,我曾经面对过5w每秒的高并发秒杀功能,

2014-12-25 14:50:00 529

转载 【问底】徐汉彬:亿级Web系统搭建——单机到分布式集群

当一个Web系统从日访问量10万逐步增长到1000万,甚至超过1亿的过程中,Web系统承受的压力会越来越大,在这个过程中,我们会遇到很多的问题。为了解决这些性能压力带来问题,我们需要在Web系统架构层面搭建多个层次的缓存机制。在不同的压力阶段,我们会遇到不同的问题,通过搭建不同的服务和架构来解决。Web负载均衡 Web负载均衡(Load Balancing),简单地说就是给我们的服

2014-12-25 14:48:18 595

转载 Linux中线程与CPU核的绑定

最近在对项目进行性能优化,由于在多核平台上,所以了解了些进程、线程绑定cpu核的问题,在这里将所学记录一下。    不管是线程还是进程,都是通过设置亲和性(affinity)来达到目的。对于进程的情况,一般是使用sched_setaffinity这个函数来实现,网上讲的也比较多,这里主要讲一下线程的情况。    与进程的情况相似,线程亲和性的设置和获取主要通过下面两个函数来实现:int

2014-12-24 15:23:00 569

转载 Linux netfilter 学习笔记 之九 ip层netfilter的连接跟踪模块代码分析

基于linux2.6.21上一节分析了连接跟踪模块相关的初始化代码,本节分析连接中hook函数。在分析之前,我们再次回顾一下数据包在连接跟踪模块中的走向。 发往本地的数据:对于连接跟踪来说,只在hook点NF_IP_PRE_ROUTING、NF_IP_LOCAL_IN两个hook点进入到连接跟踪模块,按优先级顺序,依次调用ipv4_conntrack_def

2014-12-09 13:49:58 1457

转载 Linux netfilter 学习笔记 之八 ip层netfilter的连接跟踪模块初始化

基于linux2.6.21在上一节中分析了连接跟踪模块相关的数据结构,本节就开始分析连接跟踪模块相关的初始化,下一节理解连接跟踪模块的hook机制。 在分析连接跟踪模块代码之前,先说明几点:1.连接跟踪模块的helper结构能够实现期望连接的建立以及相关协议的ALG功能。2.连接跟踪为NAT或者状态防火墙的实现提供了依据 连接跟踪模块的初始化

2014-12-09 13:47:35 817

转载 Linux netfilter 学习笔记 之七 ip层netfilter的连接跟踪模块的概念及相关的数据结构分析

内核版本 2.6.21 连接跟踪(CONNTRACK)就是跟踪并且记录连接状态。包括 TCP 、UDP、ICMP  等协议类型的连接。其主要是判断该数据包是什么状态。根据数据包的源ip地址、目的ip地址、源端口、目的端口、协议号来确定一条连接。 因为连接跟踪支持TCP、UDP、ICMP等协议,而不同的协议,其处理上会有一些不同,因此增加了协议相关的连接跟踪结构,即n

2014-12-09 13:45:34 805

转载 Linux netfilter 学习笔记 之十三 netfilter的SNAT模块是否支持UDP打洞

在分析SNAT模块的代码时,就已经分析过函数get_unique_tuple与find_appropriate_src,那时对于为什么要调用find_appropriate_src函数使用已经转换的源ip、端口不清楚,最近听说这个功能可以用于udp打洞功能,就重新看了udp打洞的概念,就写下了这篇文档1.SNAT转换的特殊处理linux netfilter模块中,对于SNAT转

2014-12-08 16:25:56 744

转载 Linux netfilter 学习笔记 之十一 ip层netfilter的NAT模块初始化以及NAT原理

1.NAT的原理NAT会修改数据包的ip层的源或者目的ip地址。在实际应用中,NAT 主要用于实现私有网络访问公共网络的功能。1.1 SNAT源目的地址转换,即对ip数据包的源ip地址进行转换操作,典型的应用即是网关,网关的lan侧会下挂至少两台设备,而这两台设备的ip地址都是lan侧地址,而lan侧设备又要访问公网,这就需要SNAT大展身手了,通过将lan侧发送的ip数据

2014-12-08 16:08:38 682

转载 Linux netfilter 学习笔记 之十二 ip层netfilter的NAT模块代码分析

本节主要是分析NAT模块相关的hook函数与target函数,主要是理清NAT模块实现的原理等。 1.NAT相关的hook函数分析NAT模块主要是在NF_IP_PREROUTING、NF_IP_POSTROUTING、NF_IP_LOCAL_OUT、NF_IP_LOCAL_IN四个节点上进行NAT操作,在上一节中我们知道nat表中只有PREROUTING、POSTROUTI

2014-12-08 16:05:56 723

转载 iptables配置——NAT地址转换

iptables nat 原理同filter表一样,nat表也有三条缺省的"链"(chains):    PREROUTING:目的DNAT规则  把从外来的访问重定向到其他的机子上,比如内部SERVER,或者DMZ。          因为路由时只检查数据包的目的ip地址,所以必须在路由之前就进行目的PREROUTING DNAT;          系统先PRERO

2014-12-08 12:45:08 1125

转载 TCP通信流程解析

B/S通信简述整个计算机网络的实现体现为协议的实现,TCP/IP协议是Internet的核心协议,HTTP协议是比TCP更高层次的应用层协议。HTTP(HyperText Transfer Protocol,超文本传输协议)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP的初衷是为了提供一种发布和接收HTML页面的方法。浏览器(Web Brow

2014-12-08 12:32:27 570

转载 详解coredump

一,什么是coredump        我们经常听到大家说到程序core掉了,需要定位解决,这里说的大部分是指对应程序由于各种异常或者bug导致在运行过程中异常退出或者中止,并且在满足一定条件下(这里为什么说需要满足一定的条件呢?下面会分析)会产生一个叫做core的文件。        通常情况下,core文件会包含了程序运行时的内存,寄存器状态,堆栈指针,内存管理信息还有各种函

2014-12-04 12:30:32 323

转载 unix网络编程——ioctl 函数的用法详解

1.介绍Linux网络程序与内核交互的方法是通过ioctl来实现的,ioctl与网络协议栈进行交互,可得到网络接口的信息,网卡设备的映射属性和配置网络接口.并且还能够查看,修改,删除ARP高速缓存的信息,所以,我们有必要了解一下ioctl函数的具体实现.2.函数说明SYNOPSIS       #include        int ioctl(int d, i

2014-12-02 11:23:38 708

转载 ioctl()获取本地网卡设备信息

获得eth0接口所有信息:#include stdio.h>#include stdlib.h>#include sys/types.h>#include sys/stat.h>#include unistd.h>#include sys/ioctl.h>#include sys/socket.h>#include net

2014-12-02 10:40:52 1735

SFTP 协议 2013V0.3版本

SFTP协议文档

2022-10-08

Oran V0.8规范文档

Oran V0.8规范文档 O-RAN-WG4.CUS.0-v08.00.pdf O-RAN.WG4.CONF.0-v05.00.pdf O-RAN-WG4.MP.0-v08.00.pdf O-RAN.WG4.MP-YANGs-v08.00.zip

2022-04-12

confd-basic-7.6.linux.x86_64

1. 解压 sh confd-basic-7.6.linux.x86_64.installer.bin /home/tmpconfd 2. 编译crypto.so 修改 confd-basic-7.6.linux.x86_64/confd-basic-7.6/libconfd/src/include.mk cd confd-basic-7.6.linux.x86_64/confd-basic-7.6/libconfd/crypto make #生成基于libcrypto.so.1.0版本的crypto.so cp confd-basic-7.6.linux.x86_64/confd-basic-7.6/libconfd/crypto/crypto.so /home/tmpconfd/lib/confd/lib/core/crypto/priv/lib/crypto.so 拷贝编译好的libcrypto.so.1.0.0 到 /usr/lib64/libcrypto.so.1.0.0

2022-03-31

yencap and yencap-manager

yencap

2022-03-31

IEEE-802.11i

Guide to IEEE 802.11i - Establishing Robust Security Networks.pdf S10_802.11i Overview-jw1.pdf IEEE-802.11i-re.pdf ieee 802.1X.pdf

2014-12-24

ipv6相关文档

IPv6 Introduction and Configuration.pdf IPv6+Core+Protocols+Implementation.pdf Morgan.Kaufmann.IPv6.Advanced.Protocols.Implementation.pdf Running.IPv6.2006.pdf 《IPV6详解》下一代互联网络协议.pdf

2014-12-24

Tuning Red Hat Enterprise Linux

Tuning Red Hat Enterprise Linux linux服务器调优

2014-12-24

IETF Protected EAP Protocol

Protected EAP Protocol (PEAP) Version 2.txt

2014-11-05

Ethernet vendor codes and well-known MAC addresses

# The IEEE public OUI listing available from: # # # # # Michael Patton's "Ethernet Codes Master Page" available from: # # # This is Wireshark 'manuf' file, which started out as a subset of Michael # Patton's list and grew from there.

2014-11-05

C++ Hackers Guide.pdf

C++ Hackers Guide.pdf Table of Contents Real World Hacks................................................................................................9 Hack 1: Make Code Disappear..........................................................................10 Hack 2: Let Someone Else Write It...................................................................12 Hack 3: Use the const Keyword Frequently For Maximum Protection.............12 Hack 4: Turn large parameter lists into structures..........................................14 Hack 5: Defining Bits.........................................................................................16 Hack 6: Use Bit fields Carefully........................................................................18 Hack 7: Documenting bitmapped variables......................................................19 Hack 8: Creating a class which can not be copied............................................21 Hack 9: Creating Self-registering Classes.........................................................22 Hack 10: Decouple the Interface and the Implementation...............................25 Hack 11: Learning From The Linux Kernel List Functions...............................27 Hack 12: Eliminate Side Effects........................................................................29 Hack 13: Don't Put Assignment Statements Inside Any Other Statements......30 Hack 14: Use const Instead of #define When Possible.....................................31 Hack 15: If You Must Use #define Put Parenthesis Around The Value.............32 Hack 16: Use inline Functions Instead of Parameterized Macros Whenever Possible........................................................................................................33 Hack 17: If You Must Use Parameterized Macros Put Parenthesis Around The arguments....................................................................................................34 Hack 18: Don't Write Ambiguous Code.............................................................34 Hack 19: Don't Be Clever With the Precedence Rules......................................35 Hack 20: Include Your Own Header File...........................................................36 Hack 21: Synchronize Header and Code File Names.......................................37 Hack 22: Never Trust User Input......................................................................38 Hack 23: Don't use gets.....................................................................................40 Hack 24: Flush Debugging................................................................................41 Hack 25: Protect array accesses with assert....................................................42 Hack 26: Use a Template to Create Safe Arrays...............................................45 Hack 27: When Doing Nothing, Be Obvious About It........................................46 Hack 28: End Every Case with break or /* Fall Through */...............................47 Hack 29: A Simple assert Statements For Impossible Conditions....................47 Hack 30: Always Check for The Impossible Cases In switches.........................48 Hack 31: Create Opaque Types (Handles) Which can be Checked at Compile Time.............................................................................................................49 Hack 32: Using sizeof When Zeroing Out Arrays..............................................51 Hack 33: Use sizeof(var) Instead of sizeof(type) in memset Calls....................51 Hack 34: Zero Out Pointers to Avoid Reuse......................................................53 Hack 35: Use strncpy Instead of strcpy To Avoid Buffer Overflows.................54 Hack 36: Use strncat instead of strcat for safety..............................................55 ...... ......

2010-12-10

ebtables-iptables interaction on a Linux-based bridge.mht

ebtables-iptables interaction on a Linux-based bridge.mht

2010-12-10

ebtables-v2.0.9-2.tar.gz

ebtables-v2.0.9-2.tar.gz from http://ebtables.sourceforge.net

2010-12-10

Advanced Bash-Scripting Guide

Advanced Bash-Scripting Guide.pdf

2010-12-06

Traffic-Control-HOWTO.pdf

Traffic-Control-HOWTO.pdf

2010-12-06

Bash-Prompt-HOWTO

Bash-Prompt-HOWTO.pdf

2010-12-06

Linux Advanced Routing and Traffic Control HOWTO en

英文版 参考http://lartc.org/

2010-12-02

Linux Andvanced Routing and Traffic Control

Linux高级路由和流量控制howto 经典流量控制之作,不用多说

2010-12-02

WLAN基础知识 WLAN基础知识

WLAN基础知识 802.11协议族 WLAN设备 WLAN的典型部署

2010-06-29

Linux Routing.chm

Linux Routing.chm 学习Linux路由

2009-03-18

Advanced Linux Networking

Advanced Linux Networking.chm

2009-03-18

Advanced Linux Programming

Advanced Linux Programming

2009-03-18

深入浅出MFC.pdf

深入浅出MFC(第二版) 目录 第0章 你一定要知道(导读) 这本书适合谁 你需要什么技术基础 你需要什么软硬件环境 让我们使用同一种语言 本书符号习惯 本书例程的取得 范例程序说明 与前版本之差异 如何联络作者 第一篇 勿在浮砂筑高台 第1章 Win32程序基本概念 Win32程序开发流程 需要什么函数库(.LIB) 需要什么头文件(.H) 以消息为基础,以事件驱动之(message based,event driven) 一个具体而微的Win32程序 程序进入点WinMain 窗口类之注册与窗口之诞生 消息循环 窗口的生命中枢:窗口函数 消息映射(Message Map)的雏形 对话框的运行 模块定义文件(.DEF) 资源描述档(.RC) Widnows程序的生与死 空闲时间的处理:OnIdle Console程序 Console程序与DOS程序的差别 Console程序的编译链接 JBACKUP:Win32 Console程序设计 MFCCON:MFC Console程序设计 行程与线程(Process and Thread) 核心对象 一个行程的诞生与死亡 产生子行程 一个线程的诞生与死亡 以_beginthreadex取代CreateThread 线程优先级(Priority) 多线程程序设计实例 第2章 C++的重要性质 类及其成员——谈封装(encapsulation) 基类与派生类:谈继承(Inheritance) this指针 虚拟函数与多态(Polymorphism) 类与对象大解剖 Object slicing与虚拟函数 静态成员(变量与函数) C++程序的生与死:兼谈构造函数与解构函数 四种不同的对象生存方式(in stack、in heap、global、local static) 执行期类型信息(RTTI) 动态生成(Dynamic Creation) 异常处理(Exception Handling) Template Template Functions Template Classes Template的编译与链接 第3章 MFC六大关键技术之仿真 MFC类层次结构 Frame 1范例程序 MFC程序的初始化过程 Frame 2范例程序 RTTI(执行期类型识别) 类别型录网与CRuntimeClass DECLARE_DYNAMIC/IMPLEMENT_DYNAMIC宏 Frame 3范例程序 IsKindOf(类型识别) Frame 4范例程序 Dynamic Creation(动态生成) DECLARE_DYNCREATE/IMPLEMENT_DYNCREATE宏 Frame 6范例程序 Persistence(永久保存)机制 Serialize(数据读写) DECLARE_SERIAL/IMPLEMENT_SERIAL宏 没有范例程序 Message Mapping(消息映射) Frame 7范例程序 Command Routing(命令传递) Frame 8范例程序 本章回顾 第二篇 欲善工事先利其器 第4章 Visual C++集成开发环境 安装与组成 四个重要的工具 内务府总管:Visual C++集成开发环境 关于project 关于工具设定 Source Browser Online Help 调试工具 VC++调试器 Exception Handling 程序代码产生器:AppWizard 东圈西点完成MFC程序骨干 威力强大的资源编辑器 Icon编辑器 Cursor编辑器 Bitmap编辑器 工具栏(Toolbar)编辑器 VERSIONINFO资源编辑器 字符串表格(Accelerator)编辑器 菜单(Menu)编辑器 加速键(Accelerator)编辑器 对话框(Dialog)编辑器 Console程序的项目管理 第三篇 浅出MFC程序设计 第5章 总观Application Framework 什么是Application Framework? 侯捷怎么说 我怎么说 别人怎么说 为什么使用Application Framework Microsoft Foundation Classes(MFC) 白头宫女话天宝:Visual C++与MFC 纵览MFC General Purpose classes CObject 数据处理类(collection classes) 杂项类 异常处理类(exception handling classes) Windows API classes Application framework classes High level Abstractions Afx全局函数 MFC宏(macros) MFC数据类型(data types) 第6章 MFC程序的生死因果 不二法门:熟记MFC类的层次结构 需要什么函数库? 需要什么头文件? 简化的MFC程序结构——以Hello MFC为例 Hello程序程序代码 MFC程序的来龙去脉(causal relations) 我只借用两个类:CWinApp和CFrameWnd CWinApp——取代WinMain的地位 CFrameWnd——取代WndProc的地位 引爆器——Application object 隐晦不明的WinMain AfxWinInit——AFX内部初始化操作 CWinApp::InitApplication CMyWinApp::InitInstance CFrameWnd::Create产生主窗口(并先注册窗口类) 奇怪的窗口类名称Afx:b:14ae:6:3e8f 窗口显示与更新 CWinApp::Run——程序生命的活水源头 把消息与处理函数连接在一起:Message Map机制 来龙去脉总整理 Callback函数 空闲时间(idle time)的处理:OnIdle Dialog与Control 通用对话框(Common Dialogs) 本章回顾 第7章 简单而完整:MFC骨干程序 不二法门:熟记MFC类层次结构 MFC程序的UI新风貌 Document/View支撑你的应用程序 利用Visual C++工具完成Scribble step0 骨干程序使用哪些MFC类? Document Template的意义 Scribble的Document/View设计 主窗口的诞生 工具栏和状态栏的诞生(Toolbar&Status bar) 鼠标拖放(Drag and Drop) 消息映射(Message Map) 标准菜单File/Edit/View/Window/Help 对话框 改用CEditView 第四篇 深入MFC程序设计 第8章 Document-View深入探讨 为什么需要Document-View(形而上) Document View Document Frame(View Frame) Document Template CDocTemplate管理CDocument/CView/CFrameWnd Scribble Step1的Document——数据结构设计 MFC Collection Classes的选用 CScribbleDoc的修改 文件:一连串的线条 线条与坐标点 Scribble Step 1的View:数据重绘与编辑 CScribbleView的修改 View的重绘操作:GetDocument和OnDraw ClassWizard的辅佐 WizardBar的辅佐 Serialize:对象的档案读写 Serialization以外的档案读写操作 台面上的Serialize操作 台面下的Serialize写档奥秘 台面下的Serialize读档奥秘 DYNAMIC/DYNCREATE/SERIAL三宏 Serializable的必要条件 CObject类 IsKindOf IsSerializable CObject::Serialize CArchive类 operator《和operator》 效率考虑 自定SERIAL宏给抽象类使用 在CObList中加入CStroke以外的类 Document与View交流——为Step4做准备 第9章 消息映射与命令传递 到底要解决什么 消息分类 万流归宗Command Target(CCmdTarget) 三个奇怪的宏,一张巨大的网 DECLARE_MESSAGE_MAP宏 消息映射网的形成:BEGIN…/ON…/END…宏 米诺托斯(Minotauros)与西修斯(Theseus) 二万五千里长征——消息的传递 直线上溯(一般Windows消息) 拐弯上溯(WM_COMMAND命令消息) 罗塞达碑石:AfxSig_xx的奥秘 Scribble Step2:UI对象的变化 改变菜单 改变工具栏 利用ClassWizard连接命令项识别码与命令处理函数 维护UI对象状态(UPDATE_COMMAND_UI) 本章回顾 第10章 MFC与对话盒 对话框编辑器 利用ClassWizard连接对话框与其专用类 对话框的消息处理函数 对话框数据交换与校验(DDX&DDV) 如何唤起对话框 本章回顾 第11章 View功能的加强与重绘效率的提高 同时修改多个Views:UpdateAllViews和OnUpdate 在View中定义一个hint 把hint传给OnUpdate 利用hint增加重绘效率 可卷动的窗口:CScrollView 大窗口中的小窗口:Splitter 切分窗口的功能 切分窗口的程序概念 切分窗口的实现 本章回顾 第12章 打印与预览 概述 打印操作的后台原理 MFC默认的打印机制 Scribble打印机制的增强 打印机的页和文件的页 配置GDI绘图工具 尺寸与方向:关于映射方式(坐标系统) 分页 页眉与页脚 动态计算页码 打印预览(Print Preview) 本章回顾 第13章 多重文件与多重显示 MDI和SDI 多重显示(Multiple Views) 窗口的动态切分 窗口的静态切分 CreateStatic和CreateView 窗口的静态三叉切分 Graph范例程序 静态切分窗口之观念整理 同源子窗口 CMDIFrameWnd::OnWindowNew Text范例程序 非标准做法的缺点 多重文件 新的Cocument类 新的Document Template 新的UI系统 新文件的档案读写操作 第14章 MFC多线程程序设计 从操作系统层面看线程 三个观念:模块、行程和线程 线程优先级(Priority) 线程调度(Scheduling) Thread Context 从程序设计层面看线程 Worker Threads和UI Threads 错误观念 正确态度 MFC多线程程序设计 探索CWinThread 产生一个Worker Thread 产生一个UI Thread 线程的结束 线程与同步控制 MFC多线程程序例程 第15章 定制一个AppWizard 到底Wizard是什么? Custom AppWizard的基本操作 剖析AppWizard Components Dialog Templates和Dialog classes Macros Directives 动手修改Top Studio AppWizard 利用资源编辑器修改IDD_CUSTOM1对话框画面 利用ClassWizard修改IDD_CUSTOM1对话框的对应类CCustomlDlg 改写OnDismiss虚拟函数,在其中定义macros 修改text template Top Studio AppWizard执行结果 更多的信息 第16章 站上众人的肩膀——使用Components&activeX Controls 什么是Component Gallery 使用Components Splash screen system Info for About Dlg Tip of the Day Components实际运用:ComTest程序 修改ComTest程序内容 使用ActiveX Controls ActiveX Control基础观念:Properties、Methods、Events ActiveX Controls的五大使用步骤 使用ActiveX Control:OcxTest程序 第五篇 附录 附录A 无责任书评:从摇篮到坟墓Windows的完全学习 无责任书评:MFC四大天王 附录B Scribble Step 5完整原始码 附录C Visual C++5.0MFC范例程序一览 附录D 以MFC重建DBWIN

2008-11-21

在 C/C++ 中调用 Java

从 C/C++ 中调用 Java 代码,有一下几个步骤: 1.创建 JVM。调用 JNI_CreateJavaVM()。 2.寻找要调用的类。调用 FindClass()。 3.找到要调用的方法。调用 GetStaticMethodID()/GetMethodID()。 4.运行方法。调用 CallStaticMethod()/CallMethod()。 5.退出 JVM。调用 DestroyJavaVM()。 .............

2008-10-08

SQL_C_API.pdf

C环境开发SQL的API函数. PDF 版本

2007-10-23

shell基础十二篇.pdf

介绍linux shell的基础<br>适合初学者

2007-10-23

空空如也

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

TA关注的人

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