본문 바로가기

전체 글

(36)
[Java] 스레드, 멀티스레드에 대한 공부 스레드 프로세스 내에서 실행되는 실행 단위이다. 이전 글을 보면 더 쉽게 알 수 있다.멀티 스레드한 프로세스 내에서 여러 스레드가 실행 단위를 나누어 실행되는 것을 의미한다.  자바 프로그램을 돌리면서 1개의 스레드만으로 여러 작업을 동시에 할 수 없다. 이에 자바에서는 여러 스레드를 만들어 실행시키는 방식으로 발전해 왔다. 이를 멀티 스레드라고 한다.스레드의 상태스레드는 여러 가지 상태를 가지고 있다. New : 스레드 객체가 생성되었지만, start() 메서드가 호출되지 않은 상태이다.Runnable : 스레드가 실행 중이거나 실행될 준비가 된 상태이다.Blocked : 스레드가 락을 기다리는 상태이다.Waiting : 스레드가 다른 스레드의 특정 작업이 완료되기를 기다리는 상태이다.Timed Wai..
[Java] 제네릭에 대한 공부 제네릭을 공부하기 전에 다형성에 대해서 알아야 한다. 다형성에 대해서 모른다면 이 글을 참고 하도록 하자.이제 다형성을 알고 있다고 생각하고 제네릭에 대해서 설명하겠다. 제네릭이란?클래스 내부에서 사용할 데이터 타입을 외부에서 지정하는 기법이다.이렇게만 보면 이게 무슨 소리지? 또는 어떻게 이게 가능하지?라는 생각을 하게 된다. ArrayList list=new ArrayList();위 코드를 보면 Integer을 감싸고있는 가 사용한 클래스를 제네릭 클래스라고 한다. public class ExGeneric{ private T t; public void setT(T t){ this.t=t; } public T getT(){ return t; }}다..
[Java] 예외처리에 대한 공부 예외(Exception)란 개발자가 구현한 로직에서 발새한 실수나 사용자의 영향에 의해 발생한다. 오류와 달리 미리 예측이 가능하여 상황에 맞게 예외처리를 해야 한다.  오류(Error)란 시스템이 종료되어야 할 수준의 상황과 같이 수습할 수 없는 심각한 문제를 의미한다. 미리 예측이 불가능하여 방지할 수 없다. 예외 계층체크 예외애플링케이션 로직에서 사용할 수 있는 실질적인 최상위 예외이다. Exception과 그 하위 예외는 모두 컴파일러가 체크하는 체크 예외이다. RuntimeExceptiond을 제외한 모든 예외는 체크예외이다. 언체크 예외(런타임 예외)컴파일러가 체크하지 않는 언체크 예외이다. RuntimeException과 하위 언체크 예외를 모두 런타임 예외라고 한다. 예외 처리 란? 예기치..
[JPA] 영속성에 대한 공부 엔티티 매니저 팩토리와 엔티티 매니저 엔티티 매니저 팩토리 엔티티 매니저를 만드는 공장이다.생성 비용이 크다. 따라서 한 개만 만들어서 애플리케이션 전체에 공유한다.여러 스레드가 동시에 접근해도 안전하게 설계되어 있다.여러 스레드에서 접근이 가능하다.EntityManagerFactory emf= Persistence.createEntityManagerFactory("jpabook"); //"jpabook"은 호출될 jpa 설정 코드 이름엔티티 매니저 엔티티 매니저 팩토리보다 생성 비용이 적다.여러 스레드가 동시에 접근하면 동시성 문제가 발생한다.스레드간 공유를 하면 안 된다.EntityManager em = emf.createEntityManager(); // 엔티티 매니저 팩토리에서 엔티티 매니저 생성..
[Spring] 프록시와 AOP에 대한 공부 프록시대리자라는 의미로 간접적으로 대신하는 것을 의미한다.위 그림처럼 client가 server를 직접 호출할 수 있지만 client와 server사이에 대리자 즉 proxy를 두어 간접 호출할 수 있다. 아래처럼 간접 호출한 것을 대리자 proxy라고 한다. 위에 간접호출 부분에서 여러 프록시를 두어 호출이 가능하다. 이걸 프록시 체인이라고 한다. 프록시에서 중요한 점은 호출을 요청하는 객체가 서버를 호출한것인지, 프록시를 호출한것인지 몰라야한다. 어떤 것이 호출되는지 모르는것 즉 인터페이스를 사용해야한다. 또한 서버 객체를 프록시 객체로 변경해도 client의 코드를 변경해서는 안된다. 객체와 객체 사이에 프록시 객체가 중간에 있으면서 접근 제어와 부가 기능 추가를 수행 가능하다. 프록시는 2가지가 ..
[Spring] Bean에 대한 공부 Bean스프링 컨테이너에서 객체를 생성하고 관리되는 객체이다.  스프링 컨테이너Bean의 인스턴스화, 구성, 생명 주기, 제거 등 Bean을 관리하는 기능을 한다. 스프링 Bean은 DI와 IoC를 이용하여 외부에서 객체를 주입받는다. 이때 외부라는 게 스프링 컨테이너를 의미한다. ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class)ApplicationContext를 스프링 컨테이너라 부른다. 스프링 컨테이너는 IoC 컨테이너, DI 컨테이너라고도 한다. ApplicationContext는 인터페이스이다. 위 코드는 스프링 컨테이너를 생성하고 구성 정보인 AppConfig.class를 넣..
[Spring] DI와 IoC에 대한 공부 Dependency (의존관계)A가 B를 의존하면 B가 변하면 A에도 영향을 미치는 관계를 말한다. public class Computer { private SamsungRam16g samsungRam16g; public Computer() { samsungRam16g=new SamsungRam16g(); }}위 코드처럼 Computer는 SamsungRam16g에 의존하게 된다. 필자는 간단한 예시로 하나의 클래스에서만 들었지만 실제로 이렇게 모든 코드를 짠다면 만약에 SamsungRam16g이 아니라 SamsungRam32g으로 변경하거나 다른 램으로 변경을 할 경우 쓰고 있는 모든 코드를 변경해야 한다.public class Computer { private Ram..
[Java] 다형성에 대한 공부 다형성(Polymorphism)하나의 객체가 여러 가지 타입을 가질 수 있는 것을 의미한다. 클래스가 상속 관계에 있을 때 나타나는 성질이다.public class Car { public void carMethod(){ System.out.println("자동차입니다."); }}public class OilCar extends Car{ public void oilCarMethod(){ System.out.println("기름차입니다."); }}위 코드는 OilCar가 Car를 상속하는 코드이다.public class PloyMain { public static void main(String[] args) { System.out.println..