전체 글156 [기타] SpringBoot 환경에서 Swagger 3.0을 적용하는 방법 오늘은 SpringBoot 환경에서 Swagger를 적용하는 방법에 관해서 알아보도록 하겠습니다. 정의 Swagger란 개발자가 REST 웹 서비스를 설계, 빌드, 테스트, 문서화하는 일을 도와주는 오픈 소스 소프트웨어 프레임워크입니다. Spring Boot 3.0 이상 버젼에서는? Spring Boot 3 부터는 별도의 설정 없이, 아래 의존성만 추가해주면 자동으로 설정이 완료됩니다. 설치 후, 서버 구동한 뒤, [URL]/swagger-ui/index.html에서 확인 가능합니다. implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.0.2' Spring Boot 3.0 이하 버젼에서는? (Gradle) Swagger 3.0 기준으로.. 기타 2023. 12. 2. [Blog] 개발 블로그를 시작하는 방법 얼마 전, 블로그 누적 조회수가 10만을 넘었습니다. 3년째 운영해온 입장에서 꽤 상징적이었는데요, 앞으로 더 열심히 글을 적어봐야겠다는 생각이 들며 동시에 어떤 생각으로 운영해왔는지 또 앞으로 어떻게 운영할 것인지 생각을 정리해봤습니다. 저보다 이미 좋은 성과를 거두고 계시고, 더 오랫동안 블로그를 운영해오고 계신 분들은 이 글이 큰 도움이 되진 않으실 것 같습니다. 재미로 봐주시는 건 환영입니다. 기술 블로그를 운영하게 된 계기 먼저 이렇게 묻고 싶습니다. 개발자인 우리는 왜 글을 써야 할까요? 그에 대한 답을 이 영상으로 갈음하고 싶습니다. https://www.youtube.com/watch?v=V9AGvwPmnZU&ab_channel=EO%EC%9D%B4%EC%98%A4 저는 개발자를 시작할 때.. 생각정리 2023. 11. 28. [Alogorithm] 알고리즘 공부를 시작하는 올바른 방법 본 글은 알고리즘을 이제 막 공부하기 시작한 분들에게 적합한 글입니다. 이제 막 알고리즘에 눈 뜬 입장에서, 처음 알고리즘을 접하는 분들께 드리는 조언을 담아보았습니다. 저보다 알고리즘에 대해 잘하고 자신 있으신 분들은 이 글이 큰 도움이 되진 않으실 것 같습니다. 재미로 봐주시는 건 환영입니다. 나의 코딩테스트 실패 경험은 현재 진행형 코딩테스트, 알고리즘.. 항상 도전과 이직의 발목을 잡았던 것은 코딩 테스트였다. 처음 제대로 된 알고리즘 테스트를 본 건, 2022년 봄이었다. 프론트엔드 개발자로서 첫 취업하기 전에도 본 적은 있지만, 코딩테스트를 보는 회사에 합격한 것은 아니었으니까. 창업에 관심이 많던 나는 소프트웨어 마에스트로 과정에 지원했지만, 코딩 테스트라는 허들 앞에 좌절했다. 그 때 당시.. 생각정리/회고 2023. 11. 27. [자료구조] 헷갈리는 트리 종류 정리 이진 트리 (Binary Tree) 이진트리는 각각의 노드가 최대 두 개의 자식 노드를 가지는 트리 자료구조입니다. 이진트리에는 여러 종류가 있습니다. 정이진트리(Full binary tree), 포화이진트리(Perfect binary tree), 완전이진트리(Complete binary tree), 균형이진트리(Balanced binary tree), 이진 탐색 트리 (Binary Search Tree), 균형 이진 트리, AVL Tree 등이 있습니다. 이 중에서도 이진 탐색 트리, 균형 이진 트리, 균형 이진 탐색 트리, AVL Tree에 관해 알아보도록 하겠습니다. 이진 탐색 트리 (Binary Search Tree) 이진 트리 기반의 탐색을 위한 자료구조입니다. 특성으로는 모든 원소의 키는 유일.. CS/자료구조 2023. 10. 30. [MySQL] MVCC(Multi Version Concurrency Control)란 학습해야 하는 이유 MVCC를 이해해야 트랜잭션 격리 수준에 따른 MySQL 내부 동작 원리에 대해서 알 수 있기 때문입니다. MVCC를 이해하기 위해선, Undo Log에 대해 알아야 합니다. 또 Undo Log와 헷갈릴 수 있는 Redo Log에 대해서도 알아봅시다. Redo Log와 Undo Log는 MySQL 스토리지 엔진 내에 존재하는 데이터 영역입니다. Redo Log 정의 DDL 또는 DML 문장에 의해 데이터베이스에 저장된 값 또는 테이더베이스 구조에 변경사항이 생기는 경우 변경 정보를 보관하는 메모리 영역입니다. Redo Log가 필요한 이유 기본적으로 DB에서 데이터 변경 작업은 부하가 큰 작업입니다. 많은 경우 변경 대상인 데이터가 순차적으로 위치하지 않고 디스크에 랜덤하게 존재하기 .. DB/MySQL 2023. 10. 28. [OS] 동기와 비동기, 블록과 논블럭의 차이 오늘은 동기, 비동기 그리고 블록과 논블록의 차이점에 대해서 알아보도록 하겠습니다. 동기와 비동기의 차이 동기 (synchronous) 정의 요청에 대해 결과값을 기다렸다 처리하는 것을 말합니다. 여기서 요청이란 API, 함수에 대한 호출을 말합니다. 장점 설계가 매우 간단하고 직관적이다. 단점 결과가 주어질 때까지 기다려야 하므로, 여러 요청들을 빠르게 처리할 수 없다. 비동기 (asynchronous) 정의 요청의 결과값을 기다리지 않고 처리하는 것을 말합니다. 장점 요청을 보낸 직후, 바로 다른 작업을 수행할 수 있습니다. 단점 동기식보다 설계가 복잡합니다. 블록과 논블록의 차이 블록 (block) 특징 동기에서 파생된 개념입니다. 정의 동기로 처리될 때, 응답을 대기해야 합니다. 이 때, 쓰레드에.. CS/OS 2023. 10. 16. [Java] 모듈 결합도와 응집도 오늘은 모듈 결합도와 응집도 개념과 객체 지향 프로그래밍의 5가지 원칙인 SOLID에 간략하게 알아보겠습니다. SOLID 원칙 우리가 SOLID를 알아야 하는 이유 먼저, SOLID은 객체 지향 프로그래밍 원칙입니다. 설계 원칙을 모른다고 자바 프로그래밍을 할 수 없는 것은 아닙니다. 충분히 자바 프로그래머로서 일을 할 수 있습니다. 그럼에도 우리가 이를 학습해야 하는 이유는 무엇일까요? 결론부터 말씀 드리면, SOLID 원칙은 객체 지향 프로그랭을 할 때 발생될 수 있는 문제들을 해결하기 위한 검증된 프로그래밍 방법론이기 때문입니다. 비록 이러한 문제들을 직접 마주한 경험이 없더라도, SOLID 원칙을 학습하면서 개발하며 발생할 수 있는 문제에 대해 미리 알게 되고 그에 대한 해결책까지 알 수 있습니다.. Language/Java 2023. 10. 11. [Python] Python에서 정렬하는 방법 (sort, sorted, heapq) 파이썬으로 코딩 테스트 문제를 풀다보면, 다양한 상황에서 정렬을 활용해야 합니다. 문제를 손쉽게 풀 수 있도록 도와줬던 sort/sorted 함수 활용 방법에 관해 알아보겠습니다. sort 함수를 활용한 정렬 방법 이용하기 내장함수 리스트.sort 함수 사용 혹은 sorted(리스트) 함수 사용하면 쉽게 정렬할 수 있습니다. 두 함수 간 차이점은 전자는 원본 리스트에 수정이 일어나고, 후자는 수정이 일어나지 않는다는 점입니다. 또한 기본적으로 오름차순으로 정렬됩니다. numbers = [5, 3, 2, 3] numbers.sort() # None 값 리턴 print(numbers) # [2, 3, 3, 5] (원본 배열이 변경됨) new_numbers = sorted(numbers) # 새로운 배열 리턴.. Language/Python 2023. 10. 11. [Java] 동기화란 무엇인가? (1) 상호배제 동기화 방법 (자바에선 멀티 스레드 환경에서 어떻게 동기화를 할까?) 멀티 스레드 혹은 멀티 프로세스 환경에서 동기화를 보장하려면, 실행 순서 제어와 상호 배제가 필요합니다. 실행 순서 제어란 공유 자원에 대한 작업이 순서대로 작업되도록 보장하는 것입니다. 상호 배제란 동시에 접근해서는 안되는 자원(공유 자원)에 하나만 접근하도록 보장하는 것입니다. 자바에선 동기화를 보장하기 위해, 모니터 인터페이스를 제공합니다. 모니터는 프로그래밍 언어 수준에서 동기화를 지원합니다. 자바의 각 객체는 모니터 락을 소유하고 있으며, 각 스레드는 이 모니터 락을 잠그거나 해제할 수 있습니다. 한 번에 하나의 스레드만이 모니터의 잠금을 유지할 수 있습니다. 해당 모니터를 잠그려는 다른 스레드는 해당 모니터에서 잠금을 얻을 .. Language/Java 2023. 10. 3. [Spring] IoC와 DI란 무엇인가? 제어의 역전 (IoC, Inversion of Control) 개발자가 작성한 객체나 메서드의 제어를 개발자가 아니라 외부(프레임워크)에 위임하는 설계 원칙을 제어의 역전이라고 한다. 관련 용어 빈 (Spring Bean) 스프링이 IoC 방식으로 관리하는 오브젝트를 뜻한다. 자바 빈과 구분 짓기 위해, 스프링 빈이라고도 부른다. 참고로 스프링 내 모든 오브젝트가 전부 빈이 아니다. 그 중에서 스프링이 직접 그 생성과 제어를 담당하는 오브젝트만을 빈이라고 부른다. 빈 팩토리 (Bean Factory) 스프링의 IoC를 담당하는 핵심 컨테이너를 말한다. 스프링 컨테이너의 최상위 인터페이스로, 스프링 빈을 관리하고 조회하는 역할을 담당한다. 대표적으로 getBean() 메소드를 제공한다. 애플리케이션 컨텍스.. Framework/Spring 2023. 9. 26. [Spring] Spring 프레임워크란 무엇인가? 서론 오늘은 자바 백엔드 진영의 대표적인 프레임워크인 스프링에 대해서 알아보도록 하겠습니다. 본론 스프링의 어원과 탄생 배경 스프링(Spring)이란 영어로 봄을 말합니다. 왜 봄이라고 이름을 지었을까요? 스프링 프레임워크가 등장하기 전인 2000년대 초로 돌아가보면, EJB(Enterprise Java Beans)라는 자바 기업용 애플리케이션 프레임워크를 활용하여 어플리케이션 개발을 했습니다. EJB는 당시 자바의 표준이었죠. 하지만 너무 무겁고 복잡하고 비효율적이었습니다. 이에 불만을 느낀 로드 존슨이란 개발자가 EJB 없이도 고품질의 애플리케이션을 만들 수 있다는 것을 "Expert One-on-One J2EE Design and Development"란 책을 통해 증명해냅니다. 로드 존슨은 순수한.. Framework/Spring 2023. 9. 22. [Java] JVM의 동작 원리 (부제 : Java를 처음 공부하는 당신에게) 들어가기에 앞서 먼저, 질문을 먼저 드릴게요. 여러분은 코딩을 잘하고 싶으신가요? 저 역시 정말 코딩을 잘하고 싶은 사람 중 하나인데요, 여러분은 코딩을 하는 이유가 무엇인가요? 저는 코딩을 하는 이유는 문제해결이라고 생각해요. 그렇다면 코딩을 잘하기 위해선, 어떻게 해야 할까요? 바로 사용하는 프로그래밍 언어의 탄생 배경과 동작 원리를 이해해야 한다고 생각해요! 이번 글은 자바를 새롭게 학습하시는 분들을 위한 글을 작성해봤어요. 사실 이 글은 자바에 관해 잘 알지 못하는 제 자신을 위한 글이기도 해요! 만약 독자 분들께서 비슷한 생각이 드신다면, 이번 글을 통해서 저와 함께 자바란 프로그래밍 언어에 대한 이해를 높여봐요! Java의 탄생 배경 먼저, 결론부터 이야기할게요. Java는 1991년 썬 마이.. Language/Java 2023. 9. 22. 이전 1 2 3 4 5 6 ··· 13 다음 반응형