女人荫蒂被添全过程13种图片,亚洲+欧美+在线,欧洲精品无码一区二区三区 ,在厨房拨开内裤进入毛片

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

自從20世紀(jì)80年代以來就存在的未來編程語言的預(yù)見失誤

Linux愛好者 ? 來源:未知 ? 作者:胡薇 ? 2018-04-11 10:46 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

我的上一篇博文《與 C 語言長別離》引來了我的老朋友,一位 C++ 專家的評論。在評論里,他推薦把 C++ 作為 C 的替代品。這是不可能發(fā)生的,如果 C++ 代替 C 是趨勢的話,那么 Go 和 Rust 也就不會出現(xiàn)了。


但是我不能只給我的讀者一個光禿禿的看法(LCTT 譯注:此處是雙關(guān)語)。所以,在這篇文章中,我來講述一下為什么我不再碰 C++ 的故事。這是關(guān)于計(jì)算機(jī)語言設(shè)計(jì)經(jīng)濟(jì)學(xué)專題文章的起始點(diǎn)。這篇文章會討論為什么一些真心不好的決策會被做出來,然后進(jìn)入語言的基礎(chǔ)設(shè)計(jì)之中,以及我們該如何修正這些問題。

在這篇文章中,我會一點(diǎn)一點(diǎn)的指出人們(當(dāng)然也包括我)自從 20 世紀(jì) 80 年代以來就存在的關(guān)于未來的編程語言的預(yù)見失誤。直到最近,我們才找到了證明我們錯了的證據(jù)。

我記得我第一次學(xué)習(xí) C++ 是因?yàn)槲倚枰褂?GNU eqn 輸出 MathXML,而 eqn 是使用 C++ 寫的。那個項(xiàng)目不錯。在那之后,21 世紀(jì)初,我在韋諾之戰(zhàn)Battle For Wesnoth那邊當(dāng)了多年的資深開發(fā)人生,并且與 C++ 相處甚歡。

在那之后啊,有一天我們發(fā)現(xiàn)一個不小心被我們授予提交權(quán)限的人已經(jīng)把游戲的 AI 核心搞崩掉了。顯然,在團(tuán)隊(duì)中只有我是不那么害怕查看代碼的。最終,我把一切都恢復(fù)正常了 —— 我折騰了整整兩周。再那之后,我就發(fā)誓我再也不靠近 C++ 了。

在那次經(jīng)歷過后,我發(fā)現(xiàn)這個語言的問題就是它在嘗試使得本來就復(fù)雜的東西更加復(fù)雜,來粗陋補(bǔ)上因?yàn)榛A(chǔ)概念的缺失造成的漏洞。對于裸指針這樣?xùn)|西,它說“別這樣做”,這沒有問題。對于小規(guī)模的個人項(xiàng)目(比如我的魔改版 eqn),遵守這些規(guī)定沒有問題。

但是對于大型項(xiàng)目,或者開發(fā)者水平參差不齊的多人項(xiàng)目(這是我經(jīng)常要處理的情況)就不能這樣。隨著時間的推移以及代碼行數(shù)的增加,有的人就會捅簍子。當(dāng)別人指出有 BUG 時,因?yàn)橹T如 STL 之類的東西給你增加了一層復(fù)雜度,你處理這種問題所需要的精力就比處理同等規(guī)模的 C 語言的問題就要難上很多。我在韋諾之戰(zhàn)時,我就知道了,處理這種問題真的相當(dāng)棘手。

我給 Stell Heller(我的老朋友,C++ 的支持者)寫代碼時不會發(fā)生的問題在我與非 Heller 們合作時就被放大了,我和他們合作的結(jié)局可能就是我得給他們擦屁股。所以我就不用 C++ ,我覺得不值得為了其花時間。 C 是有缺陷的,但是 C 有 C++ 沒有的優(yōu)點(diǎn) —— 如果你能在腦內(nèi)模擬出硬件,那么你就能很簡單的看出程序是怎么運(yùn)行的。如果 C++ 真的能解決 C 的問題(也就是說,C++ 是類型安全以及內(nèi)存安全的),那么失去其透明性也是值得的。但是,C++ 并沒有這樣。

我們判斷 C++ 做的還不夠的方法之一是想象一個 C++ 已經(jīng)搞得不錯的世界。在那個世界里,老舊的 C 語言項(xiàng)目會被遷移到 C++ 上來。主流的操作系統(tǒng)內(nèi)核會是 C++ 寫就,而現(xiàn)存的內(nèi)核實(shí)現(xiàn),比如 Linux 會漸漸升級成那樣。在現(xiàn)實(shí)世界,這些都沒有發(fā)生。C++ 不僅沒有打消語言設(shè)計(jì)者設(shè)想像 D、Go 以及 Rust 那樣的新語言的想法,它甚至都沒有取代它的前輩。不改變 C++ 的核心思想,它就沒有未來,也因此,C++ 的抽象泄露leaky abstraction也不會消失。

既然我剛剛提到了 D 語言,那我就說說為什么我不把 D 視為一個夠格的 C 語言競爭者的原因吧。盡管它比 Rust 早出現(xiàn)了八年(和 Rust 相比是九年)Walter Bright 早在那時就有了構(gòu)建那樣一個語言的想法。但是在 2001 年,以 Python 和 Perl 為首的語言的出現(xiàn)已經(jīng)確定了,專有語言能和開源語言抗衡的時代已經(jīng)過去。官方 D 語言庫/運(yùn)行時和 Tangle 的無謂紛爭也打擊了其發(fā)展。它從未修正這些錯誤。

然后就是 Go 語言(我本來想說“以及 Rust”。但是如前文所述,我認(rèn)為 Rust 還需要幾年時間才能有競爭力)。它的確是類型安全以及內(nèi)存安全的(好吧,是在大多數(shù)時候是這樣,但是如果你要使用接口的話就不是如此了,但是自找麻煩可不是正常人的做法)。我的一位好友,Mark Atwood,曾指出過 Go 語言是脾氣暴躁的老頭子因?yàn)閼嵟鴦?chuàng)造出的語言,主要是C 語言的作者之一(Ken Thompson) 因?yàn)?C++ 的混亂臃腫造成的憤怒,我深以為然。

我能理解 Ken 惱火的原因。這幾十年來我就一直認(rèn)為 C++ 搞錯了需要解決的問題。C 語言的后繼者有兩條路可走。其一就是 C++ 那樣,接受 C 的抽象泄漏、裸指針等等,以保證兼容性。然后以此為基礎(chǔ),構(gòu)建一個最先進(jìn)的語言。還有一條道路,就是從根源上解決問題 ——修正C語言的抽象泄露。這一來就會破環(huán)其兼容性,但是也會杜絕 C/C++ 現(xiàn)有的問題。

對于第二條道路,第一次嚴(yán)謹(jǐn)?shù)膰L試就是 1995 年出現(xiàn)的 Java。Java 搞得不錯,但是在語言解釋器上構(gòu)建這門語言使其不適合系統(tǒng)編程。這就在系統(tǒng)編程那留下一個巨大的洞,在 Go 以及 Rust 出現(xiàn)之前的 15 年里,都沒有語言來填補(bǔ)這個空白。這也就是我的 GPSD 和 NTPsec 等軟件在 2017 年仍然主要用 C 寫成的原因,盡管 C 的問題也很多。

在許多方面這都是很糟糕的情況。盡管由于缺少足夠多樣化的選擇,我們很難認(rèn)識到 C/C++ 做的不夠好的地方。我們都認(rèn)為在軟件里面出現(xiàn)缺陷以及基于安全方面考慮的妥協(xié)是理所當(dāng)然的,而不是想想這其中多少是真的由于語言的設(shè)計(jì)問題導(dǎo)致的,就像緩存區(qū)溢出漏洞一樣。

所以,為什么我們花了這么長時間才開始解決這個問題?從 C 1972 年面世到 Go 2009 年出現(xiàn),這其中隔了 37 年;Rust 也是在其僅僅一年之前出現(xiàn)。我想根本原因還是經(jīng)濟(jì)。

從最早的計(jì)算機(jī)語言開始,人們就已經(jīng)知道,每種語言的設(shè)計(jì)都體現(xiàn)了程序員時間與機(jī)器資源的相對價值的權(quán)衡。在機(jī)器這端,就是匯編語言,以及之后的 C 語言,這些語言以犧牲開發(fā)人員的時間為代價來提高性能。 另一方面,像 Lisp 和(之后的)Python 這樣的語言則試圖自動處理盡可能多的細(xì)節(jié),但這是以犧牲機(jī)器性能為代價的。

廣義地說,這兩端的語言的最重要的區(qū)別就是有沒有自動內(nèi)存管理。這與經(jīng)驗(yàn)一致,內(nèi)存管理缺陷是以機(jī)器為中心的語言中最常見的一類缺陷,程序員需要手動管理資源。

當(dāng)相對價值斷言與軟件開發(fā)在某個特定領(lǐng)域的實(shí)際成本動因相匹配時,這個語言就是在經(jīng)濟(jì)上可行的。語言設(shè)計(jì)者通過設(shè)計(jì)一個適合處理現(xiàn)在或者不遠(yuǎn)的將來出現(xiàn)的情況的語言,而不是使用現(xiàn)有的語言來解決他們遇到的問題。

隨著時間的推移,時興的編程語言已經(jīng)漸漸從需要手動管理內(nèi)存的語言變?yōu)閹в凶詣觾?nèi)存管理以及垃圾回收(GC)機(jī)制的語言。這種變化對應(yīng)了摩爾定律導(dǎo)致的計(jì)算機(jī)硬件成本的降低,使得程序員的時間與之前相比更加的寶貴。但是,除了程序員的時間以及機(jī)器效率的變化之外,至少還有兩個維度與這種變化相關(guān)。

其一就是距離底層硬件的距離。底層軟件(內(nèi)核與服務(wù)代碼)的低效率會被成倍地擴(kuò)大。因此我們可以發(fā)現(xiàn),以機(jī)器為中心的語言向底層推進(jìn),而以程序員為中心的語言向著高級發(fā)展。因?yàn)榇蠖鄶?shù)情況下面向用戶的語言僅僅需要以人類的反應(yīng)速度(0.1 秒)做出回應(yīng)即可。

另一個維度就是項(xiàng)目的規(guī)模。由于程序員抽象發(fā)生的問題的漏洞以及自身的疏忽,任何語言都會有可預(yù)期的每千行代碼的出錯率。這個比率在以機(jī)器為中心的語言上很高,而在程序員為中心的帶有 GC 的語言里就大大降低。隨著項(xiàng)目規(guī)模的增大,帶有 GC 的語言作為一個防止出錯率不堪入目的策略就顯得愈發(fā)重要起來。

當(dāng)我們使用這三種維度來看當(dāng)今的編程語言的形勢 —— C 語言在底層,蓬勃發(fā)展的帶有 GC 的語言在上層,我們會發(fā)現(xiàn)這基本上很合理。但是還有一些看似不合理的是 —— C 語言的應(yīng)用不合理地廣泛。

我為什么這么說?想想那些經(jīng)典的 Unix 命令行工具吧。那些小程序通常都可以使用帶有完整的 POSIX 支持的腳本語言快速實(shí)現(xiàn)出來。重新編碼那些程序?qū)⑹沟盟鼈冋{(diào)試、維護(hù)和拓展起來都會更加簡單。

但是為什么還是使用 C (或者某些像 eqn 的項(xiàng)目,使用 C++)?因?yàn)橛修D(zhuǎn)換成本。就算是把相當(dāng)小、相當(dāng)簡單的程序使用新的語言重寫并且確認(rèn)你已經(jīng)忠實(shí)地保留了所有非錯誤行為都是相當(dāng)困難的。籠統(tǒng)地說,在任何一個領(lǐng)域的應(yīng)用編程或者系統(tǒng)編程在一種語言的權(quán)衡過時之后,仍然堅(jiān)持使用它。

這就是我和其他預(yù)測者犯的大錯。 我們認(rèn)為,降低機(jī)器資源成本(增加程序員時間的相對成本)本身就足以取代 C 語言(以及沒有 GC 的語言)。 在這個過程中,我們有一部分或者甚至一大部分都是錯誤的 —— 自 20 世紀(jì) 90 年代初以來,腳本語言、Java 以及像 Node.js 這樣的東西的興起顯然都是這樣興起的。

但是,競爭系統(tǒng)編程語言的新浪潮并非如此。 Rust 和 Go 都明確地回應(yīng)了增加項(xiàng)目規(guī)模這一需求。 腳本語言是先是作為編寫小程序的有效途徑,并逐漸擴(kuò)大規(guī)模,而 Rust 和 Go 從一開始就定位為減少大型項(xiàng)目中的缺陷率。 比如 Google 的搜索服務(wù)和 Facebook 的實(shí)時聊天復(fù)用。

我認(rèn)為這就是對 “為什么不再早點(diǎn)兒” 這個問題的回答。Rust 和 Go 實(shí)際上并不算晚,它們相對迅速地回應(yīng)了一個直到最近才被發(fā)現(xiàn)低估的成本動因問題。

好,說了這么多理論上的問題。按照這些理論我們能預(yù)言什么?它告訴我們在 C 之后會出現(xiàn)什么?

推動 GC 語言發(fā)展的趨勢還沒有扭轉(zhuǎn),也不要期待其扭轉(zhuǎn)。這是大勢所趨。因此:最終我們將擁有具有足夠低延遲的 GC 技術(shù),可用于內(nèi)核和底層固件,這些技術(shù)將以語言實(shí)現(xiàn)方式被提供。 這些才是真正結(jié)束 C 長期統(tǒng)治的語言應(yīng)有的特性。

我們能從 Go 語言開發(fā)團(tuán)隊(duì)的工作文件中發(fā)現(xiàn)端倪,他們正朝著這個方向前進(jìn) —— 可參見關(guān)于并發(fā) GC 的學(xué)術(shù)研究 —— 從未停止研究。 如果 Go 語言自己沒有選擇這么做,其他的語言設(shè)計(jì)師也會這樣。 但我認(rèn)為他們會這么做 —— 谷歌推動他們的項(xiàng)目的能力是顯而易見的(我們從 “Android 的發(fā)展”就能看出來)。

在我們擁有那么理想的 GC 之前,我把能替換 C 語言的賭注押在 Go 語言上。因?yàn)槠?GC 的開銷是可以接受的 —— 也就是說不只是應(yīng)用,甚至是大部分內(nèi)核外的服務(wù)都可以使用。原因很簡單: C 的出錯率無藥可醫(yī),轉(zhuǎn)化成本還很高。

上周我嘗試將 C 語言項(xiàng)目轉(zhuǎn)化到 Go 語言上,我發(fā)現(xiàn)了兩件事。其一就是這活很簡單, C 的語言和 Go 對應(yīng)的很好。還有就是寫出的代碼相當(dāng)簡單。由于 GC 的存在以及把集合視為首要的數(shù)據(jù)結(jié)構(gòu),人們會預(yù)期代碼減少,但是我意識到我寫的代碼比我最初期望的減少的更多,比例約為 2:1 —— 和 C 轉(zhuǎn) Python 類似。

抱歉吶,Rust 粉們。你們在內(nèi)核以及底層固件上有著美好的未來,但是你們在別的 C 領(lǐng)域被 Go 壓的很慘。沒有 GC ,再加上難以從 C 語言轉(zhuǎn)化過來,還有就是 API 的標(biāo)準(zhǔn)部分還是不夠完善。(我的select(2)又哪去了啊?)。

對你們來說,唯一的安慰就是,C++ 粉比你們更糟糕 —— 如果這算是安慰的話。至少 Rust 還可以在 Go 顧及不到的 C 領(lǐng)域內(nèi)大展宏圖。C++ 可不能。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 計(jì)算機(jī)
    +關(guān)注

    關(guān)注

    19

    文章

    7642

    瀏覽量

    90460
  • C語言
    +關(guān)注

    關(guān)注

    180

    文章

    7630

    瀏覽量

    140952
  • C++
    C++
    +關(guān)注

    關(guān)注

    22

    文章

    2118

    瀏覽量

    74956

原文標(biāo)題:計(jì)算機(jī)語言的巨變

文章出處:【微信號:LinuxHub,微信公眾號:Linux愛好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    格羅方德鍺硅技術(shù)的發(fā)展歷史和應(yīng)用

    20世紀(jì)80年代末至90年代初,在紐約和佛蒙特州這些看似與半導(dǎo)體革命毫無關(guān)聯(lián)的地方,一場悄無聲息的半導(dǎo)體變革正悄然興起。即便是最癡迷于半導(dǎo)體
    的頭像 發(fā)表于 06-24 14:00 ?235次閱讀
    格羅方德鍺硅技術(shù)的發(fā)展歷史和應(yīng)用

    UWB技術(shù)如何推動智能制造產(chǎn)業(yè)變革

    讓我們搭乘時光機(jī),回到20世紀(jì)80年代的一家制造商;如果用那時的日常運(yùn)營方式應(yīng)對今天的競爭環(huán)境,它還能生存下來嗎?恐怕很難。當(dāng)今的制造業(yè)早已不僅僅是傳統(tǒng)意義上的生產(chǎn)制造,而是邁向了智能
    的頭像 發(fā)表于 05-23 11:38 ?354次閱讀

    新思科技如何重塑未來的設(shè)計(jì)

    20世紀(jì)70年代,個人電腦(PC)問世。到了80年代,個人電腦在企業(yè)、學(xué)校和家庭逐漸普及,這標(biāo)志著一個新的時代拉開了帷幕。
    的頭像 發(fā)表于 05-16 15:22 ?357次閱讀

    吹田電氣精彩亮相 | 21世紀(jì)電源網(wǎng)·全球數(shù)字能源與雙碳高質(zhì)量發(fā)展論壇

    20253月29日,吹田電氣(深圳)有限公司受邀參加【21世紀(jì)電源網(wǎng)·全球數(shù)字能源與雙碳高質(zhì)量發(fā)展論壇】,吹田電氣作為全球電氣測量和測控解決方案的專家,通過在測控領(lǐng)域的創(chuàng)新技術(shù)和解決方案的精心展示
    的頭像 發(fā)表于 03-31 16:26 ?480次閱讀
    吹田電氣精彩亮相 | 21<b class='flag-5'>世紀(jì)</b>電源網(wǎng)·全球數(shù)字能源與雙碳高質(zhì)量發(fā)展論壇

    一種基于矢量控制的無位置傳感器永磁同步電機(jī)調(diào)速系統(tǒng)的研究

    空間矢量 PWM 控制策略早期由日本學(xué)者在20世紀(jì)80年代初針對交流電動機(jī)變頻驅(qū)動而提出的,其主要思路在于拋棄原有的正弦波脈寬調(diào)制(SPWM) , 而是采用逆變器空間電壓矢量的切換以獲
    發(fā)表于 03-28 13:58

    氫能:21世紀(jì)的終極能源與氫氣傳感器的應(yīng)用?

    氫能:21世紀(jì)的終極能源 氫能的優(yōu)勢與重要性 氫能被譽(yù)為“21世紀(jì)的終極能源”,是理想的能量載體和清潔能源。作為一種清潔、高效、安全且可持續(xù)的二次能源,氫能在促進(jìn)碳減排和支持能源安全方面扮演著關(guān)鍵
    的頭像 發(fā)表于 03-12 09:36 ?346次閱讀
    氫能:21<b class='flag-5'>世紀(jì)</b>的終極能源與氫氣傳感器的應(yīng)用?

    用于高效3D玻璃微加工的少脈沖飛秒激光曝光

    20世紀(jì)80年代以來,基于激光的微/納尺度三維結(jié)構(gòu)制備技術(shù)一直是研究人員努力去解決的問題。
    的頭像 發(fā)表于 01-20 15:39 ?456次閱讀
    用于高效3D玻璃微加工的少脈沖飛秒激光曝光

    光耦合器的演變:過去、現(xiàn)在和未來

    20世紀(jì)60年代問世以來,光耦合器徹底改變了電子系統(tǒng)實(shí)現(xiàn)電氣隔離和信號傳輸?shù)姆绞健Mㄟ^使用光作為傳輸信號的媒介,光耦合器消除了直接電氣連接的需求,確保了安全性和可靠性。本文記錄了光耦
    的頭像 發(fā)表于 12-06 10:03 ?420次閱讀

    功率半導(dǎo)體各品類及下游應(yīng)用市場空間分析

    20世紀(jì)80年代后期,溝槽型功率MOSFET和IGBT逐步面世,半導(dǎo)體功率器件正式進(jìn)入電子應(yīng)用時代。20
    的頭像 發(fā)表于 09-27 08:04 ?1408次閱讀
    功率半導(dǎo)體各品類及下游應(yīng)用市場空間分析

    【每天學(xué)點(diǎn)AI】五個階段帶你了解人工智能大模型發(fā)展史!

    20世紀(jì)50年代NLP的早期研究主要基于規(guī)則的方法,依賴于語言學(xué)專家手工編寫的規(guī)則和詞典。這些規(guī)則通常是關(guān)于語法、語義和句法結(jié)構(gòu)的人工規(guī)則。例如一個簡單的陳述句通常遵循“主語+謂語+賓
    的頭像 發(fā)表于 09-25 16:51 ?993次閱讀
    【每天學(xué)點(diǎn)AI】五個階段帶你了解人工智能大模型發(fā)展史!

    光學(xué)識別技術(shù)的工作原理是什么?

    。 一、OCR技術(shù)的發(fā)展歷史 OCR技術(shù)起源于20世紀(jì)50年代,當(dāng)時主要用于郵政編碼的自動識別。隨著計(jì)算機(jī)技術(shù)的發(fā)展,OCR技術(shù)逐漸成熟,并廣泛應(yīng)用于各種場景。20
    的頭像 發(fā)表于 09-10 15:46 ?1332次閱讀

    國產(chǎn)工控機(jī)的發(fā)展與未來

    市場中占據(jù)一席之地。本文將探討國產(chǎn)工控機(jī)的發(fā)展歷程、市場現(xiàn)狀、技術(shù)優(yōu)勢及未來趨勢。一、發(fā)展歷程初期階段國產(chǎn)工控機(jī)的起步可以追溯到20世紀(jì)80年代
    的頭像 發(fā)表于 08-12 17:56 ?1258次閱讀
    國產(chǎn)工控機(jī)的發(fā)展與<b class='flag-5'>未來</b>

    同步DRAM(SDRAM)介紹

    DRAM從20世紀(jì)70年代初到90年代初生產(chǎn),接口都是異步的,其中輸入控制信號直接影響內(nèi)部功能。
    的頭像 發(fā)表于 07-29 09:55 ?1394次閱讀
    同步DRAM(SDRAM)介紹

    圖像識別算法有哪幾種

    計(jì)算機(jī)科學(xué)家開始嘗試使用計(jì)算機(jī)來處理和分析圖像數(shù)據(jù)。最初的圖像識別算法主要基于模板匹配和邊緣檢測等簡單方法,但隨著計(jì)算機(jī)硬件和算法的不斷發(fā)展,圖像識別算法逐漸變得更加復(fù)雜和高效。 20世紀(jì)80
    的頭像 發(fā)表于 07-16 11:22 ?2374次閱讀

    自然語言處理技術(shù)的核心是什么

    ,廣泛應(yīng)用于機(jī)器翻譯、情感分析、語音識別、智能問答、文本摘要等眾多領(lǐng)域。 自然語言處理技術(shù)的發(fā)展可以追溯到20世紀(jì)50年代。1950,圖靈
    的頭像 發(fā)表于 07-03 14:20 ?1735次閱讀
    主站蜘蛛池模板: 宜城市| 芦山县| 谷城县| 阿勒泰市| 东阳市| 临猗县| 南丹县| 福泉市| 股票| 清河县| 荆门市| 萍乡市| 长乐市| 高碑店市| 金湖县| 通州市| 无锡市| 密山市| 庆安县| 青冈县| 玉门市| 元谋县| 乌兰察布市| 通州市| 香河县| 道真| 开阳县| 云安县| 文登市| 锦屏县| 安康市| 沿河| 五华县| 霍邱县| 衡水市| 洛宁县| 台安县| 定边县| 明水县| 临颍县| 阳泉市|