IT/JAVA 7

[Java] TDD 작성, JUnit ( 작성중입니다 )

TDD란? TDD(Test Driven Development)란 '테스트 주도 설계'라고 하여 테스트를 먼저 만들고 실제 서비스 될 코드를 작성하는 개발방법론 중 하나이다. TDD 작성의 장점은 객체지향적인 코드 개발이 가능하며, 설계 수정 및 디버깅의 시간을 단축하고, 유지보수가 용이하며, 오버 엔지니어링의 방지가 되는 점이 있다. 단점은 개발에 소요되는 시간이 증가하고, 테스트 코드가 짜는것이 어렵다는 점이다. 1. 테스트 코드를 작성하는 이유 테스트 코드를 작성하지않으면 문제를 빠르게 파악하기 힘들고, 한번의 수행을 위해 아래의 과정을 반복 해야지 테스트가 가능하다. 1. 코드 작성 > 2. 서버 실행 > 3. 코드 요청 수행 > 4. 요청결과를 디버깅 위 과정을 문제가 해결될때까지 반복해야하는데,..

IT/JAVA 2022.03.18

[Java] Garbage Collection(가비지 컬렉션)이란?

- Garbage Collection (가비지 컬렉션)이란? 프로그램 개발을 하다보면 유효하지 않은 메모리(Garbage)가 발생하게 된다. Java를 이용해 개발하다보면 JVM의 가비지 컬렉터가 불필요한 메모리를 알아서 정리해준다. - JVM JVM 자바 가상머신의 약자를 따서 줄여부르는 용어이다. 자바 애플리케이션을 클래스 로더를 통해 읽어들여 실행하는것 JVM은 OS로부터 프로그램이 필요로 하는 메모리를 할당받음. 자바 컴파일러 (javac)가 자바 소스코드(.java)를 읽어들여 byte code(.class)로 변환시키고, Class Loader를 통해 class파일들이 JVM으로 로딩 된다 로딩된 class파일들이 Execution enging(실행 엔진)을 통해 해석된다. 해석된 바이트코드는..

IT/JAVA 2022.03.15

[Java] 자바의 동시성 (Concurrency)

자바의 동시성 자바는 멀티쓰레드를 지원하는 언어이다. 멀티 쓰레드 프로그래밍에서 고려해야 할 것이 바로 동시성 문제이다. -> 동기화를 해주어야 한다. Thread safe? - 쓰레드 세이프라는 것은 멀티쓰레드 프로그래밍 환경에서 특정 자원에 대해 여러 쓰레드로 동시에 접근이 이루어져도 프로그램의 실행에 문제가 없음을 의미한다. - 자바 JVM내 Method 영역내의 데이터나 인스턴스 변수와 같이 Heap영역에 저장되는 데이터는 여러스레드 간에 공유되는 자원이기때문에 Thread safe한 자원이 아니다. -> 그렇기때문에 Thread safe하지 않은 자원에 대해서 데이터의 안정성과 신뢰성을 보장하고, 동시성 문제를 발생시키지 않기 위한 동기화가 필요하다. 자바의 동기화 방법 1. Syncronize..

IT/JAVA 2022.03.15

프록시환경에서 clientIP 얻기

클라이언트와 서버의 중간의 로드밸런서나 프록시를 거치면, 서버 접근 로그에는 로드밸런서나 프록시의 IP 주소를 담고있다. 클라이언트의 원 IP를 알기위해서는 X-Forwarded-For (XFF) 헤더가 표준으로 사용된다. 아래의 코드로 Util 소스에서 처리한다. WebServer, WAS, L4, proxy 종류와 상관없이 clientIP를 가져오기 위해서는 다음과 같은 순서로 IP를 찾아야한다. import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.servlet.http.HttpServletRequest; public class LogUtil { private static Logger logger = LoggerFactory.g..

IT/JAVA 2021.12.17

[JAVA] 객체지향프로그래밍(OOP)란?

객체 객체란 말그대로 대상을 나타내는 단어이다. 객체지향프로그래밍(OOP) 객체의 관점에서 유기적인 관계를 통해 프로그래밍 하는 것을 의미한다. C는 절차지향 프로그래밍이라고 한다. 프로세스가 함수 단위로 순서대로 진행 되는 것을 말한다. OOP의 특징 1. 추상화 객체의 공통된 속성들 중 필요한 부분을 클래스로 정의하는 설계 기법 2. 캡슐화 접근제어자를 이용하여 불필요한 정보를 감출수 있고, 정보은닉을 할수 있다. 그리고 사용자의 입장에서는 public으로 정의된 속성만 알면 된다. 3. 상속 부모클래스가 자손클래스에게 속성을 물려주는 것 상속을 통해 코드의 중복을 없앤다. 코드의 재사용이 목적이다. 4. 다형성 오버라이딩을 통해 형태가 같은데 다른 기능을 하는것. OOP에서는 다형성을 허용한다

IT/JAVA 2021.07.12

[JAVA] 오버로딩과 오버라이딩의 차이

자바에서는 오버로딩과 오버라이딩의 개념이 있다. 이름이 비슷하여 처음에 많이들 헷갈리는 부분이다 오버로딩(Overloading) - 메서드의 이름이 같고 매개변수의 갯수나 타입이 다른 함수를 정의하는 것이다. - 리턴값만 다른 오버로딩은 있을 수 없다. 오브라이딩 (Overriding) - 상위 클래수를 상속받아 매서드를 하위클래스가 재정의 하는 것이다 - 메서드와 파라미터, 리턴타입이 동일해야한다.

IT/JAVA 2021.07.12

[JAVA] 컬렉션(Collection)

컬렉션 프레임워크 컬렉션은 자바에서 자료구조를 구현한 클래스들을 칭하는 용어이다. 자료구조(Data Structure)는 데이터를 저장하기위한 구조이다. 자바는 자료구조 처리를 위해 단순한 배열부터 리스트, 맵, 집합 에 이르기까지 다양한 프레임워크 기능을 제공한다. - 대표적인 컬렉션 종류 컬렉션 설명 List 순서가 있는 자료구조 Map 키와 값로 이루어진 자료구조 Set 집합을 나타내는 자료구조 Queue 들어오고 나가는 것의 순서가 정해진 자료구조

IT/JAVA 2021.07.12