成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

Java入坑指南

Rindia / 1271人閱讀

摘要:入坑指南是滴,下面是一個(gè)最低的入坑還應(yīng)該有種設(shè)計(jì)模式應(yīng)該掌握的。堆棧以幀為單位保存線程的狀態(tài),對(duì)堆棧的操作為壓棧和出棧執(zhí)行字節(jié)碼以后,將會(huì)產(chǎn)生程序計(jì)數(shù)器和棧,程序計(jì)數(shù)器存放將要執(zhí)行下一條指令的偏移量。

Java入坑指南
是滴,下面是一個(gè)最低的入坑

還應(yīng)該有23種設(shè)計(jì)模式應(yīng)該掌握的。╮(╯▽╰)╭
注意,第一個(gè)j是大寫(xiě)。

Java的特點(diǎn)跨平臺(tái),風(fēng)格接近C++
最重要的api文檔 https://docs.oracle.com/javas...

語(yǔ)言特點(diǎn)

面向?qū)ο?/p>

跨平臺(tái),運(yùn)行在JRE上,JRE包括JVM

具有自動(dòng)垃圾回收的機(jī)制

屬于強(qiáng)類(lèi)型,簡(jiǎn)單,面向?qū)ο螅植际?,健壯的,安全的,可移植的,解釋型語(yǔ)言(將會(huì)翻譯成字節(jié)碼,在JVM上運(yùn)行),高性能,動(dòng)態(tài),多線程。

開(kāi)發(fā)工具

JDK,一個(gè)工具包,面向開(kāi)發(fā)者的工具包,包含JVM。
JRE,一個(gè)Java的運(yùn)行環(huán)境,分為服務(wù)器端的運(yùn)行環(huán)境和開(kāi)發(fā)者的運(yùn)行環(huán)境。服務(wù)器端部署Java的時(shí)候,需要使用JRE運(yùn)行Java程序。

體系

分為三個(gè)體系,分別是J2SE,J2EE,J2ME
分別為以上三個(gè)體系。

專(zhuān)業(yè)術(shù)語(yǔ)

JDK 編寫(xiě)Java程序的程序員使用的軟件
JRE 運(yùn)行Java程序的用戶(hù)使用的軟件
Server JRE 運(yùn)行Java程序的服務(wù)器使用的軟件
SDK 軟件開(kāi)發(fā)工具包
DAO 數(shù)據(jù)訪問(wèn)的接口
MVC 一種模式
JSP 一種在HTML中寫(xiě)入Java的方式,由服務(wù)器端進(jìn)行渲染,然后返回給用戶(hù)(已經(jīng)用的很少?lài)D,目前都是直接封裝成為API的,其接口設(shè)計(jì)需要遵守RESTful API的設(shè)計(jì)規(guī)范,屬于一種架構(gòu)方式,可以使用https://swagger.io/對(duì)api進(jìn)行設(shè)計(jì),jsp類(lèi)似于php都是直接寫(xiě)在HTML內(nèi)的~)
Servlet 一種封裝成http的接口,然后通過(guò)http請(qǐng)求來(lái)訪問(wèn),使用這個(gè)Java能更加注重后端的業(yè)務(wù)的邏輯,實(shí)現(xiàn)解耦。(這個(gè)日后需要在繼續(xù)學(xué)習(xí))
JDBC 一種連接方式,用來(lái)連接數(shù)據(jù)庫(kù)例如Mysql
Tomcat 一種運(yùn)行Servlet的容器,在服務(wù)器端運(yùn)行
SSH框架 包括Hibernate5框架、Struts2框架、Spring4框架
SSM框架 Spring、SpringMVC和Mybatis框架。
RPC框架 客戶(hù)端在不知道調(diào)用細(xì)節(jié)的情況下,調(diào)用存在于遠(yuǎn)程計(jì)算機(jī)上的某個(gè)對(duì)象,就像調(diào)用本地應(yīng)用程序中的對(duì)象一樣 用于分布式。經(jīng)典框架 https://thrift.apache.org/ 來(lái)自于FaceBook

OOP

一種編程范式,

類(lèi)與對(duì)象

類(lèi)(Class):定義了一件事物的抽象特點(diǎn)。類(lèi)的定義包含了數(shù)據(jù)的形式以及對(duì)數(shù)據(jù)的操作。
對(duì)象:是類(lèi)的實(shí)例。

動(dòng)態(tài)配置與消息傳遞

定義上動(dòng)態(tài)配置是指方法會(huì)隨著實(shí)例動(dòng)態(tài)的改變。而消息傳遞機(jī)制(Message Passing)是指一個(gè)對(duì)象通過(guò)接受消息、處理消息、傳出消息或使用其他類(lèi)的方法來(lái)實(shí)現(xiàn)一定功能。

封裝

具備封裝性(Encapsulation)的面向?qū)ο缶幊屉[藏了某一方法的具體運(yùn)行步驟,取而代之的是通過(guò)消息傳遞機(jī)制發(fā)送消息給它。

繼承

繼承性(Inheritance)是指,在某種情況下,一個(gè)類(lèi)會(huì)有“子類(lèi)”。

多態(tài)

多態(tài)(Polymorphism)是指由繼承而產(chǎn)生的相關(guān)的不同的類(lèi),其對(duì)象對(duì)同一消息會(huì)做出不同的響應(yīng)。

抽象

抽象(Abstraction)是簡(jiǎn)化復(fù)雜的現(xiàn)實(shí)問(wèn)題的途徑,它可以為具體問(wèn)題找到最恰當(dāng)?shù)念?lèi)定義,并且可以在最恰當(dāng)?shù)睦^承級(jí)別解釋問(wèn)題。

語(yǔ)言

C→C++,C→Objective-C,BASIC→Visual Basic→Visual Basic .NET,Pascal→Object Pascal,Ada→Ada95

腳本化中的面向?qū)ο?/b>

Python和Ruby
Perl和PHP

Java和js有非常大的區(qū)別,一個(gè)是腳本,一個(gè)不是腳本。Java不是腳本,是編譯成字節(jié)碼然后在jvm上運(yùn)行的。
Java語(yǔ)言編譯的過(guò)程

Java代碼編譯是由Java源碼編譯器來(lái)完成,也就是Java代碼到JVM字節(jié)碼(.class文件)的過(guò)程
Java字節(jié)碼的執(zhí)行是由JVM執(zhí)行引擎來(lái)完成

將jvm比喻成操作系統(tǒng),Java只是又新建了一個(gè)類(lèi)似于操作系統(tǒng),術(shù)語(yǔ)叫虛擬機(jī),用來(lái)運(yùn)行Java的字節(jié)碼
Java代碼編譯和執(zhí)行的機(jī)制 源碼編譯

①分析和輸入到符號(hào)表

②注解處理

③語(yǔ)義分析和生成class文件

最后生成的class文件包含以下內(nèi)容
①結(jié)構(gòu)信息:包括class文件格式版本號(hào)及各部分的數(shù)量與大小的信息

②元數(shù)據(jù):對(duì)應(yīng)于Java源碼中聲明與常量的信息。包含類(lèi)/繼承的超類(lèi)/實(shí)現(xiàn)的接口的聲明信息、域與方法聲明信息和常量池

③方法信息:對(duì)應(yīng)Java源碼中語(yǔ)句和表達(dá)式對(duì)應(yīng)的信息。包含字節(jié)碼、異常處理器表、求值棧與局部變量區(qū)大小、求值棧的類(lèi)型記錄、調(diào)試符號(hào)信息

類(lèi)的加載機(jī)制


一張圖說(shuō)明,先自底向上檢查類(lèi)是否加載,進(jìn)行記錄,然后全部將類(lèi)檢查完成以后,再自頂向下不斷的嘗試加載類(lèi)。

底層使用C++完成對(duì)類(lèi)的加載
類(lèi)的執(zhí)行機(jī)制

JVM是基于堆棧的虛擬機(jī),JVM為每個(gè)新創(chuàng)建的線程分配一個(gè)堆棧,對(duì)于Java程序來(lái)說(shuō),運(yùn)行時(shí)通過(guò)對(duì)堆棧的操作來(lái)完成的。
堆棧以幀為單位保存線程的狀態(tài),JVM對(duì)堆棧的操作為壓棧和出棧
JVM執(zhí)行class字節(jié)碼以后,將會(huì)產(chǎn)生程序計(jì)數(shù)器和棧,程序計(jì)數(shù)器存放將要執(zhí)行下一條指令的偏移量。
棧中存放一個(gè)個(gè)的棧幀,每個(gè)棧幀對(duì)應(yīng)每個(gè)方法的每次調(diào)用,棧幀由局部變量和操作數(shù)棧兩部分組成,局部變量存放局部變量和參數(shù),操作數(shù)棧中用于存放方法執(zhí)行過(guò)程中產(chǎn)生的中間結(jié)果

JVM內(nèi)存管理和垃圾回收

JVM內(nèi)存分為方法區(qū)(method),棧內(nèi)存(stack),堆內(nèi)存(heap),本地方法棧(java中的jni調(diào)用)

堆內(nèi)存

操作系統(tǒng)有一個(gè)記錄空閑內(nèi)存地址的鏈表,當(dāng)系統(tǒng)收到程序的申請(qǐng)時(shí),會(huì)遍歷該鏈表,尋找第一個(gè)空間大于所申請(qǐng)空間的堆結(jié)點(diǎn),然后將該結(jié)點(diǎn)從空閑結(jié)點(diǎn)鏈表中刪除,并將該結(jié)點(diǎn)的空間分配給程序,

棧內(nèi)存

棧是向低地址擴(kuò)展的數(shù)據(jù)結(jié)構(gòu)。為一塊連續(xù)的內(nèi)存區(qū)域。

會(huì)有棧溢出這種情況

其中對(duì)象保存在堆中,變量和其中的中間結(jié)果保存在棧中

垃圾回收機(jī)制

如果一個(gè)對(duì)象沒(méi)有其他對(duì)象進(jìn)行引用,將會(huì)進(jìn)行不定時(shí)的進(jìn)行刪除,即對(duì)無(wú)用的內(nèi)存空間進(jìn)行回收。

類(lèi)加載的流程圖

開(kāi)發(fā)環(huán)境

官方教程 https://docs.oracle.com/javas...
windows上安裝JDK。
進(jìn)入oracle官網(wǎng),https://www.oracle.com/index....
選擇,https://www.oracle.com/techne...
目前最新的J2EE為10.0.2
選擇jdk 即面向開(kāi)發(fā)者的https://www.oracle.com/techne...
由于目前是在windows版本,選擇windows版本的。
單擊下一步即可,所有的都會(huì)幫你設(shè)置完成。
打開(kāi)PowerShell 輸入

PS C:UsersmingmDesktop> java -version
java version "10.0.2" 2018-07-17
Java(TM) SE Runtime Environment 18.3 (build 10.0.2+13)
Java HotSpot(TM) 64-Bit Server VM 18.3 (build 10.0.2+13, mixed mode)
PS C:UsersmingmDesktop>

如果能出現(xiàn)以上命令說(shuō)明配置正確。path等環(huán)境變量已經(jīng)自動(dòng)配置

Server JRE

一種運(yùn)行在服務(wù)器端的Java環(huán)境。鏈接https://www.oracle.com/techne...
選擇進(jìn)行下載。
在win10 設(shè)置中設(shè)置環(huán)境變量
http://www.runoob.com/w3cnote...

Eclipse

一種Java的IDE環(huán)境https://www.eclipse.org/
選擇java環(huán)境文件,即可完成,灰常簡(jiǎn)單。由于某些讓人氣憤的原因,包無(wú)法使用,那就用https://www.eclipse.org/downl...

hello world

現(xiàn)在書(shū)寫(xiě)第一個(gè)hello world程序

public class HelloWorld {
    /*你好世界!*/
    public static void main(String []args) {
        System.out.println("hello world");
    }
}

新建HelloWorld.java文件
然后打開(kāi)同目錄下的powershell
編譯成為class

PS C:UsersmingmDesktop	est> javac .HelloWorld.java

出現(xiàn)錯(cuò)誤

.HelloWorld.java:2: :  GBK ??? (0x81)
        /*你好世界?*/
                 ^
1

提示編碼錯(cuò)誤,由于保存的是utf-8編碼的,所以直接代碼編碼進(jìn)行編譯。

PS C:UsersmingmDesktop	est> javac -encoding utf-8 .HelloWorld.java

使用

-encoding

編碼使用utf-8進(jìn)行編譯成為class文件
查看目錄

PS C:UsersmingmDesktop	est> ls


    目錄: C:UsersmingmDesktop	est


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----        2018/9/18     22:14            425 HelloWorld.class
-a----        2018/9/18     22:12            135 HelloWorld.java


PS C:UsersmingmDesktop	est>

目錄下出現(xiàn)class文件
繼續(xù)運(yùn)行

PS C:UsersmingmDesktop	est> java HelloWorld
hello world
PS C:UsersmingmDesktop	est>

出現(xiàn)hello world

在Eclipse上寫(xiě)hello world

接著書(shū)寫(xiě)項(xiàng)目名稱(chēng)

接著在src目錄下創(chuàng)建包

創(chuàng)建Java源文件

書(shū)寫(xiě)代碼

package cn.xd.test;

public class Hello {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        System.out.println("hello world");
    }

}

運(yùn)行

運(yùn)行結(jié)果

評(píng)價(jià),不習(xí)慣用IDE,至今不知道為什么。╮(╯▽╰)╭。習(xí)慣使然。
IntelliJ idea
ps 試試這個(gè),如果能適應(yīng)TJ的話,那更加的好啦。

和jre連接

比較簡(jiǎn)單,不在闡述,
綜上所述,個(gè)人還是傾向于簡(jiǎn)單應(yīng)用直接編輯器,submit text 就行啦,稍微復(fù)雜一點(diǎn)的應(yīng)用,使用IntelliJ idea 即可。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/77200.html

相關(guān)文章

  • HTTP API 設(shè)計(jì)入坑指南(一)

    一、請(qǐng)求方式 1. 請(qǐng)求方式有g(shù)et/post/put/delete/options 2. get和post的區(qū)別: get通常用作獲取數(shù)據(jù),post通常用作提交數(shù)據(jù) get參數(shù)有長(zhǎng)度限制,受限于URL長(zhǎng)度(http協(xié)議對(duì)url長(zhǎng)度不限制,而是服務(wù)器和瀏覽器的配置參數(shù)限制),post無(wú)限制 get冪等,post不冪等(冪等:多次請(qǐng)求,結(jié)果一樣) header里有個(gè)參數(shù)content-length...

    jay_tian 評(píng)論0 收藏0
  • HTTP API 設(shè)計(jì)入坑指南(二)

    摘要:而只需要服務(wù)端生成,客戶(hù)端保存,每次請(qǐng)求在頭部中使用攜帶,服務(wù)端認(rèn)證解析就可。如果緩存不清理,驗(yàn)證碼就會(huì)一直有效,不安全。 一、授權(quán) 參考文獻(xiàn):https://blog.risingstack.com/... 1. Basic authentication (最簡(jiǎn)單,適用于沒(méi)有第三方的請(qǐng)求接口中) 客戶(hù)端發(fā)送authorization,內(nèi)容為 Basic Base64編碼(usern...

    JayChen 評(píng)論0 收藏0
  • HTTP API 設(shè)計(jì)入坑指南(二)

    摘要:而只需要服務(wù)端生成,客戶(hù)端保存,每次請(qǐng)求在頭部中使用攜帶,服務(wù)端認(rèn)證解析就可。如果緩存不清理,驗(yàn)證碼就會(huì)一直有效,不安全。 一、授權(quán) 參考文獻(xiàn):https://blog.risingstack.com/... 1. Basic authentication (最簡(jiǎn)單,適用于沒(méi)有第三方的請(qǐng)求接口中) 客戶(hù)端發(fā)送authorization,內(nèi)容為 Basic Base64編碼(usern...

    pingan8787 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<