
2013年8月1日
Linux中JDK1.6的安裝和配置方法
一、安裝
創建安裝目錄,在/usr/java下建立安裝路徑,并將文件考到該路徑下:
# mkdir /usr/java
1、jdk-6u11-linux-i586.bin 這個是自解壓的文件,在linux上安裝如下:
# chmod 755 jdk-6u11-linux-i586.bin
# ./jdk-6u11-linux-i586.bin (注意,這個步驟一定要在jdk-6u11-linux-i586.bin所在目錄下)
在按提示輸入yes后,jdk被解壓。
出現一行字:Do you aggree to the above license terms? [yes or no]
安裝程序在問您是否愿意遵守剛才看過的許可協議。當然要同意了,輸入"y" 或 "yes" 回車。
2、若是用jdk-6u11-linux-i586-rpm.bin 這個也是一個自解壓文件,不過解壓后的文件是jdk-6u11-linux-i586-rpm 包,執行rpm命令裝到linux上就可以了。安裝如下:
#chmod 755 ./jdk-6u11-linux-i586-rpm
# ./jdk-6u11-linux-i586-rpm .bin
# rpm -ivh jdk-6u11-linux-i586-rpm
出現一行字:Do you aggree to the above license terms? [yes or no]
安裝程序在問您是否愿意遵守剛才看過的許可協議。當然要同意了,輸入"y" 或 "yes" 回車。
安裝軟件會將JDK自動安裝到 /usr/java/目錄下。
二、配置
#vi /etc/profile
在里面添加如下內容
export JAVA_HOME=/usr/java/jdk1.6.0_27
export JAVA_BIN=/usr/java/jdk1.6.0_27/bin
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME JAVA_BIN PATH CLASSPATH
讓/etc/profile文件修改后立即生效 ,可以使用如下命令:
# . /etc/profile
注意: . 和 /etc/profile 有空格.
重啟測試
java -version
set 查看環境變量
pwd 顯示當前位置
posted @
2014-04-25 17:26 hoojo 閱讀(382) |
評論 (0) |
編輯 收藏
samba文件共享服務可以讓linux和linux系統、linux和windows系統之間共享文件
服務查詢
默認情況下,Linux系統在默認安裝中已經安裝了Samba服務包的一部分,為了對整個過程有一個完整的了解,在此先將這部分卸載掉。使用命令
rpm -qa | grep samba,默認情況下可以查詢到兩個已經存在的包:
samba-client-xxx-xxx
samba-common-xxx.xxx
卸載Samba
用rpm -e 將兩個包卸載掉。對于samba-common-xxx.xxx,因為與其它rpm包之間存在依賴關系,所以必須加參數-f和--nodeps,-f是指強制,--nodeps是指不檢查依賴關系,具體完整命令為:
rpm -e samba-common-xxx -f --nodeps
rpm -e samba-client-xxx -f –nodeps
掛在鏡像文件
因為安裝samba你需要下載對應的安裝包,一般系統盤就有這些軟件,所以可以直接掛載上去
mount -o loop /home/rhel-server-6.2-x86_64-dvd.iso /media/OS
這樣就將系統盤掛載到指定的OS目錄了,在OS目錄下的Packages下有很多安裝包可以使用。
安裝Samba
用以下命令安裝:
rpm -ivh samba-xxx.rpm -f --nodeps
rpm -ivh samba-client-xxx.rpm -f --nodeps
rpm -ivh samba-common-xxx.rpm -f --nodeps
安裝完成后,使用命令rpm -qa | grep samba進行查詢,發現搭建samba服務器所依賴的所有服務器都已經安裝好了即可。
安裝完成后配置/etc/samba/smb.conf配置文件,你可以備份原來的配置,把下面的配置覆蓋當前配置即可:
[global]
workgroup=takecar
netbios name=Linux-108.12
server string=Linux Samba Server TestServer
#security=share
security=user
map to guest=Bad User
[takecar]
path=/opt/takecar
writable=yes
browseable=yes
guest ok=yes
以上就是配置匿名用戶共享目錄/opt/takecar
其中writable是寫入權限、browseable是瀏覽權限、guest是貴賓用戶
建立相應目錄并授權
[root@localhost ~]# mkdir -p /opt/linuxsir
[root@localhost ~]# id nobody
uid=99(nobody) gid=99(nobody) groups=99(nobody)
[root@localhost ~]# chown -R nobody:nobody /opt/linuxsir
注釋:關于授權nobody,我們先用id命令查看了nobody用戶的信息,發現他的用戶組也是nobody,我們要以這個為準。有些系統nobody用戶組并非是nobody ;
啟動smbd和nmbd服務器
[root@localhost ~]# smbd
[root@localhost ~]# nmbd
關閉和查詢服務
pkill smbd
pkill nmbd
pgrep smbd
pgrep nmbd
如果啟動后不能訪問可能是防火墻原因,關閉防火墻
service iptables stop
chkconfig iptables off
設置服務開機啟動 ntsysv命令可以進入圖形界面設置,如果windows不能建立linux的共享目錄可能是window中的某個服務原因。
可以在運行輸入 secpol.msc命令 進入本地策略/安全選項, 設置
直接用進程殺死程序
ps -ef|grep smb
kill -9 pid #pid 為相應的進程號
#直接查看指定端口的進程pid
netstat -anp|grep 9217
posted @
2014-04-25 17:24 hoojo 閱讀(469) |
評論 (0) |
編輯 收藏
摘要: oracle job有定時執行的功能,可以在指定的時間點或每天的某個時間點自行執行任務。 一、查詢系統中的job,可以查詢視圖 --相關視圖select * from dba_jobs;select * from all_jobs;select * from user_jobs;-- 查詢字段描述/*字段(列) 類型 描述JOB ...
閱讀全文
posted @
2013-11-21 10:55 hoojo 閱讀(2818) |
評論 (2) |
編輯 收藏
// 方式一:
double f = 3.1516;
BigDecimal b = new BigDecimal(f);
double f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
// 方式二:
new java.text.DecimalFormat("#.00").format(3.1415926);
// #.00 表示兩位小數 #.0000四位小數 以此類推…
// 方式三:
double d = 3.1415926;
String result = String.format("%.2f", d);
// %.2f %. 表示 小數點前任意位數 2 表示兩位小數 格式后的結果為f 表示浮點型。
//方法四:
Math.round(5.2644555 * 100) * 0.01d;
//String.format("%0" + 15 + "d", 23) 23不足15為就在前面補0
posted @
2013-11-15 15:13 hoojo 閱讀(646) |
評論 (0) |
編輯 收藏
在使用cxf實現webservice時,經常碰到的問題就是如果在服務端,修改了一個接口的簽名實現,如增加一個字段,或者刪除一個字段。在這種情況下,在默認的配置中,就會報以下的錯誤信息:
org.apache.cxf.interceptor.Fault: Unmarshalling Error: unexpected element . Expected elements are
這種錯誤即客戶端使用的傳輸對象與服務端接收的參數的字段不匹配。但如果,每次修改服務端的實現,都需要更新客戶端時,就會出現一些問題,如在某些情況下,客戶端的更新是不可能的事(如不在自己掌握之內,或者服務不能隨便更新,或者其它計劃時)。
如果避免這種問題,其實也很簡單,就是禁用cxf中的字段信息驗證,如果禁用掉此驗證,就不再會對相應的字段信息進行驗證,同時沒有的字段也會自動的忽略。整個解決只需要增加以下的一行配置即可,在cxf.xml(spring集成文件)中增加以下配置項:
<cxf:properties>
<entry key="set-jaxb-validation-event-handler" value="false"/>
</cxf:properties>
這樣,即會禁用掉所有cxf的數據驗證,在大多數情況下,這可以滿足我們的要求(除非你有其它和cxf集成的數據驗證要求)。
轉載請標明出處:i flym
本文地址:http://www.iflym.com/index.php/code/201307310001.html
posted @
2013-11-12 13:45 hoojo 閱讀(947) |
評論 (0) |
編輯 收藏
摘要: 副標題:利用ant腳本 自動構建svn增量/全量 系統程序升級包 首先請允許我這樣說,作為開發或測試,你一定要具備這種本領。你可以手動打包、部署你的工程,但這不是最好的方法。最好的方式就是全自動化的方式。開發人員提交了代碼后,可以自動構建、打包、部署到測試環境。測試通過后進入到模擬環境或是直接發布的生產環境,這個過程可以是全自動的。但這個自動化的方式有一些公司用到了,但也有很多公司還不知道,他們...
閱讀全文
posted @
2013-11-05 09:01 hoojo 閱讀(17043) |
評論 (2) |
編輯 收藏
ant 命令行方式執行build javac編譯class出現 泛型無法轉換 無法確定 <X>X 的類型參數;對于上限為 X,java.lang.Object 的類型變量 X,不存在唯一最大實例
解決方法:
需要用到eclipse的jdt來編譯class,不能再使用javac的默認編譯方式。
在eclipse或MyEclipse的eclipse/plugin目錄中找到org.eclipse.jdt.core_3.5.2.v_981_R35x.jar里面找到jdtCompilerAdapter.jar
還有
org.eclipse.jdt.compiler.tool_1.0.100.v_972_R35x.jar
org.eclipse.jdt.core_3.5.2.v_981_R35x.jar
org.eclipse.jdt.debug.ui_3.4.1.v20090811_r351.jar
jdtCompilerAdapter.jar
并拷貝到ant_home/lib下。
在ant的build.xml腳本中加入
<property name="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter"/>
<javac nowarn="false" debug="true" debuglevel="source,lines,vars" destdir="${dist.path}/classes" source="1.6" target="1.6" encoding="utf-8" fork="true" memoryMaximumSize="512m" includeantruntime="false">
或者
<javac compiler="org.eclipse.jdt.core.JDTCompilerAdapter" nowarn="false" debug="true" debuglevel="source,lines,vars" destdir="${dist.path}/classes" source="1.6" target="1.6" encoding="utf-8" fork="true" memoryMaximumSize="512m" includeantruntime="false"/>
如果是用eclipse運行ant腳本,在右鍵菜單選擇從RUN as Ant 啟動build.xml時,在對話框中 選擇Runtime jRE:run in the same JRE as workspace.
記得要引入上面需要的幾個jar包
posted @
2013-10-31 14:10 hoojo 閱讀(5004) |
評論 (2) |
編輯 收藏
摘要: 一、摘要 上兩篇文章分別介紹了Spring3.3 整合 Hibernate3、MyBatis3.2 配置多數據源/動態切換數據源 方法 和 Spring3 整合Hibernate3.5 動態切換SessionFactory (切換數據庫方言),這篇文章將介紹Spring整合Mybatis 如何完成SqlSessionFactory的動態切換的。并且會簡單的介紹下MyBatis整合Spring中的...
閱讀全文
posted @
2013-10-22 10:27 hoojo 閱讀(17000) |
評論 (3) |
編輯 收藏
摘要: 一、緣由 上一篇文章Spring3.3 整合 Hibernate3、MyBatis3.2 配置多數據源/動態切換數據源 方法介紹到了怎么樣在Sping、MyBatis、Hibernate整合的應用中動態切換DataSource數據源的方法,但最終遺留下一個問題:不能切換數據庫方言。數據庫方言可能在當前應用的架構中意義不是很大,但是如果單純用MyBatis或Hibernate做數據庫持久化操作,還...
閱讀全文
posted @
2013-10-18 12:13 hoojo 閱讀(8081) |
評論 (8) |
編輯 收藏
摘要: 一、開篇 這里整合分別采用了Hibernate和MyBatis兩大持久層框架,Hibernate主要完成增刪改功能和一些單一的對象查詢功能,MyBatis主要負責查詢功能。所以在出來數據庫方言的時候基本上沒有什么問題,但唯一可能出現問題的就是在hibernate做添加操作生成主鍵策略的時候。因為我們都知道hibernate的數據庫本地方言會針對不同的數據庫采用不同的主鍵生成策略。 所以針對這一問...
閱讀全文
posted @
2013-10-12 10:53 hoojo 閱讀(12363) |
評論 (5) |
編輯 收藏
摘要: 基于HTTP的長連接,是一種通過長輪詢方式實現"服務器推"的技術,它彌補了HTTP簡單的請求應答模式的不足,極大地增強了程序的實時性和交互性。 一、什么是長連接、長輪詢? 用通俗易懂的話來說,就是客戶端不停的向服務器發送請求以獲取最新的數據信息。這里的“不?!逼鋵嵤怯型V沟?,只是我們人眼無法分辨是否停止,它只是一種快速的停下然后又立即開始連接而已。 二、長連接...
閱讀全文
posted @
2013-09-26 14:41 hoojo 閱讀(7171) |
評論 (2) |
編輯 收藏
UML是一種通用的建模語言,其表達能力相當的強,不僅可以用于軟件系統的建模,而且可用于業務建模以及其它非軟件系統建模。UML綜合了各種面向對象方法與表示法的優點,至提出之日起就受到了廣泛的重視并得到了工業界的支持。
本章將按視圖、模型元素、圖以及公共機制依次介紹UML的構造和基本元素,以使得讀者對UML有一個總體了解,其具體細節將在后續章節中詳細描述。
畫圖工具:eDraw、jude
歡迎大家繼續支持和關注我的博客:
http://hoojo.cnblogs.com
http://blog.csdn.net/IBM_hoojo
也歡迎大家和我交流、探討IT方面的知識。
email:hoojo_@126.com
如果你覺得本文不錯的話,請你點擊屏幕右下方的
。如果你以后會用到這篇文章的或覺得以后要重新翻閱的話,你可以點擊屏幕右下角的
。如果你覺得我的博文不錯或是想在第一時間看到我的動態的話,你可以點擊屏幕右下角
。如果你想說點什么的話,你可以點擊屏幕右下方的
。如果你都點過了,那真的太謝謝你了,兄弟太支持了。此時,或許你可以點擊
按鈕,然后看看博文的導航繼續瀏覽其他文章。
1. UML的組成
UML由視圖(View)、圖(Diagram)、模型元素(Model Element)和通用機制(General Mechanism)等幾個部分組成。
a) 視圖(View): 是表達系統的某一方面的特征的UML建模元素的子集,由多個圖構成,是在某一個抽象層上,對系統的抽象表示。
b) 圖(Diagram): 是模型元素集的圖形表示,通常是由弧(關系)和頂點(其他模型元素)相互連接構成的。
c) 模型元素(Model Element):代表面向對象中的類、對象、消息和關系等概念,是構成圖的最基本的常用概念。
d) 通用機制(General Mechanism):用于表示其他信息,比如注釋、模型元素的語義等。另外,UML還提供擴展機制,使UML語言能夠適應一個特殊的方法(或過程),或擴充至一個組織或用戶。

2. UML視圖的分類
UML是用來描述模型的,用模型來描述系統的機構或靜態特征,以及行為或動態特征。從不同的視角為系統構架建模,形成系統的不同視圖。
(1) 用例視圖(Use Case View),強調從用戶的角度看到的或需要的系統功能,是被稱為參與者的外部用戶所能觀察到的系統功能的模型圖。
(2) 邏輯視圖(Logical View),展現系統的靜態或結構組成及特征,也稱為結構模型視圖(Structural Model View)或靜態視圖(Static View)。
(3) 并發視圖(Concurrent View),體現了系統的動態或行為特征,也稱為行為模型視圖(Behavioral Model View)或動態視圖(Dynamic View)。
(4) 組件視圖(Component View),體現了系統實現的結構和行為特征,也稱為實現模型視圖(Implementation Model View)。
(5) 配置視圖(Deployment View),體現了系統實現環境的結構和行為特征,也稱為環境模型視圖(Environment Model View)或物理視圖(Physical View)。
視圖是由圖組成的,UML提供9種不同的圖:
(1) 用例圖(Use Case Diagram),描述系統功能;
(2) 類圖(Class Diagram),描述系統的靜態結構;
(3) 對象圖(Object Diagram),描述系統在某個時刻的靜態結構;
(4) 組件圖(Component Diagram),描述了實現系統的元素的組織;
(5) 配置圖(Deployment Diagram),描述了環境元素的配置,并把實現系統的元素映射到配置上;
(6) 狀態圖(State Diagram),描述了系統元素的狀態條件和響應;
(7) 時序圖(Sequence Diagram),按時間順序描述系統元素間的交互;
(8) 協作圖(Collaboration Diagram),按照時間和空間順序描述系統元素間的交互和它們之間的關系;
(9) 活動圖(Activity Diagram),描述了系統元素的活動;
建模方法由建模語言和建模過程兩部分構成。其中建模語言是用來表述設計方法的表示法,建模過程是對設計中所應采取的步驟的描述。UML是一種建模語言,它在很大程度上獨立于建模過程。在實際建模中,建模人員最好把UML用于以用案驅動的、以體系機構為中心的、迭代的和漸增式的開發過程中。
一般而言,軟件系統的體系結構給出了軟件系統的組織、組成系統的構造元素及其接口的選擇、系統的行為和體系結構風格等信息。也就是說,它不僅關心系統的結構和行為等功能性需求,而且也涉及系統的性能、易理解性、易復用性等非功能性需求。如下圖所示,UML利用用戶模型視圖、結構模型視圖、行為模型視圖、實現模型視圖和環境模型視圖來描述軟件系統的體系結構。
根據它們在不同架構視圖的應用,可以把9種圖分成:
(1) 用戶模型視圖:用例圖;
(2) 結構模型視圖:類圖和對象;
(3) 行為模型視圖:狀態圖、時序圖、協作圖和活動圖(動態圖);
(4) 實現模型視圖:組件圖;
(5) 環境模型視圖:配置圖。
用戶模型視圖由專門描述最終用戶、分析人員和測試人員看到的系統行為的用案組成,它實際上是從用戶角度來描述系統應該具有的功能。用戶模型視圖所描述的系統功能依靠外部用戶或者另外一個系統來激活,為用戶或者另一系統提供服務,從而實現用戶或另一系統與系統的交互。系統實現的最終目標是提供用戶模型視圖中所描述的功能。在UML中,用戶模型視圖是由用案圖組成。
結構模型視圖描述組成系統的類、對象以及它們之間的關系等靜態結構,用來支持系統的功能需求,即描述系統內部功能是如何設計的。結構模型視圖由類圖和對象圖構成,主要供設計人員和開發人員使用。
行為模型視圖主要用來描述形成系統并發與同步機制的線程和進程,其關注的重點是系統的性能、易伸縮性和系統的吞吐量等非功能性需求。行為模型視圖利用并發來描述資源的高效使用、并行執行和處理異步事件。除了講系統劃分為并發執行的控制線程之外,行為模型還必須處理通信和這些線程及進程之間的同步問題。行為模型視圖主要供系統開發人員和系統集成人員使用,它由序列圖、協作圖、狀態圖和活動圖組成。
實現模型視圖用來描述系統的實現模塊它們之間的依賴關系以及資源分配情況。這種視圖主要用于系統的配置管理,它是由一些獨立的構件組成的。實現模型視圖由構件圖組成。其中構件是代碼模塊,不同類型的代碼模塊形成不同的構件。實現模型視圖主要供開發人員使用。
環境模型視圖用來描述物理系統的硬件拓撲結構。例如,系統中的計算機和設備的分布情況以及它們之間的連接方式,其中計算機和設備統稱為節點。在UML中環境模型視圖是由部署圖來表示的。系統部署圖描述了系統構件在節點上的分布情況,即用來描述軟件構件到物理節點的映射。部署圖主要供開發人員、系統集成人員和測試人員使用。
上面每一種視圖反映了系統的一個特定方面,不同人員可以單獨的使用其中每一種視圖,從而可以關注特定的體系結構問題。但在通常情況下,由于系統的最終目標是提供用戶模型視圖中描述的功能以及其它一些非功能性需求,因此,用戶模型視圖是其它視圖的核心基礎,其它視圖的構造都依賴與用戶模型視圖中所描述的類容。
細心的讀者已經發現,每一種UML圖都是由多個圖組成的,每一種圖都是體系結構某個側面的表示,各種圖實際上是一致的,所有的圖在一起組成了系統的完整視圖。如下圖所示,UML中總共提供了用案圖、類圖、對象圖、序列圖、協作圖、狀態圖、活動圖、構建圖和部署圖9種圖。根據它們描述的是系統的靜態結構還是動態行為,可以將它們分為靜態圖和動態圖兩類。再進一步介紹這9中UML圖時,先了解下什么是模型元素:
3. UML的建模機制
UML有兩套建模機制:靜態建模機制和動態建模機制。靜態建模機制包括用例圖、類圖、對象圖、包、組件圖和配置圖。動態建模機制包括狀態圖、時序圖、協作圖、活動圖。
(1) 用例圖:用例的可視化工具,它提供計算機系統的高層次的用戶視圖,表示以外部活動者的角度來看系統將是怎樣使用的。
用例圖(用案圖)是用于描述一組用案,參與者以及它們之間的連接關系。一個用案圖描述了一組動作序列,每一個序列表示系統的外部設施(系統的參與者)與系統本身的交互。從一個特定參與者的角度看,一個用案完成對其有價值的工作。如圖2.5所示,用案圖僅僅是從參與者使用系統的角度來描述系統中的信息,即站在系統外部查看系統應該具有什么功能,而并不描述該功能在軟件內部是如何實現的。用案可以應用于整個系統,也可以應用于系統的一個部分,包括子系統、單個的類或者接口。通常,用案不僅代表這些元素所期望的行為,而且還可以把這些元素用作開發過程中測試用案的基礎。
用例圖包括以下3方面內容:
(a) 用例(Use Case)
(b) 參與者(Actor)
(c) 依賴、泛化和關聯關系
用例圖示例:
(2) 類圖:描述類、接口、協作以及它們之間關系的圖。
類圖是用于描述一組類、接口、協作以及它們之間的靜態關系。在面向對象系統的建模中,類圖是最為常用的圖,它用來闡明系統的靜態結構。事實上類是對一組具有相同屬性、操作、關系和語義的對象的描述,其中對類的屬性和操作進行描述時的一個最重要的細節就是它的可見性。
類可以以多種形式連接,例如關聯、泛化、依賴和實現等。一個典型的系統中通常有若干個類圖。一個類圖不一定要包含系統中所有的類,一個類可以加到幾個類圖中。
類圖示例:
(3) 對象圖:表示在某一時間上一組對象以及它們之間的關系的圖。對象圖可以被看做是類圖在系統某一時刻的實例。
對象圖是類圖的實例,用來描述特定運行時刻一組對象之間的關系。也就是說,對象用于描述交互的靜態部分,它由參與協作的有關對象組成。但不包括在對象之間傳遞的任何消息。
在創建對象圖時,建模人員并不需要用單個的對象圖來描述系統中的每一個對象。事實上,絕大多數系統中都會包含成百上千的對象。用對象來描述系統的所有對象以及它們之間的關系一般是不太現實的。因此,建模人員可以選擇所感興趣的對象極其之間的關系來描述。
對象圖中所使用的符號和類圖中使用的符號幾乎完全相同,區別僅在于對象圖的對象名帶有下劃線,而且類與類之間關系的所有的實例都要畫出來。
(4) 組件圖:描述軟件組件以及組件之間的關系,組件本身是代碼的物理模塊,組件圖則顯示了代碼的結構。
組件圖(構件圖)是用于描述一組構件之間的組織和依賴關系,用于建模系統的靜態實現視圖。構件可以是可執行程序集、庫、表、文件和文檔等,它包含了邏輯類或者邏輯類的實現信息,因此結構模型視圖和實現模型視圖之間存在映射關系。
構建圖中也可以包括包或子系統,它們都是用于將模型元素組成較大的組塊。
組件圖例圖:
(5) 配置圖:描述系統硬件的物理拓撲結構以及在此結構上執行的軟件。配置圖可以顯示計算節點的拓撲結構和通信路徑、結點上運行的軟件組件、軟件組件包含的邏輯單元(對象、類)等。配置圖常常用于幫助理解分布式系統。
配置圖(部署圖)用來描述系統運行是進行處理的節點以及在節點上活動的構件的配置。部署圖用來對系統的環境模型視圖進行建模。在大多數情況下,部署圖用來描述系統硬件的擴普結構。
在UML中,建模人員可以用類圖來描述系統的靜態結構,可以用序列圖、協作圖、狀態圖、活動圖來描述系統的動態行為,而用部署圖來描述軟件所執行所需的處理器和設備的拓撲結構。
(6) 狀態圖:通過類對象的生命周期建立模型來描述對象隨時間變化的動態行為。
狀態圖實際上是一種由狀態、變遷、事件和活動組成的狀態機。狀態圖描述從狀態到狀態的控制流,常用于系統的動態特性建模。在大多數情況下,它用來對反應型對象的行為建模。
在UML中,狀態圖可以用來對一個對象按事件排序的行為建模。一個狀態圖是強調從狀態到狀態的控制流的狀態機的簡單表示。一般而言,狀態圖是對類所描述的設施的補充說明,它描述了類的所有對象可能具有的狀態以及引起狀態變化的事件。
(7) 時序圖:交互圖描述了一個交互,它由一組對象和它們之間的關系組成,并且還包括在對象間傳遞的信息。交互圖表達對象之間的交互,是描述一組對象如何協作完成某個行為的模型化工具。
序列圖和協作圖統稱為交互圖。其中,序列圖用來描述對象之間消息發送的先后次序,闡明對象之間的交互過程以及在系統執行過程中的某一具體時刻將會發生什么事件。序列圖是一種強調時間順序的交互圖,其中對象沿橫軸方向排列,消息沿縱軸方向排列。
序列圖中的對象生命線是一條垂直的虛線,它表示一個對象在一段時間內存在。由于序列圖中大多數對象都存在于整個交互過程中,因此這些對象全部排列在圖的頂部,它們的生命線從圖的頂部畫到圖的底部。每個對象的下方有一個矩形條,它與對象的生命線重疊,它表示該對象的控制焦點。序列圖中的消息可以有序號,但由于這種圖上的消息已經從縱軸上按時間順序排序,因此消息序號通常予以省略。
(8) 協作圖:包含類元角色和關聯角色,而不僅僅是類元和關聯。協作圖強調參加交互的各對象的組織。協作圖只對相互間有交互作用的對象和這些對象間的關系建模,而忽略了其他對象和關聯。協作圖也是一種交互圖,它強調收發消息的對象的組織結構。
協作圖和序列圖是協作的,它們可以互相轉換。在多數情況下,協作圖主要對單調的、順序的控制流建模,但它也可以用來對包括迭代和分支在內的復雜控制流進行建模。
一般而言,建模人員可以創建多個協作圖,其中一些是主要的,另外一些是可選擇的路徑或者異常條件。建模人員可以用包來組織這些協作圖,并給每個圖起一個合適的名字,以便與其它圖區別開。
(9) 活動圖:用于展現參與行為的類的活動或動作。
活動圖是狀態圖的一種特殊情況,其中幾乎所有或大多數狀態都處于活動狀態,而且幾乎所有或者大多數變遷都是由源狀態中活動的完成觸發的。活動圖本質上是一種流程圖,它描述了從活動到活動的控制流。
可以把活動圖看作是新樣的交互圖,但交互圖觀察的是傳遞消息的對象,而活動圖觀察到的是對象之間傳送的消息。盡管兩者在語義上的區別很細微,但它們使用不同的方式來看系統的。

如果你覺得本文不錯的話,請你點擊屏幕右下方的
。如果你以后會用到這篇文章的或覺得以后要重新翻閱的話,你可以點擊屏幕右下角的
。如果你覺得我的博文不錯或是想在第一時間看到我的動態的話,你可以點擊屏幕右下角
。如果你想說點什么的話,你可以點擊屏幕右下方的
。如果你都點過了,那真的太謝謝你了,兄弟太支持了。此時,或許你可以點擊
按鈕,然后看看博文的導航繼續瀏覽其他文章。
最后,歡迎大家繼續支持和關注我的博客:
http://hoojo.cnblogs.com
http://blog.csdn.net/IBM_hoojo
也歡迎大家和我交流、探討IT方面的知識。
posted @
2013-08-30 16:52 hoojo 閱讀(2249) |
評論 (2) |
編輯 收藏
摘要: 在flex組件中嵌入html代碼,可以利用flex iframe。這個在很多時候會用到的,有時候flex必須得這樣做,如果你不這樣做還真不行…… flex而且可以和html進行JavaScript交互操作,flex調用到html中的JavaScript方法以及獲取調用后的返回值。 1、flex iframe下載地址:https://github.com/downloads/flex...
閱讀全文
posted @
2013-08-15 15:58 hoojo 閱讀(5858) |
評論 (2) |
編輯 收藏
一、UML中的六大關系
在UML類圖中,常見的有以下幾種關系: 泛化(Generalization), 實現(Realization),關聯(Association),聚合(Aggregation),組合(Composition),依賴(Dependency)。
1.1、 繼承關系—泛化(Generalization)
指的是一個類(稱為子類、子接口)繼承另外的一個類(稱為父類、父接口)的功能,并可以增加它自己的新功能的能力,繼承是類與類或者接口與接口之間最常見的關系;在Java中用extends關鍵字。
【泛化關系】是一種繼承關系,表示一般與特殊的關系,它指定了子類如何特化父類的所有特征和行為。例如:貓頭鷹是鳥的一種,即有鳥的特性也有貓頭鷹的共性。
【箭頭指向】帶三角箭頭的實線,箭頭指向父類。
【描述】上圖中的類bird有嘴、翅膀、羽毛等屬性。會飛、會唧唧喳喳的叫,那么就有這些方法。而貓頭鷹有大眼睛和捕捉老鼠的本領,這則是自身的特性。
1.2、 實現關系(Realization)
指的是一個class類實現interface接口(可以是多個)的功能;實現是類與接口之間最常見的關系;在Java中此類關系通過關鍵字implements明確標識。
【實現關系】是一種類與接口的關系,表示類是接口所有特征和行為的實現.
【箭頭指向】帶三角箭頭的虛線,箭頭指向接口。
【描述】上圖中IFly是一個接口,接口中有時間、速度等常量,還有一個fly方法。FlyImpl繼承了這個IFly接口后,需要實現fly方法,同時實現類也可以擁有自己的屬性和方法。
1.3、 依賴(Dependency)
可以簡單的理解,就是一個類A使用到了另一個類B,而這種使用關系是具有偶然性的、臨時性的、非常弱的,但是B類的變化會影響到A;比如某人要過河,需要借用一條船,此時人與船之間的關系就是依賴;表現在代碼層面,為類B作為參數、屬性被類A在某個method方法中使用;
【依賴關系】是一種使用的關系,即一個類的實現需要另一個類的協助,所以要盡量不使用雙向的互相依賴。
【代碼表現】局部變量、方法的參數或者對靜態方法的調用
【箭頭及指向】帶箭頭的虛線,指向被使用者
【描述】Bird類中有一個setFly方法,它需要使用者用到IFly接口的實現,那么這種關系就是依賴關系。
1.4、 關聯
他體現的是兩個類、或者類與接口之間語義級別的一種強依賴關系,比如我和我的朋友;這種關系比依賴更強、不存在依賴關系的偶然性、關系也不是臨時性的,一般是長期性的,而且雙方的關系一般是平等的、關聯可以是單向、雙向的;表現在代碼層面,為被關聯類B以類屬性的形式出現在關聯類A中,也可能是關聯類A引用了一個類型為被關聯類B的全局變量;
【關聯關系】是一種擁有的關系,它使一個類知道另一個類的屬性和方法;如:老師與學生,丈夫與妻子關聯可以是雙向的,也可以是單向的。雙向的關聯可以有兩個箭頭或者沒有箭頭,單向的關聯有一個箭頭。
【代碼體現】成員變量
【箭頭及指向】帶普通箭頭的實心線,指向被擁有者
【描述】在Bird類中有一個IFly類型的fly屬性,需要提供IFly的接口實現。Bird對象會利用IFly接口的實現完成fly方法。
1.4.1、雙向關聯
雙方都知道對方的存在,都可以調用對方的公共屬性、方法。
【關聯關系】雙方都有關聯的關系,通過自身對對方關聯的屬性來訪問對方的屬性和方法。
【代碼體現】成員變量
【箭頭及指向】用不帶箭頭的實線連接雙方
【描述】在中國一個妻子只能嫁給一個丈夫,一個丈夫也只能取一個妻子。
1.4.2、自身關聯
自己關聯自己,這種情況比較少出現但是也有用到。
【自關聯關系】雙方都有關聯的關系,通過自身對自身關聯的屬性引用來訪問對方的屬性和方法。
【代碼體現】成員變量
【箭頭及指向】用帶普通箭頭的實線連接自己
【描述】在盜夢空間中,演員需要在夢中再造夢,這種夢中夢的情況跟上圖描述很符合。
1.5、 聚合(Aggregation)
聚合是關聯關系的一種特例,他體現的是整體與部分、擁有的關系,即has-a的關系,此時整體與部分之間是可分離的,他們可以具有各自的生命周期,部分可以屬于多個整體對象,也可以為多個整體對象共享;比如計算機與CPU、公司與員工的關系等;表現在代碼層面,和關聯關系是一致的,只能從語義級別來區分;
【聚合關系】是整體與部分的關系,且部分可以離開整體而單獨存在。如車和輪胎是整體和部分的關系,輪胎離開車仍然可以存在。聚合關系是關聯關系的一種,是強的關聯關系;關聯和聚合在語法上無法區分,必須考察具體的邏輯關系。
【代碼體現】成員變量
【箭頭及指向】帶空心菱形的實心線,菱形指向整體
【描述】birdChild一只鳥有很多鳥寶寶,所以自引用。鳥有很多不同數量和顏色的羽毛,所以引用關系是0~*。
1.6、 組合(Composition)
組合也是關聯關系的一種特例,他體現的是一種contains-a的關系,這種關系比聚合更強,也稱為強聚合;他同樣體現整體與部分間的關系,但此時整體與部分是不可分的,整體的生命周期結束也就意味著部分的生命周期結束;比如你和你的大腦;表現在代碼層面,和關聯關系是一致的,只能從語義級別來區分;
【組合關系】是整體與部分的關系,但部分不能離開整體而單獨存在。如公司和部門是整體和部分的關系,沒有公司就不存在部門。組合關系是關聯關系的一種,是比聚合關系還要強的關系,它要求普通的聚合關系中代表整體的對象負責代表部分的對象的生命周期。
【代碼體現】成員變量
【箭頭及指向】帶實心菱形的實線,菱形指向整體
【描述】一個學校由多個班級組成,班級離開學校也就不存在、而學校離開班級也不成立。像這種不可分離的關系就需要用組合。
綜合示例
對于繼承、實現這兩種關系沒多少疑問,他們體現的是一種類與類、或者類與接口間的縱向關系;其他的四者關系則體現的是類與類、或者類與接口間的引用、橫向關系,是比較難區分的,有很多事物間的關系要想準備定位是很難的,前面也提到,這幾種關系都是語義級別的,所以從代碼層面并不能完全區分各種關系;但總的來說,后幾種關系所表現的強弱程度依次為:泛化 = 實現 > 組合 > 聚合 > 關聯 > 依賴。
posted @
2013-08-01 16:17 hoojo 閱讀(2403) |
評論 (5) |
編輯 收藏