Recent in Recipes

如何使用Vistual Studio上傳至AWS部屬

小弟最近想研究一些東西的緣故,先寫這篇當作前導文吧,雖然是小東西但是當個筆記用吧!
在這篇開始之前先貼上參考網站,謝謝這個網站!
這網站已經幫我解決大部分的問題了,雖然是外國網站但是有圖片交著做,所以蠻好懂的,那開始進入正題囉!
首先我們要先有以下幾個準備工作:
1.準備AWS(amazon web server)帳號
3.Vistual Studio(小弟是2013版)
 1
(AWS Toolkit)下載頁面圖

 下載完AWS Toolkit後執行安裝,位置可以自己決定,安裝完成後打開Vistual Studio會發現多了一些選項如下圖:17092861_1870096956609196_424950151_o
 表示安裝成功了!基本的前置作業完成了就開始打開Vistual Studio選取想要上傳的檔案,小弟就來這幾天做的範例來示範一下:
 17035966_1870101506608741_1144997101_o
打開以後先測試一下可不可以執行如下圖所示:
17035847_1870119949940230_1087128344_o

  這個表示本機端的網址,如果沒有顯示錯誤資訊可以顯示程式結果,表示程式的部分是沒問題的,檢查完之後就要上傳AWS囉!
 首先在專案上點右鍵,找到 Publish to AWS Elastic Benstalk...
17036530_1870103533275205_787940386_o

點擊後如下圖,按下框起來的按鈕:
17091321_1870114476607444_634470123_o
點擊後再紅色框號地方打DeploymentProf
17035847_1870114996607392_1233584617_o
下面就是要打AWS金鑰資訊,我們先暫停一下,回到AWS中有個IAM,點擊後到Users畫面接著點選Add user如下:
17036715_1753798761300819_83054215_o
進入新增的程序頁面後,輸入自訂的User name以及勾選第一個存去型態
17036726_1753799151300780_2139580131_o
下一頁有一個大圖示的選項Attach existing policies directly,這是要增加一些權限的地方,我們需要以下兩個權限
( AmazonEC2FullAccess 和AWSElasticBeanstalkFullAccess)如下圖:
17016631_1753802094633819_1847820155_o
17016298_1753820094632019_667805886_o選擇完連續下一步兩次到最後一個步驟如下:
17093228_1753803214633707_1474743236_o
會顯示與下載金鑰密碼(公開鑰與私密鑰),記得要載下來,之後回到Vistual studio
補上金鑰資訊後按確定後按確定,下一頁會顯示環境設定如下圖所示:
17036544_1870118366607055_1055416147_o
如果顯示綠色的表示設定成功了!如果不是可能需要回到AWS看看權限是否設定正確。

接下來就可以設定你的Server硬體需求,小弟選了一個小一點的如下圖:
17091302_1870118636607028_135198886_o


接下來可以持續下一步到最後一步
17015118_1870119019940323_1253747376_o
17093227_1870118993273659_1498247266_o
17091086_1870119116606980_1493600057_o
底下是勾選只要server停止後就會自動重建,因為網站的的服務不能中斷,所以當server有問題時自動重建。

最後按下部屬後顯示資訊如下圖:
17016185_1870119649940260_101407653_o
框起來的地方就是server提供的網址囉!這時候輸入網址看看:
17036976_1870121166606775_1564821793_o
我們之前測試的網站就上架囉!!

最後如果不想要繼續部屬要怎麼取消呢?
這裡要回到AWS到EC2選單,在左邊尋找Auto Scaling Group刪除剛建的群組即可(找時間最近的就是了)
17036591_1753836431297052_1715541809_o
好囉!筆記就到這邊結束囉!如果有不清楚的地方歡迎留言討論一下喔!!

簡介Java - ArrayList



因為小弟某些原因開始研讀集合物件(Collection Framework),首先先介紹一下比較容易了解的ArrayList

首先根據  API 說明書中 https://docs.oracle.com/javase/7/docs/api/
ArrayList 是實作  List 這個介面,也可以在  List 介面中發現許多集合物件有實作此類別  EX: LinkedList Vector ...等等

其中實作List介面的集合物件有幾個特性:
1.存進去的資料可以重複
2.具有順序性

因為這篇針對  ArrayList 做解說, List 就稍微介紹到這,ArrayList 說明白的就是存放資料用,可能這邊會有人說:可以用陣列就好了啊為什麼還要  ArrayList !?
首先這裡帶著大家回憶一下陣列宣告時
陣列宣告的時候:
1.png
我們需要給他指定的型態、指定資料或資料大小,如果今天是資料庫的資料,多少筆我根本不可能一個一個數,這時候  ArrayList 可以改善這特性,因為  ArrayList 可以動態配置。

再來,因為陣列宣告比資料多,或是要再重新配置,會導致記憶體與效能的浪費,所以這裡簡單整理ArrayList優於陣列的 幾個要點:
1.可以動態配置空間
2.減少記憶體與效能的浪費

接下來談談ArrayList存入的型態,因為不需要指定資料型態,所以什麼資料都可以存入,所以  ArrayList 裡面的資料型態叫(Object)

當要處理資料時就要進行轉型

接下來就帶著大家實作  ArrayList:
1.png



這圖是APIArrayList的建構子使用方式,整理出一個表格給大家:

ArrayList 建構子
說明
ArrayList()
建立一個空的ArrayList
ArrayList(int capacity)
建立一個指定容量的ArrayList
ArrayList(Collection<? extends E> c)
使用實作的interface建立ArrayList

看完建構子我們列幾個常用的方法:
方法
說明
boolean add(E e)
照順序增加元素
boolean add(int index , E element)
指定索引值增加元素
void clear()
清空list所有元素
E get(int index)
取得索引值中的資料
E remove(int index)
移除指定索引值的資料
boolean remove(Object object)
移除相同內容的資料
Int size()
List中資料數量

我們實作一段程式如下:
 
public class Test01 { public static void main(String[] args) { ArrayList test = new ArrayList(); test.add("Hello"); test.add("Java"); test.add("Have"); test.add("Fun"); test.add("Java"); System.out.println(test.get(0)); for (int i = 0; i <test.size(); i++) { System.out.println("data:"+test.get(i)); } System.out.println("data size:"+test.size()); } }

其結果如下:
1.png

其型態乍看之下好像是字串對吧!?因為剛剛我們存進去是存字串,可是我們換一種寫法看看:

 
public class Test01 { public static void main(String[] args) { ArrayList test = new ArrayList(); test.add("Hello"); test.add("Java"); test.add("Have"); test.add("Fun"); test.add("Java"); System.out.println(test.get(0)); for (Object object : test) { System.out.println("data:"+object); } System.out.println("data size:"+test.size()); } }
我們把迴圈改成for-each看到承接的是Object
所以說他的型態是Object!!!
顯示結果如下:
1.png
其實是完全一樣的,可是往後存的是一個類別,必須要轉型,其實是非常麻煩的事情,這時候我們可以用"<>"(泛型)來指定存進去的型態是什麼型態,這時候把程式再改一下:

 
public class Test01 {
    public static void main(String[] args) {
        ArrayList<String> test = new ArrayList();
        
        test.add("Hello");
        test.add("Java");
        test.add("Have");
        test.add("Fun");
        test.add("Java");
        
        System.out.println(test.get(0));
        
        for (String object : test) {
            System.out.println("data:"+object);
        }
        
        System.out.println("data size:"+test.size());
          
    }
    
}

我們在建造物件時指定<String>型態,所以for-each改變承接型態為String,其顯示結果如下:
1.png
其實因為都是字串所以看起來都一樣!但型態已經改成String!!
再來是我們指定好ArrayList大小再搭配remove()做使用看看,其程式如下:

 

public class Test01 {
    public static void main(String[] args) {
        ArrayList<String> test = new ArrayList(10);
        
        test.add("Hello");
        test.add("Java");
        test.add("Have");
        test.add("Fun");
        test.add("Java");
        
        test.remove("Java");
        
        for (String object : test) {
            System.out.println("data:"+object);
        }
        
        System.out.println("data size:"+test.size());
        test.remove("Java");
          
    }
    
}

我們先指定好容量大小以及在增加完資料後移除"Java"資料,其顯示結果如下:
1.png
我們發現size是根據ArrayList的資料多寡來呈現數量,remove("Java")他是移除最先加入的那筆資料,請大家要記一下喔※如果要考OCP的這個很重要!!


以上就是ArrayList簡單的介紹,用一種簡單的例子來解說希望對大家有幫助XD