自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(78)
  • 收藏
  • 关注

per-CPU变量的静态和动态分配原理

per-CPU是2.6内核中引入的,访问per-CPU变量几乎不需要锁,每个处理器都在其自己的副本上工作。这些副本是如何生成的呢?本文尝试解答这个问题。静态per-CPU结构设计思路大体可以分为两个阶段:编译阶段和运行时阶段在编译阶段,实际上只生成了一个CPU原本。系统中所有per-CPU结构都放到了一个叫做"data.percpu"的section中,在ld.S链接脚...

2009-12-31 22:05:00 181

Kfree会睡眠吗?

回答:不会!kmalloc会。所以,不能在spinlock环境下调用kmalloc。http://lkml.indiana.edu/hypermail/linux/kernel/0411.2/1863.html

2009-12-30 17:35:00 118

网友图解《走出软件作坊1》

网友原地址为:http://zhaoguoqing.spaces.live.com/blog/cns!179C0A825FB6EDED!1046.entry首先请国庆同学原谅,不知道如何联系到你,偶先在这里转载了。如果你看到,请联系我。我的联系方式 david_lv_work@sina.com《走出软件作坊》网上评论:http://www.douban.co...

2009-12-30 12:49:00 57

Linux ELF文件装入与执行概述

ELF是linux中使用最广泛的一种应用程序格式,为了弄清楚Linux内核是如何讲ELF文件精确映射到指定内存空间,上周末把内核sys_execve部分好好看了一遍,小结如下:1. ELF格式ELF指定了进程中text段、bss段、data段等应该放置到进程虚拟内存空间的什么位置,以及记录了进程需要用到的各种动态链接库的位置。2. sys_execve的大致执行流程 1) 打开...

2009-12-28 20:37:00 136

2009年中国IT行业大事记

2009年就要结束了,该是总结的时候了一、手机类:1 android已经升级很多版了,中国移动也出了ophone了,但这两者问题都不少。2 大家都模仿iphone硬件和iphone应用商店3 iphone上的应用大部分都是游戏。大量的手机淘金者也都感叹iphone上比较难出人头地了。不过大家还是期望着做国外软件。国内的不付费市场让人遗憾,大家都建议做外国软件比较好赚钱...

2009-12-28 11:22:00 99

VC6.0调用ASP.NET WebService示例

开发平台:WinXP SP3+IIS5.1+IE7+Visual Studio 2005+Visual Studio 6.0+ MS SOAP Toolkit 3.0一.创建ASP.NET WebServiceVisual Studio 2005à文件à新建à网站àASP.NET Web服务项目WebServiceDemo。以下为Service.cs代码清单:// WebS...

2009-12-27 20:40:00 170

Guidance of SOAP

What is a Web Service?Web Services Standards(XML -based)-SOAP(Simple Object Access Protocol)-WSDL(Web Service Description Language)-UDDI(Universal Description,Discovery,Integration)-WS-I(Int...

2009-12-27 20:35:00 103

动态链接库的创建和使用示例

1.新建一个WorkSpace—DllSample。2.Add New Project to Workspace,新建工程MyDll,工程类型选择“Win32 Dynamic-Link Library”,选择“A DLL that exports some symbols”,即要求VC++自动生成一些导出符号代码。(1) 在头文件MyDll.h中添加导出变量、函数和类的声明。// ...

2009-12-27 20:15:00 128

MsXml创建和解析XML示例

一.MsXml创建XML文档示例// XmlCreationDemo.cpp#include <stdlib.h>#include <stdio.h>// 引入MSXML解析器#import <msxml4.dll>using namespace MSXML2;class InitializeCom{public:...

2009-12-27 19:38:00 139

MsXml DOM对象与接口

This part of the XML Document Object Model (DOM) reference describes the programming object syntax. The first table lists the core objects/interfaces. The second table lists the implemented objects/in...

2009-12-27 19:27:00 178

WinSock服务器设计的四个关键问题

6.2.1 接受连接的方法Winsock扩展函数AcceptEx是唯一能够使用重叠I/O接受客户连接的函数。下面主要深入探讨使用该函数接收连接的问题。前面已经讨论过,当客户连接进来时,服务器需要创建一个套接字来负责维护与一个客户端的会话。使用AcceptEx函数之前必须创建一些套接字,并且这些套接字必须是未绑定、未连接的,即使它们可能在调用TransmitFile, TransmitPac...

2009-12-27 19:00:00 77

WinSock五种I/O模型性能分析

五种I/O模型的性能分析重叠I/O模型的另外几个优点在于,微软针对重叠I/O模型提供了一些特有的扩展函数。当使用重叠I/O模型时,可以选择使用不同的完成通知方式。采用事件对象通知的重叠I/O模型是不可伸缩的,因为针对发出WSAWaitForMultipleEvents调用的每个线程,该I/O模型一次最多都只能支持6 4个套接字。假如想让这个模型同时管理不止64个套接字,必须创建额外的工作者...

2009-12-27 18:54:00 80

应用层通信协议开发浅析

1.通信协议的概念及其要素在OSI开放互联参考模型中,对等实体之间数据单元在发送方逐层封装,在接收方的逐层解析。发送方N层实体从N+1层实体得到的数据包称为服务数据单元(Service Data Unit,SDU)。N层实体只将其视为需要本实体提供服务的数据,将服务数据单元进行封装,使其成为一个对方能够理解的数据单元(Protocol Data Unit,PDU),封装过程实际上是...

2009-12-27 15:20:00 285

WinSock完成端口I/O模型

关于重叠I/O,参考《WinSock重叠I/O模型》;关于完成端口的概念及内部机制,参考译文《深度探索I/O完成端口》。完成端口对象取代了WSAAsyncSelect中的消息驱动和WSAEventSelect中的事件对象,当然完成端口模型的内部机制要比WSAAsyncSelect和WSAEventSelect模型复杂得多。IOCP内部机制如下图所示: 在WinSock中编写...

2009-12-27 14:50:00 70

从开心农场到产品周期管理

大约半年前,我上一个公司客户部和商务部的JJMM们,每天都是在偷车,养狗,种菜。还有就是盖房子,有的甚至把自己家真实小区的房子都盖出来和装修出来了。每天吃饭,坐车,其他闲聊的话题都是偷,偷,偷。用一句话江湖的黑话就是:今天你偷了没有?对,今天你偷了没有?今天我没偷!!!半年后的今天我已经决定把开心农场抛弃了,虽然我最开始玩开心农场的目的就是体验一二,而不是偷东西。我决定...

2009-12-27 14:47:00 74

深度探索I/O完成端口

引言要想编写一个高性能的服务器应用程序,必须实现一个高效的线程模型。让太少或者太多的服务器线程来处理客户的请求,都可能导致性能问题。例如,如果一个服务器创建单个线程来处理所有的请求,那么客户端可能长期等待而得不到响应,因为服务器同一时刻只能忙于处理一个请求。当然单个线程也能并发处理多个请求,当I/O操作被启动时,它可以从一个请求切换到另一个请求,但是这种结构相当复杂,并且不能充分利用多处理器的...

2009-12-27 14:47:00 78

WinSock重叠I/O模型

一.重叠I/O模型的概念当调用ReadFile()和WriteFile()时,如果最后一个参数lpOverlapped设置为NULL,那么线程就阻塞在这里,直到读写完指定的数据后,它们才返回。这样在读写大文件的时候,很多时间都浪费在等待ReadFile()和WriteFile()的返回上面。如果ReadFile()和WriteFile()是往管道里读写数据,那么有可能阻塞得更久,导致程序性能下...

2009-12-27 14:41:00 81

WinSock三种选择I/O模型

在《套接字socket及C/S通信的基本概念》和《WinSock编程基础》中,我们介绍了套接字的基本概念和WinSock API的基本调用规范。我们讨论了阻塞模式/非阻塞模式和同步I/O和异步I/O等话题。从概念的角度,阻塞模式因其简洁易用便于快速原型化,但在应付建立连接的多个套接字或在数据的收发量不均、时间不定时却极难管理。另一方面,我们需要对非阻塞模式套接字的 WinSock API调用频...

2009-12-27 14:38:00 83

WinSock编程基础

在上一篇中,我们具体介绍了socket的相关概念,本节将概述套接字规范及操作的一些基础性知识。一.套接字的一些基础知识1.Windows通信相关驱动netio.sys(Network I/O Subsystem)ndis.sys(NDIS Driver)ipnat.sys(IP Network Address Translator)tcpip.sys(TCP/IP D...

2009-12-27 14:30:00 129

套接字socket及C/S通信的基本概念

一.套接字Socket基本概念WinSock(Windows Sockets)是处理网络通信的Windows API。许多函数与在BSD中使用的Berkely套接字函数是相同的。套接字,简单的说就是通信双方的一种约定,用套接字中的相关函数来完成通信过程。应用层通过传输层进行数据通信时,TCP和UDP会遇到同时为多个应用程序进程提供并发服务的问题。多个TCP连接或多个应用程序进程可能需要...

2009-12-27 14:20:00 174

TCP连接与关闭过程

在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接,如图1所示。 (1)第一次握手:建立连接时,客户端A发送SYN包(SYN=j)到服务器B,并进入SYN_SEND状态,等待服务器B确认。(2)第二次握手:服务器B收到SYN包,必须确认客户A的SYN(ACK=j+1),同时自己也发送一个SYN包(SYN=k),即SYN+ACK包,此时服务器B进入SYN_RECV状...

2009-12-27 14:13:00 67

TCP/IP数据报格式

IP数据报格式IP数据报(datagram)的头部格式如下:Example Internet Datagram HeaderVersion:4 bits版本字段标明建立数据报的IP版本,目前的IP版本是IPv4,IPv6正在发展中。IPv4:0100。IHL:4 bitsIP数据报头部长度(Internet Header Length),其度量单位为4 Bytes(...

2009-12-27 14:08:00 164

技术改变未来

前几日在阅读某人的MSN SPace的时,顺便看了一下对方的相册,发觉了一个比较有趣的东西:微软的MSN的相册的背景颜色居然在变化,随着照片的主题颜色进行变化。给人一种很好的视觉效果这种根据照片主体颜色来显示背景颜色的方案对于照片的显示效果完全是不一样的,更人性化,更加的协调和统一相比于现在网上到处都是的黑色背景相册来说是完全不一样的。很多东西不是技术实现不了,而是我们的思维限制了...

2009-12-27 14:04:00 63

I/O管理器及IRP缓冲区管理

I/O管理器 I/O 管理器定义了有序的结构,或者说是模型,在这个模型里将I/O请求发送给设备驱动程序。I/O系统是包驱动的,大部分I/O请求用I/O请求包(IRP)代表,从一个I/O系统组件传送到另一个组件。(注意:快速I/O不是IRP。)这种设计允许一个应用程序线程可以同时管理多个I/O请求。一个IRP是一个数据结构,包含了完整地描述一个I/O请求的信息。(可以通过Windbg内核调试扩展...

2009-12-26 22:36:00 75

线程的调度

概述Windows 实现了一个由优先级驱动,抢占式的调度系统,也就是最高优先级的可运行的(就绪状态下的)线程总是先运行。 有一种现象称之为“处理器亲合(processor affinity)”,即线程可能受处理器限制,只运行在那些允许它运行的处理器上。缺省的设置是线程可运行在任何可用的处理器上,用户可以通过使用一个Win32的调度函数修改处理器的“亲合性”。 当一个线程被选择运行,它所...

2009-12-26 22:26:00 98

线程的数据结构

除非显式地声明,否则,你可以假设以下讨论的内容既适合用户模式的线程,也适用于内核模式的线程。在系统级别上,Windows线程是由一个线程块执行体(ETHREAD)来表示的,如图6.7所示。ETHREAD块和它所指向的结构都位于系统地址空间中,唯一的例外是线程环境快(TEB),它位于进程地址空间中。而且,Windows子系统进程(Csrss)为Windows进程中创建的每个线程维护了一个平行结构...

2009-12-26 22:24:00 180

MFC GDI坐标映射例解

(1)建立单文档MFC项目Draw:NewàProjectsàMFC AppWizard(EXE)àSingle Document。(2)找到CMainFrame::PreCreateWindow函数,在其中设置默认窗口大小为400 pixel*300 pixel。BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs){ if(...

2009-12-26 21:54:00 98

MFC GDI绘图基础

一.关于GDI的基本概念什么是GDI?Windows绘图的实质就是利用Windows提供的图形设备接口GDI(Graphics Device Interface)将图形绘制在显示器上。在Windows操作系统中,动态链接库C:/WINDOWS/system32/gdi32.dll(GDI Client DLL)中定义了GDI函数,实现与设备无关的包括屏幕上输出像素、在打印机上输出硬拷贝...

2009-12-26 21:39:00 101

Windows编程之MFC向导程序框架

1.使用MFC AppWizard生成一个单文档应用程序框架。(1)启动Visual Studio 6.0(2) 文件->新建->项目->MFC AppWizard(exe)->输入项目名称MySDI(3) Step1,选择Single Document。(4) Step2~6,选择默认。(5) F7,Build MySDI.exe即可运行。 2.MFC程序框架解析...

2009-12-26 21:07:00 132

Windows编程之MFC窗口程序浅析

除了传统的SDK方式编写Windows应用程序外,还可以使用微软的基础类库MFC。它采用C++程序设计语言对SDK函数进行包装,使Windows下的C语言程序设计,成为面向对象的MFC。以下为MFC窗口应用程序框架示例及解析。1.建立Win32项目FirstMFC打开Visual Studio 2005à文件à新建à项目àVisual C++àwin32àwin32项目àwin32...

2009-12-26 20:54:00 154

Windows编程之SDK窗口程序浅析

#include <windows.h>BOOL InitWindowsClass(HINSTANCE hInstance); // 注册窗口类BOOL InitWindows(HINSTANCE hInstance, int nCmdShow); // 创建窗口LRESULT CALLBACK WndProc(HWND, UIN...

2009-12-26 20:44:00 85

Windows编程之从控制台到SDK窗口

1.典型C/C++程序/*HelloC.c*/#include<stdio.h>int main(int argc, char *argv[]){ printf("Hello C!/n"); return 0;}// HelloCPP1.cpp#include<iostream>int main(int arg...

2009-12-26 20:38:00 81

Windows编程之基础概念篇

一.几个What什么是API?API是英文 Application Programming Interface 的简称,意为“应用程序接口”,泛指系统为应用程序提供的一系列接口函数。Windows API是Windows操作系统与应用程序之间的标准接口,它提供了上千个API标准函数、宏和数据结构。在使用VB,VC,Dephi编写应用程序时都可以调用Windows API函数。 什么是S...

2009-12-26 20:32:00 83

由MessageBox透视Win32 API的调用

下面我们来看看Windows平台下应用程序是怎么调用Windows提供的底层API服务运行的。 我们编写Win32SDK程序时,需要弹出对话框以作出友好的选择,MessageBox这个API函数就可以实现该功能。在开头要添加<windows.h>,因为其包含了众多的API函数声明头文件。为了探究这个小小的MessageBox是怎么弹出来的,我们右击MessageBox,选择“Go ...

2009-12-26 20:21:00 120

从char/wchar_t到TCHAR

一.ANSI和UNICODE1.为什么要使用UNICODE?(1) 可以很容易地在不同语言之间进行数据交换。(2) 使你能够分配支持所有语言的单个二进制.exe文件或DLL文件。 (3) 提高应用程序的运行效率。Windows 2000是使用UNICODE从头进行开发的,如果调用任何一个Windows函数并给它传递一个ANSI字符串,那么系统首先要将字符串转换成UNICODE,...

2009-12-26 20:08:00 102

Windows/MFC数据类型

#define FALSE 0 afx.h#define TRUE 1 afx.h#define NULL 0 afx.htypedef void VOID winnt.h// 短整型typedef unsigned shorttypedef unsigned short USHORT; windef.htypedef unsigned short WORD; wind...

2009-12-26 20:01:00 63

Visual C++ 2005使用入门

功能强大的Visual studio 2005 IDE庞大的开发环境和N多的配置设置,学习起来还不是很简单。C++/CLI通过对ISO C++ 标准的纯粹扩展和新语法,不像传统的MS-DOS 控制台程序,所以对于新手,首先应弄明白怎样在Visual studio 2005开发环境下编译常规控制台应用程序及Windows应用程序。1)win32控制台应用程序文件à新建à项目à Visua...

2009-12-26 19:44:00 175

VC项目配置基础

一.IDE基础配置1. 字体VC6中“Tools→Options→Format→Font”配置字体;VC2005中“工具→选项→环境→字体和颜色”配置字体。编写代码一般采用等宽字体,等宽点阵(位图)字体,相对矢量字体而言具有兼容性好和显示清晰的优点。常用的编程等宽字体包括Fixedsys(VC6和notepad御用字体)、Consolas、YaHei Mono。VC6默认可选字体只有Fix...

2009-12-26 19:19:00 220

继承本质论

1.对象的创建过程Bird bird创建的是一个Bird类型的引用,而new Bird()完成的是创建Bird对象,分配内存空间和初始化操作,然后将这个对象引用赋给bird变量,也就是建立bird变量与Bird对象的关联。2.从继承的角度分析对象的创建过程在此我们以Chicken对象的创建为例,首先是字段,对象一经创建,会首先找到其父类Bird,并为其字段分配存储空间,而Bird也会继...

2009-12-26 19:06:00 89

标准C++中的STL容器类简介

SGI -- Silicon Graphics[Computer System] Inc.硅图[计算机系统]公司.STL -- Standard Template Library 标准模板库。容器的概念所谓STL容器,即是将最常运用的一些数据结构(data structures)实现出来。容器是指容纳特定类型对象的集合。根据数据在容器中排列的特性,容器可概分为序列式(seque...

2009-12-26 15:29:00 132

空空如也

空空如也

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

TA关注的人

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