基礎補充-算法

計算機算法分析之漸進記號

http://blog.csdn.net/u013132758/article/details/50877754html

http://blog.csdn.net/stanxl/article/details/44567285java

http://www.cnblogs.com/zabery/archive/2011/07/19/2110994.htm算法

O

Ω Omega

Θ Theta

clip_image002[50] Omega(小寫)

 

漸近式表達法是一種對算法效率的指標;評估一個程序效率是否高效的方法;json

數組:數組

LinkedList<String> linkList = new LinkedList<String>();
Stack<String> stack = new Stack<String>();

咱們知道ArrayList是List接口的一個實現類,它的特色是查詢效率高,增刪效率低,線程不安全 
緣由是由於ArrayList底層是封裝了一個數組,它是用數組實現的。 

看完了ArrayList,咱們再去研究一下LinkedList 
它的特色是:增刪效率比較高,而查詢效率低 

堆棧: 分爲堆和棧;堆(先進後出,能夠想象一下無序的垃圾堆),棧(先進後出,能夠想象很窄的一端封死的棧道);安全

隊列:有個入口,一個出口,先進先出;服務器

java 序列化:你有一個應用程序,須要傳一些數據給其它應用程序,但數據保存在你的進程的堆棧中,其它進程沒法訪問你的應用程序進程的堆棧,要想把你的程序的數據給其它程序使用,必須將數據以某種形式傳給其它進程,這個「某種形式」就是序列化。json只是序列化的一種方式。網絡

把對象轉換爲字節序列的過程稱爲對象的序列化。
  把字節序列恢復爲對象的過程稱爲對象的反序列化。
  對象的序列化主要有兩種用途:
  1) 把對象的字節序列永久地保存到硬盤上,一般存放在一個文件中;
  2) 在網絡上傳送對象的字節序列。

  在不少應用中,須要對某些對象進行序列化,讓它們離開內存空間,入住物理硬盤,以便長期保存。好比最多見的是Web服務器中的Session對象,當有 10萬用戶併發訪問,就有可能出現10萬個Session對象,內存可能吃不消,因而Web容器就會把一些seesion先序列化到硬盤中,等要用了,再把保存在硬盤中的對象還原到內存中。

  當兩個進程在進行遠程通訊時,彼此能夠發送各類類型的數據。不管是何種類型的數據,都會以二進制序列的形式在網絡上傳送。發送方須要把這個Java對象轉換爲字節序列,才能在網絡上傳送;接收方則須要把字節序列再恢復爲Java對象。

參考http://www.cnblogs.com/xdp-gacl/p/3777987.html併發

本地序列化代碼:ui

import java.io.*;
import java.util.Date;


public class SerializableDemo {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//Initializes The Object
        User user = new User();
        user.setName("hollis");
        user.setGender("male");
        user.setAge(23);
        user.setBirthday(new Date());
        System.out.println(user);

        //Write Obj to File
        ObjectOutputStream oos = null;
        try {
            oos = new ObjectOutputStream(new FileOutputStream("tempFile"));
            oos.writeObject(user);
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            ;//IOUtils.closeQuietly(oos);
        }

        //Read Obj from File
        File file = new File("tempFile");
        ObjectInputStream ois = null;
        try {
            ois = new ObjectInputStream(new FileInputStream(file));
            User newUser = (User) ois.readObject();
            System.out.println(newUser);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } finally { 
            ;//FileUtils.forceDelete(file);
        }
	}

}

本地序列化的效果:

 sr User狆?z;矪 I ageL birthdayt Ljava/util/Date;L namet Ljava/lang/String;xp   sr java.util.Datehj?KYt  xpw  [B?xt hollis

概括起來,就是把你的數據換個時間和/或換個地方,繼續使用

換個時間,好比存盤
換個地方,好比網絡傳輸

排序算法:

一圖勝千言。【想一想大學老師教的真是。。。。】

http://blog.csdn.net/u010850027/article/details/49362279

http://blog.csdn.net/donglynn/article/details/49758003【上備】

排序效率:

https://www.oschina.net/code/snippet_617085_4369

相關文章
相關標籤/搜索