Java是一種可以撰寫跨平臺(tái)應(yīng)用軟件的面向?qū)ο蟮某绦蛟O(shè)計(jì)語言,是由Sun Microsystems公司于1995年5月推出的Java程序設(shè)計(jì)語言和Java平臺(tái)(即JavaSE, JavaEE, JavaME)的總稱。Java 技術(shù)具有卓越的通用性、高效性、平臺(tái)移植性和安全性,廣泛應(yīng)用于個(gè)人PC、數(shù)據(jù)中心、游戲控制臺(tái)、科學(xué)超級(jí)計(jì)算機(jī)、移動(dòng)電話和互聯(lián)網(wǎng),同時(shí)擁有全球最大的開發(fā)者專業(yè)社群。在全球云計(jì)算和移動(dòng)互聯(lián)網(wǎng)的產(chǎn)業(yè)環(huán)境下,Java更具備了顯著優(yōu)勢(shì)和廣闊前景。
專注于為中小企業(yè)提供成都網(wǎng)站制作、成都做網(wǎng)站服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)常山免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了近千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
目錄
JAVA簡介名字起源
早期Java
基本概念
歷史版本
第一個(gè)程序
遭遇互聯(lián)網(wǎng)
貢獻(xiàn)及影響
主要特性
相關(guān)技術(shù)
開源項(xiàng)目
Java IDE
行業(yè)復(fù)合
相關(guān)信息
架構(gòu)設(shè)計(jì)
開發(fā)技巧
與云計(jì)算
e平臺(tái)構(gòu)架與版本平臺(tái)
Java SE
Java EE
Java ME
圖書
JAVA汽車JAVA簡介 名字起源
早期Java
基本概念
歷史版本
第一個(gè)程序
遭遇互聯(lián)網(wǎng)
貢獻(xiàn)及影響
主要特性
相關(guān)技術(shù)
開源項(xiàng)目
Java IDE
行業(yè)復(fù)合
相關(guān)信息
架構(gòu)設(shè)計(jì)
開發(fā)技巧與云計(jì)算e平臺(tái)構(gòu)架與版本
平臺(tái) Java SE Java EE Java ME圖書JAVA汽車展開 編輯本段JAVA簡介
它最初被命名為Oak,目標(biāo)設(shè)定在家用電器等小型系統(tǒng)的編程語言,來解決諸如電視機(jī)、電話、鬧鐘、烤面包機(jī)等家用電器的控制和通訊問題。由于這些智能化家電的市場需求沒有預(yù)期的高,Sun放棄了該項(xiàng)計(jì)劃。就在Oak幾近失敗之時(shí),隨著互聯(lián)網(wǎng)的發(fā)展,Sun看到了Oak在計(jì)算機(jī)網(wǎng)絡(luò)上的廣闊應(yīng)用前景,于是改造了Oak,以“Java”的名稱正式發(fā)布。 JAVA
Java 編程語言的風(fēng)格十分接近C、C++ 語言。Java是一個(gè)純的面向?qū)ο蟮某绦蛟O(shè)計(jì)語言,它繼承了 C++ 語言面向?qū)ο蠹夹g(shù)的核心,Java舍棄了C ++語言中容易引起錯(cuò)誤的指針(以引用取代)、運(yùn)算符重載(operator overloading)、多重繼承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的對(duì)象所占據(jù)的內(nèi)存空間,使得程序員不用再為內(nèi)存管理而擔(dān)憂。在 Java SE 1.5 版本中,Java 又引入了泛型編程(Generic Programming)、類型安全的枚舉、不定長參數(shù)和自動(dòng)裝/拆箱等語言特性。 Java 不同于一般的編譯執(zhí)行計(jì)算機(jī)語言和解釋執(zhí)行計(jì)算機(jī)語言。它首先將源代碼編譯成二進(jìn)制字節(jié)碼(bytecode),然后依賴各種不同平臺(tái)上的虛擬機(jī)來解釋執(zhí)行字節(jié)碼,從而實(shí)現(xiàn)了“一次編譯、到處執(zhí)行”的跨平臺(tái)特性。不過,每次的編譯執(zhí)行需要消耗一定的時(shí)間,這同時(shí)也在一定程度上降低了 Java 程序的運(yùn)行效率。但在 J2SE 1.4.2 發(fā)布后,Java 的執(zhí)行速度有了大幅提升。 與傳統(tǒng)程序不同,Sun 公司在推出 Java 之際就將其作為一種開放的技術(shù)。全球數(shù)以萬計(jì)的 Java 開發(fā)公司被要求所設(shè)計(jì)的 Java 軟件必須相互兼容。“Java 語言靠群體的力量而非公司的力量”是 Sun 公司的口號(hào)之一,并獲得了廣大軟件開發(fā)商的認(rèn)同。這與微軟公司所倡導(dǎo)的注重精英和封閉式的模式完全不同。 Sun 公司對(duì) Java 編程語言的解釋是:Java 編程語言是個(gè)簡單、面向?qū)ο?、分布式、解釋性、健壯、安全與系統(tǒng)無關(guān)、可移植、高性能、多線程和動(dòng)態(tài)的語言。 Java 平臺(tái)是基于 Java 語言的平臺(tái)。這樣的平臺(tái)目前非常流行,因此微軟公司推出了與之競爭的.NET平臺(tái)以及模仿 Java 的 C# 語言。
名字起源
Java的名字的來源:Java是印度尼西亞爪哇島的英文名稱,因盛產(chǎn)咖啡而聞名。Java語言中的許多庫類名稱,多與咖啡有關(guān),如JavaBeans(咖啡豆)、NetBeans(網(wǎng)絡(luò)豆)以及ObjectBeans (對(duì)象豆)等等。SUN和JAVA的標(biāo)識(shí)也正是一杯正冒著熱氣的咖啡。 據(jù)James Gosling(詹姆斯·高斯林)回憶,最初這個(gè)為TV機(jī)頂盒所設(shè)計(jì)的語言在Sun內(nèi)部一直稱為Green項(xiàng)目。我們的新語言需要一個(gè)名字。Gosling(高斯林)注意到自己辦公室外一棵茂密的橡樹Oak,這是一種在硅谷很常見的樹。所以他將這個(gè)新語言命名為Oak。但Oak是另外一個(gè)注冊(cè)公司的名字。這個(gè)名字不可能再用了。在命名征集會(huì)上,大家提出了很多名字。最后按大家的評(píng)選次序,將十幾個(gè)名字排列成表,上報(bào)給商標(biāo)律師。排在第一位的是Silk(絲綢)。盡管大家都喜歡這個(gè)名字,但遭到James Gosling的堅(jiān)決反對(duì)。排在第二和第三的都沒有通過律師這一關(guān)。只有排在第四位的名字、得到了所有人的認(rèn)可和律師的通過,這個(gè)名字就是Java。10多年來,Java就像爪哇咖啡一樣譽(yù)滿全球,成為實(shí)至名歸的企業(yè)級(jí)應(yīng)用平臺(tái)的霸主。
早期Java
Java平臺(tái)和語言最開始只是SUN公司在1990年12開始研究的一個(gè)內(nèi)部項(xiàng)目。SUN公司的一個(gè)叫做帕特里克·諾頓的工程師被升陽自己開發(fā)的C 和C語言編譯器搞得焦頭爛額,因?yàn)槠渲械腁PI極其難用。帕特里克決定改用NeXT,同時(shí)他也獲得了研究公司的一個(gè)叫做“Stealth 計(jì)劃”的項(xiàng)目的機(jī)會(huì)。 “Stealth 計(jì)劃”后來改名為“Green計(jì)劃”,James Gosling(詹姆斯·高斯林)和麥克·舍林丹也加入了帕特里克的工作小組。他們和其他幾個(gè)工程師一起在加利福尼亞州門羅帕克市沙丘路的一個(gè)小工作室里面研究開發(fā)新技術(shù),瞄準(zhǔn)下一代智能家電(如微波爐)的程序設(shè)計(jì),SUN公司預(yù)料未來科技將在家用電器領(lǐng)域大顯身手。團(tuán)隊(duì)最初考慮使用C 語言,但是很多成員包括升陽的首席科學(xué)家比爾·喬伊,發(fā)現(xiàn)C 和可用的API在某些方面存在很大問題。 工作小組使用的是內(nèi)嵌類型平臺(tái),可以用的資源極其有限。很多成員發(fā)現(xiàn)C 太復(fù)雜以至很多開發(fā)者經(jīng)常錯(cuò)誤使用。他們發(fā)現(xiàn)C 缺少垃圾回收系統(tǒng),還有可移植的安全性、分布程序設(shè)計(jì)、和多線程功能。最后,他們想要一種易于移植到各種設(shè)備上的平臺(tái)。 根據(jù)可用的資金,比爾·喬伊決定開發(fā)一種集C語言和Mesa語言大成的新語言,在一份報(bào)告上,喬伊把它叫做“未來”,他提議SUN公司的工程師應(yīng)該在C 的基礎(chǔ)上,開發(fā)一種面向?qū)ο蟮沫h(huán)境。最初,高斯林試圖修改和擴(kuò)展C 的功能,他自己稱這種新語言為C --,但是后來他放棄了。他將要?jiǎng)?chuàng)造出一種全新的語言,被他命名為“Oak”(橡樹),以他的辦公室外的樹而命名。 就像很多開發(fā)新技術(shù)的秘密的工程一樣,工作小組沒日沒夜地工作到了1992年的夏天,他們能夠演示新平臺(tái)的一部分了,包括Green操作系統(tǒng),Oak的程序設(shè)計(jì)語言,類庫,和其硬件。最初的嘗試是面向一種類PDA設(shè)備,被命名為Star7,這種設(shè)備有鮮艷的圖形界面和被稱為“Duke”的智能代理來幫助用戶。1992年12月3日,這臺(tái)設(shè)備進(jìn)行了展示。 同年11月,Green計(jì)劃被轉(zhuǎn)化成了“FirstPerson有限公司”,一個(gè)SUN公司的全資子公司,團(tuán)隊(duì)也被重新安排到了帕洛阿爾托。FirstPerson團(tuán)隊(duì)對(duì)建造一種高度互動(dòng)的設(shè)備感興趣,當(dāng)時(shí)代華納發(fā)布了一個(gè)關(guān)于電視機(jī)頂盒的征求提議書時(shí)(Request for proposal),F(xiàn)irstPerson改變了他們的目標(biāo),作為對(duì)征求意見書的響應(yīng),提出了一個(gè)機(jī)頂盒平臺(tái)的提議。但是有線電視業(yè)界覺得FirstPerson的平臺(tái)給予用戶過多地控制權(quán),因此FirstPerson的投標(biāo)敗給了SGI。與3DO 公司的另外一筆關(guān)于機(jī)頂盒的交易也沒有成功,由于他們的平臺(tái)不能在電視工業(yè)產(chǎn)生任何效益,公司再并回SUN公司。
基本概念
final類:為防止他人從你的類上派生新類,此類是不可擴(kuò)展的。 動(dòng)態(tài)調(diào)用比靜態(tài)調(diào)用花費(fèi)的時(shí)間要長。 多態(tài)類:在java中,對(duì)象變量是多態(tài)的。而java中不支持多重繼承。 抽象類:規(guī)定一個(gè)或多個(gè)抽象方法的類本身必須定義為abstract。 例: public abstract string getDescripition Java中的每一個(gè)類都是從Object類擴(kuò)展而來的。 object類中的equal和toString方法。 equal用于測試一個(gè)對(duì)象是否同另一個(gè)對(duì)象相等。 toString返回一個(gè)代表該對(duì)象的字符串,幾乎每一個(gè)類都會(huì)重載該方法,以便返回當(dāng)前狀態(tài)的正確表示。 (toString 方法是一個(gè)很重要的方法) 通用編程:任何類類型的所有值都可以同object類型的變量來代替。 封裝:就是把數(shù)據(jù)和行為結(jié)合起在一個(gè)包中)并對(duì)對(duì)象使用者隱藏?cái)?shù)據(jù)的實(shí)現(xiàn)過程,一個(gè)對(duì)象中的數(shù)據(jù)叫他的實(shí)例字段(instance field)。 重載:當(dāng)多個(gè)方法具有相同的名字而含有不同的參數(shù)時(shí),便發(fā)生重載。編譯器必須挑選出調(diào)用哪個(gè)方法。 數(shù)組列表:ArrayList動(dòng)態(tài)數(shù)組列表,是一個(gè)類庫,定義在java.util包中,可自動(dòng)調(diào)節(jié)數(shù)組的大小。 class類 object類中的getclass方法返回class類型的一個(gè)實(shí)例,程序啟動(dòng)時(shí)包含在main方法的類會(huì)被加載,虛擬機(jī)要加載他需要的所有類,每一個(gè)加載的類都要加載它需要的類。 Java與C/C++的差異 熟悉C語言和C++語言的讀者一定想搞清楚這個(gè)問題,實(shí)際上,Java確實(shí)是從C語言和C++語言繼承了許多成份,甚至可以將Java看成是類C語言發(fā)展和衍生的產(chǎn)物。比如Java語言的變量聲明,操作符形式,參數(shù)傳遞,流程控制等方面和C語言,C++語言完全相同.盡管如此,Java和C語言,C++語言又有許多差別,主要表現(xiàn)在如下幾個(gè)方面: (1) Java中對(duì)內(nèi)存的分配是動(dòng)態(tài)的,它采用面向?qū)ο蟮臋C(jī)制,采用運(yùn)算符new為每個(gè)對(duì)象分配內(nèi)存空間,而且,實(shí)際內(nèi)存還會(huì)隨程序運(yùn)行情況而改變。程序運(yùn)行中,每個(gè), Java系統(tǒng)自動(dòng)對(duì)內(nèi)存進(jìn)行掃描,對(duì)長期不用的空間作為”垃圾”進(jìn)行收集,使得系統(tǒng)資源得到更充分地利用.按照這種機(jī)制,程序員不必關(guān)注內(nèi)存管理問題,這使Java程序的編寫變得簡單明了,并且避免了了由于內(nèi)存管理方面的差錯(cuò)而導(dǎo)致系統(tǒng)出問題。而C語言通過malloc()和free()這兩個(gè)庫函數(shù)來分別實(shí)現(xiàn)分配內(nèi)在和釋放內(nèi)存空間的,C++語言中則通過運(yùn)算符new和delete來分配和釋放內(nèi)存.在C和C++這種機(jī)制中,程序員必須非常仔細(xì)地處理內(nèi)存的使用問題。一方面,如果對(duì)己釋放的內(nèi)存再作釋放或者對(duì)未曾分配的內(nèi)存作釋放,都會(huì)造成死機(jī);而另一方面,如果對(duì)長期不用的或不再使用的內(nèi)存不釋放,則會(huì)浪費(fèi)系統(tǒng)資源,甚至因此造成資源枯竭. (2) Java不在所有類之外定義全局變量,而是在某個(gè)類中定義一種公用靜態(tài)的變量來完成全局變量的功能。 (3) Java不用goto語句,而是用try-catch-finally異常處理語句來代替goto語句處理出錯(cuò)的功能. (4) Java不支持頭文件,而C和C++語言中都用頭文件來定義類的原型,全局變量,庫函數(shù)等,這種采用頭文件的結(jié)構(gòu)使得系統(tǒng)的運(yùn)行維護(hù)相當(dāng)繁雜。 (5) Java不支持宏定義,而是使用關(guān)鍵字final來定義常量,在C++中則采用宏定義來實(shí)現(xiàn)常量定義,這不利于程序的可讀性. (6) Java對(duì)每種數(shù)據(jù)類型都分配固定長度。比如,在Java中,int類型總是32位的,而在C和C++中,對(duì)于不同的平臺(tái),同一個(gè)數(shù)據(jù)類型分配不同的字節(jié)數(shù),同樣是int類型,在PC機(jī)中為二字節(jié)即16位,而在VAX-11中,則為32位.這使得C語言造成不可移植性,而Java則具有跨平臺(tái)性(平臺(tái)無關(guān)性). (7) 類型轉(zhuǎn)換不同。在C和C++中,可通過指針進(jìn)行任意的類型轉(zhuǎn)換,常常帶來不安全性,而在Java中,運(yùn)行時(shí)系統(tǒng)對(duì)對(duì)象的處理要進(jìn)行類型相容性檢查,以防止不安全的轉(zhuǎn)換. (8) 結(jié)構(gòu)和聯(lián)合的處理。在C和C++中,結(jié)構(gòu)和聯(lián)合的所有成員均為公有,這就帶來了安全性問題,而在Java中根本就不包含結(jié)構(gòu)和聯(lián)合,所有的內(nèi)容都封裝在類里面. (9) Java不再使用指針。指針是C和C++中最靈活,也最容易產(chǎn)生錯(cuò)誤的數(shù)據(jù)類型.由指針?biāo)M(jìn)行的內(nèi)存地址操作常會(huì)造成不可預(yù)知的錯(cuò)誤,同時(shí)通過指針對(duì)某個(gè)內(nèi)存地址進(jìn)行顯式類型轉(zhuǎn)換后,可以訪問一個(gè)C++中的私有成員,從而破壞安全性。而Java對(duì)指針進(jìn)行完全地控制,程序員不能直接進(jìn)行任何指針操作.
如何把JS對(duì)象轉(zhuǎn)成數(shù)組
1. 前言
首先,當(dāng)JS對(duì)象是鍵值對(duì)的情況時(shí)(Json對(duì)象),因?yàn)閿?shù)組時(shí)以數(shù)字為索引的,所以只能把JS對(duì)象中的Key或者Value組成數(shù)組使用。
2. 樣例如下:
var?obj={"one":"I am 1","two":"I am 2"};
var?arr = Object.getOwnPropertyNames(obj);?//arr=["one", "two"]
var?arr2 = Object.keys(obj);//arr=["one", "two"]
var?valArr = arr.map(function(i){return?obj[i]});//["I am 1", "I am 2"]
var?valArr2 = arr2.map(function(i){return?obj[i]});//["I am 1", "I am 2"]
//或者2,4和3,5各自合并成一條語句
var?valArr22 = Object.keys(obj).map(function(i){return?obj[i]});//["I am 1", "I am 2"]
前言
一般而言,可以通過reduce方法實(shí)現(xiàn)的邏輯都可以通過forEach方法來變相的實(shí)現(xiàn),雖然不清楚瀏覽器的js引擎是如何在C++層面實(shí)現(xiàn)這兩個(gè)方法,但是可以肯定的是reduce方法肯定也存在數(shù)組的遍歷,在具體實(shí)現(xiàn)細(xì)節(jié)上是否針對(duì)數(shù)組項(xiàng)的操作和存儲(chǔ)做了什么優(yōu)化,則不得而知。
數(shù)組的reduce方法的應(yīng)用
reduce方法有兩個(gè)參數(shù),第一個(gè)參數(shù)是一個(gè)callback,用于針對(duì)數(shù)組項(xiàng)的操作;第二個(gè)參數(shù)則是傳入的初始值,這個(gè)初始值用于單個(gè)數(shù)組項(xiàng)的操作。需要注意的是,reduce方法返回值并不是數(shù)組,而是形如初始值的經(jīng)過疊加處理后的操作。
reduce方法最常見的場景就是疊加。
var
items
=
[10,
120,
1000];
//
our
reducer
function
var
reducer
=
function
add(sumSoFar,
item)
{
return
sumSoFar
+
item;
};
//
do
the
job
var
total
=
items.reduce(reducer,
0);
console.log(total);
//
1130
可以看出,reduce函數(shù)根據(jù)初始值0,不斷的進(jìn)行疊加,完成最簡單的總和的實(shí)現(xiàn)。
前文中也提到,reduce函數(shù)的返回結(jié)果類型和傳入的初始值相同,上個(gè)實(shí)例中初始值為number類型,同理,初始值也可為object類型。
var
items
=
[10,
120,
1000];
//
our
reducer
function
var
reducer
=
function
add(sumSoFar,
item)
{
sumSoFar.sum
=
sumSoFar.sum
+
item;
return
sumSoFar;
};
//
do
the
job
var
total
=
items.reduce(reducer,
{sum:
0});
console.log(total);
//
{sum:1130}
多重疊加
使用reduce方法可以完成多維度的數(shù)據(jù)疊加。如上例中的初始值{sum:
0}
,這僅僅是一個(gè)維度的操作,如果涉及到了多個(gè)屬性的疊加,如{sum:
0,totalInEuros:
0,totalInYen:
0}
,則需要相應(yīng)的邏輯進(jìn)行處理。
在下面的方法中,采用分而治之的方法,即將reduce函數(shù)第一個(gè)參數(shù)callback封裝為一個(gè)數(shù)組,由數(shù)組中的每一個(gè)函數(shù)單獨(dú)進(jìn)行疊加并完成reduce操作。所有的一切通過一個(gè)manager函數(shù)來管理流程和傳遞初始參數(shù)。
var
manageReducers
=
function(reducers)
{
return
function(state,
item)
{
return
Object.keys(reducers).reduce(
function(nextState,
key)
{
reducers[key](state,
item);
return
state;
},
{}
);
}
};
上面就是manager函數(shù)的實(shí)現(xiàn),它需要reducers對(duì)象作為參數(shù),并返回一個(gè)callback類型的函數(shù),作為reduce的第一個(gè)參數(shù)。在該函數(shù)內(nèi)部,則執(zhí)行多維的疊加工作(
Object.keys()
)。
通過這種分治的思想,可以完成目標(biāo)對(duì)象多個(gè)屬性的同時(shí)疊加,完整代碼如下:
var
reducers
=
{
totalInEuros
:
function(state,
item)
{
return
state.euros
+=
item.price
*
0.897424392;
},
totalInYen
:
function(state,
item)
{
return
state.yens
+=
item.price
*
113.852;
}
};
var
manageReducers
=
function(reducers)
{
return
function(state,
item)
{
return
Object.keys(reducers).reduce(
function(nextState,
key)
{
reducers[key](state,
item);
return
state;
},
{}
);
}
};
var
bigTotalPriceReducer
=
manageReducers(reducers);
var
initialState
=
{euros:0,
yens:
0};
var
items
=
[{price:
10},
{price:
120},
{price:
1000}];
var
totals
=
items.reduce(bigTotalPriceReducer,
initialState);
console.log(totals);
總結(jié)
以上就是Javascript中內(nèi)建函數(shù)reduce應(yīng)用的全部內(nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能有所幫助,如果有疑問大家可以留言交流。
前言:有些事情看上去簡單甚至于平淡無奇,比如說愛情或者我們的生活可實(shí)際上卻很復(fù)雜。js里面的event也是一樣,不信就打印一下一個(gè)平淡無奇的onclick里面包含的event,只要在方法內(nèi)傳入?yún)?shù)event,或者e,還有ev然后打印,你就會(huì)發(fā)現(xiàn)一個(gè)新的天地。
核心內(nèi)容:多種事件的運(yùn)用場景解析
開始了
1吹牛逼
2吹牛逼
3也許我別來,你自然無恙
A:復(fù)雜多樣的鼠標(biāo)事件
應(yīng)用:鼠標(biāo)事件很多,平時(shí)用個(gè)點(diǎn)擊就以為用過那就大錯(cuò)特錯(cuò)了,鼠標(biāo)事件不僅有原生的點(diǎn)擊,雙擊,移動(dòng),進(jìn)入,移出,懸浮,可以打印event里面的type查看,還有一些比如jq封裝的事件,這些事件而且會(huì)相互觸發(fā),比如移動(dòng)move是最容易被其他事件觸發(fā),或者原生的拖拽事件,不僅有自己的事件,而且會(huì)觸發(fā)元素上的很多其他事件。
B:為什么會(huì)這樣呢?
解析:第一本身不同事件類型但是相近的鼠標(biāo)操作就會(huì)同時(shí)觸發(fā),第二在多層dom結(jié)構(gòu)中的事件,由于本身事件的冒泡機(jī)制,由最底層的元素向上冒泡,到父元素到document到window,以至于類似事件不同方法但是同時(shí)觸發(fā)
C:怎么解決
辦法:比如現(xiàn)象一:只想觸發(fā)最底層的元素的點(diǎn)擊事件,不觸發(fā)其父元素的點(diǎn)擊事件,解決方案阻止冒泡?,F(xiàn)象二:類型相近事件相互觸發(fā),導(dǎo)致方法重復(fù)執(zhí)行,解決方案在易促發(fā)的事件的方法中可以加入條件判斷,是否已經(jīng)執(zhí)行過相同操作,如果有要么直接return,如果還有其他操作判斷,可以將可能重復(fù)的那個(gè)操作進(jìn)行重置?,F(xiàn)象三:原生方法事件以及簡單事件相互交叉影響導(dǎo)致最后鼠標(biāo)事件失靈,定義的方法不能執(zhí)行,頁面不可控制,解決方案單個(gè)功能實(shí)現(xiàn)后進(jìn)行方法設(shè)為null如dom.onclick=null,然后設(shè)置dom對(duì)象釋放捕獲。
event事件實(shí)在太多太復(fù)雜了,正如人生一樣,可是有時(shí)候多一點(diǎn)細(xì)心多一點(diǎn)耐心,沒事多打打斷點(diǎn)和測試,我們會(huì)看得更加清晰,正如我若別來,你自然無恙,越是糾結(jié),越是沉淪,往往簡單最好。
事件人生,人生事件,簡單復(fù)雜,復(fù)雜簡單,一正一反,經(jīng)歷了自然會(huì)成長,花香了自然蝶飛舞。
前言: 現(xiàn)在前端寫項(xiàng)目估計(jì)都是使用 NodeJs 來構(gòu)建,一般在安裝 npm 包的時(shí)候,我們會(huì)對(duì)項(xiàng)目進(jìn)行初始化,這是輸入命令: npm init 或 npm init -y 。接下來就是幾個(gè)交互命令,輸入完成就會(huì)創(chuàng)建一個(gè)依賴文件: package.json 。
但如果想自己做一個(gè)腳手架或者在某些時(shí)候在 CMD 窗口進(jìn)行交互,這個(gè)時(shí)候就可以使用 inquirer.js 。
首先 npm init 初始化一個(gè)文件夾,來測試這個(gè)庫,然后安裝包:
再在文件夾里面新建一個(gè) app.js ,接下來的所有測試均在這個(gè)文件里面。
運(yùn)行測試結(jié)果:
程序運(yùn)行結(jié)果:
接下來如果你想要一百個(gè)輸入那?肯定是。。。(情商)
看看 validate 是啥樣?
測試結(jié)果:
看看三種不同輸入結(jié)果有啥變化?
list 一般配合 choices 使用:
查看動(dòng)圖效果:
list 改成 rawlist
自己可以試試按下 h/H 回車的頁面是啥。
如果不想自定義還可以:
使用首選編輯器打開一個(gè)臨時(shí)文件,用戶退出編輯器后,將讀取臨時(shí)文件的內(nèi)容。首選編輯器可以指定。
用來更改顯示行數(shù)只對(duì) list, rawList, expand 或 checkbox 有效。
只有一行,通過上下方向鍵來選擇:
2019年10月14日23:09:42
JAVA簡介
最近深刻感受到了一句俗化:要想把一個(gè)事務(wù)了解清楚,就必須知道它的歷史。
原來沒覺得歷史有多么重要,現(xiàn)在感覺到了。呵呵。
AVA介紹
一、前言
『Java』從1995年的暑假開始在計(jì)算機(jī)業(yè)界就受到了高度注意,特別是在Internet和多媒體(Multimedia)相關(guān)產(chǎn)品類方面。Java為何有如此這么大的魅力?人作如此的比喻: Java在全球資訊網(wǎng)(World Wide Web, WWW)地位就如同電子表格(Spreadsheet)與個(gè)人計(jì) 算機(jī)(PC)的關(guān)系。那Java究竟有那些特色呢?
Java是一種軟件技術(shù)
是一種由美國SUN計(jì)算機(jī)公司(Sun Microsystems, Inc.)所研究而成的語言
是一種為 Internet發(fā)展的計(jì)算機(jī)語言
是一種使網(wǎng)頁(Web Page)產(chǎn)生生動(dòng)活潑畫面的語言
是一種使網(wǎng)頁(Web Page)由靜態(tài)(Static)轉(zhuǎn)變?yōu)閯?dòng)態(tài)(Dynamic)的語言
是一種語言,用以產(chǎn)生「小應(yīng)用程序(Applet(s))」
是一種簡化的C++語言 是一種安全的語言,具有阻絕計(jì)算機(jī)病毒傳輸?shù)墓δ?/p>
是一種將安全性(Security)列為第一優(yōu)先考慮的語言
是一種使用者不需花費(fèi)很多時(shí)間學(xué)習(xí)的語言
是一種突破用戶端機(jī)器環(huán)境和CPU結(jié)構(gòu)的語言
是一種「寫一次,即可在任何機(jī)器上執(zhí)行(Write OnceRun Anywhere)」的語言是有史以來,第一套允使用者將應(yīng)用程序(Applications)通過Internet從遠(yuǎn)端的服務(wù)器(Remote Server)傳輸?shù)奖镜囟说臋C(jī)器上(LocalMachine)并執(zhí)行
是一種應(yīng)用程序提供者不需要知道使用者的計(jì)算機(jī)硬件(如:Sun, Intel, 或MAC等)與軟件(如:SW- UNIX, MAC O/S, Windows, 或NT等)環(huán)境的語言(Kestenbaum, 1995)。
下面將依序地介紹Java,首先是Java的發(fā)展歷史與Java語言介紹,其次依序是Java Applet和HotJava的簡單介紹。
二、Java FAQ
下面以問答的方式來說明Java的發(fā)展歷史與其背景(下列內(nèi)容整理自 Java FAQ list and Tutorial和The Java Language: A White Paper,讀者若欲深 入了解,請(qǐng)自行參閱原文):
Java何時(shí)開始發(fā)展?(When)
最早大概可追溯至1991年四月份,Sun的綠色計(jì)劃(Green Project)開始著手于發(fā)展消費(fèi)性電子產(chǎn)品(Consumer Electronics),所使用的語言是C、C++、及Oak (為Java語 言的前身),后因語言本身和市場的問題,使得消費(fèi)性電子產(chǎn)品的發(fā)展無法達(dá)到當(dāng)初 預(yù)期的目標(biāo),再加上網(wǎng)絡(luò)的興起, 綠色計(jì)劃也因此而改變發(fā)展的方向,這已是1994 年了。
為何稱之為Java?(Why) "Java"是美國SUN計(jì)算機(jī)公司Java發(fā)展小組歷經(jīng)無數(shù)次的激烈討論之后才被選擇出。生動(dòng)(Liveliness)、動(dòng)畫(Animation)、速度(Speed)、交互性(Interactivity)為當(dāng)初選擇名字時(shí)所欲表達(dá)出的特色。"Java"是在無數(shù)的建議中脫穎而出的,而"Java" 不是由幾個(gè)單字的首字所組成,而是從許多程序設(shè)計(jì)師鐘愛的熱騰騰、香濃咖啡中 產(chǎn)生靈感的。
誰開發(fā)了Java?(Who) Java是美國SUN計(jì)算機(jī)公司Java發(fā)展小組開發(fā)的,早期的成員(綠色工程)是Patrick Naughton, James Gosling, Mike Sheridan,而現(xiàn)在大家較為熟悉的成員是James Gosling。
在那里開發(fā)了Java?(Where)
也就是問Java的出生地?答案是美國。
如何可以找到所需的Java信息?(How to)
在網(wǎng)路上,您可以連到Sun公司的Java WWW網(wǎng)站,URL是,或是 。在那里幾乎可以找到您所需要的所有Java信息,但是語 言多少是一個(gè)障礙, 至少對(duì)某些人而言;沒關(guān)系,目前國內(nèi)已有很多個(gè)網(wǎng)站提供中文 Java信息。在清華和中科院的FTP站點(diǎn)上有不少有關(guān)資料。想象以后應(yīng)會(huì)有更多的站點(diǎn)提供相關(guān)信息。
如何才能看到Java的效果?(How Do I)
首先您需要有含有Java解釋器的瀏覽器(Browser),例如:Netscpae公司的Netscape Navigator 2.0以上或是Sun公司的HotJava瀏覽器,對(duì)個(gè)人計(jì)算機(jī)使用者而言,操作 系統(tǒng)需是Windows 95或是Windows NT。
Java是因?yàn)樽珜慍++語言程序時(shí)的困難而研制開的,起先,只是一個(gè)消費(fèi)性電子產(chǎn)品大計(jì)劃中的一部份,C++語言是當(dāng)初被考慮采用的,但從一開始的編譯問題一直到最后的一連串問題迫使得放棄C++語言,而有Java語言的產(chǎn)生。Sun是要Java成為一個(gè)簡 單(Simple)、面向?qū)ο蟮?Object Oriented)、 分布式的(Distributed)、解釋的(Interpreted)、健壯的(Robust)、安全的(Secure)、結(jié)構(gòu)中立的(Architecture Neutral)、可移植的(Portable)、高效能的(High Performance)、多線程的(Multithreaded)、動(dòng)態(tài)的(Dynamic)的程序語言(摘譯自 TheJava Language: A White Paper, 1995)。
在Sun的Java語言白皮書中明白地說明上述Java語言的技巧。若以木工為比喻,一個(gè)面向?qū)ο蟮哪竟ぃ?她)最主要的重點(diǎn)是即將要做的木椅子,其次才是所需要的工具;反之;一個(gè)以非面向?qū)ο蟮哪竟ぃ?她)所關(guān)心的只是工具。最近的即插即用(Plug and Play)亦是面向?qū)ο笤O(shè)計(jì)的重點(diǎn)。分布式的(Distributed):Java有一個(gè)很周全的程薪錄JAVA介紹 。
一、
『Java』從1995年的暑假開始在計(jì)算機(jī)業(yè)界就受到了高度注意,特別是在Internet和多媒體(Multimedia)相關(guān)產(chǎn)品類方面。Java為何有如此這么大的魅力?人作如此的比喻: Java在全球資訊網(wǎng)(World Wide Web, WWW)地位就如同電子表格(Spreadsheet)與個(gè)人計(jì)算機(jī)TTP和FTP等TCP/IP通訊協(xié)定相配合。Java應(yīng)用程序(Applications) 能在網(wǎng)路上開啟及連結(jié)使用物件,就如同透過URLs連結(jié)使用一個(gè)本地文件系統(tǒng)(Local File System)。健壯的(Robust):由Java所編寫出的程序能在多種情況下執(zhí)行而具有其穩(wěn)定性。Java與 C/C++最大不同點(diǎn)是Java有一個(gè)指針模型(Pointer Model)來排除內(nèi)存被覆蓋(Overwriting Memory)和毀損數(shù)據(jù)(Corrupting Data)的可能性。
安全的(Secure):Java是被設(shè)計(jì)用于網(wǎng)絡(luò)及分布式的環(huán)境中,安全性自必是一個(gè)很 重要的考慮。Java擁有數(shù)個(gè)階層的互鎖(Interlocking)保護(hù)措施,能有效地防止病 毒的侵入和破壞行為的發(fā)生。
結(jié)構(gòu)中立的(Architecture Neutral):一般而言,網(wǎng)絡(luò)是由很多不同機(jī)型的機(jī)器所組合而成的,CPU和作業(yè)系統(tǒng)體系結(jié)構(gòu)均有所不同;因此,如何使一個(gè)應(yīng)用程序可以在每一種機(jī)器上執(zhí)行,是一個(gè)難題。所幸,Java的編譯器產(chǎn)生一種結(jié)構(gòu)中立的目標(biāo) 文件格式(Object File Format);這使得編譯碼得以在很多種處理器中執(zhí)行。
可移植的(Portable):原始資料型式的大小是被指定的,例如"float"一直是表示一 個(gè)32位元IEEE 754浮點(diǎn)運(yùn)算數(shù)字,因絕大多數(shù)的CPU都具有此共同特征。程序庫屬于系統(tǒng)的一部份,它定義了一些可移植的程序接口,Java本身具備有很好的可移植性。
解釋的(Interpreted):Java解釋器能直接地在任何機(jī)器上執(zhí)行Java位元碼(Bytecodes), 因此在進(jìn)行程序連結(jié)時(shí),時(shí)間的節(jié)省,這對(duì)于縮短程序的開發(fā)過程,有極大的幫助。
高效能的(High Performance):Java位元碼迅速地能被轉(zhuǎn)換成機(jī)器碼(Machine Code), 從位元碼轉(zhuǎn)換到機(jī)器碼的效能幾乎與C與C++沒有分別。
多線程的(Multi threaded):Java語言具有多線程的功能,這對(duì)于交互回應(yīng)能力及 即時(shí)執(zhí)行行為是有幫助的。
動(dòng)態(tài)的(Dynamic):Java比C或C++語言更具有動(dòng)態(tài)性,更能適應(yīng)時(shí)刻在變的環(huán)境, Java不會(huì)因程序庫的更新,而必須重新編譯程序。
此外,Hank Shiffman (Making Sense of Java)亦針一般對(duì)Java的錯(cuò)誤看法及觀 念提出他的說明,特在此摘譯如下:
"Java是一種編寫Web Pages的一種語言,就如同HTML和VRML一樣" 事實(shí)上,Java并不像是HTML此一類的描述語言(Description Language),而是一種 編程語言(Programming Language)。描述語言標(biāo)明內(nèi)容和位置,而編程語言描述一 種產(chǎn)生結(jié)果的過程。
2. "Java語言容易學(xué)習(xí)和使用,不像C、C++和其它程序語言"
Java是一種編程語言。Java容易學(xué)嗎?Java或許是比C或C++容易學(xué),但仍是一種編程語言,而不是一種描述語言。
3. "Java碼是可移植的,但C及C++不是"
Java原代碼(Source Code)是比C語言來得可移植一點(diǎn),差別在于Java的目標(biāo)碼。 Java碼在一種機(jī)器上進(jìn)行編譯,而能在所有的機(jī)器上執(zhí)行, 只要那部機(jī)器上有 Java解釋器。
4. "Java能被拓展而在機(jī)器上執(zhí)行任何事情"
理論上,Java Applet (Java小應(yīng)用程序)能做任何事情,如模擬3D VRML模型、播放電影、產(chǎn)生音頻....等。但事實(shí)上,一個(gè)小應(yīng)用程序(Applet)僅能在那一頁上被執(zhí)行,而無法在那一頁之外執(zhí)行。同時(shí),Java亦受限于程序庫的功能。
5. "Java是適合于建立大型的應(yīng)用程序"
如果Java適合于大型程序,則Java就不適合應(yīng)用于Web瀏覽器了。第一個(gè)商業(yè) 性的Java Applets (Applix's Java-Based Spreadsheet) 并不是全然使用Java, 它只使用Java作為用戶接口,而所有的處理工作, 是用CGI碼。
6. "Java是解釋執(zhí)行的,Basic是解釋執(zhí)行的,因此Java=Basic"
雖然Java的確是使用解釋器,但事實(shí)上,Java則與C或C++等完全編譯語言較為相近,但與Basic或APL等完全解譯語言較不相近。
7. "Java刪除了CGI命令稿(Scripts)和程序的需求"
Java Applets將會(huì)取代部份CGI的用途。在有些情況,Java Applets能夠取代一些服務(wù)器端代碼(Server-Side Code),但大多數(shù)的情況,基于安全性理由或是效 能的考慮,Java仍無法全然取代CGI Scripts。
8. "Netscape's JavaScript是與Java有相關(guān)"
除了名稱之外,Java和JavaScript是有一點(diǎn)點(diǎn)相關(guān)。JavaScript是一種命令稿語言,是可以在HTML頁中使用。Java碼并未出現(xiàn)在HTML中,而在HTML中通過一個(gè)鏈結(jié)來鏈結(jié)編譯碼組。Java和JavaScript之間的關(guān)系就如同C語言和C Shell一般。
當(dāng)前名稱:javascript前言,javascript用法
本文URL:http://aaarwkj.com/article26/dsspojg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標(biāo)簽優(yōu)化、網(wǎng)站制作、微信小程序、企業(yè)建站、外貿(mào)建站、網(wǎng)站改版
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)