일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- oracleapex
- it자격증
- 맥북
- 학점은행제무료강의
- Homebrew
- 맥북환경설정
- 맥북셋팅
- SQL
- jdk17
- 컴퓨터공학학사취득
- 학점은행제
- 은행IT
- 디렉토리계층구조
- jdk
- 프로그래머스
- 코어뱅킹
- 의사결정나무모형
- union
- MSA
- python
- 모놀리식
- 개인프로필스튜디오창업
- fastapi
- 코딩테스트
- 계정계
- Pass By Value
- DB
- 오라클
- 렌탈스튜디오창업
- 채널계
- Today
- Total
목록분류 전체보기 (105)
개발머해니
strcmp, strncmp 함수는 문자열을 비교하여 같으면 0을 반환하고, 같지 않으면 0을 반환하지 않는다. int strncmp(const char *string1, const char *string2, size_t count); 주민번호가 담겨있는 변수 reg_no를 선언해보자 char * reg_no = "9312021000000"; // 931202-1000000 [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] 9 3 1 2 0 2 1 0 0 0 0 0 0 성별이 여자인지 남자인지 판별해보자. if( reg_no[6] == '1' ) { printf("성별이 남자이다."); } else if( reg_no[6] == '2' ) { printf(..
이번에 하루 넘게 복구 안된 운영 장애 상황에 대치하였습니다. 금방 해결할 수 있는 문제였지만, 크게 아래 두 가지 요인으로 인해 장애 상황을 하루 넘게 지속하게 되었습니다. 1) 너무 안일하게 생각했던 점 : 다음주에 천천히 해결해도 되겠지라는 생각을 함 2) 빠른 상황판단 능력 미스 : 더 빠른 해결방안을 생각해내고 택하지 못함 그래서 이번 장애 경험에 대해 회고하고 적절한 장애 대처 방안에 대해서 정리해보려고 합니다. 크게 제가 운영에 반영하는 서비스는 2가지 유형으로 나뉩니다. 1) 온라인(Online) 서비스 : 반영하자마자 실시간 적용되는 서비스 2) 배치(Batch) 서비스 : 배치 잡을 등록한 시간에만 작동하는 서비스 두 서비스의 성격에 따라 장애 대응 절차도 달라져야 하기에 분기해서 작성..
* 현재글은 임시로 궁금한 내용만 급하게 작성해놔서 추후 수정 예정입니다… 매칭은 Queue (First in First Out) 구조로 이루어져야 한다. 매칭서비스는 Queue형태이기 때문에 Redis의 list 를 사용하여 push 해준다LPUSH mylist a # now the list is "a" LPUSH mylist b # now the list is "b","a" RPUSH mylist c # now the list is "b","a","c" (RPUSH was used) 레디스에 객체를 넣어줄때는 오브젝트 맵퍼를 사용하여 Json객체를 넣어준다. 꺼내올때도 마찬가지로 readValue를 사용하여 json의 형태를 객체로 변환해서 가져온다. 꺼내올때는 RightPop을 이용하여 객체를 Fi..
* 현재글은 임시로 궁금한 내용만 급하게 작성해놔서 추후 수정 예정입니다… Nested Loops Join * 다른 필터 조건이 없는 상황에서는 작은 쪽(=1쪽) 집합을 드라이빙하는 것이 유리 * JOIN 조건 외에 필터 조건이 있을 때는 인덱스 구성에 따라 유·불리가 결정 인덱스 구성이 잘 된 경우 작은 쪽(=1쪽) 집합을 드라이빙하는 것이 유리 Nested Loops Join 의 원리와 성능 최적화의 조건 = "구동테이블이 작고, 내부테이블에 인덱스가 존재한다." [SQL] 성능 관점에서 보는 결합(Join)0. 들어가며 결합(Join) 은 SQL 사용하게 되면 반드시 활용하는 기능입니다. Inner Join, Outer Join 등 다양한 결합 방법이 존재하고 우리는 이를 활용해서 DB에 있는 여러..
현업에서 공지사항에 이모지를 작성할 수 있게 해달라는 요청이 왔습니다! 하지면 당행 내에 이모지를 DB에 저장하여 사용한 업무는 전무했습니다… 오라클에 이모지(Emoji)를 저장할 수 있을까? 현재까지 제가 확인한 정답은 '아니요' 입니다. 이모티콘(emoji) 는 4byte 에 해당하는 유니코드로 오라클 charset UTF-8 (3byte) 에서는 호환되지 않아 [???] 로 저장됩니다. 따라서 오라클에서는 이모지 저장이 불가능합니다. 회사 내에 이모지 변환 규약을 새로 설정하던지, mySQL 데이터 베이스를 사용해야 합니다! 현재는 화면 단에서 원천적으로 이모지 입력이 불가능하게 제어해두었습니다. 이모티콘 오라클,Mysql 저장에러 정규식 체크 결함 : 모바일 웹에서 이모티콘 저장하니까 QA 에서 ..
클라이언트가 에러났을때도 ResponseDTO를 내려달라고 하면 어떻게 해야할까?정답은 간단합니다. API 요청에 성공해서 응답을 보내거나, 예외처리를 보낼 때 공통으로 사용할 ResponseDto를 구현해서 값을 내려주면 됩니다. 자세한 내용은 아래 블로그에서 확인 가능합니다! [Spring] API 요청 성공, 예외처리에서 공통으로 사용하는 ResponseDto 구현프론트와 협업할 때 어떤 request를 받을 것이며, 어떤 response를 보낼 것인지 협의하는 것이 중요하다. response 형식을 어떻게 할지 정하기 나름이겠지만, 이번에는 API 요청에 성공해서 응답을 보내velog.io 중요한 핵심 내용만 참조해 보자면, 아래와 같이 정상응답이건 에러응답이건 모든 요청에 공통으로 보낼 형식을 ..
스프링 예외처리 종류 스프링에서 예외처리는 크게 3가지로 나눌 수 있습니다. ① @ExceptionHandler : Controller Level ② @ControllerAdvice : Global Level ③ try ~ catch문 : Method Level @ExceptionHandler : 컨트롤러단에서 처리 @ExceptionHandler는 Controller계층에서 발생하는 에러를 잡아서 메서드로 처리해주는 기능입니다. Service, Repository에서 발생하는 에러는 제외합니다. @RestController @RequestMapping("/person") public class PersonController { @GetMapping public String test(){ return "..
안녕하세요! 제가 실무를 하면서 헷갈렸던 트랜젝션과 DB LOCK 개념에 대해서 설명해 드리겠습니다. 트랜잭션이란? 각 사용자가 요청을 보냈을 때, 처리되는 거래입니다. 예를 들어, '계좌이체' 거래가 있다고 가정해 봅시다. 이때 계좌 이체 내에는 대략 아래와 같은 비즈니스 로직으로 작업이 진행됩니다. ① 출금 계좌 목록 SELECT ② 출금 계좌 잔액 UPDATE ③ 출금 거래 기록 INSERT ④ 입금 거래 처리(당행이체/타행이체) ⑤ 입금 거래 기록 INSERT 일반적으로 A고객이 계좌이체를 진행하면, 위의 트랜젝션이 순차적으로 작업이 진행되게 됩니다. 또 B고객이 계좌이체를 진행하여도 동일한 순서의 거래가 흐르게 됩니다. 이 고객들의 각각 거래가 바로 '트랜잭션'이라고 볼 수 있습니다. 각 '트랜..
안녕하세요! 실무환경에서는 조회 속도 향상을 위해 PK로 잡혀있지 않은 컬럼에 INDEX를 걸어둔 것을 많이 볼 수 있는대요~ 과연 인덱스는 어떤 기준에 따라 사용하는 것이 알맞을지 한 번 알아보도록 하겠습니다! 인덱스를 결정하는 기준은? 인덱스를 결정할 때에는 인덱스를 통해 읽어들이는 레코드 수가 얼마나 되는지를 고려해야합니다. 총 10만건의 데이터가 존재하는 경우, 특정 인덱스를 활용한다면 5만건의 데이터가 조회된다고 가정해봅시다. 이러한 인덱스는 10만건의 데이터를 전체 스캔하는 경우와 비교했을때 크게 성능이 향상된 것이라 볼 수 있을까요? 대답은 '아니다!' 입니다. 굳이 인덱스를 걸지 않아도 Table Full Scan로 조회하는 것이 더 이득일 수 있기 때문입니다. 따라서, 인덱스를 잡을 때 ..
안녕하세요! 오늘은 파티션(Partition)에 대해서 알아보겠습니다. 파티션 테이블이란? 파티션 테이블(Partition Table)이란 사용자가 정의한 기준에 따라 데이터를 분할하여 저장해놓은 테이블입니다. 논리적인 1개의 테이블에 대해서, 여러개의 파티션 테이블을 분할하여 물리적으로 다른 공간에 저장하는 것이죠! 이때, 실제 데이터가 물리적으로 저장되는 곳은 Partition으로 나누어진 Tablespace입니다. 즉, 파티션되지 않은 테이블은 테이블과 저장영역이 1:1 관계지만, 파티션된 테이블일 때는 1:M 관계가 됩니다. 파티션 테이블을 사용하는 이유는? 일반적으로는 오랜 기간 동안 쌓인 데이터를 효율적으로 관리하고 성능저하를 방지하기 위한 용도로 파티션 테이블을 사용합니다. 서로 다른 파티션..