子舜 的个人资料非水照片日志列表 工具 帮助

日志


2009/10/16

训诂学

训诂学(“诂”音“gǔ”,同“古”)是中国传统研究古书中词义的学科,是中国传统的语文学——小学的一个分支。训诂学也在译解古代词义的同时,也分析古代书籍中的语法修辞现象。他从语言的角度研究古代文献,帮助人们阅读古典文献。

所谓“训诂”,也叫“训故”、“故训”、“古训”、“解故”、“解诂”,用通俗的语言解释词义叫“训”;用当代的话解释古代的语言叫“诂”。“训诂”连用,最早见于春秋时期鲁国毛亨注释《诗经》的书,书名叫《诗故训传》,“故”、“训”、“传”是三种注解古文的方法。训诂合用始见于汉朝的典籍。

 

分类

训诂学可以有广义和狭义之分。广义的训诂学包括音韵学文字学,狭义的训诂学只是小学中与音韵、文字相对的学科。

也有人将训诂学分为新旧两种。语言学家王力1947年的《新训诂学》中提出“必须打破小学为经学附庸的旧观念,然后新训诂学才真正成为语史学的一个部门。”周大璞在《训诂学要略》中也说“训诂学的研究对象就是词义和词义系统,他的首要任务就是研究语义发展演变的规律。”新训诂学是相对旧有的训诂学而言的。

 

历史

训诂学从先秦就已经开始了,到了汉朝时基本形成。到了宋代,训诂学得到了很多的革新。元明时期,训诂学出现了衰退,而在清朝则是训诂学发展最辉煌的时候。现代则采用现代语言学的方法来发展训诂学。

研究对象

历史上每种语言都在不断地变化,古书中有许多词义已经变化,或语法变化,历史语言学家考证古书中词的当代意义,编著出注疏书籍,为训诂学。训诂学最主要的研究对象是汉魏以前的古书中的文字。训诂学书籍有两种,一种专为注疏某一本重要的书,逐字解释全书的意义,如《论语注疏》、《毛诗注疏》、《韩非子集解》等;另一种是单纯解释古代的词汇,搜集古代词汇,分类注释,如《尔雅》、《说文解字》、《方言》等;此外后有对训诂学的书籍进行补充、考证、阐释的书籍,如《方言疏证》等。

研究方法

训诂学研究方法有:

  • 互训,用同义词互相解释,如“老,考也”;“考,老也”。
  • 声训,用声音相似意义相同的字解释,如“衣,依也”,说明这个“衣”在古书中是当作“依”的意思。
  • 形训,用字形说明其来源和意义,如“小土为尘”,说明“尘”字的意思是“小土”,这个简体字也是由此产生。
  • 义训,用当代的词义解释古词的意义,如“明明、斤斤,察也”,是说“明明”、“斤斤”的意思是“察”。
  • 反训,古代有的词和现代意义相反,需要用反义词注释,如“乱而敬,乱,治也”,说明这个“乱”字,在此处作“治”的意思。
  • 递训,用几个词连续解释,如“庸也者,用也;用也者,通也;通也者,得也”,说明这个“庸”字用声训是从“用”字来的,但意思实际是“得”的意思。

参考书目

  1. 周大璞,《训诂学要略》,湖北人民出版社,1980
  2. 林尹,《训诂学概要》,台北正中书局,1993

http://zh.wikipedia.org/wiki/%E8%AE%AD%E8%AF%82%E5%AD%A6

2009/8/10

一不小心看到,记录下

瑞士洛桑大脑与思维学院主任亨瑞·马克兰实验小组花了十多年的时间已经逐步建立起了神经中枢结构数据库,所以现在他们拥有着世界上最大的单神经细胞数据库。
2009/7/5

叠字

垚(三个土,读音yáo,意:山高,多用於人名。)
犇(三条牛,读音bēn,意:同“奔 ”,急走,跑,紧赶,逃跑等。)
聂(三只耳朵,读音niè)

磊(三块石头,读音lěi,本义:石头多)
猋(三条小狗,读音biāo
(三个宝贝,读音bì )
(3个虫重叠,读音chong ) (虫的繁体)
(三个女字重叠,读音jian (奸的繁体)
(上只下要,读音jiào )
(两个喜字,每个喜字31口,共六十二口,读音xǐ )
(上功下夫,读音bū)
(上好下心,读音hào )

(上不下好,读音nao)
(上天下明,读音wěng)
(上不下要,读音biáo,意:不要 )
(三匹马,读音piāo )
(三个吉,读音zhé)
(三个言,读音tà )
(三条舌头,读音qì )
(三只眼,读音mò )
(三只香,读音xīn)
(三条泉水,读音xún )
(三个响雷,读音bìng)
(三个条田,读音léi)
(三个车,读音hōng )
(三个白,读音xiǎo)
(三颗心,读音suǒ )
(三个小,读音mó)
(三个鹿,读音cū )
龘(三个龙,读音dá ,意古同“龖”,龙腾飞的样子。)
票(三个票,读音piāo,意通“飘”。轻举的样子)
鑫(三个金,读音xīn,意旧时商店字号、人名用字,取其金多兴旺之意)
森(三个木,读音sēn,意稠密)
担ㄈ
鏊烈鬽iǎo,意(水广阔无际的样子)
垚(三个土,读音yáo,意山高。多用于人名)
壵(三个士,读音zhuàng,意古同“壮”)
厽(三个私的右半部分,读音lěi,意垒土块为墙。)
掱(三只手,读音pá,意 俗称扒手为三只手,故写作“掱”)
品(三口之家,读音pǐn,本义:众多)
晶(三日,读音jīng,意清明;晴朗)
孨(三子,读音zhuǎn,意谨慎)
众(上四下豕,读音zhòng,意同“众”)
毳(三根毛,读音cuì,意指兽毛皮)
鱻(三条鱼,读音xiān ,意古同“鲜”)
羴(三只羊,读音shān ,意古同“膻”)
朤(四个月,读音lǎng
矗(三个直,读音chù,意高耸)
芔(三根草,读音huì,意古同“卉”)
歮(三个止,读音sè,意古同“涩”)
雥(三个隼,读音zá,意群鸟)
叒(三个又,读音ruò,意古同“若”)
飍(三股阴风,读音xiū,意惊跑的样子)
飝(三个飞机,读音fēi,意义未详。)
刕(三把尖刀,读音lí ,意:姓氏。)
焱(三把火,读音yàn ,意:火花,火焰。)

2007/7/8

流氓依旧

努力归努力,但是这个世界上想办成什么事,除了去做,去尝试,去努力,还需要的是帮助和理解。
 
很遗憾学校的王八蛋那么多,连生活困难的学生都不能免点重修费。哎~!都是王八蛋。
 
很同情,也很感谢学院里的霍书记,帮忙却被学校上级领导唾骂了下。
 
准备回家ING~~
2007/6/21

SQL Server

     SQL Server是微软公司开发的一个关系数据库管理系统,以Transact_SQL作为它的数据库查询和编程语言。T-SQL是结构化查询语言SQL的一种,支持ANSI SQL-92标准。
  SQL Server 采用二级安全验证、登录验证及数据库用户帐号和角色的许可验证。SQL Server 支持两种身份验证模式:Windows NT身份验证和SQL Server 身份验证。7.0版支持多种类型的角色,"角色"概念的引入方便了权限的管理,也使权限的分配更加灵活。
  SQL Server为公共的管理功能提供了预定义的服务器和数据库角色,可以很容易为某一特定用户授予一组选择好的许可权限。   SQL Server可以在不同的操作平台上运行,支持多种不同类型的网络协议如TCP/IP、IPX/SPX、Apple Talk等。SQL Server在服务器端的软件运行平台是Windows NT、Windows9x,在客户端可以是Windows3.x、Windows NT、Windows9x,也可以采用其它厂商开发的系统如Unix、Apple Macintosh等。
      微软的SQL Server是一项完美的客户/服务器系统。SQL Server需要安装在Windows NT的平台上,而Windows NT可以支持Intel 386,Power PC,MIPS,Alpha PC和RISC等平台,它使SQL Server具备足够的威力和功能。
      这里所有的文章所采用的数据库应用程序都是基于SQL Server之上的,采用ODBC及标准的SQL查询,可以非常简单的移植到任何一个支持ODBC的数据库之上,如:Oracle,Informix,Db2和Access,在阅读有关ASP数据库编程技术之前,要确认你至少熟悉一种数据库管理系统,并可以使用标准的SQL查询语言操作数据库。
     SQL Server提供服务器端的软件,这部分需要安装在NT Server上,SQL Server的用户端则可以安装在许多用户端PC系统中,Windows可以让用户端进行数据库的建立,维护及存取等操作,SQL Server可以最多定义32767个数据库,每个数据库中,可以定义20亿个表格,每个表格可以有250个字段,每个表格的数据个数并没有限制,每一个表格可以定义250个索引,其中有一个可以是Clustered索引。
      SQL Server所使用的数据库查询语言称为Transact-SQL,它是SQL Server的核心,Transact-SQL强化了原有的SQL关键字以进行数据的存取,储存及处理等功能,Transact-SQL扩充了流程控制指定,可以使你方便的编写功能强大的存储过程,他们存放在服务器端,并预先编译过,执行速度非常块,触发是一种特殊的存储过程,用来确保SQL Server数据库引用的完整性,你可以建立插入,删除和更新触发以控制相关的表格中对数据列的插入,删除和更新,你还可以使用规则(Rule),缺省(default)以及限制(Constraints),来协助将新的数值套用到表格中去!
 
一、SQL SERVER的特点
  上手容易
  话分两头,如果您的企业至今还未购置数据库,其中一个主要的原因可能就是认为它不好上手,那么,从SQLServer开始吧。毕竟,大多数的中小企业日常的数据应用是建立在Windows平台上的。由于SQLServer与Windows界面风格完全一致,且有许多"向导(Wizard)"帮助,因此易于安装和学习,有关SQLServer的资料、培训随处可得,并且目前国内具有MCDBA认证的工程师不在少数。
  从另一个角度来讲,学习SQLServer是掌握其他平台及大型数据,如Oracle,Sybase,DB/2的基础。因为这些大型数据库对于设备、平台、人员知识的要求往往较高,而并不是每个人都具备这样的条件,且有机会去接触它们。但有了SQLServer的基础,再去学习和使用它们就容易多了。IT行业的实践经验充分证明了这一点。
  兼容性良好
  由于今天Windows操作系统占领着主导地的位,选择SQLServer一定会在兼容性方面取得一些优势。另外,SQLServer2000除了具有扩展性,可靠性以外,还具有可以迅速开发新的因特网系统的功能。尤其是它可以直接存贮XML数据,可以将搜索结果以XML格式输出等特点,有利于构建了异构系统的互操作性,奠定了面向互联网的企业应用和服务的基石。这些特点在.NET战略中发挥着重要的作用。
  电子商务
  在使用由MicrosoftSQLServer2000关系数据库引擎的情况下,XML数据可在关系表中进行存储,而查询则能以XML格式将有关结果返回。此外,XML支持还简化了后端系统集成,并实现了跨防火墙的无缝数据传输。你还可以使用HypertextTransferProtocol(超文本传输协议,HTTP)来访问SQLServer2000,以实现面向SQLServer2000数据库的安全Web连接和无须额外编程的联机分析处理(OLAP)多维数据集。
  数据仓库
  MicrosoftSQLServer2000非常明显的改进就是增加了OLAP(联机分析处理)功能,这可以让很多中小企业用户也可以使用数据仓库的一些特性进行分析。OLAP可以通过多维存储技术对大型、复杂数据集执行快速、高级的分析工作。数据挖掘功能能够揭示出隐藏在大量数据中的倾向及趋势,它允许组织或机构最大
限度的从数据中获取价值。通过对现有数据进行有效分析,这一功能可以对未来的趋势进行预测。
  增强的在线商务
  MicrosoftSQLServer2000简化了管理、优化工作,并且增强了迅速、成功的部署在线商务应用程序所需的可靠性和伸缩性。其中,用以提高可靠性的特性包括日志传送、在线备份和故障切换群集。在伸缩性方面的改进包括对多达32颗CPU和64GBRAM的支持。通过自动优化和改进后的管理特性--诸如数据文件尺寸的自动管理、基于向导的数据库拷贝、自动内存管理和简化的故障切换群集安装与管理,在线商务应用程序能够被迅速部署并有效管理。
  利于构筑"敏捷性商务"
  所谓"敏捷性商务"就是能够打破内部和外部的商业界限,对迅速改变的环境做出快速反应。。微软已经与关键的合作伙伴建立起了战略关系,创造出了能够与许多供应商的产品实现整合的解决方案,因而企业用户并不需要做出"要么完全接受,要么全部不要"的承诺。在部署解决方案的过程中,企业用户不一定要拆除原有的设备从头。敏捷商务让企业用户能够充分利用现有的系统,自主决定所需的硬件和软件解决方案以及由谁来提供,伸缩自如、游刃有余。
      目前最新的版本为MicrosoftSQLServer2005
二、SQL Server 服务器安装剖析
  sql server 2000以前的版本,例如7.0一般不存在多个版本,只有标准版跟桌面版,用户如果不清楚该装什么版本的话,可按安装上的安装先决条件指示安装,一般在WIN2000 服务器版上装标准版,其他的系统装桌面版的就可以;而SQL Server 2000安装问题就比较大,时常见问题有如下:
  (1)配置服务器时中断.
  (2)注册 ActiveX 时中断.
  (3)显示到100%的时候中断.
  (4)提示:command line option syntax error, type command /? for help,继续安装,最后在配置服务器的时候出现:无法找到动态链接SQLUNIRL.DLL于指定的路径……
  (5)以前进行的程序创建了挂起的文件操作,运行安装程序前,必须重新启动
  (1)(2)(3)的解决办法:
  提醒:为避免误操作,先备份注册表和数据库进不了SQL Server 2000,可以备份 Program Files\Microsoft SQL Server\MSSQL\Data 文件夹的文件.
  1、先把SQL Server卸载(卸载不掉也没有关系,继续下面的操作)
  2、把Microsoft SQL Server文件夹整个删掉。
  3、运行注册表,删除如下项:
  HKEY_CURRENT_USER\Software\Microsoft\Microsoft SQL Server
  HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server
  HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer
  4、需要的话就重新启动系统
  5、重新安装
  另外也可尝试单步运行安装 SQL Server 2000的方法:
  1:放入 SQL Server 2000 光盘.
  2:在"开始"--"运行"键入 "F:\x86\setup.exe k=dbg" (F是光盘)
  注意:
  一、不同的操作系统支持的SQL Server 2000版本以及对硬件的要求。
  Windows 2000 Server可以安装SQL Server 2000的任何版本.
  Windows 2000 Professional只能安装SQL Server 2000的个人版、开发版、评估版、MCDE
  二、SQL Server 2000各版本以及对硬件的要求。
  (4)的解决办法
  因为安装文件的路径(完整路径)里有中文.
  比如 c:\SQLSERVER中文企业版\
  改成 c:\SQLSERVER\

  (5)的解决办法
  a、重启机器,再进行安装,如果发现还有该错误,请按下面步骤
  b、在开始->运行中输入regedit
  c、到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager 位置
  d、选择文件->倒出,保存
  e、在右边窗口右击PendingFileRenameOperations,选择删除,然后确认
  f、重启安装,问题解决
  -------------------------------------------------------
  如果问题依旧,试试先修复操作系统
  命令提示符下执行:
  sfc /scannow
  最后的方法:换Windows 2000 安装盘 和SQL Server2000安装盘
  有时候问题的原因很奇怪,有人曾更换了一个电源就解决了问题。
  1 先卸载您的 SQL Server 2000,必要的时候删除 Program Files\Microsoft SQL Server 文件夹
  2 打开注册表
  在"开始"--"运行"键入 "regedit"
  3 按下列顺序点击打开
   + HKEY_LOCAL_MACHINE
   + SOFTWART
   + Microsoft
   + Windows
   + CurrentVersion
   + Setup
   + ExceptionComponents
  4 将 ExceptionComponents 下面的文件夹全部删除!
  如 {60BFF50D-FB2C-4498-A577-C9548C390BB9}
{60BFF50D-FB2C-4498-A577-C9548C390BB9}
{60BFF50D-FB2C-4498-A577-C9548C390BB9}
{60BFF50D-FB2C-4498-A577-C9548C390BB9}
  6 重新启动:
  7 重新安装 SQL Server 2000
  XP+SP2的问题
  1.winxp+sp2的系统需要安装SQL Server SP3(服务包补丁3),如果之前已经安装,必须再安装一次。
  SP3可以在微软网站免费下载,中文版地址如下:
  SQL Server 2000 Service Pack 3a
  http://download.microsoft.com/download/d/d/e/dde427eb-0296-4eac-a47c-d11a66b03816/chs_sql2ksp3.exe
三、SQL Server数据库安全规划全攻略
      在改进SQL Server 7.0系列所实现的安全机制的过程中,Microsoft建立了一种既灵活又强大的安全管理机制,它能够对用户访问SQL Server服务器系统和数据库的安全进行全面地管理。按照本文介绍的步骤,你可以为SQL Server 7.0(或2000)构造出一个灵活的、可管理的安全策略,而且它的安全性经得起考验。
  1、验证方法选择
本文对验证(authentication)和授权(authorization)这两个概念作不同的解释。验证是指检验用户的身份标识;授权是指允许用户做些什么。在本文的讨论中,验证过程在用户登录SQL Server的时候出现,授权过程在用户试图访问数据或执行命令的时候出现。
构造安全策略的第一个步骤是确定SQL Server用哪种方式验证用户。SQL Server的验证是把一组帐户、密码与Master数据库Sysxlogins表中的一个清单进行匹配。Windows NT/2000的验证是请求域控制器检查用户身份的合法性。一般地,如果服务器可以访问域控制器,我们应该使用Windows NT/2000验证。域控制器可以是Win2K服务器,也可以是NT服务器。无论在哪种情况下,SQL Server都接收到一个访问标记(Access Token)。访问标记是在验证过程中构造出来的一个特殊列表,其中包含了用户的SID(安全标识号)以及一系列用户所在组的SID。正如本文后面所介绍的,SQL Server以这些SID为基础授予访问权限。注意,操作系统如何构造访问标记并不重要,SQL Server只使用访问标记中的SID。也就是说,不论你使用SQL Server 2000、SQL Server 7.0、Win2K还是NT进行验证都无关紧要,结果都一样。
如果使用SQL Server验证的登录,它最大的好处是很容易通过Enterprise Manager实现,最大的缺点在于SQL Server验证的登录只对特定的服务器有效,也就是说,在一个多服务器的环境中管理比较困难。使用SQL Server进行验证的第二个重要的缺点是,对于每一个数据库,我们必须分别地为它管理权限。如果某个用户对两个数据库有相同的权限要求,我们必须手工设置两个数据库的权限,或者编写脚本设置权限。如果用户数量较少,比如25个以下,而且这些用户的权限变化不是很频繁,SQL Server验证的登录或许适用。但是,在几乎所有的其他情况下(有一些例外情况,例如直接管理安全问题的应用),这种登录方式的管理负担将超过它的优点。
      2、Web环境中的验证
即使最好的安全策略也常常在一种情形前屈服,这种情形就是在Web应用中使用SQL Server的数据。在这种情形下,进行验证的典型方法是把一组SQL Server登录名称和密码嵌入到Web服务器上运行的程序,比如ASP页面或者CGI脚本;然后,由Web服务器负责验证用户,应用程序则使用它自己的登录帐户(或者是系统管理员sa帐户,或者为了方便起见,使用Sysadmin服务器角色中的登录帐户)为用户访问数据。
这种安排有几个缺点,其中最重要的包括:它不具备对用户在服务器上的活动进行审核的能力,完全依赖于Web应用程序实现用户验证,当SQL Server需要限定用户权限时不同的用户之间不易区别。如果你使用的是IIS 5.0或者IIS 4.0,你可以用四种方法验证用户。第一种方法是为每一个网站和每一个虚拟目录创建一个匿名用户的NT帐户。此后,所有应用程序登录SQL Server时都使用该安全环境。我们可以通过授予NT匿名帐户合适的权限,改进审核和验证功能。
第二种方法是让所有网站使用Basic验证。此时,只有当用户在对话框中输入了合法的帐户和密码,IIS才会允许他们访问页面。IIS依靠一个NT安全数据库实现登录身份验证,NT安全数据库既可以在本地服务器上,也可以在域控制器上。当用户运行一个访问SQL Server数据库的程序或者脚本时,IIS把用户为了浏览页面而提供的身份信息发送给服务器。如果你使用这种方法,应该记住:在通常情况下,浏览器与服务器之间的密码传送一般是不加密的,对于那些使用Basic验证而安全又很重要的网站,你必须实现SSL(Secure Sockets Layer,安全套接字层)。
在客户端只使用IE 5.0、IE 4.0、IE 3.0浏览器的情况下,你可以使用第三种验证方法。你可以在Web网站上和虚拟目录上都启用NT验证。IE会把用户登录计算机的身份信息发送给IIS,当该用户试图登录SQL Server时IIS就使用这些登录信息。使用这种简化的方法时,我们可以在一个远程网站的域上对用户身份进行验证(该远程网站登录到一个与运行着Web服务器的域有着信任关系的域)。
最后,如果用户都有个人数字证书,你可以把那些证书映射到本地域的NT帐户上。个人数字证书与服务器数字证书以同样的技术为基础,它证明用户身份标识的合法性,所以可以取代NT的Challenge/Response(质询/回应)验证算法。Netscape和IE都自动在每一个页面请求中把证书信息发送给IIS。IIS提供了一个让管理员把证书映射到NT帐户的工具。因此,我们可以用数字证书取代通常的提供帐户名字和密码的登录过程。
由此可见,通过NT帐户验证用户时我们可以使用多种实现方法。即使当用户通过IIS跨越Internet连接SQL Server时,选择仍旧存在。因此,你应该把NT验证作为首选的用户身份验证办法。
  3、设置全局组
构造安全策略的下一个步骤是确定用户应该属于什么组。通常,每一个组织或应用程序的用户都可以按照他们对数据的特定访问要求分成许多类别。例如,会计应用软件的用户一般包括:数据输入操作员,数据输入管理员,报表编写员,会计师,审计员,财务经理等。每一组用户都有不同的数据库访问要求。
控制数据访问权限最简单的方法是,对于每一组用户,分别地为它创建一个满足该组用户权限要求的、域内全局有效的组。我们既可以为每一个应用分别创建组,也可以创建适用于整个企业的、涵盖广泛用户类别的组。然而,如果你想要能够精确地了解组成员可以做些什么,为每一个应用程序分别创建组是一种较好的选择。例如,在前面的会计系统中,我们应该创建Data Entry Operators、Accounting Data Entry Managers等组。请记住,为了简化管理,最好为组取一个能够明确表示出作用的名字。
除了面向特定应用程序的组之外,我们还需要几个基本组。基本组的成员负责管理服务器。按照习惯,我们可以创建下面这些基本组:SQL Server Administrators,SQL Server Users,SQL Server Denied Users,SQL Server DB Creators,SQL Server Security Operators,SQL Server Database Security Operators,SQL Server Developers,以及 DB_Name Users(其中DB_Name是服务器上一个数据库的名字)。当然,如果必要的话,你还可以创建其他组。
创建了全局组之后,接下来我们可以授予它们访问SQL Server的权限。首先为SQL Server Users创建一个NT验证的登录并授予它登录权限,把Master数据库设置为它的默认数据库,但不要授予它访问任何其他数据库的权限,也不要把这个登录帐户设置为任何服务器角色的成员。接着再为SQL Server Denied Users重复这个过程,但这次要拒绝登录访问。在SQL Server中,拒绝权限始终优先。创建了这两个组之后,我们就有了一种允许或拒绝用户访问服务器的便捷方法。
为那些没有直接在Sysxlogins系统表里面登记的组授权时,我们不能使用Enterpris Managr,因为Enterprise Manager只允许我们从现有登录名字的列表选择,而不是域内所有组的列表。要访问所有的组,请打开Query Analyzer,然后用系统存储过程sp_addsrvrolemember以及sp_addrolemember进行授权。
对于操作服务器的各个组,我们可以用sp_addsrvrolemember存储过程把各个登录加入到合适的服务器角色:SQL Server Administrators成为Sysadmins角色的成员,SQL Server DB Creators成为Dbcreator角色的成员,SQL Server Security Operators成为Securityadmin角色的成员。注意sp_addsrvrolemember存储过程的第一个参数要求是帐户的完整路径。例如,BigCo域的JoeS应该是bigco\joes(如果你想用本地帐户,则路径应该是server_name\joes)。
要创建在所有新数据库中都存在的用户,你可以修改Model数据库。为了简化工作,SQL Server自动把所有对Model数据库的改动复制到新的数据库。只要正确运用Model数据库,我们无需定制每一个新创建的数据库。另外,我们可以用sp_addrolemember存储过程把SQL Server Security Operators加入到db_securityadmin,把SQL Server Developers加入到db_owner角色。
注意我们仍然没有授权任何组或帐户访问数据库。事实上,我们不能通过Enterprise Manager授权数据库访问,因为Enterprise Manager的用户界面只允许我们把数据库访问权限授予合法的登录帐户。SQL Server不要求NT帐户在我们把它设置为数据库角色的成员或分配对象权限之前能够访问数据库,但Enterprise Manager有这种限制。尽管如此,只要我们使用的是sp_addrolemember存储过程而不是Enterprise Manager,就可以在不授予域内NT帐户数据库访问权限的情况下为任意NT帐户分配权限。
到这里为止,对Model数据库的设置已经完成。但是,如果你的用户群体对企业范围内各个应用数据库有着类似的访问要求,你可以把下面这些操作移到Model数据库上进行,而不是在面向特定应用的数据库上进行。
  4、允许数据库访问
在数据库内部,与迄今为止我们对登录验证的处理方式不同,我们可以把权限分配给角色而不是直接把它们分配给全局组。这种能力使得我们能够轻松地在安全策略中使用SQL Server验证的登录。即使你从来没有想要使用SQL Server登录帐户,本文仍旧建议分配权限给角色,因为这样你能够为未来可能出现的变化做好准备。
创建了数据库之后,我们可以用sp_grantdbaccess存储过程授权DB_Name Users组访问它。但应该注意的是,与sp_grantdbaccess对应的sp_denydbaccess存储过程并不存在,也就是说,你不能按照拒绝对服务器访问的方法拒绝对数据库的访问。如果要拒绝数据库访问,我们可以创建另外一个名为DB_Name Denied Users的全局组,授权它访问数据库,然后把它设置为db_denydatareader以及db_denydatawriter角色的成员。注意SQL语句权限的分配,这里的角色只限制对对象的访问,但不限制对DDL(Data Definition Language,数据定义语言)命令的访问。
正如对登录过程的处理,如果访问标记中的任意SID已经在Sysusers系统表登记,SQL将允许用户访问数据库。因此,我们既可以通过用户的个人NT帐户SID授权用户访问数据库,也可以通过用户所在的一个(或者多个)组的SID授权。为了简化管理,我们可以创建一个名为DB_Name Users的拥有数据库访问权限的全局组,同时不把访问权授予所有其他的组。这样,我们只需简单地在一个全局组中添加或者删除成员就可以增加或者减少数据库用户。
  5、分配权限
实施安全策略的最后一个步骤是创建用户定义的数据库角色,然后分配权限。完成这个步骤最简单的方法是创建一些名字与全局组名字配套的角色。例如对于前面例子中的会计系统,我们可以创建Accounting Data Entry Operators、Accounting Data Entry Managers之类的角色。由于会计数据库中的角色与帐务处理任务有关,你可能想要缩短这些角色的名字。然而,如果角色名字与全局组的名字配套,你可以减少混乱,能够更方便地判断出哪些组属于特定的角色。
创建好角色之后就可以分配权限。在这个过程中,我们只需用到标准的GRANT、REVOKE和DENY命令。但应该注意DENY权限,这个权限优先于所有其他权限。如果用户是任意具有DENY权限的角色或者组的成员,SQL Server将拒绝用户访问对象。
接下来我们就可以加入所有SQL Server验证的登录。用户定义的数据库角色可以包含SQL Server登录以及NT全局组、本地组、个人帐户,这是它最宝贵的特点之一。用户定义的数据库角色可以作为各种登录的通用容器,我们使用用户定义角色而不是直接把权限分配给全局组的主要原因就在于此。
由于内建的角色一般适用于整个数据库而不是单独的对象,因此这里建议你只使用两个内建的数据库角色,,即db_securityadmin和db_owner。其他内建数据库角色,例如db_datareader,它授予对数据库里面所有对象的SELECT权限。虽然你可以用db_datareader角色授予SELECT权限,然后有选择地对个别用户或组拒绝SELECT权限,但使用这种方法时,你可能忘记为某些用户或者对象设置权限。一种更简单、更直接而且不容易出现错误的方法是为这些特殊的用户创建一个用户定义的角色,然后只把那些用户访问对象所需要的权限授予这个用户定义的角色。
  6、简化安全管理
SQL Server验证的登录不仅能够方便地实现,而且与NT验证的登录相比,它更容易编写到应用程序里。但是,如果用户的数量超过25,或者服务器数量在一个以上,或者每个用户都可以访问一个以上的数据库,或者数据库有多个管理员,SQL Server验证的登录不容易管理。由于SQL Server没有显示用户有效权限的工具,要记忆每个用户具有哪些权限以及他们为何要得到这些权限就更加困难。即使对于一个数据库管理员还要担负其他责任的小型系统,简化安全策略也有助于减轻问题的复杂程度。因此,首选的方法应该是使用NT验证的登录,然后通过一些精心选择的全局组和数据库角色管理数据库访问。
下面是一些简化安全策略的经验规则:
  ·用户通过SQL Server Users组获得服务器访问,通过DB_Name Users组获得数据库访问。
  ·用户通过加入全局组获得权限,而全局组通过加入角色获得权限,角色直接拥有数据库里的权限。
  ·需要多种权限的用户通过加入多个全局组的方式获得权限。
只要规划得恰当,你能够在域控制器上完成所有的访问和权限维护工作,使得服务器反映出你在域控制器上进行的各种设置调整。虽然实际应用中情况可能有所变化,但本文介绍的基本措施仍旧适用,它们能够帮助你构造出很容易管理的安全策略。
四、SQL Server实用经验技巧集
  (一)挂起操作
  在安装Sql或sp补丁的时候系统提示之前有挂起的安装操作,要求重启,这里往往重启无用,解决办法:
  到HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession Manager
  删除PendingFileRenameOperations
  (二)收缩数据库

  --重建索引
  DBCC REINDEX
  DBCC INDEXDEFRAG
  --收缩数据和日志
  DBCC SHRINKDB
  DBCC SHRINKFILE
 
  (三)压缩数据库

  dbcc shrinkdatabase(dbname)
 
  (四)转移数据库给新用户以已存在用户权限

  exec sp_change_users_login 'update_one','newname','oldname'
  go
 
  (五)检查备份集

  RESTORE VERIFYONLY from disk='E:dvbbs.bak'
 
  (六)修复数据库

  ALTER DATABASE [dvbbs] SET SINGLE_USER
  GO
  DBCC CHECKDB('dvbbs',repair_allow_data_loss) WITH TABLOCK
  GO
  ALTER DATABASE [dvbbs] SET MULTI_USER
  GO
  --CHECKDB 有3个参数:
  --REPAIR_ALLOW_DATA_LOSS
 
  -- 执行由 REPAIR_REBUILD 完成的所有修复,包括对行和页进行分配和取消分配以改正分配错误、结构行或页的错误,以及删除已损坏的文本对象。这些修复可能会导致一些数据丢失。修复操作可以在用户事务下完成以允许用户回滚所做的更改。如果回滚修复,则数据库仍会含有错误,应该从备份进行恢复。如果由于所提供修复等级的缘故遗漏某个错误的修复,则将遗漏任何取决于该修复的修复。修复完成后,备份数据库。
  --REPAIR_FAST 进行小的、不耗时的修复操作,如修复非聚集索引中的附加键。这些修复可以很快完成,并且不会有丢失数据的危险。
  --REPAIR_REBUILD 执行由 REPAIR_FAST 完成的所有修复,包括需要较长时间的修复(如重建索引)。执行这些修复时不会有丢失数据的危险。

  --DBCC CHECKDB('dvbbs') with NO_INFOMSGS,PHYSICAL_ONLY
 
  SQL SERVER日志清除的两种方法
  在使用过程中大家经常碰到数据库日志非常大的情况,在这里介绍了两种处理方法……
  方法一
  一般情况下,SQL数据库的收缩并不能很大程度上减小数据库大小,其主要作用是收缩日志大小,应当定期进行此操作以免数据库日志过大
  1、设置数据库模式为简单模式:打开SQL企业管理器,在控制台根目录中依次点开Microsoft SQL Server-->SQL Server组-->双击打开你的服务器-->双击打开数据库目录-->选择你的数据库名称(如论坛数据库Forum)-->然后点击右键选择属性-->选择选项-->在故障还原的模式中选择“简单”,然后按确定保存。
  2、在当前数据库上点右键,看所有任务中的收缩数据库,一般里面的默认设置不用调整,直接点确定。
  3、收缩数据库完成后,建议将您的数据库属性重新设置为标准模式,操作方法同第一点,因为日志在一些异常情况下往往是恢复数据库的重要依据
  方法二

  SET NOCOUNT ON
  DECLARE @LogicalFileName sysname,
  @MaxMinutes INT,
  @NewSize INT
  USE   tablename         -- 要操作的数据库名
  SELECT @LogicalFileName = 'tablename_log', -- 日志文件名
  @MaxMinutes = 10,           -- Limit on time allowed to wrap log.
  @NewSize = 1             -- 你想设定的日志文件的大小(M)
 

  -- Setup / initialize
  DECLARE @OriginalSize int
  SELECT @OriginalSize = size
  FROM sysfiles
  WHERE name = @LogicalFileName
  SELECT 'Original Size of ' + db_name() + ' LOG is ' +
  CONVERT(VARCHAR(30),@OriginalSize) + ' 8K pages or ' +
  CONVERT(VARCHAR(30),(@OriginalSize*8/1024)) + 'MB'
  FROM sysfiles
  WHERE name = @LogicalFileName
  CREATE TABLE DummyTrans
  (DummyColumn char (8000) not null)
 

  DECLARE @Counter   INT,
  @StartTime DATETIME,
  @TruncLog VARCHAR(255)
  SELECT @StartTime = GETDATE(),
  @TruncLog = 'BACKUP LOG ' + db_name() + ' WITH TRUNCATE_ONLY'
  DBCC SHRINKFILE (@LogicalFileName, @NewSize)
  EXEC (@TruncLog)
  -- Wrap the log if necessary.
  WHILE   @MaxMinutes > DATEDIFF (mi, @StartTime, GETDATE()) -- time has not expired
  AND @OriginalSize = (SELECT size FROM sysfiles WHERE name = @LogicalFileName)
  AND (@OriginalSize * 8 /1024) > @NewSize
  BEGIN -- Outer loop.
  SELECT @Counter = 0
  WHILE ((@Counter < @OriginalSize / 16) AND (@Counter < 50000))
  BEGIN -- update
  INSERT DummyTrans VALUES ('Fill Log')
  DELETE DummyTrans
  SELECT @Counter = @Counter + 1
  END  
  EXEC (@TruncLog)
  END  
  SELECT 'Final Size of ' + db_name() + ' LOG is ' +
  CONVERT(VARCHAR(30),size) + ' 8K pages or ' +
  CONVERT(VARCHAR(30),(size*8/1024)) + 'MB'
  FROM sysfiles
  WHERE name = @LogicalFileName
  DROP TABLE DummyTrans
  SET NOCOUNT OFF
删除数据库中重复数据的几个方法
  数据库的使用过程中由于程序方面的问题有时候会碰到重复数据,重复数据导致了数据库部分设置不能正确设置……
  方法一

  declare @max integer,@id integer
  declare cur_rows cursor local for select 主字段,count(*) from 表名 group by 主字段 having count(*) > 1
  open cur_rows
  fetch cur_rows into @id,@max
  while @@fetch_status=0
  begin
  select @max = @max -1
  set rowcount @max
  delete from 表名 where 主字段 = @id
  fetch cur_rows into @id,@max
  end
  close cur_rows
  set rowcount 0

  方法二
  有两个意义上的重复记录,一是完全重复的记录,也即所有字段均重复的记录,二是部分关键字段重复的记录,比如Name字段重复,而其他字段不一定重复或都重复可以忽略。
  1、对于第一种重复,比较容易解决,使用

  select distinct * from tableName
 
  就可以得到无重复记录的结果集。
  如果该表需要删除重复的记录(重复记录保留1条),可以按以下方法删除

  select distinct * into #Tmp from tableName
  drop table tableName
  select * into tableName from #Tmp
  drop table #Tmp

  发生这种重复的原因是表设计不周产生的,增加唯一索引列即可解决。
  2、这类重复问题通常要求保留重复记录中的第一条记录,操作方法如下
  假设有重复的字段为Name,Address,要求得到这两个字段唯一的结果集

  select identity(int,1,1) as autoID, * into #Tmp from tableName
  select min(autoID) as autoID into #Tmp2 from #Tmp group by Name,autoID
  select * from #Tmp where autoID in(select autoID from #tmp2)

  最后一个select即得到了Name,Address不重复的结果集(但多了一个autoID字段,实际写时可以写在select子句中省去此列)
  更改数据库中表的所属用户的两个方法
  大家可能会经常碰到一个数据库备份还原到另外一台机器结果导致所有的表都不能打开了,原因是建表的时候采用了当时的数据库用户……
  --更改某个表

  exec sp_changeobjectowner 'tablename','dbo'

  --存储更改全部表

  CREATE PROCEDURE dbo.User_ChangeObjectOwnerBatch
  @OldOwner as NVARCHAR(128),
  @NewOwner as NVARCHAR(128)
  AS
  DECLARE @Name   as NVARCHAR(128)
  DECLARE @Owner as NVARCHAR(128)
  DECLARE @OwnerName as NVARCHAR(128)
  DECLARE curObject CURSOR FOR
  select 'Name'   = name,
  'Owner'   = user_name(uid)
  from sysobjects
  where user_name(uid)=@OldOwner
  order by name
  OPEN curObject
  FETCH NEXT FROM curObject INTO @Name, @Owner
  WHILE(@@FETCH_STATUS=0)
  BEGIN  
  if @Owner=@OldOwner
  begin
  set @OwnerName = @OldOwner + '.' + rtrim(@Name)
  exec sp_changeobjectowner @OwnerName, @NewOwner
  end
  -- select @name,@NewOwner,@OldOwner
  FETCH NEXT FROM curObject INTO @Name, @Owner
  END
  close curObject
  deallocate curObject
  GO

  SQL SERVER中直接循环写入数据
  没什么好说的了,大家自己看,有时候有点用处

  declare @i int
  set @i=1
  while @i<30
  begin
  insert into test (userid) values(@i)
  set @i=@i+1
  end
  无数据库日志文件恢复数据库方法两则
  数据库日志文件的误删或别的原因引起数据库日志的损坏

  方法一
  1.新建一个同名的数据库
  2.再停掉sql server(注意不要分离数据库)
  3.用原数据库的数据文件覆盖掉这个新建的数据库
  4.再重启sql server
  5.此时打开企业管理器时会出现置疑,先不管,执行下面的语句(注意修改其中的数据库名)
  6.完成后一般就可以访问数据库中的数据了,这时,数据库本身一般还要问题,解决办法是,利用
  数据库的脚本创建一个新的数据库,并将数据导进去就行了.

  USE MASTER
  GO
  SP_CONFIGURE 'ALLOW UPDATES',1 RECONFIGURE WITH OVERRIDE
  GO
  UPDATE SYSDATABASES SET STATUS =32768 WHERE NAME='置疑的数据库名'
  Go
  sp_dboption '置疑的数据库名', 'single user', 'true'
  Go
  DBCC CHECKDB('置疑的数据库名')
  Go
  update sysdatabases set status =28 where name='置疑的数据库名'
  Go
  sp_configure 'allow updates', 0 reconfigure with override
  Go
  sp_dboption '置疑的数据库名', 'single user', 'false'
  Go

  方法二
  事情的起因
  昨天,系统管理员告诉我,我们一个内部应用数据库所在的磁盘空间不足了。我注意到数据库事件日志文件XXX_Data.ldf文件已经增长到了3GB,于是我决意缩小这个日志文件。经过收缩数据库等操作未果后,我犯了一个自进入行业以来的最大最愚蠢的错误:竟然误删除了这个日志文件!后来我看到所有论及数据库恢复的文章上都说道:“无论如何都要保证数据库日志文件存在,它至关重要”,甚至微软甚至有一篇KB文章讲如何只靠日志文件恢复数据库的。我真是不知道我那时候是怎么想的?!
  这下子坏了!这个数据库连不上了,企业管理器在它的旁边写着“(置疑)”。而且最要命的,这个数据库从来没有备份了。我唯一找得到的是迁移半年前的另外一个数据库服务器,应用倒是能用了,但是少了许多记录、表和存储过程。真希望这只是一场噩梦!
  没有效果的恢复步骤
  附加数据库
  _Rambo讲过被删除日志文件中不存在活动日志时,可以这么做来恢复:
  1,分离被置疑的数据库,可以使用sp_detach_db
  2,附加数据库,可以使用sp_attach_single_file_db
  但是,很遗憾,执行之后,SQL Server质疑数据文件和日志文件不符,所以无法附加数据库数据文件。
  DTS数据导出
  不行,无法读取XXX数据库,DTS Wizard报告说“初始化上下文发生错误”。
  紧急模式
  怡红公子讲过没有日志用于恢复时,可以这么做:
  1,把数据库设置为emergency mode
  2,重新建立一个log文件
  3,把SQL Server 重新启动一下
  4,把应用数据库设置成单用户模式
  5,做DBCC CHECKDB
  6,如果没有什么大问题就可以把数据库状态改回去了,记得别忘了把系统表的修改选项关掉
  我实践了一下,把应用数据库的数据文件移走,重新建立一个同名的数据库XXX,然后停掉SQL服务,把原来的数据文件再覆盖回来。之后,按照怡红公子的步骤走。
  但是,也很遗憾,除了第2步之外,其他步骤执行非常成功。可惜,重启SQL Server之后,这个应用数据库仍然是置疑!
  不过,让我欣慰的是,这么做之后,倒是能够Select数据了,让我大出一口气。只不过,组件使用数据库时,报告说:“发生错误:-2147467259,未能在数据库 'XXX' 中运行 BEGIN TRANSACTION,因为该数据库处于回避恢复模式。”
  最终成功恢复的全部步骤
  设置数据库为紧急模式
  停掉SQL Server服务;
  把应用数据库的数据文件XXX_Data.mdf移走;
  重新建立一个同名的数据库XXX;
  停掉SQL服务;
  把原来的数据文件再覆盖回来;
  运行以下语句,把该数据库设置为紧急模式;

  运行“Use Master
  Go
  sp_configure 'allow updates', 1
  reconfigure with override
  Go”
 
  执行结果:
  DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
  已将配置选项 'allow updates' 从 0 改为 1。请运行 RECONFIGURE 语句以安装。
  接着运行“update sysdatabases set status = 32768 where name = 'XXX'”
  执行结果:
  (所影响的行数为 1 行)
  重启SQL Server服务;
  运行以下语句,把应用数据库设置为Single User模式;
  运行“sp_dboption 'XXX', 'single user', 'true'”
  执行结果:
  命令已成功完成。
  ü       做DBCC CHECKDB;
  运行“DBCC CHECKDB('XXX')”
  执行结果:
  'XXX' 的 DBCC 结果。
  'sysobjects' 的 DBCC 结果。
  对象 'sysobjects' 有 273 行,这些行位于 5 页中。
  'sysindexes' 的 DBCC 结果。
  对象 'sysindexes' 有 202 行,这些行位于 7 页中。
  'syscolumns' 的 DBCC 结果。
  ………
  ü       运行以下语句把系统表的修改选项关掉;

  运行“sp_resetstatus "XXX"
  go
  sp_configure 'allow updates', 0
  reconfigure with override
  Go”
 
  执行结果:
  在 sysdatabases 中更新数据库 'XXX' 的条目之前,模式 = 0,状态 = 28(状态 suspect_bit = 0),
  没有更新 sysdatabases 中的任何行,因为已正确地重置了模式和状态。没有错误,未进行任何更改。
  DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
  已将配置选项 'allow updates' 从 1 改为 0。请运行 RECONFIGURE 语句以安装。
  重新建立另外一个数据库XXX.Lost;
  DTS导出向导
  运行DTS导出向导;
  复制源选择EmergencyMode的数据库XXX,导入到XXX.Lost;
  选择“在SQL Server数据库之间复制对象和数据”,试了多次,好像不行,只是复制过来了所有表结构,但是没有数据,也没有视图和存储过程,而且DTS向导最后报告复制失败;
  所以最后选择“从源数据库复制表和视图”,但是后来发现,这样总是只能复制一部分表记录;
  于是选择“用一条查询指定要传输的数据”,缺哪个表记录,就导哪个;
  视图和存储过程是执行SQL语句添加的。

 

JAVABean

      JavaBean 是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。JavaBeans 通过提供符合一致性设计模式的公共方法将内部域暴露称为属性。众所周知,属性名称符合这种模式,其他Java 类可以通过自省机制发现和操作这些JavaBean 属性。


      用户可以使用JavaBean将功能、处理、值、数据库访问和其他任何可以用java代码创造的对象进行打包,并且其他的开发者可以通过内部的JSP页面、Servlet、其他JavaBean、applet程序或者应用来使用这些对象。用户可以认为JavaBean提供了一种随时随地的复制和粘贴的功能,而不用关心任何改变。

      JavaBean是Sun微系统的一个面向对象的编程接口,它可以让你建可重用应用程序或能在网络中任何主流操作系统平台上配置的程序块,称作组件。像Java applet一样,JavaBeans组件(或“Beans”)能够给予万维网页面交互的能力,例如:计算感兴趣的比率或是根据用户或浏览器的特性改变页面内容。

      从用户的观点来看,一个组件可以是一个与你交互的按钮或是一个当你按下按钮它便开始的小计算程序。从一个开发者的观点来看,那个按钮组件和计算器组件是分别被创建的,并且他们可以一起使用或是在不同的应用程序或情况下和不同的组件产生不同的组合来使用。

      当组件或Beans在使用过程中,Bean的性质(比如,一个窗口的背景色)对于其他Bean来说是可见的,并且,之前没“碰到”过的Bean也可以动态地获悉彼此的特性并从而进行交互。 

      Bean是随Sun的Bean开发包(BDK)开发出来的,并且能在任何主流操作系统平台的许多应用程序环境(人们所说的“容器”,container)中运行,包括浏览器,文字处理软件,以及一些其他应用。 

      要想用JavaBeans建一个组件,你必须用Sun的Java编程语言来写程序,并且在程序中包括描述组件特性的JavaBeans语句,这些组件特性例如:用户接口的特性,以及触发一个bean和在同一个容器中或网络其他地方的其他的bean交流的事件。  

      Bean也有持续性,持续性就是一种把一个组件的状态存在一个安全处的机制。有了这种持续性,它能使,比如说,一个组件(bean)“记住”某个特定用户在早些时候的用户对话中所输入的数据。 

      JavaBeans给Java应用程序提供了OpenDoc和ActiveX接口已提供的这种复合文档的能力。

一、JavaBean的历史

      最初,JavaBean的目的是为了将可以重复使用的软件代码打包标准。特别是用与帮助厂家开发在综合开发环境(IDE)下使用的java软件部件。这些包括如Grid控件,用户可以将该部件拖放到开发环境中。从此,JavaBean就可以扩展为一个java web 应用的标准部件,并且JavaBean部件框架已经扩展为企业版的 Bean(EJB)。

二、JavaBean和企业Bean的区别

      JavaBean 和 Server Bean(通常称为 Enterprise JavaBean (EJB))有一些基本相同之处。它们都是用一组特性创建,以执行其特定任务的对象或组件。它们还有从当前所驻留服务器上的容器获得其它特性的能力。这使得 bean 的行为根据特定任务和所在环境的不同而有所不同。

      Enterprise Bean 与 JavaBean 不同。JavaBean 是使用 java.beans 包开发的,它是 Java 2 标准版的一部分。JavaBean 是一台机器上同一个地址空间中运行的组件。JavaBean 是进程内组件。Enterprise Bean 是使用 javax.ejb 包开发的,它是标准 JDK 的扩展,是 Java 2 Enterprise Edition 的一部分。Enterprise Bean 是在多台机器上跨几个地址空间运行的组件。因此 Enterprise Bean 是进程间组件。JavaBean 通常用作 GUI 窗口小部件,而 Enterprise Bean 则用作分布式商业对象.


三、JavaBean 的发展

      最初,JavaBean的目的是为了将可以重复使用的软件代码打包标准。特别是用与帮助厂家开发在综合开发环境(IDE)下使用的java软件部件。这些包括如Grid控件,用户可以将该部件拖放到开发环境中。从此,JavaBean就可以扩展为一个java web 应用的标准部件,并且JavaBean部件框架已经扩展为企业版的 Bean(EJB)。

四、JavaBean需求

      avaBean是java类,属于某些特定的译码知道方针,并且扩展了适应性和范围,允许用户访问内部的属性和方法。通过这些,JavaBean类可以用于下列方法:

      1.在IDE中,JavaBean的功能允许应用开发者浏览其中的方法,即使JavaBean是被编译的,并且无法利用原始的源文件。
      2.在 Remote Method Invocation(RMI) 的分布式风格中,这项功能听起来并不让人兴奋,但是在未来的包含企业版的JavaBean后,将改变这种情况。
      3.为了JavaBean的属性值和状态可以保存到磁盘上。

      这里说的有些简单,如果想了解更多的东西,可以查阅一些资料。


五、JavaBean设计注意事项

      实际应用中,在表现对象或者处理前扩展JavaBean的设计非常有用。通常认为如果提供信息,web开发者将在功能上满足拥护对JavaBean的需求。例如: HTML中显示敏感的数据时,用户可以屏蔽的条目,如密码、电话号码等。

      良好规划设计的JavaBean是值得信赖的。

      Java 中的 null 不同于 SQL 中的 null

      看这样一道测试程序:

public class NullTest
{
public static void main(String[] args)
{
int I = 0;
// int I = null; // not a valid initialization
String str = null;
String strZeroOutValue = “”;
StringBuffer sb = new StringBuffer(“Null test: String initialized as null = “);
sb.append(str);
sb.append(“\n String representing a Zero Out Value:”);
sb.append(strZeroOutValue);
System.out.println(sb.toString());
}
}
      这个程序将产生下面的结果:

Null test: String initialized as null = null
String representing a Zero Out Value:

      在JavaBean中, 我们将 I 变量声明为一个 int, 我们必须处理与该变量相关的值,因为I 默认的没有值,int 类型无法初始化为 null, 如果int 值没有进行明确的初始化,编译器将提示错误。
执行 NullTest 程序,将验证在文本中空字符串是空值的替代,用于显示 SQL 的插入和更新。如果我们需要删除一些信息,通过删除表单区域的文本,需要将数据库发送长度为0的字符串。
尽管大多数数据库将空字符串作为空值进行操作,如果我们使用的数据库不支持处理空字符串的话,我们必须写入附加的java代码,来创建自己的SQL插入声明。
例如:
if(test.length==0)
{
sb.append(“null”);
}
else
{
sb.append(test);
}

      JavaBean 的范围:


      JavaBean 的范围。 Scope 是一个具有生命时间的变量。JavaBean的范围在
标志中右边进行表示。将产生一个JavaBean的快捷参考。

      说明:jsp服务器引擎将剥离

      存在下面四种范围: 页面、 请求、 对话、 应用。


      对话范围:
      对话范围的JavaBean 主要应用与跨多个页面和时间段: 例如填充 用户信息。 添加信息并且接受回馈,保存用户最近执行页面的轨迹。对话范围JavaBean保留一些和用户对话 ID 相关的信息。这些信息来自临时的对话cookie,并在当用户关闭浏览器时,这个cookie将从客户端和服务器删除。


      页面/请求范围:
      页面和请求范围的JavaBean有时类似表单 的bean , 这是因为 他们大豆用与处理表单。表单需要很长的时间来处理用户的输入,通常情况下用于页面接受HTTP/POST或者GET请求。另外页面和请求范围的bean可以用于减少大型站点服务器上的负载,如果使用对话bean,耽搁的处理就可能会消耗掉很多资源。


      应用:

      应用范围通常应用于服务器的部件,例如 JDBC 连接池、应用监视、拥护计数和其他参与用户行为的类。


      在Bean中限制HTML的产生:

      理论上,JavaBean 将不会产生任何HTML,因为这是jsp层负责的工作;然而,为了动态消息提供一些预先准备的格式是非常有用的。产生的HTML将被标注的 JavaBean方法返回。

      这里有一些非常重要的事情:

      1.不要试图在JavaBean返回的HTML中放置任何字体尺寸。
      并不是所有的浏览器都相同。很多浏览器无法处理完整的字体尺寸。
      2.不要试图在JavaBean返回的HTML中放置任何脚本或者DHTML。
      向页面直接输出脚本或者DHTML相当于自我毁灭,因为某些浏览器版本在处理不正确的脚本时会崩溃(非常少但是有)。如果用户的JavaBean在运行时是动态的推出复杂的HTML语言,用户将陷入调试的噩梦。另外,复杂的HTML将限制JavaBean的寿命和灵活性。
      3.不要提供任何的选择。
      如果用户使用不同的系统浏览页面,可以提供一种可以替换的方法。

六、JavaBean的任务

      JavaBean的任务就是: “Write once, run anywhere, reuse everywhere”,即“一次性编写,任何地方执行,任何地方重用”。这个任何实际上就是要解决困扰软件工业的日益增加的复杂性,提供一个简单的、紧凑的和优秀的问题解决方案。

      1. 一个开发良好的软件组件应该是一次性地编写,而不需要再重新编写代码以增强或完善功能。因此,JavaBean应该提供一个实际的方法来增强现有代码的利用率,而不再需要在原有代码上重新进行编程。除了在节约开发资源方面的意义外,一次性地编写JavaBean组件也可以在版本控制方面起到非常好的作用。开发者可以不断地对组件进行改进,而不必从头开始编写代码。这样就可以在原有基础上不断提高组件功能,而不会犯相同的错误。

      2. JavaBean组件在任意地方运行是指组件可以在任何环境和平台上使用,这可以满足各种交互式平台的需求。由于JavaBean是基于Java的,所以它可以很容易地得到交互式平台的支持。JavaBean组件在任意地方执行不仅是指组件可以在不同的操作平台上运行,还包括在分布式网络环境中运行。

      3.JavaBean组件在任意地方的重用说的是它能够在包括应用程序、其他组件、文档、Web站点和应用程序构造器工具的多种方案中再利用。这也许是JavaBean组件的最为重要的任务了,因为它正是JavaBean组件区别于Java程序的特点之一。Java程序的任务就是JavaBean组件所具有的前两个任务,而这第3个任务却是JavaBean组件独有的。


七、JavaBean的设计目标及其如何被实现

      现在我们来看一实现JavaBean的一些具体的主要设计目标:

      1.紧凑而方便的创建和使用

      JavaBean紧凑性的需求是基于JavaBean组件常常用于分布式计算环境中,这使得JavaBean组件常常需要在有限的带宽连接环境下进行传输。显然,为了适应传送的效率和速度,JavaBean组件必须是越紧凑越好。另外,为了更好地创建和使用组件,就应该使其越简单越好。通常为了提高组件的简易性和紧凑性,设计过程需要投入相对较大的功夫。

      现在已有的组件软件技术通常是使用复杂的API,这常常搞得开发者在创建组件时晕头转向。因此,JavaBean组件必须不仅容易使用,而且必须便于开发。这对于组件开发者而言是至关重要的,因为这可以使得开发者不必花大量功夫在使用API进行程序设计上,从而更好地对组件进行润饰,提高组件的可观赏性。

      JavaBean组件大部分是基于已有的传统Java编程的类结构上的,这对于那些已经可以熟练地使用Java语言的开发者非常有利。而且这可以使得JavaBean组件更加紧凑,因为Java语言在编程上吸收了以前的编程语言中的大量优点,已经使开发出来的程序变得相当有效率。

      2.完全的可移植性

      JavaBean API与操作基础的独立于平台的Java系统相结合,提供了独立于平台的组件解决方案。因此,组件开发者就可以不必再为带有Java applet平台特有的类库而担心了。最终的结果都将是计算机界共享可重复使用的组件,并在任何支持Java的系统中无需修改地执行。

      3.继承Java的强大功能

      现有的Java结构已经提供了多种易于应用于组件的功能。其中一个比较重要的是Java本身的内置类发现功能,它可以使得对象在运行时彼此动态地交互作用,这样对象就可以从开发系统或其开发历史中独立出来。

      对于JavaBean而言,由于它是基于Java语言的,所以它就自然地继承了这个对于组件技术而言非常重要的功能,而不再需要任何额外开销来支持它。

      JavaBean继承在现有Java功能中还有一个重要的方面,就是持久性,它保存对象并获得对象的内部状态。通过Java提供的序列化(serialization)机制,持久性可以由JavaBean自动进行处理。当然,在需要的时候,开发者也可以自己建立定制的持久性方案。

      4.应用程序构造器支持

      JavaBean的另一个设计目标是设计环境的问题和开发者如何使用JavaBean创建应用程序。JavaBean体系结构支持指定设计环境属性和编辑机制以便于JavaBean组件的可视化编辑。这样开发者可以使用可视化应用程序构造器无缝地组装和修改JavaBean组件。就像Windows平台上的可视化开发工具VBX或OCX控件处理组件一样。通过这种方法,组件开发者可以指定在开发环境中使用和操作组件的方法。

      5.分布式计算支持

      支持分布式计算虽然不是JavaBean体系结构中的核心元素,但也是JavaBean中的一个主要问题。

      JavaBean使得开发者可以在任何时候使用分布式计算机制,但不使用分布式计算的核心支持来给自己增加额外负担。这正是出于JavaBean组件的紧凑性考虑的,无疑分布式计算需要大量的额外开销。


八、JavaBean和Java

      虽然JavaBean和Java之间已经有了明确的界限,但在某些方面JavaBean和Java之间仍然存在着非常明显的混淆。Java确实是能够为用户创建可重用的对象,但它却没有管理这些对象相互作用的规则或标准。JavaBean通过指定定义对象之间交互作用的机制,以及大部分对象需要支持的常用行为,如持久性和实际处理等,建立了自己需要的组件模型。

      虽然当前的Java组件模型也可以运行得很好,但在传送真正的可重用性和交互操作性上仍然非常有限,Java用户需要做的最多的一件事就是创建applet并使得它们在Web 页面上相互通讯,这并非易事。JavaBean提供了一个框架包,使用这个包进行通讯就容易得多了。

      JavaBean组件能够通过定义好的标准属性改进性能。总体而言,JavaBean充分发展了Java applet的功能,并结合了Java AWT组件的紧凑性和可重用性。


九、JavaBean组件的基本概念

      JavaBean是可复用的平台独立的软件组件,开发者可以在软件构造器工具中其直接进行可视化操作。
      软件构造器工具可以是Web页面构造器、可视化应用程序构造器、CUI设计构造器或服务器应用程序构造器。有时,构造器工具也可以是一个包含子一些bean的复合文档的文档编辑器。
      JavaBean可以是简单的CUI要素,如按钮或滚动条;也可以是复杂的可视化软件组件,如数据库视图,有些JavaBean是没有GUI表现形式的,但这些JavaBean仍然可以使用应用程序构造器可视化地进行组合。
      一个JavaBean和一个Javaapplet相似,是一个非常简单的遵循某种严格协议的Java类。每个JavaBean的功能都可能不一样,但它们都必须支持以下特征。
      一个bean没有必须继承的特定的基类或接口。可视化的bean必须继承的类是java.awt.Component,这样它们才能添加到可视化容器中去,非可视化bean则不需要继承这个类。有许多bean,无论是在应用程序构造器工具中,还是在最后创建好的应用程序中,都具有很强的可视化特征,但这并非每个bean必须的特征。
      在使用Java编程时,并不是所有软件模块都需要转换成bean。Bean比较适合于那些具有可视化操作和定制特性的软件组件。
      从基本上说,JavaBean可以看成是一个黑盒子,即只需要知道其功能而不必管其内部结构的软件设备。黑盒子只介绍和定义其外部特征和与其他部分的接口,如按钮、窗口、颜色、形状、句柄等。
      通过将系统看成使用黑盒子关联起来的通讯网络,我们可以忽略黑盒子内部的系统细节,从而有效地控制系统的整体性能。作为一个黑盒子的模型,JavaBean有3个接口面,可以独立进行开发。
      1. JavaBean可以调用的方法。
      2. JavaBean提供的可读写的属性。
      3. JavaBean向外部发送的或从外部接收的事件。


九、JavaBean组件的开发环境


      普通JavaBean组件是要分布在各自环境中,所以它们应该能够适应各种环境。虽然我们无法事先预知JavaBean要运行的确切环境,但以下两点是可以确定的:
      1. bean必须能够在一个应用程序构造器工具中运行。
      2. bean必须可以在产生的应用程序的运行环境中使用。

      设计环境

      第一点说明的是bean必须可以在设计环境(design environment)中运行。在设计环境中,bean应该提供设计信息给应用程序构造器工具并允许终端用户制定bean的外  观和行为。
在传统的软件构造活动中,必须通过编译、链接之后才能看到应用程序的最终运行结果;而利用JavaBean设计的软件中,则没有这种明确的界限。使用JavaBean,就可以非常直观地设计应用程序软件,在设计过程中赋予软件生机。而且,这个过程更加容易重复开发,设计思想更加容易变成原型。

      运行环境

      第二点说明的是bean必须可以在运行环境(run-time environment)中使用。在这个环境中,对设计信息和定制的需求并不重要。一个组件的设计环境信息和设计环境中编写的代码通常可能是非常巨大的。
      因此,我们可能需要在bean的设计环境方面和运行环境方面作一个明确的区分,这样,就可能需要在运行环境中不使用bean的任何设计环境代码来配置这个bean。所以,JavaBean就必须分别支持运行环境接口的类库和设计环境接口的类库。


 

十、JavaBean入门


一般要求
首先,您必须有一个不带有参数的公用构造器。此构造器也应该通过调用各个特性的设置方法来设置特性的缺省值,例如:

public Fireworks()
{
setAutoStart(true);
setBackground(Color.black);
setSpeed(10);
setRadius(40);
.
.
.
}

如果 bean 是一个从 java.awt.Component 类继承而来的可视 bean,您就应该为 bean 定义一个缺省的首选大小,例如:

public Dimension getPreferredSize()
{
return (new Dimension(radius*3, radius*3));
}

public Dimension getMinimumSize()
{
return getPreferredSize();
}


特性
对于您需要的每个特性,您应该有一个带有匹配公用 getter 和 setter 方法的专用实例变量,例如:

private int speed;
.
.
.
public int getSpeed()
{
return speed;
}

public void setSpeed(int s)
{
speed = s;
}

此 get 和 set 方法必须有与实例变量相同的名称,但是第一个字母要大写并以 get 和 set 开头。

由于连接而在任何时候更改它们的特性时,确认 Bean 在运行时行为正确也是很重要的。如果特性的更改影响到 Bean 的可视外观,您应该以此特性设置的方法来调用

repaint();。


同样,如果特性的更改影响到 bean 的大小和位置,您需要确认获得验证的事物。我们建议编写您自己的 validateAll 方法,如下所示:

private void validateAll()
{
if (isValid())
{
Component self = this;
self.invalidate();
Component myParent = self.getParent();
if (myParent != null)
{
myParent.invalidate();
self = myParent;
}
self.validate();
}
}

然后以此特性设置的方法调用

validateAll();。


 

bean 类将无法进行关于调用特性设置方法命令的假设。您应该写 bean 以便可以初始构造它,然后在不引起错误的同时在任何命令中设置其特性。


操作
对于每个您需要的操作,您应该有一个公用方法,例如:

public void start()
{
if(thread==null)
{
thread=new Thread(this);
thread.start();
}
}

您为操作写的方法应该在无须期待用户创建连接或设置很多特性的情况下独立操作。 例如,如果您写了一个音频 Bean,您希望通过播放操作处理打开声音的所有步骤、完成您需要的所有设置并播放声音。同样,即使声音未播放,停止操作也应起作用。


事件
对于您需要的每个事件或事件设置,您应该定义事件和侦听器类。对于此例,查看 FireworksEvent.java 源文件以及 Fireworks.java 文件。此事件类的源应该如同这样:

import java.awt.*;
import java.util.*;

public class FireworksEvent extends EventObject
{
public static final int EXPLODED = 1;

int id = 0;

public FireworksEvent(Component source, int id)
{
super(source);
this.id = id;
}

public int getID()
{
return id;
}
}

您应该为此事件设置中的每个事件定义一个公用静态结束事件标识符,例如在此例子中的 EXPLODED。

对于侦听器类的源,查看 FireworksListener.java 源文件:

import java.util.*;

public interface FireworksListener extends EventListener
{
public abstract void exploded(FireworksEvent e);
}

您应该为此事件设置中的每个事件定义一个公用抽象方法,例如在此例子中的 exploded。 而且,侦听器类必须扩展 EventListener ,以使 JAR 向导能够找到它。

然后,如果由 bean 类播送事件,它必须跟踪侦听事件的对象。要这样做,您需要定义侦听器实例变量以及 addListener 和 removeListener 方法。返回 Fireworks.java 源,例如,您将查看到:

private Vector listeners = new Vector();
.
.
.
public void addFireworksListener(FireworksListener f)
{
listeners.addElement(f);
}

public void removeFireworksListener(FireworksListener f)
{
listeners.removeElement(f);
}

最后,bean 类需要以正确的次数将事件实际播送到所有的侦听器。要这样做,您需要定义 processEvent 方法并以适当的次数调用它,例如:

public void processFireworksEvent(FireworksEvent e)
{
for (Enumeration enum = listeners.elements(); enum.hasMoreElements(); )
((FireworksListener)enum.nextElement()).exploded(e);
}

public void run()
{
.
.
.
processFireworksEvent(new FireworksEvent(this, FireworksEvent.EXPLODED));
}


(来源:www.seasky.bizwww.daima.com.cnwww.cnpaf.net

 

2007/5/31

毛虫引文记录

晚上毛虫联络了下我,发了个BLOG地址过来,看了下,感慨颇深,却不想表达。
 
亲亲相隐这个词第一次接触到,长了不少知识。孔子先生的理论得到进一步理解和学习。非常感谢毛虫呢,上过大学就是不一样,HOHO
2007/4/19

包头话学习

个就--蹲着
奔喽---脑门儿
刻膝盖---膝盖
撇了---乱讲,瞎说
抬死你---整死你
圣---什么
咋来来---怎么了?
悄悄哇---安静
烈着了======生气
踅摸========寻找
温秃秃水====不烫的水
房摆后======房的后面
坷梁========别扭
疙蛋========疙瘩
卜(bu)琅==像木头段子的东西
不待要======懒得去做
欢欢儿的=====赶紧的,快点
黑将来=======傍晚
前长=========早晨
后长=========下午
难活=========难受
补砸=========收拾
咯影=========恶心
咯嗒=========唠叨
撇===========聊
读嗒,抿喳===吃菜,喝酒 
黄河——hang 河
脚———jie
药———ya
黑夜——he夜
麦子——mie子
辣椒——辣结子
墨水——mi和mie之间的读音
爷--自抬身价,我的意思。通常带有挑衅
咯嗒——————莫唧————唠叨的意思
冒了======扔了
回格瓦====回去吧
迫(pai三声)掉:被人涮了
败兴:使人情绪不好
额水:讨吃
怂人:骂人的话
肚渣滓:胆量 
个老老========墙角或一些比较狭小的位置
日哄=====骗
戳火=====生气
蛋求是=======不咋地
修五道庙=======饭饭
赖才地======没出息
鞭杆子——————埋葬死人时的一些劳工
阴阳———————操办丧事的指挥人
叫夜———————出殡前夜的活动
鼓匠———————出殡前夜活动里的乐手
纸火———————祭奠死人的迷信品,像灯笼
压(轧)马路—————男女在一起散步
踩盘子————————小偷在作案前的预谋
拔个梁——————抬杠
生葫芦-----蛮横的人
比兜游子-----欠揍的人
侬猴-----土包子
细细-----漂亮MM
铁丝-----炒菜的铲子
枪崩猴------不听话的孩子
猫两眼=======看两眼
出溜-----滑
半头砖-----虽是女孩但性格和举止却像男孩
各渣-----残渣,或指坏人
各镣-----平面不平
各出-----皱褶太多,或指小气
各棱-----长且隆起的部分
各留-----细长的物体不直
各跑-----常在前面加个’灰’,指不是好人
各蛋-----圆的东西,各蛋蛋也是圆的东西比前者小
各搅-----搅和,各搅搅是很久以前的一种糖的名字
各捞-----用细棍往出挑
各梁-----梁,八各梁指抬杠
各洞-----洞或指低洼的地方
各八-----洼地,与胳膊同音
二老板-----三、四十岁的已婚女人
二个半-----小孩学会说话但说不清楚
二里半-----和地名有关,指偏差较大
杰咳丢蛋-----说话结结巴巴说不清楚
求迷性眼-----反应呆板
鬼迷六眼-----心虚,胆怯
乓迷肿眼-----还没睡醒
操蛋-----不负责任不怎么的
赤不溜-----光着身体
起开=======走开 
小泡子-----骂人话
咯此-----登鼻子上脸,拿二分颜色开染坊
希尔货=缺弦
咯浅------将就
鬼嚼-----说话夸张
兜没的-----捕风捉影
兜凉的-----所说的话令人吃惊
拉黑牛-----当托儿
拉疙蛋-----讹诈
把脱-----一眼看穿对方心思
不尿-----不理的贬义用法
括得悉硬-----派头十足
打得悉硬-----理直气壮
悉板灰-----很糟糕
忽沓-----说话的贬义用法,或指物体破旧变形但将就能用
忽拉盖-----做事损人利己但很会骗人的人
忽绕-----指人无目的地走来走去
忽抽-----快速抽送
个但住-----暂时稳住
喘说六道-----脸皮很厚,串话很多
醒煽-----暗示
毛傣傣-----鸡毛掸子,或指做事斤斤计较的人
拧谢-----闭嘴,或把对方势头压下去
拉谢灯-----关灯
松-----懦弱
挖把-----赚钱
趁沈十万-----有几十万
出妖蛾子-----冒坏水
尔开-----放开
密-----藏起来
店-----踢
灰猴-----对说话辛辣幽默的人的戏称
灰皮-----不务正业不干好事的人
想跟上=======一起走
行不见=======找不到
 忽颤-坐轿子的样子,一上一下
个台台-可以坐的一个高于地面的平面
老加日-麻雀
黑老娃-乌鸦
朝阳阳-向日葵
督点(挑)———怂恿
鸾头子—————糊弄,将就,凑和
定懂——————思考
丢盹——————瞌睡
亍(chu出的读音)溜倒————滑倒
 涝毛---忙活
白涝毛----白忙活
玉娇娇 ————玉米
……的来来======语气助词
砍货---骂人话,类似于SB之类的
西儿-----脑袋有问题.
克凉------为难
欢欢儿得~~~~~~~~快快滴,痛快滴
袅得~~~~~~~~~~美得
管袅了~~~~~~~~可美了
赛(sai三声)~~~~~~~~潇洒
可赛了~~~~~~~~~~~~~~~可帅了
迟求个堆儿----发呆
咋接---怎么?不服?你想怎么样
几刮子——鲫鱼
半脑子——脑子不太清楚的人
秤数——分寸。例:“你刚才说话要有些秤数,不要尽灰说六道的”
倒衩子——衣袋,又叫倒衩衩。
地势——地方。例:“想盖房了,寻不见个好地势”。
盖的——被子。又叫“盖窝”、“盖体”。
架套——架势,样子。“看架套,他就不像个庄户人”
箭箭——条状物。“山药箭箭”即山药切成的条。
套数——办法、做法。“他能了,那人有点套数了”
汤水——样子,有贬义。“看你那汤水哇,动不动就瞪眼”
营生——活计
逼低——挖苦、挑刺
等当——比画
钉锅——不经邀请,去人家吃饭
断——追赶,驱赶。“两天就断上了”“把狗断出去”
对搭——碰机会,有时
尔——仍、丢。“娃娃尔在家哈儿了”
发毛——发怒、发火
鬼嚼——胡说
害——淘气
呵砣——吹牛
黑眼——讨厌
磕——到……去
结记——惦记、挂念
拉夹——谦让、客气
落毛(laomao)——为别人干些与己无关的事。
了(liao)——远望
咧筋——生了气不去做某事或故意跟别人顶着干
毛——恼怒
冒——仍,向远处投掷
脑——扛,也指举
耦——烧焦。“压住火,不要叫米饭耦了”
抬——弄。“他偷东西,让人家抬住了”
务艺——抚育、培植。“这娃娃是他娘娘务艺大的”
歇心——死了心,不在报希望
心红——一心向往,不能克制。
揎——推。“帮我揎一把”
倚——遮挡。“你把我倚住了”。
折摞——收拾。“把桌上的东西折摞起来”
抓拿——处理、对付。“我倒没个抓拿了”
撤——办事不主动,能拖就拖。也说“后撤”。
丢丢——跑的很快的样子
翻——唠叨而且固执,不听劝告。“他可翻了,你不要理他”
寡——没有味道,没意思,无聊,做不当做的事也叫寡。
猴——小
灰——坏
抗硬——顶事的,有威力的。“闹抗硬的人来呢哇?往死抬!”
可梁——尴尬,也常指姿势或动作不舒服
袅——得意,美滋滋的。
袅牙——爱挑剔,不好伺候。
听听儿——老老实实的呆着,不乱跑乱闹
朽腌——蔫,也指无精打采。
下洼——贪婪。“你慢些吃哇,下洼的来来。”
央——滑稽有趣
佯误——耽搁。“快回来,不要在外头佯误了”
咬喃——言多无当、瞎说。
长圆——无论如何。“你长圆要来”
待里——一向、从来。
定猛——突然
敢情——当然
杭——正在(正要)……的时候。“杭吃饭呀,来人了”
满共——总共,一共。
没敢定——也说“不敢定”,说不定,也许。
擎——只管、尽管。
个儿——自己
电死你——蹿死你
鼻兜——嘴巴子(耳光)
丁词——愣神
歌揪——蹲下
阴阳——操办丧事的指挥人
各此——撒娇
各捞——用棍向外捞
不拉——用工具有方向性地触动
拧谢——干掉某人或让某物消失
细细——美女之意
方祖——带来不祥之难的衰人
讨吃货——下贱的人
枪嘣货——该死之人
耐刀货——同上
透——****的意思
爷——对自己的称位,个人爱好
堵杂子——勇气
哪娃——调侃时对“你”的称呼
机密——清醒
啊费——语气词 说明很疼
撇了哇——表示感叹 不相信之意
热怪——奇怪
热哄——欺骗
拾翻------找东西
不拉--抚平,整理。
展--平整,完好
啂(nou一声)===可爱
护里=被罩
定猛子儿=突然
嚼毛——瞎说,
停体儿——老实点










哇——现在时
个呀——将来时
个——过去时
来——完成时
个哇——祈使句
2007/4/6

疯了,四处看

1月19日
  有些人的爱情是A片,有些是三级片,有些是喜剧片,有些是文艺片;
我最惨,我的爱情过程是文艺片、喜剧片、三级片、A片、悬疑片、动作片,最后是KB片,更可气的是,还他 妈插播广告……

2月10日
  我终于活着回来了!
  刚刚见了一个网友,长得很像如花,还是毁容版的如花,你能想像么……

2月11日
  我喜欢把人生交给命运:早上醒来我都会抛硬币,如果正面朝上,我就继续睡觉;
如果背面朝上,我就躺在床上看电视。
如果硬币落地后是立起来的,我就起来收拾屋子。

2月12日
  我慢慢发现,人才是妖精!有些妖精吃人,但人什么都吃,逮着一只妖精没准也能烧烤了!

2月13日
  明天情人节,我辗转找到一个我中学暗恋的女生的电话,给她发了一条短信:如果只有一碗粥,你先喝半碗,剩下的半碗,我放在怀里给你保温……
几分钟后,她回了一条短信:你是谁介绍的?一次四百,包夜七百。

2月14日
  舍不得孩子套不着狼,舍不得媳妇抓不着流氓,舍不得更新得不着收藏……
今天心情一直不好,昨晚的短信让我知道了,我以前暗恋的女生堕落了,竟然跟我说一次四百……
  当时我很伤心,一边伤心一边翻了翻钱包:
  于是我更伤心了,我连陪她堕落一次的资本都没有……

2月18日
  今晚仰卧,明早起坐,明晚俯卧,后天撑~~~锻炼,有时候就是这么简单。

2月22日
  维持生命在于运动,创造生命也在于运动,区别就是——床下床上。

2月27日
  面对困难时:死都不怕,还怕活着吗?
  面对危险时:活着都不怕,还怕死吗?
  这就是爱因斯坦的相对论……

2月28日
  女孩在乎的是下半生的幸福;男孩关注的是下半身的幸福……

2月29日
  如果人生能像电影一样,我一定大刀阔斧的剪辑一遍,把少年时上学的段落剪成字幕,把青年时创业的段落剪成一个特写,把中老年时期的成功片段,剪成整个故事……

3月11日
  男人都好色,色心稍强一点叫色狼,再强一点叫色鬼,更加强就叫色魔,尤其强那就成了变 态色魔,好色到了极致,被称作人体美学艺术家。

3月12日
  下雨天别出门,雨水虽没毒,湿身事小,淋病事大啊。

3月13日
  我把她从女孩变成了女人;她把我从男孩变成了....................穷人。

3月14日
  如果幸福是浮云,如果痛苦似星辰。
  那我的生活真是万里无云,漫天繁星……

3月15日
  男人所说的内在美,指的是胸罩里面,而不是内心。

3月16日
  我退化了,到现在我还不会游泳,要知道在我出生之前,我绝对是游的最快的那个……

3月17日
  在街上看美女,目光高一点就是欣赏,目光低一点就是流氓。

3月18日
  和女朋友分手之后,我终于明白,幸福要掌握在自己的手中,而不是在别人的嘴里!

3月22日
  记得刚毕业不久的一天,女友给我发了一条短信:“我们还是分手吧!”
  我还没来得及伤心呢,女友又发来一条:“对不起,发错了。”
  这下可以彻底伤心了……

4月15日
  你问我,幸福在哪里?我告诉你,你踮起脚尖,就能离幸福更近一些,你闭上眼,就能感受到幸福了……
  许久,我们分开,我看着你羞红的脸颊,轻声问你,感觉到幸福了么?
  你温柔的低头,娇声回了一句:你今天,吃蒜了。

4月17日
  朋友说:“我和女朋友有隔阂,我下面给她吃,她说咸,她下面给我吃,我说酸……”
  想了许久,我终于明白了。

5月8日
  吃了晚饭在阳台抽烟享受,忽见夜空中一个光点转瞬即逝的划过,心里一激动:流星!于是马上许愿……
  许了六七个愿望,睁眼,烟已经抽完了,顺手扔出阳台,忽然听见楼下一个女孩的声音:“哇!流星!快许愿……”

5月10日
  我想我是个变态,我有恋母和喜欢极品熟女的癖好。不然为什么每次看到我们超市主管的那张脸,我都想操 她奶奶?

5月11日
  什么叫残忍?
  是男人,我就打断他三条腿;是公狗,我就打断它五条腿!

5月15日
  每个人都是天上落下的天使,只不过有的是完好无损的着陆,有的是脸先着地,有的更倒霉,下落的时候直接骑在了围墙栏杆上……

5月16日
  马善被人骑,人善也被骑。
  人骑马是运动,人骑人是娱乐,马骑人……兽交。
          
5月17日
  科学证实:劣质避孕套容易导致直肠癌。

5月18日
  香荷碧水动风凉,水动风凉夏日长,长日夏凉风动水,凉风动水碧荷香。

5月19日
  这个世界不公平就在于:
  上帝说:我要光!——于是有了白天。
  美女说:我要钻戒!——于是她有了钻戒。
  富豪说:我要女人!——于是他有了女人。
  我说:我要洗澡!——居然停水了!

5月23日
  我的原则是:人不犯我,我不犯人;人若犯我,我就生气!

5月24日
  忽然想起上大学时,老师出对联:国兴旺,家兴旺,国家兴旺。
  班长对下联:天恢弘,地恢弘,天地恢弘!
  后来我被赶出了教室……
  因为我对的下联是:你 妈 的,他 妈 的,你 他 妈的!

5月25日
  偶然看见书上所谓的当代女子择偶标准:有车有房,父母双亡。
  郁闷。遂写下幻想中的选妻标准:
  家中财产过亿,美貌天下第一,贤惠温柔性感,岳父癌症晚期……

6月8日
  今天心情不好。我只有四句话想说。包括这句和前面的两句。我的话说完了……

6月9日
  师太,你就从了老衲吧!
  很久很久以后……
  师太,你就饶了老衲吧!

6月12日
  凶残的人——没事找个人来杀杀。
  风流的人——没事找个美女睡睡。
  富有的人——没事买辆新车开开。
  我——没事捡个烟头抽抽……

6月13日
  年少的时候有一段时间,一直想表现自己彪悍的一面,于是想纹身,最终没有实施的原因是:我一直在犹豫是纹蜡笔小新好,还是纹铁臂阿童木好。

6月17日
  小时候经常听说有人因为生活压力大而自杀,那时我懂得死亡,却不明白压力是什么,现在长大了,我懂得了什么是压力,开始不明白为什么还有那么多人活着……

6月18日
  老天爷给我一双眼睛,让我看到花花世界;老天爷又给我一双手,让我去勤奋劳动挣钱;老天爷再给我一张嘴,让我用它来咒骂老天爷的不公平……

6月19日
  女人无论站多高,蹲下只能湿润脚下的土地;男人厉害了,站的更高,尿得更远!

6月20日
  又美丽、又纯洁、又温柔、又性感、又可爱的处女,就像鬼魂一样,男人们都在谈论它,但从来没有人亲眼见过……

6月22日
  男人分两种,一种是好色,一种是十分好色;
  女人也分两种,一种是假装清纯,一种是假装不清纯。

7月7日
  我知道我不算帅哥,但曾经有人看我满月的照片时,也说过我左边的鼻孔很偶像派。

7月9日
  今天看书,看到康熙皇帝在二十三岁的时候已经贵为一国之君,绩伟功丰,我很沮丧;但又看到同治皇帝在二十三岁时已经死了四年了,我平衡了...

7月11日
  人生啊,不能在一棵树上吊死,要在附近几棵树上多死几次试试。

7月17日
  凤凰重生就是涅盘,野鸡重生就是尸变。

7月20日
  以前喜欢过一个女孩,表白了,那女孩问我为什么喜欢她,我说:如果你是我,也会喜欢上你自己的;
后来,她把我拒绝了,我很伤心,她不了解我,我告诉她:如果我是你,肯定早就喜欢上我自己了!

7月22日
  对付凶恶的人,就要比他更凶恶;对付卑鄙的人,就要比他更卑鄙;
  对付潇洒的人,就要比他更潇洒;对付英俊的人,就要……毁他的容!

7月23日
  上一次恋爱给我的教训是:不要找一个喜欢吃辣的女孩作女朋友。
  每一次请她吃完麻辣火锅,我们在一起亲热时,我都会在痛苦不堪中想起一首歌:《燃烧吧!火鸟》。

7月24日
  人要学会自己寻找一些小幸福:比如到街上看一看那些不属于自己的美女,去银行看一看那些不属于自己的钞票,到车展上看一看那些不属于自己的跑车,然后在街上找一个乞丐看,告诉自己:没关系,刚才的那些也不属于他……

7月25日
  这几天一直下雨,我猜是玉皇大帝在哭,一定是他和王母娘娘的婚姻不幸福,这种不幸福有两种可能,一种是王母娘娘离开了,一种是王母娘娘不肯离开……

8月15日
  野猫:走哪儿睡哪儿。
  野狗:逮什么吃什么。
  野男人:见一个爱一个。

8月18日
  我才发现,吸引住男人的办法就是让他一直得不到;吸引女人的办法正好相反,就是让她一直满足。

8月30日
  独守空房,让人只能浪费;妻妾成群,让人懂得节俭。可是我现在,却在终日浪费中向往节俭。

9月6日
  父亲问我人生有什么追求?
  我回答金钱和美女,父亲凶狠的打了我的脸;
  我回答事业与爱情,父亲赞赏的摸了我的头。

9月8日
  人生的悲惨在于:辛辛苦苦的作了一晚上内容香艳的美梦,第二天早上醒来居然全都记不起来了!

9月9日
  贞操因人而异,比如人们会赞美一个女孩是处女,却也会嘲笑一个男孩是处男。

9月10日
  单身很痛苦,单身久了更痛苦,前几天我看见一头母猪,都觉得它眉清目秀的……

9月11日
  其实馒头是万能的,饿了就可以吃。想吃饼,就把馒头拍扁;想吃面条,就把馒头用梳子梳;想吃汉堡,就把馒头切开夹菜吃……

9月12日
  男人,上半身是修养,下半身是本质;女人,上半身是诱饵,下半身是陷阱。

9月23日
  妹妹问我:“哥,接吻是什么样的?”我笑着告诉她:“傻丫头,接吻时要说:猪~~~”
  弟弟问我:“哥,什么是接吻啊?”我说:“接吻?张嘴,伸舌头。”

9月24日
  经血是子宫在为孤独哭泣,梦遗是精囊在为压抑流泪。月经一月一次,梦遗却不定期,这正说明:男儿有泪不轻弹……

9月25日
  雌螳螂在交配后会吃掉雄螳螂,残忍么?但一些女人却在交配途中吞下无数子孙后代……

10月28日
  今天约见了一女网友,名叫“稚嫩小妹”,暗号是拿着一只玫瑰花,在约会地点张望,见一女握玫瑰做翘首状,遂逃.
晚上联网,质问对方:怎么是你妈来替你见网友?……从此我安静的躺在了她的黑名单里。

10月29日
  真不明白,女孩买很多很多漂亮衣服穿,就是为了吸引男孩的目光,但男孩想看的,却是不穿衣服的女孩。

10月31日
  有人说春天把女朋友埋到地下,到了秋天就会收获很多很多女朋友。
  我朋友相信并照做了,他在春天把女朋友埋到了地下,到了秋天,他被警察叔叔埋到了地下……

11月11日
  情人节,孤单的我在饭馆吃面,听到收音机里的点歌节目说:“有一位先生给所有恋人们点歌来表达他的祝福,下面请听《无言的结局》。”……
我觉得很不好,人可以无爱,但不能无耻,于是我也打电话点播了一首歌——梁静茹的《分手快乐》。

12月9日
  今天饭馆的白酒又兑水了!妈的!等我有钱了,也到大酒楼去喝人头马、XO什么的!而且绝对不让他们用八六年和七二年的糊弄我,要喝就来瓶今年的!

12月31日
  一般来说长命百岁只是祝愿,但人想活一百岁其实很简单,就是你必须咬牙坚持忍受一千二百个月……
2006/9/6

坏人

被自己重视的人或者自己相信的人伤害,就算明知道他们是假的,但仍然感到屈辱
 
如果要挑选人来对付别人,应该遵循如此的法则
如若想要避难,应当找到必须坚信的东西:)
2006/7/27

MSN 照片上载控件下载及不能安装解决办法

下载这个文件:http://www.cuiwenyuan.com/sh/upload/MsnPUpld.rar

1,用Winrar软件打开这个压缩包MsnPUpld.cab(MsnPUpld.rar),解压缩到C:\windows\system32\
(win2000应该是c:\winnt\system32\),应该看到有3个文件:MsnPUpld.dll,MSNPupld.inf,PURen-us.dll
2,右键点击“MSNPupld.inf”会看到“安装”,点击安装这个文件
3, 注册MsnPUpld.dll和PURen-us.dll
注册步骤如下:
1,开始〉运行〉然后输入CMD
2,输入regsvr32 MsnPUpld.dll;提示注册成功!
3,输入regsvr32 PURen-us.dll;提示注册成功!

至此注册成功了,返回看看MSN Spaces可以上传图片了!