﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-java</title><link>http://www.blogjava.net/javascript/</link><description>java</description><language>zh-cn</language><lastBuildDate>Sun, 12 Apr 2026 05:58:39 GMT</lastBuildDate><pubDate>Sun, 12 Apr 2026 05:58:39 GMT</pubDate><ttl>60</ttl><item><title>vc程序编译注意 </title><link>http://www.blogjava.net/javascript/archive/2007/12/19/168768.html</link><dc:creator>付轩</dc:creator><author>付轩</author><pubDate>Wed, 19 Dec 2007 07:52:00 GMT</pubDate><guid>http://www.blogjava.net/javascript/archive/2007/12/19/168768.html</guid><wfw:comment>http://www.blogjava.net/javascript/comments/168768.html</wfw:comment><comments>http://www.blogjava.net/javascript/archive/2007/12/19/168768.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/javascript/comments/commentRss/168768.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/javascript/services/trackbacks/168768.html</trackback:ping><description><![CDATA[<p>自动生成的工程文件配置的PreprocessorDefinitions 是 WIN32;_DEBUG;_WINDOWS<br />
需要改成 PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;UNICODE;_WIN32_WINNT=0x0501"</p>
<p>有的项目编译不了是因为 CharacterSet 的问题</p>
<img src ="http://www.blogjava.net/javascript/aggbug/168768.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/javascript/" target="_blank">付轩</a> 2007-12-19 15:52 <a href="http://www.blogjava.net/javascript/archive/2007/12/19/168768.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++</title><link>http://www.blogjava.net/javascript/archive/2007/12/12/167121.html</link><dc:creator>付轩</dc:creator><author>付轩</author><pubDate>Wed, 12 Dec 2007 01:18:00 GMT</pubDate><guid>http://www.blogjava.net/javascript/archive/2007/12/12/167121.html</guid><wfw:comment>http://www.blogjava.net/javascript/comments/167121.html</wfw:comment><comments>http://www.blogjava.net/javascript/archive/2007/12/12/167121.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/javascript/comments/commentRss/167121.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/javascript/services/trackbacks/167121.html</trackback:ping><description><![CDATA[六年前，我刚热恋&#8220;面向对象&#8221;（Object-Oriented）时，一口气记住了近十个定义。六年后，我从几十万行程序中滚爬出来准备写点心得体会时，却无法解释什么是&#8220;面向对象&#8221;，就象说不清楚什么是数学那样。软件工程中的时髦术语&#8220;面向对象分析&#8221;和&#8220;面向对象设计&#8221;，通常是针对&#8220;需求分析&#8221;和&#8220;系统设计&#8221;环节的。&#8220;面向对象&#8221;有几大学派，就象如来佛、上帝和真主用各自的方式定义了这个世界，并留下一堆经书来解释这个世界。
<p><iframe id="ad_top" name="ad_top" align="left" marginwidth="0" marginheight="0" src="http://adv.pconline.com.cn/adpuba/show?id=pc.rjzx.kaifa.wenzhang.hzh.&amp;media=html&amp;pid=cs.pconline.rjzx.hzh." frameborder="0" width="320" scrolling="no" height="280"></iframe>　　有些学者建议这样找&#8220;对象&#8221;：分析一个句子的语法，找出名词和动词，名词就是对象，动词则是对象的方法（即函数）。</p>
<p>　　当年国民党的文人为了对抗毛泽东的《沁园春&#183;雪》，特意请清朝遗老们写了一些对仗工整的诗，请蒋介石过目。老蒋看了气得大骂：&#8220;娘希匹，全都有一股棺材里腐尸的气味。&#8221;我看了几千页的软件工程资料，终于发现自己有些&#8220;弱智&#8221;，无法理解&#8220;面向对象&#8221;的理论，同时醒悟到&#8220;编程是硬道理。&#8221;</p>
<p>　　面向对象程序设计语言很多，如Smalltalk、Ada、Eiffel、Object Pascal、Visual Basic、C++等等。C++语言最讨人喜欢，因为它兼容C 语言，并且具备C 语言的性能。近几年，一种叫Java 的纯面向对象语言红极一时，不少人叫喊着要用Java 革C++的命。我认为Java 好比是C++的外甥，虽然不是直接遗传的，但也几分象样。外甥在舅舅身上玩耍时洒了一泡尿，俩人不该为此而争吵。</p>
<p>　　关于C++程序设计的书藉非常多，本章不讲C++的语法，只讲一些小小的编程道理。如果我能早几年明白这些小道理，就可以大大改善数十万行程序的质量了。</p>
<p><strong>1. C++面向对象程序设计的重要概念</strong></p>
<p>　　早期革命影片里有这样一个角色，他说：&#8220;我是党代表，我代表党，我就是党。&#8221;后来他给同志们带来了灾难。</p>
<p>　　会用C++的程序员一定懂得面向对象程序设计吗？</p>
<p>　　不会用C++的程序员一定不懂得面向对象程序设计吗？</p>
<p>　　两者都未必。就象坏蛋入党后未必能成为好人，好人不入党未必变成坏蛋那样。</p>
<p>　　我不怕触犯众怒地说句大话：&#8220;C++没有高手，C 语言才有高手。&#8221;在用C 和C++编程8年之后，我深深地遗憾自己不是C 语言的高手，更遗憾没有人点拨我如何进行面向对象程序设计。我和很多C++程序员一样，在享用到C++语法的好处时便以为自己已经明白了面向对象程序设计。就象挤掉牙膏卖牙膏皮那样，真是暴殄天物呀。</p>
<p>　　人们不懂拼音也会讲普通话，如果懂得拼音则会把普通话讲得更好。不懂面向对象程序设计也可以用C++编程，如果懂得面向对象程序设计则会把C++程序编得更好。本节讲述三个非常基础的概念：&#8220;类与对象&#8221;、&#8220;继承与组合&#8221;、&#8220;虚函数与多态&#8221;。理解这些概念，有助于提高程序的质量，特别是提高&#8220;可复用性&#8221;与&#8220;可扩充性&#8221;。</p>
<p>1.1 类与对象</p>
<p>　　对象（Object）是类（Class）的一个实例（Instance）。如果将对象比作房子，那么类就是房子的设计图纸。所以面向对象程序设计的重点是类的设计，而不是对象的设计。类可以将数据和函数封装在一起，其中函数表示了类的行为（或称服务）。类提供关键字public、protected 和private 用于声明哪些数据和函数是公有的、受保护的或者是私有的。</p>
<p>　　这样可以达到信息隐藏的目的，即让类仅仅公开必须要让外界知道的内容，而隐藏其它一切内容。我们不可以滥用类的封装功能，不要把它当成火锅，什么东西都往里扔。</p>
<p>　　类的设计是以数据为中心，还是以行为为中心？</p>
<p>　　主张&#8220;以数据为中心&#8221;的那一派人关注类的内部数据结构，他们习惯上将private 类型的数据写在前面，而将public 类型的函数写在后面，如表8.1(a)所示。</p>
<p>　　主张&#8220;以行为为中心&#8221;的那一派人关注类应该提供什么样的服务和接口，他们习惯上将public 类型的函数写在前面，而将private 类型的数据写在后面，如表8.1(b)所示。</p>
<p align="center"><img alt="" src="http://www.pconline.com.cn/pcedu/empolder/gj/c/0504/pic/29coop81.gif" border="0" /></p>
<p>　　很多C++教课书主张在设计类时&#8220;以数据为中心&#8221;。我坚持并且建议读者在设计类时&#8220;以行为为中心&#8221;，即首先考虑类应该提供什么样的函数。Microsoft 公司的COM 规范的核心是接口设计，COM 的接口就相当于类的公有函数[Rogerson 1999]。在程序设计方面，咱们不要怀疑Microsoft 公司的风格。</p>
<p>　　设计孤立的类是比较容易的，难的是正确设计基类及其派生类。因为有些程序员搞不清楚&#8220;继承&#8221;（Inheritance）、&#8220;组合&#8221;（Composition）、&#8220;多态&#8221;（ Polymorphism）这些概念。</p>
<img src ="http://www.blogjava.net/javascript/aggbug/167121.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/javascript/" target="_blank">付轩</a> 2007-12-12 09:18 <a href="http://www.blogjava.net/javascript/archive/2007/12/12/167121.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++</title><link>http://www.blogjava.net/javascript/archive/2007/12/12/167120.html</link><dc:creator>付轩</dc:creator><author>付轩</author><pubDate>Wed, 12 Dec 2007 01:18:00 GMT</pubDate><guid>http://www.blogjava.net/javascript/archive/2007/12/12/167120.html</guid><wfw:comment>http://www.blogjava.net/javascript/comments/167120.html</wfw:comment><comments>http://www.blogjava.net/javascript/archive/2007/12/12/167120.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/javascript/comments/commentRss/167120.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/javascript/services/trackbacks/167120.html</trackback:ping><description><![CDATA[<p>1.2 继承与组合</p>
<p>　　如果A 是基类，B 是A 的派生类，那么B 将继承A 的数据和函数。示例程序如下：</p>
<p class="code">class A<br />
{<br />
public:<br />
void Func1(void);<br />
void Func2(void);<br />
};<br />
class B : public A<br />
{<br />
public:<br />
void Func3(void);<br />
void Func4(void);<br />
};<br />
// Example<br />
main()<br />
{<br />
B b; // B的一个对象<br />
b.Func1(); // B 从A 继承了函数Func1<br />
b.Func2(); // B 从A 继承了函数Func2<br />
b.Func3();<br />
b.Func4();<br />
}</p>
<p>　　这个简单的示例程序说明了一个事实：C++的&#8220;继承&#8221;特性可以提高程序的可复用性。正因为&#8220;继承&#8221;太有用、太容易用，才要防止乱用&#8220;继承&#8221;。我们要给&#8220;继承&#8221;立一些使用规则：</p>
<p>　　一、如果类A 和类B 毫不相关，不可以为了使B 的功能更多些而让B 继承A 的功能。</p>
<p>　　不要觉得&#8220;不吃白不吃&#8221;，让一个好端端的健壮青年无缘无故地吃人参补身体。</p>
<p>　　二、如果类B 有必要使用A 的功能，则要分两种情况考虑：</p>
<p>　　（1）若在逻辑上B 是A 的&#8220;一种&#8221;（a kind of ），则允许B 继承A 的功能。如男人（Man）是人（Human）的一种，男孩（Boy）是男人的一种。那么类Man 可以从类Human 派生，类Boy 可以从类Man 派生。示例程序如下：</p>
<p class="code">class Human<br />
{<br />
&#8230;<br />
};<br />
class Man : public Human<br />
{<br />
&#8230;<br />
};<br />
class Boy : public Man<br />
{<br />
&#8230;<br />
};</p>
<p>　　（2）若在逻辑上A 是B 的&#8220;一部分&#8221;（a part of），则不允许B 继承A 的功能，而是要用A和其它东西组合出B。例如眼（Eye）、鼻（Nose）、口（Mouth）、耳（Ear）是头（Head）的一部分，所以类Head 应该由类Eye、Nose、Mouth、Ear 组合而成，不是派生而成。示例程序如下：</p>
<p class="code">class Eye<br />
{<br />
public:<br />
void Look(void);<br />
};<br />
class Nose<br />
{<br />
public:<br />
void Smell(void);<br />
};<br />
class Mouth<br />
{<br />
public:<br />
void Eat(void);<br />
};<br />
class Ear<br />
{<br />
public:<br />
void Listen(void);<br />
};<br />
// 正确的设计，冗长的程序<br />
class Head<br />
{<br />
public:<br />
void Look(void) { m_eye.Look(); }<br />
void Smell(void) { m_nose.Smell(); }<br />
void Eat(void) { m_mouth.Eat(); }<br />
void Listen(void) { m_ear.Listen(); }<br />
private:<br />
Eye m_eye;<br />
Nose m_nose;<br />
Mouth m_mouth;<br />
Ear m_ear;<br />
};</p>
<p>　　如果允许Head 从Eye、Nose、Mouth、Ear 派生而成，那么Head 将自动具有Look、Smell、Eat、Listen 这些功能：</p>
<p class="code">// 错误的设计<br />
class Head : public Eye, public Nose, public Mouth, public Ear<br />
{<br />
};</p>
<p>　　上述程序十分简短并且运行正确，但是这种设计却是错误的。很多程序员经不起&#8220;继承&#8221;的诱惑而犯下设计错误。</p>
<p>　　一只公鸡使劲地追打一只刚下了蛋的母鸡，你知道为什么吗？</p>
<p>　　因为母鸡下了鸭蛋。</p>
<p>　　本书3.3 节讲过&#8220;运行正确&#8221;的程序不见得就是高质量的程序，此处就是一个例证。</p>
<img src ="http://www.blogjava.net/javascript/aggbug/167120.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/javascript/" target="_blank">付轩</a> 2007-12-12 09:18 <a href="http://www.blogjava.net/javascript/archive/2007/12/12/167120.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++</title><link>http://www.blogjava.net/javascript/archive/2007/12/12/167118.html</link><dc:creator>付轩</dc:creator><author>付轩</author><pubDate>Wed, 12 Dec 2007 01:17:00 GMT</pubDate><guid>http://www.blogjava.net/javascript/archive/2007/12/12/167118.html</guid><wfw:comment>http://www.blogjava.net/javascript/comments/167118.html</wfw:comment><comments>http://www.blogjava.net/javascript/archive/2007/12/12/167118.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/javascript/comments/commentRss/167118.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/javascript/services/trackbacks/167118.html</trackback:ping><description><![CDATA[<p>1.3 虚函数与多态</p>
<p>　　除了继承外，C++的另一个优良特性是支持多态，即允许将派生类的对象当作基类的对象使用。如果A 是基类，B 和C 是A 的派生类，多态函数Test 的参数是A 的 指针。那么Test 函数可以引用A、B、C 的对象。示例程序如下：</p>
<p class="code">class A<br />
{<br />
public:<br />
void Func1(void);<br />
};<br />
void Test(A *a)<br />
{<br />
a-&gt;Func1();<br />
}<br />
class B : public A<br />
{<br />
&#8230;<br />
};<br />
class C : public A<br />
{<br />
&#8230;<br />
};<br />
// Example<br />
main()<br />
{<br />
A a;<br />
B b;<br />
C c;<br />
Test(&amp;a);<br />
Test(&amp;b);<br />
Test(&amp;c);<br />
};</p>
<p>　　以上程序看不出&#8220;多态&#8221;有什么价值，加上虚函数和抽象基类后，&#8220;多态&#8221;的威力就显示出来了。</p>
<p>　　C++用关键字virtual 来声明一个函数为虚函数，派生类的虚函数将（override）基类对应的虚函数的功能。示例程序如下：</p>
<p class="code">class A<br />
{<br />
public:<br />
virtual void Func1(void){ cout&lt;&lt; &#8220;This is A::Func1 \n&#8221;}<br />
};<br />
void Test(A *a)<br />
{<br />
a-&gt;Func1();<br />
}<br />
class B : public A<br />
{<br />
public:<br />
virtual void Func1(void){ cout&lt;&lt; &#8220;This is B::Func1 \n&#8221;}<br />
};<br />
class C : public A<br />
{<br />
public:<br />
virtual void Func1(void){ cout&lt;&lt; &#8220;This is C::Func1 \n&#8221;}<br />
};<br />
// Example<br />
main()<br />
{<br />
A a;<br />
B b;<br />
C c;<br />
Test(&amp;a); // 输出This is A::Func1<br />
Test(&amp;b); // 输出This is B::Func1<br />
Test(&amp;c); // 输出This is C::Func1<br />
};</p>
<p>　　如果基类A 定义如下：</p>
<p class="code">class A<br />
{<br />
public:<br />
virtual void Func1(void)=0;<br />
};</p>
<p>　　那么函数Func1 叫作纯虚函数，含有纯虚函数的类叫作抽象基类。抽象基类只管定义纯虚函数的形式，具体的功能由派生类实现。</p>
<p>　　结合&#8220;抽象基类&#8221;和&#8220;多态&#8221;有如下突出优点：</p>
<p>　　（1）应用程序不必为每一个派生类编写功能调用，只需要对抽象基类进行处理即可。这一<br />
招叫&#8220;以不变应万变&#8221;，可以大大提高程序的可复用性（这是接口设计的复用，而不是代码实现的复用）。</p>
<p>　　（2）派生类的功能可以被基类指针引用，这叫向后兼容，可以提高程序的可扩充性和可维护性。以前写的程序可以被将来写的程序调用不足为奇，但是将来写的程序可以被以前写的程序调用那可了不起。</p>
<img src ="http://www.blogjava.net/javascript/aggbug/167118.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/javascript/" target="_blank">付轩</a> 2007-12-12 09:17 <a href="http://www.blogjava.net/javascript/archive/2007/12/12/167118.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++</title><link>http://www.blogjava.net/javascript/archive/2007/12/12/167117.html</link><dc:creator>付轩</dc:creator><author>付轩</author><pubDate>Wed, 12 Dec 2007 01:16:00 GMT</pubDate><guid>http://www.blogjava.net/javascript/archive/2007/12/12/167117.html</guid><wfw:comment>http://www.blogjava.net/javascript/comments/167117.html</wfw:comment><comments>http://www.blogjava.net/javascript/archive/2007/12/12/167117.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/javascript/comments/commentRss/167117.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/javascript/services/trackbacks/167117.html</trackback:ping><description><![CDATA[<p>2.3 new、delete 与指针</p>
<p>　　在C++中，操作符new 用于申请内存，操作符delete 用于释放内存。在C 语言中，函数malloc 用于申请内存，函数free 用于释放内 存。由于C++兼容C 语言，所以new、delete、malloc、free 都有可能一起使用。new 能比malloc 干更多的事，它可以申请对象的内存，而malloc 不能。C++和C 语言中的指针威猛无比，用错了会带来灾难。对于一个指针p，如果是用new申请的内存，则必须用delete 而不能用free 来释放。如果是用malloc 申请的内存，则必须用free 而不能用delete 来释放。在用delete 或用free 释放p 所指的内存后，应该马上显式地将p 置为NULL，以防下次使用p 时发生错误。示例程序如下：</p>
<p class="code">void Test(void)<br />
{<br />
float *p;<br />
p = new float[100];<br />
if(p==NULL) return;<br />
&#8230;// do something<br />
delete p;<br />
p=NULL; // 良好的编程风格<br />
// 可以继续使用p<br />
p = new float[500];<br />
if(p==NULL) return;<br />
&#8230;// do something else<br />
delete p;<br />
p=NULL;<br />
}</p>
<p>　　我们还要预防&#8220;野指针&#8221;，&#8220;野指针&#8221;是指向&#8220;垃圾&#8221;内存的指针，主要成因有两种：</p>
<p>　　（1）指针没有初始化。<br />
　　（2）指针指向已经释放的内存，这种情况最让人防不胜防，示例程序如下：</p>
<p class="code">class A<br />
{<br />
public:<br />
void Func(void){&#8230;}<br />
};<br />
void Test(void)<br />
{<br />
A *p;<br />
{<br />
A a;<br />
p = &amp;a; // 注意a 的生命期<br />
}<br />
p-&gt;Func(); // p 是&#8220;野指针&#8221;，程序出错<br />
}</p>
<p>2.4 使用const</p>
<p>　　在定义一个常量时，const 比#define 更加灵活。用const 定义的常量含有数据类型，该常量可以参与逻辑运算。例如：</p>
<p class="code">const int LENGTH = 100; // LENGTH 是int 类型<br />
const float MAX=100; // MAX 是float 类型<br />
#define LENGTH 100 // LENGTH 无类型<br />
#define MAX 100 // MAX 无类型</p>
<p>　　除了能定义常量外，const 还有两个&#8220;保护&#8221;功能：</p>
<p>　　一、强制保护函数的参数值不发生变化</p>
<p>　　以下程序中，函数f 不会改变输入参数name 的值，但是函数g 和h 都有可能改变name的值。</p>
<p class="code">void f(String s); // pass by value<br />
void g(String &amp;s); // pass by referance<br />
void h(String *s); // pass by pointer<br />
main()<br />
{<br />
String name=&#8220;Dog&#8221;;<br />
f(name); // name 的值不会改变<br />
g(name); // name 的值可能改变<br />
h(name); // name 的值可能改变<br />
}</p>
<p>　　对于一个函数而言，如果其&#8216;&amp;&#8217;或&#8216;*&#8217;类型的参数只作输入用，不作输出用，那么应当在该参数前加上const，以确保函数的代码不会改变该参数的值（如果改变了该参数的值，编译器会出现错误警告）。因此上述程序中的函数g 和h 应该定义成：</p>
<p class="code">void g(const String &amp;s);<br />
void h(const String *s);</p>
<p>　　二、强制保护类的成员函数不改变任何数据成员的值</p>
<p>　　以下程序中，类stack 的成员函数Count 仅用于计数，为了确保Count 不改变类中的任何数据成员的值，应将函数Count 定义成const 类型。</p>
<p class="code">class Stack<br />
{<br />
public:<br />
void push(int elem);<br />
void pop(void);<br />
int Count(void) const; // const 类型的函数<br />
private:<br />
int num;<br />
int data[100];<br />
};<br />
int Stack::Count(void) const<br />
{<br />
++ num; // 编译错误，num 值发生变化<br />
pop(); // 编译错误，pop 将改变成员变量的值<br />
return num;<br />
}</p>
<img src ="http://www.blogjava.net/javascript/aggbug/167117.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/javascript/" target="_blank">付轩</a> 2007-12-12 09:16 <a href="http://www.blogjava.net/javascript/archive/2007/12/12/167117.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>windows 的变量类型</title><link>http://www.blogjava.net/javascript/archive/2007/11/30/164386.html</link><dc:creator>付轩</dc:creator><author>付轩</author><pubDate>Fri, 30 Nov 2007 11:39:00 GMT</pubDate><guid>http://www.blogjava.net/javascript/archive/2007/11/30/164386.html</guid><wfw:comment>http://www.blogjava.net/javascript/comments/164386.html</wfw:comment><comments>http://www.blogjava.net/javascript/archive/2007/11/30/164386.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/javascript/comments/commentRss/164386.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/javascript/services/trackbacks/164386.html</trackback:ping><description><![CDATA[ATOM&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;原子（原子表中的一个字符串的参考） <br />
BOOL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;布尔变量 <br />
BOOLEAN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;布尔变量 <br />
BYTE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;字节（8位） <br />
CCHAR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Windows字符 <br />
CHAR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Windows字符 <br />
COLORREF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;红、绿、蓝(RGB)彩色值(32位) <br />
Const&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;变量，该变量的值在执行期间保持为常量 <br />
CRITICAL_SECTION&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;临界段对象 <br />
CTRYID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;国名标识符 <br />
DLGPROC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个对话框过程的指针 <br />
DWORD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;双字(32位) <br />
ENHMFENUMPROC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个应用程序定义的回调函数的指针，该回调函数枚举增强的元文件记录 <br />
ENUMRESLANGPROC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个应用程序定义的回调函数的指针，该回调函数枚举资源语言。 <br />
ENUMRESNAMEPROC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个应用程序定义的回调函数的指针，该回调函数枚举资源名称。 <br />
ENUMRESTYPEPROC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个应用程序定义的回调函数的指针，该回调函数枚举资源类型。&nbsp;&nbsp;<br />
FARPROC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个回调函数的指针 <br />
FLOAT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;浮点变量 <br />
FMORDER&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;32位字体映射值的数组 <br />
FONTENUMPROC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个应用程序定义的回调函数的指针，该回调函数枚举字体 <br />
GOBJENUMPROC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个应用程序定义的回调函数的指针，该回调函数枚举图形设备接口(GDI)对象 <br />
HACCEL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;加速键表句柄 <br />
HANDLE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;对象的句柄 <br />
HBITMAP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;位图句柄 <br />
HBRUSH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;画刷句柄 <br />
HCONV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;动态数据交换(DDE)会话句柄 <br />
HCONVLIST&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DDE会话句柄 <br />
HCURSOR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;光标句柄 <br />
HDC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;设备描述表(DC)句柄 <br />
HDDEDATA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DDE数据句柄 <br />
HDLG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;对话框句柄 <br />
HDWP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;延期窗口位置结构句柄 <br />
HENHMETAFILE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;增强原文件句柄 <br />
HFILE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;文件句柄 <br />
HFONT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;字体句柄 <br />
HGDIOBJ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GDI对象句柄 <br />
HGLOBAL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;全局内存块句柄 <br />
HHOOK&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;钩子句柄 <br />
HICON&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;图标句柄 <br />
HINSTANCE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;实例句柄 <br />
HKEY&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;登记关键字句柄 <br />
HLOCAL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;局部内存块句柄 <br />
HMEMU&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;菜单句柄 <br />
HMETAFILE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;元文件句柄 <br />
HMIDIIN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;乐器的数字化接口(MIDI)输入文件句柄 <br />
HMIDIOUT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MIDI输出文件句柄 <br />
HMMIO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;文件句柄 <br />
HOOKPROC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个应用程序定义的钩子函数的指针 <br />
HPALETTE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;调色板句柄 <br />
HPEN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;画笔句柄 <br />
HRGN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;域句柄 <br />
HRSRC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;资源句柄 <br />
HSZ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DDE字符串句柄 <br />
HWAVEIN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;波形输入文件句柄 <br />
HWAVEOUT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;波形输出文件句柄 <br />
HWINSTA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;工作站句柄 <br />
HWND&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;窗口句柄 <br />
INT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;符号整数 <br />
LANGID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;语言标识符 <br />
LCID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;所在国(Locale)标识符 <br />
LCTYPE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;所在国类型 <br />
LINEDDAPROC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个回调函数的指针，该回调函数处理行坐标 <br />
LONG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;32位符号整数 <br />
LP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个以"NULL"结束的Unicode(TM)字符串的指针 <br />
LPARAM&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;32位消息参数 <br />
LPBOOL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个布尔变量的指针 <br />
LPBYTE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个字节的指针 <br />
LPCCH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个Windows字符常量的指针 <br />
LPCCHOOKPROC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个应用程序定义的钩子函数的指针 <br />
LPCFHOOLPROC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个应用程序定义的钩子函数的指针 <br />
LPCH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个Windows字符的指针 <br />
LPCOLORREF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个COLORREF值的指针 <br />
LPCRITICAL_SECTION&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个临界段对象的指针 <br />
LPCSTR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个以"NULL"结束的WINDOWS字符串常量的指针 <br />
LPCTSTR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个以"NULL"结束的Unicode或Windows字符串常量的指针&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
LPCWCH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个以"NULL"指向一个以"NULL"结束的Unicode字符常量的指针&nbsp;&nbsp;&nbsp;<br />
LPCWSTR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个以"NULL"指向一个以"NULL"结束的Unicode字符串常量的指针&nbsp;&nbsp;<br />
LPDWORD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个无符号双字(32位)的指针&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
LPFRHOOLPROC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个应用程序定义的钩子函数的指针 <br />
LPHANDLE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个句柄的指针 <br />
LOHANDLER_FUNCTION&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个处理程序函数的指针 <br />
LPHWAVEIN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个波形输入文件句柄的指针 <br />
LPHWAVEOUT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个波形输出文件句柄的指针 <br />
LPINT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个符号整数的指针 <br />
LPLONG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个符号长整数(32位)的指针 <br />
LPOFNHOOKPROC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个应用程序定义的钩子函数的指针 <br />
LPPRINTHOOKPROC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个应用程序定义的钩子函数的指针 <br />
LPSETUPHOOKPROC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个应用程序定义的钩子函数的指针 <br />
LPTSTR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个以NULL结束的Unicode或Windows字符串的指针 <br />
LRESULT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;消息处理的符号结果 <br />
LPVOID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向任何类型的指针 <br />
LPWSTR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个以"NULL"结束的Unicode字符串的指针 <br />
LUID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;局部唯一的标识符 <br />
MCIDEVICEID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;媒体控制接口(MCI)设备标识符 <br />
MFENUMPROC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个应用程序定义的回调函数的指针，该回调函数枚举元文件记录 <br />
MMRESULT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;多媒体消息的处理结果 <br />
NPSTR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个以"NULL"结束的Windows字符串的指针 <br />
NWPSTR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个以"NULL"结束的Unicode字符串的指针 <br />
PBOOL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个布尔变量的指针 <br />
PBYTE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个字节的指针 <br />
PCCH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个Windows字符常量的指针 <br />
PCH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个Windows字符的指针 <br />
PCHAR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个Windows字符的指针 <br />
PCRITICAL_SECTION&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个临界段对象的指针 <br />
PCSTR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个以"NULL"结束的Windows字符串常量的指针 <br />
PCWCH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个Unicode字符常量的指针 <br />
PCWSTR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个以"NULL"结束的Unicode字符串常量的指针 <br />
PDWORD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个无符号双字的指针 <br />
PFLOAT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个浮点变量的指针 <br />
PFNCALLBACK&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个回调函数的指针 <br />
PHANDLE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个句柄的指针 <br />
PHANDLER_ROUTINE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个处理程序的指针 <br />
PHKEY&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个登记关键字的指针 <br />
PINT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个符号整数的指针 <br />
PLONG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个符号长整数的指针 <br />
PLUID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个局部唯一的表示符(LUID)的指针 <br />
PROPENUMPROC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个应用程序定义的回调函数的指针，该回调函数枚举窗口特征 <br />
PSHORT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个符号短整数的指针 <br />
PSID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个加密标识符(SID)的指针 <br />
PSTR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个以"NULL"结束的Windows字符串的指针 <br />
PSZ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个以"NULL"结束的Windows字符串的指针 <br />
PTCH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个Windows或Unicode字符的指针 <br />
PTCHAR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个Windows或Unicode字符的指针 <br />
PTSTR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个以"NULL"结束的Windows或Unicode字符串的指针 <br />
PUCHAR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个无符号Windows字符的指针 <br />
PUINT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个无符号整数的指针 <br />
PULONG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个无符号长整数的指针 <br />
PUSHORT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个无符号短整数的指针 <br />
PVOID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向任何类型的指针 <br />
PWCH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个Unicode字符的指针 <br />
PWCHAR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个Unicode字符的指针 <br />
PWORD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个无符号字的指针 <br />
PWSTR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个以"NULL"结束的Unicode字符串的指针 <br />
REGSAM&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;登记关键字的加密掩码 <br />
SC_HANDLE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;服务句柄 <br />
SERVICE_STATUS_HANDLE&nbsp;&nbsp;服务状态值句柄 <br />
SHORT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;短整数 <br />
SPHANDLE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个句柄的指针 <br />
TCHAR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Unicode或Windows字符 <br />
TIMERPROC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个应用程序定义的定时器回调函数的指针 <br />
UCHAR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;无符号Windows字符 <br />
UINT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;无符号整数 <br />
ULONG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;无符号长整数 <br />
USHORT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;无符号短整数 <br />
VOID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;任何类型 <br />
WCHAR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Unicode字符 <br />
WNDENUMPROC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个应用程序定义的回调函数的指针，该回调函数枚举窗口 <br />
WNDPROC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个应用程序定义的窗口过程的指针 <br />
WORD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;无符号字(16位) <br />
WPARAM&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;32位消息参数 <br />
YIELDPROC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指向一个输出回调函数的指针
<img src ="http://www.blogjava.net/javascript/aggbug/164386.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/javascript/" target="_blank">付轩</a> 2007-11-30 19:39 <a href="http://www.blogjava.net/javascript/archive/2007/11/30/164386.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>J2EE For Weblogic开发中Weblogic.xml文件的配置 (转)</title><link>http://www.blogjava.net/javascript/archive/2007/08/17/137471.html</link><dc:creator>付轩</dc:creator><author>付轩</author><pubDate>Fri, 17 Aug 2007 02:03:00 GMT</pubDate><guid>http://www.blogjava.net/javascript/archive/2007/08/17/137471.html</guid><description><![CDATA[<h2>&nbsp;</h2>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;weblogic Server允许通过设置weblogic应用程序扩展描述符（weblogic.xml）配置jsp容器，<br>该文件通常位于web应用程序的web-inf目录下。一般不通过修改weblogic文件直接配置，<br>而是通过控制台配置该文件，在Deploments--&gt;web Application--&gt;defaultWebApp中配置。<br>可在开发和生产环境中配置不同的信息。<br>主要配置信息：<br>compilerSupportsEncoding //true－－支持使用字符集<br>encoding //指定jsp文件的默认字符集，如gb2312；<br>vervose //是否将调试信息输出到浏览器和日志；<br>keepgenerated //是否让编译jsp文件产生的.java文件持续存在；<br>Page Check Seconds //正数－－在以秒为单位的时间间隔检查jsp文件是否发生了修改，如果是则重新编译；<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0－－在每一个请求检查jsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -1－－不对jsp文件进行检查。<br>Precompile //true－－在weblogic服务器启动时自动编译所有的jsp。<br>Debug Enable //true－－是否允许调试。<br><br>Weblogic .xml<br></p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top> <span style="COLOR: #0000ff">&lt;?</span> <span style="COLOR: #ff00ff">xml&nbsp;version="1.0"&nbsp;encoding="GB2312"</span> <span style="COLOR: #0000ff">?&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top> </span><span style="COLOR: #0000ff">&lt;!</span> <span style="COLOR: #ff00ff">DOCTYPE&nbsp;weblogic-web-app&nbsp;PUBLIC&nbsp;"-//BEA&nbsp;Systems,&nbsp;Inc.//DTD&nbsp;Web&nbsp;Application&nbsp;8.1//EN"&nbsp;"http://www.bea.com/servers/wls810/dtd/weblogic810-web-jar.dtd"</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top> </span><span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">weblogic-web-app</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #008000">&lt;!--</span> <span style="COLOR: #008000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;为web.xml所定义角色赋值<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如果是Weblogic&nbsp;8.1&nbsp;SP2&nbsp;或者之前的版本，可以不定义security-role-assignment<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如果是SP3，必须手工添加所有principal（角色或角色组）；<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;详细介绍请参考&nbsp;PAFA3开发设计指南&nbsp;文档&nbsp;。<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #008000">--&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">security-role-assignment</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #008000">&lt;!--</span> <span style="COLOR: #008000">&nbsp;role-name&nbsp;必须跟web.xml中security-role标记下的role-name取值相同&nbsp;</span> <span style="COLOR: #008000">--&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">role-name</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000">pafaDemoUser</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">role-name</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #008000">&lt;!--</span> <span style="COLOR: #008000">&nbsp;principal-name&nbsp;必须是UM中定义的角色或者角色组，不能是用户&nbsp;</span> <span style="COLOR: #008000">--&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">principal-name</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000">r_usermanager_rm_user</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">principal-name</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">principal-name</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000">p_g_rmtest03_myopr</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">principal-name</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">principal-name</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000">Administrators</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">principal-name</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">security-role-assignment</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top> <br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">jsp-descriptor</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">jsp-param</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">param-name</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000">pageCheckSeconds</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">param-name</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">param-value</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000">1</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">param-value</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">jsp-param</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">jsp-param</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">param-name</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000">compilerSupportsEncoding</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">param-name</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">param-value</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000">true</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">param-value</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">jsp-param</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">jsp-param</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">param-name</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000">encoding</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">param-name</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">param-value</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000">GB2312</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">param-value</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">jsp-param</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">jsp-param</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">param-name</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000">verbose</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">param-name</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">param-value</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000">true</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">param-value</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">jsp-param</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">jsp-param</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">param-name</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000">printNulls</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">param-name</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">param-value</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000">false</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">param-value</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">jsp-param</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">jsp-param</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">param-name</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000">keepgenerated</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">param-name</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">param-value</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000">true</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">param-value</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">jsp-param</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">jsp-descriptor</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top> </span><span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">weblogic-web-app</span> <span style="COLOR: #0000ff">&gt;</span> </div>
<img src ="http://www.blogjava.net/javascript/aggbug/137471.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/javascript/" target="_blank">付轩</a> 2007-08-17 10:03 <a href="http://www.blogjava.net/javascript/archive/2007/08/17/137471.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>javascript</title><link>http://www.blogjava.net/javascript/archive/2007/08/10/135674.html</link><dc:creator>付轩</dc:creator><author>付轩</author><pubDate>Thu, 09 Aug 2007 22:55:00 GMT</pubDate><guid>http://www.blogjava.net/javascript/archive/2007/08/10/135674.html</guid><wfw:comment>http://www.blogjava.net/javascript/comments/135674.html</wfw:comment><comments>http://www.blogjava.net/javascript/archive/2007/08/10/135674.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/javascript/comments/commentRss/135674.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/javascript/services/trackbacks/135674.html</trackback:ping><description><![CDATA[all是一个集合，包含所有html对像的集合，写一个程式，可以存取到所有的对像。像这样： <br>&lt;script language="javascript"&gt; <br>var obj=""; <br>for(i=0;i&lt;document.all.length;i++) <br>obj+=document.all[i].tagName+";"; <br>alert(obj); <br>&lt;/script&gt; <br>注意要把程式放到&lt;/html&gt;之后哦。 
<img src ="http://www.blogjava.net/javascript/aggbug/135674.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/javascript/" target="_blank">付轩</a> 2007-08-10 06:55 <a href="http://www.blogjava.net/javascript/archive/2007/08/10/135674.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java静态工厂方法</title><link>http://www.blogjava.net/javascript/archive/2007/07/14/130294.html</link><dc:creator>付轩</dc:creator><author>付轩</author><pubDate>Sat, 14 Jul 2007 12:00:00 GMT</pubDate><guid>http://www.blogjava.net/javascript/archive/2007/07/14/130294.html</guid><wfw:comment>http://www.blogjava.net/javascript/comments/130294.html</wfw:comment><comments>http://www.blogjava.net/javascript/archive/2007/07/14/130294.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/javascript/comments/commentRss/130294.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/javascript/services/trackbacks/130294.html</trackback:ping><description><![CDATA[<p style="TEXT-INDENT: 2em">public class GlobalConfig {</p>
<p style="TEXT-INDENT: 2em">private static final GlobalConfig INSTANCE=new GlobalConfig();<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private GlobalConfig&nbsp;(){}//构造方法<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 问题是：当第一次调用这个类时，private static final GlobalConfig INSTANCE=new GlobalConfig(); 被执行 ，然后INSTANCE是不是就一直保留在内存中，不会被java垃圾回收！ </p>
<img src ="http://www.blogjava.net/javascript/aggbug/130294.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/javascript/" target="_blank">付轩</a> 2007-07-14 20:00 <a href="http://www.blogjava.net/javascript/archive/2007/07/14/130294.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>hibernate 延迟加载问题</title><link>http://www.blogjava.net/javascript/archive/2007/07/03/127906.html</link><dc:creator>付轩</dc:creator><author>付轩</author><pubDate>Tue, 03 Jul 2007 09:23:00 GMT</pubDate><guid>http://www.blogjava.net/javascript/archive/2007/07/03/127906.html</guid><wfw:comment>http://www.blogjava.net/javascript/comments/127906.html</wfw:comment><comments>http://www.blogjava.net/javascript/archive/2007/07/03/127906.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/javascript/comments/commentRss/127906.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/javascript/services/trackbacks/127906.html</trackback:ping><description><![CDATA[If we want the publisher object can be accessed outside the session, there will be two possible<br>solutions. One is to initialize the publisher explicitly, we can call the method Hibernate.initialize()<br>for this task. This will force the publisher object to be loaded from database.<br>Session session = factory.openSession();<br>try {<br>Book book = (Book) session.get(Book.class, id);<br>Hibernate.initialize(book.getPublisher());<br>return book;<br>} finally {<br>session.close();<br>}<br>Another solution is to turn off the lazy initialization feature for this association. This may decrease<br>the performance as the publisher object will be loaded together with the book object every time.<br>&lt;hibernate-mapping package="mo.org.cpttm.bookshop"&gt;<br>&lt;class name="Book" table="BOOK"&gt;<br>...<br>&lt;many-to-one name="publisher" class="Publisher" column="PUBLISHER_ID"<br>lazy="false" /&gt;<br>&lt;/class&gt;<br>&lt;/hibernate-mapping&gt;
<img src ="http://www.blogjava.net/javascript/aggbug/127906.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/javascript/" target="_blank">付轩</a> 2007-07-03 17:23 <a href="http://www.blogjava.net/javascript/archive/2007/07/03/127906.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>