JAVA/Java: 149개의 글
참조문서 https://docs.oracle.com/javase/8/docs/api/java/util/function/package-frame.html https://skyoo2003.github.io/post/2016/11/09/java8-lambda-expression https://homoefficio.github.io/2017/02/19/Java8-%EB%9E%8C%EB%8B%A4-%EA%B4%80%EB%A0%A8-%EC%8A%A4%ED%8E%99-%EC%A0%95%EB%A6%AC/ 1. 람다란? 람다란 코드블록이다. 기존에는 코드블록은 반드시 메서드 내에 존재해야 했다. 코드블록을 가지려면 메소드, 클래스를 선언해야 했다. 하지만 자바8부터는 람다를 통해 코드블록만 가질 수 있도록 한 것이다. ..
참조문서 http://www.nextree.co.kr/p6960/ http://slenderankle.tistory.com/162 1. SOLID란? 객체지향 설계는 긴 세월과 수많은 시행착오를 거치며 5가지 원칙이 정리되었다. 이것은 객체지향 설계의 5원칙이라고 하며, 앞글자를 따서 SOLID라고 한다. SPR(Single Responsibility Principle) : 단일 책임 원칙 OCP(Open Closed Principle) : 개방 폐쇄 원칙 LSP(Liskov Substitution Principle) : 리스코프 치환 원칙 ISP(Interface Segregation Principle) : 인터페이스 분리 원칙 DIP(Dependency Inversion Principle) : 의존 ..
1. 클래스와 객체 가장 흔한 설명중에 대표적으로 잘못된 것은 붕어빵이야기다. 클래스 = 붕어빵틀, 객체 = 붕어빵에 비유하며, 붕어빵틀에서 붕어빵을 찍어낸다는 이야기다. 하지만 코드로 보면 이 비유는 틀렸다. 클래스 객체변수명 = new 클래스(); 에 대입해보면, 붕어빵틀 붕어빵 = new 붕어빵틀(); 이다. 말이 안되는 예제이다. 여기서 붕어빵틀은 붕어빵을 만드는 Factory로 이해를 해야지, 클래스와 객체관계로 이해하면 안된다. 클래스는 추상적이고, 클래스라는 단어대로 분류에 대한 개념이지, 실체가 아니다. 하지만 객체는 실체이다. class Person이 있고, Person ljh = new Person(); 이 말이 되는 것이다. 클래스 : 같은 특성을 지닌 여러 객체를 총칭하는 집합의 개..
참조문서 : https://d2.naver.com/helloworld/10963 관련 포스팅 : http://sjh836.tistory.com/121 1. 들어가며 1-1. 스레드의 종류 Daemon Thread 작업을 돕는 보조적인 역할을 수행하는 쓰레드 (GC 도 여기에 해당) 프로세스 종료시 데몬 쓰레드는 강제적으로 자동종료 언제든지 종료가 되어도 상관없는 작업 시에 사용 (그래서 주로 데몬쓰레드를 쓴다) Thread t = new Thread(); t.setDaemon(true); 로 설정가능 Non-Daemon Thread 실제 주 작업을 하는 스레드 프로세스 종료시 논데몬 쓰레드가 살아있는 경우 종료 불가능 (가끔 톰캣을 종료했지만 안꺼져서 kill 해야되는 이유) 매우 중요한 데이터 처리시에..
일반클래스는 Package member class 라고들 하며, 아래 항목에서 제외했다. 구글링해보면 클래스간에 관계나 큰 틀에서의 구조를 안잡고 나열하는 식이 많은 것 같다ㅋㅋ 1. 중첩 클래스는 왜 쓰는가? 클래스들의 논리적인 그룹을 나타낼 때 쓴다. 주로 model 객체에서 상위모델과 하위모델이 있을 때 쓰는 것 같다. (Static Nested Class 를 많이 씀) 향상된 캡슐화 좋은 가독성과 유지보수성 2. 중첩 클래스의 종류 3. 내부클래스 (Inner Class) 내부클래스로서 일반클래스 내부에 생성된다. Non-Static Nested Class 라고도 불린다. 밖에 있는 클래스는 내부클래스를 멤버변수처럼 사용할 수 있다. 사용하려면 new로 인스턴스를 만들어야한다. 내부클래스는 자신의..
1. Object 클래스 java의 모든 클래스의 최상위 부모이다. 자동으로 java.lang.Object 클래스를 상속받으므로 extends 역시 필요 없다. 2. 주요 메소드 반환형메소드명설명 boolean equals(Object o) 객체 간에 동일여부를 나타냄 int hashCode() 객체의 해쉬값 String toString() 객체를 string으로 나타냄, 기본적으로 클래스명@16진수hashCode값 Object clone() 객체를 복사해서 리턴 void finalize() 객체가 GC처리 되기전에 호출 Class getClass() 객체의 runtime class를 리턴 instanceof 연산자와 getClass() : instanceof 연산자는 상위 부모클래스에도 true가 된다..
1. apache commons 가 뭔가? 2002년 9월에 처음 만들어졌으며, 자바관련 공통 컴포넌트 개발을 위한 프로젝트의 모임 크게 3가지의 분류가 있다. Commons Proper : 서로 재사용 가능하도록 개발 및 활용이 가능한 프로젝트들의 모임, 외부 라이브러리의 사용이 거의 없어 아파치 소프트웨어 외부의 변경에 영향을 받지 않고 내부적으로 안정적으로 개발 Commons Sandbox : 아직 Proper 단계로 올라가지 못한 단계의 프로젝트들을 모아놓은 공간 Commons Dormant : 거의 활동이 없이 정지된 프로젝트들의 목록 2. 우리가 자주사용하는 프로젝트들? Commons Proper 에서 내 기준 자주 본 것들을 정리해보자. LANG : java.lang 패키지의 기능을 확장하여..
참조문서 http://d2.naver.com/helloworld/645609 https://docs.oracle.com/javase/8/docs/api/java/time/package-frame.html http://jekalmin.tistory.com/entry/%EC%9E%90%EB%B0%94-18-%EB%82%A0%EC%A7%9C-%EC%A0%95%EB%A6%AC jdk 1.8 부터 날짜 API 가 좋아졌다고 한다. java.util.Date 와 Calendar 를 사용했을 때도 크게 불편한 건 못느꼈지만(불편했다고하면 0부터 시작한다는거?ㅋㅋ) 새로운 java.time 패키지를 알아보자. 1. 이전 방식의 문제들(util.Date, util.Calendar) 찾아보니까 문제가 많군..? 복잡한 날..
참조문서 : https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html 1. enum 이란? enumeration의 앞글자로 열거라는 뜻이다. JDK 1.5 부터 관련이 있는 상수들의 집합을 사용할 때 enum을 사용한다. enum은 완전한 클래스이다. 그 이전에는 열거형 상수를 선언하려면 다음과 같이 했다. 클래스 내에 final static 로 변수 선언 interface 에 상수선언 기존방식의 문제 한 클래스에 final static 으로 다 선언하자니 네임충돌 발생할 수도 있고, 복잡함 인터페이스를 사용하면 위 문제는 해결되나, 타입안정성이 떨어짐 (컴파일 때 형검사를 하지 않으므로 오류발생 소지) enum의 장점 코드가 단순해지고, 가독성이 짱..
1. 서블릿이란? HTTP protocol 서비스를 지원하는 javax.servlet.http.HttpServlet 클래스를 상속하여 개발하며, Servlet은 컨테이너에 의해서 실행되고 관리된다. HTML 변경 시 Servlet을 재컴파일해야 하는 단점이 있다. 서블릿은 외부 요청마다 프로세스보다 가벼운 스레드로써 응답한다. 2. JSP와 서블릿의 차이점 JSP : HTML 문서 안에 java 코드를 포함하고 있다. MVC에서 View 역할 서블릿 : 자바 코드 안에 HTML을 포함하고 있다. 주로 MVC에서 컨트롤러 역할 3. 서블릿 컨테이너(톰캣 등)란? HTTP 요청을 받아서 Servlet을 실행하고 생명주기를 관리하는 역할을 한다. servlet과 웹서버가 통신할 수 있는 방법을 제공 멀티 스레..