전체 글31 [Spring] @SLF4J (Simple Logging Facade for Java) 란 무엇인가 사실 로깅은 개발자가 신경써야 할 매우 중요한 파트라고 생각해왔고, 그래서 이번 기회에 Spring Boot 어플리케이션의 로깅에 대한 내용을 한 번 정리해보고자 한다. 정리하기 전에 왜 수많은 자바 서적에서 다루는 java.util.logging 을 실제 웹 어플리케이션에서는 사용하지 않는지 의문이 생겼는데, Why not use java.util.logging? 을 보고 대략적인 이유를 알 수 있었다. @ SLF4J 를 사용했을 때 생기는 일 @Slf4j 는 Lombok에서 제공하는 어노테이션으로, Lombok의 다른 기능들과 마찬가지로 개발자로 하여금 SLF4J를 사용하기 위해 작성해야 하는 코드(Boilerplate code)를 생략할 수 있게끔 해준다. 실제로 어노테이션 내부를 살펴보면, @Sl.. 2022. 10. 10. [JAVA] Atomic 변수와 동시성 제어 (AtomicInteger, AtomicLong, AtomicBoolean, AtomicReference) 얼마 전 코드에서 AtomicInteger 타입으로 선언된 변수를 발견했고, 관련 내용들을 찾아보게 되었다. 이번 글에서는 synchronized에 비해 적은 비용으로 동시성을 제어할 수 있는 Atomic 변수의 특성에 대해 알아보고자 한다. 목차 Atomic 변수란? Java에서 동시성을 제어하기 위한 세 가지 방법 Atomic 변수의 장점 : Compare-and-swap(CAS) Atomic 변수의 주요 메서드와 사용예시 Atomic 변수란? Atomic 변수는 멀티쓰레드 환경에서 동시성을 보장해준다. 흔하게 사용되는 Atomic 변수 클래스로는 AtomicInteger, AtomicLong, AtomicBoolean, AtomicReference 등이 있고, 이들은 atomic하게(동시성을 보장받.. 2022. 9. 19. [Dev] 좋은 API란 무엇일까 - API First Design 원칙 일을 하다가 문득 '좋은 API를 개발하려면 어떤 것들을 신경써야 할까?' 하는 생각이 들었다. 생각해보면 어떻게 하면 좋은 API를 만들 수 있는지를 설명해주는 자료는 본 기억은 거의 없었다. 그래서 구글에 무작정 좋은 API란 무엇일까? 검색해보았다. 목차API First Design의 세가지 원칙1. API는 서비스의 첫 사용자 인터페이스이다.2. API가 먼저이고, 그 다음이 구현이다.3. API는 설명되어야 하고, 어쩌면 그 자체로 설명가능해야 한다.생각정리API First Design의 세가지 원칙이번 글은 Medium에 개재된 Adobe Tech Blog에 있는 Three Principles of API First Design를 번역한 내용을 다뤘습니다. 클라우드 네이티브 어플리케이션을 개발.. 2022. 8. 27. [DB] 하드파싱(Hard parsing)과 소프트파싱(Soft parsing) 그리고 라이브러리 캐시(Library cache) 실제 엔터프라이즈 레벨의 어플리케이션에서는 UNION ALL로 여러번 결합된 복잡한 쿼리를 반복해서 수행해야 하는 일이 생기곤 합니다. 이 때 쿼리 자체의 길이가 길어지면서 해시 알고리즘을 통해 ID 생성에 걸리는 시간이 길어지고, 그럼으로써 파싱에 소요되는 시간까지도 덩달아 길어지는 문제가 생깁니다. 이번 포스팅을 통해 파싱이 무엇이며 어떤 종류가 있는 지와 플랜이 저장되는 라이브러리 캐시에 대해 한번 정리해보고자 합니다. 1. SQL의 특성과 Optimizer 일반적인 프로그래밍 언어와 달리 SQL은 처리 방법(절차)을 기술하지 않습니다. 다시 말해, SQL을 사용하는 개발자는 원하는 데이터만 정의할 뿐, 해당 데이터를 어떻게 찾아와야 할지는 따로 작성하지 않는데요, 아래 SQL 문을 한번 보시죠. .. 2022. 8. 21. [대학원 입시] 서울대학교 컴퓨터공학부 구술고사 후기(22년 전기) 대학원 입시를 준비하며 정보가 너무 없어 어려웠던 기억에 후기를 남겨봅니다. 1. 입시후기 서울대학교 컴터공학부 대학원 입시 과정은 크게 두 단계로 진행되고, [1차] 서류/구술고사 → [2차] 심층구술고사(랩실배정)를 거쳐 최종 합격생이 결정됩니다. 저는 석사전형에 지원했고, 저처럼 합격한 후 2차를 치르지 않는 학생도 고려하여 1차 전형 합격에 조금 여유를 둔 느낌이었으며, 카톡방을 보니 예비 합격 하신 분들도 있는 듯 했습니다. 결과는 구술고사 당일 저녁에 바로 공개됩니다. 서울대학교 입시 전형의 장점은 서류만 제출하면 무조건 구술고사를 보게 해준다는 점이었습니다. 저는 출신 학부와 학점이 좋지 않았기에 이 부분이 큰 메리트 였습니다. 참고로 석박통합과정의 경우 구술고사 경쟁률이 많이 낮았고, 1차.. 2022. 1. 4. [자료구조] 깊이 우선 탐색(DFS, Depth First Search) 이해 및 Python 구현 - CS면접 대비 그래프 G의 한 정점 v 가 주어졌을 때, v에 연결된 모든 정점들을 방문하는 방법으로 깊이우선탐색(DFS)과 너비우선탐색(BFS)가 있다. 이 글에서는 깊이우선탐색(DFS)에 대해 정리해보고자 한다. 깊이 우선 탐색(DFS, Depth First Search) [1] Graph의 정의 먼저, 깊이 우선 탐색은 그래프 자료구조를 탐색하기 위한 방법이자 그래프 자료구조의 대표적인 연산이다. 따라서 그래프 자료구조의 정의부터 살펴보자. 다소 딱딱하게 느껴지겠지만, 전공서적에 있는 정의를 그대로 가져와 써보면 아래와 같다. 그래프 G는 두개의 집합 V와 E로 구성되며 다음과 같이 정의할 수 있다. V(G) : 공집합이 아닌 정점(Vertice)의 유한 집합. E(G) : 정점 쌍들의 집합으로, 이러한 쌍을 간.. 2021. 12. 23. 이전 1 2 3 4 5 6 다음 반응형