분류 전체보기180 [Kotlin] 코루틴(Coroutines)에 대해서 알아보자 [Language/Java] - [Kotlin] 자바와 코틀린의 공통점과 차이점블로그엔 자주 안올렸지만 요새 코틀린 공부를 열심히 하고 있습니다. 지난번에는 자바와 코틀린의 공통점과 차이점에 대해서 알아보았습니다. 기본 문법은 자바스크립트와 문법적으로 유사한 부분이 있어, 금방 이해되는 부분이 많았지만 코루틴부터는 제대로 공부하지 않으면 안될 것 같아, 블로그에 열심히 정리하도록 하겠습니다.공식 라이브러리Kotlin CoroutinesKotlin SerializationKotlin Lincheck먼저, 코루틴을 사용하려면 별도의 라이브러리를 설치해야 합니다. (아래 버전은 예시입니다)implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.1".. Language/Java & Kotlin 2024. 6. 14. [Java] 여러 개의 Java 버전이 설치되어 있을 때, Java 버전을 자동으로 변경하는 방법 여러 개의 Java 버전이 설치되어 있을 때, Java 버전을 자동으로 변경하는 방법 중 하나는 SDKMAN을 사용하는 것입니다.방법 1: SDKMANSDKMAN은 여러 버전의 SDK(Software Development Kit)를 관리하는 도구입니다. 다음은 SDKMAN을 사용하는 방법입니다:SDKMAN 설치curl -s "https://get.sdkman.io" | bash source "$HOME/.sdkman/bin/sdkman-init.sh"설치 가능한 자바 버젼 검색 sdk list javaSDKMAN을 통해 Java 설치: SDKMAN을 사용하여 여러 Java 버전을 설치할 수 있습니다. 예를 들어, Java 21과 Java 17을 설치하려면 다음 명령어를 사용합니다:sdk install j.. Language/Java & Kotlin 2024. 6. 4. [Kotlin] 자바와 코틀린의 공통점과 차이점 오늘의 질문자바와 코틀린의 공통점과 차이점요약공통점: JVM에서 실행, 객체 지향 프로그래밍, 풍부한 표준 라이브러리, 안드로이드 개발, 비동기 프로그래밍 지원.차이점: 언어의 간결성, null 안정성, 확장 함수, 코루틴, 데이터 클래스.적용할 점데이터 클래스 관련 : 앞으로 DTO는 Record로 만들어 불필요한 롬복 어노테이션을 제거해보자.공통점JVM에서 실행: 두 언어 모두 JVM에서 실행되어, 동일한 바이트코드로 컴파일됩니다. 이는 자바와 코틀린 코드를 동일한 프로젝트에서 사용할 수 있게 해줍니다.객체 지향 프로그래밍 지원: 두 언어 모두 객체 지향 프로그래밍 패러다임을 지원하며, 클래스, 상속, 인터페이스 등을 사용할 수 있습니다.풍부한 표준 라이브러리: 자바와 코틀린 모두 광범위한 표준 라이.. Language/Java & Kotlin 2024. 5. 26. [MySQL] Online DDL 활용 방법 문제상황MySQL에서 90만 건이 넘는 데이터가 적재된 테이블에 칼럼을 추가하려고 했다. 보통 데이터가 많지 않으면 1초 이내로 완료된다. 그런데, 데이터 양이 많아서 DDL 반영까지 10분 가량 시간이 소요됐다. 문제는 그 동안, 테이블에 락이 걸려, 테이블에 대한 쓰기 작업이 일시적으로 중단되는 현상이 발생됐다.락이 걸리는 이유락이 걸리는 이유는 뭘까? 데이터 일관성을 보장하기 위함이다. 테이블의 스키마를 변경하는 작업은 데이터베이스의 구조를 수정하는 것으로, 이 과정에서 테이블에 대한 읽기 및 쓰기 작업을 일시적으로 중지하여 데이터 일관성을 유지한다.스키마 변경 작업이 완료될 때까지 다른 작업들이 해당 테이블에 접근하지 못하도록 하는 것이다. 이는 동시성 문제를 방지하고 데이터베이스의 일관성을 보장.. DB/MySQL 2024. 5. 6. [대규모 시스템 설계 기초 2] 11장. 결제 시스템 파헤치기 오늘은 가상면접사례로 배우는 대규모 시스템 설계 기초 2의 11장 결제시스템의 내용을 어제에 이어 읽고 정리해봤습니다. 본 설계안에서는 하루 총 100만 건의 트랜잭션과 초당 10건의 트랜잭션(TPS)가 처리되며 결제 트랜잭션의 정확한 처리에 초점을 맞췄다.문제 이해 및 설계 범위 확정아마존닷컴과 같은 전자상거래 애플리케이션을 위한 결제 백엔드를 구축한다고 가정한다. 전 세계적으로 사용될 수 있는 애플리케이션이며, 하나의 통화만 사용한다고 가정한다.기능 요구사항대금 수신 : 결제 시스템이 판매자를 대신하여 고객으로부터 대금을 수령한다.대금 정산 : 결제 시스템이 전 세계의 판매자에게 제품 판매 대금을 송금한다.비기능 요구사항신뢰성 및 내결함성 : 결제 실패는 신중하게 처리해야 한다.내부 서비스와 외부 서.. CS/기타 2024. 4. 26. [대규모 시스템 설계 기초 2] 7장. 호텔 예약 시스템 파헤치기 이론들어가기 앞서오늘은 가상면접사례로 배우는 대규모 시스템 설계 기초 2의 7장 호텔 예약 시스템의 내용을 읽고 정리해봤습니다. 호텔 예약 시스템은 해당 내용을 바탕으로 회사 강의 결제 시스템 에 녹여낼 수 있는 부분이 많아보였습니다. 또한 사내 운영 개선 업무를 하면서 적용했던 부분과 연관되는 부분들이 많아 흥미로웠습니다.요구사항 분석5000개의 호텔에 100만 개 객실을 갖춘 호텔 체인을 위한 웹사이트를 구축하라.결제는 예약 시, 전부 진행한다.결제는 호텔 웹사이트 혹은 앱에서만 가능하다.10% 초과 예약이 가능해야 한다.객실 가격은 그날 상황에 따라 유동적이어야 한다.비기능 요구사항높은 수준의 동시성 지원 : 성수기, 대규모 이벤트 기간에 고객이 많이 몰릴 때, 동시성 이슈를.. CS/기타 2024. 4. 23. Redis에 대해 알아보자 (자료구조, Cache) 개요 쿠팡에서 모든 상품이 품절 표시되는 문제가 발생하였다. 레디스 DB 때문이란 발표가 있었다. https://www.digitaltoday.co.kr/news/articleView.html?idxno=212904 Redis(Remote Dictionary Server) Remote : 외부 Dictionary : Key-Value 형태 값 저장소 Server : 서버 Database, Cache, Message Broker로도 사용할 수 있다. In-memory Data Structure Store Supports rich data structures Redis 자료구조 비교군인 Memcached에선 Collection을 제공함. String, Lists, Sets, Sorted Sets, Hashe.. CS/기타 2024. 4. 14. [Spring] 팩토리메서드 패턴 적용해서 확장성 높은 코드 만드는 법 문제상황 게시판 목록 조회 API 게시판 유형 별로 다른 테이블을 조회해야 했다. API를 각각 분리하거나, 하나의 게시판 조회 API에서 Type에 따라 if/else 분기에 따라 다른 요소를 조회해야 했다. 예) 일반게시글, 비밀게시글, 인기글A, 인기글B 기존 레거시 시스템에서는 이러한 유형의 데이터들을 if/else로 Service 레이어에서 각각 다른 Repository (여기선 Mapper)를 사용해서 로직을 처리하였다. @Service @RequiredArgsConstructor public class CommunityBoardService { private final CommunityContentsFactoryService communityContentsFactoryService; @Tra.. Framework/Spring 2024. 3. 7. [기타] Mac에서 CLI로 IntelliJ 실행하는 법 순서 /usr/local/bin/idea 파일 생성한다. 해당 파일에 대한 쓰기 권한을 부여한다. chomod 777 /usr/local/bin/idea chomod 777 을 입력하여, 모든 사용자에 대해 r/w/x (읽기, 쓰기, 실행)이 가능하도록 허용한다. 해당 파일에 아래와 같이 내용을 수정 후 저장한다. open -na "IntelliJ IDEA.app" 실행하려는 디렉토리로 이동한다. 잘 수행 되는지 실행해본다. idea . 잘된다. 레퍼런스 https://www.jetbrains.com/help/idea/2023.3/working-with-the-ide-features-from-command-line.html#toolbox 기타 2024. 2. 24. [소프트웨어 아키텍처 101] 챕터 12. 마이크로커널 아키텍처 스타일 마이크로커널 아키텍처 스타일 이미 수십 년 전에 만들어진 마이크로커널 아키텍처(microkernel architecture, 플러그인 아키텍처라고도 함)는 오늘날에도 널리 쓰이고 있다. 이 아키텍처 스타일은 (단일 모놀리식 배포 단위로 패키징해서 다운로드 및 설치가 가능하며, 보통 고객 사이트에서 서드파티 제품으로 설치되는) 제품 기반 애플리케이션에 적합하며, 비제품 고객 비지니스 애플리케이션에도 많이 사용된다. 12.1 토폴로지 마이크로커널 아키텍처 스타일은 코어 시스템(core system)과 플러그인 컴포넌트(plug-in component)라는 두 가지 아키텍처 요소로 구성된 비교적 단순한 모놀리식 아키텍처이다. 애플리케이션 로직은 독립적인 플러그인 컴포넌트와 기본 코어 시스템에 골고루 분산되어 .. CS/기타 2024. 2. 12. [소프트웨어 아키텍처 101] 챕터 11. 파이프라인 아키텍처 스타일 파이프라인 아키텍처 파이프라인 아키텍처(pipeline architecture, 파이프와 필터 아키텍처라고도 함)는 소프트웨어 아키텍처에서 끊임없이 등장하는 기본적인 아키텍처 스타일입니다. 개발자와 아키텍트가 기능을 개별 파트로 분리하기로 결정하는 순간부터 이 패턴이 수반된다. 함수형 언어 개발자는 언어 구조와 이 아키텍처 요소가 유사하다고 생각할 것이다. 사실, 맵리듀스(MapReduce) 프로그래밍 모델을 응용한 많은 도구가 이 기본 토폴로지를 따릅니다. 이처럼 파이프라인 아키텍처 스타일은 저수준에서 구현할 수도 있고 고수준의 비지니스 애플리케이션에도 적용할 수 있다. 11.1 토폴로지 파이프라인 아키텍처는 다수의 파이프와 필터로 구성된다. 파이프와 필터는 특정한 방식으로 조정되며, 보통 필터 간 단.. CS/기타 2024. 2. 12. [소프트웨어 아키텍처 101] 챕터 10. 레이어드 아키텍처 스타일 레이어드 아키텍처 스타일 레이어드 아키텍처(layered architecture, n티어(n-tiered) 아키텍처)는 가장 흔한 아키텍처 스타일 중 하나이다. 단순하고 대중적이면서 비용도 적게 들어 모든 애플리케이션의 사실상 표준 아키텍처이다. 시스템을 설계하는 조직은 그 조직의 소통 구조를 그대로 복제한 듯 설계할 수밖에 없다는 **콘웨이의 법칙**을 떠올려보면, 레이어드 아키텍처는 애플리케이션을 개발하는 아주 자연스러운 방법이다. 그러나 레이어드 아키텍처 스타일은 묵시적 아키텍처 안티패턴, 우발적 아키텍처 안티패턴 등의 몇몇 아키텍처 안티패턴의 범주에 속한다. 10.1 토폴로지 레이어드 아키텍처에서 내부 컴포넌트는 논리적으로 수평한 레이어들로 구성되며, 각 레이어는 애플리케이션에서 주어진 역할을 수.. CS/기타 2024. 2. 12. 이전 1 2 3 4 5 6 ··· 15 다음 반응형