회사에서 발표한 개인 발표 자료를 옮긴 글입니다. GC 기본 개념 GC는 무엇일까? GC란 Garbage를 모으는 작업 방식 혹은 작업을 진행하는 모듈들을 의미하는 용어로 이때 Garbage란 애플리케이션에서 사용되지 않는 Object를 의미합니다. Garbage의 여부는 Root Set 즉 접근 가능한 메모리를 통한 참조 관계로 판단하게 됩니다. GC 수행 목적은 한정된 메모리 공간을 계속해서 정리함으로써 공간을 재활용하고 새로운 객체를 할당받기 위함입니다. GC가 있거나, 없거나..? 차이가 무엇일까? + 2023-12-21 : Un-managed language와 Managed language의 유무는 GC로 결정되는 것이 아닌, 중간 언어 (특정 런타임에게 해석되는 바이트 코드 등의 CIL을 의미..
1월 13일에 Notion에 정리했던 내용을 옮겨 적은 것입니다. 잘못된 내용은 댓글 부탁드립니다. 한동안 회사 일로 공부한 걸 게시할 시간이 없네요.. ㅠ CGI? (Common Gateway Interface) HTTP 프로토콜 기반의 웹 서버와 다양한 언어로 구현된 프로그램 간의 데이터를 교환하는 표준 스펙이자 Interface이다. 일종의 Interface, 스펙이기 때문에 여러 언어로 구현이 가능하다 장점 여러 작업에 대한 많은 템플릿 코드들이 많이 존재한다. 표준 스펙을 준수하는 한 모든 언어와 플랫폼에서 작성될 수 있다. 단점 매 요청이 들어올 때마다 프로세스가 생성되고 각각의 CGI 구현체를 통해 동작한다. 메모리를 공유하는 쓰레드에 비해서 프로세스는 각자의 공간을 지니기 때문에 상대적으로..
해당 글은 Notion에 정리되어 있던 Somaeja 프로젝트 관련 정리 글 중 하나입니다. 이번 프로젝트를 진행할 때 Post Service에 Transcation Read only 설정을 적용하게 되었었다. 단순히 read only를 사용하면 read-write 보다 성능이 더 좋다고 들었기 때문이다. 그러지 마... 하지만 해당 설정에 대하여서 DB마다 동작 방식이 다르다고 하여, 많이 사용되는 DB들을 기준으로 조사해보았다. Oracle Read Only 트랜잭션을 이용할 경우 이 트랜잭션이 시작되기 이전에 커밋된 데이터만 접근할 수 있으며, 트랜잭션 실행되는 동안 커밋되는 데이터는 결과에 반영되지 않는다. 해당 트랜잭션 시에 지원하는 DML은 SELECT(조회) 구문뿐이다. → 해당 트랜잭션 내..
해당 글은 02-RESTful-API-예제-Spring-Framework 에서 작성된 프로젝트를 좀 더 REST 하게 변경하는 과정을 간략하게 담은 글입니다. 이러한 과정을 통해 리처드슨 성숙도 모델의 3 level에 가까운 혹은 만족하는 API를 구현할 수 있습니다. ETag란 무엇인가요? (Entity Tag) HTTP Spec의 일부로써 웹 캐시 유효성 검사를 위해 제공하는 메커니즘 중 하나입니다. 이 방식의 특징으로는 클라이언트가 조건에 따른 요청을 할 수 있게끔 한다는 것입니다. 리소스에 대한 특정 버전 혹은 결과에 대해 ETag를 생성하여 요청을 검증하고, 서버 리소스에서 변경이 발생한다면 ETag를 변경하여 검증을 실패하게 합니다. 이는 새로운 리소스 결과를 클라이언트에 전달하며 ETag 값..
해당 글은 MapStruct Library를 실무에서 사용하기 이전에 학습했던 예제와 장, 단점을 옮겨온 글입니다. (2022-10-26 수정 Benchmark 게시물 링크 추가) 현재 저는 약간의 수고로움을 감수하며 Java Code 기반의 Mapping을 사용하고 있으며, 최대한 Model의 단위를 작게 유지하고 있습니다. 최근 어떤 분께서 ModelMapper가 MapStruct에 비해 그렇게 많이 느리냐는 질문을 보내주셔서, BenchMark 자료 링크를 추가하였는데요. 적은 데이터를 처리하는 경우에는 별 차이가 없지만 처리량이 많아질수록 유의미한 차이가 발생함을 확인할 수 있습니다. 자바 코드로 매핑하기 어떠한 라이브러리를 사용하지 않고 직접 객체 상태 간의 매핑 로직을 구현하는 방식은 약간의 ..
글의 시작 프로그래밍 학습을 시작한 지는 6개월 정도 블로그를 시작한 지는 4개월이 되었다. 일반적인 국비 교육 기간과 비슷한 시간을 공부해왔는데 독학과 멘토링을 통해 학원 수료생들보다 더 많은 것을 학습하였는지 성찰하는 시간을 가져보았다. 개발은 (다른 직업도 그렇겠지만) 평생 학습하여야 하는 것인데, 회사를 다니며, 공부를 지속할 수 있는 다른 방법도 계속해서 고민해보아야겠다. 1만 시간의 법칙은 학원을 다니는 시간, 업무를 진행하는 시간을 제외하고 "본인이 노력, 투자한 시간을 이야기하는 것"이라고 생각한다. 이력서는 지속적으로 개선 중이며, 현재는 따로 관리하고 있다 2020년 회고록을 쓴 이후 있었던 일 2020년 12월 31일 이후에 생각보다 많은 일이 있었다. Somaeja Project (..
제출하지 못했던 10주차까지 완료! 프로세스? 스레드 단위 작업을 지원하기 위한 자원의 할당 단위이며, 커널 위에서 현재 실행 중인 프로그램을 의미한다. 프로세스 안에는 하나 이상의 스레드가 존재한다. 왜 멀티 프로세스 방식을 사용하지 않는가? 프로세스를 이용하여서도 멀티 프로세싱이라고 하는 방법을 이용하여 하나의 작업을 병렬적으로 처리할 수 있다. 하지만 이 방식은 각각의 프로세스가 쉽게 공유되지 않는 자신만의 데이터 영역들을 가지고 있기 때문에 데이터 처리, 공유 방식과 메모리 공간 점유에 대한 문제가 발생한다. 작업을 진행할 때마다 프로세스의 작업 내용이 cpu로 로딩이 된다. 이후 다른 작업을 진행하여야 할 때 기존에 사용하는 것을 내리고 다른 프로세스를 로딩하게 되는데 스레드 방식보다 들어가는 ..
함수형 프로그래밍이란? 순수 함수들을 조합하여 사이드 이펙트(부작용)를 제거하고, 모듈화를 높여 유지보수와 생산성을 올리는데 초점을 둔 패러다임이다. Non Blocking과 Asynchronous , Parallel Programming을 구현, 지원하는데 적합하다고 한다. 함수형 프로그래밍의 사고방식은 문제 해결에 대해 선언적인 행위(함수)들을 조합(구성)하여 해결하는 것이다. 자바도 스칼라, 자바스크립트와 같은 함수형 패러다임 언어 혹은 지원하는 언어, 기술들의 대두로 인하여 JDK 8부터 해당 기능을 도입하게 되었다. 함수형 인터페이스, 람다, 메서드 레퍼런스, 디폴트 메서드, Future, Fork-Join, 리액티브 등 추가 1급 객체 함수형 프로그래밍의 중요한 조건 중 하나를 의미한다. 이는..
Spring DI? Spring DI는 스프링이 내부에 있는 Bean 간의 관계를 관리, 주입할 때 사용하는 기법이다. 스프링 컨테이너를 통해 관리되고 있는 POJO들을 비즈니스 코드에서 필요한 시점에 선택적으로 주입받을 수 있으며 이후 관리는 모두 컨테이너가 담당한다. Singleton Scope Bean DI를 통해 객체 외부에서 생성된 객체(Bean)를 Interface를 통하여 넘겨받게 되므로, 객체 간의 결합도를 낮출 수 있고, 런타임 시에 의존관계가 결정되기 때문에 유연한 구조를 가질 수 있다. 이를 통해 진정한 의미의 컴포넌트화를 가능케한다. DI Annotations @Autowired (AutowiredAnnotationBeanPostProcessor) 우선 빈의 타입을 기준으로 찾아서 ..
Oauth를 사용하는 이유? 사용자의 권한을 인증, 인가하기 위하여 ID와 비밀번호의 직접적인 전달을 하는 것은 탈취될 가능성이 존재한다. 이를 방지하고 안전하게 필요한 정보를 넘겨받기 위해 사용하게 된다. Oauth는 권한 위임을 위해 사용되는 프로토콜이며, 직접적으로 인가를 수행하기보단 요청할 수 있는 흐름과 수단을 제공한다. 웹 또는 모바일에서 개인 정보에 대한 액세스 권한을 요청받은 경우 해당 프로토콜을 사용하였을 것이다. Oauth의 장점 HTTP / HTTPS를 이용해 동작하는 프로토콜이기에 범용적으로 사용할 수 있다. 단순하게 구현할 수 있고, 많은 양의 레퍼런스를 가진다. 스펙이 강제하는 부분이 적고, 선택적으로 제공하거나 자유함으로 필요에 맞게 변경할 수 있는 부분이 많다. Oauth의 ..
- Total
- Today
- Yesterday
- rabbitmq
- lambda
- spring
- cglib
- JPA
- RPC
- configuration
- Global Cache
- java
- Local Cache
- 근황
- AMQP
- 게으른개발자컨퍼런스
- RESTful
- HTTP
- 게으른 개발자 컨퍼런스
- URI
- hypermedia
- 소비자 관점의 api 설계 패턴과 사례 훑어보기
- Data Locality
- mybatis
- spring AOP
- Cache Design
- Distributed Cache
- Url
- Switch
- JDK Dynamic Proxy
- THP
- URN
- JVM
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |