트랜잭션이란 작업의 완전성을 보장해 주는 것이다. 하나의 논리적인 작업을 모두 완전하게 처리하거나 처리하지 못할 때 원 상태로 복구하여 일부만 적용되는 현상을 만들어주지 않게 한다.아래는 트랜잭션과 관련해서 헷갈릴 수 있는 개념이다.잠금(Lock)은 동시성을 제어하기
MySQL 서버는 사람의 머리 역할을 하는 MySQL 엔진과 손발 역할을 담당하는 스토리지 엔진으로 구분한다. 스토리지 엔진은 핸들러 API를 이용해 MySQL 엔진과 데이터를 주고 받는다.클라이언트(JDBC, ODBC, ...)와 MySQL 서버 간 연결을 관리하는
전체 코드 링크:특정 경쟁 조건을 만족 시키기 위해 sleep으로 조정한 코드가 있습니다. 운영체제, 컴퓨터 사양, 실행 상태 등에 따라 쓰레드 스케줄링이 달라 다르결과가 나올 수 있는 점 참고해 주세요.변수나 자료구조 같은 공유 자원에 접근하는 코드의 일부분여러 쓰레
아래 명령어를 통해 redis-cli 에 접근할 수 있다.docker run --name my-redis -d -p 6379:6379 redisdocker exec -it my-redis redis-cli —-raw스프링 부트 2.X 부터는 lettuce를 기본 클라이
Apache에서 제공하는 성능 테스트 도구로, 오픈소스 프로젝트다.어떤 기술을 도입하기 전에 해당 기술이 왜 필요한지, 해당 기술로 인해 어떠한 개선이 있는지 정량적으로 말할 수 있어야 한다. ex) 레디스를 왜 도입하셨나요?빠르다고 해서요(X)빨라서요(X) -> 얼마
빌더 패턴이란 객체의 생성 과정을 별도의 빌더 객체로 분리하여 유연하게, 단계별로 객체를 생성할 수 있게 하는 패턴이다.객체를 생성할 때 초기화할 필드가 많으면 생성자 매개변수가 많아져 가독성이 떨어진다. 심지어 같은 타입의 필드를 초기화할 때 다른 생성자를 실수로 호
커맨드 패턴이란 요청을 객체의 형태로 캡슐화하여 사용자가 보낸 요청을 나중에 이용할 수 있도록 매서드 이름, 매개변수 등 요청에 필요한 정보를 저장 또는 로깅, 취소할 수 있게 하는 패턴이라고 한다. (위키백과)쉽게 말해, 실행할 작업(명령)을 객체로 만들어 호출자와
객체의 상태 변화를 관찰하는 관찰자들, 즉 옵저버들의 목록을 객체에 등록하여 상태 변화가 있을 때마다 메서드 등을 통해 객체가 직접 목록의 각 옵저버에게 통지하도록 하는 디자인 패턴이다. (위키 백과)잘 와닿지 않는다. 간단한 빙고 게임을 생각해보자. 심판(Refere
name에 index가 걸려있다면 full scan보다 더 빨리 데이터를 찾아낼 수 있다. 인덱스는 빠르게 조회, 정렬(order by)하거나 그룹핑(group by)하기 위해 사용한다.만약 인덱스가
로드 밸런싱이란? 로드(부하)를 밸런싱(균형, 분산)하는 것을 말한다. 쉽게 말해, 클라이언트 요청이 많아져 서버에 부하가 많아질 때 요청들을 여러 서버에 균형있게 분산시켜 각 서버가 원활히 동작하도록 한다. Scale Up과 Scale Out 사용자 요청이 급격
MSA(MicroService Architecture) 기존 Monolithic Archiecture 모놀리식 구조란 소프트웨어를 하나의 시스템으로 구축하여 개발하는 방식을 말한다. 하나의 시스템에 모든 설정과 비즈니스 로직이 포함된다. 간단한 프로젝트에는 적
JDBC는 자바 코드로 데이터베이스와 직접 통신하는 저수준 API를 말한다.아래 코드처럼 스프링 프레임워크 없이도, Database와 통신할 수 있다.JDBC를 사용하며 개발하던 시기는 거의 20년 전이라고 한다. 현재는 Mybatis 또는 Spring JPA를 통해
배치란 주기적으로 의 반복적인 데이터 작업을 처리하기 위해 사용하는 방식 배치가 필요한 상황은 대량의 집계 데이터 생성(ex: 월별 매출, 월별 환불액, 한 달 동안 신규 회원 수, 월간 상품별 판매량 …) DB에 있는 대량의 데이터를 백업 용도로 새로운 서버
Programmers Lv3, 가장 긴 팰린드롬 입력의 크기가 2,500이라 대략 N^2이하 알고리즘을 사용한다. 앞뒤를 뒤집어도 똑같은 문자열을 팰린드롬(palindrome)이라고 한다. 문자열 s가 주어질 때, s의 부분 문자열 중 가장 긴 팰림드롬의 길이
프로세스와 스레드 운영체제에서 실행 중인 하나의 애플리케이션을 프로세스(process)라고 함 스레드(thread)는 하나의 실행 흐름 모든 자바 애플리케이션은 메인 스레드(main thread)가 main() 메소드를 실행하며 시작 데몬 스레드와 유저 스레드 자바
n개의 카드로 이루어진 카드 뭉치와 여러 코인이 주어진다. 아래 규칙에 따라 진행된다. 규칙 처음에 카드 뭉치에서 카드 n/3장을 뽑아 모두 가집니다. (n은 6의 배수입니다.) 당신은 카드와 교환 가능한 동전 coin개를 가
A와 B가 n개의 주사위 중 n/2 주사위를 골라 주사위를 모두 굴린 후 나온 수들을 비교하여 점수가 큰 쪽이 이기는 주사위 게임을 한다. 주사위마다 쓰인 수의 구성이 모두 다를 때 A가 자신이 승리할 확률이 가장 높은 주사위
12월 15일부터 6월 15일까지 장정 6개월간의 과정이 끝났다. 벌써 엘리스 트랙 완주한 지 2달이 지났는데, 시간이 참 빠르다. 현재는 개인 프로젝트를 보완하고, 코딩 테스트 문제를 풀며 하반기 채용을 준비하고 있다. 엘리스 트랙 과정을 간단히 소개하고, 좋았던 점
Programmers Lv3, 카드 짝 맞추기게임 진행 중 카드의 짝을 맞춰 몇 장 제거된 상태에서 카드 앞면의 그림을 알고 있다면, 남은 카드를 모두 제거하는 데 필요한 키 조작 횟수의 최솟값을 구해야 한다. 같은 그림을 제거하지 않으면, 다시 원상 복귀되므로 같은
Programmers Lv3, 매칭 점수html 문자열 파싱 문제이다. 웹 페이지들의 매칭 점수를 구한 뒤 가장 큰 매칭 점수를 가진 웹 페이지 인덱스를 출력한다. 매칭 점수는 기본 점수와 링크 점수의 합으로 계산하며, 기본 점수는 해당 웹 페이지의 텍스트 중 검색어가