當前位置:首頁 » 操作系統 » 9i源碼

9i源碼

發布時間: 2022-10-01 15:10:22

⑴ PHP源碼解密

請務必試試.
網路一下:清風發明"空格"zend
不錯的話.給加個分吧.我沒半點分數了.

java與J2EE

隨著Internet網路的迅速發展,基於互聯網的企業應用要求軟體平台具有開放性、分布性和平台無關性。於是就相繼出現了RPC/COM/CORBA等技術,但這些技術在實際應用中存在著許多不足和局限。它們的特定協議難以通過防火牆,因而不適於Web上的應用開發。為了進一步開發基於Web的應用,出現了Sun公司的Sun ONE(Open Net Environment 開發網路環境)和Microsoft公司的.NET等Web 服務技術體系。

Sun ONE體系結構以Java語言為核心,包括J2SE/J2EE/J2ME和一系列的標准、技術及協議。它包括Sun獨有的iPlanet軟體系列,其中有在市場上受歡迎的LDAP目錄伺服器軟體,以及Forte for Java——便於在任何環境下書寫Java 語言的軟體工具。我們很容易就能從網上免費獲得和使用包括Java 集成開發環境、Java資料庫和中間件(Application Server)伺服器等產品,以及它們的源代碼。Sun ONE更接近或能滿足互聯網在智能化Web服務方面對分布性、開發性和平台無關性的要求。

隨著Java技術的不斷發展,它根據市場進一步細分為:針對企業網應用的J2EE(Java 2 Enterprise Edition)、針對普通PC應用的J2SE(Java 2 Standard Edition)和針對嵌入式設備及消費類電器的J2ME(Java 2 Micro Edition)三個版本。本文就Sun ONE的Java核心應用——J2SE/J2EE/J2ME作一些介紹。

J2EE技術應用

J2EE是Sun公司推出的一種全新概念的模型,比傳統的互聯網應用程序模型更有優勢。

J2EE模型

J2EE的應用編程模型(J2EE Blueprints)提供了一種用於實施基於J2EE多層應用的文檔和實例套件的體系模型,簡化了這項復雜的工作。它被開發人員用作設計和優化組件,以便開發人員從策略上對開發工作進行分工。

J2EE應用編程模型要求開發者將自己的工作分成兩類:商業邏輯和表示邏輯,其餘則由系統資源自動處理,不必為中間層管道進行編碼。這樣,開發人員就能將更多的時間花在商業邏輯和表示邏輯上。對重視縮短項目周期的公司來說,這種轉變深受歡迎。

J2EE平台

J2EE平台是運行J2EE應用的標准環境,由J2EE部署規范(一套所有J2EE平台產品都必須支持的標准)、IETF標准集和CORBA標准組成。最新的J2EE平台還添加了JavaBean組件模型。開發人員可以利用JavaBean組件模型來自定義Java類實例,並可通過已定義的事件訪問Java類。

J2EE支持EJB,因此開發人員可以執行多用戶交易功能。當在J2EE伺服器上運行時,Enterprise JavaBeans將應用邏輯分成可再利用和可擴展的代碼段。Enterprise JavaBeans並不是新特徵,但是通過定義標准客戶端和服務API,J2EE增強了它的能力和可移植性。

EJB在伺服器的一個容器內運行,提供所有典型的中間層服務,如事務管理、安全、遠程客戶連接、生存周期管理和資料庫連接緩沖。為了讓事務系統在存在EJB容器的情況下運行,開發人員只需在部署描述文件中定義Beans的事務屬性即可。

J2EE通過定義一組標準的結構來實現它的優勢,例如:

1.J2EE Application Programming Model,是一種用於開發多層次、瘦型客戶用戶程序的標准設計模型;

2. J2EE Platform,是一個標準的平台,用來整合J2EE的應用程序,並指定一系列的介面和方法;

3. J2EE Compatibility Test Suite,是一套兼容測試組件,用來檢測產品是否同J2EE平台兼容;

4.J2EE Reference Implementation,用來示範J2EE的能力。

J2EE伺服器

Sun的J2EE伺服器通過Java 命名和目錄介面(JNDI)、認證、HTTP及與Enterprise JavaBeans兼容的能力,提供命名和目錄服務。JNDI是Java平台的一種標准擴展版,向企業內的命名和目錄服務提供具有Java功能的,帶有統一介面的應用,包括LDAP。

J2EE伺服器還利用了Java Servlet技術。Java Servlet可以看作是運行在伺服器上的一個小程序,它向開發人員提供以組件為基礎創建基於Web應用的、獨立於平台的方法。它不像利用CGI那樣具有性能局限。Java Servlet是一種擴展Web伺服器功能的簡單技巧。由於它是用Java編寫的,因而能夠訪問整個Java API庫,也包括用於訪問企業資料庫的JDBC API。

JSP是Java Servlet的一種擴展。Java Servlet提供開發和顯示來自伺服器的互動式Web頁。如今JSP又有了進一步的改進,它使得創建和支持靜態模板和動態內容相結合的HTML和XML頁面更加容易。

安全性

J2EE平台定義了一種標準的公開存取控制規則,當程序在企業平台上開發時就已被程序師定義和解釋了。J2EE也需要提供一個標準的注冊機制,以便應用程序不會將這些注冊機制和邏輯相混合,從而使相同的工作執行於大量的不同環境中時並不需要改變源代碼。例如:J2EE應用程序開發人員可以指定幾個安全級別,當用戶訪問數據時,他們可寫出代碼來檢查當前用戶許可權的級別。在開發階段,開發人員賦予多組用戶適當的安全級,使應用程序在執行限制操作之前能夠容易的判斷限制級。

J2EE 平台是Java技術企業級應用的最佳平台,它可以讓程序員迅速、快捷地開發和分布企業級應應用程序。以下便是它的相關技術:

1.Enterprise JavaBeans Architecture,企業級JavaBeans 定義了一個應用程序介面。它可以使程序員迅速開發、發布和管理跨平台的、基於組件的企業級應用程序。

2.JavaServer Pages,JSP 技術提供了一種簡單、快速的方法來創建動態網頁。通過它,可以快速地開發基於Web的應用程序,並且這些應用程序都是與平台無關的。因為JSP與ASP很相似,所以熟悉ASP的人學習它就很容易了。

3.Java Servlet,提供了應用程序介面。通過它可以簡單快速地開發並擴展伺服器功能。就發展趨勢來看,它將來有可能取代CGI。

4.J2EE Connector,提供了一種標准結構來聯接不同的企業信息平台。

5.Java Naming and Directory Interface(JNDI),在Java 平台與商業信息之間,JNDI提供了統一、無縫的標准化連接。通過使用JNDI,程序員可以在企業多命名與目錄服務之間傳送Java 應用程序。

6.Java Interface Definition Language(JIDL),通過使用CORBA,可以提供協同工作的能力。JIDL包括一個IDL-to-Java 編譯器和支持IIOP(Internet Inter-Orb Protocol)的ORB。

7.JDBC,幾乎是為所有的資料庫提供了統一的介面,同時可以創建高級工具和介面。

8.Java Message Service(JMS),它幾乎規范了所有企業級消息服務,如可靠查詢、發布消息、訂閱雜志等各種各樣的PUSS/PULL技術的應用,並且為它們提供了一個標准介面。

9.Java Transaction API(JTA),為分布式系統中可處理的應用程序規定了一個高級的管理規范。

10.JavaMail,JavaMail應用程序介面提供了一整套模擬郵件系統的抽象類。通過JavaMail,可以創建郵件或消息應用程序。

11.RMI-IIOP,使用它就可以只用Java 技術和Java RMI介面開發客戶機與伺服器的遠程介面。

J2EE使用固定的文件格式捆綁某個模塊:用.ear文件捆綁J2EE應用程序;用.jar捆綁Enterprise Bean。例如,一個.ear文件包含一個.xml文件作為其分布描述,還包含一個或多個.jar和.war文件;一個.jar文件除了包含它的分布描述外,還包含了作為Enterprise bean的.class文件。

J2EE應用程序的開發階段分為四步:1.Enterprise Bean創建;2.Web Component創建;3.J2EE應用程序裝配;4.J2EE應用程序分布。以下是J2EE兼容產品部分列表:

BEA WebLogic Server 6.0、Borland App Server、HP Bluestone Total-e-Server、IBM WebSphere Application Server、IONA iPortal Application Server、iPlanet Application Server、Macromedia JRun Server、Oracle 9i Application Server、SilverStrean Application Server、Sybase EAServer、TogetherSoft ControlCenter、Java 2 SDK Enterprise Edition。

J2ME技術的應用

J2ME(Java 2 Platform Micro Edition)是為無線電子市場所設計的,包括JVM規范和API規范。其API規范是基於J2SE(Java 2 Standard Editon)的。J2ME 定義了一套合適的類庫和虛擬機技術。這些技術可以使用戶、服務提供商和設備製造商通過物理(有線)連接或無線連接,按照需要隨時使用豐富的應用程序。

J2ME又被稱為Java 2 微型版,被使用在各種各樣的消費電子產品上,例如智能卡、手機、PDA、電視機頂盒等方面。當然了,J2ME也提供了Java語言一貫的特性,那就是跨平台和安全網路傳輸。它使用了一系列更小的包,而且Javax.microedition.io 為J2SE包的子集。J2ME可以升級到J2SE和J2EE。

在J2ME出現之前,我們更多接觸到的是Java卡(Java Card)、嵌入式Java(Embedded Java)和實時Java(Real Time Java)等。其中Java卡是針對SIM卡、智能卡等設備而定製的最小Java子集,比J2ME還要小,移植性也不強。嵌入式Java則針對特殊用戶自行配置Java類庫和VM(Virtual Machine,虛擬機)。它對資源需求極小,可運行在無圖形用戶介面和網路的設備上,可以添加用戶專用的API,但是它就無法移植。實時Java是由IBM領導的實時定製Java專家組負責實施的,現在還在不斷完善中。不過,從嚴格意義上來說,它們都不是真正的J2ME。

像其它版本一樣,J2ME具有很多Java技術特性,主要有:

1.可以在各種支持Java的設備上運行;

2.代碼短小;

3.充分利用Java語言的優勢;

4.安全性好;

5.用J2ME實現的應用可以方便地升級到J2SE、J2EE。

J2ME的配置和框架

為了支持用戶和嵌入式市場提出的靈活性和可定製性要求,J2ME被設計得更加模塊化和可縮放化。J2ME在設備原有的操作系統上建造了3層軟體來實現這種要求:

1.JVM層,這層基於宿主操作系統,按照某一種J2ME的配置,實現了JVM。

2.配置層,這層對於用戶可見度要低一些,但對框架層非常重要。它針對「水平」市場的需求,定義了Java虛擬機的最小功能集和Java類庫的最小集合。在某種意義上,配置層定義了開發者在所有設備上都可以使用Java特性和類庫的「最小公分母」。

3.框架層,這層對於用戶和應用程序提供者來說是最常見的。它針對「垂直」市場的需求,定義了Java虛擬

⑶ java web的開發用什麼開發工具

1、JDK (Java Development Kit)Java開發工具集
SUN的Java不僅提了一個豐富的語言和運行環境,而且還提了一個免費的Java開發工具集(JDK)。開發人員和最終用戶可以利用這個工具來開發java程序。
JDK簡單易學,可以通過任何文本編輯器(如:Windows 記事本、UltrEdit、Editplus、FrontPage以及dreamweaver等)編寫Java源文件,然後在DOS狀況下利通過javac命令將Java源程序編譯成位元組碼,通過Java命令來執行編譯後的Java文件,這能帶給DOS時代程序員美好的回憶。Java 初學者一般都採用這種開發工具。
從初學者角度來看,採用JDK開發Java程序能夠很快理解程序中各部分代碼之間的關系,有利於理解Java面向對象的設計思想。JDK的另一個顯著特點是隨著Java (J2EE、J2SE以及J2ME)版本的升級而升級。但它的缺點也是非常明顯的就是從事大規模企業級Java應用開發非常困難,不能進行復雜的Java軟體開發,也不利於團體協同開發。
2、Java Workshop
Sun MicroSystems公司於推出了Java WorkShop 1.0,這是業界出現的第一個供Internet網使用的多平台開發工具,它可以滿足各公司開發Internet和Intranet網應用軟體的需要。Java WorkShop完全用Java語言編寫,是當今市場上銷售的第一個完全的Java開發環境,目前Java WorkShop的最性版本是3.0。Java Workshop的特點表現如下:
1)結構易於創建:在創建平台中立的網格結構方面,Java Workshop比其他任何一種Java開發工具都要方便。
2)可視化編程:Java Workshop的可視化編程特性是很基本的。Java Workshop允許程序員重新安排這些操作,甚至可以確定觸發操作行為的過濾器。Java Workshop產生的模板帶有許多注釋,這對程序員是很有幫助的。
此外,Java WorkShop支持JDK以及JavaBeans組件模型,API和語言特徵增加了編譯Java應用程序的靈活性。 Java WorkShop開發環境由於完全用Java寫成,所以可移植性極好,以致於多個平台都能支持,目前Java WorkShop支持Solaris操作環境SPARC及Intel 版)、Windows95、WindowsNT、以及HP/Ux等平台。適合於初學者進行一些簡單的Java編程。Java WorkShop的缺點是Java Workshop中的每一個可視化對象都遲早會用到網格布局,這種設計方法是許多人不習慣的;Java Workdshop的調色板是較差的,僅僅能滿足絕大部分應用的基本要求。
3、NetBeans 與Sun Java Studio 5
是開放源碼的Java集成開發環境(IDE),適用於各種客戶機和Web應用。Sun Java Studio是Sun公司最新發布的商用全功能Java IDE,支持Solaris、linux和Windows平台,適於創建和部署2層Java Web應用和n層J2EE應用的企業開發人員使用。
NetBeans是業界第一款支持創新型Java開發的開放源碼IDE。開發人員可以利用業界強大的開發工具來構建桌面、Web或移動應用。同時,通過NetBeans和開放的API的模塊化結構,第三方能夠非常輕松地擴展或集成NetBeans平台。
NetBeans主要針對一般Java軟體的開發者,而Java One Studio5則主要針對企業做網路服務等應用的開發者。Sun不久還將推出Project Rave,其目標是幫助企業的開發者進行軟體開發。
NetBeans
etBeans 版本與其他開發工具相比,最大區別在於不僅能夠開發各種台式機上的應用,而且可以用來開發網路服務方面的應用,可以開發基於J2ME的移動設備上的應用等。在NetBeans 3.5.1基礎上,Sun開發出了Java One Studio5,為用戶提供了一個更加先進的企業編程環境。在新的Java One Studio5里有一個應用框架,開發者可以利用這些模塊快速開發自己在網路服務方面的各種應用程序。
4、Borland 的JBuilder
Jbuilder進入了Java集成開發環境的王國,它滿足很多方面的應用,尤其是對於伺服器方以及EJB開發者們來說。下面簡單介紹一下Jbuilder的特點:
1)Jbuilder支持最新的Java技術,包括Applets、JSP/Servlets、JavaBean以及EJB(Enterprise JavaBeans)的應用。
2)用戶可以自動地生成基於後端資料庫表的EJB Java類,Jbuilder同時還簡化了EJB的自動部署功能.此外它還支持CORBA,相應的向導程序有助於用戶全面地管理IDL(分布應用程序所必需的介面定義語言Interface Definition Language)和控制遠程對象。
3)Jbuilder支持各種應用伺服器。Jbuilder與Inprise Application Server緊密集成,同時支持WebLogic Server,支持EJB 1.1和EJB 2.0,可以快速開發J2EE的電子商務應用。
4)Jbuilder能用Servlet和JSP開發和調試動態Web 應用。
5)利用Jbuilder可創建(沒有專有代碼和標記)純Java2應用。由於Jbuilder是用純Java語言編寫的,其代碼不含任何專屬代碼和標記,它支持最新的Java標准。
6)Jbuilder擁有專業化的圖形調試介面,支持遠程調試和多線程調試,調試器支持各種JDK版本,包括J2ME/J2SE/J2EE。
JBuilder環境開發程序方便,它是純的Java 開發環境,適合企業的J2EE開發;缺點是往往一開始人們難於把握整個程序各部分之間的關系,對機器的硬體要求較高,比較吃內存,這時運行速度顯得較慢。
5、Oracle 的JDeveloper
Oracle9i JDeveloper(定為9.0版,最新為10g)為構建具有J2EE功能,XML和Web services的復雜的,多層的Java應用程序提供了一個完全集成的開發環境。它為運用Oracle9i資料庫和應用伺服器的開發人員提供特殊的功能和增強性能,除此以外,它也有資格成為用於多種用途Java開發的一個強大的工具。
Oracle9i JDeveloper的主要特點如下:
① 具有UML(Unified Modeling Language,一體化建模語言)建模功能。可以將業務對象及e-business應用模型化。
② 配備有高速Java調試器(Debuger)、內置Profiling工具、提高代碼質量的工具「CodeCoach」等。
③ 支持SOAP(Simple Object Access Protocol)「簡單對象訪問協議」、UDDI(Universal Description, Discovery and Integration)「統一描述、發現和集成協議」、WSDL(Web Services Description Language)「WEB服務描述語言」等Web服務標准。
JDeveloper 不僅僅是很好的 Java 編程工具,而且是 Oracle Web 服務的延伸,支持 Apache SOAP,以及 9iAS ,可擴充的環境和 XML 和 WSDL 語言緊密相關。Oracle9i Jdeveloper完全利用Java編寫,能夠與以前的Oracle伺服器軟體以及其他廠商支持J2EE的應用伺服器產品相兼容,而且在設計時著重針對Oracle9i,能夠無縫化跨平台之間的應用開發,提供了業界第一個完整的、集成了J2EE和XML的開發環境,允許開發者快速開發可以通過Web、無線設備及語音界面訪問的Web服務和交易應用,以往只能通過將傳統Java編程技巧與最新模塊化方式結合到一個單一集成的開發環境中之後才能完成J2EE應用開發生命周期管理的事實,從根本上得到改變。缺點就是對於初學者來說,較復雜,也比較難。
6、IBM的Visual Age for Java
Visual Age for Java是一個非常成熟的開發工具,它的特性以於IT開發者和業余的Java編程人員來說都是非常用有用的。它提供對可視化編程的廣泛支持,支持利用CICS連接遺傳大型機應用,支持EJB的開發應用,支持與Websphere的集成開發,方便的bean創建和良好的快速應用開發(RAD)支持和無文件式的文件處理。
IBM為建設Web站點所推出的WebSphere Studio Advanced Edition及其包含的VisualAge for Java Professional Edition軟體已全面轉向以Java為中心,這樣,Java開發人員對WebSphere全套工具的感覺或許會好了許多。Studio所提供的工具有:Web站點管理、快速開發 JDBC頁向導程序、HTML編輯器和HTML語法檢查等。這確實是個不錯的HTML站點頁面編輯環境。Studio和VisualAge集成度很高,菜單中提供了在兩種軟體包之間快速移動代碼的選項。這就讓使用Studio的Web頁面設計人員和使用VisualAge的Java程序員可以相互交換文件、協同工作。
Visual Age for Java支持團隊開發,內置的代碼庫可以自動地根據用戶做出改動而修改程序代碼,這樣就可以很方便地將目前代碼和早期版本做出比較。與Visual Age緊密結合的Websphere Studio本身並不提供源代碼和版本管理的支持,它只是包含了一個內置文件鎖定系統,當編輯項目的時候可以防止其他人對這些文件的錯誤修改,軟體還支持諸如Microsoft Visual SourceSafe這樣的第三方源代碼控制系統。Visual Age for Java完全面向對象的程序設計思想使得開發程序非常快速、高效。你可以不編寫任何代碼就可以設計出一個典型的應用程序框架。Visual Age for Java作為IBM電子商務解決方案其中產品之一,可以無縫地與其他IBM產品,如WebSphere、DB2融合, 迅速完成從設計、開發到部署應用的整個過程。
Visual Age for Java獨特的管理文件方式使其集成外部工具非常困難,你無法讓Visual Age for Java與其他工具一起聯合開發應用。
7、BEA 的 WebLogic Workshop
BEA WebLogic Workshop是一個統一、簡化、可擴展的開發環境,使所有的開發人員都能在 BEA WebLogic Enterprise Platform之上構建基於標準的企業級應用,從而提高了開發部門的生產力水平,加快了價值的實現。
WebLogic Workshop除了提供便捷的Web服務之外,它能夠用於創建更多種類的應用。作為整個BEA WebLogic Platform的開發環境。不管是創建門戶應用、編寫工作流、還是創建Web應用,Workshop 8.1都可以幫助開發人員更快更好地完成。

⑷ Oracle 9i中如何查看事物,如何查看會話,如果回答的話請按順序,先回答事物在回答會話,謝謝

TPC-C學習筆記

摘錄:本文章來自:

TPC-C學習筆記
2�TPCC基準測試
TPCC值被廣泛用於衡量C/S環境下,由伺服器和客戶端構築的整體系統的性能,它由事物處理性能委員會(TPC,Transaction Processing Corp)制定,TPC為非贏利性國際組織。

TPCC值可以反映出系統的性能價格比。TPCC測試系統每分鍾處理的任務數,單位為tpm,(transactions per minute)。系統的總體價格(單位為美元)除以TPCC值,就可以衡量出系統的性價比,系統的性價比值越小,系統的性價比越好。

需要注意的是,TPC-C值描述的是C/S整體系統的性能,它與系統的伺服器和客戶機的性能都有關系,也就是說,同樣的伺服器配置不同的客戶端將會影響TPCC值,任何廠商和測試者都可以根據TPC提供的測試規范構造出自己最優的系統,當然測試的結果要經過TPC審核。

---------------------------------------------------------------------------------------------------------------
性能測試指標介紹
TPC-C
作為一家非盈利性機構,事務處理性能委員會(TPC)負責定義諸如TPC-C、TPC-H和TPC-W基準測試之類的事務處理與資料庫性能基準測試,並依據這些基準測試項目發布客觀性能數據。TPC基準測試採用極為嚴格的運行環境,並且必須在獨立審計機構監督下進行。委員會成員包括大多數主要資料庫產品廠商以及伺服器硬體系統供應商。

相關企業參與TPC基準測試以期在規定運行環境中獲得客觀性能驗證,並通過應用測試過程中所使用的技術開發出更加強健且更具伸縮性的軟體產品及硬體設備。

TPC-C是一種旨在衡量聯機事務處理(OLTP)系統性能與可伸縮性的行業標准基準測試項目。這種基準測試項目將對包括查詢、更新及隊列式小批量事務在內的廣泛資料庫功能進行測試。許多IT專業人員將TPC-C視為衡量「真實」OLTP系統性能的有效指示器。

TPC-C基準測試針對一種模擬訂單錄入與銷售環境測量每分鍾商業事務(tpmC)吞吐量。特別值得一提的是,它將專門測量系統在同時執行其它四種事務類型(如支付、訂單狀態更新、交付及證券級變更)時每分鍾所生成的新增訂單事務數量。獨立審計機構將負責對基準測試結果進行公證,同時,TPC將出據一份全面徹底的測試報告。這份測試報告可以從TPC Web站點()上獲得。

tpmC定義: TPC-C的吞吐量,按有效TPC-C配置期間每分鍾處理的平均交易次數測量,至少要運行12分鍾。

1.TPC-C規范概要
TPC-C是專門針對聯機交易處理系統(OLTP系統)的,一般情況下我們也把這類系統稱為業務處理系統。

TPC-C測試規范中模擬了一個比較復雜並具有代表意義的OLTP應用環境:假設有一個大型商品批發商,它擁有若干個分布在不同區域的商品庫;每個倉庫負責為10個銷售點供貨;每個銷售點為3000個客戶提供服務;每個客戶平均一個訂單有10項產品;所有訂單中約1%的產品在其直接所屬的倉庫中沒有存貨,需要由其他區域的倉庫來供貨。
該系統需要處理的交易為以下幾種:
New-Order:客戶輸入一筆新的訂貨交易;
Payment:更新客戶賬戶余額以反映其支付狀況;
Delivery:發貨(模擬批處理交易);
Order-Status:查詢客戶最近交易的狀態;
Stock-Level:查詢倉庫庫存狀況,以便能夠及時補貨。
對於前四種類型的交易,要求響應時間在5秒以內;對於庫存狀況查詢交易,要求響應時間在20秒以內。
邏輯結構圖:
流程圖:
2.評測指標
TPC-C測試規范經過兩年的研製,於1992年7月發布。幾乎所有在OLTP市場提供軟硬體平台的廠商都發布了相應的TPC-C測試結果,隨著計算機技術的不斷發展,這些測試結果也在不斷刷新。
TPC-C的測試結果主要有兩個指標:
● 流量指標(Throughput,簡稱tpmC)
按照TPC的定義,流量指標描述了系統在執行Payment、Order-status、Delivery、Stock-Level這四種交易的同時,每分鍾可以處理多少個New-Order交易。所有交易的響應時間必須滿足TPC-C測試規范的要求。
流量指標值越大越好!
● 性價比(Price/Performance,簡稱Price/tpmC)
即測試系統價格(指在美國的報價)與流量指標的比值。
性價比越小越好!

---------------------------------------------------------------------------------------------------------------

[Oracle] How to Use Open Source Tools to Implement Your Own TPC-C
作者:Fenng
日期:Mar 14 2004 (v0.13)
出處:
版本:0.93

--------------------------------------------------------------------------------

本文簡介
介紹如何利用開源工具實現Oracle資料庫環境中的TPC-C.對DBA、開發人員、BI實施者有一定的參考價值.

引言描述
設想一下這樣一種情況:
您正在負責公司的一個OLTP類型的資料庫項目,面臨資料庫伺服器選型的問題:如何選擇硬體才能滿足產品環境的業務要求? 這個事情是「拍腦袋」 能決定的嗎?
不可否認,硬體選型是一門藝術,選擇合適的硬體,能給公司節省大筆的費用,選擇不能滿足業務需求的伺服器產品,不但花了冤枉錢,還會對將來的業務產生影響。
可能大家首先會想到參考伺服器的TPC-C的信息。提到TPC-C,可能很多人對此都感到既熟悉又陌生,因為經常聽人說起,但是具體的問下去,能說清楚的又沒有多少人,而且,從大家口中得到的還不盡相同。那麼什麼是TPC/TPC-C這些都代表什麼意思呢?

先說一下TPC-C,TPC-C是聯機事務處理(on-line transaction processing , OLTP)的基準程序。TPC-C模擬一個批發商的貨物管理環境。TPC-C使用三種性能和價格度量,其中性能由TPC-C吞吐率衡量,單位是tpmC。tpm是transactions per minute的簡稱;C指TPC中的C基準程序。它的定義是每分鍾內系統處理的新訂單個數。

了解了這些內容,您可能會想:我們公司的PC伺服器完全是自己攢出來的,如何進行TPC-C的衡量的?也去參考TPC官方站點上的信息?不要忘了,TPC.org 上公布的測試結果都是各大廠商根據自己的系統進行了充分優化之後的出來的結果。打個比方,TPC公布的數值就好比嶄新的法拉利跑車經過專業技師們的精心檢查保養,然後在專用跑道上跑出來的速度值,而我們的情況可能是法拉利(甚至是夏利)要在鄉村土路上行駛,可比性大打折扣。
有的朋友會想:那我們可以根據自己的情況,拿一個秒錶在「鄉村土路」上測試一下看看呀。這樣的意義也是顯而易見的,對我們的實際的環境不是更具有參考價值?不錯,這也正是本文的目的:讓我們利用開源(Open Source)工具來實現自己的針對Oracle資料庫的TPC-C。

Hammerora—the Open Source Oracle Load Test Tool
首先介紹一下Hammerora。從創作者對這個工具的標題描述可以看出,Hammerora是一款Oracle資料庫負載測試工具。該工具可以在Oracle 8i、9i和10g等版本上使用。當前可以用在Linux/Unix和Windows上。初步實現了跨平台。Hammerora 完全用TCL/TK寫就,以GPL版權形式發布。

作者是Steve Shaw。該項目的主頁在: 。

Hammerora的設計原理是解析Oracle的Trace文件,並把它們轉化為Oratcl程序,然後在Oracle資料庫中用多個用戶並發的對用戶的事務進行「回放」。我們知道,Oracle的Trace文件能夠翔實的記錄用戶對資料庫的操作。這樣Hammerora能夠保證對用戶環境的真實模擬。
Hammerora最初是用以學習的目的:期望是模擬資料庫的一定數量的用戶。這樣一個小的基於家庭的學習開發系統就能夠比較接近產品環境。這個工具已經成長為一個Oracle資料庫做壓力測試--從小的資料庫到大的基於RAC的集群。

TCL語言已經用來提供高性能的和Oracle資料庫的OCI集成,而無需重新編譯生成的程序。每個生成的程序具有嚴格的TCL/Oratcl兼容性,並且可以在Hammerora的命令行Shell下運行。TCL的強大功能和靈活性意味著潛在的功能是無窮盡的。TCL線程包用來實現對Oracle資料庫的多個並發連接。

Hammerora包含Oracle存儲過程和TCL驅動腳本用來運行TPC-C基準程序。但是,我們先要構建一個同TPC-C規范相符的資料庫。這樣,我們需要用到Orabm。

Orabm
Orabm是Geoff Ingram (High-Performance Oracle: Proven Methods for Achieving Optimum Performance and Availability一書的作者)構建的一個程序包,包含了一套sql腳本和幾個命令行程序。Orabm數據裝載程序(Orabmload)構建了一組遵從TPC-C標準的數據用以測試。Orabm的程序包和源代碼可以從它的主頁面( ) 得到。

Orabm的運行機制
Orabm的運行機制在Geoff Ingram有明確的說明,這里翻譯如下:Orabm通過在每個用戶指定的並發資料庫會話(session) 中運行用戶執行數量的資料庫事務來進行工作.事務通過ORABM模式下的ORABM_SERVERSIDE_STRESS存儲過程運行。對每個並發會話來說,ORABM_SERVERSIDE_STRESS運行在orabm命令行下指定的事務數,並返回該會話在采樣間隔完成時的TPS值.要確保所有並發會話都是在采樣間隔期間處理事務,TPS值僅包括事務的中間的80%,也即:初始的10%和最後的 10%將忽略掉。
更詳細信息可以參考 的內容.
安裝步驟
1) 安裝Oracle OCI 庫
對Oracle 9i 來說,如果沒有安裝該組件的話,可能要重新運行runInstall,在Oracle 9i Client procts樹中選擇"Oracle Call Interfaces" .
對Oracle 10g來說,Oracle 10 OCI 庫應該是默認安裝的.
2) 安裝TCL
cd /usr/local/src/tcl8.4.5/unix

rm -f config.cache

./configure --enable-threads --enable-shared

make clean

make

make install
3 安裝TK
cd /usr/local/src/tk8.4.5/unix

rm -f config.cache

./configure --with-tcl=../../tcl8.4.5/unix --enable-threads --enable-shared

make clean

make

make install
4 安裝TCL Threads
cd /usr/local/src/thread2.5.2/unix

rm -f config.cache

sh ../configure --enable-threads --enable-shared

make clean

make

make install
5 安裝Oratcl
對10g來說,要編輯配置文件,在1728 行附近, FOUND_ORACLE=0 那一行的下面添加如下部分內容:
echo "checking for Oracle 10.0 style toplevel (libclient10.a)" 1> &6
echo "configure:1730: checking for Oracle 10 style toplevel(libclient10.a)"> &5
for f in $oracle_directory $oratest1 $oratest2 $oratest3 \
$oracle4 /opt/oracle /u/oracle /usr/oracle /usr/local/oracle ; do
echo "$ac_t""looking for lib/libclient10.a in $f" 1>&6
if test -r "$f/lib/libclient10.a" ; then
ORA="$f/lib"
ORACLE_HOME=$f
echo "$ac_t""setting ORA to $ORA" 1>&6
testver=10
ORA_MAJOR_VERSION=10
ORA_MINOR_VERSION=0
FOUND_ORACLE=1
break
fi
done

export ORACLE_HOME=your_oracle_home_directory
cd /usr/local/src/oratcl-4-1-branch/unix
rm -f config.cache
sh ../configure --with-tcl=../../tcl8.4.5/unix \
--with-oracle-directory=$ORACLE_HOME --with-oracle-version=9 ( or 10 or 8! ) \
--enable-threads --enable-shared
vi Makefile - 把所有的 -rpath 改做 -Wl,-rpath,
make clean

make

make install

sqlplus orabm/orabm @delivery_sp.sql
sqlplus orabm/orabm @new_order_sp.sql
sqlplus orabm/orabm @ostat_sp.sql
sqlplus orabm/orabm @payment_sp.sql
sqlplus orabm/orabm @slev_sp.sql

步驟 操作 命令
1 創建 ORABM用戶(用TOOLS做默認表空間,
TEMP 表空間為臨時表空間) sqlplus system/pwd @orabm_user
2 創建表 sqlplus system/pwd @orabm_tab
3 裝載數據 $orabmload Warehouses 1
4 創建索引 sqlplus system/pwd @orabm_ind
5 分析表和索引 sqlplus system/pwd @orabm_analyze
6 創建壓力測試PL/SQL 過程 sqlplus system/pwd @orabm_serverside_stress
7 把表和索引數據緩沖到SGA sqlplus system/pwd @orabm_cache

把tpc-c.tcl腳本載入Hammerora中(要查看TCL文件注意把過濾正確的文件擴展名:不是*.trc 而是*.tcl ),在該tpc-c.tcl中查找connect字元串,調整為你的資料庫用戶連接信息。並調整虛擬用戶信息。
測試運行
運行Hammerora,創建需要的用戶數, 來模擬TPC-C 基準程序(注意調整好執行Hammerora程序的環境變數,最好直接用Oracle用戶來執行).

TPC基準程序及tpmc值
—兼談在使用性能度量時如何避免誤區

今天的用戶在選用平台時面對的是一個繽紛繁雜的世界。用戶希望有一種度量標准,能夠量化計算機系統的性能,以此作為選型的依據。作者曾在美國從事過數年計算機性能評價工作,深深體會到,計算機的性能很難用一兩種度量來 評價,而且,任何度量都有其優缺點,尤其是當使用者對性能度量了解不深時,很容易被引入一些誤區,甚至推演出錯誤的結論。本文以TPC基準程序為例,給出一 些實際建議,以幫助用戶避免進入這些誤區。

一、什麼是TPC和tpmC?

tpmC值在國內外被廣 泛用於衡量計算機系統的事務處理能力。但究竟什麼是tpmC值呢?作者曾向一些 用戶、推銷人員乃至某些國外大公司的技術人員問過這個問題,但回答的精確度 與tpmC值的流行程度遠非相稱。tpmC這一度量也常被誤寫為TPM或TPMC。

1、TPC

TPC(Transaction Processing Performance Council,事務處理性能委員會)是由數10家會員公司創建的非盈利組織,總部設在美國。該組織對全世界開放,但迄今為止,絕大多數會員都是美、 日、西歐的大公司。TPC的成員主要是計算機軟硬體廠家,而非計算機用戶,它的功 能是制定商務應用基準程序(Benchmark)的標准規范、性能和價格度量,並管理測 試結果的發布。

TPC的出版物是開放 的,可以通過網路獲取()。TPC不給出基準程序的代碼,而只 給出基準程序的標准規范(Standard Specification)。任何廠家或其它測試者都可以根據規范,最優地構造出自己的系統(測試平台和測試程序)。為保證測試結果的客觀性,被測試者(通常是廠家)必須提交給TPC一套完整的報告(Full Disclosure Report),包括被測系統的詳細配置、分類價格和包含五年維護費用在內的總價 格。該報告必須由TPC授權的審核員核實(TPC本身並不做審計)。現在全球只有幾個審核員,全部在美國。

2、tpmC

TPC已經推出了四套基準程序,被稱為TPC-A、TPC-B、TPC-C和TPC-D。其中A和B已經過時,不再使用了。TPC-C是在線事務處理(OLTP)的基準程序,TPC-D是決策支持(Decision Support) 的基準程序。TPC即將推TPC-E,作為大型企業(Enterprise)信息服務的基準程序。

TPC-C模擬一個批發 商的貨物管理環境。該批發公司有N個倉庫,每個倉庫供應10個地區,其中每個地 區為3000名顧客服務。在每個倉庫中有10個終端,每一個終端用於一個地區。在運 行時,10×N個終端操作員向公司的資料庫發出5類請求。由於一個倉庫中不可能 存儲公司所有的貨物,有一些請求必須發往其它倉庫,因此,資料庫在邏輯上是 分布的。N是一個可變參數,測試者可以隨意改變N,以獲得最佳測試效果。

TPC-C使用三種性能 和價格度量,其中性能由TPC-C吞吐率衡量,單位是tpmC。tpm是transactions per minute的簡稱;C指TPC中的C基準程序。它的定義是每分鍾內系統處理的新訂單個數。要注意的是,在處理新訂單的同時,系統還要按表1的要求處理其它4類事務 請求。從表1可以看出,新訂單請求不可能超出全部事務請求的45%,因此,當一個 系統的性能為1000tpmC時,它每分鍾實際處理的請求數是2000多個。價格是指系 統的總價格,單位是美元,而價格性能比則定義為總價格÷性能,單位是$/tpmC。

二、如何衡量計算機系統的性能和價格

在系統選型時,我們一定不要忘記我們是為特定用戶環境中的特定應用選擇系統。切忌為了「與國際接 軌」而盲目套用「國際通用」的東西。在性能評價領域,越是通用的度量常常越是不準確的。據我所知,美國的一些大用戶從不相信任何「國際通用」的度量,而是花相當精力,比如預算的5%,使用自己的應用來測試系統,決定選型。在使用任何一種性能和價格度量時,一定要弄明白該度量的定義,以及它是在什麼系統配置和運行環境下得到的,如何解釋它的意義等。下面我們由好到差討論三種方式。

1、在真實環境中運行 實際應用

最理想的方式是搞一個試點,要求製造商或系統集成商配合將系統(含平台、軟體和操作流程)在一個 實際用戶點真正試運行一段時間。這樣,用戶不僅能看到實際性能,也能觀察到系統是否穩定可靠、使用是否方便、服務是否周到、配置是否足夠、全部價格是否合理。如果一個部門需要購買一批同類的系統,這種方式應列為首選,因為它不僅最精確、穩妥,也常常最有效率,用戶還可先租一套系統作為試點。用這種方式得到的度量值常常具有很明確和實際的含義。

2、使用用戶定義的基準程序

如果由於某種原因第一種方式不可行,用戶可以定義一組含有自己實際應用環境特徵的應用基準程序。 我舉兩個例子:近年來,由於R/3軟體是應用層軟體,SAP公司的基準程序獲得了越來越多國外企業的認可;中國稅務總局最近也開發了自己的基準程序,以幫助稅務系統進行計算機選型。這種方式在中國尤其重要,因為中國的信息系統有其特殊性。

3、使用通用基準程序

如果第1種和第2種方式都不行,則使用如TPC-C之類的通用基準程序,這是不得已的一種近似方法。因 此,tpmC值只能用作參考。我們應當注意以下幾點:

(1)實際應用是否與基準程序相符

絕大多數基準程序都是在美國制訂的,而中國的企事業單位與美國的運作方式常常不一樣(恐怕也不應該或不可能一樣)。在使用TPC-C時,我們應該清楚地知道:我的應用是否符合批發商模式?事務請求是否與表1近似?對響應時間的要求是否滿足表1?如果都不是,則tpmC值的參考價值就不太大了。

(2)TPC度量的解釋

TPC基準程序是用來測系統而不是測主機的,廠家肯定要充分優化他們的被測系統。此處的「系統」包括主機、外設(如硬碟或RAID)、主機端操作系統、資料庫軟體、客戶端計算機及其 操作系統、資料庫軟體和網路連接等。在很多廠家的TPC測試系統中,主機的價格只是系統總價格的1/4或更小,而硬碟的價格有可能佔到總價格的1/3以上,因為TPC-C要求被測系統必須保存180天的事務記錄。如果同樣的主機被用到用戶的環境中,廠家報的tpmC值就意義不大,因為用戶的實際系統與廠家原來用於TPC測試的系統大不一樣。當同樣的主機用在不同的系統中時,tpmC值可能有相當大的變化,現在很多用戶還沒有意識到這一點。

我舉一個例子。假設用 戶希望購買一批同類系統,每一系統至少需要1GB的內存和50GB的硬碟。廠家A、B、C 各報了三個價格相當的系統,tpmC值分別為3000、2800、2600。用戶是否應該選廠 家A的產品呢?答案是:不一定。廠家用於測試tpmC值的系統與實際提供給用戶的系統配置大不一樣。tpmC最低的廠家C提供給用戶的系統反而有可能性能最好,不 論是以實際系統的tpmC值還是以用戶的實際應用性能來衡量。

(3)TPC測試的成本

TPC-C和TPC-D都是很復雜的基準程序,做一個嚴格的測試是很消耗資源的,廠家當然不會說出他們花費了多少錢和時間。但據國外知情人士透露,一個廠家做第一個TPC-C測試需 要幾十萬到上百萬美元的資金和半年左右的時間投入。因此,很多TPC的度量值都 是估計的。由於計算機系統換代頻繁,如果用戶一定要用通過審核的度量值,就必 須多等待半年時間,因此而不能用最先進的系統。中國的廠家通過審核的時間則 更長。

綜上所述,我們對中國 用戶(尤其是大用戶)在計算機系統的選型方面有如下建議:

最好建立一個真實的試點,因為實際應用環境是檢驗計算機系統的最好標准。

中國的行業應該建立符合自己實際應用的基準程序和測試標准。中國稅務總局的做法值得提倡。國家有關部門應該建立獨立的測試中心,制定跨行業、符合中國企事業運作模式的性能測試標准。

「國際通用」的度量可以作為參考值,而不應作為必要條件。尤其是一定要弄清這些流行度量有什麼含義,是在什麼樣的系統環境中測得的,以及基準程序是否符合企業真實的業務流程和運作模式。

Trackback:

如果對您有幫助,請記得採納為滿意答案,謝謝!祝您生活愉快!

⑸ 開發linux的人免費把源碼開放給全世界嗎

Linux是使用GPL授權的,也就是公開源代碼,任何人可以免費使用,也可以分發、修改、甚至出售賣錢。GPL只有一個限制,就是如果你的產品包含Linux或者是其衍生物,比如修改過代碼,你的產品也必須公開源代碼。只是使用,基本沒有任何限制。

Linux內核最初是一個叫Linus Torvalds的人開發的,現在全世界有很多人都貢獻過源代碼,有義務的也有拿薪水的。基本上最新的開發分支上Linus現在仍然是主要維護者和最後拍板的人。老的內核維護由其他人在做。

⑹ 求apache-tomcat-6.0.20 oracle 9i 和10G 連接池配置。謝絕復制粘貼,步驟詳細點。

TomCat6.0資料庫連接池配置實例(Oracle 10g資料庫)
關鍵字: 資料庫連接池
TomCat6.0資料庫連接池配置有幾種方式,在這里我介紹一種常用的方法供大家參考:
配置過程分成三個步驟來完成:
第一步:在TomCat6.0的目錄下找到context.xml配置文件。(例如:C:\apache-tomcat-6.0.14\conf\context.xml)然後打開context.xml,在標簽<context></<context>之間加入如下內容:(為了容易理解,我對配置做了較詳細的注釋)
<Resource
name="jdbc/oracleds" <!--數據源名稱,最好起一個有意義的名稱-->
auth="Container" <!--這個默認無需修改-->
type="javax.sql.DataSource" <!--這個默認無需修改-->
driverClassName="oracle.jdbc.OracleDriver" <!--這里用到的是oracle資料庫的驅動包。-->
url="jdbc:oracle:thin:@localhost:1521:zygora" <!--這里是連接到oracle資料庫的url,其中url="jdbc:oracle:thin:@"是固定的,如果訪問oracle資料庫不在本機上應該將localhost改為oracle資料庫所在機子的IP地址,zygora是我的oracle資料庫的SID。 -->
username="orademo" <!--登陸資料庫的用戶名 -->
password="orademo" <!--登陸資料庫的密碼 -->
maxIdle="5" <!--這個默認無需修改-->
maxWait="5000" <!--這個默認無需修改-->
maxActive="10"/> <!--這個默認無需修改-->

第二步:下載oracle驅動包ojdbc6.jar,拷貝到TomCat6.0目錄下的lib目錄里。(例如:C:\apache-tomcat-6.0.14\lib)ojdbc6.jar的oracle官方網址我這里一直打不開,CSDN里有該jar包的下載。

第三步:程序中需要資料庫連接的地方,只需要編寫如下代碼:
import javax.sql.DataSource;
import javax.naming.*;
public class GetConnectionTest
{
public static void main(String[] args)
{
try {
Context ctx = new InitialContext();
DataSource ds = (DataSource)context.lookup("java:/comp/env/jdbc/oracleds");
/*
DataSource ds = (DataSource)context.lookup("java:comp/env/jdbc/oracleds");
*/
Connection conn = ds.getConnection();
} catch (Exception e) {
e.printStackTrace();
}
}
}

⑺ 求一個c++小程序源代碼,要求200行以上,給100分,能用再加100

//=================================[說明]=======================================*/
//學生成績管理
//文件名:main.cpp
//------!!!!!!---------BOF-[程序代碼開始]-------------------

#include<iostream>
#include<string>
using namespace std;
//=============<開始定義結構體>===================================================
struct combox
{

int num;
int mark;
string name;
combox *next;

};
//=============<結束定義結構體>===================================================

//=============<開始定義Commonbox類>==============================================

//-----類體開始------------------------
class Commonbox
{

private:
combox *head;
void Swap(combox *,combox *); //交換兩個combox變數的數據域
void Print(combox *); //輸出一combox指定的記錄
combox *Find(int); //查找條例條件的記錄,並返回該記錄的指針

public:
Commonbox()
{
head=NULL;
}
int ListCount(); //統計當前鏈表的記錄總數,返回一個整數
void AddItem(int num, string name, int mark); //添加一條記錄到表尾
void RemoveItem(int); //刪除一條指定的記錄
void List(); //列出當前鏈表中的所有記錄
void Sort(); //對當前鏈表進行排序
void Search(int); //在當前鏈表查找指定記錄並輸出
float Average(); //計算平均成績
};
//-----類體結束------------------------

//-----類成員函數開始----------------------------------
int Commonbox::ListCount() //統計當前鏈表的記錄總數,返回一個整數
{

if (! head)return 0;
combox *p=head;
int n=0;
while (p)
{
n++;
p=p->next;
}
return n;

}

void Commonbox::AddItem(int num, string name, int mark) //添加一條記錄到表尾
{

if (! head)
{
head=new combox;
head->mark=mark;
head->num=num;
head->name=name;
head->next=NULL;
return;
}

combox *t=head;
while (t && t->num!=num)
t=t->next;

if (t)
{
cout<<"操作失敗:學號為"<<num<<"的記錄已經存在!"<<endl;
return;
}

combox *p=head;
while (p->next)p=p->next;
combox *p1=new combox;
p1->num=num;
p1->mark=mark;
p1->name=name;
p1->next=NULL;
p->next=p1;

return;
}

void Commonbox::RemoveItem(int num) //刪除一條指定的記錄
{

combox *t=Find(num);
if (! t)return;

combox *p=head;

//如果要刪除的記錄位於表頭
if (head==t)
{
head=head->next;
delete p;
cout <<"成功刪除學號為 "<<num<<" 的記錄!"<<endl<<endl;
return;
}

while (p->next!=t)p=p->next;
combox *p1=p->next;
p->next=p1->next;
delete p1;
cout <<"成功刪除學號為 "<<num<<" 的記錄!"<<endl<<endl;

return;
}

void Commonbox::Print(combox *p) //輸出一combox指定的記錄
{

cout<<p->num<<"\t\t";
cout<<p->name<<"\t\t";
cout<<p->mark<<endl;

return;
}

void Commonbox::List() //列出當前鏈表中的所有記錄
{

if (ListCount()==0)
{
cout <<"錯誤:當前的列表為空!"<<endl;
return;
}

combox *p=head;
cout<<"共有記錄:"<<ListCount()<<endl;
cout<<"學號\t\t姓名\t\t分數"<<endl;
while (p)
{
Print(p);
p=p->next;
}
cout <<endl;
return;
}

void Commonbox::Search(int num) //在當前鏈表查找指定記錄並輸出
{

cout <<"Searching...."<<endl;

combox *p=Find(num);
if (p)
{
cout<<"學號\t\t姓名\t\t分數"<<endl;
Print(p);
}
cout <<endl;
}

combox *Commonbox::Find(int num)
{

if (ListCount()==0)
{
cout <<"錯誤:當前的列表為空!"<<endl;
return NULL;
}

combox *p=head;
while (p)
{
if (p->num==num)break;
p=p->next;
}

if (! p)
{
cout <<"錯誤:找不到該記錄!\n";
return NULL;
}

return p;
}

void Commonbox::Swap(combox *p1, combox *p2) //交換兩個combox變數的數據域
{

combox *temp=new combox;
temp->num=p1->num;
temp->mark=p1->mark;
temp->name=p1->name;

p1->num=p2->num;
p1->mark=p2->mark;
p1->name=p2->name;

p2->num=temp->num;
p2->mark=temp->mark;
p2->name=temp->name;

}

void Commonbox::Sort() //對當前鏈表進行排序
{
cout <<"Sorting..."<<endl;
if (ListCount()<2) return;

combox *temp=NULL,*p=NULL,*p1=NULL,*p2=NULL,*k=NULL;
int n=ListCount(),i,j;

p=head;
for (i=1;i<n;i++)
{
k=p;
p1=p->next;
for (j=0;j<n-i;j++)
{
if (k->num > p1->num)
{
k=p1;
}
p1=p1->next;
}
if (p!=k)Swap(k,p);
p=p->next;
}
cout <<"Complete successfully!"<<endl<<endl;
return;
}

float Commonbox::Average() //計算平均成績
{

if (ListCount()==0)
{
cout <<"錯誤:當前的列表為空!"<<endl;
return -1;
}
int sum=0,n=0;
combox *p=head;
while (p)
{
sum += p->mark;
p=p->next;
n++;
}
return float(sum)/n;
}
//-----類成員函數結束----------------------------------

//=============<結束定義Commonbox類>==============================================

Commonbox student; //定義全局變數

int Menu()
{
cout <<"===========[主選單:]==========="<<endl;
int n=1,select=-1;
cout <<n++<<".輸入學生成績;"<<endl<<endl;
cout <<n++<<".按學號排序;"<<endl<<endl;
cout <<n++<<".按學號查找記錄;"<<endl<<endl;
cout <<n++<<".刪除由學號指定的記錄;"<<endl<<endl;
cout <<n++<<".列出所有記錄;"<<endl<<endl;
cout <<n++<<".計算平均成績;"<<endl<<endl;
cout <<"0.退出;"<<endl<<endl;

cout <<"[請選擇(輸入相應數字)]:";
cin >>select;
return select;
}

char Exit() //返回一個字元患,用於確認退出
{
char s;
cout<<"確定要退出程序嗎?[Y/N]:";
cin >>s;
return s;
}

void Input(int *num, string *name, int *mark) //輸入學生信息
{

cout <<"請輸入 學號 姓名 分數:";
cin >>*num;
if (*num==-1)return;
cin >>*name>>*mark;

return;
}

void AddNew() //增加記錄
{

int num=0,mark=0;
string name="";

cout<<endl<<"當輸入的學號為-1時表示結束輸入."<<endl;
Input(&num, &name, &mark);
while (num!=-1)
{
student.AddItem(num,name,mark);
Input(&num, &name, &mark);
}
return;
}

void DoFind() //按學號查找
{

int num;
cout<<endl<<"當輸入的學號為-1時表示結束輸入."<<endl;
do
{
cout <<"請輸入要查找的學生的學號: ";
cin>>num;
if (num==-1)continue;
student.Search(num);
}
while (num!=-1);

return;
}

void DoDelete() //刪除記錄
{

cout<<endl<<"當輸入的學號為-1時表示結束輸入."<<endl;
int num;
do
{
cout <<"請輸入要刪除的學生的學號:";
cin>>num;
if (num==-1)continue;
student.RemoveItem(num);
}
while (num!=-1);
return;
}

void ShowAverage() //輸出平均數
{

float avr=student.Average();
if (avr>0)
{
cout<<"共有記錄:\t"<<student.ListCount()<<endl<<endl;
cout<<"平均成績:\t"<<avr<<endl<<endl;
}
return;
}
//-------******<主函數開始>******-------

int main()
{

cout<<"Welcome!\n學生成績管理系統\nVer 1.01\nBy FondBoy\n\n";

int select;
char s;

while (1)
{
select=Menu();
switch (select)
{
case 0: //退出程序
s=Exit();
if (s=='y' || s=='Y')return 0;
break;

case 1: //輸入學生成績
AddNew();
break;

case 2: //按學號排序
student.Sort();
break;

case 3: //按學號查找記錄
DoFind();
break;

case 4: //刪除由學號指定的記錄
DoDelete();
break;

case 5: //列出所有記錄
student.List();
break;

case 6: //輸出平均成績
ShowAverage();
break;

default:
cout<<"無效輸入!"<<endl;
}
}

return 0;
}
//-------******<主函數結束>******-------
//------!!!!!!---------EOF-[程序代碼結束]-------------------

⑻ oracle form 9i 是個什麼東西

是新版oracle developer的其中一個工具,是基於表單開發的工具,它的上一代是form 6i,i是基於Internet的意思。
form的源代碼後綴是fmb,編譯後的文件後綴為fmx
使用form編碼的程序有c/s和b/s兩種模式,而9i只有b/s模式,完全符合了潮流。
9i是針對 oracle Application R12開發的,6i是針對oracle Application 11i以前的epr產品。

⑼ Java程序開發步驟是什麼

具體操作步驟如下:

第一步:安裝JDK。

要下載Oracle公司的JDK可以網路「JDK」進入Oracle公司的JDK下載頁面,選擇自己電腦系統的對應版本即可。

第二步:配置Windows上JDK的變數環境 。

JAVA_HOME

先設置這個系統變數名稱,變數值為JDK在電腦上的安裝路徑:C:Program FilesJavajdk1.8.0_20。創建好後則可以利用%JAVA_HOME%作為JDK安裝目錄的統一引用路徑。

Path

PATH屬性已存在,可直接編輯,在原來變數後追加:;%JAVA_HOME%in;%JAVA_HOME%jrein 。

CLASSPATH

設置系統變數名為:CLASSPATH 變數值為:.;%JAVA_HOME%libdt.jar;%JAVA_HOME%lib ools.jar 。

注意變數值字元串前面有一個"."表示當前目錄,設置CLASSPATH的目的,在於告訴Java執行環境,在哪些目錄下可以找到所要執行的Java程序所需要的類或者包。

第三步: 下載安裝Eclipse(已上傳附件,電腦打開可下載)。

Eclipse為Java應用程序及Android開發的IDE(集成開發環境)。Eclipse不需要安裝,下載後把解壓包解壓後,剪切eclipse文件夾到你想安裝的地方,打開時設置工作目錄即可。

第四步:下載安裝Android SDK 。

配置了JDK變數環境,安裝好了Eclipse,這個時候如果只是開發普通的JAVA應用程序,那麼Java的開發環境已經准備好了。要通過Eclipse來開發Android應用程序,那麼需要下載Android SDK(Software Development Kit)和在Eclipse安裝ADT插件,這個插件能讓Eclipse和Android SDK關聯起來。

第五步:為Eclipse安裝ADT插件。

前面已經配置好了java的開發環境,安裝了開發Android的IDE,下載安裝了Android SDK,但是Eclipse還沒有和Android SDK進行關聯,也就是它們現在是互相獨立的,就好比槍和子彈分開了。為了使得Android應用的創建,運行和調試更加方便快捷,Android的開發團隊專門針對Eclipse IDE定製了一個插件:Android Development Tools(ADT)。

熱點內容
安卓如何修改cpu 發布:2025-05-16 21:58:20 瀏覽:364
pythonainb 發布:2025-05-16 21:45:56 瀏覽:855
淘汰伺服器可以做家用電腦嗎 發布:2025-05-16 21:41:31 瀏覽:842
遊程編碼c語言 發布:2025-05-16 21:26:51 瀏覽:586
帝來哪個配置值得購買 發布:2025-05-16 21:12:29 瀏覽:462
什麼是nodejs前端伺服器 發布:2025-05-16 21:12:17 瀏覽:405
編譯選項立即綁定未定義符號 發布:2025-05-16 20:55:13 瀏覽:907
linuxmysql慢日誌 發布:2025-05-16 20:47:58 瀏覽:272
村兩委有哪些配置 發布:2025-05-16 20:34:47 瀏覽:294
我的世界有什麼伺服器好玩的 發布:2025-05-16 20:28:57 瀏覽:484