發表文章

目前顯示的是有「Java」標籤的文章

[Note] Design Patterns 課程筆記

圖片
名詞解釋: Slide 12 Context :會使用的情況 Force : 限制條件 以行李箱為例: Context :要裝東西,要裝重物 Force :上下樓梯不方便 Slide 13 Related Pattern: 一個 Pattern 會附著其他形式的 Pattern 思考: 大的包包為什麼會有小的口袋? 思考:什麼是設計? 問題:沒有物件導向之前? 程式的資料跟程式的關係是什麼? 回想 C 語言當中的 data → 資料跟程式間的關係,簡單來說,就是 Data Structure & Algorithm 有了物件導向的概念後 → 把資料跟方法(程式function)結合在一起,變成了物件(object) 問題:在沒有framework之前,用什麼? → Library Framework v.s. Library framework 是我想要完成一件事,我先把這個架構寫好,大部份完成了,但是沒有把細節完成 library 僅僅提供執行所需的函數,沒有提供架構 Design Pattern 分成三大類: Creational : 物件生出相關的Pattern Structural : 物件跟物件關係的Pattern Behavioural : 物件跟物件互動行為的Pattern 問題:物件導向程式Performance一般比較不好,為什麼我們需要物件導向程式? Code reuse 較容易 較為彈性 較好maintain Creational Pattern Singlaton 例如: 有一個Company的Class,中華電信這家公司是Company Class的一個instance 當我們在Access 的時候,要確保我們看到的是同一個中華電信的instance 不可以自己亂new一個新的 這時就需要一個機制可以限制有一個Class只能被new一次,不能出現第二次 也就是Create的時候只能Create一次,不能Create第二次 做法: 不讓別人new! 把Constructor private 保護起來,然後利用一個static的method去呼叫它 ...

[解決] java.lang.UnsatisfiedLinkError: no opencv_java300 in java.library

圖片
在依照官網的方法安裝 OpenCV java eclipse 環境 測試時 我遭遇了這個問題 java.lang.UnsatisfiedLinkError: no opencv_java300 in java.library 後來發現我在這一步驟按下 Edit 時 路徑設錯了 應該要把路徑設到有 .so 檔案的  lib 資料夾裡面才對!! Documents/opencv-3.0.0/release/lib/ 我之前是只有設路徑到上一層 opencv-3.0.0/ 難怪找不到所需的 .so 檔 X_X 發文警惕之!

[筆記] 安裝opencv java以及eclipse 相關設定 (linux)

圖片
作業系統:ubuntu 14.04 我的Java版本 opencv 從 0 開始安裝: 先看這篇: http://docs.opencv.org/3.0-beta/doc/tutorials/introduction/linux_install/linux_install.html#linux-installation 記得電腦要先有安裝 cmake apache ant 執行指令1: sudo apt-get install build-essential 執行指令2: sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev 執行指令3: sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev 以上是為了準備要安裝opencv的環境 做完以後,接著去下載opencv的檔案 我是到這裡載 opencv 3.0.0 for linux http://opencv.org/downloads.html 載完後先解壓縮到想要放的地方 會看到這個資料夾出現 cd 進去 先 mkdir 一個資料夾,我的命名為 release: 可以參考網站上的教學指令 mkdir release cd release cmake -D CMAKE_BUILD_TYPE = RELEASE -D CMAKE_INSTALL_PREFIX = /usr/local .. 進入 release 資料夾裡面執行完 cmake 那行指令之後 可以看到 release 資料夾裡面出現了好多好多東西: 檢查一下 bin 資料夾裡面有沒有 jar 檔 有看到 opencv-300.jar ,如果沒有的話可能是 cmake 的指令有下錯導致 回上一層資料夾,順便看一下 lib 資料夾的內容 裡面有 .so 檔 確認完畢後 打開 eclipse 選項Win...

[java] SDK JDK JVM JRE名詞解釋

在此整理一下常忘記的名詞解釋: SDK: Software Develop Kit 軟體開發包:用來開發軟體的所需基本軟體資源 有很多種,舉個例子 像是Android 的軟體開發包就叫 Android SDK 如果想要開發Android 5.0版本的程式 就需要版本 21 號的 Android SDK 同理, Java 的 SDK就叫做 Java SDK JDK: Java (Software) Develop Kit 其實就是Java SDK的簡稱 JDK 解釋請看上文 JVM: JavaVirtual Machine Java的虛擬機器,所有Java程式都要在Java虛擬機器上面才能跑 JRE: Java Runtime Environment 顧名思義就是Java的程式執行環境 根據上述Java程式的執行環境建置 可知JRE 裡面包含了 JDK 與 JVM 以及最基本的需要一台機器

[Java] Ch7 繼承與Access Control

圖片
inheritance 繼承: Java只能單一繼承,也就是一個class只能從一個class繼承而來 跟C++不同,Java沒有多重繼承 p.s. 但是一個class可以被很多class繼承 p.s. Java 要做多重繼承的替代方法是使用interface Manager Class 繼承 Employee Class 繼承往越上層的Class走是 Generalization 往越下層走是 Specialization "is a" relationship A 繼承了 B , A "is a" B,換句話說 A 是一種 B 例如 Manager is a Employee "has a"  ... 繼承的特性 Demo 所有沒寫就是繼承自 Object Class B 繼承 A  因為 B 繼承 A 所以可以用繼承而來的 x 變數 Access Control Overload 多載 Override 覆蓋:蓋掉了原來的定義 思考: A -> B -> C 上面的繼承階層中 假設有 m1() method 為何只允許 super.m1() 不可 super.super.m1() 因為 1. 不確定parent class C有沒有m1() 2. 或是B class 的 m1()根本就已經是繼承來的他裡面也沒有m1() Polymorphism 的概念 延續上述的繼承關係 A a = new A() A type的物件既有A type的特性也有B type與C type的特性 生活上的例子是 你既是台大工科系的學生,也是工學院的學生,也是台大學生