成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

軟件工程師需要掌握的幾個(gè)概念

企業(yè)動(dòng)態(tài)
在軟件工程方面我們需要掌握如下十個(gè)概念:界面、慣例與模板、分層、算法、散列法、緩存、并發(fā)、云計(jì)算、安全和關(guān)系數(shù)據(jù)庫(kù)。

軟件工程是最為熱門(mén)的行業(yè)之一,在這方面我們需要學(xué)習(xí)的東西非常多。如果你想成為一名軟件工程師的話(huà),那么下面的概念你就一定要了解并且掌握。

1. 界面(Interfaces)

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

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

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

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

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

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

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

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

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

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

3. 分層 (Layering)

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

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

Lakos 在軟件工程的很多方面都是先驅(qū),最著名的是 Refactoring (代碼重構(gòu))。代碼重構(gòu)指的是,在編程過(guò)程中需要不斷地對(duì)代碼進(jìn)行改造以保證其結(jié)構(gòu)的健壯與靈活。

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

關(guān)于算法的復(fù)雜性,軟件工程師需要理解這樣幾件事。

第一,大O標(biāo)記法(big O notation);

第二,你永遠(yuǎn)都不應(yīng)該使用嵌套式循環(huán)(循環(huán)里面套循環(huán)),你應(yīng)該使用 Hash 表,數(shù)組或單一循環(huán);

第三,如今優(yōu)秀類(lèi)庫(kù)比比皆是,我們不必過(guò)分糾纏于這些庫(kù)的效能的差別,我們以后還有機(jī)會(huì)進(jìn)行細(xì)調(diào);最后,不要忽視算法的優(yōu)雅及性能,編寫(xiě)緊湊的,可讀的代碼可以讓你的算法更簡(jiǎn)單,更干凈。

5. 散列法(Hashing)

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

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

散列函數(shù)非常復(fù)雜,但現(xiàn)代類(lèi)庫(kù)中都有現(xiàn)成的類(lèi),重要的是,如何對(duì)散列法進(jìn)行細(xì)調(diào)以獲得最好的性能。#p#

6. 緩存(Caching)

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

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

7. 并發(fā) (Concurrency)

并發(fā)是軟件工程師最容易犯錯(cuò)的地方,這可以理解,因?yàn)槲覀円恢弊駨木€形思維,然而并發(fā)在現(xiàn)代系統(tǒng)中非常重要。

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

8. 云計(jì)算 (Cloud Computing)

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

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

9. 安全 (Security)

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

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

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

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

10. 關(guān)系數(shù)據(jù)庫(kù) (Relational Databases)

關(guān)系數(shù)據(jù)庫(kù)因?yàn)樵诖笠?guī)模 Web 服務(wù)上缺乏可擴(kuò)充性而頗受微詞,然而,關(guān)系數(shù)據(jù)庫(kù)仍然是近20年來(lái)計(jì)算機(jī)技術(shù)中最偉大的成就。關(guān)系數(shù)據(jù)庫(kù)對(duì)處理訂單,公司數(shù)據(jù)方面有著出色的表現(xiàn)。

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

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

【編輯推薦】

  1. 國(guó)際軟件工程師就業(yè)班課程介紹
  2. Java高級(jí)軟件工程師缺口巨大 供不應(yīng)求
  3. 軟考上午題知識(shí)點(diǎn)歸納:軟件工程概念
  4. 中國(guó)軟件工程師國(guó)外受追捧 月薪基本1萬(wàn)以上
  5. "名校培訓(xùn)" 25萬(wàn)年薪赴日當(dāng)軟件工程師原為騙局
責(zé)任編輯:佟健 來(lái)源: eol IT培訓(xùn)
相關(guān)推薦

2017-09-22 08:33:34

機(jī)器學(xué)習(xí)Web設(shè)計(jì)UI

2009-07-16 13:28:14

2011-07-08 16:37:20

2023-10-23 11:49:59

2009-07-02 14:05:55

2022-07-29 09:12:44

軟件硬件開(kāi)發(fā)

2013-09-03 09:30:44

軟件工程師軟件工程師頭銜

2022-09-16 08:00:00

軟件工程師求職薪酬

2022-01-16 07:12:30

軟件工程師吵架開(kāi)發(fā)

2009-02-11 13:15:54

軟件工程師女工程師google

2023-06-05 10:07:13

軟件工程平臺(tái)工程師

2017-11-09 14:12:44

大數(shù)據(jù)軟件工程師算法工程師

2015-06-02 11:29:55

軟件工程師程序員

2009-02-12 11:52:23

軟件工程師職業(yè)規(guī)劃價(jià)值

2018-01-09 17:21:18

軟件工程師創(chuàng)業(yè)代碼

2021-04-22 09:00:00

軟件工程師代碼

2015-06-02 04:08:42

軟件工程師私活

2020-03-17 15:15:49

Python工程師面試題

2022-04-18 10:13:32

軟件開(kāi)發(fā)寫(xiě)作

2014-08-20 10:24:11

軟件工程師
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 精品二区| 久久久婷| 亚洲精品在线看 | 国产精品乱码一二三区的特点 | 亚洲欧洲一区 | 一本大道久久a久久精二百 国产成人免费在线 | 亚洲一区二区三区视频 | 欧美在线日韩 | 成人av片在线观看 | 国产一区二区黑人欧美xxxx | 国产自产c区| www.久久国产精品 | 日韩欧美三区 | 91精品观看 | 久草精品视频 | 色视频在线免费观看 | 狠狠亚洲 | 亚洲嫩草 | 欧美国产视频 | 99久久婷婷国产综合精品电影 | 福利视频网站 | 在线视频一区二区 | 日本在线播放 | 国产亚洲成av人片在线观看桃 | 欧美色成人| 羞羞色在线观看 | 久久免费视频在线 | 中文字幕在线免费视频 | 91麻豆产精品久久久久久 | 亚洲一区二区三区视频 | 久久999| 亚洲经典一区 | 国产精品免费在线 | 欧美日韩精品专区 | 精品国产乱码久久久久久88av | 成人欧美一区二区三区在线播放 | 在线激情视频 | 天天插天天操 | www312aⅴ欧美在线看 | www.狠狠操| 亚洲精品一区二区久 |