激情欧美日韩一区二区,浪货撅高贱屁股求主人调教视频,精品无码成人片一区二区98,国产高清av在线播放,色翁荡息又大又硬又粗视频

軟件工程師必須知道的10個(gè)概念

時(shí)間:2024-08-11 05:17:29 NIIT認證 我要投稿
  • 相關(guān)推薦

軟件工程師必須知道的10個(gè)概念

  優(yōu)秀的軟件工程師要通曉10個(gè)概念,這10個(gè)概念超越了編程語(yǔ)言與設計模式,軟件工程師應當從更廣的范圍內明白這些道理。下面一起和小編來(lái)看看吧!

  10. 關(guān)系數據庫 (Relational Databases)

  關(guān)系數據庫因為在大規模 Web 服務(wù)上缺乏可擴充性而頗受微詞,然而,關(guān)系數據庫仍然是近20年來(lái)計算機技術(shù)中最偉大的成就。關(guān)系數據庫對處理訂單,公司數據方面有著(zhù)出色的表現。

  關(guān)系數據庫的核心是以記錄表示數據,記錄存放在數據庫表,數據庫使用查詢(xún)語(yǔ)言(SQL)對數據進(jìn)行搜索與查詢(xún),同時(shí),數據庫對各個(gè)數據表進(jìn)行關(guān)聯(lián)。

  數據庫的標準化技術(shù)(normalization)講的是使用正確的方式對數據進(jìn)行分存以降低冗余,并加快存取速度。

  9. 安全 (Security)

  隨著(zhù)黑客的崛起與數據敏感性的上升,安全變得非常重要。安全是個(gè)廣義的概念,涉及驗證,授權與信息傳輸。

  驗證是對用戶(hù)的身份進(jìn)行檢查,如要求用戶(hù)輸入密碼。驗證通常需要結合 SSL (secure socket layer)進(jìn)行;授權在公司業(yè)務(wù)系統中非常重要,尤其是一些工作流系統。最近開(kāi)發(fā)的 OAuth 協(xié)議可以幫助 Web 服務(wù)將相應信息向相應用戶(hù)開(kāi)放。Flickr 便使用這種方式管理私人照片和數據的訪(fǎng)問(wèn)權限。

  另外一個(gè)安全領(lǐng)域是網(wǎng)絡(luò )設防,這關(guān)系到操作系統,配置與監控。不僅網(wǎng)絡(luò )危險重重,任何軟件都是。Firefox 被稱(chēng)為最安全的瀏覽器,仍然需要頻頻發(fā)布安全補丁。要為你的系統編寫(xiě)安全代碼就需要明白各種潛在的問(wèn)題。

  8. 云計算 (Cloud Computing)

  RWW 最近的關(guān)于云計算的文章 Reaching For The Sky Through Compute Clouds 講到了云計算如何改變大規模 Web 應用的發(fā)布。大規模的并行,低成本,與快速投入市場(chǎng)。

  并行算法發(fā)明以來(lái),首先迎來(lái)的是網(wǎng)格計算,網(wǎng)格計算是借助空閑的桌面計算機資源進(jìn)行并行計算。最著(zhù)名的例子是 Berkley 大學(xué)的 SETI@home 計劃,該計劃使用空閑的 CPU 資源分析太空數據。金融機構也大規模實(shí)施網(wǎng)格計算進(jìn)行風(fēng)險分析?臻e的資源,加上 J2EE 平臺的崛起,迎來(lái)了云計算的概念:應用服務(wù)虛擬化。就是應用按需運行,并可以隨著(zhù)時(shí)間和用戶(hù)規模而實(shí)時(shí)改變。

  云計算最生動(dòng)的例子是 Amazon 的 Web 服務(wù),一組可以通過(guò) API 進(jìn)行調用的應用,如云服務(wù)(EC2),一個(gè)用來(lái)存儲大型媒體文件的數據庫(S3),索引服務(wù)(SimpleDB),序列服務(wù)(SQS)。

  7. 并發(fā) (Concurrency)

  并發(fā)是軟件工程師最容易犯錯的地方,這可以理解,因為我們一直遵從線(xiàn)形思維,然而并發(fā)在現代系統中非常重要。

  并發(fā)是程序中的并行處理,多數現代編程語(yǔ)言包含內置的并發(fā)能力,在 Java,指的是線(xiàn)程。關(guān)于并發(fā),最經(jīng)典的例子是“生產(chǎn)/消費”模式,生產(chǎn)方生產(chǎn)數據和任務(wù),并放入工作線(xiàn)程消費或執行。并發(fā)的復雜性在于,線(xiàn)程需要經(jīng)常訪(fǎng)問(wèn)共同數據,每個(gè)線(xiàn)程都有自己的執行順序,但需要訪(fǎng)問(wèn)共同數據。Doug Lea 曾寫(xiě)過(guò)一個(gè)最復雜的并發(fā)類(lèi),現在是 core Java 的一部分。

  6. 緩存(Caching)

  緩存對現代 Web 程序不可或缺,緩存是從數據庫取回,并存放在內存中的數據。因為數據庫直接存取的代價(jià)非常高,將數據從數據庫取回并放在緩存中訪(fǎng)問(wèn)就變得十分必要。比如,你有一個(gè)網(wǎng)站,要顯示上周的暢銷(xiāo)書(shū),你可以從數據將暢銷(xiāo)書(shū)榜一次性取回放在緩存中,而不必在每次訪(fǎng)問(wèn)時(shí)都去數據庫讀數據。

  緩存需要代價(jià),只有最常用的內容才可以放入緩存。很多現代程序,包括臉譜網(wǎng),依靠一種叫做 Memcached 的分布式緩存系統,該系統是 Brad Firzpatrick 在工作于 LiveJournal 項目時(shí)開(kāi)發(fā)的,Memcached 使用網(wǎng)絡(luò )中空閑的內存資源建立緩存機制,Memcached 類(lèi)庫在很多流行編程語(yǔ)言,包括 Java 和 PHP 中都有。

  5. 散列法(Hashing)

  Hashing 的目的是加速訪(fǎng)問(wèn)速度。如果數據是序列存儲的,從中查詢(xún)一個(gè)項的時(shí)間取決于數據列的大小。而散列法對每一個(gè)項計算一個(gè)數字作為索引,在一個(gè)好的 Hashing 算法下,數據查找的速度是一樣的。

  除了存儲數據,散列法對分布式系統也很重要。統一散列法(uniform hash )用來(lái)在云數據庫環(huán)境下,在不同計算機之間分存數據。Google 的索引服務(wù)就是這種方法的體現,每一個(gè) URL 都被散列分布到特定計算機。

  散列函數非常復雜,但現代類(lèi)庫中都有現成的類(lèi),重要的是,如何對散列法進(jìn)行細調以獲得最好的性能。

  4. 算法的復雜性 (Algorithmic Complexity)

  關(guān)于算法的復雜性,軟件工程師需要理解這樣幾件事。第一,大O標記法(big O notation);第二,你永遠都不應該使用嵌套式循環(huán)(循環(huán)里面套循環(huán)),你應該使用 Hash 表,數組或單一循環(huán);第三,如今優(yōu)秀類(lèi)庫比比皆是,我們不必過(guò)分糾纏于這些庫的效能的差別,我們以后還有機會(huì )進(jìn)行細調;最后,不要忽視算法的優(yōu)雅及性能,編寫(xiě)緊湊的,可讀的代碼可以讓你的算法更簡(jiǎn)單,更干凈。

  3. 分層 (Layering)

  用分層來(lái)討論軟件架構是最容易的。John Lakos 曾出版過(guò)一本關(guān)于大型 C++ 系統的書(shū)。Lakos 認為軟件包含了層,書(shū)中介紹了層的概念,方法是,對每個(gè)軟件組件,數一下它所依賴(lài)的組件數目就可以知道它的復雜程度。

  Lakos 認為,一個(gè)好的軟件擁有金字塔結構,就是說(shuō),軟件組件擁有層層積累的復雜度,但每個(gè)組件本身必須簡(jiǎn)單,一個(gè)優(yōu)秀的軟件包含很多小的,可重復使用的模塊,每個(gè)模塊有自己的職責。一個(gè)好的系統中,組件之間的依賴(lài)性不可交叉,整個(gè)系統是各種各樣的組件堆積起來(lái),形成一個(gè)金字塔。

  Lakos 在軟件工程的很多方面都是先驅?zhuān)钪?zhù)名的是 Refactoring (代碼重構)。代碼重構指的是,在編程過(guò)程中需要不斷地對代碼進(jìn)行改造以保證其結構的健壯與靈活。

  2. 慣例與模板 (Conventions and Templates)

  命名慣例和基礎模板在編程模式中常被忽視,然而它可能是最強大的方法。命名慣例使軟件自動(dòng)化成為可能,如,Java Beans 框架在 getter 和 setter 方法中,使用簡(jiǎn)單的命名慣例。del.icio.us 網(wǎng)站的 URL 命名也使用統一的格式,如 http://del.icio.us/tag/software 會(huì )將用戶(hù)帶到所有標簽為 software 的頁(yè)。

  很多社會(huì )網(wǎng)絡(luò )均使用簡(jiǎn)單命名,如,你的名字是 johnsmith ,那你的頭像可能命名為 johnsmith.jpg,而你的 rss 聚合文件的命名很可能是 johnsmith.xml 。

  命名慣例還用于單元測試,如,JUnit 單元測試工具會(huì )辨認所有以 test 開(kāi)頭的類(lèi)。

  我們這里說(shuō)的模板(templates )指的并不是 C++ 或 Java 語(yǔ)言中的 constructs,我們說(shuō)的是一些包含變量的模板文件,用戶(hù)可以替換變量并輸出最終結果。

  Cold Fusion 是最先使用模板的程序之一,后來(lái),Java 使用 JSP 實(shí)現模板功能。Apache 近來(lái)為 Java 開(kāi)發(fā)了非常好用的通用模板, Velocity。PHP 本身就是基于模板的,因為它支持 eval 函數。

  1. 界面(Interfaces)

  軟件工程中最重要的概念是界面。任何軟件都是一個(gè)真實(shí)系統的模型。

  如何使用簡(jiǎn)單的用戶(hù)界面進(jìn)行模型化至關(guān)重要。很多軟件系統走這樣的極端,缺乏抽象的冗長(cháng)代碼,或者過(guò)分設計而導致無(wú)謂的復雜。

  在眾多軟件工程書(shū)籍中,Robert Martin 寫(xiě)的《敏捷編程》值得一讀。

  關(guān)于模型化,以下方法對你會(huì )有幫助。首先,去掉那些只有在將來(lái)才可能用得著(zhù)的方法,代碼越精練越好。第二,不要總認為以前的東西是對的,要善于改變。第三,要有耐心并享受過(guò)程。

【軟件工程師必須知道的10個(gè)概念】相關(guān)文章:

軟件工程師必須知道的20個(gè)常識03-12

學(xué)化妝必須知道的知識01-09

備考雅思 這些必須知道!03-20

日本留學(xué)的必須知道的事項03-18

工程師必須知道的電子電路設計基礎知識03-08

韓國留學(xué)必須知道的事項介紹03-24

英國留學(xué)之前必須知道的事情03-13

女秘書(shū)必須知道的要點(diǎn)03-12

25歲必須知道的化妝技巧03-21

激情欧美日韩一区二区,浪货撅高贱屁股求主人调教视频,精品无码成人片一区二区98,国产高清av在线播放,色翁荡息又大又硬又粗视频