文章編號:10629時間:2024-09-28人氣:
在 C 編程語言中,字符串是通過以 null 結尾的字符數組來表示的。C 字符串具有許多獨特的特性,了解這些特性對于寫出靈活且易于維護的代碼至關重要。
預處理器宏:
預處理器宏可以用來定義字符串,類似于字符串常量,但允許使用宏替換。
一、Python系列(3本)如果你之前一點編程經驗都沒有,先看如下兩本:1、《簡明Python教程》(A Byte of Python)入門Python的絕佳Tutorial,從書的目錄便可以了解到作者Swaroop C H清晰的行文思路,以及對Python高超的駕馭能力。 2、《集體智慧編程》以具體實例的方式來展示Python的編程技巧,受益良多。 作者用非常直觀的方式向讀者展示了人工智能和機器學習中的大量經典的算法。 更可貴的是,作者在展示算法時所使用的例子都是網絡中非常有代表性的場景,并且很多情況下還會結合一些實際運營的 Web 站點的數據作更進步闡釋。 當然,作為一本實用型的書,少不了的是大量可運行的代碼。 3、《Python Cookbook中文版,第3版》這本書可謂Python版《代碼大全》。 有人說《代碼大全》這類書是字典,其實不盡然《代碼大全》是高手過招。 《Cookbook》也如此,閱讀時總能讓你有一種:“哇塞,漂亮!”的感覺。 能把 Cookbook 全部讀完,你的Python水平絕對發生質變。 二、Java語言系列(3本)1、《Java核心技術·卷1:基礎知識(原書第9版)》Java領域最有影響力和價值的著作之一,擁有20多年教學與研究經驗的資深Java技術專家撰寫,與《Java編程思想》齊名。 2、《算法 第四版》Java 語言描述,算法領域經典的參考書,全面介紹了關于算法和數據結構的必備知識,并特別針對排序、搜索、圖處理和字符串處理進行了論述。 書的內容非常多,可以說是Java程序員的必備書籍之一3、《數據結構與算法分析:Java語言描述》這本書真是非常好!個人感覺很適合給初學者入門看,里面的分析數學公式恰到好處,沒有算法導論的令人望而生畏,也沒有國內圖書的草草了事,既學習了數據結構又有剛剛好的算法分析,很容易使人產生共鳴。 當然,對于Java我們建議進行系統的學習,扎實基礎不能只靠看書。 如果你有任何疑問,歡迎你在千鋒武漢官網上留下你的相關情況,我再對號入座幫你解答。 在這里插入圖片描述三、前端系列(4本)1、《Java權威指南(第6版)》淘寶前端團隊翻譯,這本書又叫犀牛書,號稱Java開發者的圣經,網上對此書評價很多,大概意思都是說這本書是一本Java文檔手冊,沒有完整看過一遍此書的都不能算是一名合格的前端工程師。 2、《Java高級程序設計(第3版)》又稱紅寶書,雅虎首席前端架構師,YUI的作者Zakas出品。 雖然書名帶了“高級”二字,但是講得也很基礎,而且行文風格很流暢,每一小節就像是一篇博客,讀起來并不枯燥,個人感覺比上面那本犀牛書可讀性更強。 3、《Java設計模式與開發實踐》本書是在設計模式上的進一步擴充。 一大特點就是結合實操,代碼完整能直接應用到實際開發中。 4、《Web性能權威指南》本書是谷歌公司高性能團隊核心成員的權威之作,堪稱實戰經驗與規范解讀完美結合的產物。 本書目標是涵蓋Web開發者技術體系中應該掌握的所有網絡及性能優化知識。
C語言是一種計算機程序設計語言。 它既有高級語言的特點,又具有匯編語言的特點。 它可以作為系統設計語言,編寫工作系統應用程序,也可以作為應用程序設計語言,編寫不依賴計算機硬件的應用程序。 因此,它的應用范圍廣泛。 C語言對操作系統和系統使用程序以及需要對硬件進行操作的場合,用C語言明顯優于其它解釋型高級語言,有一些大型應用軟件也是用C語言編寫的。 C語言具有繪圖能力強,可移植性,并具備很強的數據處理能力,因此適于編寫系統軟件,三維,二維圖形和動畫。 它是數值計算的高級語言。 常用的C語言IDE(集成開發環境)有Microsoft Visual C++,Borland C++,Watcom C++ ,Borland C++ ,Borland C++ Builder,Borland C++ 3.1 for DOS,Watcom C++ 11.0 for DOS,GNU DJGPP C++ ,Lccwin32 C Compiler 3.1,Microsoft C,High C,Turbo C等等......C語言的缺點1. C語言的缺點主要是表現在數據的封裝性上,這一點使得C在數據的安全性上做的有很大缺陷,這也是C和C++的一大區別。 2. C語言的語法限制不太嚴格,對變量的類型約束不嚴格,影響程序的安全性,對數組下標越界不作檢查等。 從應用的角度,C語言比其他高級語言較難掌握。 [C語言指針]指針就是C語言的一大特色,可以說C語言優于其它高級語言的一個重要原因就是因為它有指針操作可以直接進行靠近硬件的操作,但是C的指針操作也給它帶來了很多不安全的因素。 C++在這方面做了很好的改進,在保留了指針操作的同時又增強了安全性。 Java取消了指針操作,提高了安全性。 C源程序的結構特點1.一個C語言源程序可以由一個或多個源文件組成。 2.每個源文件可由一個或多個函數組成。 3.一個源程序不論由多少個文件組成,都有一個且只能有一個main函數,即主函數。 4.源程序中可以有預處理命令(include 命令僅為其中的一種),預處理命令通常應放在源文件或源程序的最前面。 5.每一個說明,每一個語句都必須以分號結尾。 但預處理命令,函數頭和花括號“}”之后不能加分號。 6.標識符,關鍵字之間必須至少加一個空格以示間隔。 若已有明顯的間隔符,也可不再加空格來間隔。 學習C語言在初學C語言時,可能會遇到有些問題理解不透,或者表達方式與以往數學學習中不同(如運算符等),這就要求不氣餒,不明白的地方多問多想,鼓足勇氣進行學習,待學完后面的章節知識,前面的問題也就迎刃而解了,這一方面我感覺是我們同學最欠缺,大多學不好的就是因為一開始遇到困難就放棄,曾經和好多同學談他的問題,回答是聽不懂、不想聽、放棄這樣三個過程,我反問,這節課你聽過課嗎?回答又是沒有,根本就沒聽過課,怎么說自己聽不懂呢?相應的根本就沒學習,又談何學的好?學習C語言始終要記住“曙光在前頭”和“千金難買回頭看”,“千金難買回頭看”是學習知識的重要方法,就是說,學習后面的知識,不要忘了回頭弄清遺留下的問題和加深理解前面的知識,這是我們學生最不易做到的,然而卻又是最重要的。 學習C語言就是要經過幾個反復,才能前后貫穿,積累應該掌握的C知識。 那么,我們如何學好《C程序設計》呢?一.學好C語言的運算符和運算順序這是學好《C程序設計》的基礎,C語言的運算非常靈活,功能十分豐富,運算種類遠多于其它程序設計語言。 在表達式方面較其它程序語言更為簡潔,如自加、自減、逗號運算和三目運算使表達式更為簡單,但初學者往往會覺的這種表達式難讀,關鍵原因就是對運算符和運算順序理解不透不全。 當多種不同運算組成一個運算表達式,即一個運算式中出現多種運算符時,運算的優先順序和結合規則顯得十分重要。 在學習中,只要我們對此合理進行分類,找出它們與我們在數學中所學到運算之間的不同點之后,記住這些運算也就不困難了,有些運算符在理解后更會牢記心中,將來用起來得心應手,而有些可暫時放棄不記,等用到時再記不遲。 先要明確運算符按優先級不同分類,《C程序設計》運算符可分為15種優先級,從高到低,優先級為1 ~ 15,除第2、3級和第14級為從右至左結合外,其它都是從左至右結合,它決定同級運算符的運算順序.二.學好C語言的四種程序結構(1)順序結構順序結構的程序設計是最簡單的,只要按照解決問題的順序寫出相應的語句就行,它的執行順序是自上而下,依次執行。 例如;a = 3,b = 5,現交換a,b的值,這個問題就好像交換兩個杯子水,這當然要用到第三個杯子,假如第三個杯子是c,那么正確的程序為: c = a; a = b; b = c; 執行結果是a = 5,b = c = 3如果改變其順序,寫成:a = b; c = a; b = c; 則執行結果就變成a = b = c = 5,不能達到預期的目的,初學者最容易犯這種錯誤。 順序結構可以獨立使用構成一個簡單的完整程序,常見的輸入、計算,輸出三步曲的程序就是順序結構,例如計算圓的面積,其程序的語句順序就是輸入圓的半徑 r,計算s = 3.*r*r,輸出圓的面積s。 不過大多數情況下順序結構都是作為程序的一部分,與其它結構一起構成一個復雜的程序,例如分支結構中的復合語句、循環結構中的循環體等。 (2) 分支結構順序結構的程序雖然能解決計算、輸出等問題,但不能做判斷再選擇。 對于要先做判斷再選擇的問題就要使用分支結構。 分支結構的執行是依據一定的條件選擇執行路徑,而不是嚴格按照語句出現的物理順序。 分支結構的程序設計方法的關鍵在于構造合適的分支條件和分析程序流程,根據不同的程序流程選擇適當的分支語句。 分支結構適合于帶有邏輯或關系比較等條件判斷的計算,設計這類程序時往往都要先繪制其程序流程圖,然后根據程序流程寫出源程序,這樣做把程序設計分析與語言分開,使得問題簡單化,易于理解。 程序流程圖是根據解題分析所繪制的程序執行流程圖。 學習分支結構不要被分支嵌套所迷惑,只要正確繪制出流程圖,弄清各分支所要執行的功能,嵌套結構也就不難了。 嵌套只不過是分支中又包括分支語句而已,不是新知識,只要對雙分支的理解清楚,分支嵌套是不難的。 下面我介紹幾種基本的分支結構。 ①if(條件){分支體}這種分支結構中的分支體可以是一條語句,此時“{ }”可以省略,也可以是多條語句即復合語句。 它有兩條分支路徑可選,一是當條件為真,執行分支體,否則跳過分支體,這時分支體就不會執行。 如:要計算x的絕對值,根據絕對值定義,我們知道,當x>=0時,其絕對值不變,而x<0時其絕對值是為x的反號,因此程序段為:if(x<0) x=-x;②if(條件){分支1}else{分支2}這是典型的分支結構,如果條件成立,執行分支1,否則執行分支2,分支1和分支2都可以是1條或若干條語句構成。 如:求ax^2+bx+c=0的根分析:因為當b^2-4ac>=0時,方程有兩個實根,否則(b^2-4ac<0)有兩個共軛復根。 其程序段如下:d=b*b-4*a*c;if(d>=0){x1=(-b+sqrt(d))/2a;x2=(-b-sqrt(d))/2a;printf(“x1=%8.4f,x2=%8.4f\n”,x1,x2);}else{r=-b/(2*a);i =sqrt(-d)/(2*a);printf(“x1=%8.4f+%8.4fi\n”r, i);printf(“x2=%8.4f-%8.4fi\n”r,i)}③嵌套分支語句:其語句格式為:if(條件1) {分支1};else if(條件2) {分支2}else if(條件3) {分支3}……else if(條件n) {分支n}else {分支n+1}嵌套分支語句雖可解決多個入口和出口的問題,但超過3重嵌套后,語句結構變得非常復雜,對于程序的閱讀和理解都極為不便,建議嵌套在3重以內,超過3重可以用下面的語句。 ④switch開關語句:該語句也是多分支選擇語句,到底執行哪一塊,取決于開關設置,也就是表達式的值與常量表達式相匹配的那一路,它不同if… else 語句,它的所有分支都是并列的,程序執行時,由第一分支開始查找,如果相匹配,執行其后的塊,接著執行第2分支,第3分支……的塊,直到遇到break語句;如果不匹配,查找下一個分支是否匹配。 這個語句在應用時要特別注意開關條件的合理設置以及break語句的合理應用。 (3)循環結構:循環結構可以減少源程序重復書寫的工作量,用來描述重復執行某段算法的問題,這是程序設計中最能發揮計算機特長的程序結構,C語言中提供四種循環,即 goto循環、while循環、do –while循環和for循環。 四種循環可以用來處理同一問題,一般情況下它們可以互相代替換,但一般不提倡用goto循環,因為強制改變程序的順序經常會給程序的運行帶來不可預料的錯誤,在學習中我們主要學習while、do…while、for三種循環。 常用的三種循環結構學習的重點在于弄清它們相同與不同之處,以便在不同場合下使用,這就要清楚三種循環的格式和執行順序,將每種循環的流程圖理解透徹后就會明白如何替換使用,如把while循環的例題,用for語句重新編寫一個程序,這樣能更好地理解它們的作用。 特別要注意在循環體內應包含趨于結束的語句(即循環變量值的改變),否則就可能成了一個死循環,這是初學者的一個常見錯誤。 在學完這三個循環后,應明確它們的異同點:用while和do…while循環時,循環變量的初始化的操作應在循環體之前,而for循環一般在語句1中進行的;while 循環和for循環都是先判斷表達式,后執行循環體,而do…while循環是先執行循環體后判斷表達式,也就是說do…while的循環體最少被執行一次,而while 循環和for就可能一次都不執行。 另外還要注意的是這三種循環都可以用break語句跳出循環,用continue語句結束本次循環,而goto語句與 if構成的循環,是不能用break和 continue語句進行控制的。 順序結構、分支結構和循環結構并不彼此孤立的,在循環中可以有分支、順序結構,分支中也可以有循環、順序結構,其實不管哪種結構,我們均可廣義的把它們看成一個語句。 在實際編程過程中常將這三種結構相互結合以實現各種算法,設計出相應程序,但是要編程的問題較大,編寫出的程序就往往很長、結構重復多,造成可讀性差,難以理解,解決這個問題的方法是將C程序設計成模塊化結構。 (4)模塊化程序結構C語言的模塊化程序結構用函數來實現,即將復雜的C程序分為若干模塊,每個模塊都編寫成一個C函數,然后通過主函數調用函數及函數調用函數來實現一大型問題的C程序編寫,因此常說:C程序=主函數+子函數。 因此,對函數的定義、調用、值的返回等中要尤其注重理解和應用,并通過上機調試加以鞏固。 三.掌握一些簡單的算法編程其實一大部分工作就是分析問題,找到解決問題的方法,再以相應的編程語言寫出代碼。 這就要求掌握算法,根據我們的《C程序設計》教學大綱中,只要求我們掌握一些簡單的算法,在掌握這些基本算法后,要完成對問題的分析就容易了。 如兩個數的交換、三個數的比較、選擇法排序和冒泡法排序,這就要求我們要清楚這些算法的內在含義結語:當我們把握好上述幾方面后,只要同學們能克服畏難、厭學、上課能專心聽講,做好練習與上機調試,其實C語言并不難學C源程序的關鍵字---------------------------------------------------------------------------------------所謂關鍵字就是已被C語言本身使用, 不能作其它用途使用的字。 例如關鍵字不能用作變量名、函數名等由ANSI標準定義的C語言關鍵字共32個 :auto double int struct break else long switch case enum register typedef char extern return union const float short unsigned continue for signed void default goto sizeof volatile do if while static根據關鍵字的作用,可分其為數據類型關鍵字、控制語句關鍵字、存儲類型關鍵字和其它關鍵字四類。 1 數據類型關鍵字(12個):(1) char :聲明字符型變量或函數(2) double :聲明雙精度變量或函數(3) enum :聲明枚舉類型(4) float:聲明浮點型變量或函數(5) int: 聲明整型變量或函數(6) long :聲明長整型變量或函數(7) short :聲明短整型變量或函數(8) signed:聲明有符號類型變量或函數(9) struct:聲明結構體變量或函數(10) union:聲明聯合數據類型(11) unsigned:聲明無符號類型變量或函數(12) void :聲明函數無返回值或無參數,聲明無類型指針(基本上就這三個作用)(2)控制語句關鍵字(12個):A循環語句(1) for:一種循環語句(可意會不可言傳)(2) do :循環語句的循環體(3) while :循環語句的循環條件(4) break:跳出當前循環(5) continue:結束當前循環,開始下一輪循環B條件語句(1)if: 條件語句(2)else :條件語句否定分支(與 if 連用)(3)goto:無條件跳轉語句C開關語句(1)switch :用于開關語句(2)case:開關語句分支(3)default:開關語句中的“其他”分支Dreturn :子程序返回語句(可以帶參數,也看不帶參數)3 存儲類型關鍵字(4個)(1)auto :聲明自動變量 一般不使用(2)extern:聲明變量是在其他文件正聲明(也可以看做是引用變量)(3)register:聲明積存器變量(4)static :聲明靜態變量4 其它關鍵字(4個):(1)const :聲明只讀變量(2)sizeof:計算數據類型長度(3)typedef:用以給數據類型取別名(當然還有其他作用(4)volatile:說明變量在程序執行中可被隱含地改變
1、軟件開發的第一個流程是項目開發目的分析與確定,主要是在軟件開發商將開發項目確定下來之后,需要與需求方進行討論,確定需求方對于軟件開發的需要實現目標及其具體需要的功能等等,并確定是否可達成;2、接下來就是需求分析,這個步驟也是為軟件開發的正常進行確定具體思路的階段。 在確定軟件開發可進行后,必須要對客戶需要實現的軟件功能需求進行具體詳細的分析。 同時應當考慮在開發過程中可能出現的變化情況,制定需求變更計劃隨時應對特殊情況的發生,保證軟件開發流程的順暢進行;3、接下來就是軟件設計。 軟件設計要根據上一階段對軟件功能需求分析的結果,來設計軟件系統的框架結構、功能模塊和數據庫等等。 它主要分為總體設計和詳細設計兩個部分;4、接下來就是編程實施步驟。 編程也是根據對軟件設計,將軟件設計的各部分需求通計算機程序代碼來實現運行,編程有統一、規范的程序編寫規則,保證軟件程序的易懂性、易維護性;5、接下來就是軟件測試步驟。 也就是在根據設計將客戶軟件需用編程代碼來實現之后,也就是軟件程序完成之后,需要對編寫的程序,形成整體構架、功能進行單元、組裝、系統三階段的測試,以測試程序編寫的正確性,以及對客戶需求功能滿足的充分性,以此來確定軟件是否達到開發要求,同時也是一個發現問題、糾正問題的過程;6、通過以上核心環節完成了軟件開發,接下來就是在軟件開發達到客戶需求之后,開發者將軟件系統交予客戶,并將軟件安裝程序、數據庫的數據字典、《用戶安裝手冊》、《用戶使用指南》、需求報告、設計報告、測試報告等產物交付給客戶,同時指導客戶進行軟件安裝、以及安裝技巧,提醒客戶注意軟件運行狀況、環境、服務器及相關中間件的檢測與注意事項,知道客戶軟件的實際操作方法、使用流程等等問題,實現合同規定任務;7、用戶在接受開發商交付的軟件開發結果,并進行實際操作、測試運行,實現滿意結果之后,對開發出來的軟件進行驗收;8、定制開發的軟件通常都需要提供售后服務,定期對軟件進行維護,或者根據用戶出現的新需求,進行應用軟件程序的修改,使之不斷滿足客戶實際需求。
計算機語言的種類非常的多,總的來說可以分成機器語言,匯編語言,高級語言三大類。 電腦每做的一次動作,一個步驟,都是按照以經用計算機語言編好的程序來執行的,程序是計算機要執行的指令的集合,而程序全部都是用我們所掌握的語言來編寫的。 所以人們要控制計算機一定要通過計算機語言向計算機發出命令。 計算機所能識別的語言只有機器語言,即由0和1構成的代碼。 但通常人們編程時,不采用機器語言,因為它非常難于記憶和識別。 目前通用的編程語言有兩種形式:匯編語言和高級語言。 匯編語言的實質和機器語言是相同的,都是直接對硬件操作,只不過指令采用了英文縮寫的標識符,更容易識別和記憶。 它同樣需要編程者將每一步具體的操作用命令的形式寫出來。 匯編程序通常由三部分組成:指令、偽指令和宏指令。 匯編程序的每一句指令只能對應實際操作過程中的一個很細微的動作,例如移動、自增,因此匯編源程序一般比較冗長、復雜、容易出錯,而且使用匯編語言編程需要有更多的計算機專業知識,但匯編語言的優點也是顯而易見的,用匯編語言所能完成的操作不是一般高級語言所能實現的,而且源程序經匯編生成的可執行文件不僅比較小,而且執行速度很快。 高級語言是目前絕大多數編程者的選擇。 和匯編語言相比,它不但將許多相關的機器指令合成為單條指令,并且去掉了與具體操作有關但與完成工作無關的細節,例如使用堆棧、寄存器等,這樣就大大簡化了程序中的指令。 同時,由于省略了很多細節,編程者也就不需要有太多的專業知識。 高級語言主要是相對于匯編語言而言,它并不是特指某一種具體的語言,而是包括了很多編程語言,如目前流行的VB、VC、FoxPro、Delphi等,這些語言的語法、命令格式都各不相同。 高級語言所編制的程序不能直接被計算機識別,必須經過轉換才能被執行,按轉換方式可將它們分為兩類: 解釋類:執行方式類似于我們日常生活中的“同聲翻譯”,應用程序源代碼一邊由相應語言的解釋器“翻譯”成目標代碼(機器語言),一邊執行,因此效率比較低,而且不能生成可獨立執行的可執行文件,應用程序不能脫離其解釋器,但這種方式比較靈活,可以動態地調整、修改應用程序。 編譯類:編譯是指在應用源程序執行之前,就將程序源代碼“翻譯”成目標代碼(機器語言),因此其目標程序可以脫離其語言環境獨立執行,使用比較方便、效率較高。 但應用程序一旦需要修改,必須先修改源代碼,再重新編譯生成新的目標文件(* )才能執行,只有目標文件而沒有源代碼,修改很不方便。 現在大多數的編程語言都是編譯型的,例如Visual C++、Visual Foxpro、Delphi等。 [NextPage] 學習編程,從何入手 如果您想學習編程,卻又不知從何入手,那么您不妨看看下面的幾種學習方案,可能會給您一些啟示吧! ============================================== 方案一 Basic語言 & Visual Basic 優點 (1)Basic 簡單易學,很容易上手。 (2)Visual Basic 提供了強大的可視化編程能力,可以讓你輕松地做出漂亮的程序。 (3)眾多的控件讓編程變得象壘積木一樣簡單。 (4)Visual Basic 的全部漢化讓我們這些見了English就頭大的人喜不自禁。 缺點 (1)Visual Basic 不是真正的面向對象的開發文具。 (2)Visual Basic 的數據類型太少,而且不支持指針,這使得它的表達能力很有限。 (3)Visual Basic 不是真正的編譯型語言,它產生的最終代碼不是可執行的,是一種偽代碼。 它需要一個動態鏈接庫去解釋執行,這使得Visual Basic 的編譯速度大大變慢。 綜述:方案一適合初涉編程的朋友,它對學習者的要求不高,幾乎每個人都可以在一個比較短的時間里學會vB編程,并用VB 做出自己的作品。 對于那些把編程當做游戲的朋友來說,VB 是您最佳的選擇。 Basic/Visual Basic簡介 ============================================== 方案二 Pascal語言 & Delphi 優點 (1)Pascal語言結構嚴謹,可以很好地培養一個人的編程思想。 (2)Delphi是一門真正的面向對象的開發工具,并且是完全的可視化。 (3)Delphi使用了真編譯,可以讓你的代碼編譯成為可執行的文件,而且編譯速度非??臁? (4)Delphi具有強大的數據庫開發能力,可以讓你輕松地開發數據庫。 缺點 Delphi幾乎可以說是完美的,只是Pascal語言的過于嚴謹讓人感覺有點煩。 綜述: 方案二比較適合那些具有一定編程基礎并且學過Pascal語言的朋友。 Pascal語言簡介 Delphi簡介 ============================================== 方案三 C語言 & Visual C++ 優點 (1)C語言靈活性好,效率高,可以接觸到軟件開發比較底層的東西。 (2)微軟的MFC庫博大精深,學會它可以讓隨心所欲地進行編程。 (3)VC是微軟制作的產品,與操作系統的結合更加緊密。 缺點 對使用者的要求比較高,既要具備豐富的C語言編程經驗,又要具有一定的WINDOWS編程基礎,它的過于專業使得一般的編程愛好者學習起來會有不小的困難。 綜述: VC是程序員用的東西。 如果你是一個永不滿足的人,而且可以在編程上投入很大的精力和時間,那么學習VC你一定不會后悔的。 C語言簡介 ============================================== 方案四 C++語言 & C++ Builder 優點 (1)C++語言的優點全部得以繼承。 (2)完全的可是化。 (3)極強的兼容性,支持OWL、VCL和MFC三大類庫。 (4)編譯速度非??臁? 缺點 由于推出的時間太短,關于它的各種資料還不太多。 綜述:我認為C++ Builder 是最好的編程工具。 它既保持了C++語言編程的優點,又做到了完全的可視化。 C語言簡介 ============================================== 方案五 SQL語言 & Power Builder 對于一些傳統的數據開發人員來說,Foxpro系列也許讓他們感到更加熟悉。 但是對于初學者來說,PowerBuilder也許是最好的數據庫開發工具。 各種各樣的控件,功能強大的PowerBuilder語言都會幫助你開發出自己的數據庫應用程序。 [NextPage] JSP簡介 在Sun正式發布JSP(Java Server Pages)之后,這種新的Web應用開發技術很快引起了人們的關注。 JSP為創建高度動態的Web應用提供了一個獨特的開發環境。 按照 Sun 的說法,JSP能夠適應市場上包括Apache WebServer 、IIS4.0在內的85%的服務器產品。 JSP與ASP的簡單比較 JSP與Microsoft的ASP技術非常相似。 兩者都提供在HTML代碼中混合某種程序代碼、由語言引擎解釋執行程序代碼的能力。 在ASP或JSP環境下,HTML代碼主要負責描述信息的顯示樣式,而程序代碼則用來描述處理邏輯。 普通的HTML頁面只依賴于Web服務器,而ASP和JSP頁面需要附加的語言引擎分析和執行程序代碼。 程序代碼的執行結果被重新嵌入到HTML代碼中,然后一起發送給瀏覽器。 ASP和JSP都是面向Web服務器的技術,客戶端瀏覽器不需要任何附加的軟件支持。 ASP的編程語言是VBScript之類的腳本語言,JSP使用的是Java,這是兩者最明顯的區別。 此外,ASP與JSP還有一個更為本質的區別:兩種語言引擎用完全不同的方式處理頁面中嵌入的程序代碼。 在ASP下,VBScript代碼被ASP引擎解釋執行;在JSP下,代碼被編譯成Servlet并由Java虛擬機執行,這種編譯操作僅在對JSP頁面的第一次請求時發生。 運行環境 執行 JSP 代碼需要在服務器上安裝 JSP 引擎。 此處我們使用的是 Sun 的 JavaServer Web Development Kit ( JSWDK )。 為便于學習,這個軟件包提供了大量可供修改的示例。 安裝 JSWDK 之后,只需執行 startserver 命令即可啟動服務器。 在默認配置下服務器在端口 8080 監聽,使用即可打開缺省頁面。 在運行 JSP 示例頁面之前,請注意一下安裝 JSWDK 的目錄,特別是 work 子目錄下的內容。 執行示例頁面時,可以在這里看到 JSP 頁面如何被轉換成 Java 源文件,然后又被編譯成 class 文件(即 Servlet )。 JSWDK 軟件包中的示例頁面分為兩類,它們或者是 JSP 文件,或者是包含一個表單的 HTML 文件,這些表單均由 JSP 代碼處理。 與 ASP 一樣, JSP 中的 Java 代碼均在服務器端執行。 因此,在瀏覽器中使用查看源文件菜單是無法看到 JSP 源代碼的,只能看到結果 HTML 代碼。 所有示例的源代碼均通過一個單獨的 examples 頁面提供。 Java Servlet是一種開發Web應用的理想構架。 JSP以Servlet技術為基礎,又在許多方面作了改進。 JSP頁面看起來象普通HTML頁面,但它允許嵌入執行代碼,在這一點上,它和ASP技術非常相似。 利用跨平臺運行的JavaBean 組件,JSP為分離處理邏輯與顯示樣式提供了卓越的解決方案。 JSP必將成為ASP技術的有力競爭者。 [NextPage] SQL語言簡介 SQL全稱是“結構化查詢語言(Structured Query Language)”,最早的是IBM的圣約瑟研究實驗室為其關系數據庫管理系統SYSTEM R開發的一種查詢語言,它的前身是SQUARE語言。 SQL語言結構簡潔,功能強大,簡單易學,所以自從IBM公司1981年推出以來,SQL語言,得到了廣泛的應用。 如今無論是像Oracle ,Sybase,Informix,SQL server這些大型的數據庫管理系統,還是像Visual Foxporo,PowerBuilder這些微機上常用的數據庫開發系統,都支持SQL語言作為查詢語言。 Structured Query Language包含4個部分: 數據查詢語言DQL-Data Query Language SELECT 數據操縱語言DQL-Data Manipulation Language INSERT, UPDATE, DELETE 數據定義語言DQL-Data Definition Language CREATE, ALTER, DROP 數據控制語言DQL-Data Control Language COMMIT WORK, ROLLBACK WORK SQL的歷史 在70年代初,首先提出了關系模型。 70年代中期,IBM公司在研制 SYSTEM R關系數據庫管理系統中研制了SQL語言,最早的SQL語言(叫SEQUEL2)是在1976 年 11 月的IBM Journal of R&D上公布的。 1979年ORACLE公司首先提供商用的SQL,IBM公司在DB2 和SQL/DS數據庫系統中也實現了SQL。 1986年10月,美國ANSI采用SQL作為關系數據庫管理系統的標準語言(ANSI X3. 135-1986),后為國際標準化組織(ISO)采納為國際標準。 1989年,美國ANSI采納在ANSI X3.135-1989報告中定義的關系數據庫管理系統的SQL標準語言,稱為ANSI SQL 89, 該標準替代ANSI X3.135-1986版本。 該標準為下列組織所采納: ● 國際標準化組織(ISO),為ISO 9075-1989報告“Database Language SQL With Integrity Enhancement” ● 美國聯邦政府,發布在The Federal Information Processing Standard Publication(FIPS PUB)127 目前,所有主要的關系數據庫管理系統支持某些形式的SQL語言, 大部分數據庫打算遵守ANSI SQL89標準。 SQL的優點 SQL廣泛地被采用正說明了它的優點。 它使全部用戶,包括應用程序員、DBA管理員和終端用戶受益非淺。 (1) 非過程化語言 SQL是一個非過程化的語言,因為它一次處理一個記錄,對數據提供自動導航。 SQL允許用戶在高層的數據結構上工作,而不對單個記錄進行操作,可操作記錄集。 所有SQL 語句接受集合作為輸入,返回集合作為輸出。 SQL的集合特性允許一條SQL語句的結果作為另一條SQL語句的輸入。 SQL不要求用戶指定對數據的存放方法。 這種特性使用戶更易集中精力于要得到的結果。 所有SQL語句使用查詢優化器,它是RDBMS的一部分,由它決定對指定數據存取的最快速度的手段。 查詢優化器知道存在什么索引,哪兒使用合適,而用戶從不需要知道表是否有索引,表有什么類型的索引。 (2) 統一的語言 SQL可用于所有用戶的DB活動模型,包括系統管理員、數據庫管理員、 應用程序員、決策支持系統人員及許多其它類型的終端用戶。 基本的SQL 命令只需很少時間就能學會,最高級的命令在幾天內便可掌握。 SQL為許多任務提供了命令,包括: ● 查詢數據 ● 在表中插入、修改和刪除記錄 ● 建立、修改和刪除數據對象 ● 控制對數據和數據對象的存取 ● 保證數據庫一致性和完整性 以前的數據庫管理系統為上述各類操作提供單獨的語言,而SQL 將全部任務統一在一種語言中。 (3) 是所有關系數據庫的公共語言 由于所有主要的關系數據庫管理系統都支持SQL語言,用戶可將使用SQL的技能從一個RDBMS轉到另一個。 所有用SQL編寫的程序都是可以移植的。 [NextPage] Java語言簡介 一. Java的由來 當1995年SUN推出Java語言之后,全世界的目光都被這個神奇的語言所吸引。 那么Java到底有何神奇之處呢? Java語言其實最是誕生于1991年,起初被稱為OAK語言,是SUN公司為一些消費性電子產品而設計的一個通用環境。 他們最初的目的只是為了開發一種獨立于平臺的軟件技術,而且在網絡出現之前,OAK可以說是默默無聞,甚至差點夭折。 但是,網絡的出現改變了OAK的命運。 在Java出現以前。 Internet上的信息內容都是一些乏味死板的HTML文檔。 這對于那些迷戀于WEB瀏覽的人們來說簡直不可容忍。 他們迫切希望能在WEN中看到一些交互式的內容,開發人員也極希望能夠在WEB上創建一類無需考慮軟硬件平臺就可以執行的應用程序,當然這些程序還要有極大的安全保障。 對于用戶的這種要求,傳統的編程語言顯得無能為力,面SUN的工程師敏銳地察覺到了這一點,從1994年起,他們開始將OAK技術應用于WEB上,并且開發出了HotJava的第一個版本。 當SUN公司1995年正式以Java這個名字推出的時候,幾乎所有的WEB開發人員都想到:噢,這正是我想要的。 于是Java成了一顆耀眼的明星,丑小鴨一下了變成了白天鵝。 二. Java的定義 Java是一種簡單的,面象對象的,分布式的,解釋的,鍵壯的安全的,結構的中立的,可移植的,性能很優異的多線程的,動態的語言。 Java的開發環境有不同的版本,如sun公司的Java Developers Kit, 簡稱 JDK。 后來微軟公司推出了支持Java規范的Microsoft Visual J++ Java開發環境,簡稱 VJ++。 三. Java的特點 1. 平臺無關性 平臺無關性是指Java能運行于不同的平臺。 Java引進虛擬機 原理,并運行于虛擬機,實現不同平臺的Java接口之間。 使 用Java編寫的程序能在世界范圍內共享。 Java的數據類型與 機器無關,Java虛擬機(Java Virtual Machine)是建立在 硬件和操作系統之上,實現Java二進制代碼的解釋執行功能, 提供于不同平臺的接口的。 2. 安全性 Java的編程類似C++,學習過C++的讀者將很快掌握Java的精 髓。 Java舍棄了C++的指針對存儲器地址的直接操作,程序 運行時,內存由操作系統分配,這樣可以避免病毒通過指 針侵入系統。 Java對程序提供了安全管理器,防止程序的 非法訪問。 3. 面向對象 Java 吸取了C++面向對象的概念,將數據封裝于類中,利用類 的優點,實現了程序的簡潔性和便于維護性。 類的封裝性、 繼承性等有關對象的特性,使程序代碼只需一次編譯,然后 通過上述特性反復利用。 程序員只需把主要精力用在類和接 口的設計和應用上。 Java 提供了眾多的一般對象的類,通 過繼承即可使用父類的方法。 在 Java 中,類的繼承關系是單一的非多重的,一個子類 只有一個父類,子類的父類又有一個父類。 Java 提供的 Object 類及其子類的繼承關系如同一棵倒立的樹形,根類 為 Object 類, Object 類功能強大,經常會使用到它及其 它派生的子類。 4. 分布式 Java建立在擴展TCP/IP網絡平臺上。 庫函數提供了用HTTP和FTP協議傳送和接受信息的方法。 這使得程序員使用網絡上的文件和使用本機文件一樣容易。 5. 鍵壯性 Java致力于檢查程序在編譯和運行時的錯誤。 類型檢查幫助檢查出許多開發早期出現的錯誤。 Java自已操縱內存減少了內存出錯的可能性。 Java還實現了真數組,避免了覆蓋數據的可能。 這些功能特征大大提高了開發Java應用程序的周期。 Java提供: Null指針檢測、 數組邊界檢測、 異常出口、 Byte code校驗。 四. Java與C/C++語言 Java提供了一個功能強大語言的所有功能,但幾乎沒有一點含混特征。 C++安全性不好,但C和C++被大家接受,所以Java設計成C++形式,讓大家很容易學習。 Java去掉了C++語言的許多功能,讓Java的語言功能很精煉,并增加了一些很有用的功能,如自動收集碎片。 Java去掉了以下幾個C和C++功能: 指針運算 結構 typedefs #define 需要釋放內存 這將減少了平常出錯的50%。 而且,Java很小,整個解釋器只需215K的RAM。 面象對象:Java實現了C++的基本面象對象技術并有一些增強,(為了語言簡單,刪除了一些功能)。 Java處理數據方式和用對象接口處理對象數據方式一樣。 五. Java與Internet 我們知道,早先的 www 僅可以傳送文本和圖片,Java的出現實現了互動的頁面,是一次偉大的革命。 Java并不是為 Internet,WWW而設計的,它也可以用來編寫獨立的應用程序。 Java 是一種面向對象語言。 Java 語言類似于 C++ 語言,所以已熟練掌握 C++語言的編程人員,再學習 Java 語言就容易得多!Java 程序需要編譯。 實際上有兩種 Java 程序:一種 Java 應用程序是一個完整的程序,如 Web 瀏覽器。 一種 Java 小應用程序是運行于 Web 瀏覽器中的一個程序. Java程序和它的瀏覽器HotJava,提供了可讓你的瀏覽器運行程序的方法。 你能從你的瀏覽器里直接播放聲音。 你還能播放頁面里的動畫。 Java還能告訴你的瀏覽器怎樣處理新的類型文件。 當我們能在2400 baud線上傳輸視頻圖象時,HotJava將能顯示這些視頻。 當今Internet的一大發展趨勢是電子商務,而Internet的安全問題是必須解決的問題,通常大的部門應設置防火墻,阻止非法侵入。 電子商務是當今的熱門話題,然而傳統的編程語言難以勝任電子商務系統,電子商務要求程序代碼具有基本的要求:安全、可靠、同時要求能 與運行于不同平臺的機器的全世界客戶開展業務。 Java以其強安全性、平臺無關性、硬件結構無關性、語言簡潔同時面向對象,在網絡編程語言中占據無可比擬的優勢,成為實現電子商務系統的首選語言。 Java程序被放置在Internet服務器上,當用戶訪問服務器時,Java程序被下載到本地的用戶機上,由瀏覽器解釋運行。 [NextPage] PowerBuilder簡介 PowerBuilder的產生 PowerBuilder是美國著名的數據庫應用開發工具生產廠商PowerSoft推出的成功產品,其第一版于1991年6月正式投入市場。 它是完全按照客戶/服務器體系結構研制設計的,采用面向對象技術,圖形化的應用開發環境,是數據庫的前端開發工具。 PowerBuilder的特點 它支持應用系統同時訪問多種數據庫,其中既包括Oracel,Sybase之類的大型數據庫,又包括FOXPRO之類支持ODBC接口的小型數據庫,PowerBuilder是完全可視化的數據庫開發工具,它提供了大量的控件,大大加快了項目的開發速度,也使開發者更容易掌握數據庫的開發。 它使用的編程語言叫做工PowerScripr,它也是一種高級的,結構化的編程語言。 PowerScript提供了一套完整的嵌入式SQL語句,開發人員可以像使用其它語句一樣自由地使用SQL語言,這樣就大大增強了程序操縱和訪問數據庫的能力。 可以說PowerBuilder既適合初學者快速學習數據庫的開發,又可以讓有經驗的開發人員開發出功能強大的數據庫,是一種適用面非常廣的開發工具。 PowerBuilder是一個用來進行客戶/服務器開發的完全的可視化開發環境。 使用PowerBuilder,你可以用一種可視的直觀的方式來創建應用程序的用戶界面和數據庫接口。 這是一個總的概念,實際上是開發人員使用PowerBuilder去開發應用程序,由于所開發的各種應用程序充分利用了圖形用戶接口(GUI)的優點,所以PowerBuilder被認為是一個圖形工具。 在客戶/服務器結構的應用中,PowerBuilder具有描述多個數據庫連接與檢索的能力。 特別是PowerBuilder能從大多數流行的RDBMS中存取數據,且不管數據存放在什麼地方;另外,各種應用程序又可以獨立于RDBMS,因為PowerBuilder可以使用數據庫的標準操作語言SQL(結構化查詢語言)進行。 使用PowerBuilder,可以很容易地開發出功能強大的圖形界面的訪問服務器數據庫的應用程序,PowerBuilder提供了建立符合工業標準的應用程序(例如訂單登記、會計及制造系統)所需的所有工具。 PowerBuilder應用程序由窗口組成,這些窗口包含用戶與之交互的控件。 開發人員可以使用所有標準空間(如按鈕、復選框、下拉式列表框或編輯框)以及PowerBuilder提供的特殊的使應用程序更易于開發和使用的控件。 通常人們把PowerBuilder看成是一種開發工具,實際上它比其他工具強得多,是一種強有力的開發環境。 開發人員不僅能用它來開發用戶容易使用的各種應用程序還可以通過PowerBuilder修改數據庫,利用400多個內部定義函數,可以開發能和其他應用程序進行的各種應用程序。 PowerBuilder正在成為客戶/服務器應用開發的標準。 相對于其他任何客戶/服務器開發環境,PowerBuilder使開發人員的工作更快、成本更低、質量更高、功能更強。 PowerBuilder為應用開發提供了全面綜合性的支持,可以分別概括為如下幾點: 事件驅動的應用程序 功能強大的編程語言與函數 面向對象的編程 跨平臺開發 開放的數據庫連結系統 PowerBuilder開發環境 PowerBuilder開發環境由一系列集成的圖形畫板(Painter)組成,應用開發人員通過簡單的鼠標操作即可設計、建立、交互檢驗和測試客戶/服務器應用程序。 [NextPage] Delphi簡介 Delphi這個名字源于古希臘的城市名。 它集中了第三代語言的優點。 以Object Pascal為基礎,擴充了面向對象的能力,并且完美地結合了可視化的開發手段。 Delphi自1995年3 月一推出就受到了人們的關注,并在當年一舉奪得了多項大獎。 Delphi的出現打破了V承可視化編程領域一統天下的局面。 并且Delphi使用了本地編譯器直接生成技術,使程序的執行性能遠遠高于其它產品生成的程序。 它還是真正的面向對象的編程語言。 PASCAL語言的嚴謹加上可視化的優勢和強大的數據庫功能使得它有充分的資本和微軟的VB叫板。 許多人當時都認為Pascal 是最有前途的程序設計語言,并預測Delphi將會成為可視化編程的主流環境。 Delphi在你編好程序后自動轉換成文件它運行時速度比VB快,而且編譯后不需要其他的支持庫就能運行。 它的數據庫功能也挺強的,是開發中型數據庫軟件理想的編程工具。 Delphi適用于應用軟件、數據庫系統、系統軟件等類型的開發。 而且它擁有和VB差不多一樣的功能,而且一樣能應用API函數,這在控制Windows很有用。 Delphi是全新的可視化編程環境,為我們提供了一種方便、快捷的Windows應用程序開發工具。 它使用了Microsoft Windows圖形用戶界面的許多先進特性和設計思想,采用了彈性可重復利用的完整的面向對象程序語言(Object-Oriented Language)、當今世界上最快的編輯器、最為領先的數據庫技術。 對于廣大的程序開發人員來講,使用Delphi開發應用軟件,無疑會大大地提高編程效率,而且隨著應用的深入,您將會發現編程不再是枯燥無味的工作——Delphi的每一個設計細節,都將帶給您一份欣喜。 Delphi的基本形式Delphi實際上是Pascal語言的一種版本,但它與傳統的Pascal語言有天壤之別。 一個Delphi程序首先是應用程序框架,而這一框架正是應用程序的“骨架”。 在骨架上即使沒有附著任何東西,仍可以嚴格地按照設計運行。 您的工作只是在“骨架”中加入您的程序。 缺省的應用程序是一個空白的窗體(form),您可以運行它,結果得到一個空白的窗口。 這個窗口具有Windows窗口的全部性質:可以被放大縮小、移動、最大最小化等,但您卻沒有編寫一行程序。 因此,可以說應用程序框架通過提供所有應用程序共有的東西,為用戶應用程序的開發打下了良好的基礎。 Delphi已經為您做好了一切基礎工作——程序框架就是一個已經完成的可運行應用程序,只是不處理任何事情。 您所需要做的,只是在程序中加入完成您所需功能的代碼而已。 在空白窗口的背后,應用程序的框架正在等待用戶的輸入。 由于您并未告訴它接收到用戶輸入后作何反應,窗口除了響應Windows的基本操作(移動、縮放等)外,它只是接受用戶的輸入,然后再忽略。 Delphi把Windows編程的回調、句柄處理等繁復過程都放在一個不可見的Romulam覆蓋物下面。
ASP是Active Server Page的縮寫,意為“活動服務器網頁”。 ASP是微軟公司開發的代替CGI腳本程序的一種應用,它可以與數據庫和其它程序進行交互,是一種簡單、方便的編程工具。 ASP的網頁文件的格式是,現在常用于各種動態網站中。 ASP是一種服務器端腳本編寫環境,可以用來創建和運行動態網頁或Web應用程序。 ASP網頁可以包含HTML標記、普通文本、腳本命令以及COM組件等。 利用ASP可以向網頁中添加交互式內容(如在線表單),也可以創建使用HTML網頁作為用戶界面的web應用程序。 與HTML相比,ASP網頁具有以下特點: (1)利用ASP可以實現突破靜態網頁的一些功能限制,實現動態網頁技術; (2)ASP文件是包含在HTML代碼所組成的文件中的,易于修改和測試; (3)服務器上的ASP解釋程序會在服務器端制定ASP程序,并將結果以HTML格式傳送到客戶端瀏覽器上,因此使用各種瀏覽器都可以正常瀏覽ASP所產生的網頁; (4)ASP提供了一些內置對象,使用這些對象可以使服務器端腳本功能更強。 例如可以從web瀏覽器中獲取用戶通過HTML表單提交的信息,并在腳本中對這些信息進行處理,然后向web瀏覽器發送信息; (5)ASP可以使用服務器端ActiveX組件來執行各種各樣的任務,例如存取數據庫、發現哦那個Email或訪問文件系統等。 (6)由于服務器是將ASP程序執行的結果以HTML格式傳回客戶端瀏覽器,因此使用者不會看到ASP所編寫的原始程序代碼,可放置ASP程序代碼被竊取。 ASP的工作原理當在Web站點中融入ASP功能后,將發生以下事情: 1、用戶向瀏覽器地址欄輸入網址,默認頁面的擴展名是。 2、瀏覽器向服務器發出請求。 3、服務器引擎開始運行ASP程序。 4、ASP文件按照從上到下的順序開始處理,執行腳本命令,執行HTML頁面內容。 5、頁面信息發送到瀏覽器。 ASP的運行環境asp需要運行在PWS或IIS下。 PWS或IIS服務在windows98或windows2000的光盤上附帶著,可以通過“添加/刪除程序”中的“添加/刪除windows組件”來安裝。 一般asp需與access數據庫或SQL Server數據庫結合使用,編出功能強大的程序。 能夠運行ASP的web服務器軟件Windows2000默認安裝的是IIS5.0(internet information server),而windows xp默認安裝的是IIS5.1,windows 2003默認安裝的IIS6.0。 PWS(personal web server)運行在windows98環境下的簡單個人網頁服務器。 ASP的意涵與特性ASP( Application Service Provider,應用軟體租賃服務提供者 )即是指「透過網路以租賃方式提供應用軟體服務的業者」,即是指業者以應用軟體為主體,透過網路一對多地傳遞服務,這種以服務為主的交易模式促使企業可藉由租賃的方式,以更符合成本效益的方式擁有軟體的使用權,并且亦能因為業者集中式的管理而大幅降低企業維護的成本.基本上,ASP即具有「軟體服務化,服務網路化」,「資訊委外服務與網路結合」與「產品通路化,通路產品化」等三大特性,其甚至可以被視為是ISP(Internet Service Provider)與ITS(Information Technology Service)的結合的英文是Application Service Provider,中文的標準翻譯就是“應用服務提 供商”,是指為商業或者個人客戶提供管理應用解決方案的公司或者企業。 最近 ASP被媒體炒做十分火熱,不是IT行業的人面對一堆技術名詞專業術語很難弄清楚ASP的內容,本文試圖用淺顯的語言來為廣大的讀者揭開ASP神秘的面紗,對于IT行業的大熱門ASP領域有一些基本的認識。 1. ASP是什么東西?簡單地講,ASP就是為客戶提供服務的服務商,它和會計事物所、婚姻介紹所沒有什么本質方面的區別。 不同的是ASP主要是通過INTERNET(國際互聯網絡)作為主要工作和業務工具,采用一對多的方式,向企業、公司提供標準化的應用軟件以及相關的技術咨詢、管理租賃的服務,ASP的概念最早是1998年由美國人提出來的。 目前被全球各大IT廠商看好并被認為是可以推動網絡經濟發展的,有穩固基礎的第三種網絡商業模式。 和傳統的外包服務(Outsourcing)相比,ASP的主要區別在于:ASP是一對多的經營模式,提供的服務有兼容性和可協調性,并且ASP的收費方式一般是按月收費。 業界認為:ASP一般有這樣一些“成員”:電信運營商、傳統IT服務廠商、互聯網絡接入服務商(ISP)、獨立軟件供應商(ISV)、系統集成商和單純的ASP公司。 根據流行的觀點,ASP有如下五個核心內涵:a. ASP著重應用為中心,提供對于應用方面的訪問和管理。 b. ASP服務可以為用戶提供沒有在服務器、人員、系統和系統授權等前期資源投入情況下就可以在“定制”的全新應用系統環境進行訪問的服務,如ISP,而這樣的服務一般按月份ASP收取服務費。 c. ASP采用集中管理的方式---ASP一般都有一個管理中心,所有的客戶通過INTERNET來進行遠程訪問,獲得技術支持和咨詢服務。 d. 一對多的服務,也就是講,ASP提供的是標準化的產品包,產品都是最低程度的自定義或者沒有實現客戶定制化,對于行業用戶來講已經達到實用方便的標準。 e. 按照合同交付,在ASP客戶的眼中,ASP是一家根據客戶協議內容提供相關服務,保證應用服務系統服務可以得到確實履行的機構。 2. ASP為什么會火? 從大的方面來講,困擾國內企業生存、發展的核心問題是管理問題。 隨著互聯網絡的普及和應用的深入,企業用戶可以隨時隨地直接租用ASP的服務器和軟件系統來進行自己的業務管理,這樣做的好處在于;第一,企業可以節省大筆用于IT建設方面的資金,大幅度降低企業管理信息化的成本。 第二,ASP的用戶可以采用各種方式獲得應用和服務,軟件類服務產品完全可以通過網絡在非常短的時間內組成一個完善的、高效的、先進的企業管理系統,迅速獲得企業一體化的運營管理方案。 網絡經濟發展突飛猛進,電子商務一日千里,網絡和網站從門戶到內容、從注意力到垂直性,目前逐漸轉向熱衷ASP也是一個主要的原因。 筆者資料中,國內最早對ASP觸電的是網友“飛鳥”,在1998年6月自發組織了研究、交流和探討ASP技術的“飛鳥之家”,現在已經發展成為,成為國內最早的ASP應用技術服務提供商網站。 上海的互易網絡有限公司結合國內實際情況,推出了為國內企業服務的ASP平臺互易網,向企業提供以電子商務為核心的,企業內、外部網絡設施和應用的遠程構架和托管服務,創造虛擬企業門戶(EP)直接將ASP應用到商業增殖環節中去。 此外,ISP也全面轉向ASP的懷抱,成為ISP進一步發展的產物。 軟件商對于ASP更是情有獨鐘。 業界最新的消息是,中國第三電信“網通”已經制定ASP發展戰略,國內最大的管理咨詢公司“漢普”將把旗下八個子公司定位在企業內部資源計劃管理(ERP)領域的ASP中,北京“聯成互動”瞄準客戶關系管理(CRM)領域的ASP,北京“數碼方舟”定位在網絡辦公的ASP,HP正在和中國建設銀行討論共建金融領域的ASP。 ASP正在IT經濟大潮中顯山露水,其發展前景不可估量。 3. ASP的發展階段和面臨的問題以網絡服務商、軟件廠商和ISP為主力的各種IT角色,正在根據自己的優勢條件出發對ASP領域進行多種方面的嘗試。 就目前階段來講,ASP提供的服務不計其數五花八門,沒有標準化和量化的概念,硬件廠商向ASP的“土壤”和勢力方向靠攏,軟件廠商和ISP則直接參與到ASP業務的第一線。 筆者估計,經過一段時間的試探和發展,ASP將向服務集成方面發展,產品和服務初步的標準化將很快建立起來,接著進入到市場細化和標準制定、ASP產品成熟時期,ASP的穩步增長,最終將成為IT行業商務模式的核心!目前在ASP發展的道路上,主要面臨的問題是觀念的轉變方面:用租賃代替購買,服務集成代替產品經銷商、服務經濟代替產品經濟等等。 具體到實際方面來講,安全和服務的質量是ASP和客戶共同關心的頭等大事,要實現ASP提出的“租賃高科技”的口號,ASP任重而道遠!ASP常用內置函數1,日期/時間函數這些函數包括對“年”、“月”、“日”、“時”、“分”、“秒”、“星期”等的顯示。 (1)Now函數:根據計算機系統設定的日期和時間,返回當前的日期和時間值。 使用方法now();(2)Date函數:只返回當前計算機系統設定的日期值。 使用方法:date();(3)Time函數:只返回當前計算機系統設定的時間值。 使用方法:time();(4)Year函數:返回一個代表某年的整數。 使用方法:year(date),其中date參數是任意的可以代表日期的參數,比如“year(date())”就表示是從“date()”得出的日期中提取其中“年”的整數。 另外,還可以這樣應用:“year(#5 20,2006#)”表示提取“2006年5月20日”中“年”的整數值。 關于“5 20,2006”,也可使用“5-20-2006”、“5/20/2006”等形式表現,即“某月某日”和“某年”的組合。 同時注意使用“#”進行包括以表示日期值。 (5)Month函數:返回1到12之間的整數值,表示一年中某月。 使用方法:month(date)。 關于參數date的說明和year函數相同。 但要注意日期的正確性,比如“#13-31-2006#”,根本就沒有“13”月,肯定是錯誤的了。 (6)Day函數:返回1到31之間的整數值,表示一個月中的某天。 使用方法:day(date)。 關于參數date的說明和year函數相同。 同樣要注意日期的正確性,比如“#2-30-2006#”其中對“2”月定義的“30”日這天就是錯誤的。 (7)Hour函數:返回0到23之間的整數值,表示一天中的某個小時。 使用方法:hour(time)。 其中參數time是任意的可代表時間的表達式。 比如“hour(time())”就表示是從“time()”得出的時間中提取其中“小時”的整數。 同樣,參數time還可以這樣應用“hour(#11:45:50#)”表示從“11”時“45”分“50”秒中提取當前小時數。 當然,定義的時間要符合時間的規范。 (8)Minute函數:返回0到59之間的整數值,表示一小時中的某分鐘。 使用方法:minute(time)。 time參數的說明和hour函數相同。 (9)Second函數:返回0到59之間的整數值,表示一分鐘中的某秒。 使用方法:second(time)。 time參數的說明和hour函數相同。 (10)Weekday函數:返回一個星期中某天的整數。 使用方法:weekday(date)。 關于參數date的說明和year函數相同。 該函數返回值為“1”到“7”,分別代表“星期日”、“星期一”……“星期六”。 比如當返回值是“4”時就表示“星期三”。 (11)WeekDayName函數:返回一個星期中具體某天的字符串。 相對weekday函數而言即翻譯出“星期幾”,使用方法:weekdayname(weekday)。 參數weekday即星期中具體某天的數值。 比如“weekdayname(weekday(date()))”就表示當前是“星期幾”。 因為“date()”表示的是當前的時間,而“weekday(date())”就表示的是一星期中具體某天的整數。 當然weekdayname函數最終顯示的字符串內容還與當前操作系統語系有關,比如中文操作系統將顯示“星期一”這類的中文字符,而英文操作系統則顯示為“Mon”(Monday簡寫)。 此外,在VBScript中還有一些關于時間間隔的計算函數:(1)DateAdd函數:返回指定時間間隔的日期、時間。 可以計算出相隔多少年、或相隔幾個月、又或相隔幾個小時等的新日期、時間。 使用方法:dateadd(interval, number, date)。 其中參數interval表示需要添加的時間間隔單位。 其是以字符串的形式表達的,比如“yyyy”表示年,“q”表示季度,“m”表示月份,“d”表示天數,“ww”表示周數,“h”表示小時數,“n”表示分鐘數,“s”表示秒數。 而參數number則表示添加的時間間隔數。 其是以數值的形式表達的,可以為負值。 參數date則要求是日期、時間的正確格式。 比如dateadd(d,100,2006-5-20)就表示2006年5月20號以后的100天的日期值:2006-8-28。 再比如dateadd(h,-12,2005-5-20 10:00:00)就表示2005年5月20號上午10點前的12小時的日期時間:2005-5-19 22:00:00。 (2)DateDiff函數:返回兩個日期時間之間的間隔。 可計算出兩個日期相隔的年代、小時數等。 使用方法:datediff(interval,date1,date2)。 參數interval和dateadd函數中的interval參數內容描述相同,date1和date2參數分別就是相互比較的兩個日期時間。 另外,當date1的日期時間值大于date2時,將顯示為負值。 比如DateDiff(yyyy,1982-7-18,date)表示某人的出生到現在已經多少年了。 又比如DateDiff(d,1982-7-18,2062-7-18)則計算了80年過了多少天。 2,字符串處理函數在腳本的功能處理中,通常需要對一些字符串進行一些修飾性處理。 比如過濾掉字符串中的敏感字眼以符合最終顯示的要求;又比如一段較長的字符串,需要提取開頭的幾個字符時。 (1)Asc函數:返回字符串中第一個字母對應的ANSI字符代碼。 使用方法:asc(string)。 其中string參數表示字符串。 (2)Chr函數:返回指定了ANSI 字符代碼對應的字符。 使用方法:chr(chrcode)。 參數chrcode是相關的標識數字。 該函數的功能和asc函數形成對應。 比如:asc(“a”)表示小寫字母“a”的ANSI 字符“97”;同樣chr(97)表示的就是“小寫字母a”。 另外chr(chrcode)中參數chrcode值為0到31的數字時,表示不可打印的ASCII碼。 比如“chr(10)”表示換行符,“chr(13)”表示回車符等,這常用于輸入和顯示格式的轉換中。 (3)Len函數:返回字符串內字符的數目(字節數)。 使用方法:len(string)。 比如len(“love”)的值就是4。 (4)LCase函數:返回所有字符串的小寫形式。 使用方法:lcase(string)。 比如lcase(“CNBruce”)返回為“cnbruce”。 (5)UCase函數:返回所有字符串的大寫形式。 與lcase函數形成對應。 同樣,ucase(“CNBruce”)返回為“CNBRUCE”。 (6)Trim函數、LTrim函數和RTrim函數:分別返回前導和后續不帶空格、前導不帶空格或后續不帶空格的字符串內容。 比如:trim(“ cnbruce ”)返回為“cnbruce”,前導和后續都不帶空格;ltrim(“ cnbruce ”)返回為“cnbruce ”,前導不帶空格;rtrim(“ cnbruce ”)返回為“ cnbruce”,后續不帶空格;該函數常用于注冊信息中,比如確保注冊用戶名前或后的空格。 (7)Left函數:返回從字符串的左邊算起的指定數目的字符。 使用方法:left(string,length)。 比如left(“brousce”,5)返回為“brous”,即前五位字符。 (8)Right函數:返回從字符串的左邊算起的指定數目的字符。 使用方法:right(string,length)。 比如right(“brousce”,4)返回為“usce”,即后四位字符。 (9)instr函數:返回某字符串在另一字符串中第一次出現的位置。 比如現在查找字母“A”在字符串“A110B121C119D1861”中第一次出現的位置,則可以 instr(my_string,A110B121C119D1861)(10)Mid函數:從字符串中返回指定數目的字符。 比如現在的“110”則應該是從字符串“A110B121C119D1861”的第2位取得3個單位的值:mid(A110B121C119D1861,2,3)(11)Replace函數:在字符串中查找、替代指定的字符串。 replace(strtobesearched,strsearchfor,strreplacewith)其中strtobesearched是字符串,strsearchfor是被查找的子字符串,strreplacewith是用來替代的子字符串。 比如 replace(rscon,<,<) 則表示將rscon中所有“<”的字符替換為“<”3,類型轉換函數Cbool(string) 轉換為布爾值Cbyte(string) 轉換為字節類型的值Ccur(string) 轉換為貨幣類值Cdate(string) 轉換為日前類型的值Cdbl(string) 轉換為雙精度值Cint(string) 轉換為整數值Clng(string) 轉換為長整型的值Csng(string) 轉換為單精度的值Cstr(var) 轉換為字符串值Str(var) 數值轉換為字符串Val(string) 字符串轉換為數值4,運算函數Abs(nmb) 返回數子的絕對值Atn(nmb) 返回一個數的反正切Cos(nmb) 返回一個角度的余炫值Exp(nmb) 返回自然指數的次方值Int(nmb) 返回數字的整形(進位)部份Fix(nmb) 返回數字的整形(舍去)部份Formatpercent(表達式) 返回百分比Hex(nmb) 返回數據的16進制數Log(nmb) 返回自然對數Oct(nmb) 返回數字的8進制數Rnd 返回大于“0”而小于“1”的隨機數,但此前需 randomize 聲明產生隨機種子Sgn(nmb) 判斷一個數字的正負號Sin(nmb) 返回角度的正鉉值Sqr(nmb) 返回數字的二次方根Tan(nmb) 返回一個數的正切值5,其他函數IsArray(var) 判斷一個變量是否是數組IsDate(var) 判斷一個變量是否是日期IsNull(var) 判斷一個變量是否為空IsNumeric(var) 判斷表達式是否包含數值IsObject(var) 判斷一個變量是否是對象TypeName(var) 返回變量的數據類型Array(list) 返回數組Split(liststr) 從一個列表字符串中返回一個一維數組LBound(arrayP 返回數組的最小索引Ubound(array) 返回數組的最大索引CreateObject(class) 創建一個對象GetObject(pathfilename) 得到文件對象ASP中Application和Session對象一、Application對象的成員概述Application對象成員包括Application對象的集合、方法和事件。 ⒈Application對象的集合Contents集合:沒有使用元素定義的存儲于Applicaiton對象中的所有變量的集合StaticObjects:使用元素定義的存儲于Application對象中的所有變量 的集合例:在中有如下賦值application(a)=aapplication(b)=128application(c)=false則有contents集合(1)=a 也可寫為(a)=(2)=128 也可寫為(b)=(3)=false 也可寫為(c)=false在此筆者推薦你在調用時使用類如(a)的方法,因為這樣更為直觀,如果用序號來表示的話則要考慮賦值的先后順序。 ⒉Application對象的方法(變量名):從集合中刪除指定的變量() :把集合中的所有變量刪除Lock() :鎖定Application對象,使得只有當前的ASP頁對內容能進行訪問Unlock() :解除對Application對象的鎖定例:在中:application(a)=aapplication(b)=128application(c)= (1)& (2)& (3)& After Remove (b) (1)& (2)&執行結果:a128FalseAfter Remove b:aFalse如果要刪除集合中所有變量用即可,至于Lock和Unlock方法在實際中經常用到,讀者也比較熟悉,在此就不在累贅。 ⒊Application對象事件OnStart:第一個訪問服務器的用戶第一次訪問某一頁面時發生OnEnd :當最后一個用戶的會話已經結束并且該會話的OnEnd事件所有代碼已經執行完畢后發生,或最后一個用戶訪問服務器一段時間(一般為20分鐘)后仍然沒有人訪問該服務器產生。 想要定義application對象的OnStart和OnEnd事件里做什么需要將代碼寫在這個文件里(下文有舉例),并且將該文件放在站點的根目錄下(一般是Inetpub\wwwroot\)二、Session對象的成員概述Session對象的成員比Application對象多一項屬性,即:集合、屬性、方法、事件⒈Session對象的集合Contents :沒有使用元素定義的存儲于特定Session對象的所有變量的集合。 StaticObject:使用元素定義的、存儲于Session對象中的所有變量的集合。 例:在中有如下賦值session(a)=asession(b)=128session(c)=false則有contents集合(1)=a 也可寫為(a)=(2)=128 也可寫為(b)=(3)=false 也可寫為(c)=false⒉Session對象的屬性CodePage: 可讀/可寫。 整型。 定義用于在瀏覽器中顯示頁內容的代碼頁。 代碼頁是字符集的數字值,不同的語言使用不同的代碼頁。 例如,ANSI代碼頁為1252,日文代碼頁為932,簡體中文代碼頁為936。 LCID : 可讀/可寫。 整型。 定義發送給瀏覽器的頁面地區標識。 LCID是唯一地標識地區的一個國際標準縮寫,例如,2057定義當前地區的貨幣符號是£。 SessionID: 只讀。 長整型。 返回本會話的會話標識符。 每創建一個會話,由服務器自動分配一個標識符。 可以根據它的值判斷兩個用戶是誰先訪問服務器。 Timeout : 可讀/可寫。 整型。 為會話定義以分鐘為單位的超時限定。 如果用戶在這個時間內沒有刷新或請求任何一個網頁,則該用戶產生的會話自動結束。 缺省值是20。 以上屬性在實際應用中作用不大,而且基本上不需要怎么修改,這幾個屬性也沒什么特殊的地方。 ⒊Session對象的方法(變量名): 從集合中刪除指定的變量() : 刪除集合中的所有變量Abandon() : 結束當前用戶會話并且撤消當前Session對象。 Session對象的(變量名)和()方法與Application對象的基本上沒什么區別,為幫助理解,大家可以參照上面的例子將Application改為Session。 這里要說明一下的是()和Abandon()的區別,執行這兩個方法都會釋放當前用戶會話的所有Session變量,不同的是()單純地釋放Session變量的值而不終止當前的會話,而Abandon()除了釋放Session變量外還會終止會話引發Session_OnEnd事件,希望大家注意兩者的區別。 ⒋Session對象的事件OnStart: 當ASP用戶會話產生時觸發,一旦有任一用戶對本服務器請求任一頁面即產生該事件。 OnEnd : 當ASP用戶會話結束時觸發,當使用Abandon()方法或超時也會觸發該事件。 這兩個事件和Application的OnStart、OnEnd事件一樣,也是必須放在文件里,下面就重點和大家研究一下這四個事件的使用。 三、的Application和Session對象體現了其他ASP內置對象所沒有的特征--事件。 每一個訪客訪問服務器時都會觸發一個OnStart事件(第一個訪客會同時觸發Application和Session的OnStart事件,但Application先于Session),每個訪客的會話結束時都會觸發一個OnEnd事件(最后一個訪客會話結束時會同時觸發Application和Session的OnEnd事件,但Session先于Application)。 OnStart和OnEnd這兩個事件一般應用在虛擬社區中統計在線人數、修改用戶的在線離線狀態等。 要具體定義這兩個事件,需要將代碼寫在文件,并將該文件放在站點的根目錄下(缺省是\Inetpub\wwwroot\)。 另外,Application和Session對象規定了在OnEnd事件里除了Application對象外其他ASP內置對象(Response、Request、Server、Session...)一概不能使用。 以下舉一個虛擬社區統計在線人數的例子來說明如何使用這兩個事件。 文件說明 位于d:\Inetpub\wwwroot\目錄下 位于d:\Inetpub\wwwroot\目錄下,虛擬社區登錄頁面 位于d:\Inetpub\wwwroot\目錄下,用于檢測用戶輸入的用戶名及密碼 位于d:\Inetpub\wwwroot\目錄下,虛擬社區 位于d:\Inetpub\wwwroot\目錄下,存儲用戶信息的數據庫數據庫(ACCESS)結構: ===bbs表===id 用戶ID,長整型name 用戶名,文本型code 密碼,文本型online 在線狀態,是/否 ======<script LANGUAGE=VBScript RUNAT=Server>Sub Application_OnStart application(online)=0End Sub sub Application_OnEndnd Sub Sub Session_OnStart End Sub Sub Session_OnEnd if (pass) then 判斷是否為登錄用戶的Session_(online)=application(online) end ifEnd Sub </script>====== ......密碼驗證,連接數據庫,檢測用戶輸入的用戶名及密碼是否正確if 密碼驗證通過 then session(name)=rs(name) session(id)=rs(id) session(pass)=trueelse 密碼錯誤! (online)=application(online)+ (update bbs set online=1 whereid))
內容聲明:
1、本站收錄的內容來源于大數據收集,版權歸原網站所有!
2、本站收錄的內容若侵害到您的利益,請聯系我們進行刪除處理!
3、本站不接受違法信息,如您發現違法內容,請聯系我們進行舉報處理!
4、本文地址:http://m.sycxjdsbhs.com/article/f7f82d3d386b38e4d8ea.html,復制請保留版權鏈接!
分布式拒絕服務,DDoS,攻擊是針對網站或在線服務的惡意嘗試,旨在使其無法正常運作,對于使用PHP構建的網站而言,DDoS攻擊可能破壞業務、導致收入損失并損害聲譽,本文旨在提供一個全面的指南,幫助PHP網站管理員了解DDoS攻擊的威脅、實施最佳實踐并部署有效的解決方案以保護他們的網站,了解DDoS攻擊DDoS攻擊通常涉及使用大量受感染...。
最新資訊 2024-09-24 14:46:33
在Java編程中,正確處理Unicode字符至關重要,Unicode是一種字符編碼標準,它允許表示世界上所有書面語言中使用的字符,遵循最佳實踐可以提高代碼質量,增強可移植性,并避免因Unicode編碼不當而導致的錯誤和問題,使用字符而非字節在Java中,字符使用char數據類型表示,而字節使用byte數據類型表示,字符表示Unicod...。
最新資訊 2024-09-23 00:05:01
在C,中,struct是一種強大的數據抽象工具,它允許您創建自定義數據類型,將數據及其操作封裝在一起,通過理解struct的工作原理,您可以利用其力量來提升您的代碼質量和可維護性,什么是Struct,struct是C,中定義用戶定義數據類型的關鍵字,它類似于class,但缺乏面向對象編程,OOP,的某些特性,例如繼承和多態性,st...。
互聯網資訊 2024-09-16 21:29:07
前言Google是開源軟件界的主力,其眾多的項目已成為許多現代應用程序和系統的基礎,從操作系統和編程語言到云計算工具和機器學習框架,Google的開源代碼影響著當今技術的各個方面,google.com,open,source,>,開發人員指南...。
最新資訊 2024-09-16 17:30:12
創建文件失敗是一個常見的Windows錯誤,通常由CreateFile函數引發,此函數用于訪問和創建文件和目錄,因此它在應用程序開發中至關重要,排查CreateFile錯誤排查CreateFile錯誤可能很困難,因為原因可能有多種,以下是一個詳盡的策略,可幫助您識別并解決這些錯誤,檢查路徑和文件名確保您正在使用的路徑和文件名有效,驗證...。
最新資訊 2024-09-14 20:08:43
引言Java核心技術是當今最重要的編程語言之一,它被廣泛應用于各種領域,包括Web開發、移動開發和企業級應用程序,為了深入掌握Java編程,了解其核心技術至關重要,Java核心技術第十二版,Java核心技術第十二版,是該經典系列的最新版本,它提供了全面且深入的Java核心技術的指南,本書由KathySierra和BertBates撰寫...。
互聯網資訊 2024-09-12 16:57:13
簡介在當今數字時代,在線視頻已成為一種流行的信息和娛樂手段,為了滿足這一需求,開發人員需要高效且功能強大的在線視頻庫,Java,作為一種廣泛使用的編程語言,為在線視頻庫的開發提供了豐富的特性和工具包,功能視頻管理上傳和下載視頻視頻轉碼,提供不同分辨率和格式視頻元數據管理,包括標題、描述和標簽視頻流播放,支持多種播放器和設備用戶管理用戶...。
本站公告 2024-09-07 21:43:43
引言在Java中,常量是指值在編譯時確定的變量,它們對于確保應用程序的健壯性非常重要,特別是在多線程環境中,本文將探討Java中的常量,并解釋為什么不可變性對于并行編程至關重要,什么是常量,常量是值不能被修改的變量,在Java中,常量可以通過使用`final`關鍵字來聲明,例如,javapublicfinalintNUM,THREAD...。
技術教程 2024-09-07 21:28:30
在Java中,可以通過兩種方式定義不可變的值,常量和最終字段,盡管它們看起來相似,但這兩者之間存在著重要的區別,理解這些區別對于編寫健壯可靠的代碼至關重要,常量常量是不變的數據,其值在編譯時確定,它們使用final關鍵字聲明,并且其類型必須是基本類型,如int或double,或字符串常量,常量在聲明時必須初始化,并且其值不能在以后更改...。
技術教程 2024-09-07 21:23:39
第1章,Android簡介Android是Google開發并維護的開源移動操作系統,主要用于智能手機、平板電腦和電視,它是一種基于Linux內核的操作系統,并使用Java語言作為其主要編程語言,以下是一些Android系統的主要特點,開源,Android系統是開源的,這意味著任何人都可以查看、修改和分發其源代碼,定制化,Android...。
技術教程 2024-09-07 20:41:23
引言在數據處理領域,隨機化扮演著至關重要的角色,幫助我們克服各種挑戰并提高數據分析和處理的效率,Random函數就是實現隨機化的一個強大工具,它可以生成隨機數,并應用于廣泛的數據操作場景中,Random函數的原理Random函數是一種內置函數,通常用于在指定范圍內生成一個隨機數,它的語法如下,random,n,其中n是一個正整數,表示...。
最新資訊 2024-09-07 02:40:05
前言作為一名PHP開發者,了解PHP的內部工作原理至關重要,本文將帶您深入PHP源碼,剖析PHP入口文件的工作機制,揭開PHP內部強大的機制,入口文件PHP的入口文件是index.php,它負責解析傳入的HTTP請求并啟動PHP應用程序,它通常位于Web服務器的根目錄中,例如,var,www,html,請求處理過程請求到達數據庫連接,...。
技術教程 2024-09-06 00:15:54