<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    banxitan

    統計

    留言簿(2)

    閱讀排行榜

    評論排行榜

    2013年7月11日 #

    Android Activity MainThread 中不能執行http通信解決辦法

    今天在做離線文件傳輸時。用HTTP上傳文件。程序一運行 報如下的錯誤
    android.os.NetworkOnMainThreadException

    原因是Google從3開始,強制默認禁止UI主線程發起通信請求 

    解決辦法: 

    把通信的代碼轉移到子線程里去做, 比較靠譜的是new一個AyncTask,在里面做通信

                              有幾個細節性的問題是,

                                    第一, 一般原有通信的代碼都是共通的API, 被許多個Activity調用, 一個良好的修改方法是在共通API里面new AyncTask

                                   第二, 通信的API一般來說都是同步的, 你通信,然后畫面主線程需要堵塞住,等待API的通信結果,再決定下面的業務邏輯的走向。

    所以,這塊可以采取 AyncTask.get(), 讓主線程堵塞,直到通信結束。 當然,如果你需要將通信異步的話, 可以用Handler機制來解決


    具體調用代碼如下:HTTP異

    步請求

    package com.qqtech.ucstar.utils;

    import java.io.File;
    import java.io.IOException;
    import java.nio.charset.Charset;

    import org.apache.http.HttpResponse;
    import org.apache.http.client.HttpClient;
    import org.apache.http.client.methods.HttpPost;
    import org.apache.http.entity.mime.HttpMultipartMode;
    import org.apache.http.entity.mime.MultipartEntity;
    import org.apache.http.entity.mime.content.FileBody;
    import org.apache.http.impl.client.DefaultHttpClient;

    import android.os.AsyncTask;

    public class HttpReqTask extends AsyncTask<Object, Object, HttpResponse> {

    @Override
    protected HttpResponse doInBackground(Object arg0) {
    String fileUploadUrl
    = (String) arg0[0];
    String streamid
    = (String) arg0[1];
    File file
    = (File) arg0[2];
    //boolean paramBoolean = Boolean.parseBoolean((String) arg0[3]);
    //String paramString3 = (String) arg0[4];
    HttpClient localHttpClient = new DefaultHttpClient();
    //String str1 = "fileName";
    File localFile = file;
    try {
    if ((localFile == null) || (!localFile.exists()))
    throw new IOException("文件不存在:" + localFile);
    }
    catch (IOException e1) {
    e1.printStackTrace();
    }

    HttpPost localPostMethod
    = new HttpPost(fileUploadUrl+"?streamid="+streamid+"&fileencode=UTF-8");
    //MultipartEntity reqEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
    MultipartEntity reqEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE,null, Charset.forName("UTF-8"));
    try {
    FileBody bin
    = new FileBody(file);
    reqEntity.addPart(
    "file", bin);
    localPostMethod.setEntity(reqEntity);
    HttpResponse response
    = localHttpClient.execute(localPostMethod);
    return response;
    }
    catch (Exception e) {
    e.printStackTrace();
    }

    return null;
    }


    }



    調用代碼如下:


    Object[] param = new Object[5];
         param[0] = answer.getUploadURL();
         param[1] = answer.getStreamid();
         param[2] = new File(answer.getFileURL());
         param[3] = "false";
         param[4] = "";
         AsyncTask res = new HttpReqTask().execute(param);
         HttpResponse rep = null;
         rep = (HttpResponse) res.get();
         if (rep.getStatusLine().getStatusCode() == 200) {
          System.out.println("文件上傳成功");
         }else{
          System.out.println("文件上傳失敗");
         }
        }



    posted @ 2013-07-11 10:51 MikyTan 閱讀(1086) | 評論 (0)編輯 收藏

    2013年6月4日 #

    修改模擬器DNS方法

    今天在做手機終端開發時,發現連上域名服務器老是連不上,而直接用IP連接是OK的,初步懷凝是DNS問題引起來,經查相關的資料,現記錄如下:

    Android模擬器默認的地址是10.0.2.3,默認的DNS也是10.0.2.3,而一般電腦的IP都是192.168.1.100之類的,不在同一個網段。所以就會出現電腦可以上網但是模擬器不能上網的情況。其實設置方法很簡單,只要把模擬器的默認DNS設置成電腦的DNS地址即可。
    第一步:用系統的命令進入Android開發包的tools目錄
     cd X:\...\android-sdk-windows\tool
    第二布:使用adb的shell,確認系統的各項屬性
    adb shell
    getprop 
    getprop會列出系統當前的各項屬性
    第三步:得到模擬器的DNS地址
    在結果里可以看到:
    [net.dns1]: [10.0.2.3]
    [net.dns2]: [10.0.2.4]
    [net.dns3]: [10.0.2.5]
    [net.dns4]: [10.0.2.6]
    第四步:把dns改成我們自己的DNS
    setprop net.dns1 192.168.1.1

    posted @ 2013-06-04 20:24 MikyTan 閱讀(1273) | 評論 (0)編輯 收藏

    2013年5月21日 #

    JAVA 連接 ORCLE RAC連接URL串

    連接的URL串

    jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=vip1)(PORT

    =1521))(ADDRESS=(PROTOCOL=TCP)(HOST=vip2)(PORT=1521))(LOAD_BALANCE=yes)(FAILOVER=

    on))(CONNECT_DATA=(SERVICE_NAME=gs)))


    posted @ 2013-05-21 16:48 MikyTan 閱讀(255) | 評論 (0)編輯 收藏

    2013年5月11日 #

    Oralce 監聽器啟動


    啟動      lsnrctl start
    狀態      lsnrctl status
    關閉      lsnrctl  stop

    posted @ 2013-05-11 14:47 MikyTan 閱讀(180) | 評論 (0)編輯 收藏

    Oracle 導出、導入某用戶所有數據(包括表、視圖、存儲過程...)


    導出命令:exp 用戶名/密碼@數據庫 owner=用戶名 file=文件存儲路徑(如:F:\abcd.dmp)

    測試截圖:exp ZM/sql123@ORCL owner=ZM file=F\abcd.dmp



    導入命令:imp 用戶名/密碼@數據庫 fromuser=用戶名 touser=用戶名 file=d:\cu.dmp ignore=y

     imp:命令類型  

    cu/mycu@db:導入的數據庫登陸(用戶名/密碼@數據庫)  

    fromuser:文件的指定用戶

     touser:指定導入到當前登錄的數據庫某個用戶  

    file:需要導入的數據文件  

    ignore:是否忽略創建錯誤

     

    測試截圖:

    imp ZM/sql123@ORCL fromuser=ZM touser=SZZM file=F:\test.dmp ignore=y





    posted @ 2013-05-11 09:59 MikyTan 閱讀(391) | 評論 (0)編輯 收藏

    2013年5月8日 #

    linux環境下的rmi常見問題

    linux環境下的rmi常見問題

    問題一:RMI服務提供程序運行在Windows操作系統下,RMI服務可以正常訪問,但將RMI服務提供程序部署到Linux操作系統下后,RMI服務無法訪問,提示

    org.springframework.remoting.RemoteConnectFailureException:

    Cannot connect to remote service [rmi://192.168.0.106:1199/ItemRetag]; nested exception is java.rmi.ConnectException: Connection refused to host: 127.0.0.1; ……   
     解決辦法:在加載RMI服務之前將當前服務器的IP指定給hostName,如 System.setProperty("java.rmi.server.hostname", "192.168.100.7");或者修改/etc/hosts文件,在這個文件中加 192.168.100.54  testlinux1 localhost.localdomain localhost 就行,或者將/etc/hosts文件中默認的127.0.0.1改成當前機器的IP即可!

    問題二:java.rmi.server.ExportException: internal error: ObjID already in use Caused by: java.rmi.server.ExportException: internal error: ObjID already in use……

    出現這種問題及有可能是/etc/hosts文件中指定的IP并不是當前服務器的真實IP,RMI在初始化時注冊服務失敗。

    通過System.out.println(InetAddress.getLocalHost().toString());查看當前主機的IP是否為真實IP,如顯示為SIMBANK/220.250.64.24,而真實IP為192.168.1.2         

    解決辦法:修改/etc/hosts文件中錯誤的IP即可,將:

    220.250.64.24          SIMBANK
    修改為

    192.168.1.2          SIMBANK

    posted @ 2013-05-08 20:26 MikyTan 閱讀(3783) | 評論 (0)編輯 收藏

    2013年3月26日 #

    IBM JDK 、SUN JDK、HP JDK如何產生Heapdump文件

    JAVA中,通過分析Heapdump文件可以檢查程序是否存在內存泄露,但是這個文件一般是在程序遇到致命問題時才會產生,而如何事前生成這個文件,從而在程序尚末崩潰前找出問題的所在。

    以下記述了各個版本的JDK產生DUMP文件的方法:

    UN JDK生成Heapdump文件只需要在tomcat啟動腳本中增加 HeapDumpOnOutOfMemoryError 參數
    此參數需要Java SE release 5.0 update 14 或以上支持

    設置示例:
    set JAVA_OPTS=%JAVA_OPTS% -server -Xms512m -Xmx800m -XX:PermSize=64M -XX:MaxPermSize=128m -Djava.awt.headless=true -XX:+HeapDumpOnOutOfMemoryError -XX:+HeapDumpOnCtrlBreak

    IBM JDK生成Heapdump文件的開關:
    — export IBM_HEAPDUMP=true
    — export IBM_HEAP_DUMP=true
    — export IBM_HEAPDUMP_OUTOFMEMORY=true
    — export IBM_JAVADUMP_OUTOFMEMORY=true
    — export IBM_JAVACORE_OUTOFMEMORY=true
    — export IBM_HEAPDUMPDIR=<directory_path>

    HP JDK生成Heapdump文件需要在在環境變量上,加上export _JAVA_HEAPDUMP=1

    posted @ 2013-03-26 16:03 MikyTan 閱讀(1102) | 評論 (0)編輯 收藏

    2013年3月13日 #

    MySql 的批量操作,要加rewriteBatchedStatements參數

    今天在做某項目的POC測試,甲方提供了一個三十萬記錄的TXT數據文件,需要把該文件的記錄插入到數據庫中,由于項目部的同事在搭建測試環境中用的是Mysql數據庫,在把數據導入到數據庫中用的是JDBC的批處理。代碼如下
    private void batchParseGroup(){
            Connection con
    = null;
            PreparedStatement ps 
    =null;
            
    try {
                con
    = DbConnectionManager.getConnection();
                con.setAutoCommit(
    false);
                String sql 
    = " insert into jivegroup(uri,groupname,pgroupid,description,creationdate,modificationdate,priority,selfpriority) values(?,?,?,?,?,?,?,?)";
                ps
    = con.prepareStatement(sql);
                
    for(int i=0;i<groupList.size();i++){
                    Group group 
    = groupList.get(i);
                    ps.setString(
    1, group.getUri());
                    ps.setString(
    2, group.getName());
                    ps.setString(
    3, group.getPgroupId());
                    ps.setString(
    4, group.getName());
                    ps.setString(
    5""+System.currentTimeMillis());
                    ps.setString(
    6""+System.currentTimeMillis());
                    ps.setInt(
    7, group.getPriority());
                    ps.setInt(
    8, group.getPriority());
                    ps.addBatch();
                    
    if(i%100==0){
                        ps.executeBatch();
                    }

                }

                con.commit();
                ps.executeBatch();
            }
     catch (SQLException e) {
                e.printStackTrace();
            }
    finally{
                DbConnectionManager.closeConnection(ps, con);
            }

        }

    在測試時,發現三十萬的數據居然需要十分鐘左右的時間。首先想到的就是Mysql的相關配置是不是有問題,反復修改了Mysql的相應配置參數,收效甚微。

    在Mysql的官網上查到如下:
     http://dev.mysql.com/doc/refman/5.1/en/connector-j-reference-configuration-properties.html

    關于rewriteBatchedStatements參數,Mysql官方的說明:

    Should the driver use multiqueries (irregardless of the setting of "allowMultiQueries") as well as rewriting of prepared statements for INSERT into multi-value inserts when executeBatch() is called? Notice that this has the potential for SQL injection if using plain java.sql.Statements and your code doesn't sanitize input correctly. Notice that for prepared statements, server-side prepared statements can not currently take advantage of this rewrite option, and that if you don't specify stream lengths when using PreparedStatement.set*Stream(), the driver won't be able to determine the optimum number of parameters per batch and you might receive an error from the driver that the resultant packet is too large. Statement.getGeneratedKeys() for these rewritten statements only works when the entire batch includes INSERT statements.



    解決辦法:
          下載最新的JDBC的驅動程序。
          MYSQL URL的配置參數如下:
          jdbc:mysql://54.200.190.80:3306/ccb_ucstar?rewriteBatchedStatements=true

    經過測試。三十多萬的數據。70秒內搞定!

    posted @ 2013-03-13 20:38 MikyTan 閱讀(2795) | 評論 (0)編輯 收藏

    2012年9月17日 #

    Linux 使用 enca 工具進行文件批量格式轉換

    今天在做項目中,供應源提供了一小段的源代碼,但文件編碼格式是GBK的,而我公司建工程時統一用的UTF-8編碼,導進來后出現亂碼。為了解決這一問題,在網上查找了相關的資料,發現可以用 enca工具來進行批量轉換

    1)下載enca工具
      wget http://dl.cihar.com/enca/enca-1.13.tar.gz
    2) tar -zxvf enca-1.13.tar.gz
    3)./configure
    4) make
    5) make install


    轉換命令
      enca -L zh_CN -x UTF-8 *.java


    posted @ 2012-09-17 11:42 MikyTan 閱讀(1396) | 評論 (0)編輯 收藏

    2012年8月18日 #

    沒有那個文件或目錄”的解決方法

    如果sh目錄存在且腳本無誤,最可能是原因是在windows下寫的腳本是dos格式的,放在Linux下編碼不識別,解決方法是使用dos2unix命令轉一下,即輸入: dos2unix 文件名

    posted @ 2012-08-18 16:01 MikyTan 閱讀(373) | 評論 (0)編輯 收藏

    僅列出標題  下一頁
    主站蜘蛛池模板: 亚洲免费在线观看视频| 亚洲伦理一二三四| 99热在线观看免费| 亚洲hairy多毛pics大全| 亚洲精品乱码久久久久66| 亚洲 自拍 另类小说综合图区| 18女人水真多免费高清毛片| 亚洲av色香蕉一区二区三区| 亚洲中文久久精品无码1| 一区二区三区亚洲| 亚洲av无码av制服另类专区| 亚洲人成电影在线播放| 国产精品亚洲综合一区| 国产中文字幕免费| 波多野结衣中文一区二区免费| 国产男女猛烈无遮挡免费视频| 国产一区视频在线免费观看| 国产精品免费视频播放器| 国产免费午夜a无码v视频| 国产一区二区三区在线免费观看 | 色偷偷亚洲男人天堂| 亚洲人成伊人成综合网久久| 亚洲视频在线一区二区三区| 亚洲第一页在线观看| 亚洲色欲色欲www在线播放| 特级毛片全部免费播放| 色老板亚洲视频免在线观| 噜噜综合亚洲AV中文无码| 国产高潮流白浆喷水免费A片 | 今天免费中文字幕视频| 无码人妻久久一区二区三区免费| 女人18毛片a级毛片免费视频| 无码欧精品亚洲日韩一区夜夜嗨| 国产亚洲一区二区精品| 亚洲精品第一国产综合亚AV| APP在线免费观看视频| 日韩午夜免费视频| 亚洲免费人成视频观看| 色婷婷综合缴情综免费观看| 91免费资源网站入口| 99在线在线视频免费视频观看|