随笔 - 60  文章 - 5  trackbacks - 0
<2024年12月>
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

常用链接

留言簿(2)

随笔分类(42)

随笔档案(60)

文章档案(2)

我收藏的博客

搜索

  •  

最新评论

阅读排行榜

评论排行榜

在WindowsXP sp2以后,鉴于安全方面的考虑,XP的网络共享仅启用了简单的共享模式;用户若要自义共享则会遇到这样或那样的问题,不是找不到网络名就是权限不够。
    对于网络共享,XP提供了两种模式:一种是简单的共享模式,一种是高级的共享模式(即经典模式),第一种模式的共享默认只能使用来宾帐户身份来访问,而 XP的来宾帐户恰好是禁用的,所以在这种模式下的共享肯定是不成功的;那么经典共享模式则允许高级用户以自己的身份去访问网络,用户权限足够的话也可以对网络上的文件进行改写等操作。

下面就如何开启XP的经典共享模式作一下简单的介绍,共享笔者的经验,以减少大家不必要的麻烦。

1.首先打开运行对话框,键入:gpedit.msc ,进入组策略编辑器,
2.依次展开 计算机配置 —〉Windows设置—〉安全设置—〉本地策略—〉安全选项,
3.在策略列表中找到 “网络访问:本地帐户的共享和安全模式”,
4.双击打开该条策略的属性对话框,选择“经典—本地用户以自己的身份验证”。

至此,我们已成功开启XP的经典共享模式。
posted @ 2009-05-31 16:49 黄剑父 阅读(225) | 评论 (0)编辑 收藏
GlobalAlloc是标准内存管理函数,标准内存管理函数都是操作进程的默认堆,所以这个函数是从进程的从进程的默认堆中分配内存空间,分配的空间可以是可移动的也可以是不可以移动的。可移动的内存是指windows在需要的时候可以将这个内存移动到另外一个地址  
   
  HeapAllock是堆管理函数,堆管理函数可以操作非默认堆(当然也可以操作默认堆),创建一个堆是用HeapCreate,这个函数返回一个堆句柄,然后可以用在HeapAllock函数中,即从返回的这个堆中申请内存空间,HeapAllock申请的内存只能是不可以移动的  
   
  而new则是c++的标准函数,在windows的vc++编译器中,new在申请内存最终调用的是GlabalAllock,不过new还会调用类的构造函数。  
   
  windows的内存管理除了标准内存管理函数和堆管理函数之外,还有更加底层的虚拟内存管理函数,VirtualAllock就是一个虚拟内存管理函数。
posted @ 2009-05-31 16:46 黄剑父 阅读(155) | 评论 (0)编辑 收藏

物理地址是外部连接使用的、唯一的,它是“与地址总线相对应”;而逻辑地址是内部和编程使用的、并不唯一。 在内存中的实际地址就是所谓的“物理地址”,而逻辑地址就是逻辑段管理内存而形成的。 例如,你在进行C语言指针编程中,可以读取指针变量本身值(&操作),实际上这个值就是逻辑地址,它是相对于你当前进程数据段的地址(偏移地址),不和绝对物理地址相干。只有在Intel实模式下,逻辑地址才和物理地址相等(因为实模式没有分段或分页机制,Cpu不进行自动地址转换),逻辑地址也就是Intel 保护模式下程序执行代码段限长内的偏移地址(假定代码段、数据段如果完全一样)。8086体系的CPU一开始是20根地址线, 寻址寄存器是16位, 16位的寄存器可以访问64K的地址空间, 如果程序要想访问大于64K的内存, 就要把内存分段, 每段64K, 用段地址+偏移量的方法来访问 。386CPU出来之后, 采用了32条地址线, 地址寄存器也扩为32位, 这样就可以不用分段了, 直接用一个地址寄存器来线性访问4G的内存了. 这就叫平面模式.

逻辑地址中的段地址左移4位,加上偏移地址就得到20位物理地址这里左移的4位是二进制位如果用十六进制表达地址就是左移一位。左移4位还可以表达为乘以16,即:段地址×16+偏移地址。
同一个物理地址可以对应多个逻辑地址形式。所以物理地址转换为逻辑地址,需要明确段基地址或偏移地址,然后同上原则确定另一个地址。
逻辑地址 1460H : 0100H 或1380H : 0900H
物理地址 14700H
于是,对于主存14700H单元,我们可以描述为在1460H(或1380H)段的0100H(或0900H)单元,或者说主存1460H : 0100H(或1380H : 0900H)单元。

存储单元的地址可以用段基值和段内偏移量来表示,段基值确定它所在的段居于整个存储空间的位置,偏移量确定它在段内的位置,这种地址表示方式称为逻辑地址

8086对外连接使用一个20位的线性地址唯一确定一个存储单元,也就是说:对于每个存储器单元都有的一个唯一的20位地址,我们称为该单元的物理地址绝对地址

8086在内部结构中和程序设计时采用逻辑段管理内存,就形成了逻辑地址。它的表达形式为“段基地址 : 偏移地址”。

posted @ 2009-05-31 16:05 黄剑父 阅读(564) | 评论 (0)编辑 收藏
【DriverEntry】
Each driver must have a [DriverEntry] routine,which initializes driver-wide data structures and resources.The I/O manager calls the DriverEntry routine when it loads the driver.
DriverEntry is the first routine called after a driver loaded,and is responsible for initializing the driver.
DriverEntry routine are called in the context of a system thread at IRQL=PASSIVE_LEVEL.


posted @ 2009-05-31 14:25 黄剑父 阅读(141) | 评论 (0)编辑 收藏
__try Begins a guarded body of code. Used with the __except keyword to construct an exception handler, or with the __finally keyword to construct a termination handler.
__except Begins a block of code that is executed only when an exception occurs within its associated __try block.
__finally Begins a block of code that is executed whenever the flow of control leaves its associated __try block.
__leave Allows for immediate termination of the __try block without causing abnormal termination and its performance penalty.
posted @ 2009-05-31 14:24 黄剑父 阅读(1758) | 评论 (0)编辑 收藏
近四百年来,西方文化成为引领世界的主流。我们一直在说民族复兴,在想我们古代的四大发明,特别是说到火药,西方人利用火药,打开了我们的国门,掠夺了中华民族的物质财富。我们自己却在用火药放鞭炮,烟花。到现在我们至今仍然落后于西方国家。如今冷静下来,稍微算一算账,发现西方主导的结果,竟然是浪费地球能源、破坏自然生态、漠视社会主义、欺压弱势族群。这才猛然觉醒,我们现在所谈的民族复兴的目标是什么。因为至今为止,所谓民族复兴的目的、意义,我还不清楚。想想我们的先人创造的古文明,能够经历这么久远,有一些古代的思想,《易经》、道家、儒家等等思想,还有人舍不得丢弃,是不是有另一番道理?我们在学习西方文化的同时,是不是也要好好拿起自家的东西,好好学习,好好研究。
特别是近代,我们在学习西方的时候,付出了什么样的代价,带给了我们什么样的利益,为我们的民族复兴做出了什么样的贡献,我想大家都应该好好的好好的想想。

posted @ 2009-05-20 22:24 黄剑父 阅读(1128) | 评论 (0)编辑 收藏
ACE的构建(VC++6.0环境)
Windows下ACE的构建
1. 将ACE-5.5.zip解压到所需的安装目录,此处以E:\为例,解压后形成ACE_wrappers文件夹,因此ACE将会存在于ACE_wrappers\ace目录中。ACE_ROOT=E:\ACE_wrappers。
2. 在系统中新建ACE_ROOT环境变量,值设为 E:\ACE_wrappers。具体设置为:我的电脑->属性->高级->环境变量->新建
3. 在E:\ACE_wrappers\ace目录中创建一个头文件,命名为config.h,其内容为:
#include "ace/config-win32.h"(必选项)
#define ACE_HAS_STANDARD_CPP_LIBRARY 1 (MSVC自带的标准C++头文件)
#define ACE_HAS_MFC 1(与MFC一起使用)
#define ACE_NO_INLINE(取消函数内联从而减小静态库和运行码的大小)
#define ACE_AS_STATIC_LIBS(构建ACE的静态版本)
#define ACE_HAS_WINNT4 0(在Windows 9x/me上构建所需,在ACE中移掉一些WinNT/Win2K中特有的代码)
以上只需要添加前两项就可以了。
4. 在VC++中加载ACE的工程文件(ACE_ROOT \ace\ace.dsw),在release和debug两种编译方式下进行编译,得到相应的库文件(ACE.dll、ACE.lib 和 ACEd.dll、ACEd.lib),其中ACE.dll 、ACE.lib是由release版生成的,ACEd.dll、ACEd.lib是由debug版生成的。具体操作方法:运行VC++,选择Build ->Batch Build…,将ACE-Win32 Debug和ACE-Win32 Release全部选中,Rebuild All即可。如下图所示:

按照上面的方法可能只编译出ACE.dll 、ACE.lib库文件,具体原因还不详。按照下面的操作方法进行编译可以成功生成全部库文件。具体操作方法:Build->Set Active Configuration…分别选中ACE-Win32 Release进行编译即可。如下图所示

同样打开ace_static.dsw编译生成ACEs.lib、 ACEsd.lib、ACE_RMCasts.lib、ACE_RMCastsd.lib、TMCasts.lib、TMCastsd.lib

5. 配置ACE环境。 打开VC++6.0,选择Tools->Options->Directories 加入以下内容:
1) Executable File:E:\ACE_wrappers\bin
2) Include File:E:\ACE_wrappers
3) Library Files:E:\ACE_wrappers\lib
4) Source Files:E:\ACE_wrappers
在编写程序时要在Project->Settings菜单中进行如下设置:
C/C++选项卡:
Code Generation:选择多线程版运行时库(Multithreaded DLL)。
Preprocessor:在“Additional include directories”域中加入$ACE_ROOT。  
Link选项卡:
Input:在“Object/library modules”域中包含适当的ACE库文件,在“Additional library
path”域中包含ACE库链接文件的路径。这通常是ACE_ROOT/ace。
其中 DLL debug对应ACEd.lib
    DLL release对应ACE.lib
    Static library debug对应ACEsd.lib
    Static library release对应ACEs.lib
    MFC DLL debug对应ACEmfcd.lib
    MFC DLL release对应ACEmfc.lib
   主要用到以上两个库。

6. 在系统环境的变量 path中加入E:\ACE_wrappers\bin,否则在运行程序的时候碰到寻找ace.dll或者aced.dll的问题。
7. 在MFC程序中使用时,应该在InitInstance()中添加:
WSDATA wsData;
WORD VerRequested = MAKEWORD (2, 2);
WSAStarup (VerRequested, &wsData)
注:可以在头文件中加入如下代码就不用再手动填加lib库文件
#ifdef _DEBUG
#pragma comment (lib,"aced.lib")
#else
#pragma comment (lib,"ace.lib")
#endif
8. 在windows下release时有可能报错,错误如下:
error C2039: 'TryEnterCriticalSection' : is not a member of '`global
error C2065: 'TryEnterCriticalSection' : undeclared identifier
解决办法:
工程 Project-->setting-->C/C++   写入:_WIN32_WINNT=0x0500
Linux 下ACE的构建
1. 设置环境变量ACE_ROOT,命令如下:
“vi /etc/profile” ,在“export PATH USER….”后加入4行
 ACE_ROOT=/opt/ACE
 export ACE_ROOT
 LD_LIBRARY_PATH=$ACE_ROOT/aceLD_LIBRARY_PATH
 export LD_LIBRARY_PATH
完 成后将/etc/profile执行一次,命令:“chmod 555 /etc/profile”,“/etc/profile”。这样我们的ACE_ROOT就设置好了,可以用如下命令查看ACE_ROOT是否设置好了: “echo $ACE_ROOT” ,这个时候最好reboot启动一次linux。
2. 解压ACE.tar.gz包:
不 要自己手工将ACE.tar.gz包完全解开,特别强调不要完全解开,后面可以看到安装脚本会给我们解开它的;如果你手工解开全部,安装脚本将会将你的解 压缩目录删除的!我们要做的事就只是将ACE.tar.gz包中的ACE-install.sh安装脚本单独解出来,并对其修改。我们只要这一个文件就可 以。用mkdir建目录,如/home/my/ACE,然后将你的ACE.tar.gz放在此目录下(用cp命令拷贝或mv命令移动到此目录)。注意这个 目录将是你的一个存放ACE.tar.gz的目录,安装脚本会来这个目录找这个文件的,这个目录和ACE_ROOT是不一样的,且ACE- install.sh也提示不要将这两个目录设置成同一个目录。ACE_ROOT将是我们的安装目标目录。
3. 从ACE.tar.gz解压出单个文件ACE-install.sh,命令如下:
“tar –zxvf ACE+TAO+CIAO.tar.gz ACE_wrappers/ACE-install.sh”
解 好后,会出来一个新的子目录“ACE_wrappers”。此时可以先将ACE-install.sh移到外面的目录来:“mv /ACE_wrappers/ACE-install.sh .” “.”代表当前目录。当然ACE-install.sh在什么路径下是没什么影响的,因为我们要对ACE-install.sh的内容进行修改的,里面有 很多路径要修改。现在在/home/my/ACE就有了ACE-install.sh,我们现在用vi对其进行修改,修改前自己可以先备份一个。命令: “cp ACE-install.sh ACE-install.sh.bak”,“vi ACE-install.sh”先找到“MY_ACEDIR=${HOME}/aceconfig”,将其改成“MY_ACEDIR= /home/my/ACE”,就是改成我们自己建的、放有ACE.tar.gz文件的目录,之后去掉前面的注释“#”号。接着在下面一点,找到 “MY_ACE_CONFIG=config-sunos5.4-sunc++-4.x.h”,将其修改成“MY_ACE_CONFIG=config- linux.h”,即改成linux下的配置文件。继续改,找到“MY_ACE_GNU_MACROS=platform_sunos5_sunc++. GNU”,将其改成“MY_ACE_GNU_MACROS=platform_linux.GNU”。这个是各种操作系统平台下的GNU宏文件设置。文件 修改完毕,保存退出“:wq”。
4. 安装ACE:
此时应该是在/home/my/ACE目录下,我们执行: h./ACE-install.sh
此 后将是较长时间的解包、编译等待时间。这个过程将不会出现任何错误,因为安装脚本将为我们做很多事情,如:生成config.h,生成 platform_macros.GNU。我们不需要按ACE-install.html中说的手工改东西:不用做连接“ln -s config-sunos5-sunc++-4.x.h config.h”,安装脚本会给我们做好;(题外话:Windows中没有文件连接这一说,所以要自己生成一个config.h文件,再在它的里面加一 句话“#include "ace/config-win32.h"”。)
如果编译中出现错误,如“../apps/gperf”等,请编辑$ACE_ROOT/apps下的Makefile,将其中的有关“gperf”的部分注释掉,这个东西只是一个例子,可以不去编译它。
强调一下,用ACE-install.sh来安装,会编译ACE、tests、apps等。最后会生成libACE.so及tests、apps下也会出来很多经过编译的文件。
当然如果你只是下载了ACE.tar.gz这样的单个包来安装,你可以手工改文件,再make,因为只编译ACE,工作就少了很多,手工做还可以接受。
ACE学习资料
1. ACE 程序员指南:网络与系统编程的实用设计模式 网络与系统编程的实用设计模式   ACE Programmer's Guide practical Design Patterns for Network and Systems Programming
(美)Stephen D. Huston,(美)James CE Johnson,(美)Umar Syyid著
马维达 译 中国电力出版社
2. C++网络编程 卷1:运用ACE和模式消除复杂性
C++ Network Programming Volume 1 Mastering Complexity with ACE and Patterns
[美]Douglas C.Schmidt,Stephen D.Huston /著 [美]Douglas C.Schmidt,Stephen D.Huston 著,於春景 译   华中科技大学出版社
3. C++网络编程,卷2 基于ACE和框架的系统化复用
C++ network Programming, Volume 2 Systematic Reuse with ACE and Frameworks
Douglas C.Schmidt, Stephn D.Huston /著   | 马维达 译 电子工业出版社
4. ACE的官方网站  http://www.cs.wustl.edu/~schmidt/ACE.html
5. 马维达的主页 http://www.flyingdonkey.com/
6. RIVERACE公司 http://www.riverace.com
7. 灰狐          http://www.huihoo.com/
8.     ACE类库    http://dev.csdn.net/article/40/40700.shtm


常见错误
错误1:
“Cannot open include file: ace/SOCK_Acceptor.h: No such file        or directory”
解决方法:
Project->settings->C/C++: Preprocessor的Additional include directories中加入$ACE_ROOT,如E:/ACE_wrappers
错误2:
“You must link against multi-threaded libraries when using ACE (check your project settings)”
解决方法:
Project->settings->C/C++: Code Generation 的Use run-time library : Debug Multithreaded Dll
错误3:
“error C2065: ACE_ERROR : undeclared identifier”
“error C2065: ACE_DEBUG : undeclared identifier”
解决方法:
在原马中加入#include ace/Log_Msg.h
错误4:“error C4716: ace_main_i : must return a value”
解决方法:
在main中加入return 0;
错误5:
“error LNK2001: unresolved external symbol __declspec(dllimport) int __cdecl”
解决方法:
Project->settings->Link->Input: Object/library Modules加入aced.lib ,Additional Library Path中加入$ACE_ROOT\ace,如E:\ACE_wrappers\ace
编译client中遇到的问题:
错误6:
error C2039: sprintf : is not a member of ACE_OS
解决方法:#include ace/OS_NS_stdio.h
错误7:error C2039: strlen : is not a member of ACE_OS
解决方法:#include ace/OS_NS_string.h
错误8:无法找到动态链接库aced.dll于指定的路径
解决方法:为系统变量PATH加上D:\ACE_wrappers\bin
静态包含:
   工程-设置-C/C++-预处理程序定义中加入 ,ACE_AS_STATIC_LIBS
  
  
例1server编译后生成
server.exe 16K   serverd.exe 97K     servers.exe 124K serversd.exe 669K
(servers.exe较适合发布)

例2 client编译后生成
client.exe 16K   clientd.exe 97K     clients.exe 124K clientsd.exe 669K
(clients.exe较适合发布)

测试 clients 127.0.0.1 1919
       servers 1919


如果编译器支持64位,通过什么宏定义来区分64位还是32位阿?
答:#define ver ((2>>31)>0?64:32)
-------------------------------------------------------
给ACE初哥初妹的话

给ACE初哥初妹的话

version 0.1.0 Stone jIang 2006-11-6

下面列出了初学ACE必要的基础知识,希望能给初学ACE的朋友们一点帮助。特加上版本号,这是为了欢迎批判,补充和修订。

1. C++/OOP (有一部分高手是C语言背景根深蒂固的,思考问题不是面向对象,这类人学ACE需要先补补OOP思想)

2. Design Pattern (ACE不仅仅是类库,而是通过模式协同在一起的一系列相关的类,如果对设计模式熟悉,那么会用助于学习ACE)

3. Framework (Framework应该还不正式,相似的词还可以是architecture,不管用啥词语,所要指出的是,ACE不仅仅是类库,更是通过模式组合在一 起相互协作的类形成的半成品。框架有别于类库,后者通常是被动的被程序员写的代码调用,而框架则往往主动地调用用户实现的接口,即著名的好莱坞原则—— Don't call me , I will call you)

4.Linux(我是Linux初不者,但自从我开始进入Linux 编程的时候,我就发现,ACE许多精华源自Linux,以前对ACE理解有限,不知道为什么这样,其实在Linux中能找到答案,ACE里闪烁着Linux的智慧。)

5. Richard Stevens. (英年早逝的Richard,应该是Douglas的良师益友,他的著作影响了Douglas,也就影响着ACE,这里要说的是TCP/IP Illustrated ,其实Richard其他著作,像APUE都是大滋大补的)

6. 没有6了。如果你认为有,一定告诉我。

posted @ 2009-05-20 17:15 黄剑父 阅读(527) | 评论 (0)编辑 收藏

一.绑定过程

1. DriverEntry

中间层驱动对上层来说,扮演一个Miniport Driver的角色,它在上边沿向NDIS注册一组Miniportxxx函数;对于下层Miniport Driver来说,中间层驱动扮演一个Protocol Driver的角色,因此它在下边沿向NDIS注册一组Protocolxxx函数。Miniport Driver通过调用NdisMRegisterMiniportNDIS注册一组MiniportXxx函数;Protocol Driver 通过调用 NdisRegisterProtocolNDIS注册一组ProtocolXxx函数。

首先通过调用NdisMInitializeWrapper(&NdisWrapperHandle, DriverObject, RegistryPath, NULL);来初始化NdisWrapperHandle,该句柄用来代表IM Driver的自身。

接着调用NdisIMRegisterLayeredMiniport来向NDIS注册一组MiniportXxx函数,返回指向MiniportDriverHandle

随后调用NdisRegisterProtocol来向NDIS注册一组Protocolxxx函数,返回指向ProtocolProtHandle

然后调用NdisIMAssociateMiniport(DriverHandle, ProtHandle);将两者绑定。

2. PtBindAdapter

       NDIS在完成第一步之后,将会调用PtBindAdapter来完成对适配器的绑定(注意:此函数的调用次数是根据用户电脑上的适配器数目而定的,一般至少有两块,会有一块叫NDISWANIP),PtBindAdapter中有用的参数主要是DeviceNameSystemSpecific1,其中DeviceName是下层NIC驱动的服务名,SystemSpecific1可以用来读取注册表中相关的值。(参考注册表HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Linkage下的Bind子键值)

       首先调用NdisOpenProtocolConfiguration NdisReadConfiguration来读取注册表信息,然后初始化PADAPT pAdapt结构体。

       接着调用NdisOpenAdapter来将IM的下层协议驱动(ProtHandle)绑定适配器。

       调用NdisIMInitializeDeviceInstanceEx来触发对MPInitialize的调用

3. MPInitialize

MpInitialize里面主要做三件事情:

1). 判断介质类型

2). 调用NdisMSetAttributesEx设置一些特性

3). 调用PtRegisterDevice函数向NDIS注册设备

4. PtRegisterDevice

       PtRegisterDevice里,主要是设置IM Driver自己要处理的一些派遣例程和注册设备名和设备符号链接名。要注意的是,这个函数提供的功能是为整个设备服务而不是每个适配器都需要注册,所以通过一个全局变量MiniportCount来控制。

在这里,定义了PDRIVER_DISPATCH       DispatchTable[IRP_MJ_MAXIMUM_FUNCTION+1];

然后如下的设置:DispatchTable[IRP_MJ_CREATE] = DevOpen;

       接着调用NdisMRegisterDevice注册设备名和设备符号链接名。

 

二.卸载过程

1. PtUnbindAdapter

       针对每个绑定的适配器,首先查看对IMminiport是否有还在排队的请求,如果有,则先调用PtRequestComplete完成它(返回NDIS_STATUS_FAILURE),然后查看状态是否为pending,是的话则调用NdisIMCancelInitializeDeviceInstance。再调用NdisIMDeInitializeDeviceInstance来卸载设备,在此会触发对MPHalt的调用。

2. MPHalt

       MPHalt里,首先调用PtDeregisterDevice来卸载设备,然后调用NdisCloseAdapter关闭绑定的适配器。

3. PtDeregisterDevice (MiniportCount == 0?)

       PtDeregisterDevice 里,调用NdisMDeregisterDevice来卸载设备。同PtRegisterDevice类似,要注意的是,这个函数提供的功能是为整个设备服务而不是每个适配器都需要注册,所以通过一个全局变量MiniportCount来控制。只有最后一个绑定的适配器卸载时,才调用NdisMDeregisterDevice

4. PtUnloadProtocol

       CloseAdapterComplete完成后,NDIS会调用PtUnloadProtocol来完成下层绑定的协议驱动(ProtHandle)的卸载,调用NdisDeregisterProtocol函数。

5. PtUnload

       首先,要说明的是,在DriverEntry函数里,有注册该函数(NdisMRegisterUnloadHandler(NdisWrapperHandle, PtUnload);)。该函数是整个卸载过程的最后一步,在这里,会继续完成对绑定的上层miniport,下层的protocol的卸载(其实protocol的卸载在第4步已经完成),调用如下两个函数PtUnloadProtocolNdisIMDeregisterLayeredMiniport

posted @ 2009-05-19 17:16 黄剑父 阅读(314) | 评论 (0)编辑 收藏
基于远程认证的网络中实现EAP认证的方法,在百度的专利搜索上进行搜索,能找到这篇文章。
这个是华为对EAP认证的一个发明专利,专利书对EAP认证的步骤,和产生背景说的非常清楚,是一篇很好的认识802.1x认证的文章。
对以前的认证技术进行了分析,优缺点都有说明。
目前现在大规模应用的都是EAP认证。
posted @ 2009-04-15 15:03 黄剑父 阅读(227) | 评论 (0)编辑 收藏

集中回复001
   时寒冰

最近,来信太多,无力一一回复,以后选择性的集中回复。——寒冰(暖之)

1.问:如何看股市?
答:超过7成的股票有阶段性见顶迹象。

2.问:农民如何应对未来的通货膨胀?
答:养猪。存粮。

3.问:保8能否成功?
答:能。一定能。
问:你这样确信?
答:我对统计部门从来都有信心

4.问:次贷危机谁受害最深?
答:中国。
问:谁先复苏?
答:美国。
问:为何很多人看法正好相反。
答:表演看多了。

5.问:你如何看茅于轼廉租房不建厕所?
答:他可能把厕所当成奢侈品,把拉屎尿尿当成高消费了。
问:茅于轼认为,经济适用房给人带来了贪污腐化的机会,就应该停掉经济适用房。
答:各行各业都存在贪污腐化的机会,都应该停掉。
问:其实,只要有人类存在就有腐化机会啊?
答:根据茅老的理论,把人类消灭就可以彻底解决这一问题。
问:那茅老呢?
答:他留着。他是品德高尚的人,永远不会腐化。

6.问:《中国新闻周刊》报道说,北京大学司法鉴定室主任孙东东表示“对那些老上访专业户,我负责任地说,不说100%吧,至少99%以上精神有问题——都是偏执型精神障碍”,你如何看?
答:这位教授精神可能有问题,很可能是偏执型精神障碍。
问:能否提出一些治疗建议?
答:建议看兽医。

7.问:你如何看中国人民银行行长提出最终取代美元的“超主权储备货币”的设想?很多人评价说是中国伟大的战略调整。
答:看不懂。
问:为啥?
答:一边积极购买美国国债等,一边要废美元,所以看不懂是啥战略。

8.问:你如何看潍坊市寒亭区采用下发“红头文件”的形式,向该区副科级以上干部摊派“售房任务”?
答:官商勾结的模板。房子卖不动了。
问:最近卖得不是很火吗?
答:集中演出的回光返照。
   写于2009年4月3日下午两点

posted @ 2009-04-03 17:38 黄剑父 阅读(114) | 评论 (0)编辑 收藏
仅列出标题
共6页: 1 2 3 4 5 6