2020欧美日韩在线视频,神马午夜久久,亚洲黄一区二区http://www.aygfsteel.com/yangyi/category/28785.html用心 - 珍惜時間,勇于創造zh-cnWed, 16 Jan 2008 05:59:25 GMTWed, 16 Jan 2008 05:59:25 GMT60如何學習springhttp://www.aygfsteel.com/yangyi/archive/2008/01/16/175607.html楊一楊一Wed, 16 Jan 2008 02:19:00 GMThttp://www.aygfsteel.com/yangyi/archive/2008/01/16/175607.htmlhttp://www.aygfsteel.com/yangyi/comments/175607.htmlhttp://www.aygfsteel.com/yangyi/archive/2008/01/16/175607.html#Feedback0http://www.aygfsteel.com/yangyi/comments/commentRss/175607.htmlhttp://www.aygfsteel.com/yangyi/services/trackbacks/175607.html 前人說讀書有三個層次,我看這大概可以總結為是新的三個層次:)
因為沒有搞清楚為什么要用,就會誤用,用了還不如沒用。其實我覺得學spring讀讀rod那個原著挺好的,比單純學spring有幫助,最好自己有體會。比如你開發網站很熟練了,自然就知道為什么要用spring了。等完全領會了他那兩本書后,再讀讀他們的reference book應該差不多了。
這個過程其實就是做什么->為什么->怎么做的過程



楊一 2008-01-16 10:19 發表評論
]]>
延遲加載技術及其在iBATIS中的實現http://www.aygfsteel.com/yangyi/archive/2007/12/09/166486.html楊一楊一Sun, 09 Dec 2007 11:17:00 GMThttp://www.aygfsteel.com/yangyi/archive/2007/12/09/166486.htmlhttp://www.aygfsteel.com/yangyi/comments/166486.htmlhttp://www.aygfsteel.com/yangyi/archive/2007/12/09/166486.html#Feedback0http://www.aygfsteel.com/yangyi/comments/commentRss/166486.htmlhttp://www.aygfsteel.com/yangyi/services/trackbacks/166486.htmlO/R映射框架的延遲加載技術實現大體上有這么4種(參看Martin Fowler的意見):
(http://www.martinfowler.com/eaaCatalog/lazyLoad.html)

There are four main varieties of lazy load. Lazy Initialization uses a special marker value (usually null) to indicate a field isn't loaded. Every access to the field checks the field for the marker value and if unloaded, loads it. Virtual Proxy is an object with the same interface as the real object. The first time one of its methods are called it loads the real the object and then delegates. Value Holder is an object with a getValue method. Clients call getValue to get the real object, the first call triggers the load. A ghost is the real object without any data. The first time you call a method the ghost loads the full data into its fields.

通過閱讀源代碼,發現iBATIS中的延遲加載是用上述方式中的虛擬代理實現的.

在動態代理的實現上, iBATIS有Java動態代理和CGLIB兩種實現方案,iBATIS把用CGLIB實現的方案稱為Enhanced的方案,可見CGLIB的效率會比java的動態代理效率要高.
在iBATIS首先判斷是否定義了延遲加載,如果定義了,則利用Lazy的Loader來提取數據(返回一個Proxy).如沒有執行對這個的任何操作,或者只是不再使用(finalize),則不做處理,否者就加載真正的對象.

可以通過閱讀類
com.ibatis.sqlmap.engine.mapping.result.loader.LazyResultLoader
的源碼獲取更多的細節.

楊一 2007-12-09 19:17 發表評論
]]>
建了一個工具類,送給需要拼接插入字符串的朋友們:)http://www.aygfsteel.com/yangyi/archive/2007/06/14/124275.html楊一楊一Thu, 14 Jun 2007 04:41:00 GMThttp://www.aygfsteel.com/yangyi/archive/2007/06/14/124275.htmlhttp://www.aygfsteel.com/yangyi/comments/124275.htmlhttp://www.aygfsteel.com/yangyi/archive/2007/06/14/124275.html#Feedback0http://www.aygfsteel.com/yangyi/comments/commentRss/124275.htmlhttp://www.aygfsteel.com/yangyi/services/trackbacks/124275.html
import  java.sql.Date;

/**
 * 這個類用來對數據庫做插入操作時采用
 * 
@author  yangyi
 *
 
*/


public   class  InsertTool  {
    
private  String tableName;

    
private  StringBuffer sbColumnName;

    
private  StringBuffer sbColumnContent;

    
public  InsertTool(String tableName)  {
        
this .tableName  =  tableName;
        sbColumnName 
=   new  StringBuffer();
        sbColumnContent 
=   new  StringBuffer();
    }


    
public   void  add(String columnName, Object columnContent)  {
        insertColumnName(columnName);
        
if  (columnContent  instanceof  Date)  {
            sbColumnContent.append(
" , "   +  columnContent);
        }
  else
            sbColumnContent.append(
" ,' "   +  columnContent  +   " ' " );
    }


    
public   void  add(String columnName,  int  columnContent)  {
        insertColumnName(columnName);
        sbColumnContent.append(
" , " + columnContent);
    }


    
private   void  insertColumnName(String columnName)  {
        sbColumnName.append(
" , "   +  columnName);
    }


    
public  String getInsertSql()  {
        StringBuffer sb 
=   new  StringBuffer();
        sb.append(
" INSERT INTO  " );
        sb.append(tableName);
        sb.append(
" ( " );
        sb.append(sbColumnName.substring(
1 ));
        sb.append(
" ) VALUES( " );
        sb.append(sbColumnContent.substring(
1 ));
        sb.append(
" ) " );
        
return  sb.toString();
    }

    
    
public   static   void  main(String args[]) {
        InsertTool it 
=   new  InsertTool( " aa " );
        it.add(
" a " , " d " );
        it.add(
" b " , 10 );
        it.add(
" c " , 1 );
        System.out.println(it.getInsertSql());
    }

}

使用方法非常簡單,看看Main就知道啦

楊一 2007-06-14 12:41 發表評論
]]>
[譯]JDBC4.0具有哪些新特性?http://www.aygfsteel.com/yangyi/archive/2007/04/24/113241.html楊一楊一Tue, 24 Apr 2007 08:25:00 GMThttp://www.aygfsteel.com/yangyi/archive/2007/04/24/113241.htmlhttp://www.aygfsteel.com/yangyi/comments/113241.htmlhttp://www.aygfsteel.com/yangyi/archive/2007/04/24/113241.html#Feedback1http://www.aygfsteel.com/yangyi/comments/commentRss/113241.htmlhttp://www.aygfsteel.com/yangyi/services/trackbacks/113241.htmlJDBC 4.0 的新特性

JDBC 4.0 文檔列舉了 20 個改進及新特性 , 大小不等 . 本文無法做到盡述其詳 , 為此筆者根據其功能特點及應用領域將其分為下述四類:

1. 驅動及連接管理

2. 異常處理

3. 數據類型支持

4. API 的變化

本文按照上述四類展開詳述
  閱讀全文

楊一 2007-04-24 16:25 發表評論
]]>
Zarar Siddiqi: JSP是不是應該退出歷史舞臺了?(譯自theServerSide.com)http://www.aygfsteel.com/yangyi/archive/2007/04/22/112630.html楊一楊一Sun, 22 Apr 2007 07:31:00 GMThttp://www.aygfsteel.com/yangyi/archive/2007/04/22/112630.htmlhttp://www.aygfsteel.com/yangyi/comments/112630.htmlhttp://www.aygfsteel.com/yangyi/archive/2007/04/22/112630.html#Feedback4http://www.aygfsteel.com/yangyi/comments/commentRss/112630.htmlhttp://www.aygfsteel.com/yangyi/services/trackbacks/112630.htmlAre JSPs Dead?,"的文章,文中不無夸張地建議,JSP技術應該也許根本不該出現在JavaEE開發的前沿陣地上,或許僅僅是ASP的原因吧.他說:
JSP給Java的應用的重用所帶來的阻礙是巨大的, J2EE中并沒有提供這種機制.而如果你非要這么做的話,則必然以犧牲其他模塊或應用的更大的可重用性為代價。對于容器的高度依賴導致了對SE的重用不可實現,同時測試工作也變得舉步維艱,您或許不得不建立一些Mock對象來觀察結果.JSP和Servlet一對一的綁定,對我來說也不是什么有趣的事情,后臺對JSP編譯為Java類的處理也毫無意義. 既然可以通過Servlet為網頁直接服務,為什么還要多余的推出一種混合的技術呢?

如果您還在考慮用JSP做您的MVC模型中的V部分來開發哪怕是一個中等大小的應用,您已經在犯嚴重的錯誤了。特別是,如果您的JSP僅僅作為視圖顯示的時候(頁面中沒有實際代碼,只有taglibs),因為,您甚至連它僅有的“優點”——內嵌Java代碼都沒有應用。如果您是那種認為標簽庫沒有想象中那么糟的人,那么您還是可以使用頁面腳本,以此來生產您認為合格的軟件。您已經無藥可救了。
Zarar建議使用Freemarker, Velocity, 以及AJAX 來替換JSP.

這實在是種有趣的想法, 因為不論我們喜歡與否 (Zarar顯然屬于“否”的行列) JSPs是Java EE中默認的顯示技術. JSP是否稱職呢? 是否還有其他的可以成為標準的技術呢? 您又在應用何種技術呢? 為什么? (那些還被迫夾在陳舊的項目的中的,仍在使用Struts 1.1和JSPs的“可憐”的朋友們呢?)

楊一 2007-04-22 15:31 發表評論
]]>
用代碼一步步學習Spring:IoC,AOPhttp://www.aygfsteel.com/yangyi/archive/2006/12/11/87082.html楊一楊一Mon, 11 Dec 2006 14:55:00 GMThttp://www.aygfsteel.com/yangyi/archive/2006/12/11/87082.htmlhttp://www.aygfsteel.com/yangyi/comments/87082.htmlhttp://www.aygfsteel.com/yangyi/archive/2006/12/11/87082.html#Feedback1http://www.aygfsteel.com/yangyi/comments/commentRss/87082.htmlhttp://www.aygfsteel.com/yangyi/services/trackbacks/87082.html閱讀全文

楊一 2006-12-11 22:55 發表評論
]]>
數字驗證碼小圖生成程序http://www.aygfsteel.com/yangyi/archive/2006/09/21/71188.html楊一楊一Thu, 21 Sep 2006 12:13:00 GMThttp://www.aygfsteel.com/yangyi/archive/2006/09/21/71188.htmlhttp://www.aygfsteel.com/yangyi/comments/71188.htmlhttp://www.aygfsteel.com/yangyi/archive/2006/09/21/71188.html#Feedback0http://www.aygfsteel.com/yangyi/comments/commentRss/71188.htmlhttp://www.aygfsteel.com/yangyi/services/trackbacks/71188.html閱讀全文

楊一 2006-09-21 20:13 發表評論
]]>
Spring Ioc值得注意的兩個特性http://www.aygfsteel.com/yangyi/archive/2006/08/24/65402.html楊一楊一Wed, 23 Aug 2006 17:03:00 GMThttp://www.aygfsteel.com/yangyi/archive/2006/08/24/65402.htmlhttp://www.aygfsteel.com/yangyi/comments/65402.htmlhttp://www.aygfsteel.com/yangyi/archive/2006/08/24/65402.html#Feedback0http://www.aygfsteel.com/yangyi/comments/commentRss/65402.htmlhttp://www.aygfsteel.com/yangyi/services/trackbacks/65402.html 2 設值注入時,在setXX方法中可以不僅僅是簡單的this.xX = xX;而可以對xX做一些加工,如:
setXX(int xX){
if(xX > 10){
 
this.xX = xX/2;
}
else
 
this.xX = xX;
}
這兩個小技巧還停留在使用軟件而不是開發軟件的淺層次上,然而隨著Spring的日益流行,他們也許能給站在巨人肩膀上的您的開發帶來莫大的便利。


楊一 2006-08-24 01:03 發表評論
]]>
關于一些java框架“中文問題”的看法http://www.aygfsteel.com/yangyi/archive/2006/08/21/64781.html楊一楊一Mon, 21 Aug 2006 06:07:00 GMThttp://www.aygfsteel.com/yangyi/archive/2006/08/21/64781.htmlhttp://www.aygfsteel.com/yangyi/comments/64781.htmlhttp://www.aygfsteel.com/yangyi/archive/2006/08/21/64781.html#Feedback11http://www.aygfsteel.com/yangyi/comments/commentRss/64781.htmlhttp://www.aygfsteel.com/yangyi/services/trackbacks/64781.html閱讀全文

楊一 2006-08-21 14:07 發表評論
]]>
如何利用apache, war包發布你的網站http://www.aygfsteel.com/yangyi/archive/2006/08/20/64586.html楊一楊一Sun, 20 Aug 2006 01:35:00 GMThttp://www.aygfsteel.com/yangyi/archive/2006/08/20/64586.htmlhttp://www.aygfsteel.com/yangyi/comments/64586.htmlhttp://www.aygfsteel.com/yangyi/archive/2006/08/20/64586.html#Feedback0http://www.aygfsteel.com/yangyi/comments/commentRss/64586.htmlhttp://www.aygfsteel.com/yangyi/services/trackbacks/64586.html     在發布war包時,注意到$tomcat_home/webapps/ROOT下面是我們剛剛安裝tomcat后的測試頁面,也是我們部署的根位置所在.把這個文件夾備份到其他位置,或更改名稱.然后把你要部署的war包,改名為ROOT.war,注意這里是大小寫敏感的,一定要大寫.登陸http://localhost:8080,怎么樣,可以了吧?
    想利用apache更安全的發布你的網站?好,下載apache2.0,和tomcat調用模塊mod_jk.so,放到安裝好的apache2modules文件夾下,在$apache_home/conf/httpd.conf配置文件中加入如下內容:
<VirtualHost *:80>
    #你的電子郵箱
    ServerAdmin contactyang@163.com
    #DocumentRoot C:/Program Files/tomcat/webapps/ROOT
    #有域名嗎
    ServerName localhost
    #Load module of mod_jk apache tomcat connecter
    LoadModule jk_module modules/mod_jk.so
    JkWorkersFile conf/workers.properties
    JkLogFile     logs/mod_jk.log
    JkMount  /*.jsp ajp13

    #Load jk2 apache tomcat connecter end
</VirtualHost>

在$apache_home/conf目錄下建立workers.properties文件,加入如下內容:

workers.tomcat_home="c:\program files\tomcat"
#讓mod_jk模塊知道Tomcat的安裝路徑
workers.java_home=C:\Program Files\Java\jdk1.5.0
#讓mod_jk模塊知道jdk路徑
ps=\
worker.list=ajp13
#這里是關鍵,名字要和httpd.conf的一致。如果這里改了httpd.conf也要改。
worker.ajp13.port=8009
#工作端口,tomcat的jk監聽端口,可以查看Tomcat 的Server.xml中有port="8009" protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler"這樣的Connector
worker.ajp13.host=localhost
#Tomcat所在機器,如果安裝在與apache不同的機器則需要設置IP
worker.ajp13.type=ajp13
#類型,Apache與Tomcat之間傳遞使用的協議
worker.ajp13.lbfactor=1

登陸http://localhost/

怎么樣?有了吧


楊一 2006-08-20 09:35 發表評論
]]>
關于SOA與Web Services的疑問http://www.aygfsteel.com/yangyi/archive/2006/08/18/64414.html楊一楊一Fri, 18 Aug 2006 09:51:00 GMThttp://www.aygfsteel.com/yangyi/archive/2006/08/18/64414.htmlhttp://www.aygfsteel.com/yangyi/comments/64414.htmlhttp://www.aygfsteel.com/yangyi/archive/2006/08/18/64414.html#Feedback0http://www.aygfsteel.com/yangyi/comments/commentRss/64414.htmlhttp://www.aygfsteel.com/yangyi/services/trackbacks/64414.html     許多人說,現在最火的SOA里面用到的技術就是Web Service,可是SOA是個概念而已,大廠商主導的東西不一定經得起推敲的,正如WS一樣。

網上一篇介紹SOA的文章如是說:

面向服務架構(SOA)的原則

Web service已經不再是新婚的娘子。眾多企業都已經創建各種實驗性Web Services 項目,事實證明,這項新興的分布式計算技術確實能夠降低集成和開發的成本。另外,一些關鍵的Web Services標準紛紛制定,強安全(robust security)和管理方面的產品也陸續問世。對于志向遠大的企業來說,他們已經在考慮下一步了。

對大多數公司來說,下一步要考慮的不再是點對點的應用,而是Web services在企業間以及業務伙伴間更為寬廣的應用。這種技術的變遷需要更松散耦合、面向基于標準的服務的架構。這樣一個架構要求對IT在組織中的角色有新的觀點和認識,而不僅僅是一種實現方法。通過對業務的敏捷反應,企業可以得到實實在在的回報,而要達到這一點,面向服務架構設計師的角色非常關鍵。除此之外,潛在的回報更是不可勝數-分布計算技術能夠保證對業務需求足夠靈活的反應,而這種業務上的敏捷正是各公司夢寐以求而目前還遙不可及的。

分布式計算將網絡上分布的軟件資源看作是各種服務。面向服務架構是一種不錯的解決方案。但這種架構不是什么新思想;CORBA和DCOM就很類似,但是,這些過去的面向服務架構都受到一些難題的困擾:首先,它們是緊密耦合的,這就意味著如分布計算連接的兩端都必須遵循同樣API的約束。打比方說,如果一個COM對象的代碼有了更改,那么訪問該對象的代碼也必須作出相應更改。其二,這些面向服務架構受到廠商的約束。Microsoft控制DCOM自不必說,CORBA也只是一個偽裝的標準化努力,事實上,實現一個CORBA架構,經常都是在某個廠商對規范的實現上進行工作。

Web services是在改進DCOM和CORBA缺點上的努力。今天應用Web services的面向服務架構與過去不同的特點就在于它們是基于標準以及松散耦合的。廣泛接受的標準(如XML和SOAP)提供了在各不同廠商解決方案之間的交互性。而松散耦合將分布計算中的參與者隔離開來,交互兩邊某一方的改動并不會影響到另一方。這兩者的結合意味著公司可以實現某些Web services而不用對使用這些Web services的客戶端的知識有任何了解。我們將這種基于標準的、松散耦合的面向服務的架構簡稱為SOA。

 
    這和當年的宣傳WS并沒有什么不同,僅僅多了個SOA而已, 試問今天的架構師,哪位應用了WS,哪位涉及了SOA? 有多少成功的案例?哪位知道這項技術在美國的發展情況,有很廣泛的應用嗎,還是僅限于SOA?
    真正項目中需要SOA思想的那種跨國財團有幾個?對于在國內最多的中小型應用,暴露服務倒是極危險的事情。不過作為程序員,學習新技術,新概念實屬無奈之舉 。有些不必要的復雜性干擾人的思維,讓你無法干凈利落地做事。



楊一 2006-08-18 17:51 發表評論
]]>
也談多層架構http://www.aygfsteel.com/yangyi/archive/2006/08/18/64412.html楊一楊一Fri, 18 Aug 2006 09:35:00 GMThttp://www.aygfsteel.com/yangyi/archive/2006/08/18/64412.htmlhttp://www.aygfsteel.com/yangyi/comments/64412.htmlhttp://www.aygfsteel.com/yangyi/archive/2006/08/18/64412.html#Feedback0http://www.aygfsteel.com/yangyi/comments/commentRss/64412.htmlhttp://www.aygfsteel.com/yangyi/services/trackbacks/64412.html敏捷開發中一個經典的原則YAGNI原則,就是通過重構提取公因式當出現一次時,不分層,以后業務復雜了,馬上抽象出一個層次來,分層是依賴倒置原則和模版方法模式的應用。談到時候應該分層,我想:如果只是一個非常簡單的網站,3、5個頁面,7、8張表如果在這種需求下去分層,無異于自己折磨自己,添加系統不必要的復雜性。

楊一 2006-08-18 17:35 發表評論
]]>
如何應用Hibernate在運行期獲取屬性的值http://www.aygfsteel.com/yangyi/archive/2006/08/04/61726.html楊一楊一Fri, 04 Aug 2006 05:39:00 GMThttp://www.aygfsteel.com/yangyi/archive/2006/08/04/61726.htmlhttp://www.aygfsteel.com/yangyi/comments/61726.htmlhttp://www.aygfsteel.com/yangyi/archive/2006/08/04/61726.html#Feedback0http://www.aygfsteel.com/yangyi/comments/commentRss/61726.htmlhttp://www.aygfsteel.com/yangyi/services/trackbacks/61726.html
import java.lang.reflect.Method;

/**
 * 獲取指定bean的指定字段的值
 
*/
public class BeanUtils {
    
private BeanUtils(){}
    
    
/**
     * 根據beanName和列名字獲取hql語句
     * 
@param beanName
     * 
@param columnNames
     * 
@return 以list形式返回數據的hql語句
     
*/
    
public static String getHql(String beanName, String[] columnNames){
        StringBuffer sb 
= new StringBuffer();
        sb.append(
"select new list(");
        StringBuffer columnString 
= new StringBuffer();
        
for(int i=0,len=columnNames.length;i<len;i++){
            columnString.append(
",");
            columnString.append(columnNames[i]);
        }
        sb.append(columnString.substring(
1));
        sb.append(
") from ");
        
if(Character.isUpperCase(beanName.charAt(0)))
            sb.append(beanName);
        
else
            sb.append(upperFirstChar(beanName));
        
return sb.toString();
    }
    
/**
     * 
@param bean 獲取到的域對象
     * 
@param fieldName 欲獲取值的字段名
     * 
@return 字段在當前bean封裝下的值
     
*/
    
public static Object getFieldByName(Object bean, String fieldName){
        
try {
            Method m 
= bean.getClass().getMethod("get"+upperFirstChar(fieldName), null);
            
return m.invoke(bean, null);
        } 
catch (Exception e) {
            e.printStackTrace();
        }
        
return null;
    }
    
private static String upperFirstChar(String orig){
        
return Character.toUpperCase(orig.charAt(0)) + orig.substring(1);
    }
}
按照已經處理后,我們就可以既應用Hibernate對象訪問的優點,又不損失字符串的靈活性,代碼中應用了Hibernate的select特性及java的反射機制


楊一 2006-08-04 13:39 發表評論
]]>
Apache commons-Email中文問題的解決辦法http://www.aygfsteel.com/yangyi/archive/2006/08/01/61246.html楊一楊一Tue, 01 Aug 2006 12:14:00 GMThttp://www.aygfsteel.com/yangyi/archive/2006/08/01/61246.htmlhttp://www.aygfsteel.com/yangyi/comments/61246.htmlhttp://www.aygfsteel.com/yangyi/archive/2006/08/01/61246.html#Feedback2http://www.aygfsteel.com/yangyi/comments/commentRss/61246.htmlhttp://www.aygfsteel.com/yangyi/services/trackbacks/61246.html commons-email主要的封裝類是Email類,這是一個抽象類,該框架給出了SimpleEmail的默認實現,但該實現并不支持中文,即使調用Email的setCharset也不起作用。
事實上,SimpleEmail調用了Email超類中的setContent方法來設置郵件內容(通過setMsg方法),而在設置內容時,又采用了默認的英文字符集,我們只要在代碼中直接調用email類的setContent方法就可以支持中文了,但要注意setContent具備兩個參數,第一個是內容對象,第二個則是內容類型,我們把第二個參數設置為:
SimpleEmail.TEXT_PLAIN + "; charset=utf-8", 即可。理由如下面源代碼所示:
    public void setContent(Object aObject, String aContentType)
    {
          ......
            // set the charset if the input was properly formed
            String strMarker = "; charset=";
            int charsetPos = aContentType.toLowerCase().indexOf(strMarker);

            if (charsetPos != -1)
            {
                // find the next space (after the marker)
                charsetPos += strMarker.length();
                int intCharsetEnd =
                    aContentType.toLowerCase().indexOf(" ", charsetPos);

                if (intCharsetEnd != -1)
                {
                    this.charset =
                        aContentType.substring(charsetPos, intCharsetEnd);
                }
                else
                {
                    this.charset = aContentType.substring(charsetPos);
                }
            }
        }
    }
    即有一個文本解析的過程。


楊一 2006-08-01 20:14 發表評論
]]>
主站蜘蛛池模板: 乐都县| 容城县| 东港市| 秭归县| 阳谷县| 鄂托克前旗| 湟源县| 临江市| 兖州市| 萨嘎县| 正安县| 周至县| 琼海市| 兴业县| 梁河县| 临桂县| 乡城县| 鹿邑县| 牡丹江市| 鄂伦春自治旗| 桐柏县| 安泽县| 腾冲县| 白水县| 阳信县| 镇巴县| 沂水县| 油尖旺区| 璧山县| 藁城市| 荣成市| 嘉黎县| 梅河口市| 独山县| 九龙城区| 尚义县| 高邑县| 竹北市| 迁西县| 陇西县| 纳雍县|