一、使用Git拉取項(xiàng)目到本地
成都創(chuàng)新互聯(lián)公司是一家成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站,提供網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),網(wǎng)站制作,建網(wǎng)站,按需定制網(wǎng)站,網(wǎng)站開(kāi)發(fā)公司,公司2013年成立是互聯(lián)行業(yè)建設(shè)者,服務(wù)者。以提升客戶品牌價(jià)值為核心業(yè)務(wù),全程參與項(xiàng)目的網(wǎng)站策劃設(shè)計(jì)制作,前端開(kāi)發(fā),后臺(tái)程序制作以及后期項(xiàng)目運(yùn)營(yíng)并提出專業(yè)建議和思路。
1、團(tuán)隊(duì)實(shí)際開(kāi)發(fā)Git概況
在實(shí)際開(kāi)發(fā)的項(xiàng)目中,一個(gè)項(xiàng)目會(huì)有 三種版本分支:master版本分支、dev版本分支、自定義版本分支
master版本分支: 正式運(yùn)行環(huán)境中的程序代碼,運(yùn)行環(huán)境會(huì)定期自動(dòng)或按計(jì)劃手動(dòng)從該master版本分支中獲取代碼并重新編譯和運(yùn)行,不允許隨意修改,一旦出錯(cuò)將對(duì)系統(tǒng)造成嚴(yán)重后果。所以開(kāi)發(fā)人員不會(huì)被項(xiàng)目管理員授予:在Master上創(chuàng)建分支、直接提交代碼到Master分支上、使用Master分支合并其他分支的權(quán)限。
dev版本分支: 測(cè)試環(huán)境中運(yùn)行的代碼,master版本分支會(huì)定期合并該dev版本版本分支的代碼,也不允許隨意修改,如果想要修改,必須先新建一個(gè)自定義版本分支,編寫(xiě)好代碼之后同步到云端倉(cāng)庫(kù),在云端使用Git向該項(xiàng)目的管理員發(fā)出合并請(qǐng)求(merge),項(xiàng)目管理員同意之后才能在dev分支中看到自己寫(xiě)好的代碼。所以開(kāi)發(fā)人員也不會(huì)被授予:直接提交代碼到dev分支、使用dev合并其他分支的權(quán)限;但是擁有在dev分支上新建自定義分支的權(quán)限。
自定義版本分支: 自己定義的版本分支,有兩種情況。
情況1: 一般情況下,開(kāi)發(fā)人員使用git clone命令、使用IDEA或GitHub Desktop等其他圖形化工具從云端復(fù)制項(xiàng)目到本地的是當(dāng)前時(shí)間的master版本,開(kāi)發(fā)人員需要在本地新建一個(gè)分支(可以命名為dev)關(guān)聯(lián)到云端的dev分支,再在本地dev分支上新建一個(gè)自定義版本分支。
情況2: 還有一種情況是先在云端的dev上新建一個(gè)自己的分支,再使用命令行自定義拉取信息,拉取剛才新建的分支到本地。
當(dāng)開(kāi)發(fā)人員在自定義分支上開(kāi)發(fā)完了自己的代碼之后,將當(dāng)前自定義版本分支同步到云端,這時(shí)候請(qǐng)求合并到dev分支,管理員或者被授權(quán)合并權(quán)限的人員就可以審核開(kāi)發(fā)人員的代碼并進(jìn)行合并了,如果測(cè)試不通過(guò)則不予合并,如果在合并之后出現(xiàn)問(wèn)題,則將dev分支回退到之前的版本。
2、Git拉取項(xiàng)目:就是復(fù)制項(xiàng)目到本地。
本文介紹使用IDEA從云端拉取項(xiàng)目,默認(rèn)拉取的是master分支的快照,相當(dāng)于在本地新建一個(gè)master分支,再把當(dāng)前master分支的代碼復(fù)制到本地master分支。
(1)新建項(xiàng)目,從版本控制系統(tǒng)拉取。
(2)從云端查看要被拉去的項(xiàng)目路徑,在IDEA中輸入項(xiàng)目路徑
在這里復(fù)制
在這里輸入
然后確認(rèn)即可
3、用IDEA打開(kāi)或者導(dǎo)入剛才的項(xiàng)目,項(xiàng)目為git-test
打開(kāi)或者導(dǎo)入都可以,以下是打開(kāi)
信任項(xiàng)目選擇信任
此時(shí)項(xiàng)目就已經(jīng)下載到本地并且作為一個(gè)項(xiàng)目文件存在了,但是還是不能直接運(yùn)行,因?yàn)榇笮晚?xiàng)目往往需要配置運(yùn)行環(huán)境。
二、本地運(yùn)行
克隆好的SpringBoot項(xiàng)目用IDEA打開(kāi)自動(dòng)會(huì)根據(jù)maven加載項(xiàng)目依賴,并配置啟動(dòng)類。
IDEA右上角菜單欄出現(xiàn)下圖所示的情況表示加載成功。
由于項(xiàng)目是團(tuán)隊(duì)開(kāi)發(fā),所以項(xiàng)目的src\main\resource目錄下會(huì)有對(duì)應(yīng)多個(gè)狀態(tài)的properties配置文件,如下圖:
application.properties、application-dev.properties、application-prod.properties分別對(duì)應(yīng)總體配置、測(cè)試開(kāi)發(fā)環(huán)境配置、運(yùn)行環(huán)境配置。需要這些配置的原因是:測(cè)試環(huán)境(dev)和生產(chǎn)環(huán)境(prod)的數(shù)據(jù)庫(kù)或者資源不一致,測(cè)試環(huán)境的數(shù)據(jù)庫(kù)是生產(chǎn)環(huán)境的一個(gè)副本,生產(chǎn)環(huán)境數(shù)據(jù)庫(kù)只允許增加和查看,修改和刪除需要嚴(yán)格控制。
由于我們當(dāng)前是在開(kāi)發(fā)環(huán)境之下,所以需要加載使用dev環(huán)境的配置。但是加載和使用dev環(huán)境的配置不能在代碼中設(shè)置,如果上線到運(yùn)行環(huán)境運(yùn)行到這部分代碼就會(huì)出錯(cuò),所以需要在運(yùn)行時(shí)設(shè)置VM Options參數(shù):-Dspring.profiles.active = dev,如下圖:
三、本地測(cè)試
正常情況下本地測(cè)試:
在Test同路徑下面創(chuàng)建測(cè)試類,并在類上添加注解@SpringBootTest;創(chuàng)建方法,并添加注解@Test
代碼如下:
@SpringBootTest
public class SpringBootFunctionTests {
@Autowired
UserService userService;
@Test
public void testMethod1() {
//方法體
}
}
登錄后復(fù)制
但是在某些情況下可能會(huì)報(bào)錯(cuò),尤其是在某個(gè)地方使用了@WebEnvironmentAutoConfig注解之后,可能需要重新指定測(cè)試類的運(yùn)行環(huán)境。
此時(shí)需要
(1)先檢查pom.xml,看是否配置了spring-boot-starter-test
(2)查看import,分別嘗試import org.junit.Test;和import org.junit.jupiter.api.Test;
(3)嘗試修改注解,如:
@RunWith(SpringRunner.class)
@SpringBootTest(classes = {OperationApplication.class})
@SpringBootTest
public class SpringBootFunctionTests {
@Autowired
UserService userService;
@Test
public void testMethod1() {
//方法體
}
}
登錄后復(fù)制
?
(4)如果此時(shí)還是出錯(cuò),并且是在未添加@RunWith(SpringRunner.class)注解出現(xiàn)NullPointer錯(cuò)誤,添加了次注解出現(xiàn)上下文環(huán)境無(wú)法加載錯(cuò)誤(ApplicationContext not found),說(shuō)明沒(méi)有指定測(cè)試類的運(yùn)行環(huán)境配置,就像上文指定開(kāi)發(fā)運(yùn)行環(huán)境配置一樣。
指定測(cè)試類的運(yùn)行環(huán)境配置
方法有三種:
(1)一種是給Junit添加VM Options:-Dspring.profiles.active = dev
添加Junit在此項(xiàng)目中的總體運(yùn)行配置,此時(shí)在每一次運(yùn)行Junit測(cè)試的時(shí)候,IDEA都會(huì)加上此運(yùn)行配置,一勞永逸。
(2)單個(gè)測(cè)試方法添加運(yùn)行配置
此時(shí)需要對(duì)每個(gè)測(cè)試方法都添加配置,比較麻煩。
(3)在每個(gè)測(cè)試類上添加@ActiveProfiles(“dev”)指定運(yùn)行環(huán)境,并添加@RunWith(SpringRunner.class)
代碼如下:
@RunWith(SpringRunner.class)
@ActiveProfiles("dev")
@SpringBootTest
public class SpringBootFunctionTests {
@Autowired
UserService userService;
@Test
public void testMethod1() {
//方法體
}
}
登錄后復(fù)制
也需要對(duì)每個(gè)測(cè)試類都添加這兩個(gè)注解。
》類裝載器結(jié)構(gòu)
(class
loader)
》class文件檢查器
(the
class
file
verifier)
》內(nèi)置于Java虛擬機(jī)(及語(yǔ)言)的安全特性
》安全管理器及Java
API
(security
manager)
在Java沙箱中,類裝載器體系結(jié)構(gòu)是第一道防線。它在三個(gè)方面對(duì)Java的沙箱起作用:
1它防止惡意代碼區(qū)干涉善意的代碼
2它守護(hù)了被信任的代碼的邊界
3它將代碼歸于某類(稱為保護(hù)域),該類確定了代碼可以進(jìn)行哪種操作
Class文件檢查器:
Class文件檢查器保證裝載的class文件內(nèi)容有正確的內(nèi)部結(jié)構(gòu),并且這些class文件互相間協(xié)調(diào)一致。Class文件檢查器實(shí)現(xiàn)的安全目標(biāo)之一就是程序的健壯性。如果某個(gè)有漏洞的編譯器,或某個(gè)聰明的黑客,產(chǎn)生了一個(gè)class文件,而這個(gè)class文件中包含了一個(gè)方法,則合格方法的字節(jié)碼中含有一條跳轉(zhuǎn)到方法之外的指令,那么,一旦這個(gè)方法被調(diào)用,它將導(dǎo)致虛擬機(jī)的崩潰,所以,處于對(duì)健壯性的考慮,由虛擬機(jī)檢驗(yàn)它裝載的字節(jié)碼的完整性非常重要。
Class文件檢查器要進(jìn)行四趟獨(dú)立的掃描來(lái)完成它的操作。
第一趟:Class文件的結(jié)構(gòu)檢查
在這一趟掃描中,對(duì)每一段將被當(dāng)做類型導(dǎo)入的字節(jié)序列,Class文件檢查器都會(huì)確認(rèn)它是否符合JavaClass文件的節(jié)本結(jié)構(gòu)。在這一趟檢查中檢查器會(huì)進(jìn)行很多檢查例如:每個(gè)Class文件都必須以四個(gè)同樣的字節(jié)開(kāi)始:0xCAFEBABE。因?yàn)檫@個(gè)魔數(shù)Class文件分析器會(huì)很容易判斷出某個(gè)文件具有明顯問(wèn)題而加以拒絕。檢查器還必須確認(rèn)在Class文件中聲明的版本號(hào)和次版本號(hào),這個(gè)版本號(hào)必須在這個(gè)虛擬機(jī)實(shí)現(xiàn)可以支持的范圍之內(nèi)。而且第一趟掃描還必須確認(rèn)這個(gè)Class文件有沒(méi)有被刪減??傊谝惶藪呙璧哪康木褪潜WC這個(gè)字節(jié)序列正確的定義了一個(gè)新類型。
第二趟:類型數(shù)據(jù)的語(yǔ)義檢查
第二趟掃描,檢查器要查看每個(gè)組成部分,確認(rèn)它們是否是其所屬類型的實(shí)例,他們的結(jié)構(gòu)是否正確。另外還要檢查這個(gè)類本身是否符合特定的條件,它們是由Java編程語(yǔ)言規(guī)定的。例如,檢查器強(qiáng)制規(guī)定除Object類以外的類必須有一個(gè)超類,或者檢查final類有沒(méi)有被子化等。
第三趟:字節(jié)碼驗(yàn)證
這一趟是要確保采用任何路徑在字節(jié)碼流中都得到一個(gè)確定的操作碼,確保操作數(shù)??偸前_的數(shù)值以及正確的類型。
第四趟:符號(hào)引用的驗(yàn)證
在動(dòng)態(tài)鏈接的過(guò)程中,如果包含在一個(gè)Class文件中的符號(hào)引用被解析時(shí),Class文件檢查器要進(jìn)行第四趟檢查。第四趟掃描僅僅是動(dòng)態(tài)鏈接過(guò)程的一部分。當(dāng)一個(gè)Class文件被裝載時(shí),它包含了對(duì)其他類的符號(hào)引用以及它們的字段和方法。一個(gè)符號(hào)引用是一個(gè)字符串,它給出了名字,并且可能還包含了其他關(guān)于這個(gè)被引用項(xiàng)的信息------這些信息必須足以唯一的識(shí)別一個(gè)類、方法、字段。這樣對(duì)于其他類的符號(hào)引用必須給出這個(gè)類的全名;對(duì)于其他類的字段的符號(hào)引用必須給出類名、字段名以及字段描述符;對(duì)于其他類中的方法的引用必須給出類名、方法名以及方法的描述符。
所謂的動(dòng)態(tài)鏈接是一個(gè)將符號(hào)引用解析為直接引用的過(guò)程。
此外,由于Java程序是動(dòng)態(tài)鏈接的,所以Class文件檢查器在進(jìn)行第四次掃描中,必須檢查相互引用類之間的兼容性。
除此之外,Java虛擬機(jī)還有一些內(nèi)置的安全特性:
》類型安全的引用轉(zhuǎn)換
》結(jié)構(gòu)化的內(nèi)存訪問(wèn)
》自動(dòng)垃圾收集(不必顯式地釋放被分配的內(nèi)存)
》空引用檢查
通過(guò)保證一個(gè)Java程序只能使用類型安全的、結(jié)構(gòu)化的方法去訪問(wèn)內(nèi)存,Java虛擬機(jī)使得Java程序更為健壯。
1、打開(kāi)“控制面板”,點(diǎn)擊:“開(kāi)始-控制面板”,如果“控制面板”中沒(méi)有java選項(xiàng),請(qǐng)點(diǎn)擊“查看方式”。
2、打開(kāi)java控制面板,點(diǎn)擊:java-安全-編輯站點(diǎn)列表。
3、添加信任“站點(diǎn)”。
4、添加信任“站點(diǎn)”的操作過(guò)程。點(diǎn)擊“添加”,在“□”處點(diǎn)一下,Ctrl+V(當(dāng)然必須先在要打開(kāi)的網(wǎng)址的地址欄上C
trl+C),最后點(diǎn)擊“確定”。
當(dāng)前名稱:java信任代碼 信任的進(jìn)化代碼
本文網(wǎng)址:http://aaarwkj.com/article30/hhpppo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動(dòng)網(wǎng)站建設(shè)、軟件開(kāi)發(fā)、靜態(tài)網(wǎng)站、、營(yíng)銷型網(wǎng)站建設(shè)、網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)