花飞满天-梅花节留影
梅花山镇山之宝下周末盛放 | |
(2008-02-24 07:45:40) | |
【金陵晚报报道】东郊梅花山梅花已开了约两成,而有三四成的梅花已经含苞。据南京梅花山首席花情预报员宫庆华介绍,梅花山的镇山之宝“别角晚水”目前已经含苞,预计到下周周末盛放。想一睹别角晚水风采的市民们,到时不妨趁着春光明媚前往梅花山游玩。 寻梅之识梅:“别角晚水” “别角晚水”是梅花山最为珍贵的品种,淡淡的玫瑰红色,层层叠叠的花瓣多达45瓣,状如浅碗。 上世纪90年代,陈俊愉先生到梅花山调查,发现了这株珍贵的梅花。此梅盛开时,花瓣边缘常有凹陷,因此被称之为蹩脚,取谐音“别角”。花间碎瓣飞舞,在风中流动,正应了那句“花落水流红”。它属于中晚期梅花,香味浓郁,属于真梅系直枝梅类宫粉型的优良品种,极为珍贵。 年前虽然遭逢雨雪,但近期气温回升很快,预计到下周末,别角晚水就会盛放。届时,市民可一睹梅花山镇山之宝的风采了。 |
以上是《金陵晚报》对梅花节的报道。
3月1日赴梅花山赏梅,拍摄若干照片(三星蓝调L730 卡片机),挑选组合成集:
01 梅花报春
http://matchchen.bokee.com/inc/01+%C3%B7%BB%A8%B1%A8%B4%BA.JPG
02 小小的我
03 寻梅
04 赏梅
05 窗前风景
06 扇面盆景
07 洁白如雪
08 姹紫嫣红
09 傲视蓝天
10 怒放的生命
11 “华夏第一梅”-别角晚水
12 垂枝梅
13 朱砂梅
14 绿萼梅
15 梅园小憩
16 乱花渐欲迷人眼
17 今昔石象路
18 国际梅花节歌舞表演
19 献歌
20 花美人更美
网上专业相机拍摄的梅花节:
DLL注入的步骤(简略)
DLL注入的步骤-《决战恶意代码》笔记
1。在受害进程中为DLL代码分配要占据的空间。
用到的函数:VirtualAllocEx
2。在受害进程中为要注入的DLL所需的参数分配空间。
用到的函数:VirtualAllocEx
3。把DLL的名字和代码写入受害进程的存储空间。
用到的函数:WriteProcessMemory
4。在受害进程中创建线程,运行新注入的DLL。
用到的函数:CreateRemoteThread
5。释放受害进程中的资源。
用到的函数:VirtualFreeEx
API挂钩:攻击方把合法Dll提供的API中的特定函数挂接到攻击者提供的恶意代码上。
术语定义与解释之三(恶意代码相关)
1 病毒:具有自我复制和自我传播两个基本特征的特殊代码;传统病毒的特点是依附于宿主程序(被感染程序);通常分为文件型病毒和引导型病毒。
2 木马:广义上说所有的网络服务程序都是木马;一般所指的木马程序通常在用户不知情的情况下安装,隐藏于后台,用户无法终止其运行。
《决战恶意代码》
1 病毒:能自我复制,感染宿主文件的特殊代码。
2 蠕虫:能自我复制,通过网络自动传播的特殊代码。
3 移动代码:通过远程下载,在本地自动执行的小型程序。有Java applet、Java Scripts、VB Scripts、ActiveX控件等形式。
4 木马: 伪装成有用程序的恶意代码。
5 RootKit:一种木马,它获取运行在计算机上与操作系统相关的常规程序,用恶意版本替换它们。包括DLL注入、API挂钩。
6 用户级RootKit:替换或修改系统管理员和用户使用的可执行程序
7 内核级RootKit:控制OS的内核,用来隐藏和创建后门。
8 ActiveX控件:一类特殊的COM对象,可供其他用户下载并在网页中使用。
ActiveX控件是编译程序,一旦运行,就能实现一个正规程序在Windows中能实现的每一个功能。
从电脑上免费拨打座机或手机(redvip)
在Jbuilder9下配置Jboss和mysql-jdbc,开发EJB笔记
一。安装j2sdk1.4.1,Jbuilder9,mysql-4.0.14b-win,Jboss-3.0.8,JBossOpenTool-2.6alpha,以及JDBC for mysql(mysql-connector-java-3.0.16-ga)。
注意:
1 由于安装Jbuilder9时用的是ISO镜像文件,可以用Deamon将其装入虚拟光驱后安装,然后用JB9_Ent_KeyGen.exe产生SN和KEY,第一次启动Jbuilder就要输入SN和KEY,但输入后仍然进入不了程序界面,重启机器后就可以了。
2 JBossOpenTool是用来整合JBuilder和Jboss 的工具。这里要注意下载2.6alpha版,我先下载了另一个版本,结果安装不上(表现为在Jbuilder9的Tools->Configure Servers...下选择JBoss 3.x后,右侧只有General属性页,而没有出现Custom属性页)。
3 建立实体EJB需要关联数据源。按照参考资料3提供的方法测试数据库连接无误后,在EJB项目的下有一个JDBC 1 Datasouces,从右键菜单中选择New JDBC 1 Datasouces创建一个数据源。双击该数据源,在右侧general属性页中填写如下内容:
URL: jdbc:mysql://localhost:3306/Sample(Sample是我建立的数据库的名称)
UserName: 按数据库配置填
Password: 按数据库配置填
Isolation level: No Isolation level
Driver class: com.mysql.jdbc.Driver(注意当时选择项里没有看到这一项,手动填写就可以了)
填好以后单击“Test connection”,Log窗口显示连接成功。
4 选中EJB项目,在右侧的EJB Designer视图中可以看到图形化的EJB,有点象UML的类图。选中它以后可以通过右键菜单给EJB添加属性、方法等。
首先选择右键菜单中的Import schema from Database,在弹出的对话框中单击“choose exiting connection...”按钮,选择刚才连接成功的数据库;
然后单击UML图上的EJB名称,从右侧出现的属性表中可以看到Table name下拉列表中已经有了刚才选择的数据库中所包含的表了。选中你需要使用的表名;
在右键菜单中选择“add->field”,在属性表中可以看到column name下拉列表中已经有了刚才选择的表中的字段名了。
5 选择EJB项目,从右键菜单中rebuild和deploy,然后就可以在Jboss服务器上运行了。
6 按照参考资料1中的方法做好运行配置,保证当前没有Jboss实例运行,同时mysql服务可用,然后就可以直接运行了。运行时在下方服务器窗口中显示服务器运行信息,最后一条信息像下面这样:
“22:30:30,078 INFO [Server] JBoss (MX MicroKernel) [3.0.8 (CVSTag=JBoss_3_0_8 Date=200306050849)] Started in 0m:9s:453ms”,说明运行成功,用IE进入http://localhost:8080/jmx-console/index.jsp页面,在Jboss.J2ee项目下可以看到EJB已经被加载,例如我编写的EJB类名为ReceivedItem,则显示信息中有一条“jndiName=ReceivedItem,service=EJB ”。
7 网上参考资料中多提到tomcat的配置,这里tomcat已集成于Jboss-3.0.8中,因此不用对其作任何特殊配置,只需配置Jboss即可。
8 参考资料2中说“打开http://localhost:8080/jmx-concose,如果有页面则表示JBOSS和TOMCAT配置成功”,其实应打开http://localhost:8080/jmx-console/index.jsp页面。
参考:
1 如何在jb中配置jboss开发ejb
http://kb.csdn.net/java/Articles/200508/39e851cb-0730-40c0-8272-a4bd4ca33775.html
JBoss开发环境配置
1 下载JBossOpenTool
2 将解压后的JBossOpenTool.jar放到JBuilder安装目录的lib\ext下
3 启动JBuilder(如果JBuilder在前面的步骤中已经,需要重新启动来JBossOpenTool起作用)
4 选择Tools->Configure Servers...
5 选择JBoss 3.x(根据手上的JBoss版本选择)
6 选中Enable Server
7 在General属性页中配置Home directory为JBoss的解压路径,Working directory会被自动设为JBoss的解压路径下的bin
8 在Custom属性页中配置JBoss installation directory为JBoss的解压路径(没错,和上面一样)
9 配置Tomcat 4.x JBuilder installation directory为JBuilder中tomcat 4.0.x的路径(虽说指示为4.x,但选择4.1版本会有问题)
10 其余配置缺省就好!
在工程中配置Server
1 新建工程
2 选择Project->Project Properties...
3 选择Server属性页
4 在Single server for all services in project的下拉列表中选择JBoss 3.x
简单EJB开发
创建EJB Module
1 选择File->New...
2 选择Enterprise属性页
3 双击EJB 2.0 Designer,这时EJB 2.0 Bean Designer的向导就会出现
4 点击EJB Module向导中的New按钮
5 在Name一项中添入EJB module的名字(cart_module),其它的取缺省即可
6 回到EJB Module向导中,接受缺省配置,EJB Designer就会出现
创建EJB
1 在EJB Designer中点击右键,选择Create EJB,再选择具体的EJB类型(Session Bean)
2 选择第一个格,可以改变Bean name(Cart)
3 可以改变Interface的类型(remote)
4 可以改变Session type(Stateful)
5 下面的同样可以根据需要进行改变
6 自动生成了三个
添加Field
1 右键点击EJB,选择Add->Field
2 可以改变变量的名字、类型以及是否添加get和set方法(如此添加_cardHolderName、_creditCardNumber、_expirationDate(java.util.Date)、_items(java.util.List))
添加业务方法
1 右键点击EJB,选择Add->Method
2 可以改变方法的名字、输入参数、返回类型
bean的部署描述符
1 选择EJB Designer
2 选择EJB DD Source
3 选择ejb-jar.xml
配置运行
1 选择run->configurations
2 选择new
3 type选择server
4 server选择JBoss 3.x
2 JBuilder+JBoss+tomcat的环境配置
http://www.watchina.org/html/program/Java/11783.html
3 关于jbuilder连接mysql的驱动配置问题
http://topic.csdn.net/t/20041025/17/3489601.html
摘要:
一、选择Tool -> Configure Libraries,在Configure Libraries窗口中选择左边列表框下的New,弹出New Library Wizard 窗口,在Name中输入mysql(可以自己定义),Location中选择User Home,点击Add,选择mysql jdbc的路径:c:\system\mysql-jdbc\ mysql-connector-java-3.0.9-stable-bin.jar,点击ok(两次);
二、选择Project -> Project Properties -> Paths -> Required Libraries -> 点击Add,选择第一步骤中添加的User Home下的mysql,点击ok(两次);
三、选择Tool -> Enterprise Setup -> Database Drivers -> 点击Add,选择刚添加的User Home下的mysql,点击ok,在列表框中出现mysql.config,点击ok;
四、提示重新启动JBuilder,设置才能生效,确定后,重启JBuilder;
五、选择Tool -> Database Pilot ,在Database Pilot窗口中选择View -> Options -> Drivers -> 点击Add
Driver class中输入:com.mysql.jdbc.Driver
Sample URL中输入:mysql://localhost:3306/DataBaseName 点击ok;
六、在Database Pilot窗口中选择File -> New,在New URL 窗口中,
Driver:从列表中选择第五步骤建立的com.mysql.jdbc.Driver
URL:将DataBaseName改为存在的数据库,本例中的URL如下:jdbc:mysql://localhost:3306/test,点击ok;
七、在Database Pilot窗口中Database URLs列表中双击刚建立的url,输入连接数据库的用户名、密码,连接成功。
4 在JBuilder中连接JDBC方法
http://kb.csdn.net/java/Articles/200506/b164358d-9304-4063-9abe-d0268418db12.html
南京至长沙 乘火车方案相关信息(2005.12)
南京站首页(http://www.njstation.com/):
包括问讯电话(85822222),订票电话,市内售票点地址,及南京火车站通知.
南京火车站预售期调整通知(http://www.njstation.com/spring2005.htm):
2005年,从元月1日起预售10天(含当日),2006年还没查到,经常在变化,最好打电话查询.
由南京到长沙的可选的中转方案(http://www.huochepiao.com/Search/chaxun/zzresult.asp?txtChuFa=南京&txtDaoDa=长沙&txtZZ=株洲):
来自火车票网,其中K221/K224次是扬州始发.
车次 k155 的详细信息
(http://www.huochepiao.com/Search/chaxun/resultc.asp?txtCheCi=k155):
数据来自火车票网,最近更新05/11/30.
南京西至昆明,空调快速 南京(10:41)-株洲(5:48),经马鞍山、芜湖、黄山、景德镇、鹰潭。
(http://www.huoche114.com/huochepiao/PiaoJia/01d182.Html):
票价:至株洲硬座131元。 (数据更新时间:2005/9/1)
车次 1311 的详细信息
(http://www.huochepiao.com/Search/chaxun/resultc.asp?txtCheCi=k155):
数据来自火车票网,最近更新05/11/30.
南京西至广州,空调普快, 南京(10:28)-株洲(9:52),经上海西、杭州东、金华西、上饶、鹰潭。
(http://www.icha.cn/huochepiao/PiaoJia/9ccb91.Html)
票价:至株洲硬座158元。 (数据更新时间:2005/9/1)
信息:火车票预售时间不再"打架" 10天购票期卷土重来(2005年10月21日)
今后南京任何卖火车票的售票点(包括车站窗口)对市民卖火车票的时间一律调整至10天预售,学生票为11天。之前火车站在市内的售票时间是18天,而车站的售票时间是4天。
在2003年4月18日全国铁路第五次大提速之际,原南京铁路分局将分局分配给各车站发往上海路局管辖内(如苏南、上海、浙江、福建)各车站的火车票提前到2-10天,同时,分配给各车站发往全国(上海铁路局以外)车站的火车票也提前到2-10天(按:2天的限度是因为南京市内除车站以外的其他售票点不能对旅客出售当天的火车票,但能够和车站同时出售10天内的火车票)。
英语单词辨析:“here you go/there you go”
转自http://www.p2p365.com/2nd/read/wanhuatong/english_003.asp?id=1882
Hereyougo.
干的好。
"Hereyougo."和"Thereyougo."听起来只有一字之差,所以很多人都会乱用,这二者倒底有什么区别呢?仔细来分,"Hereyougo."指的是一件事情还在进行之中,而"Thereyougo."则是事情已经结束,例如店员正把你买的东西交付给你,他会说,"Hereyougo."而不是"Thereyougo."反之,如果东西己经到了你手上,则他会说的是,"Thereyougo."
此外,"Hereyougo."和"Thereyougo."一样,也有鼓励别人的意思在里面,像我本身蛮喜欢跟老美打棒球的,每次有人大棒一挥,老美就会兴奋地大叫"Hereyougo."问题是他们为什么不说,"Thereyougo."呢?因为球在飞行当中算是一个过程,你还不知道结果,所以要用,"Hereyougo."会比较正确,而事实上老美也正是这样子用的喔。当然这里各位不必太细究"Thereyougo."和"Hereyougo."的区别,小笨霖这里所说的只是一个大原则,至于在日常生活的交谈中,想到哪一个就说哪一个吧。反正老美都听得懂。
术语定义与解释之二
《面向业务构件的可重构信息系统的模型研究》
《快速可重构信息系统及其关键技术研究》
1. 可重构性:指系统在原有软硬件资源的基础上,通过调整系统的结构、功能等而快速适应需求变化的能力。
2. 构件:独立的可重用的代码封装体。
3. 应用工程:是对领域工程产阶段产生的可重用产品进行集成和组装的过程。
4. 软件工程的两次飞跃:第一次是传统软件工程向面向对象软件工程的飞跃;第二次是OOSE向基于构件的软件工程的飞跃。
5. 业务对象:业务领域中某业务的抽象,包括静态实体及动态的事件和处理逻辑。
6. 业务构件:业务对象的软件实现;表达了自治的业务概念。包括过程业务构件、实体业务构件和实用业务构件。(《基于组件的企业级开发》)
7. 模式:对某一类问题的可复用的解决方案;“模式描述了环境中不断出现的问题及其解决方案,人们可以无数次地重复使用这些已有的解决方案,而无需重复相同的工作”
8. MDA(模型驱动的体系结构)核心思想:MDA是OMG提出的新的软件开发方法学。其核心思想是:抽象出与实现技术无关,完整描述业务功能的核心模型PIM(平台独立的模型),针对不同实现技术制定多个影射规则,然后通过这些影射规则及辅助工具将PIM转换成与具体实现技术相关的应用模型PSM(特定平台的模型),最后将经过充实的PSM转换成代码。
9. 框架:有多种定义。i设计角度的OO框架:是一个系统部分或全部的可重用设计,包括一组抽象的类库及其实例之间的互操作机制。 ii 是应用系统的骨架。iii 是实现构件即插即用的插槽。
10.热点(Hot spot):也称扩展点(extension point);应用领域中易变的方面。
11.凝固点(frozen spot):框架中稳定不变的设计结构、类或方法。
12.好莱坞法则:“Don’t call us, we will call you.”用户定义的方法,通常被框架,而不是用户的应用代码调用。当你使用类库(或工具箱和传统的子程序库)时,你需要编写应用软件的主体并且调用你想复用的代码。而当你使用框架时,你应该复用应用的主体,而去编写主体所调用的代码。你不得不以特定的名字和调用约定来编写框架中所定义的抽象操作或你需要重定义的操作。
13.冗余设计:提供一定的备用功能和可扩展功能。
14.“脆弱的基类”问题:是使用类继承的主要缺点;无法在运行时刻改变从父类继承的实现;对基类的更改经常要求更改、重新编译和重新分发基类以及派生类中的所有代码。
15.抽象类与接口的异同:
i 本质相同,都允许只定义接口而推迟定义实现部分(接口一般通过抽象类声明);
ii 差异表现在:抽象类允许添加一些方法的实现;而接口必须推迟实现定义的所有方法(抽象类包括了接口的内涵)。
16.OO的三大重用机制:继承(静态重用)、对象组合或委托(动态重用)、参数化类型(静态重用)。
17.委托:一种对象组合方法,它使组合具有与继承同样的重用能力;在许多设计模式(如State、Strategy和Visitor)中都使用了委托机制。
18.代理(Agent):i 一个自包容的自治问题求解实体;ii 具有和其它代理进行交互、对环境变化作出响应和基于目的采取行动的能力。
19.多代理(muti-agent)系统:
i 由多个Agent形成的松散耦合的网络系统;
ii 它们在物理和逻辑上是分散的,行为是自治的;
iii 它们为了共同完成某个任务或达到某些目标,遵守某种协议连接起来,通过交互和合作解决超过单个Agent能力或知识范围的问题。
20.黑盒框架和白盒框架:白盒框架和黑盒框架的本质区别在于:黑盒框架企图涵盖其适用领域内的所有需求并提供相应的实现;而白盒框架只是涵盖其适用领域内的公共需求(即“凝固点”)并提供相应的实现,而对不同应用的特殊需求则提供相应的热点和热点子系统来供应用开发者来订制或扩展。白盒框架无法提供其适用领域内所有应用的候选实现。
21.钩方法和模板方法:钩方法(hook method)和模板方法(template method)分别描述了框架的两个不同方面(即可变方面和不可变方面)。钩方法一般提供了缺省的行为,子类可以在必要的时候进行重定义和扩展,常用于实现应用框架中的热点;模板方法是定义类的抽象行为、某操作的算法骨架、控制流或者类之间关系的一种方法,通常用于实现框架的凝固点,一般来说,模板方法是基于钩方法来实现的,其中钩方法作为原语操作(primitive operations)被模板方法所调用。
《解析MDA》
1. 方法学(methodology):一系列需要照着做的方法和规则的集合。它不同于“研究方法的科学”(哲学上的方法学)。
如果软件开发是游戏,那么方法学就是攻略。高手可能不需要攻略,但是一般人要在攻略的指导下才能少走弯路。
2. 模型:是以精确定义的语言对系统(或系统的一部分)做出的描述。其中“精确定义的语言”指具有精确定义的形式(语法)和含义(语义)的语言,适合计算机自动解释。
3. 元建模:过去,语言常常是通过用BNF(巴克斯-诺克范式)描述的文法来定义的。BNF文法满足了“适应自动解释”的要求,但把语言限制为纯文本。由于建模语言未必是基于文本的,它们可以有图形语法(例如UML),于是我们需要一种不同的机制来在MDA环境中定义语言,这种机制称为元建模。
4. OMG的4个建模层次:M0层:实例(运行的系统);M1层:系统的模型(例如软件系统的UML模型);M2层:模型的模型(即元模型,metamodel;创建原模型就是定义一种语言);M3层:M2的模型(元-元层,在OMG中,MOF是标准M3语言,所有的建模语言都是MOF的实例)。
1 嵌入式系统:嵌入到对象体系中的专用计算机系统;特点:嵌入性、专用性、计算机系统。
2 嵌入式设备:内部有嵌入式系统的产品设备。例如内含单片机的家电、仪器仪表、手机等。
3 面向对象和基于对象:面向对象必须满足三个条件:封装、继承和多态;只满足第一个条件或第一、二个条件的称为基于对象。
4 模型:用某种工具对同类或其它工具的表达方式;抓住事物最重要的方面而简化或忽略其他方面;建立模型的目的是因为在某些用途中模型使用起来比操纵实物更加容易和方便。例如建筑模型可以是建筑图纸、用厚纸板做的三维模型或存于计算机中的有限元方程。(《UML参考手册》)
5 最佳实践:开发中应该遵循的解决问题的经验。例如RUP(Rational统一过程)有六个最佳实践:i 迭代化开发;ii 管理需求;iii 基于构件的软件架构;iv 可视化建模;v 持续的质量保证;vi 配置管理。
6 工件:由软件开发过程所生成或使用的文档、模型、说明或软件等;同义词:产品(product)。
7 构件:一个独立发布的功能部分;可以通过它的接口访问它的服务。
8 Ad Hoc:源自拉丁语,意为专用的、特定的。
9 Web 2.0: 个性化的网络应用
英语单词辨析:“公司/单位”
公司/单位: corporation, company, firm, unit
CORPORATION is usually with the whole name of this
company, and is usually used in a formal document.
COMPANY is a general word. You'll see or hear this
word very often. "My company only had 50 employees two
years ago, but now---", "How is the insurance of your
company?"
FIRM, it's rarely heard as a company.
UNIT, not used as company. Unit means one
apartment in the building. Also, you may say "The unit
of distance is meter." So, unit just means "单位".
(z)通用SQL数据库查询语句精华使用简介
一、 简单查询
简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的表或视图、以及搜索条件等。
例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。
SELECT nickname,email
FROM testtable
WHERE name='张三'
(一) 选择列表
选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变量和全局变量)等构成。
1、选择所有列
例如,下面语句显示testtable表中所有列的数据:
SELECT *
FROM testtable
2、选择部分列并指定它们的显示次序
查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。
例如:
SELECT nickname,email
FROM testtable
3、更改列标题
在选择列表中,可重新指定列标题。定义格式为:
列标题=列名
列名 列标题
如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列标题:
SELECT 昵称=nickname,电子邮件=email
FROM testtable
4、删除重复行
SELECT语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认为ALL。使用DISTINCT选项时,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。
5、限制返回的行数
使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行,而TOP n PERCENT时,说明n是表示一百分数,指定返回的行数等于总行数的百分之几。
例如:
SELECT TOP 2 *FROM testtable SELECT TOP 20 PERCENT * FROM testtable
(二)FROM子句
FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图,它们之间用逗号分隔。
在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列所属的表或视图。例如在usertable和citytable表中同时存在cityid列,在查询两个表中的cityid时应使用下面语句格式加以限定:
SELECT username,citytable.cityid
FROM usertable,citytable
WHERE usertable.cityid=citytable.cityid
在FROM子句中可用以下两种格式为表或视图指定别名:
表名 as 别名
表名 别名
(二) FROM子句
FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图,它们之间用逗号分隔。
在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列所属的表或视图。例如在usertable和citytable表中同时存在cityid列,在查询两个表中的cityid时应使用下面语句格式加以限定:
SELECT username,citytable.cityid
FROM usertable,citytable
WHERE usertable.cityid=citytable.cityid
在FROM子句中可用以下两种格式为表或视图指定别名:
表名 as 别名
表名 别名
例如上面语句可用表的别名格式表示为:
SELECT username,b.cityid
FROM usertable a,citytable b
WHERE a.cityid=b.cityid
SELECT不仅能从表或视图中检索数据,它还能够从其它查询语句所返回的结果集合中查询数据。
例如:
SELECT a.au_fname+a.au_lname
FROM authors a,titleauthor ta
(SELECT title_id,title
FROM titles
WHERE ytd_sales>10000
) AS t
WHERE a.au_id=ta.au_id
AND ta.title_id=t.title_id
此例中,将SELECT返回的结果集合给予一别名t,然后再从中检索数据。
(三) 使用WHERE子句设置查询条件
WHERE子句设置查询条件,过滤掉不需要的数据行。例如下面语句查询年龄大于20的数据:
SELECT *
FROM usertable
WHERE age>20
WHERE子句可包括各种条件运算符:
比较运算符(大小比较):>、>=、=、<、<=、<>、!>、!<
范围运算符(表达式值是否在指定的范围):BETWEEN…AND…
NOT BETWEEN…AND…
列表运算符(判断表达式是否为列表中的指定项):IN (项1,项2……)
NOT IN (项1,项2……)
模式匹配符(判断值是否与指定的字符通配格式相符):LIKE、NOT LIKE
空值判断符(判断表达式是否为空):IS NULL、NOT IS NULL
逻辑运算符(用于多条件的逻辑连接):NOT、AND、OR
1、范围运算符例:age BETWEEN 10 AND 30相当于age>=10 AND age<=30
2、列表运算符例:country IN ('Germany','China')
3、模式匹配符例:常用于模糊查找,它判断列值是否与指定的字符串格式相匹配。可用于char、varchar、text、ntext、datetime和smalldatetime等类型查询。
可使用以下通配字符:
百分号%:可匹配任意类型和长度的字符,如果是中文,请使用两个百分号即%%。
下划线_:匹配单个任意字符,它常用来限制表达式的字符长度。
方括号[]:指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个。[^]:其取值也[] 相同,但它要求所匹配对象为指定字符以外的任一个字符。
例如:
限制以Publishing结尾,使用LIKE '%Publishing'
限制以A开头:LIKE '[A]%'
限制以A开头外:LIKE '[^A]%'
4、空值判断符例WHERE age IS NULL
5、逻辑运算符:优先级为NOT、AND、OR
(四)查询结果排序
使用ORDER BY子句对查询返回的结果按一列或多列排序。ORDER BY子句的语法格式为:
ORDER BY {column_name [ASC|DESC]} [,…n]
其中ASC表示升序,为默认值,DESC为降序。ORDER BY不能按ntext、text和image数据类型进行排序。
例如:
SELECT *
FROM usertable
ORDER BY age desc,userid ASC
另外,可以根据表达式进行排序。
二、 联合查询
UNION运算符可以将两个或两个以上上SELECT语句的查询结果集合合并成一个结果集合显示,即执行联合查询。UNION的语法格式为:
select_statement
UNION [ALL] selectstatement
[UNION [ALL] selectstatement][…n]
其中selectstatement为待联合的SELECT查询语句。
ALL选项表示将所有行合并到结果集合中。不指定该项时,被联合查询结果集合中的重复行将只保留一行。
联合查询时,查询结果的列标题为第一个查询语句的列标题。因此,要定义列标题必须在第一个查询语句中定义。要对联合查询结果排序时,也必须使用第一查询语句中的列名、列标题或者列序号。
在使用UNION 运算符时,应保证每个联合查询语句的选择列表中有相同数量的表达式,并且每个查询选择表达式应具有相同的数据类型,或是可以自动将它们转换为相同的数据类型。在自动转换时,对于数值类型,系统将低精度的数据类型转换为高精度的数据类型。
在包括多个查询的UNION语句中,其执行顺序是自左至右,使用括号可以改变这一执行顺序。例如:
查询1 UNION (查询2 UNION 查询3)
三、连接查询
通过连接运算符可以实现多个表查询。连接是关系数据库模型的主要特点,也是它区别于其它类型数据库管理系统的一个标志。
在关系数据库管理系统中,表建立时各数据之间的关系不必确定,常把一个实体的所有信息存放在一个表中。当检索数据时,通过连接操作查询出存放在多个表中的不同实体的信息。连接操作给用户带来很大的灵活性,他们可以在任何时候增加新的数据类型。为不同实体创建新的表,尔后通过连接进行查询。
连接可以在SELECT 语句的FROM子句或WHERE子句中建立,似是而非在FROM子句中指出连接时有助于将连接操作与WHERE子句中的搜索条件区分开来。所以,在Transact-SQL中推荐使用这种方法。
SQL-92标准所定义的FROM子句的连接语法格式为:
FROM join_table join_type join_table
[ON (join_condition)]
其中join_table指出参与连接操作的表名,连接可以对同一个表操作,也可以对多表操作,对同一个表操作的连接又称做自连接。
join_type 指出连接类型,可分为三种:内连接、外连接和交*连接。内连接(INNER JOIN)使用比较运算符进行表间某(些)列数据的比较操作,并列出这些表中与连接条件相匹配的数据行。根据所使用的比较方式不同,内连接又分为等值连接、自然连接和不等连接三种。外连接分为左外连接(LEFT OUTER JOIN或LEFT JOIN)、右外连接(RIGHT OUTER JOIN或RIGHT JOIN)和全外连接(FULL OUTER JOIN或FULL JOIN)三种。与内连接不同的是,外连接不只列出与连接条件相匹配的行,而是列出左表(左外连接时)、右表(右外连接时)或两个表(全外连接时)中所有符合搜索条件的数据行。
交叉连接(CROSS JOIN)没有WHERE 子句,它返回连接表中所有数据行的笛卡尔积,其结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。
连接操作中的ON (join_condition) 子句指出连接条件,它由被连接表中的列和比较运算符、逻辑运算符等构成。
无论哪种连接都不能对text、ntext和image数据类型列进行直接连接,但可以对这三种列进行间接连接。例如:
SELECT p1.pub_id,p2.pub_id,p1.pr_info
FROM pub_info AS p1 INNER JOIN pub_info AS p2
ON DATALENGTH(p1.pr_info)=DATALENGTH(p2.pr_info)
(一)内连接
内连接查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的列值。内连接分三种:
1、等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结果中列出被连接表中的所有列,包括其中的重复列。
2、不等连接: 在连接条件使用除等于运算符以外的其它比较运算符比较被连接的列的列值。这些运算符包括>、>=、<=、<、!>、!<和<>。
3、自然连接:在连接条件中使用等于(=)运算符比较被连接列的列值,但它使用选择列表指出查询结果集合中所包括的列,并删除连接表中的重复列。
例,下面使用等值连接列出authors和publishers表中位于同一城市的作者和出版社:
SELECT *
FROM authors AS a INNER JOIN publishers AS p
ON a.city=p.city
又如使用自然连接,在选择列表中删除authors 和publishers 表中重复列(city和state):
SELECT a.*,p.pub_id,p.pub_name,p.country
FROM authors AS a INNER JOIN publishers AS p
ON a.city=p.city
(二)外连接
内连接时,返回查询结果集合中的仅是符合查询条件( WHERE 搜索条件或 HAVING 条件)和连接条件的行。而采用外连接时,它返回到查询结果集合中的不仅包含符合连接条件的行,而且还包括左表(左外连接时)、右表(右外连接时)或两个边接表(全外连接)中的所有数据行。如下面使用左外连接将论坛内容和作者信息连接起来:
SELECT a.*,b.* FROM luntan LEFT JOIN usertable as b
ON a.username=b.username
下面使用全外连接将city表中的所有作者以及user表中的所有作者,以及他们所在的城市:
SELECT a.*,b.*
FROM city as a FULL OUTER JOIN user as b
ON a.username=b.username
(三)交叉连接
交*连接不带WHERE 子句,它返回被连接的两个表所有数据行的笛卡尔积,返回到结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。例,titles表中有6类图书,而publishers表中有8家出版社,则下列交*连接检索到的记录数将等
于6*8=48行。
SELECT type,pub_name
FROM titles CROSS JOIN publishers
ORDER BY type
[Post=0][/Post]
(z)truncate,delete,drop的异同点
OMG文档分类
在omg.org网站上有关于MDA,UML,CWM,MOF,CORBA等的规范文档(specification),可以从http://www.omg.org/technology/documents/spec_summary.htm(规范文档一览表)上找到你需要阅读的规范文档并下载。例如UML的最新规范在http://www.omg.org/technology/documents/modeling_spec_catalog.htm页面可以找到,名称为Unified Modeling Language™ (UML®)。
OMG文档主要分为两大类:
I类文档:Recently Adopted Specifications 或者 Recently Adopted Revisions
指技术已经被OMG采纳但还在根据OMG P&R(政策与规程)进行编辑的版本。
II类文档:Available Specifications
指已经根据OMG P&G完成所有阶段编辑的版本。
文档的处理状态如下几种:
1。Adopted Submission:
以通过董事会投票采纳了的Specification,但还没有作为正式OMG文档编辑出版。
2。Draft Adopted Specification(I类文档):
将Adopted Submission按照OMG出版格式简单格式化后的版本。允许早期实现。
3。Final Adopted Specification(I类文档):
作为FTF(Final Task Force,是被特许将被采纳的技术编成specification出版的团体)的基线(baseline)文档。
4。FTF Report:
FTF的报告,包括对Final Adopted Specification的使用指南(instruction)和修改。
5。Proposed Available Specification:
OMG P&G术语,是FTF Report和Final Adopted Specification的综合。是准备出版的规范。
6。Available Specification(II类文档):
基于一个FTF Report或Proposed Available Specification,并已经完成所有编辑的文档。是OMG的公开可用版本(Version x.y)。
7。RTF Report:
一个RTF(Revision Task Force,被特许可以处理已经出版的Specification中的问题的团体)的报告,以一个Available Specification作为其基线文档,定义了对它的使用指南(instruction)和修改。
8。Proposed Available Revision:
OMG P&G术语,是RTF Report和Available Specification的综合。这个修订版本将作为该Specification的下一个version。
整个流程如下图所示:

Working document | Process event |
Final Adopted Specification | submission adopted; FTF begins |
Proposed Available Specification | FTF report completed; vote underway |
Available Specification | adoption of FTF report |
Version 1.0 | formal publication |
Proposed Available Revision | RTF report completed; vote underway |
Available Revision | adoption of RTF report |
Version x.y | formal publication |
参考文档:
Getting Specifications and Products(How to find a document)
Specifications Catalog
OMG Specifications Tutorial.
OMG Process Help Page
网上的北京市地图
网上的上海市地图
(z)什么是VOL版和VLK版本?
经典智力题及其解答
最近从网上收集了一些经典的智力题,跟大家分享:
1。海盗分金问题
传说,从前有五个海盗抢得了100枚金币.他们通过了一个如何确定选用谁的分配方案的安排.即:
1.抽签决定各人的号码(1,2,3,4,5);
2.先由1号提出分配方案,然后5个人表决.当且仅当超过半数人同意时,方案才算被通过,否则他将被扔入大海喂鲨鱼;
3.当1号死后,再由2号提方案,4个人表决,当且仅当超过半数同意时,方案才算通过,否则2号同样将被扔入大海喂鲨鱼;
4.往下依次类推……
根据上面的这个故事,现在提出如下的一个问题.即:
我们假定每个海盗都是很聪明的人,并且都能够很理智地判断自己的得失,从而做出最佳的选择,那么第一个海盗应当提出怎样的分配方案才能够使自己不被扔入大海喂鲨鱼,而且收益还能达到最大化呢?
2。帽子问题(疯狗问题与此同理)
一群人开舞会,每人头上都戴着一顶帽子。帽子只有黑白两种,黑的至少有一顶。每个人都能看到其他人帽子的颜色,却不知自己的。主持人先让大家看看别人头上戴的什么帽子,然后关灯,如果有人认为自己戴的是黑帽子,就打自己一个耳光。第一次关灯,没有声音。于是再开灯,大家再看一遍,关灯时仍然鸦雀无声。一直到第三次关灯,才有劈劈啪啪打耳光的声音响起。问有多少人戴着黑帽子?
3。称球问题:
一共12个一样的小球, 其中只有一个重量与其它不一样(未知轻重),给你一个天平, 只称三次, 找出那个不同重量的球?
如果一共13个一样的小球, 其中只有一个重量与其它不一样(未知轻重),给你一个天平, 只称三次, 找出那个不同重量的球?
4。分金条问题:
你让某些人为你工作了七天, 你要用一根金条作为报酬。这根金条要被分成七块。你必须在每天的活干完后交给他们一块。如果你只能将这根金条切割两次,你怎样给这些工人分?
5。猴子搬香蕉问题:
一个小猴子边上有100根香蕉,它要走过50米才能到家,每次它最多搬50根香蕉,每走1米就要吃掉一根,请问它最多能把多少根香蕉搬到家里。
6。飞机加油问题:
每个飞机只有一个油箱, 飞机之间可以相互加油(注意是相互,没有加油机) 一箱油可供一架飞机绕地球飞半圈。
为使至少一架飞机绕地球一圈回到起飞时的飞机场,至少需要出动几架飞机?(所有飞机从同一机场起飞,而且必须安全返回机场,不允许中途降落,中间没有飞机场)
7。硬币游戏:
16个硬币,A和B轮流拿走一些,每次拿走的个数只能是1,2,4中的一个数。
谁最后拿硬币谁输。
问:A或B有无策略保证自己赢?
8。倒水问题:
也可以说是倒酒:)有三个酒杯,其中两个大酒杯每个可以装8两酒,一个可以装3两酒。现在两个大酒杯都装满了酒,只用这三个杯子怎么把酒平均的分给4个人喝?
9。帽子问题2:
有一个牢房,有3个犯人关在其中。因为玻璃很厚,所以3个人只能互相看见,不能听到对方说话的声音。”
有一天,国王想了一个办法,给他们每个人头上都戴了一顶帽子,只叫他们知道帽子的颜色不是白的就是黑的,不叫他们知道自己所戴帽子的是什么颜色的。在这种情况下,国王宣布两条如下:
1.谁能看到其他两个犯人戴的都是白帽子,就可以释放谁;
2.谁知道自己戴的是黑帽子,就释放谁。
其实,国王给他们戴的都是黑帽子。他们因为被绑,看不见自己罢了。于是他们3个人互相盯着不说话。可是不久,心眼灵的A用推理的方法,认定自己戴的是黑帽子。您想,他是怎样推断的?
10。年龄问题:
一普查員問一女人,“你有多少個孩子,他們多少歲?”女人回答:“我有三個孩子,他們的歲數相乘是36,歲數相加就等於隔離間屋的門牌號碼.”普查員立刻走到隔鄰,看了一看,回來說:”我還需要多少資料.”女人回答:“我現在很忙,我最大的孩子正在樓上睡覺.”普查員說:”謝謝,我己知道了
問題:那三個孩子的歲數是多少。
答案:
2。假如只有一个人戴黑帽子,那他看到所有人都戴白帽,在第一次关灯时就应自打耳光,所以应该不止一个人戴黑帽子;如果有两顶黑帽子,第一次两人都只看到对方头上的黑帽子,不敢确定自己的颜色,但到第二次关灯,这两人应该明白,如果自己戴着白帽,那对方早在上一次就应打耳光了,因此自己戴的也是黑帽子―――于是也会有耳光响起;可事实是第三次才响起耳光声,说明全场不止两顶黑帽,依此类推,应该是关几次灯,有几顶黑帽。
3。分3堆,每堆4个,第一次称任意两堆,如果第一次平衡,那么坏球就在剩下的4个中
拿出3个和3个正常的称,如果比正常的重,坏的球就是重球,如果轻,坏的球就是轻球,这个就是3个中有一个知道轻重的坏球的情况,可以用一次称出。如果和正常的平衡,那么就知道剩下那个是坏的了,而且还有一次,可以确定是轻是重。
分3堆,每堆4个,如果不平衡,且左边重,将左面盘里的任意3个球拿出,在将右面盘里任取3个放入左盘,最后将剩下的一堆中取3个放在右盘,此时有3种情况,1)左边仍重,则原来左盘剩下的1个球是重的或原来右盘剩下一个的球是轻的,再称一下即可判断。2)平衡,则前一步从左盘换下来的3个球有一个是重的。3)右盘重,则前一步从右盘移至左盘的球有一个是轻的。
4。1/7,2/7,4/7,第一天给1/7,第二天拿2/7换1/7………………
5。设小猴从0走到50,到A点时候他可以直接抱香蕉回家了,可是到A点时候他至少消耗了3A的香蕉(到A,回0,到A),一个限制就是小猴只能抱50只香蕉,那么在A点小猴最多49只香蕉.100-3A=49,所以A=17. 这样折腾完到家的时候香蕉剩100-3A-(50-A)=50-2A=16.
6。至少需要出动5 架飞机。思路是这样的,一架飞机要想完成绕地球一周的飞行,至少需要别的飞机给它提供1 箱油。最划算的办法显然是,派飞机和它结伴飞行前四分之一周以及后四分之一周,(因为这两段路程距离基地近所花代价小。)由它独立飞行中间的半程。必须保证两个加油点,前四分之一处,加满,后四分之一点,及时补充。那么必须有两架飞机与目标机结伴飞行四分之一周,这两架飞机需要做折返飞行,正好花费2 箱油。所以补充油的任务实际上该由另外两架飞机完成。这两架飞机飞八分之一周,做折返飞,正好富余1 箱油。因此,5 架飞机刚好完成任务。到了此时,问题只考虑了一半。能够提供多少油并不意味着就能够全部接受,受到结伴飞行的距离,即腾出的油箱空间所限制。而以下做法正好可以满足此条件。
3 架飞机同时从机场出发,飞行八分之一周,各耗油四分之一。此时某架飞机给其余两架补满油,自己返回基地。另一机和目标机结伴,飞至四分之一周,给目标机补满油,自己返回。目标机独自飞行半周,与从基地反向出发的一机相遇,2 机将油平分,飞至最后八分之一处,与从基地反向出发的另一机相遇,各分四分之一油,返回。
7。剩2个时,取1个必胜;
剩3个时,取2个必胜;
剩4个时,如果对手足够聪明则必败;
剩5个时,去1个必胜...
记作 2(1) 3(2) 4(x) 5(1) 6(2) 7(x) 8(1) ...
从中找出规律:
当剩余个数K=3N-2,N为自然数时,只要对手足够聪明则必败.
当K=3N-1时,有必胜策略: 取1个;
当K=3N时,有必胜策略:取2个;
所以,当16个时,后取者有必胜策略.
8。用一个三位数表示三个杯,880,前两个为8升的杯最后一个3升。开始:880_853A喝掉3升变为:850_823_B喝掉2升为:803_830_533_560_263_281A喝掉1升(A已经喝4升完毕)为:280_253_550_523_820_802_703_730_433_460_163_181CD各喝一升为:080_053_350_323CD各喝3升B喝2升,分水结束,ABCD四人各喝4升。
9。现在假设3个犯人是A、B和我
那么我的推断是:
第一种:我戴的是白帽子
那么A会这么想:如果自己戴的是白帽子,那么B就会看到2个白帽子,那么他根据国王的第一条就马上会被释放,但是B现在没有被释放,说明我戴的不是白的,是黑的,哈哈,我知道自己是黑的拉,我可以要求国王释放我拉
结论:如果我戴的是白帽子,那么根据A犯人的想法得出:A和B必然有一个会被释放,但是现在2个人都没有被释放,所以我一定不是白的,而是黑的,所以我会知道自己是黑的,要求国王释放我,这样,我就被放了
同理,A和B根据别人的想法也都算出自己是黑帽子,这样3个犯人同时被释放
10。 9,2,2
分析,设三个人的年龄组成自然数组合(x,y,z),一共三个条件,
条件一:三个人岁数乘起来为36;选出满足x*y*z=36的组合;
条件二:知道三个人岁数之和后还是不能确定它们的年龄;从上面的到的组合中找出xyz之和有相同的组合;
只有 (9,2,2)=13,(6,6,1)=13
条件三:三个孩子中有一个年龄比其他两个大。符合条件的组合只有(9,2,2)