개발
-
Eventual Consistency 란개발/OOP, Design Pattern 2021. 7. 11. 13:22
Eventual Consistency 분산 시스템을 구성하려면 CAP 이론에 의해서 일관성과 가용성 중 하나를 포기해야하는 상황이 올 수 있습니다. 클라이언트의 요청을 받았을 때, A서버의 데이터가 변경되면 즉시 다른 서버에 반영되지 않습니다. 아래 두가지 경우가 있습니다. 모든 서버가 동일한 데이터를 갖도록 동기화 하는동안 클라이언트의 접근을 막는 경우 (가용성의 문제) 다른 클라이언트들이 변경된 데이터를 요청했을 때 어떤 클라이언트는 최신의 데이터를, 어떤 클라이언트는 오래된 데이터를 받게되는 경우.(일관성의 문제) 그러나 2번의 경우 언젠가는 동기화가 되면, 모든 클라이언트가 동일한 데이터를 받아볼 수 있게 됩니다. 이것이 Eventual Consistency 입니다. Eventual consist..
-
헥사고날(포트와 어댑터) 아키텍처개발/OOP, Design Pattern 2021. 7. 11. 12:45
저는 저희 팀 프로젝트를 확장 가능한 구조로 만들고자 포트어댑터 아키텍처를 알아보았습니다. 포트와 어댑터를 간단하게 설명하자면 애플리케이션이 외부 요소(인프라)등에 관련없이 지속가능하게 만드는 것이 목표이며, 포트는 인터페이스고 어댑터는 구현하는 클래스를 말합니다. 외부에 의해 동작하는 포트를 주포트 (구현은 주어댑터) ex) MVC의 Controller와 같은 외부에서 애플리케이션과 통신하고자 할때 필요한 포트 내부적으로 외부의 프로토콜과 통신하는 것을 부포트 (구현은 부어댑터)ex) MVC의 DAO와 같은 애플리케이션이 외부와 통신할 때 필요한 필요한 포트 현재는 MVC구조로 HTTP API → 서비스 → Repository(MySQL) 로 구성되어있는데 이중 HTTP API가 grpc로 변경되거나,..
-
JVM Run-Time Data Area개발/Java 2021. 4. 6. 16:50
이전에 JVM에 대해 정리한 내용이 있는데, 좀 더 추가할 내용이 있어서 작성하였다. (Constant Pool, Static은 어디에, Heap, Garbage Collection 등..) Live-Study 1주차 정리내용 - JVM soongjamm.tistory.com/95 [live-study] 1: JVM은 무엇이며 자바 코드는 어떻게 실행하는 것인가. 백기선님이 진행하시는 live-study 1주차 과제 1주차 과제 목표 자바 소스 파일(.java)을 JVM으로 실행하는 과정 이해하기. 학습할 것 JVM이란 무엇인가 컴파일 하는 방법 실행하는 방법 바이트코드란 soongjamm.tistory.com JVM JVM과 추상화 Run-Time Data Areas static 변수는 어디에 저장될까..
-
[okky 질문글 답변] map에 대하여개발/Java 2021. 4. 5. 18:23
okky.kr/article/903802?note=2290174 OKKY | Map과 Hashmap의 차이는 어떤 알고리즘을 쓰느냐의 차이인가요? Map은 이진탐색트리, Hashmap은 해쉬테이블을 쓴다고 하는데, 어떤경우에 Map을쓰고 또 어떤경우에 Hashmap을 쓰는지 모르겠습니다.. 그리고 이런식으로 정의하는건 어떤의미인지 잘 파악이 안됩니다 okky.kr 질문 제목 Map과 Hashmap의 차이는 어떤 알고리즘을 쓰느냐의 차이인가요? 본문 Map은 이진탐색트리, Hashmap은 해쉬테이블을 쓴다고 하는데, 어떤경우에 Map을쓰고 또 어떤경우에 Hashmap을 쓰는지 모르겠습니다.. 그리고 이런식으로 정의하는건 어떤의미인지 잘 파악이 안됩니다..ㅠ private static Map store = ..
-
enum을 비교할 때 .equals() 말고 '==' 을 써도 된다.개발/Java 2021. 4. 5. 18:19
stackoverflow.com/questions/1750435/comparing-java-enum-members-or-equals Comparing Java enum members: == or equals()? I know that Java enums are compiled to classes with private constructors and a bunch of public static members. When comparing two members of a given enum, I've always used .equals(), e.g. public stackoverflow.com enum은 싱글톤이라 '==' 비교시 제대로 된 결과를 얻을 수 있고, equals() 보다 명확하다는 의견이 있는 것..
-
스프링부트 profile 설정 (궁금증 해결. .properties / jvm 옵션 -Dspring/ web.xml의 init-param / System.setProperty() 등등)개발/Spring 2021. 3. 26. 14:23
공부를 하면서 불편함과 해결되지 않은 궁금증이 있었다. (불편.귀찮) mysql로 개발을 하려면 매번 mysql를 켜줘야한다. 그게 귀찮아서 h2로 인메모리 db를 쓰려면 설정을 또 바꿔줘야 하는데 url, id, pw를 자꾸 까먹는다. 즉, mysql h2 왔다갔다하는게 번거롭다. (모르겠는거) 스프링(이나 스프링부트)에 각종 설정이 많고 방법도 많아서 뭐가 뭔지 잘 모르겠고 헷갈린다. 1번 문제를 해결하려고 책을 보다보니 2번 문제가 어느정도 해결이 되었다. 설정 하는 방법들, 우선순위 스프링부트에는 각 목적에 따라 설정을 달리할 수 있는 Profile 이라는 기능을 제공한다. Profile은 이름을 지정해서 설정 자바 코드나 프로퍼티를 작성하고 지정한 Profile 이름을 통해 설정을 읽어들일 수 ..
-
JdbcTemplate 와 JDBC API의 비교개발/Spring 2021. 3. 1. 11:40
JdbcTemplate Spring에서 제공하는 클래스로 JDBC API의 불편함을 해소시켜주는 역할을 한다. (템플릿 메서드 패턴/ 전략 패턴이 사용됌) JDBC API vs JdbcTemplate JDBC API 는 자바로 데이터베이스에 접근할 수 있게 해주는 표준 인터페이스다. JAVA - JdbcTemplate - JDBC API - DB 의 단계로 생각할 수 있다. JdbcTemplate 로 해결할 수 있는 것 구조적인 반복의 해결 JDBC API 를 사용하면 try-catch 문을 만들고 Connection - Statement, 결과를 가져오기 위해 ResultSet 까지 생성 후 예외처리 과정을 매번 반복해야한다. 실제 작업과 무관한 코드가 많다. 그러므로 어떤 일을 하는 코드인지 단번에 ..
-
객체지향에서 메세지와 메소드는 다르다.개발/OOP, Design Pattern 2021. 2. 24. 10:51
객체지향에서 메세지와 메소드는 다르다. 객체지향에 입문해서 자료를 보다보면 메세지 라는 말을 많이 보게 된다. 예를 들어 객체의 상태를 직접 변경하지 않고, 어떤 작업을 요청하는 메세지를 보내야 한다 라는 식이다. 이렇게 보면 '아. 객체의 메소드를 사용해서 간접적으로 상태를 변경하라는 뜻이구나' 라는 생각이 든다. 그럼 왜 메소드를 쓰라고 하면 되지, 굳이 메세지를 보내라고 하는 걸까? 메소드는 메세지를 수신하는 방법이다. 다음과 같은 사람의 클래스가 있다고 가정하자. public abstract class Person { public abstract void sleep(); } 추상 클래스에 sleep() 이라는 추상 메소드가 정의되어 있고, 이것은 Person의 자식 클래스를 사용하는 사용자에게 s..