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

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

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

    咖啡伴侶

    呆在上海
    posts - 163, comments - 156, trackbacks - 0, articles - 2

    const Ln2= 0.693147180559945309417232121458\             176568075500134360255254120680009 const Log2E= 1/Ln2 // this is a precise reciprocal const Billion = 1e9 // float constant const hardEight = (1 << 100) >> 97 

    根據上面的例子我們可以看到,反斜杠 \ 可以在常量表達式中作為多行的連接符使用。


    格式化說明符

    在格式化字符串里,%d 用于格式化整數(%x 和 %X 用于格式化 16 進制表示的數字),%g 用于格式化浮點型(%f 輸出浮點數,%e 輸出科學計數表示法),%0d 用于規定輸出定長的整數,其中開頭的數字 0 是必須的。

    %n.mg 用于表示數字 n 并精確到小數點后 m 位,除了使用 g 之外,還可以使用 e 或者 f,例如:使用格式化字符串 %5.2e 來輸出 3.4 的結果為3.40e+00

    posted @ 2013-07-30 08:45 oathleo 閱讀(182) | 評論 (0)編輯 收藏

    包是結構化代碼的一種方式:每個程序都由包(通常簡稱為 pkg)的概念組成,可以使用自身的包或者從其它包中導入內容。

    如同其它一些編程語言中的類庫或命名空間的概念,每個 Go 文件都屬于且僅屬于一個包。一個包可以由許多以 .go 為擴展名的源文件組成,因此文件名和包名一般來說都是不相同的。

    你必須在源文件中非注釋的第一行指明這個文件屬于哪個包,如:package mainpackage main表示一個可獨立執行的程序,每個 Go 應用程序都包含一個名為 main 的包。


    如果需要多個包,它們可以被分別導入:

    import "fmt" import "os" 

    或:

    import “fmt”; import “os” 

    但是還有更短且更優雅的方法(被稱為因式分解關鍵字,該方法同樣適用于 const、var 和 type 的聲明或定義):

    import (     "fmt"     "os" )

    可見性規則

    當標識符(包括常量、變量、類型、函數名、結構字段等等)以一個大寫字母開頭,如:Group1,那么使用這種形式的標識符的對象就可以被外部包的代碼所使用(客戶端程序需要先導入這個包),這被稱為導出(像面向對象語言中的 public);標識符如果以小寫字母開頭,則對包外是不可見的,但是他們在整個包的內部是可見并且可用的(像面向對象語言中的 private )。


    你可以通過使用包的別名來解決包名之間的名稱沖突,或者說根據你的個人喜好對包名進行重新設置,如:import fm "fmt"。下面的代碼展示了如何使用包的別名:

    Example 4.2 alias.go

    package main import fm "fmt" // alias3  func main() {     fm.Println("hello, world") }

    函數里的代碼(函數體)使用大括號 { } 括起來。

    左大括號 { 必須與方法的聲明放在同一行,這是編譯器的強制規定,否則你在使用 gofmt 時就會出現build-error: syntax error: unexpected semicolon or newline before { 這樣的錯誤提示。


    一個函數可以擁有多返回值,返回類型之間需要使用逗號分割,并使用小括號 ( ) 將它們括起來,如:func FunctionName (a typea, b typeb) (t1 type1, t2 type2)

    posted @ 2013-07-30 08:44 oathleo 閱讀(201) | 評論 (0)編輯 收藏


    • Shorthand for writing Vector3(0, 0, 1)
      Vector3(0, 0, 1)的簡碼,也就是向z軸。
    • Shorthand for writing Vector3(0, 1, 0)
      Vector3(0, 1, 0)的簡碼,也就是向y軸。
    • Shorthand for writing Vector3(1, 0, 0)
      Vector3(1, 0, 0)的簡碼,也就是向x軸。 
    transform.Rotate(Vector3.forward *Time.deltaTime * RotateSpeed);


    Vector3.forward代表以Z軸為軸旋轉

    Z軸 forward 代表往前
    X軸代表右 right
    Y軸代表往上up



    posted @ 2013-07-04 17:04 oathleo 閱讀(289) | 評論 (0)編輯 收藏

    Java路徑中的空格問題
    1、 URLTest.class.getResource("/").getPath();
        URLTest.class.getResource("/").getFile();
        URLTest.class.getClassLoader().getResource("").getPath();
        Thread.currentThread().getContextClassLoader().getResource("").getPath();等多種相似方式獲得的路徑,不能被FileReader()和FileWriter()直接應用,原因是URL對空格,特殊字符(%,#,[]等)和中文進行了編碼處理。如果文件中URLTest.class.getResource("/").getPath();必須以"/"開頭然后再加文件名,而URLTest.class.getClassLoader().getResource("").getPath();不用加"/"可以直接添加文件名。

    路徑中包含空格時,如果空格變為"%20"有如下處理方法:
    1)使用repaceAll("%20",' ')替換,但只能解決空格問題,如果路徑中包含其他特殊字符和中文就不能解決問題。
    2)使用URLDecoder.decode(str,"UTF-8")解碼,但是只能解決一部分,若路徑中含有+,也是不能解決的,原因是URL并不是完全用URLEncoder.encode(str,"UTF-8")編碼的,+號被解碼后,則變成空格。
    3)解決所有的問題,用URLTest.class.getClassLoader().getResource("").toURI().getPath();,但是需要處理URISyntaxException異常,比較麻煩一些。

    2、new URL();的參數可以為正確的URI,或者為URI格式的字符串;若字符串是非完整的URI格式,則創建失敗。java.net.URI返回的路徑中的空格以“空格”的形式出現方法為Thread.currentThread().getContextClassLoader().getResource("").toURI().getPath();但是Thread.currentThread().getContextClassLoader().getResource("").toURI().toString();則會以“%20”的形式出現。java.net.URL返回的一切路徑中的空格都是以“%20”的形式出現。URL/URI返回的路徑分隔符都是“/”(控制臺輸出"/")。


    3、new File(String filePath);接受正確URI格式的參數和帶“空格”(非%20)的正確相對/絕對字符串路徑,否則即使給的路徑是正確的也會出現找不到文件的異常。File返回的路徑分隔符都為“\”(控制臺輸出"\"),對于存在的文件返回的路徑字符串,空格都以"空格"出現,而不存在的路徑new出的file,getPath()返回的路徑中的空格,仍是new File(String filePath)的參數中原有的形式,即若filePath中是空格的getPath()返回的仍是空格,是“%20”的仍是“%20”。File.toURI() 會將file的路徑名中的“空格”轉化為“%20”,然后在路徑前加protocol:"file:/",而File.toURL()只會在file路徑 前簡單的加上protocol:"file:/",而不會將“空格”轉化為“%20”,原來的無論是“空格”還是“%20”都只會原樣保留。


    實際使用中遇到的問題總結如下:
    1、相對路徑(即相對于當前用戶目錄的相對路徑)均可通過以下方式獲得(不論是一般的java項目還是web項目) String relativelyPath=System.getProperty("user.dir"); 對于一般的java項目中的文件是相對于項目的根目錄,而對于web項目中的文件路徑,可能是服務器的某個路徑,同時不同的web服務器也不同 (tomcat是相對于 tomcat安裝目錄\bin)。為此,個人認為,在web項目中,最好不要使用“相對于當前用戶目錄的相對路徑”。然而默認情況下,java.io 包中的類總是根據當前用戶目錄來分析相對路徑名。此目錄由系統屬性 user.dir 指定,通常是 Java 虛擬機的調用目錄。這就是說,在使用java.io包中的類時,最好不要使用相對路徑。否則,雖然在SE程序中可能還算正常,但是到了EE程序中,可能會出現問題。

    2、web項目根目錄獲取
    1)建立一個servlet,在其init()方法中添加如下代碼
    ServletContext context = this.getServletContext(); 
    String strs = context.getRealPath("/"); 
    2)利用httpServletRequest,得到相應的項目路徑
    String pathUrl = request.getSession().getServletContext().getRealPath("/");

    posted @ 2013-05-27 17:00 oathleo 閱讀(308) | 評論 (0)編輯 收藏

    iosched 里的DashboardLayout 在scroll里好像有點問題,一個類就事情,沒時間調了,自己寫了個

    1 1 import android.content.Context;
     2 import android.view.View;
     3 import android.widget.LinearLayout;
     4 
     5 public class AutoTableLayout extends LinearLayout {
     6 
     7     private int mMaxChildWidth = 0;
     8     private int mMaxChildHeight = 0;
     9 
    10     //列數
    11     private int column = 0;
    12     //是否自定義列數
    13     private boolean isCustomColumn = false;
    14     
    15     public AutoTableLayout(Context context) {
    16         super(context, null);
    17     }
    18 
    19     public AutoTableLayout(Context context, int col) {
    20         super(context, null);
    21         column = col;
    22         isCustomColumn = true;
    23     }
    24 
    25     @Override
    26     protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    27         mMaxChildWidth = 0;
    28         mMaxChildHeight = 0;
    29 
    30         final int childWidthMeasureSpec = MeasureSpec.makeMeasureSpec(MeasureSpec.getSize(widthMeasureSpec), MeasureSpec.AT_MOST);
    31         final int childHeightMeasureSpec = MeasureSpec.makeMeasureSpec(MeasureSpec.getSize(widthMeasureSpec), MeasureSpec.AT_MOST);
    32 
    33         final int count = getChildCount();
    34         for (int i = 0; i < count; i++) {
    35             final View child = getChildAt(i);
    36             if (child.getVisibility() == GONE) {
    37                 continue;
    38             }
    39 
    40             child.measure(childWidthMeasureSpec, childHeightMeasureSpec);
    41 
    42             mMaxChildWidth = Math.max(mMaxChildWidth, child.getMeasuredWidth());
    43             mMaxChildHeight = Math.max(mMaxChildHeight, child.getMeasuredHeight());
    44         }
    45 
    46         int width = resolveSize(mMaxChildWidth, widthMeasureSpec);
    47 
    48         // 每行個數
    49         if (!isCustomColumn) {
    50             column = (int) Math.floor((double) width / mMaxChildWidth);
    51         }
    52          
    53         int row = (int) Math.ceil((double) count / column);
    54 
    55         int height = mMaxChildHeight * row;
    56         setMeasuredDimension(width, height);
    57 
    58     }
    59 
    60     @Override
    61     protected void onLayout(boolean changed, int l, int t, int r, int b) {
    62         int width = r - l;
    63         int height = b - t;
    64         
    65         final int count = getChildCount();
    66         
    67         int left, top;
    68         int col, row;
    69         
    70         int gap = (width - column * mMaxChildWidth) / (column + 1);
    71         
    72         for (int i = 0; i < count; i++) {
    73             final View child = getChildAt(i);
    74 
    75             row = (int) Math.floor( (double)i / column);
    76             col = i % column;
    77 
    78             left = l + (col + 1) * gap + col * mMaxChildWidth;
    79             top = t + row * mMaxChildHeight;
    80             
    81             
    82             child.layout(left, top, left + mMaxChildWidth, top + mMaxChildHeight);
    83         }
    84     }
    85 
    86 }

    posted @ 2013-03-12 13:33 oathleo 閱讀(1564) | 評論 (0)編輯 收藏

    Objective-C 類聲明,定義,實例,初始化

    Objective-C中,調用方法被稱為發送消息 ,通知對象執行某種操作。語法如下:[shape draw]

    一、類聲明(接口):

    @interface TestCoop : NSObject {
        int iMonth;
        int iYear;
        int iDay;
    }

    - (void) setYear: (int) iYear;
    - (void) primalSetData: (int)iYear :(int)iMonth :(int)iDay;
    - (void) setData: (int)Year iMonth:(int)iMonth iDay:(int)iDay;
    - (void) displayDateInfo;

    @end

    1、前面的短線/- 表示這是Objective-C方法的聲明,用來區分函數原型(C語言中)與(Objective—C中)方法聲明的方式。短線后面是方法的返回類型/比如( void) ,位于圓括號中。

    1.1 注意,方法的聲明在括號后面,@end之前 {}區域里只有變量的定義,這點和C++很不一樣。

    2、返回類型后面自然是函數名字,和C語言一樣的,不同的是參數聲明方法

    2.1、無參數的函數后面不需要加括號和冒號,直接是函數名結束加分號,比如: - (void) displayDateInfo;

    2.2、有參數的后面加冒號和參數類型名字,比如:

    - (void) setDay: (int) iDay; //單個參數
    - (void) primalSetData: (int)iYear :(int)iMonth :(int)iDay;//多個參數

    objective還提供一種中綴符的語法,方法的名稱和參數都是和在一起的:

    參數前面多加一個標識符,通常和變量名一樣,如下:

    - (void) setData: (int)Year iMonth:(int)iMonth iDay:(int)iDay;//多個參數

    蘋果推薦使用第二種方法,雖然繁瑣點。

    二、類實現:

    @implementation TestCoop
    - (void) displayDateInfo{
        NSLog(@"Today is: %d.%d.%d\n", iYear, iMonth, iDay);
    }

    - (void) setYear: (int) year{
        iYear = year;
    }

    - (void) primalSetData: (int)year :(int)month :(int)day{
        iYear = year;
        iMonth = month;
        iDay = day;    
    }

    - (void) setData: (int)year iMonth:(int)month iDay:(int)day{
        iYear = year;
        iMonth = month;
        iDay = day;
    }

    1、注意:類的方法實現部分函數參數不能和聲明部分一樣,就是不能和類變量同名,否則會隱藏初始變量。

    比如:- (void) setYear: (int) year{ //right
        iYear = year;
    }

    改成和聲明時一樣的話,如下:- (void) setYear: (int) iYear{ //error
        iYear = iYear;
    }

    明顯出問題了,xcode編譯會報warnging,就是初始變量被隱藏,其實本質就是變量作用域的問題,你局部變量和類變量名字一樣,

    當然訪問不到了。

    根由:聲明的時候Objective-C喜歡用類變量的名字來代替函數參數名,不知道為啥,真是個糾結的問題。(要是從聲明的時候就不用,就OK了,也不用到定義時再去改,不知道蘋果那樣做的理由)。

    三、實例化對象

    int main (int argc, const char * argv[]) {
        NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

        // insert code here...
        //NSLog(@"%d-,%s %@\n", 12, "hel123lo", @"123");
        
        TestCoop *ptest = [TestCoop new]; 
        [ptest primalSetData :2009 :03 :05];
        [ptest displayDateInfo];
        [ptest setData:2010 iMonth:06 iDay:06];
        [ptest displayDateInfo];
        [ptest setYear:1987];
        [ptest displayDateInfo];
        [pool drain];
        return 0;
    }

    運行后會輸出如下信息:

    Today is: 2009.3.5

    Today is: 2010.6.6

    Today is: 1987.6.6

    通過向需要創建對象的類發送new消息,可以創建各個對象。

    然后向對象發送各種消息來操作對象。

    //類的初始化

    不過,cocoa習慣使用alloc和init來創建對象,而不是new

    使用alloc來分配內存,并使用init來初始化,會將這塊內存全部清0,bool型為NO,int型為0,指針為nil

    上面的創建對象代碼改成如下:

    TestCoop *ptest = [[TestCoop alloc] init];

     

    posted @ 2013-02-26 10:30 oathleo 閱讀(624) | 評論 (0)編輯 收藏

    解決刷新rom后log功能默認屏蔽問題:
    Logger
    C:\Users\Leo>adb shell
    shell@android:/ $ su
    su
     
    1|shell@android:/ # mount -o remount, rw /system
    mount -o remount, rw /system
    shell@android:/ # echo ANDROIDLOGGER >> /system/etc/tweaks.conf
    echo ANDROIDLOGGER >> /system/etc/tweaks.conf
    shell@android:/ # mount -o remount, ro /system
    mount -o remount, ro /system
    shell@android:/ #

    posted @ 2013-02-21 13:47 oathleo 閱讀(290) | 評論 (0)編輯 收藏

    一.Java源碼在用Ant腳本打成jar之后,再被調用時,Eclipse代碼提示中方法的參數名稱是無意義的(arg0、arg1)

    解決辦法:使用ibm/eclipse的編譯器

    二.使用ibm/eclipse的編譯器也會有一些方法 參數語法提示名稱是無意義
    估計可能是ibm的java編譯器的bug, 
    只要方法中含有synchronized 代碼塊
    就會導致這種情況
    有興趣的同學可以研究下

    解決辦法:把相應代碼塊提取到方法,讓方法synchronized



    posted @ 2013-01-17 09:39 oathleo 閱讀(2091) | 評論 (1)編輯 收藏

    MappedByteBuffer是java nio引入的文件內存映射方案,讀寫性能極高。NIO最主要的就是實現了對異步操作的支持。其中一種通過把一個套接字通道(SocketChannel)注冊到一個選擇器(Selector)中,不時調用后者的選擇(select)方法就能返回滿足的選擇鍵(SelectionKey),鍵中包含了SOCKET事件信息。這就是select模型。
        SocketChannel的讀寫是通過一個類叫ByteBuffer(java.nio.ByteBuffer)來操作的.這個類本身的設計是不錯的,比直接操作byte[]方便多了. ByteBuffer有兩種模式:直接/間接.間接模式最典型(也只有這么一種)的就是HeapByteBuffer,即操作堆內存 (byte[]).但是內存畢竟有限,如果我要發送一個1G的文件怎么辦?不可能真的去分配1G的內存.這時就必須使用"直接"模式,即 MappedByteBuffer,文件映射.
         先中斷一下,談談操作系統的內存管理.一般操作系統的內存分兩部分:物理內存;虛擬內存.虛擬內存一般使用的是頁面映像文件,即硬盤中的某個(某些)特殊的文件.操作系統負責頁面文件內容的讀寫,這個過程叫"頁面中斷/切換". MappedByteBuffer也是類似的,你可以把整個文件(不管文件有多大)看成是一個ByteBuffer.MappedByteBuffer 只是一種特殊的 ByteBuffer ,即是ByteBuffer的子類。 MappedByteBuffer 將文件直接映射到內存(這里的內存指的是虛擬內存,并不是物理內存)。通常,可以映射整個文件,如果文件比較大的話可以分段進行映射,只要指定文件的那個部分就可以。

    三種方式:
                  FileChannel提供了map方法來把文件影射為內存映像文件: MappedByteBuffer map(int mode,long position,long size); 可以把文件的從position開始的size大小的區域映射為內存映像文件,mode指出了 可訪問該內存映像文件的方式:READ_ONLY,READ_WRITE,PRIVATE.                     
    a. READ_ONLY,(只讀): 試圖修改得到的緩沖區將導致拋出 ReadOnlyBufferException.(MapMode.READ_ONLY)
     b. READ_WRITE(讀/寫): 對得到的緩沖區的更改最終將傳播到文件;該更改對映射到同一文件的其他程序不一定是可見的。 (MapMode.READ_WRITE)
    c. PRIVATE(專用): 對得到的緩沖區的更改不會傳播到文件,并且該更改對映射到同一文件的其他程序也不是可見的;相反,會創建緩沖區已修改部分的專用副本。 (MapMode.PRIVATE)

    三個方法:

    a. fore();緩沖區是READ_WRITE模式下,此方法對緩沖區內容的修改強行寫入文件
    b. load()將緩沖區的內容載入內存,并返回該緩沖區的引用
    c. isLoaded()如果緩沖區的內容在物理內存中,則返回真,否則返回假

    三個特性:

        調用信道的map()方法后,即可將文件的某一部分或全部映射到內存中,映射內存緩沖區是個直接緩沖區,繼承自ByteBuffer,但相對于ByteBuffer,它有更多的優點:

    a. 讀取快
    b. 寫入快
    c. 隨時隨地寫入

    下面來看代碼:

    package study;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.nio.ByteBuffer;
    import java.nio.MappedByteBuffer;
    import java.nio.channels.FileChannel;

    public class MapMemeryBuffer {

        public static void main(String[] args) throws Exception {
            ByteBuffer byteBuf = ByteBuffer.allocate(1024 * 14 * 1024);
            byte[] bbb = new byte[14 * 1024 * 1024];
            FileInputStream fis = new FileInputStream("e://data/other/UltraEdit_17.00.0.1035_SC.exe");
            FileOutputStream fos = new FileOutputStream("e://data/other/outFile.txt");
            FileChannel fc = fis.getChannel();
            long timeStar = System.currentTimeMillis();// 得到當前的時間
            fc.read(byteBuf);// 1 讀取
            //MappedByteBuffer mbb = fc.map(FileChannel.MapMode.READ_ONLY, 0, fc.size());
            System.out.println(fc.size()/1024);
            long timeEnd = System.currentTimeMillis();// 得到當前的時間
            System.out.println("Read time :" + (timeEnd - timeStar) + "ms");
            timeStar = System.currentTimeMillis();
            fos.write(bbb);//2.寫入
            //mbb.flip();
            timeEnd = System.currentTimeMillis();
            System.out.println("Write time :" + (timeEnd - timeStar) + "ms");
            fos.flush();
            fc.close();
            fis.close();
        }

    }

    運行結果:
    14235
    Read time :24ms
    Write time :21ms
    我們把標注1和2語句注釋掉,換成它們下面的被注釋的那條語句,再來看運行效果。
    14235
    Read time :2ms
    Write time :0ms
    可以看出速度有了很大的提升。MappedByteBuffer的確快,但也存在一些問題,主要就是內存占用和文件關閉等不確定問題。被MappedByteBuffer打開的文件只有在垃圾收集時才會被關閉,而這個點是不確定的。在javadoc里是這么說的:
    A mapped byte buffer and the file mapping that it represents remain valid until the buffer itself 
    is garbage-collected.

    這里提供一種解決方案:
    AccessController.doPrivileged(new PrivilegedAction() {
      public Object run() {
        try {
          Method getCleanerMethod = buffer.getClass().getMethod("cleaner", new Class[0]);
          getCleanerMethod.setAccessible(true);
          sun.misc.Cleaner cleaner = (sun.misc.Cleaner)
          getCleanerMethod.invoke(byteBuffer, new Object[0]);
          cleaner.clean();
        } catch (Exception e) {
          e.printStackTrace();
        }
        return null;
      }
    });

    posted @ 2013-01-05 10:49 oathleo 閱讀(1129) | 評論 (0)編輯 收藏

    NIO

         摘要: java.nio.ByteBuffer-------------------------------Capacity 緩沖區最大容量Limit 當前最大使用量,或者說是有效數據的EOF位置。Position 指向當前位置的指針-----------------------------------假設一個緩沖區容量是10,開始指針指向0,即position=0。然后寫入...  閱讀全文

    posted @ 2013-01-04 11:18 oathleo 閱讀(273) | 評論 (0)編輯 收藏

    僅列出標題
    共17頁: 上一頁 1 2 3 4 5 6 7 8 9 下一頁 Last 
    主站蜘蛛池模板: 91麻豆国产自产在线观看亚洲 | 黄床大片30分钟免费看| 亚洲高清偷拍一区二区三区| 三级黄色免费观看| 亚洲日韩乱码中文无码蜜桃臀| 欧洲精品免费一区二区三区| 三上悠亚电影全集免费| 亚洲人成在线中文字幕| 亚洲成AⅤ人影院在线观看| 最近中文字幕电影大全免费版 | 国产精品V亚洲精品V日韩精品| 无码少妇精品一区二区免费动态| 亚洲色大成WWW亚洲女子| 国产亚洲人成网站观看| 四虎影视大全免费入口| 国产免费拔擦拔擦8X高清在线人| 亚洲精华液一二三产区| 亚洲综合自拍成人| 亚洲国产午夜中文字幕精品黄网站| h视频在线免费看| 三年片免费高清版 | 久久亚洲精品中文字幕| 免费无遮挡无码永久在线观看视频| 亚洲a一级免费视频| 日本一区二区三区免费高清在线 | 国产亚洲精品2021自在线| 亚洲av日韩av天堂影片精品| 四虎国产精品免费视| 免费视频专区一国产盗摄| 成全在线观看免费观看大全| 国产成人亚洲精品蜜芽影院| 亚洲三级在线播放| 亚洲妇熟XXXX妇色黄| 国产精品亚洲产品一区二区三区| 免费看大美女大黄大色| 美女内射毛片在线看免费人动物 | 日本亚洲免费无线码| 午夜视频在线免费观看| 国产成人无码精品久久久久免费| 亚洲av成人一区二区三区观看在线| 久久亚洲国产精品成人AV秋霞 |