首先要理清楚代碼結(jié)構(gòu)和業(yè)務(wù)結(jié)構(gòu)(應(yīng)該有些文檔或者大的流程圖),這是閱讀具體代碼的前提。
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:空間域名、網(wǎng)站空間、營銷軟件、網(wǎng)站建設(shè)、虞城網(wǎng)站維護(hù)、網(wǎng)站推廣。
閱讀Java?web項目的代碼:
你需要找到
View層的代碼:前端頁面、圖片、資源文件都在其中。
Controller層的代碼:控制試圖與模型層以及數(shù)據(jù)傳遞。
Service層的代碼:業(yè)務(wù)邏輯。
Dao層的代碼:數(shù)據(jù)庫訪問邏輯。
從web.xml?-?appcontext.xml?-?xxx
java讀取文本文件的方法有很多 這個例子主要介紹最簡單 最常用的BufferedReader類 完整例子如下 package net chinaunix blog hzm text;import java io BufferedReader;import java io FileReader;import java io IOException;public class ReadFile {private String path;public ReadFile(String filePath){path = filePath;}public String[] openFile() throws IOException{FileReader fr = new FileReader(path) BufferedReader textReader = new BufferedReader(fr) String[] textData = new String[readLines()];int i;for(i= ; i readLines() i++){textData[i] = textReader readLine() }textReader close() return textData;}int readLines() throws IOException{FileReader fileToRead = new FileReader(path) BufferedReader bf = new BufferedReader(fileToRead) int numberOfLines = ;@SuppressWarnings( unused )String oneLine;while((oneLine = bf readLine()) != null){numberOfLines++;}bf close() return numberOfLines;}}package net chinaunix blog hzm text;import java io IOException;public class FileData {public static void main(String[] args) throws IOException{String filePath = C:/text txt ;try{ReadFile reader = new ReadFile(filePath) String[] content = reader openFile() int i;for(i= ;icontent length;i++){System out println(content[i]) }}catch(IOException e){System out println( 異常信息 + e getMessage()) }}}java io BufferedReaderThe buffer size may be specified or the default size may be used The default is large enough for most purposes In general each read request made of a Reader causes a corresponding read request to be made of the underlying character or byte stream It is therefore advisable to wrap a BufferedReader around any Reader whose read() operations may be costly such as FileReaders and InputStreamReaders For example BufferedReader in = new BufferedReader(new FileReader( foo in )) will buffer the input from the specified file Without buffering each invocation of read() or readLine() could cause bytes to be read from the file converted into characters and then returned which can be very inefficient Programs that use DataInputStreams for textual input can be localized by replacing each DataInputStream with an appropriate BufferedReader java io FileReaderFileReader is meant for reading streams of characters For reading streams of raw bytes consider using a FileInputStream lishixinzhi/Article/program/Java/hx/201311/26249
對于學(xué)習(xí)軟件開發(fā)的人來說,學(xué)會閱讀源代碼是非常重要的,然而很多人并不具備閱讀源代碼的能力。
很多人不喜歡閱讀源代碼,認(rèn)為這是非常無聊的事情。
如果不會閱讀源代碼,對于后面寫代碼是非常困難的,很多開發(fā)人員主要把重心放在寫代碼上,反而忽略代碼的閱讀。
閱讀代碼是非常關(guān)鍵的,下面天津電腦培訓(xùn)為大家介紹閱讀代碼的技巧。
1、學(xué)會運行代碼運行代碼是閱讀代碼的第一步,這樣能夠了解關(guān)于項目的很多細(xì)節(jié),并且了解怎么進(jìn)行運行,掌握庫的使用方法。
這樣是了解一個項目最好的方法,如果能夠自己了解和編寫相關(guān)的項目,這樣對于使用框架和庫會有自己的想法。
2、找到高層次的邏輯當(dāng)您開始閱讀項目的代碼時,會涉及到每個細(xì)節(jié)。
相反的,你還需要掌握高層次結(jié)構(gòu),從這個地方找到入口點,在很多大型項目開發(fā)中都可以使用這種方法。
如果是進(jìn)行web程序開發(fā),那么天津IT培訓(xùn)建議應(yīng)該查看不同的包,例如存儲業(yè)務(wù)邏輯的位置,存儲UI代碼的位置,控制器所在的位置等等。
3、了解和使用工具很多工具都可以有助于源代碼閱讀,并且對可視化代碼有很大的幫助。
在使用過程中,天津IT培訓(xùn)認(rèn)為IntelliJIdea工具能夠?qū)Ш皆创a,允許使用單詞的一部分,甚至單詞的縮寫進(jìn)行搜索。
您還應(yīng)該學(xué)習(xí)鍵盤的快捷鍵。
使用鼠標(biāo)導(dǎo)航源代碼可能會非常無聊和緩慢,鍵盤快捷鍵可以更快的進(jìn)行跳轉(zhuǎn)。
4、了解語言更深入地了解特定語言有助于提高您的代碼閱讀技能。
每種語言都有自己的約定,樣式和語法。
這些知識可以幫助您快速熟悉特定代碼。
其中天津電腦培訓(xùn)發(fā)現(xiàn)在Java語言中,方法名稱以小寫字母開頭,而在C#語言中,方法名稱以大寫字母開頭。
了解這種差異可以幫助你從源代碼中找到識別方法。
Java經(jīng)典面試題 帶答案(二) 原創(chuàng)
2022-04-29 14:34:07
?
qdwd888 ?
碼齡1年
關(guān)注
所謂引用傳遞就是把一個對象在堆中保存的數(shù)據(jù)傳遞給一個變量,此時新的變量與原有的變量對應(yīng)同一個內(nèi)存存儲空間,當(dāng)新的變量修改對象的屬性時,內(nèi)存中的數(shù)據(jù)也會修改。
3.接口與抽象類的區(qū)別?
1:接口里面不可以實現(xiàn)方法體,抽象類可以實現(xiàn)方法體。
2:接口可以多繼承接口,抽象類不可以。
3:接口需要被子類實現(xiàn),抽象類是要被子類繼承(單一繼承)。
4:接口中只能有公有的方法和屬性而且必須賦初始值,抽象類中可以有私有方法和屬性.
5: 接口中不能存在靜態(tài)方法,但屬性可以和final,抽象類中方法中可以有靜態(tài)方法,屬性也可以。
4.談?wù)劺^承,為什么要使用繼承?
所謂繼承就是找出幾個類中共同的部分,提取出來作為父類。而子類只需要繼承父類,就可以共享父類的方法。
使用繼承能夠減少重復(fù)的代碼。
5.方法重載的好處?
所謂重載就是在一個類中可以定義多個相同的方法,但是方法的參數(shù)類型和參數(shù)的個數(shù)以及順序要不同。
重載的好處就是能夠讓我們很快的掌握該方法的功能,我們只要要記住該方法就能很快的理解該方法的參數(shù)以及參數(shù)的作用
6.項目中印象最深的部分?
我覺得在該項目中我體現(xiàn)到了反射技術(shù)的強大之處,原來我一直不清楚反射是一種什么樣的技術(shù),只知道一些概念上的知識,經(jīng)過這個項目之后,終于知道該怎樣靈活運用反射,以及在什么時候運用。
談?wù)勀銓γ嫦驅(qū)ο蟮睦斫馀c認(rèn)識?
我覺得使用面向?qū)ο筮@種思維的方式比較符合我們?nèi)祟惖乃枷?,不需要去學(xué)習(xí)一些什么新的思考方式,就按照現(xiàn)實生活做的一些故事就能讓人理解該內(nèi)容的知識以及他們的作用。
我的看法就是:
1:當(dāng)加入新的功能的時候不會修改原有的代碼。(面向接口編程)
2: 當(dāng)我們寫的一個類可以重復(fù)的運用在其他項目中。(代碼的復(fù)用性)
3:當(dāng)寫一個新類的時候要考慮到他的可擴展性。(靈活性)
7.談?wù)劶峡蚣?
集合框架分為三部分,第一部分是collection接口,第二部分是Map接口、第三部分是collections幫助類
首先說一下collection接口,collection接口下面的接口分為set接口、list接口,在往下面就是他們一些實現(xiàn)類。
說到實現(xiàn)類在分為兩部分,第一部分是set的實現(xiàn)類有TreeSet、HashSet,第二部分是list的實現(xiàn)類有: Arraylist、LinkedList、Vector。
8.再說Map接口,map接口下面有treeMap、HashMap、HashTable三個實現(xiàn)類。
最后說collections幫助類,collections提供了一系列靜態(tài)方法實現(xiàn)對各種集合的搜索、排序、線程完全化等操作。
9.什么是異常?描述下異常處理?
所謂異常就在執(zhí)行程序的時發(fā)生的錯誤,他能終止正在執(zhí)行的程序。
異常的處理:1:使用try-catch捕獲異常。
2:使用throw-throws拋出異常。
10.多線程的優(yōu)先級?為什么要分優(yōu)先級?
因為有有一些線程可能比較重要,所以才劃分優(yōu)先級。
異??蚣艿念惤Y(jié)構(gòu)?
Throwable所有錯誤的超類,他下面有兩個子類:error和Exception。
error代表系統(tǒng)級的錯誤能捕獲,但是不能處理。
Exception代表異常主要出自于程序,可以捕獲也能處理。Exception有分為兩類:編譯期異常、運行期異常。
區(qū)別他是運行期異常還是編譯期異常就看他是不是RuntimeException的子類,如果是的話,就是運行期異常否則是編譯期異常。
談?wù)凥ashMap與Hashtable的區(qū)別。
HashMap:hashmap中可以有空值,線程不安全的類。hashmap的父類是abstractMap抽象類(效率高)
HashTable:hashtable中不允許有空值,線程安全的類.hashtable的父類是Dictionary類(效率低)
說一下iterator。
iterator是一個接口,用于實現(xiàn)對容器里面的元素遍歷操作。
任何的遍歷都可以使用iterator。
什么是泛型?它有什么樣的好處?
泛型就是自己指定一種類型,以后存放的東西就只能有這一種類型。
泛型的好處是在編譯的時候檢查類型安全,并且所有的強制轉(zhuǎn)換都是自動和隱式的,提高代碼的重用率。
說一下你在項目中遇到的異常,并說出什么時候發(fā)生的,怎么解決的。
空指針異常最常見。根據(jù)異常提示找到相應(yīng)的類進(jìn)行處理。發(fā)生的原因很多,比如沒有初始化變量,沒有進(jìn)行賦值等都是空指針?biāo)摹?/p>
你的程序遇到錯時怎么解決的?
根據(jù)錯誤提示找到錯誤的API進(jìn)行相應(yīng)的處理。
談?wù)労偷膮^(qū)別
是位運算符,表示按位與運算,是邏輯運算符,表示邏輯與(and)。
System.out和System.in是什么意思?
System.out是輸出。
System.in是輸入
java為什么能夠跨平臺?
對于不同的系統(tǒng)平臺有不同的虛擬機,虛擬機提供了硬件平臺規(guī)范。
用java開發(fā)的程序被編譯成由java虛擬機指令組成的字節(jié)代碼,虛擬機會將這些指令翻譯成操作系統(tǒng)特定的指令.(因為jvm屏蔽了底層操作系統(tǒng)的硬件)。
private變量能不能被其他類訪問?如果能,怎么訪問?
能。通過反射. getDeclaredField_r();
演示java項目如何打包成jar文件
1:選擇導(dǎo)出 jar 直到輸出
java的環(huán)境變量如何配置?為什么要配置?
1:在我的電腦 屬性 高級 環(huán)境變量 系統(tǒng)變量 新建 變量名 java-Home,設(shè)置值:java的JDK目錄
2:在選擇新建 設(shè)置變量名 PATH 變量值 %java_home%/bin目錄
為了方便在dos窗口操作。
static和非static修飾的變量哪個生命周期長?
static的生命周期長。因為他一直在內(nèi)存里面。
什么是線程同步?
線程同步就是說在同一時間訪問的資源的時候,資源只能被一個線程所使用.
什么是封裝?封裝的好處是什么?
封裝:封裝就是把一個已經(jīng)實現(xiàn)好的功能的代碼,放在一個方法中(實現(xiàn)了隱藏)。
好處:代碼的重用性、好全性、只需要調(diào)用該方法不管具體的實現(xiàn)
在線程中wait與sleep的區(qū)別?
1:wait是Object定義的方法,而sleep是線程Thread定義的方法。
2:sleep是讓當(dāng)前線程睡泯,所以可以放在任何位置,而wait是讓當(dāng)前線程放棄資源的使用權(quán),必須放在同步塊或同步方法里面。
3:sleep他不會釋放對象鎖,而wait會釋放對象同步鎖.
4:sleep是等待一段時間后會自動醒來,而wait必須讓其他的線程喚醒。
Class 和class的區(qū)別
class是java的關(guān)鍵字。
Class是類的名字。
awt和swing的區(qū)別?
awt是重量級的組件。
swing是輕量級的組件.
比如:(在swing組件中當(dāng)我們調(diào)用repaint()方法時,會很快調(diào)用paint(),而對于重量級組件會首先調(diào)用upate()方法,然后upate()方法再調(diào)用paint()方法,在重量級組件中實現(xiàn)雙緩沖,我們就要重寫upate()方法,在重寫的時候記得實現(xiàn)帥新屏幕).
為什么實現(xiàn)一個接口必須要實現(xiàn)接口里面所有的方法?
因為這是sun公司的規(guī)定。如果不實現(xiàn)它里面所有的方法那就不叫接口。
線程和進(jìn)程的區(qū)別是什么?
進(jìn)程是一個小的應(yīng)用程序,需要分配內(nèi)存空間。
線程是進(jìn)程中的一個順序控制流,也可以這樣理解(線程是進(jìn)程的實體).
Java基礎(chǔ)技能中強調(diào)程序代碼的讀寫能力,如果一個類很長,你會怎樣讀寫?
1:類分解,每個類只做他該做的事情。
2:方法分解。
抽象方法能不能是private和static修飾符?
能。
用接口有什么好處?
1:使用接口有很好的擴展性。
2:接口可以多繼承接口。
3:隱藏實現(xiàn)。
什么是反射?
所謂反射就是在編譯的時候不知道加載什么,只有等到運行的時候才知道該執(zhí)行什么。
創(chuàng)建對象的方式有哪些?
1:new 2:反射 3:clone 4:反序列化
transient是什么意思?
transient代表無法到達(dá)某一對象所拋出的異常。但也不代表沒有該對象。
在設(shè)計類的時候,你是怎么使用靜態(tài)變量和成員變量的?
如果需要一直存在于內(nèi)存當(dāng)中,就選擇靜態(tài)變量否則就選擇成員變量。
定義 《一線大廠Java面試題解析+后端開發(fā)學(xué)習(xí)筆記+最新架構(gòu)講解視頻+實戰(zhàn)項目源碼講義》無償開源 威信搜索公眾號【編程進(jìn)階路】 抽象方法的意義何在?
1:為了減少重復(fù)代碼。
2:抽象方法有很好的擴展性。
談集合遍歷的方式
forEach()、for()、iterator
java安全性體現(xiàn)在什么地方? 1:Java提供一個用于網(wǎng)絡(luò)/分布式的計算環(huán)境。因此,Java強調(diào)安全性,如確保無病毒、小應(yīng)用程序運行安全控制等等。
2:Java的驗證技術(shù)是以公鑰(public-key)加密算法為基礎(chǔ),而且從環(huán)境變量、類加載器、文件系統(tǒng)、網(wǎng)絡(luò)資源和名字空間等方面實施安全策略。
談?wù)劸€程所擁有的幾種狀態(tài)
就緒:線程分配了CPU以外的全部資源,等待獲得CPU調(diào)度
執(zhí)行:線程獲得CPU,正在執(zhí)行
阻塞:線程由于發(fā)生I/O或者其他的操作導(dǎo)致無法繼續(xù)執(zhí)行,就放棄處理機,轉(zhuǎn)入線程就緒隊列
掛起:由于終端請求,操作系統(tǒng)的要求等原因,導(dǎo)致掛起。
面向?qū)ο蟮奶卣饔心男?
封裝、繼承、多態(tài)
解釋一下在項目里你怎么去實現(xiàn)多線程的。
1:一般是實現(xiàn)Runnable接口,new Thread().start(); 重寫run();
啟動線程時可以調(diào)用run()方法嗎?
可以.因為run方法里面執(zhí)行的代碼就是線程所要執(zhí)行的方法.
Java程序的執(zhí)行過程是怎樣的?
java源程序 編譯.class字節(jié)碼 類加載器 字節(jié)碼校驗器 解釋執(zhí)行
Java的引用數(shù)據(jù)類型有哪些?
對象、集合、數(shù)組、接口
變量按作用域分類分為幾種?
分為兩種。局部變量和全局變量.
集合里的接口有哪些?請你創(chuàng)建一個List類的實例。
Collection接口、set接口、list接口、map接口、iterator接口
List list = new ArrayList();
int與Integer的區(qū)別?
int是原始數(shù)據(jù)類型,integer是int的包裝類,他提供轉(zhuǎn)換類型的很多方法。
checked異常與unchecked異常的區(qū)別是什么?
區(qū)分他們的區(qū)別主要是看他們是不是runtime的子類,如果是runtime的子類那么就是運行期異常,否則是編譯期異常。
final與finally、finalize的區(qū)別?
final用于聲明屬性、方法和類,分別表示屬性不可更改,方法不可重寫,類不可以繼承。
finally是異常處理語句結(jié)構(gòu)的一部分,他表示總是執(zhí)行。
finalize是Object類的一個方法,在垃圾收集器執(zhí)行的時候會調(diào)用被回收對象的此方法,可以覆蓋此方法提供垃圾收集時的其他資源回收,例如關(guān)閉文件等。
重寫與重載的區(qū)別?參數(shù)一樣,返回類型不一樣 是重載嗎?
重載:方法名相同,參數(shù)類型不同,參數(shù)個數(shù)不同,參數(shù)順序不同。
重寫:方法名相同,參數(shù)的類型相同,返回的類型相同。
不是。因為重載是根據(jù)參數(shù)來斷定的。
寫一個數(shù)組的創(chuàng)建。
int[] i = new int[5];
int[] i={1,2,3,4,5};
什么時候用輸入流,什么時候用輸出流?
讀取數(shù)據(jù)的時候使用輸入流。
寫入數(shù)據(jù)的時候使用輸出流.
雙緩沖如何實現(xiàn)的?為什么要用雙緩沖?
先在內(nèi)存中分配一個和我門動畫窗口一樣大的空間(在內(nèi)存中的空間我門是看不到的),然后利用 getGraphics_r()方法去獲得給空間并將它全部一次性的顯示到我門的屏幕上.這樣在我門的動畫窗口上面是顯示出來就非常的流暢了.避免了上面的閃爍效果.
舉出常用的list類。哪種情況用哪種好?
arraylist、LinkedList、Vector.
arraylist是連續(xù)的空間,遍歷速度快,插入和刪除就比較慢。
linkedList是一個雙向鏈表存放數(shù)據(jù)。如果刪除和添加元素比較多的話,要效率高的就可以使用LinkedList。
vector和arraylist的功能一樣,唯一的區(qū)別就是vector是線程安全的,而arraylist是線程不安全的。
Map、list與set的區(qū)別?里面常用的類有哪些?
map是以鍵值對的方式存數(shù)據(jù)。
list里面的數(shù)據(jù)可以重復(fù),有順序
set里面的數(shù)據(jù)不可以重復(fù),沒有順序。
list的常用類有arraylist
set的常用類有treeset
map的常用類用hashmap
什么時候用繼承Thread?什么時候?qū)崿F(xiàn)Runnable接口?
當(dāng)一個類中沒有繼承的時候可以使用thread。
如果一個類中已經(jīng)使用了繼承,就只有實現(xiàn)runnable接口
對對象進(jìn)行比較怎么做?為什么不用“==”?
其實如果是非String的話,==與equals并沒有區(qū)別。
因為String他是重寫了object的方法,所以這才有了equals比較內(nèi)容,==比較地址。
靜態(tài)變量與成員變量的區(qū)別。
靜態(tài)變量在對象加載之前初始化,而成員變量是在編譯期間初始化。
靜態(tài)變量可以直接通過類名點的方式進(jìn)行訪問,而成員變量則不行。
訪問修飾符有哪幾種?它們之間的區(qū)別是什么?
有四種。
前提:在一個項目中。
public可以在所有包中的所有類隨意進(jìn)行訪問。
private只能在被當(dāng)前類訪問。
protected:在同一包中,或子類可以進(jìn)行訪問。
默認(rèn):同包下能被訪問。
對象的序列化怎么實現(xiàn)的?
實現(xiàn)Serializable接口。
講一下多態(tài)的概念。
多態(tài)就是相同的行為不同的體現(xiàn)方式。(比如:愛好,每個人都要自己的愛好,但是愛好都不同)
子類繼承父類,父類的構(gòu)造方法能被繼承嗎?
能。
子類中怎么調(diào)用父類的方法?
通過super.方法
this、super的用法與區(qū)別?
this的訪問當(dāng)前類的屬性和方法。
super是訪問父類的屬性和方法。
什么是構(gòu)造方法?構(gòu)造方法的作用?(目的、意義)
構(gòu)造方法是在調(diào)用的時候被new出來的,每個類都有構(gòu)造方法。
作用:為對象分配內(nèi)存、初始化類變量、初始化屬性、返回引用。
Error和Exception的區(qū)別是什么?
Error:是系統(tǒng)級的錯誤,可以捕獲,但不同處理。
exception是程序錯誤,可以捕獲也可以進(jìn)行處理。
輸入輸出流分幾種?分別在什么時候使用?
輸入流:InputStream、Read
輸出流:OutputStream、writer
讀取字節(jié),使用InputStream 以字符讀取用Read
輸出字節(jié),使用OutputStream 以字符輸出用writer
異常捕獲的流程?如果有異常發(fā)生是怎樣的流程?
try{
容易發(fā)生異常的代碼
}catch(錯誤的類型){
打印錯誤信息
}finally{
不管有沒有異常都要執(zhí)行
}
String是基本數(shù)據(jù)類型嗎?基本數(shù)據(jù)類型有哪些?
不是。
基本數(shù)據(jù)類型:byte、short、int、long、float、double、char、boolean
Collection與Collections的區(qū)別?
Collection是一個接口.
collections是一個幫助類。(主要對查找、排序)
HashMap等是實現(xiàn)的 Collection的接口嗎?
不是。
hashMap實現(xiàn)的是map接口。他是以鍵值對的形式保存。
游戲中的paint()方法從何處來的?讓窗本重繪最好采用哪種方法?
NO!!!沒做過。
為什么從集合中取出來的元素都是Object類型的?.
因為他們都是object的子類。
如果try塊中有多種異常,在catch塊中如何處理?
直接在類型catch中寫一個Exception異常。
如果要拋出異常怎么做?
使用throw明確要拋出異常的代碼,在方法中使用throws拋出異常類型。
實現(xiàn)接口使用什么關(guān)鍵字?在實現(xiàn)一個接口時必須要做什么?
使用interface關(guān)鍵字。
實現(xiàn)一個接口必須實現(xiàn)這個接口里面的所有方法.
GUI響應(yīng)一個事件的代碼如何寫?
確定事件源;確定監(jiān)聽器,監(jiān)聽器需要實現(xiàn)監(jiān)聽器接口,重寫其中的方法;完成事件源和監(jiān)聽器的注冊
JVM是什么?它的作用是什么?它和java運行環(huán)境有什么區(qū)別?
Java虛擬機是一個抽象的計算機,和實際的計算機一樣,它具有一個指令集并使用不同的存儲區(qū)域。
它負(fù)責(zé)執(zhí)行指令,還要管理數(shù)據(jù)、內(nèi)存和寄存器。Java解釋器負(fù)責(zé)將字節(jié)代碼翻譯成特定機器的機器代碼
沒有java虛擬機就更不要說運行環(huán)境了。
集合和數(shù)組的區(qū)別。
1:集合中可以存放不同元素的類型,而數(shù)組中只能放同一種類型的數(shù)據(jù)。
2:集合的長度可以隨著元素的多少自動增長,而數(shù)據(jù)的長度一旦定義就不能更改。
3:集合中只能放置對象,數(shù)組中可以是對象也可以基本數(shù)據(jù)類型。
4:集合提供了很好的算法,而數(shù)組里面的算法有限。
final這個修飾符的用法?
final主要修飾屬性、方法、類。分別代表屬性的值不可更改、方法不可以重寫、類不可以繼承。
如何定義一個常量?定義常量的意義何在?
網(wǎng)頁題目:java讀代碼 java讀程序
文章來源:http://jinyejixie.com/article42/ddcooec.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動態(tài)網(wǎng)站、品牌網(wǎng)站建設(shè)、網(wǎng)站營銷、虛擬主機、靜態(tài)網(wǎng)站、品牌網(wǎng)站設(shè)計
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)