본문 바로가기

분류 전체보기256

[Spring] Spring의 핵심 기술 IoC / DI 안녕하세요. 요즘 코로나로 이슈가 많습니다. 다들 몸관리 잘 하시기 바랍니다. 오늘은 이전 포스팅에 이어서 Spring의 핵심 기술중 DI와 IoC에 데해서 알아보도록 하겠습니다. IoC (Inversion of Control) IoC는 영어 그대로 해석하면 제어의 역전이라고 말합니다. A라는 class가 B라는 클래스의 메서드를 사용하기로 했습니다. 그러면 아래와 같은 코드를 작성해야 합니다. 이런 관계를 A가 B를 의존하고 있다고 합니다. 왜냐하면 B의 로직에 따라 A가 영향을 받기 때문입니다. public class A { private B b; public A() { b = new B_1(); } public void useB() { b.method_1(); b.method_2(); } } int.. 2020. 3. 2.
[Spring] Spring의 정의와 기본 개념 안녕하세요. 대다수의 Java를 주 언어로 사용하는 분들이 사용하는 Web Framework가 바로 Spring FrameWork입니다. 오늘은 Spring정의와 기본 개념, 그리고 Spring의 목표에 대해서 알아보도록 하겠습니다. 정의 토비의 스프링을 보면 Spring은 아래와 같이 정의되어 있습니다. 자바 엔터프라이즈 애플리케이션 개발에 사용되는 애플리케이션 프레임워크 엔터프라이즈 서비스이라는 것은 실제 기업에서 사용할 수 있을 정도의 시스템으로 UI, 서비스 로직을 포함하여 있는 것이 아니라 보안, 트랜잭션과 같은 엔터프라이즈 시스템에서 요구되는 기술을 포함하는 서비스입니다. 목적 어떤 기술이든 그 자체로는 도구에 불과하며 용도에 맞게 잘 활용해서 궁극적으로 이루고자 하는 목표를 이루는 것이 중요.. 2020. 2. 21.
[자료구조] 코드로 알아보는 java의 HashSet 안녕하세요. Java의 자료구조를 알아보는 시간을 가지고 있습니다. 지금까지 List, Map에 대해서는 한종류씩 알아보았지만 아직 Set에 대해서는 알아본적이 없습니다. 그래서 오늘은 Set의 구현체 중 하나인 HashSet을 코드로 한번 알아보는 시간을 가지도록 하겠습니다. Set Set은 List와 다르게 중복을 허용하지 않는 자료구조입니다. 어떻게 중복을 허용하지 않을 수 있는지 코드와 함께 살펴보도록 하겠습니다. 상속과 멤버변수 public class HashSet extends AbstractSet implements Set, Cloneable, java.io.Serializable private transient HashMap map; // Dummy value to associate wit.. 2020. 2. 17.
[자료구조] 코드로 알아보는 java의 LinkedList Java에서 List를 구현하는 구현체는 대표적으로 ArrayList, LinkedList, Vector가 있습니다. 저희는 저번 포스팅에서 ArrayList에 대해서 코드를 보며 내부 구조와 실질적인 시간복잡도를 파악해 보았습니다. 오늘은 LinkedList에 대해서 코드를 보며 ArrayList와는 어떻게 다른지 그 구조와 시간복잡도를 파악해보도록 하겠습니다. ArrayList와 LinkedList 우리가 일반적으로 알고 있는 ArrayList의 이미지는 위와 같습니다. String 형태의 "Hello Wo" char 배열에 저장한다고 하면 위와같은 형태가 될 것입니다. index를 가지고 있으며 index에 값을 저장하고 있는 형태입니다. 이런형태를 가짐으로써 RandomAccess가 가능하고 군집.. 2020. 2. 14.
[자료구조] 코드로 알아보는 java의 ArrayList 안녕하세요. 오늘은 우리가 잘 사용하는 ArrayList에 대해 코드를 들여다 보고 내부는 어떻게 구성되어 있는지 확인해보도록 하겠습니다. 그리고 주요한 메서드 들은 어떤 로직으로 구현되어 있는지 알아보도록 하겠습니다. ArrayList ArrayList는 배열을 좀 더 편하게 쓸수있도록 Java에서 제공해주는 Class입니다. 일반 배열과는 다르게 메모리가 가능한한 추가할 수 있고 삭제에 대해서도 해당 index를 비워두기만 하는게 아니라 재정렬해주는 기능을 기본으로 제공해주고 있습니다. interface와 내부 변수 확인 public class ArrayList extends AbstractList implements List, RandomAccess, Cloneable, java.io.Seriali.. 2020. 2. 12.
[MSA] Spring Cloud Eureka - 실습편 안녕하세요. 오늘은 저번시간에 이어서 Spring Cloud Eureka에 대해서 알아보도록 하겠습니다. 저번시간에는 Eureka의 이론적인 부분에 집중했다면 이번시간에는 실제로 적용해보는 시간을 가지도록 하겠습니다. Client는 Zuul을 사용할 것입니다. Zuul에 대해서 잘 모르시는 분들은 Zuul에 대한 포스팅을 참고해주시기 바랍니다. 프로젝트 구성요소 Service( Eureka-Client ) : 실제 로직이 실행되는 서비스 Eureka-Server : 서비스들의 정보를 관리하는 Eureka Server Zuul (Eureka-Client) : 실제 서비스로 Routing하는 Edge 서비스 아키텍처 MSA를 구성하는 서비스들은 본인의 정보(IP, Port, AppName, instanceI.. 2020. 2. 10.
[MSA] Spring Cloud Eureka에 관하여 - 이론편 안녕하세요. 오늘은 Spring Cloud의 구성요소 중 Eureka에 대해서 알아보도록 하겠습니다. Eureka 란 개요 Eureka는 AWS와 같은 Cloud 시스템에서 서비스의 로드 밸런싱과 실패처리 등을 유연하게 가져가 위해 각 서비스들의 IP / Port / InstanceId를 가지고 있는 REST 기반의 미들웨어 서버입니다. Eureka는 마이크로 서비스 기반의 아키텍처의 핵심 원칙 중 하나인 Service Discovery의 역할을 수행합니다. MSA에서는 Service의 IP와 Port가 일정하지 않고 지속적을 변화합니다. 그렇기 때문에 Client에 Service의 정보를 수동으로 입력하는 것은 한계가 분명합니다. Service Discovery란 이런 MSA의 상황에 적합합니다. 아키.. 2020. 2. 5.
[Design Pattern] Decorator Pattern과 Proxy Pattern의 비교 안녕하세요. 지금까지 같이 알아본 디자인 패턴 중 데코레이터 패턴과 프록시 패턴은 유사한 구조를 가지고 있으며 사용하는 방법도 유사하다라는 걸 눈치채신 분들이 있을 것 같습니다. 2개 패턴의 구조는 유사하지만 해결하고자 하는 문제와 방법이 다릅니다. 오늘은 데코레이터 패턴과 프록시 패턴을 비교해보도록 하겠습니다. 데코레이터 패턴과 프록시 패턴 프록시 패턴 먼저 프록시 패턴은 위와 같은 아키텍처로 되어있습니다. Real Object에 대해서 실제로 필요할 때 instance가 생성되고 실제 작업이 진행될 수 있도록 하기 위해 적용되는 패턴입니다. 프록시 패턴에서 Real Object는 Proxy가 감싸고 있으며, Proxy를 통해서 처음 접근 또는 요청이 있을 때 생성이 되어집니다. Proxy는 Clien.. 2020. 1. 31.
[Design Pattern] Java에서 발견한 디자인패턴_Decorator Pattern 안녕하세요. 오늘은 Decorator Pattern에 대해서 알아보도록 하겠습니다. Decorator Design Pattern 데코레이터 패턴에 대해서는 토비의 스프링 3.1 Vol. 1 책에 아래와 같이 서술합니다. 데코레이터 패턴은 Target Class에 부가적인 기능을 런타임 시 다이나믹하게 부여해주기 위해 Proxy를 사용하는 패턴 다이내믹하게 기능을 부가한다는 의미는 컴파일 시점, 즉 코드상에서는 어떤 방법과 순서로 프록시와 타깃이 연결되어 사용되는지 정해져 있지 않다는 뜻 즉, 데코레이터 패턴은 런타임중 다양하게 기능을 추가 할 수 있다라는 뜻입니다. 그럼 바로 한번 예제의 아키텍처와 코드를 확인해보도록 하겠습니다. 예제 윈도우 시스템을 만든다고 가정해보겠습니다. 세로스크롤, 가로스크롤, .. 2020. 1. 30.
[주절주절] JLPT 1급을 땄습니다. 이번에 드디어 JLPT급을 취득했습니다. 12년도에 2급을 따고 한참을 쉬다가 작년 2월부터 준비했습니다. 7월 시험에서는 총점 98점으로 떨어졌었습니다. 나름 자신 있었는데 자만이었던 것 같습니다. 이번에는 한자와 단어, 그리고 문법을 중심으로 공부했었습니다.(그런데 언어지식이 제일 적게 올랐습니다...) 합격해서 기쁩니다. 옆에서 많이 도와주셔서 이렇게 합격할 수 있었다고 생각합니다. 그리고 청해 만점이라니 감격입니다. 2020. 1. 29.
[자료구조] 코드로 알아보는 java의 Hashmap HashMap이란 HashMap은 Key, Value를 저장하는 Map의 구현체 중 하나입니다. 자료구조에 Key를 넣으면 Value를 반환하도록 합니다. 그리고 HashMap은 Key를 Hashing을 하여 저장하여 빠르게 처리 그리하여 HashMap이란 입력과 삭제에 대해 시간복잡도가 O(1)인 자료구조라고 합니다. initialize 우리가 Java를 사용할때 HashMap을 사용한다고 한다면 가장먼저 초기화를 해야합니다. (Key, Value는 모두 String이라고 하겠습니다.) 그러면 아래와같이 초기화 할 것입니다. Map map = new HashMap(); 이때 내부에서는 어떤일이 일어나는지 보겠습니다. /** * Constructs an empty HashMap with the defau.. 2020. 1. 25.
[MSA] Spring Cloud Zuul 1.x - 실습편 안녕하세요. 오늘은 저번시간에 이어서 Spring Cloud Zuul 1.0의 실습을 해보도록 하겠습니다. 실습의 순서는 Spring Cloud Zuul 사용을 위한 의존성을 알아보고, Filter 등록 방법, Routing, 그리고 장애에 대비한 Retry 및 Fallback을 사용하는 방법까지 알아보도록 하겠습니다. pre-condition(사전 조건) zuul을 실습하기 전에 서비스를 한게 만들고 2개로 띄어두어야 실질적인 테스트를 할 수 있습니다. 아래와 같이 설정 Controller를 제작한 후 build, 2개의 서버를 띄우도록 합시다. @RestController public class TestController { @GetMapping("/ping") public ResponseEntity.. 2020. 1. 22.