일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- RESAPI
- KPT
- 미니미프로젝트
- 부모객체
- Spring/JAVA 서적
- Solid
- TDD
- Self Descript Message
- 스프링으로하는마이크로서비스구축
- pair programming
- Be
- docker
- DB
- Execution Engine
- testdrivendevelopment
- 완벽이해
- Java 22
- 클린코드
- hateoas
- M:N
- 도커
- 마이크로서비스디자인패턴
- ATDD
- 트랜잭션 격리 수준
- java
- GC
- ComponentScan
- Runtime Area
- G1GC
- 자식객체
- Today
- Total
목록CS 공부 (14)
Programming Summary
build.gradle이란?build.gradle은 공식 문서에 다음과 같이 써져있다.Gradle Build Tool is a fast, dependable, and adaptable open-source build automation tool with an elegant and extensible declarative build language.Gradle 빌드 도구는 우아하고 확장 가능한 선언적 빌드 언어를 갖춘 빠르고 신뢰할 수 있으며 적응력 있는 오픈 소스 빌드 자동화 도구입니다...라고 한다. 요점은 빌드 자동화 도구라는 것이다.Gradle 핵심 개념다음은 Gradle Core 구조도이다.프로젝트(Project)Gradle의 프로젝트는 애플리케이션이나 라이브러리와 같이 빌드할 수 있는 소프트웨어..
스프링은 프레임워크가 맞을까?아무도 스프링이 프레임워크가 아니다라고 한 적이 없는데 왠 쌩뚱 맞은 질문인가 할 수 있다. 하지만 프레임워크의 정의에 대해 한번 더 살펴보고 스프링은 이에 해당하는가를 고민하는 것에 의의가 있다고 생각한다.프레임워크란?프레임워크란 무엇인가? 제어의 흐름을 스스로 주도하는 구현체들의 집합을 의미한다. 즉, IOC(Inversion Of Control)를 제공하면 프레임워크라고 할 수 있겠다.스프링에서 IOC를 제공해주는 것은?@Component다음 내용은 Spring Wiki에서 @Component에 관해 정의된 내용이다.@Component is a generic stereotype for any Spring-managed component. Any component anno..
클린 코드(Clean Code)란? 클린 코드란 무엇일까? Wiktionary에는 다음과 같이 정의 되어 있다. Non-redundant software code comprising of focused task-specific modules and functions, written in a systematic manner so that another coder can easily interpret or modify it.다른 코더가 쉽게 해석하거나 수정할 수 있도록 체계적으로 작성된, 특정 작업에 초점을 맞춘 모듈과 함수들로 구성된 비중복 소프트웨어 코드.쉽게 말하면, 모두가 봐도 쉽게 이해할 수 있는 코드를 뜻한다.왜 클린 코드를 해야 할까?위 그림을 보면 나쁜 코드의 경우, 초반에 빠르게 개발 될지라..
Rest API란?Rest란 REpresentational State Transfer의 약자로 해석해보자면 Representation 상태를 전송한다는 것이다. 음.. 무슨 말인지 모르겠다. 찾아보니 Representation이란 어떤 리소스의 특정 시점의 상태를 반영하고 있는 정보이며, Representation Data와 Representation MetaData로 구성된다고 한다.또한 REST는 위키 백과에 다음과 같이 나와있다.REST는 월드 와이드 웹과 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 아키텍쳐의 한 형식이다. 이를 조금 더 풀어서 설명해보자. REST API란 REST 아키텍쳐 스타일을 따르는 API이다. REST 아키텍쳐 스타일이란 분산 하이퍼미디어 시스템(대표적으로 WEB)을..
MVC란?MVC란 무엇일까? MVC는 Model, View, Controller의 줄임말이다. 다음 그림을 살펴보자.사용자가 서비스를 이용할 때 가장 먼저 마주치는 부분은 View이다. 사용자는 이 View를 통해 서비스를 보고, 사용할 수 있다. 하지만 View를 구성하기 위해 데이터가 필요하다. 이러한 데이터를 조회하고, 수정하고, 생성하고, 삭제하기 위해 View(사용자)는 Controller에게 부탁한다. Controller는 이러한 요청을 Model을 통해 처리하고 View에 다시 전달한다.이를 정리하면 다음과 같다.- Model : 비지니스 로직을 담당하는 부분- View : 화면 랜더링과 사용자와의 상호작용을 담당하는 부분- Controller : View와 Model 간의 통신,..
들어가기에 앞서 용어 정리 Chunk : 보통 메모리 할당 및 해제를 위한 블록 HeapWord : heap의 최소 단위 ArchiveRegion : GC 시작시 초기화된 Region SafePoint : 다른 vm thread의 동작이 정지된 상황. STW가 발생함. Mutator : 가비지 컬렉션을 수행하는 스레드가 아닌, 일반적인 응용 프로그램 코드 Collector : 메모리 관리를 위해 가비지를 식별하고 회수하는 스레드 OOP : Ordinary Object Pointer의 약자로, JVM에서 객체를 가리키는 포인터 참조 종류 강한 참조(strong reference): 객체를 참조하는 것으로, 참조하는 동안 가비지 컬렉션의 대상이 되지 않음. 일반적인 객체 참조는 이 유형에 해당 소프트 참조(..
결론 : 인터넷 경계 로드 밸런서는 물리적으로 Subnet 안에 있는 것으로 추론했다. 로드밸런서는 어디에 있을까?들어가기 앞서 밑에 다룬 모든 내용은 모두 AWS의 인터넷경계 로드밸런서를 기본으로 한 내용임을 알린다. 다음의 AWS 아키텍처를 살펴보자.해당 아키텍처에는 LB가 VPC 안에 있는 것으로 확인된다. 또한 ALB가 인터넷 게이트웨이와 직접 연결되고 이를 분산해주는 일종의 Bastion(NAT) Node로 보이기도 한다. 필자 역시 부트캠프 수업을 통해 어느 Subnet에 국한되지 않고 VPC 안에 있는 것으로 학습을 하였다. 근데 VPC 안에 있다면 설명이 안되는 부분들이 있다. 다음은 인터넷 경계 ALB를 생성할 때 private subnet을 매핑하려 시도하면 나타나는 문구이다.선택한 서..
1) GC란 무엇일까?GC의 정의자바의 언어적인 특성은 어떤게 있을까? 객체 지향, JVM, 그리고 GC가 보통 많이 언급된다. GC(Garbage Collector)는 메모리 관리 기법 중의 하나로, 프로그램이 동적으로 할당했던 메모리의 힙 영역 중에서 필요없게 된 영역을 해제하는 기능이다. GC를 통해 통해 프로그래머는 동적으로 할당한 메모리 영역 전체를 완벽하게 관리하지 않아도 되며, 메모리 누수나 유효하지 않은 포인터 접근에 대한 문제점을 막을 수 있다. 이러한 GC를 사용하는 언어로 자바, Python, Perl 등을 예시로 들 수 있다.힙 영역의 구성위 그림은 JDK 1.8이후 힙 메모리 구조이다. 크게 Young Generation과 Old Generation, 그리고 Meta Space로 ..
트랜잭션의 격리 수준(Transaction Isolation Level) 트랜잭션의 격리 수준이란 여러 트랜잭션이 동시에 처리될 때, 특정 트랜잭션이 다른 트랜잭션에서 변경하거나 조회하는 데이터를 볼 수 있게 허용할지 여부를 결정하는 것이다. 격리 수준이 높은 순서대로 SERIALIZABLE, REPEATABLE READ, READ COMMITTED, READ UNCOMMITED가 존재한다. SERIALIZABLE SERIALIZABLE은 가장 엄격한 격리 수준으로, 이름 그대로 여러 트랜잭션이 동일한 레코드에 동시 접근할 수 없으므로, 어떠한 데이터 부정합 문제도 발생하지 않는다. 하지만 모든 트랜잭션이 순차적으로 처리되어야 하므로 동시 처리 성능이 매우 떨어진다. REPEATABLE READ 일반적인..
동시성 제어(Concurrency Control)이란? 동시성 제어란 DBMS가 다수의 사용자 사이에서 동시에 작용하는 다중 트랜잭션의 상호간섭 작용에서 DB를 보호하는 것을 의미한다. 일반적으로 DBMS는 동시성 제어를 할 수 있도록 Lock 기능과 Set Transaction 명령어를 이용해 트랜잭션 격리성 수준을 조정할 수 있는 기능도 제공한다. 이렇게 동시성을 제어하는 방법은 낙관적 동시성 제어와 비관적 동시성 제어가 있다. 낙관적 동시성 제어(Optimistic Concurrency Control) 사용자들이 같은 데이터를 동시에 수정하지 않을 것이라고 가정 데이터를 읽는 시점에 Lock을 걸지 않는 대신 수정 시점에 값이 변경되었는지를 반드시 검사 비관적 동시성 제어(Pessimistic Co..