본문 바로가기

분류 전체보기210

[선택 과정] Java 기초 - 컴퓨터에서 자료 표현하기 2진수로 표현 0과 1로만 데이터를 저장함 bit(1비트) : 컴퓨터가 표현하는 데이터의 최소 단위로 2진수 하나의 값을 저장할 수 있는 메모리의 크기 byte(바이트) : 1byte = 8bit 2진수와 10진수 2진수와 8진수와 16진수 8비트로 5를 표현해 보면… 부호 비트(MSB) Most Significant Bit 비트로 나타낼 수 있는 수의 범위는? 한 개의 비트로 나타낼 수 있는 수 : 0, 1 (2개) 두 개의 비트로 나타낼 수 있는 수 : 00, 01, 10, 11 (4개) 세 개의 비트로 나타낼 수 있는 수 : 000, 001, 010, 011, 100, 101, 110, 111 (8개) 2진수, 8진수, 16진수를 프로그램에서 사용하는 예제 package ch04; public cl.. 2023. 6. 24.
[선택 과정] Java 기초 - 자바 프로그래밍 시작하기 프로그래밍이란? 프로그래밍 : 컴퓨터가 일을 수행 하도록 프로그래밍 언어로 명령어 집합(프로그램)을 만드는 일 컴파일 : 프로그래밍 언어를 컴퓨터가 실행 가능한 기계어로 만드는 일 컴파일러 : 기계어로 바꾸어 주는 프로그램(ex. 자바 컴파일러, gcc) 자바 프로그래밍 자바의 역사 : 1991년 제임스 고슬링을 비롯한 선 마이크로 시스템스 연구원들이 처음 개발 가전, 휴대용 장치에 사용되는 소프트웨어 언어로 개발됨. 안정성이 중요 자바 프로그래밍의 특징 플랫폼의 영향을 받지 않으므로(플랫폼에 독립적으로 사용가능) 다양한 환경에서 사용할 수 있다. C 소스코드는 각 운영체제마다 가지고 있는 바이트코드(실행파일)이 다르다. 자바 소스코드는 컴파일하면 .class 파일이 생긴다. .class 파일은 완전한 .. 2023. 6. 24.
동시성 제어하기 - 07. 읽기와 쓰기의 트레이드 오프 병목 해소하기 쓰기 지점의 병목은 하나의 레코드를 점유 → 락 대기가 발생 락 대기를 풀고자 테이블 형식으로 분리 → 조회 지점의 병목이 발생 조회 지점의 병목은 카운트로 처리 INSERT 했던 데이터들을 aggregation해서 sum 하기 위해서 매번 카운트 쿼리가 발생 데이터의 성질 확인하기 정합성을 요구하는 데이터인가? 예시) 좋아요수가 0.1초의 딜레이를 가진다고 해서 고객에게 엄청난 손해를 주는 데이터인가? 그렇지 않다. 좋아요 수는 어느 정도의 실시간성만 보장만 된다면 괜찮다. 클라이언트는 웹 서버에 좋아요 누름에 대한 요청을 한다. 웹 서버는 좋아요 테이블에 INSERT를 한다. 조회 시점은 게시물 테이블 컬럼에 캐싱을 해놓는다. 특정 주기를 가진 스케쥴러가 좋아요 테이블을 주기적으로 co.. 2023. 6. 7.
동시성 제어하기 - 04. 낙관적 락 동시성 제어를 위한 가장 보편적인 방법은 락을 통한 줄세우기 → 비관적 락 락을 통한 동시성 제어는 불필요한 대기 상태를 만듦 MySQL에서는 인덱스를 잠그기 때문에 WHERE문 조건에 따라서 불필요한 데이터들이 잠기기도 함 동시성이 빈번하지 않은 쿼리로 인해 다른 쿼리가 대기한다면? 동시성 이슈가 빈번하지 않길 기대하고, 어플리케이션에서 제어한다. → 낙관적 락의 기본 개념 CAS(compare and set) 낙관적 락에서 어떻게 어플리케이션에서 제어하는가? → CAS를 통해 제어한다. 예제를 통해 살펴보자. 예제) 지난 예제와 다른 점은 버전이 추가되었다는 것이다. 낙관적 락에서는 레코드 하나에 대해서 버전을 매긴다. (버전 관리를 통해 내가 조회했던 버전이 맞는지 확인을 하고 맞다면 업데이트를 하.. 2023. 6. 7.