일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 비관적락
- 다대다
- 연결리스트
- eager
- 일대다
- 스토어드 프로시저
- dfs
- execute
- 힙
- 백트래킹
- fetch
- 스프링 폼
- 다대일
- FetchType
- BOJ
- 이진탐색
- 데코레이터
- exclusive lock
- 낙관적락
- JPQL
- PS
- SQL프로그래밍
- 유니크제약조건
- CHECK OPTION
- 즉시로딩
- 연관관계
- 동적sql
- 지연로딩
- querydsl
- shared lock
- Today
- Total
목록All (557)
흰 스타렉스에서 내가 내리지
컨테이너가 각곽을 받게 된 것은 빠르게 변하는 시장에서 예측할 수 없는 고객의 요구사항에 기인한다. 이런 환경에서 우리는 더욱 빠르고, 안정적이며 효율적인 시스템 구축이 필요했다. 이러한 환경에서 비즈니스의 목표를 달성하기 위해서는 신뢰할수 있는 인프라 환경에서 애플리케이션 개발에만 집중할 수 있어야 하며, 고객의 트래픽에 따라 유연하게 대응할 수 있어야 한다. 그리고 무엇보다 보안에 안전해야 한다. 이러한 목표를 이루기 위해서 컨테이너 기술이 등장하게 되었다. 우리가 애플리케이션을 개발할 때 생각해보면, 우리는 우선 비즈니스 로직을 코드로 구현해야 한다. 그리고 데이터를 저장하고 사용하기 위해 데이터베이스를 활용하며 이를 연결하기 위한 환경변수들은 설정 파일로 분리한다. 또한 코드 개발을 위해 여러가지..
List responseDto = new ArrayList(); for(Folder folder : folders){ responseDto.add(FolderSimpleInfoDto.of(folder)); } return responseDto; 다음의 코드는 stream()과 람다식을 통해 한줄로 줄일 수 있다. return folders.stream() .map(FolderSimpleInfoDto::of) .collect(Collectors.toList()); folders.stream()으로 List를 스트림으로 변환하고, map(FolderSimpleInfodto::of) 로 각 Folder 객체를 FolderSimpleInfoDto로 변환한다. 마지막으로, collect(Collectors.toL..
1. Collections.reverse(list); 2. List list = new ArrayList(); // 리스트에 원소들 추가 List reversedList = new ArrayList(); ListIterator iterator = list.listIterator(list.size()); while (iterator.hasPrevious()) { reversedList.add(iterator.previous()); } 3. List list = new ArrayList(); // 리스트에 원소들 추가 list.sort(Collections.reverseOrder()); 성능 측면에서 1번이 효율적이다. 기존 List 를 변경하는 방식이라 메모리 사용 측면에서 효율적이다.
각각의 리전은 이중화 되어있는 100G급의 AWS 자체 네트워크로 연결되어 리전 간에 고속의 네트워크 환경을 제공한다. 각 AWS 리전은 지리적 영역 내에서 최소 3개의 독립적인 가용영역으로 구성된다. 그리고 하나의 가용영역은 하나 이상의 개별 데이터센터로 구성된다. 즉, 데이터센터가 모여서 하나의 가용영역으로 이루어지고, 가용영역이 모여 하나의 리전으로 구성된다. 현재 서울 리전은 4개의 가용영역으로 이루어져 있다. 가용영역이란 다른 가용영역과 완전히 격리된 하나 이상의 데이터센터를 의미한다. 한 가용영역에는 충분한 물리적 거리를 두어 특정 가용영역에서 발생한 재난 상황이 다른 가용영역에까지 영향을 미치지 않도록 설계되었다. 또한 각 가용영역들은 독립된 전력 및 낸각 인프라를 구축하고 있다. 각 가용영..
동일한 지리적 영역 내에 위치한 데이터 센터를 '리전'이라고 한다. 예를 들어 서울 리전은 서울 지역에 위치한 데이터 센터의 모음이다. AWS에서는 이런 리전에 있는 물리적 서버를 가상화하여 여러 개로 나누어 서비스하고 있다. 하이퍼바이저라고 하는 다수의 운영체제를 동시에 실행하기 위한 논리적 플랫폼을 통해, 물리적 호스트를 여러 개의 게스트로 나누게 되고, 우리는 이것을 EC2 인스턴스라고 말한다. 리눅스, 윈도우즈, 맥과 같은 OS 지원 물리적 호스트 전체를 그대로 이용하는 베어메탈 서비스와 디스크, 네트워킹 서비스를 이용할 수 있다. 우리의 워크로드에 맞는 다양한 인스턴스를 제공하고 있다. 다양한 구매 옵션으로 비용 절감에 도움을 주고 있다. 우리는 EC2를 사용하기 위해서 기존 물리 서버처럼 필요..
ff
@Api(tags = "Second") @RestController @RequestMapping("/second") @RequiredArgsConstructor public class PlayerController { private final AmazonDynamoDBClient amazonDynamoDBClient; private final PlayerRepository playerRepository; @PostMapping("/player") public String registerPlayer(@RequestBody Player player){ System.out.println(player.getId()+ player.getName()); Player newPlayer = new Player(play..
String, StringBuffer, StringBuilder 차이점 첫번째 차이점은 String은 불변하다는 특징을 가지고 있어서 수정을 하지못하고 새로운 String 인스턴스가 생성되고 전에 있던 String은 GC에 의해 사라지게 된다. 그래서 좋은 성능을 기대하기는 힘들다. (String 불변, StringBuffer, StringBuilder 가변) StringBuffer는 동기화 키워드를 지원하여 멀티쓰레드 환경에서 안전하다는 점(thread-safe) 입니다. 참고로 String도 불변성을 가지기때문에 마찬가지로 멀티쓰레드 환경에서의 안정성(thread-safe)을 가지고 있습니다. 반대로 StringBuilder는 동기화를 지원하지 않기때문에 멀티쓰레드 환경에서 사용하는 것은 적합하지 않..
# Redis - Remote Dictionary Server → 외부에 있는 딕셔너리라는 자료 구조를 사용하는 서버 - Database, Cache, Message broker - In-memory Data Structure Store - Supports rich data structure # Cache - 나중의 요청에 대한 결과를 미리 저장했다가 빠르게 사용하는 것 # Redis의 탄생 데이터 베이스는 HDD, SSD에 저장. 메인 메모리에 저장해서 좀 더 빠르고 쉽게 데이터에 접근하면 어떨까 해서 탄생한 In-memory Database Redis. 더 자주 접근하고 덜 자주 바뀌는 데이터를 저장하자. # Race Condition 해결 - Redis는 기본적으로 Single Threaded - ..