일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- open-session-in-view
- 스프링
- ioc컨테이너
- java predicate
- Atomicity
- 스프링di
- 자바 필터
- 도커 이미지 빌드
- kotlin ::
- kotlin 리팩터링
- spring formatter
- IOC
- 비기능적 요구사항
- 수정자주입
- 정적팩토리메서드
- 소프트웨어의 품격
- 토비의 스프링
- 스프링시큐리티
- fetch join
- Spring
- 스프링부트 도커
- 스프링 시큐리티 설정
- jpa lazy
- 기능적 요구사항
- 그래프큐엘
- 동적파라미터
- jpa no session
- method refetence
- 생성자주입
- 스프링 포매터
- Today
- Total
목록Computer Science (22)
공부기록

개요 본 포스팅의 DB환경은 MySQL 5.7.30 입니다. 테스트를 원하신다면 AUTO_COMMIT을 false로 하고 진행해주세요. 트랜잭션 격리 수준이란 ? 동시에 여러 트랜잭션이 처리될 때, 특정 트랜잭션이 다른 트랜잭션에서 변경하거나 조회하는 데이터를 볼 수 있도록 허용할 지 말지를 결정한다. 트랜잭션 격리 수준의 종류 READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ, SERIALIZABLE 등으로 나뉜다. 왜 트랜잭션 격리 수준을 알아야 하는 가? 동시성 문제가 있다. 데이터 부정합 문제점이 있는데, 이는 트랜잭션 격리 수준에 따라 달라진다. 아래 그림은 트랜잭션 격리 수준에 따른 데이터 부정합 표이다. 각각의 데이터 부정합의 대한 설명은 아래에서 다시..
가장 큰 차이는 트랜잭션의 유무가 아닌가 싶다. 직접 테스트해보고 확인한 결과를 기록한다. create table tab_myisam ( fdpk int not null, primary key(fdpk) )engine=MyISAM; create table tab_innodb ( fdpk int not null, primary key(fdpk) )engine=InnoDB; insert into tab_myisam (fdpk) values (3); insert into tab_innodb (fdpk) values (3); tab_myisam과 tab_innodb를 생성했다. 스토리지엔진은 이름에 따라 각각 MyISAM과 InnoDB로 설정해줬다. 값을 넣어준다. 두 테이블 모두 fdpk 라는 컬럼에 3 이라..
개요 HashTable 은 Key - Value 로 이루어진 자료구조다. HashTable.get(Object key)를 쓰면 해당 key와 맞는 value를 반환한다. 이름에서 알 수 있듯이 HashCode를 이용한다. Key를 HashFunction를 통해 정수 Hash를 만들어내고, 그 Hash를 이용해 데이터에 접근하기 때문에 속도가 매우 빠르다.( O(1) ) 정수 Hash를 통해 데이터에 접근해서 속도가 빠르다는데.. 그렇다면 동일한 Hash를 반환해서 동일 인덱스에 데이터가 중복될 수 있다. 이를 Hash Colliision(해시 충돌)이라 부른다. 최악의 경우 데이터 검색에 O(n) 이 걸린다. 때문에 Hash를 만들어내는 HashFunction에 쓰이는 Hash Algorithm을 잘 만..

스택 한 쪽 끝에서만 자료를 넣고, 뺄 수 있는 자료구조다. Push로 데이터를 집어넣고, Pop으로 데이터를 빼낸다. 그림 상으로는 스택의 각 인덱스에 있는 데이터를 알 수 있지만, 사실상 제일 위에 있는 데이터만 알 수 있는 자료구조다. 보통 제일 위에 있는 데이터를 top라고 한다. 스택의 구현 일차원 배열 하나로 구현이 가능하다. public class Stack { private T[] data; private int size; @SuppressWarnings("unchecked") public Stack(int capacity) { data = (T[])new Object[capacity]; size = 0; } public Stack() { this(10); } public void push..