09 2006 档案

     摘要: Why you should learn the API before MFC
The Controversy
Too many people come on to IRC and ask "What is better, MFC or API?" and too many people are willing to say "MFC sucks" or "API sucks" either because of traumatic events involving one or the other in early childhood, or because everyone else is saying it.

The standard arguments are:

* API is too hard
* MFC is too confusing
* API is too much code
* MFC is bloated
* API doesn't hav  阅读全文

posted @ 2006-09-17 10:10 樱木 阅读(308) | 评论 (0)  编辑 |

     摘要: 最近机器重装, 发现局域网上另一台机器上的打印机访问不了, 而其他人可以使用。 打开网上邻居, 点击“工组组计算机”, 弹出来错误框: 计算机无法访问,您可能没有权限使用网络资源.请与这台服务器的管理员联系以查明您 。 问题原因:瑞星防火墙关闭就可以正常添加网络打印机了。

那么, 如何在不关闭瑞星防火墙(18.42)的情况下允许windows文件与打印机共享服务呢? 到瑞星-》系统设置-》端口开关, 允许TCP 139, TCP445, UDP 137, UDP138四个端口即可。

基本原理
SMB(Server Message Block) Windows协议族,用于文件和打印共享服务。NBT(NetBIOS over TCP/IP) 使用137(UDP), 138(UDP) and 139 (TCP)来实现基于TCP/IP的NETBIOS网际互联。

在Windows NT中SMB基于NBT实现。而在Windows2000中,SMB除了基于NBT的实现,还有直接通过445端口实现。当Win2000(允许NBT)作为cli  阅读全文

posted @ 2006-09-16 10:21 樱木 阅读(11275) | 评论 (1)  编辑 |

     摘要: 你今天站在哪个位置并不重要,但你下一步迈向哪却很关键。
  不能延长生命的长度,但你可以增加生命的宽度。
  重要的并不在于你现在的地位是多么卑微,或者从事的工作是多么地微不足道,只要你强烈地渴望攀登成功的巅峰并愿意为此付出艰辛的努力,那么总有一天你会喜笑颜开如愿以偿。
  有什么样的目标,就有什么样的人生。
  社会结构是一种金字塔状结构。大量的人处在金字塔的底部,只有一小部分人处在金字塔的顶部。处在底层的人们每天只能收支相抵,量入为出,只能现 挣现吃,仅够糊口。而处在顶尖的人则是蒸蒸日上,繁荣兴旺。每一个城市每一个公司,都是大多数人在底层,少数人在顶部,而处在顶部的人都是从底层逐渐上升 的。
  为什么偏偏是他们达到了众人瞩目的高度呢?
  上帝对每个人都是公平的,希尔顿、洛克菲勒并不比你拥有的时间多一秒钟,但为什么只有他们取得了令人瞩目的成就?问题的关键就在于你没有人生的高度。
  绝大多数人之所以平庸一生,之所以只能在历史的舞台上扮演无足轻重的次要角色——包括那些懒惰闲散的人、好逸恶劳的人、平庸无奇的人——原因就是他们缺乏  阅读全文

posted @ 2006-09-10 20:36 樱木 阅读(277) | 评论 (0)  编辑 |

     摘要: 证明: C++中的友元运算符函数operator@不能属于任何类, 也就是说该友元不能是友元成员.

proof:


友元运算符函数只能是一般的类外部友元函数, 而不能是属于某个类的友元成员函数. 如果operator@是A类的成员函数, 同时又是B类的友元, 假设@是m目运算符, 则A类要求operator@只带有n-1个参数. 但同时作为B类的友元, B类要求operator@带有n个参数(因为没有B类的this指针), 由此矛盾.


哇哈哈, 竟然证明C++的语言特性, 这倒是第一次, 值得留念!
  阅读全文

posted @ 2006-09-08 21:37 樱木 阅读(361) | 评论 (0)  编辑 |

     摘要: 今天用类模板写了一个可扩展空间的栈. compile没问题, 一run就发现报链接错误, 说几个类的成员函数都找不到:
error LNK2001: unresolved external symbol ****. 检查了一下, 发现和以前写的没什么两样啊, 后来才发现原来所有的函数定义及实现都是放在一个.h中, 现在遵循良好的设计规范, 把类定义放在.h中, 类的实现放在.cpp中反而出错了?? 晕!

网上查了一点资料, 发现VC6好像是不支持分开写的, (不是模板当然可以!), 无论是类模板还是函数模板, 都必须写在一个.h文件中. 有人可能会说那么这个包含方法实现的头文件如果多个其他文件include它, 那不是就有问题了么? 要不要#pragma once呀, 这里明确告诉你, 不用的. <>里面说, 因为类模板的.h文件和普通类的.h文件在编译器处理的时候好像是有区别的. 原因自己去看书吧, 不过书里说得不多,我也忘记啦.  阅读全文

posted @ 2006-09-04 22:43 樱木 阅读(1374) | 评论 (0)  编辑 |

     摘要: error LNK2001: unresolved external symbol  阅读全文

posted @ 2006-09-04 22:27 樱木 阅读(1071) | 评论 (1)  编辑 |

     摘要: 静态Web页面的工作原理
1) Web页面的创建者编写由纯HTML组成的Web页面, 并将其保存到服务器上.
2) 用户在其浏览器中输入了Web页面请求, 该请求就从浏览器传递到Web服务器.
3) Web服务器定位.htm文件并将它转换为HTML流.
4) 浏览器处理HTML并显示该页面.

优点: 静态页面的处理速度非常之快
缺点: 页面的内容在用户请求页面之前就已经完全确定了. 因此不同的用户在不同的时间通过不同的方式访问得到的页面都是相同的. 而且没有安全性, 任何人都可以查看源代码.

Web服务器是一种软件, 用于管理Web页面, 处理用户的访问页面请求.
Apache, IIS, Enterprise

提供动态Web页面的两种方法:
1) 客户端生成技术: 由浏览器上的插件完成创建动态页面的全部工作. Web服务器将HTML和生成HTML的指令通过网络发送到客户端浏览器, 浏览器利用这些指令为页面生成纯HTML
缺点: 包含指令的文件(html或单独的指令文件  阅读全文

posted @ 2006-09-02 16:00 樱木 阅读(234) | 评论 (0)  编辑 |

     摘要: template
void insertion_sort( T * t, const int & size )
{
int key,
i, j,
low, high, mid;

for( i=1; i {
if( t[i] < t[i-1] )
{
low = 0;
high = i-1;
key = t[i];
while( low <= high )
{
mid = (low+high)/2;

if( key < t[mid] )
high = mid - 1;
else
low = mid + 1;
}
for( j=i; j>high+1; j-- )
t[j] = t[j-1];
t  阅读全文

posted @ 2006-09-01 16:22 樱木 阅读(1474) | 评论 (0)  编辑 |

     摘要: template
void insertion_sort( node * & head )//
{
node * first_unsorted,
* last_sorted,
* insert,
* insertPre;
if( head )
{
last_sorted = head;
while( last_sorted->next )
{
first_unsorted = last_sorted->next;
if( first_unsorted->key < last_sorted->key )
{
insert = head;
while( first_unsorted->key>=insert->key ) //从前到后, 保持稳定
{
insertPre = insert  阅读全文

posted @ 2006-09-01 15:00 樱木 阅读(1394) | 评论 (0)  编辑 |