본문 바로가기

전체 글158

트랜잭션 A가 B에게 계좌로 돈을 보낸다고 가정하면 다음과 같은 과정이 필요하다. 1. A 계좌 잔액 확인 2. A 계좌 잔액 차감 3. B 계좌 잔액 확인 4. B 계좌 잔액 증가 이러한 일련의 과정을 트랜잭션이라고 한다. 트랜잭션은 4가지 특성(ACID)을 만족해야한다. 원자성(Atomicity) 전부 반영되거나 전부 반영되지 않게(All or Nothing) 지속성(Consistency) 결과가 지속돼야함 독립성(Isolation) 여러 트랜잭션이 서로 영향을 미치면 안됨 일관성(Durability) 결과가 변하면 안됨 하지만 성능을 위해 특성을 위배하게 됨 동시에 1000000개의 요청이 들어올 때 순차적으로 처리할 수 없기 때문 트랜잭션 격리 수준 (동시성) Read-uncommited Read-comm.. 2021. 11. 30.
21/11/19 최근 두 달 정도는 굉장히 바빴던 것 같다. 바쁘다고 정말 공부, 코딩만 한것은 아니지만.. 3월부터 열심히 했던 졸업프로젝트도 결국 동영상 제출로 막을 내렸다. 하지만 아직 더 구현하고 싶은 기능들이 있기에 겨울까지는 계속 만지작 거리게 될 것 같다. 지금까지 면접을 5개정도 본 것 같은데 아직 부족한 점이 많음을 항상 느낀다. 조금 더 많은 경험을 쌓고, 공부해서 스스로 인정할 수 있는 개발자가 되고 싶다. 포트폴리오 정리를 하면서 보니 확실히 프로젝트 경험이 적고, 허접한 느낌이다. 아직 갈 길이 멀다. 그래도 이제 여유가 생기는만큼 더 공부하고, 경험할 수 있는 시간이 주어진 것 같다. 이 시간을 알차게 활용해 보고 싶다. 2021. 11. 19.
HTTP 2.0 HTTP 2.0이라고도 불리는 HTTP/2는 HTTP Version 2의 약자로 HTTP/1.1의 차기 버전이다. HTTP/1.1 현재의 웹은 다량의 멀티미디어 리소스를 처리해야하고 웹페이지 하나를 구성하기 위해 다수의 비동기 요청이 발생되고 있고 이를 처리하기엔 HTTP/1.1의 스펙은 너무 느리고 비효율적이다. Web환경에서 HOLB(Head Of Line Blocking - 특정 응답의 지연)은 실제로 두 종류가 존재한다. 1. HTTP의 HOL Blocking 2. TCP의 HOL Blocking HTTP의 HOL Blocking이란? 이미지를 세개 요청하면 순서대로 이미지를 요청 받고, 응답하게 되는데 첫번째 요청의 응답이 지연되면 두번째, 세번째 이미지도 지연되게 되는 파이프 라이닝으로 인한 .. 2021. 11. 19.
쿠키와 세션 HTTP 프로토콜은 상태 유지가 되지 않는 Stateless한 프로토콜입니다. 왜? 그러므로 클라이언트와 서버간 통신을 계속하기 위해서 상태를 저장하기 위해 쿠키와 세션을 사용하게 됩니다. 쿠키 클라이언트 단에 저장되는 작은 정보의 단위 저장된 정보를 다른 사람 또는 시스템이 쉽게 볼 수 있는 단점 유효시간이 지나면 사라짐 클라이언트에서 생성하고 저장될 수 있꼬, 서버단에서 전송한 쿠키가 클라이언트에 저장될 수 있다. 이름과 값으로 구성된 자료를 저장(외에도 주석, 경로, 유효기간, 버전, 도메인과 같은 정보 저장) 쿠키의 동작 방식 클라이언트가 페이지 요청 서버에서 쿠키 생성 HTTP 헤더에 쿠키를 포함시켜 응답 브라우저가 종료되어도 쿠키 만료 기간이 남아 있다면 클라이언트에서 보관하고 있음 같은 요청.. 2021. 11. 19.
오버로딩과 오버라이딩의 차이점 둘 다 자바에서 다형성을 지원하는 기능입니다. 오버로딩은 같은 이름의 메소드 여러개를 가지면서 매개변수의 유형과 개수가 다르도록 하는 기술로 결국 함수를 중복으로 정의하는 것입니다. 오버라이딩은 상위 클래스가 가지고 있는 메소드를 하위 클래스에서 재정의해서 사용하는 것을 말합니다. 오버로딩은 정적바인딩입니다. 메소드의 매개변수 종류와 개수가 다르기 때문에 컴파일 과정에서 어떤 메소드를 호출할할지 결정할 수 있기 때문입니다. 오버라이딩은 동적바인딩입니다. 호출한 메소드가 오버라이딩된 메소드인지 컴파일시간에 확인할 수 없기 때문입니다. 2021. 11. 19.
퀵소트는 왜 빠른 것일까? 퀵소트는 왜 빠른 것일까? 라는 질문을 던져본 적이 있으신가요? 없으시다면 당신은 개발자라고 할 수 없습니다. 알고리즘이 어떻게 돌아가는지는 구체적으로 설명하지 않고, 왜 퀵소트가 빠른지 알아보겠습니다. 처음에는 단순히 피벗을 기준으로 비교를 하니 그러면 n-1번의 비교를 해서 빠르구나! 하고 생각했습니다. 너무 단순한 생각이였죠. 하지만 n이 커지면 결국 n-1과 n의 값 차이는 너무나도 작아지기때문에 이 이유로 퀵소트가 빠르다고 할 수 는 없을 것입니다. 비슷하게 O(NlogN)의 시간 복잡도를 가지는 병합정렬과 알고리즘을 비교해보면 일단 기본적으로 병합정렬은 merge하는 과정에서 sorted 배열을 생성해서 저장한 후에 다시 옮겨주는 작업이 필요합니다. 그래서 이 과정에서 메모리를 추가로 사용해야.. 2021. 11. 19.
ReactNative - 뒤로가기시 useEffect 스택 네비게이션을 사용해서 화면을 구성할 때 이런 상황이 있다. 자식 컴포넌트에서 뒤로가기를 통해 부모 컴포넌트로 돌아올 때 api에서 다시 정보를 받아온다던가의 형식으로 구현하게 될 수 있다. 이 경우에는 useIsFocused() 함수를 사용하면 화면이 포커싱될 때 실행하는 useEffect 함수를 실행시킬 수 있다. import {useIsFocused} from "react-navigation/native"; const Component=({navagation})=>{ const isFocused=useIsFocused(); useEffect(()=>{ . . . },[isFocused]); } 이런 형식으로 사용하면 뒤로가기시에 혹은 새로 포커싱을 받을 때 useEffect 함수를 실행할 수 있다. 2021. 11. 17.
ReactNative - 화면 길이 구하기 디바이스마다 화면의 크기가 다르기에 고정값으로 UI를 구성하면 짤리거나, 공간이 너무 남거나 하는 문제가 발생할 수 있다. 이 때 Dimensions를 사용하면 이 문제를 해결할 수 있다. import {Dimensions} from 'react-native'; const {width, height} = Dimensions.get('screen'); export default {width, height}; 이런 식으로 파일을 하나 선언해두고 import해서 width와 height를 사용하면 된다. 이때 width와 height는 각각 화면의 총 너비, 높이가 될 것이다. 2021. 11. 17.
@RequestParam와 @PathVariable은 무엇이 다른가? 스프링으로 프로젝트를 진행하다보면 url을 매핑할 때 PathVariable과 RequestParameter를 사용할 때가 있다. 이 두개는 무엇이 다른걸까? 주로 PathVariable은 특정 인덱스에 대한 조회, RequestParam은 특정 값으로 필터링할때 사용한다. RequestParameter는 경로 뒤에 입력 데이터를 함께 제공하는 식으로 사용한다. 사용 방법 www.url/post?post_id=3 실제 사용 (http://localhost:8080/reservation/api/displayinfos 까지가 url 이고, 뒤에 'categoryId=3'이 RequestParam이다.) http://localhost:8080/reservation/api/displayinfos?category.. 2021. 11. 5.
NTP란 무엇인가? NTP란 네트워크 시간 프로토콜(Network Time Protocol)의 약자이다. 즉 네트워크로 연결돼있는 컴퓨터들끼리 시간을 동기화 시키는데 사용되는 프로토콜이다. NTP는 미국 델라웨어 대학의 데이빗 밀스에 의해 처음 개발되었고, 지금은 인터넷 표준이 되었다. NTP는 컴퓨터 클록 시간을 1/1000초 이하까지 동기화시키기 위해 협정 세계 시각(UTC)을 사용하게 됩니다. NTP는 계층적인 구조를 가지고, 각각의 계층은 상위 계층으로부터 시간을 동기화합니다. 지연을 최소화하기 위해서 계층은 지역을 기반으로 구성됩니다. 최상위 레벨은 0 ,최하위레벨은 15로 총 16개의 계층으로 이루어집니다. 0 레벨은 Primary Reference clock입니다. Stratrum 1은 Stratum 0 에 다.. 2021. 11. 5.