Contents
1.6.1. 변 ¶
- Java 개발 놓기 문들 보고, 바른 Java 로그램 빠르고 깔끔게 구는데 급 달기
- Java를 로 다루만, Java 되 공 를 바로 고록 기
- 그동 구 관 반론 로 미나를 기, 는 더 practical고 pragmatic 달는데 두고 .
- 나 로 만 던 나 렴 명면 께 공부고 배기
1.6.2. 김 ¶
- 교 배기 든 다 (바뿐만 고)들 보고, 기
- 내가 구는게 가능 것 가능게 는 것부, 더 '' 구는게 가능 까 그 기
- 디가 바로 개발 대로 봤냐라고 물볼때, ''라고 대답 기
- 병 기 로(?)
- "내가 무것 모른 1 1 배때럼 그때 그 로 많 것 배기 " - 배 가 는가.
1.6.3. ¶
- 바를 대 배 감 바 대 더 고 교 가르는 것 바 관 더 배고 .
- 관 것 뿐만 라 라브러리, 바 개발 경 개발 더 빠르고 리게 는 방법 배기 .
- , mock 부 대 를 기
1.6.5. 민관 ¶
- 단 바 대가 라 더 다 를 다루는 디기 때문 미가 .
- 는 동들 대 능 가 까 듣 가 다.
- TDD로 드를 보려다 -_-;;; 떻게 TDD로 딩 는, 떻게 리링 는 듣고 .
3.1. 2012 5 5 ¶
- 리
- 가 각 디 "무?", "떻게?", "?"를 개고, 들 는 "무?", "떻게?" 대 기를 나다.
- 디 들 각각게 는 낭가 되 록, 라 또다른 견과 문 다.
- 가 각 디 "무?", "떻게?", "?"를 개고, 들 는 "무?", "떻게?" 대 기를 나다.
- "?" 각 브 나 디를 는 것 고, 로게 동기부를 봅다.
3.2. 2012 5 12 ¶
- SpringSource Tool Suite(Eclipse IDE) 기본 과 로 기본 보를 명다.
- Eclipse JDT 빌드 과 보고 Maven 라브러리 가보다.
- 래 그 멤 는 기본 modifier들 개념 및 법 다뤘다.
- public, protected, private, (none)
- abstract, final, static
- public, protected, private, (none)
3.2.1. 기 ¶
- static modifier 대 매게 고 는데 게 명 다. static 부르는라나 래 모든 가 static데 객 다 static 닌 가 긴라는 명 기다. object.method(message) -> MyType::method(object, method) 부 oop 구 기본라는 부 리 고 기둬겠다. 근데 메드 (self)가 들가는 것 것과 관련 는가? -
- Python PEP 대 권 가 귀가 그냥 견 모 겁다. 록 가 '래 그런 것' 고, '람 '다. 고료. --NeoCoin
- 가 "래 모든 가 static"라는 미로 말 닌데 가 나보군. 가 명 가 말 object method() 메드가 가 메드라면(static 닌 모든 Java 메드), 떤 method() 메드를 것냐 관 부 object 런 다는 부. 그러까 object는 과 동 런 가 며, 다 구 implicit argument object(=this) 런 따라 override된 메드를 다는 기. (Python 메드 내 formal parameter self를 explicit게 다고 보면 되겠.) - 변
- Python PEP 대 권 가 귀가 그냥 견 모 겁다. 록 가 '래 그런 것' 고, '람 '다. 고료. --NeoCoin
- static는 런 법 다. StaticInitializer -
3.3. 2012 5 19 ¶
- Singleton 과 lazy initialization 대 기다.
- 멀드 경 synchronized modifier를 동기 대 공부다.
- 동기 부를 기 DCL 문 보고 Java 5 volatile modifier로 결 배다.
- 멀드 경 synchronized modifier를 동기 대 공부다.
- Serializable ObjectOutput, ObjectInput 렬, 렬 대 공부다.
- transient modifier는 VM 동 렬 과 고, Externalizable 를 구면 렬, 렬 방 보다.
- transient modifier는 VM 동 렬 과 고, Externalizable 를 구면 렬, 렬 방 보다.
- JNI라는 기법 브 라브러리를 결 를 배다.
- native modifier로 를 고, 링, 링 과 능 기다.
- native modifier로 를 고, 링, 링 과 능 기다.
- 변객 과 대 보다.
- 대 변객 String 래가 내부로 떻게 구되고, 떻게 변 는 를 보다.
- 다 String 객 과 객들 동과 동 보다.
- 다 String 객 과 객들 동과 동 보다.
- 대 변객 String 래가 내부로 떻게 구되고, 떻게 변 는 를 보다.
3.3.1. 기 ¶
- String객라..! 바 링 면 는데 뭔가 그 를 들 법 ..-김
- c++ 배 관련로 mutex나 critical section같 배는데 바는 synchronized를 게 리 다는게 기다. os 들 래 됐는데 멀로 멀드 다 들까 명 다. 만 붙 는게 고 보 가 객를 synchronized(this){ ... } 같 부 나 드를 경 고가 될 것 같다. 그리고 리렉 기를 보 각 면 구래가 드 드러나게 다는 볼만다. -
- 개로 synchronized는 몰라 그냥 붙면 단 된다는 미만 막게 가고 는데 그런 부까 밀게 다 듣기 당 다. 그래 깊가 당 깊다는 고 단 만 는 그래 느 들 던 만 다룰 범를 괜게 나 다. - 민관
3.4. 2012 5 26 ¶
- interface
- nested class
- static nested class
- inner class
- annonymous inner class
- static nested class
- up 결dw (cohesion&coupling)
- SOLID SOLID Wiki
- SRP (Single responsibility principle)
- OCP (Open/closed principle)
- LSP (Liskov substitution principle)
- ISP (Interface segregation principle)
- DIP (Dependency inversion principle)
- SRP (Single responsibility principle)
- DRY DRY Wiki
- dont repeat yourself 려고 나? -
- ; 그냥 복 면 뜨는데 -_-a - 권
- ; 그냥 복 면 뜨는데 -_-a - 권
- dont repeat yourself 려고 나? -
3.4.1. 기 ¶
- 6 나고 각보 늘 뭐 배더라.. 는 느낌 --; 깐 반밖 못들.. 권 기는 각나만 나머는 뭔가 보다 더 기갔다 기갔다 는 바람 머리가 란러나봐;; -김
- 로 다른 는 볼 는 바 문법 + 객 로 다룬 다. 다른 기들(builder , 권) 들갔만 그래 다룬 는 명다고 각다. 다만 그 떻게 느냐는 릿 느낌다. 그 각 들나 interface, 객 대 느낌 기 는 경 기 때문 닌가 다 ;;; 경가 말 대로 라 본 람 기 다는 말 맞 까 . 그리고 로 기를 들면 로 드가 꾸 각나 느낌 다. 미나를 들면 드를 각까 고 될 부 보는군. 그래 나대로 드를 깔끔게 보려고 래 구 리를 고 는데 더 게 많 느낌다. ㅠㅠ 그 들던 메드 디 나나 는가(객 or 메드) 라나 무 겁내 말라는 기는 당 뚜렷게 닿 다. . DIP Logic과 native API 를 두는 것 당 는데 기가 되면 꼭 드로 보고 다. 다 보게 되겠만. - 민관
3.5. 2012 6 2 ¶
- Serialize
- Abstraction layer
- Abstraction layer
- Inner Class, Nested Class(보강), Local Class, Static Inner Class
- Iterator (java.util)
- 리가 는 interface
- generics
- Collection 반, , 대부 료구 O(1), 변경 는 thread safe
- but 변 그닥
- 리가 는 interface
- Iterable (java.lang)
- Iterator 과 Iterable 때 들 공부는
- Comparable
- for Sorting.. stable, unstable
- for Sorting.. stable, unstable
3.5.1. 기 ¶
- 난 Inner Class Nested Class 각각 들 Encapsulation라던가 , , 래 귀 것 로다. 긴 만 Event들러라던가 길때 든.
Inner Class this는 Inner Class를 뜻다. 그렇기 때문 Inner Class를 는 Class this( 객를 뜻) 러려면 래.this를 붙면 됩다.
Iterator는 Util만 Iterable java.lang ( 를 가 고 바 기본 type럼 는 구 java.lang다) 되 는데 interface를 과 구로 (index)를 료 근 과는 다른 Iterator를 Java 범로 게 만들게 된것다. 로 DB List를 꺼 겨 로딩는것 100만개 다면 난 과부를 겪게되고 Loading또 느립다. 만 같 대는 로 보면 Loading또 같 게 되. Iterator는 는 런 Loading 더 게 게 다. 라브러리 구게 되면 당 빡 것 같 개념 iterator를 나 itrable란 로 Java는 기본 로 Iterable Custom게 구는 것 나 고가바는 대단다=ㅂ= Generic과 Sorting 다른 명. - 김
3.6. 2012 7 20 ¶
- Java Generics
- run-time type erasure
- 로그래머 보
- 로그래머 보
- run-time type erasure
- Reflection API
- parameter 는 방법 가.
- public field
- getter, setter가 는 field
- @property annotation
- public field
- parameter 는 방법 가.
- Generics Reflection ObjectMapper 만들기
- Map <-> Object 변
- Map <-> Object 변
3.6.1. 기 ¶
- 리렉과 릭를 map -> object object -> map 는 부 봤다. 바 반 가 방 래 내 변 대 getClass, getFields, getMethods를 private, 나 근가 는 경 값 다. getter를 변 값 때 get로 는 다른 를 기 method.getParameterTypes().length == 0 같 부 렇게 된다는 부 나 릭 관련로 먹만 것 같다. 그리고 mapToObject는 문가 만 objectToMap 경는 릭 type erase때문 Class<T> expectedType = T.class; 같 드를 map.put(field.getName(), (T)field.get(obj)); 변 로 Class<T> valueType 고 valueType.isAssignableFrom(field.getType())로 를 는 부 공부가 많 됐다. -
3.9. 2012 8 17 ¶
- ObjectMapper (cont.)
- Maven - (dependency) 관리 는 . pom.xml 로 관련 보를 면 (repository) 관련 라브러리 들 빌드 다.
- m2e plugin - maven과 eclipse는 빌드를 다른 방로 기 때문 maven eclipse 과 결기 는 plugin.
- 라브러리 (jar) 만들기(Run as -> Maven Install) - ObjectMapper를 라브러리 라 로로 리.
- Maven Build 과
- resources - src/main/resources target/classes로 달. javac를 는다.
- mvn compile - src/main/java 는 .class를 만들 target/classes로 보낸다.
- test-resourecs - src/test/resources target/test-classes로 달.
- mvn test - 고 나 src/test/java를 target/test-classes로. @Test <scope>가 되는 결
- mvn package - . pom.xml <packaging> 따른 . 기본 jar .
- mvn install - 된 , pom .m2/repository 는다.
- mvn deploy - 리모 리리 라브러리 배.
- mvn release
- resources - src/main/resources target/classes로 달. javac를 는다.
- resolve dependencies from workspace projects
- 라브러리 드 변경 maven install 다 면 라 로 문가 길 다.
- 가 되 경 maven 과 개로 는 로를 게 다.
- maven 과 립 가 발 다.
- 라브러리 드 변경 maven install 다 면 라 로 문가 길 다.
- m2e plugin - maven과 eclipse는 빌드를 다른 방로 기 때문 maven eclipse 과 결기 는 plugin.
3.10. 2012 9 22 ¶
- Properties
- map과 구.
- 값 가는 를 getProperty get 두 가를 공다.
- getProperty는 String 반, get Object를 반 - 릭 때는 Object를 밖 는데 반로 는 값 String기 때문 변 기 getProperty를 따로 공.
- 값 가는 를 getProperty get 두 가를 공다.
- map과 구.
- Reader InputStream
- 딩 문 . 딩 문를 결기 Reader, Writer를 만들다. Reader는 딩 보를 들고 다.
- 딩 문 . 딩 문를 결기 Reader, Writer를 만들다. Reader는 딩 보를 들고 다.
- JDBC - 각 데들 대 근
- java.sql.driver 를 com.mysql.jdbc.driver 래로 구, java.sql.connection 를 com.mysql.jdbc.connection 래로 구
- driver connection 는 부 대는 abstract factory가 됨 - 로부 만든다.
- driver connection 는 부 대는 abstract factory가 됨 - 로부 만든다.
- java.sql.driver 를 com.mysql.jdbc.driver 래로 구, java.sql.connection 를 com.mysql.jdbc.connection 래로 구
java.sql.Driver driver = new com.mysql.jdbc.Driver(); java.sql.Connection conn = driver.connect("", null); // 구 com.mysql.jdbc.connection 반. // 객 driver로부 객 conn
- abstract factory를 기 는 api가 되 다.
- Statement, ResultSet 대 가로 를 abstract factory가 됨.
- driver new com.mysql.jdbc.Driver(); 대 볼 는 Class.forName("com.mysql.jdbc.Driver"); 러 드는 런 로 바꾼 것다.
Driver driver = new com.mysql.jdbc.Driver(); // 럼 구래로 new를 는 대 Class<Driver> clazz = (Class<Driver>) Class.forName("com.mysql.jdbc.Driver"); Driver driver = clazz.newInstance(); // 같 방법로 런 로 바꿀 .
- 런로 밀낸 것기 때문 러 대는 더 다.
- factory method - factory를 겨는 메드. 뭘 만들를 만 가고 결는 . 는 로 는 문 따라("com.mysql.jdbc.Driver") 무 만들가 결된다.
- sqlite
- 기 dbms 다르게 dbms가 각 리 내부 들가 동는 것.
- 경 경 os단 배를 못기 때문 동 문가 다. 따라 경 못다.
- 기 dbms 다르게 dbms가 각 리 내부 들가 동는 것.
3.11. 2012 10 6 ¶
- DataSource DriverManager
- Persistence Layer
- persistance layer는 부 를 많 기 때문 가 많 김.
- 러 가 로까 라가게 면 됨.
- 가 라가게 될 경는 를 단 려는 것 다.
- persistance layer는 부 를 많 기 때문 가 많 김.
- DataBase 규(Normalize)
- 데를 블로 때 복된 값 는 경는 블 나는 경 교 다른 블 되기 때문 검 다.
- 만 복된 값 는 경는 데 값 는 부 부 므로 데 다.
- 반대로 데 복 고 블 나 경는 데 들고 검 늘난다.
- 데 검 드 .
- 규를 경 블 복된 값 다.
- 데를 블로 때 복된 값 는 경는 블 나는 경 교 다른 블 되기 때문 검 다.
- Builder
- 빌더라는 가변객를 만들 를 변경고 막 만든다. 그래 나 끊 된다. 가변닝 방.
- 빌더라는 가변객를 만들 를 변경고 막 만든다. 그래 나 끊 된다. 가변닝 방.
Resource resource = new JdbcResource.Builder() .setUrl("jdbc:mysql://zeropage.org:3306/test") .setUser("test") .setPassword("test") .setTable("people") .create();
- 같 문법로 가가며 막 객를 는 방 다.
- 따로 빼내기 고, set private로 바꿔 변객를 만들 다. 렇게 경 드 경 더 다.
- 문법 - 말를 다.
3.12. 2012 10 20 ¶
- uri url 교
- uniform resource identifier locatord . uri가 url보다 더 개념다.
- map 료를 가 equals로 교를 때 url 로 가 내 같 교고 uri는 가 같만 교다.
- url equals는 교를 려면 료를 가 기 때문 능 낭가 다. 따라 로 료가 같 교 때만 url 는 것 다.
- url과 uri는 로 toURI, toURL 다.
- uri 기 url 기보다 더 격다.
- uniform resource identifier locatord . uri가 url보다 더 개념다.
- abstract factory과 factory method 구
- 메드를 는 , 메드 들가는 두 가가 로 되는 는 경 abstract factory
- 메드 만로 되는 결될 경 factory method
- 메드를 는 , 메드 들가는 두 가가 로 되는 는 경 abstract factory
- abstract factory는 다. 바 는 api 기 때문 보만 반 리는 공 기 때문 많 나나 는다.
- PushbackInputStream 래
- lookahead inputstream. 기 input stream read면 끝나만 lookahead 를 가고 read 다 read기 로 돌 다.
- 바는 inputstream 대 많기 때문 반 결과를 inputstream로 만들 면 리가 다.
- lookahead inputstream. 기 input stream read면 끝나만 lookahead 를 가고 read 다 read기 로 돌 다.
- strategy , command , template method
- 동 기 다.
- strategy - command
- strategy (logic) 고 그 동 기 략 객를 다.
반면 command 따로 고 보다 범로 된다.
- strategy (logic) 고 그 동 기 략 객를 다.
- strategy - template method
- strategy 로 만들 둔 략 객 래를 구(implementation)는 방로 동 다.
반면 template method 부모 래 만들 두고 동 당는 메드를 + 라드 다.
- strategy 로 만들 둔 략 객 래를 구(implementation)는 방로 동 다.
- 동 기 다.
3.13. 2012 11 3 ¶
- ~let : 부 라 관리는 로그램. 드로드 activity같 경 부 동게 됨. 그것과 것.
- applet : 리(브라) 돌가는 로그램.
- servlet : 돌가는 로그램. 모 방(부 http request가 날면 가 맞 모 달.)럼 만들 놓 것.
- portlet : (관리로그램 ) 돌가는 로그램.
- applet : 리(브라) 돌가는 로그램.
- javaSE, javaEE : java .
- javaSE : JLS(java language specification) + java api를 가리. 바 문법과 기본 기능들. 구로는 hotspot JVM 다.
- javaEE : SE 들 다 모 javaEE라고 . javaSE 가 기능들 들감. javaEE 려 servlet다. 구로는 tomcat과 glassfish가 다. tomcat servlet 만 만고 javaEE 만는 만 glassfish는 javaEE 모든 만다.
- tomcat servlet container만 glassfish는 WAS(web application server) 당다.
- javaSE : JLS(java language specification) + java api를 가리. 바 문법과 기본 기능들. 구로는 hotspot JVM 다.
- DIP (depencency inversion principle) : 구래를 때 구래를 고 된 를 게 는 디 .
- JPA 구 래로 eclipse link hibernate가 는데, 각각 때 구 래를 고 JPA 를 록 면 나 구 래를 바꾸기 다.
- JPA 구 래로 eclipse link hibernate가 는데, 각각 때 구 래를 고 JPA 를 록 면 나 구 래를 바꾸기 다.
- tomcat servlet 배 내부 동
- tomcat servlet 배는 것 servlet 구고 는 래를 tomcat 래 는 것 말다. java tomcat 된 래 나 가된 래를 동 로딩 다.
- servlet war(web archive) 면 tomcat내부 watcher가 war 보를 가된 래를 동로 로딩 다.
- servlet 래 로딩 : jvm tomcat main래를 로딩다 -> deployment description 급되는 servlet래를 tomcat 로딩다.
- tomcat servlet 배는 것 servlet 구고 는 래를 tomcat 래 는 것 말다. java tomcat 된 래 나 가된 래를 동 로딩 다.
- servlet
- template method 됐다. protected로 된 service method가 template method 당되는데 abstract가 닌 는 기본 구 고 는 대 라드를 기 다.
- init : servlet 러면 먼 되는 method. init 되 면 servlet 로딩되 는다.
- destoy : servlet 료될 되는 method.
- service : 부 로 request가 들 servlet service method를 . service(req, res) 내부 req를 request 값 res 값 변경 부로 내보내다. 당 결과를 do* 붙 method(doGet, doPost )로 달다.
- do* : 당 httpMethod 대 리를 는 method.
- template method 됐다. protected로 된 service method가 template method 당되는데 abstract가 닌 는 기본 구 고 는 대 라드를 기 다.
3.14. 2012 11 10 ¶
- jar war
- war : src/main 는 webapp 더 내부 는 root로 게 된다.
- src/main/java, src/main/resources 가 war WEB-INF 더 내부 classes 내부 게 된다.
- src/main/java, src/main/resources 가 war WEB-INF 더 내부 classes 내부 게 된다.
- jar : src/main/java, src/main/resources 더가 root로 게 된다.
- war : src/main 는 webapp 더 내부 는 root로 게 된다.
- http servlet 달되기까 과
- http(http://hostname/contextPath/path?params) -> contextPath를 보고 당는 war를 -> war 내부 web.xml 보고 <servlet-mapping> 보를 보고 당 매된 servlet 는다. -> 당는 servlet 경 defalut servlet 리
- http(http://hostname/contextPath/path?params) -> contextPath를 보고 당는 war를 -> war 내부 web.xml 보고 <servlet-mapping> 보를 보고 당 매된 servlet 는다. -> 당는 servlet 경 defalut servlet 리
- servlet filter chain
- request가 servlet로 달되기 filter chain 러 servlet 동 .
- request -> Servlet Container -> Filter -> Servlet
- response <- Servlet Container <- Filter <- Servlet
- request가 servlet로 달되기 filter chain 러 servlet 동 .
- servlet thread safety
- servlet thread per request 구로 나 servlet 객가 러개 드 되는 구.
- filter, servlet 나 객를 url 매 러 드 는 것. 따라 thread-safe 다.
- thread-safe기 는 stateful는 된다. Servlet stateless더라 내부 stateful 객를 들고 면 결국 stateful게 된다. 는 므로 록 .
- 리 방법 : 공되는 변를 말고 내만 는 변를 록 ,
- servlet thread per request 구로 나 servlet 객가 러개 드 되는 구.
3.15. 2012 12 23 ¶
- IME(Input Method Editor) - OS 벨 key code - 문 mapping과 문 ('ㅁ' + 'ㅏ' 같 경) 리를 는 . Sublime는 대로 리를 다...
- JNI(Java Native Interface)
- Java 다른 (C)로 된 라브러리를 동로 록 는 방법.
- 드 과 load 과 당는 기.
- .java 는 래 내 native modifier를 붙 메드를 고, .c, .cpp 는 Java 될 구 다. System.loadLibrary(...) 를 .dll (Windows 경) 또는 .so(shared object) (Linux 경) 동로 로드다.
- 라브러리 는 naming convention 고, 반드 몇몇 들 다. 또 Java 기 C, C++ 구들 다. 당 구들 jni.h 되 다.
- 기는 naming convention 를 기는 귀기 때문 native를 가 .class javah 면 convention .h 만들 다.
- .cpp 로 때 는 extern "C"는 규(__cdecl, __stdcall)과 관련된 부다. extern "C"를 는 것로 __cdecl로 를 록 다.
- 라브러리 는 naming convention 고, 반드 몇몇 들 다. 또 Java 기 C, C++ 구들 다. 당 구들 jni.h 되 다.
- Java 다른 (C)로 된 라브러리를 동로 록 는 방법.
3.16. 2013 1 6 ¶
- JVM & Java Byte Code
- JVM - stack-based machine
- register-based machine과 는 되는 operand . register-based는 register operand를 가고 stack-based는 stack pop 가다.
- stack-based machine 경 register-based machine push, pop 많 가 느리만 register를 는 경 기기 덜 다.
- 명령 prefix로 구다. http://en.wikipedia.org/wiki/Java_bytecode#Instructions
- invoke* 명령
- invokespecial - vtable lookup 고 메드를 는 경. 떤 메드를 는 는 경 된다. new, private method, super .
- invokevirtual - vtable lookup 다. 가고 메드를 는 경. 대부 메드들 기 당다.
- invokestatic - static 메드 . 로 this를 는다.
- invokeinterface - virtual과 같다. interface 메드를 는 경 다.
- invokespecial - vtable lookup 고 메드를 는 경. 떤 메드를 는 는 경 된다. new, private method, super .
- if문 - if*과 if_* 두 류로 나뉜다.
- if* - operand를 나만 0과 교는 경가 대부다. ifeq(0과 같), ifne(0 님) 명령가 다.
- if_* - stack 두 개 operand를 꺼내 로 교는 경 로 된다. if_icmpeq( 값 두 개를 같 교) 명령가 다.
- if* - operand를 나만 0과 교는 경가 대부다. ifeq(0과 같), ifne(0 님) 명령가 다.
- register-based machine과 는 되는 operand . register-based는 register operand를 가고 stack-based는 stack pop 가다.
- JVM - stack-based machine
- 11 10 둘? -
- 복 가더 날 바꾸는 까먹듯 ;;; - 민관
- 복 가더 날 바꾸는 까먹듯 ;;; - 민관