목차 한동안 WebFlux로 개발을 하면서 제목에 쓰인 것들에 대해 몸으로 배울 수 있었다. 그러나 여전히 막연한 부분이 있고, 비동기와 논블로킹이 헷갈릴 때도 있어서 오랜만에 최대한 간결하게 핵심만 정리하고 넘어가기. Synchronous execution, Asynchronous 요약부터 하고 들어가자면, 둘의 차이는 결괏값 리턴 순서가 요청 순서를 지키느냐(동기) 아니냐(비동기) 하는 것이다. 조금 덜 직관적으로 말하자면 둘의 차이는 호출된 요청의 결과를 어느 쪽에서 처리하느냐 하는 데 있다고 볼 수도 있다. 결과는 당연히 호출한 쪽에서 신경 써야 하는 거 아닌가? 싶지만 아니다. 위 그림을 보면 알 수 있듯이, 동기 처리의 경우 B메서드를 호출한 A가 작업 완료 여부를 처리한다. 따라서 여러 작업..
목차 Program, Process, Thread 프로그램, 프로세스, 그리고 스레드는 모두 컴퓨터에서 실행되는 코드를 가리킨다. 하지만 당연하게도 중요한 차이점들이 있는데, 짧게 정리하면 아래와 같다. 프로그램 프로그램은 실행 가능한 코드와 데이터의 집합이다. 실행 파일이나 라이브러리 형태로 디스크에 저장되며 실행되기 전에 디스크에서 메모리로 로드되는데, 이를 '프로그램 인스턴스'라고 한다. 프로세스 위에서 말한 '프로그램 인스턴스'가 바로 프로세스이다. 다시 한번 정리하자면 프로그램이 실행되어 운영체제에 의해 메모리상에 올라가면 이를 프로세스라 부른다. 따라서 운영체제로부터 자원을 할당받는 작업의 단위라 볼 수 있으며, 프로세스 사이에는 자원이 공유되지 않는다. 이 때문에 Context Switchi..
대략 네 달쯤 전에, JVM의 기본 구조에 대해 다루면서 스택과 힙에 대해 다루기는 했다. 2022.12.11 - [Development/Technical Interview] - [면접 준비 - Java]JVM 구조(2), Runtime Data Area [면접 준비 - Java]JVM 구조(2), Runtime Data Area 지난 글에선 JVM의 대략적인 구조와 Workflow에 대해 알아보았다. 2022.10.30 - [Development/Technical Interview] - [Java]JVM 구조(1), JVM Workflow [Java]JVM 구조(1), JVM Workflow JVM(Java Virtual Machine) JVM(Java Virtual Machine)이 gnidinger..
컴퓨터공학에서 유독 16진수를 많이 사용하는 이유는 2진수를 4자리씩 끊어 표현할 수 있기 때문이다. 참고로 16진수는 0부터 9의 숫자, 그리고 A부터 F까지의 알파벳으로 수를 표현하는데, 읽는 법을 조금이라도 훈련받은 사람이라면 16진수 숫자를 바로 2진수로 변환하는 게 쉽고 언제나 가능하다. 즉 0과 1의 세계인 컴퓨터공학에서 길게 늘어지는 2진수를 가독성 좋게 축약하기 위해 선택한 진법이며, 8도, 32도 아닌 16인 이유는 위의 이유에 더해 16진수 두 자리가 1바이트(2^8)를 표현할 수 있기 때문이다. 그렇다고 1바이트를 한 자리로 표현하려면 64진수가 필요해 가독성이 심각하게 떨어지고, 8진수는 조금 미묘하므로 16진수를 필연적으로 골랐다고도 할 수 있겠다. 코딩을 하거나 알고리즘을 풀다 ..
다른 글을 읽다가 32비트 운영체제에선 메모리, 즉 램의 크기가 4기가로 제한된다는 것을 보았다. 크게 중요한 것 같지는 않지만 그래도 알고 있어야 하는 지식인 것 같아서 짧게 정리. 32bit 32비트 운영체제란 데이터 버스의 크기가 32비트, 즉 4바이트인 운영체제를 가리킨다. 참고 1바이트 = 8비트 1킬로바이트(kb) = 1024바이트 1메가바이트(mb) = 1024킬로바이트 ... 1바이트가 8비트로 정해진 것은 기술적인 이유라기보다는 역사적인 이유에 가깝다. 미 표준연구소(NIST)에서 확장 아스키코드를 8비트로 발표했고, 비슷한 시기에 IBM이 개발한 System/360의 데이터버스도 1바이트를 8비트로 정했기 때문이다. 그 이전에는 6비트, 7비트를 1바이트로 사용하기도 했다고 한다. 다시..
목차 https://gnidinger.tistory.com/651 [면접 준비 - Network]CORS에 대하여 - 1 CORS 교차 출처 리소스 공유(Cross-Origin Resource Sharing, CORS)는 추가 HTTP 헤더를 사용하여 웹 애플리케이션이 다른 출처의 선택한 리소스에 접근할 수 있는 권한을 부여하도록 브라우저에 알려주는 메 gnidinger.tistory.com 벌써 세 달이나 이전 일이 되었지만, 처음 적은 CORS의 개념과 관련된 글에 이어 조금 실제적인 부분을 정리하려고 한다. CORS라는 게 무엇인지 경험적으로는 알고 또 처리할 수 있지만 구체적으로 어떻게 표현되는지 알고 싶어서. 짧은 글이 될 것 같지만, 시작! Origin in CORS CORS에서 Origin이..
목차 흔히 애자일 방법론이라 불리는 애자일 프로세스는 특정한 하나의 방법론을 가리키는 것이 아니다. 애자일(Agile = 기민한, 재빠른)한 개발을 하도록 도와주는 다양한 방법론 전체를 아우르는 단어라고 보는 게 정확하다. 이에 대해서는 위키백과에 너무도 상세하게 정리가 되어있으므로, 나는 필요한 부분만 정리하는 걸 목표로. Background 애자일 프로세스의 등장 배경에는 기존에 사용되던 폭포수 방법론에 대한 회의가 있다. 다른 말로는 소프트웨어 개발과 다른 공학의 프로세스 사이의 큰 차이점에 대한 인지가 있다고 볼 수도 있다. 소프트웨어 개발은 유동적이고, 개방적이며, 고객의 요구사항은 자주 바뀌어 예측 가능하지가 않다. 따라서 제한된 시간과 비용 안에서 불완전한 정보와 예측 불가능한 변경사항만을 ..
Hash 배열은 빠른 검색 속도를 가지고 있으나 삽입/삭제 시 많은 비용이 소모된다. 이를 극복한 LinkedList는 삽입/삭제의 비용이 적지만 데이터가 많아질수록 검색에 비용이 많이 든다. 해시는 이를 극복하기 위해 도입된 개념이다. 해시, 해시 함수(Hash Function)란 임의의 길이를 갖는 임의의 데이터를 받아 고정된 길이의 데이터를 리턴하는 단방향 함수를 말한다. 가장 쉬운 예로는 나머지 연산자(%)가 있을 수 있겠다. 해시 함수의 특징은 아래와 같으며, 비교적 간단한 알고리즘으로 시스템 자원을 덜 소모한다, 즉 해시값 생성에 많은 시간이 들지 않는다. 해시값을 해독할 때는 많은 시간이 든다. 같은 입력 값에 대해선 같은 출력 값이 보장되며, 출력 값은 고르게 분포한다. 입력값이 아주 조금..
시큐리티 관련 글을 찾아 읽다가 RBAC, ABAC라는 약어를 접하게 되었다. 처음엔 그냥 무시하고 지나갔으나, 잊을만하면 한 번씩 눈에 띄어서 그냥 정리하고 넘어가기로 한다. RBAC(Role-Based Access Control) 이름에서 추측할 수 있듯이 사용자의 역할에 따라 각종 접근 권한을 결정하는 방식이다. 스프링 시큐리티로 회원 권한을 설정할 때 ROLE_USER 하는 식으로 정하는 방식이 바로 이것이다. 각종 메서드와 엔드포인트의 접근 및 사용권한과 로그인 지속시간 여부 등을 역할별로 할당할 수 있다. ABAC(Attribute-Based Access Control) 이 방식은 접근 권한을 사용자와 리소스 속성에 따라 결정하는 방식이다. RBAC를 대체하는 개념이 아닌 보완하는 개념이라고 ..
목차 Scale-Up 가장 먼저 생각할 수 있는, 단순하면서도 확실한 방법이다. 사용하고 있는 서버 자체의 Cpu, Ram 등을 업그레이드해서 처리 용량과 속도를 올리게 된다. 단점 역시 단순한데, 좋은 부품은 비싸며, 출시된 제품의 성능 한계가 명확하다는 점이다. 비용 대비 성능 증가폭이 상대적으로 작다. Scale-Out 다음으로 생각할 수 있는 방법은 수평 확장이다. 서버 하나의 처리속도와 용량을 올리는 것이 아닌, 서버의 대수를 증가시켜 처리 용량을 늘린다. 수직 확장에 비해 비용이 비교적 적게 든다. 단순히 대수를 늘리기 때문에 업그레이드에 한계가 없는 듯 보인다. Amdahl's law 그러나 이는 정확하게는 처리 용량에만 해당되는 말이고, 처리 속도의 경우는 암달의 법칙에 의해 한계가 뚜렷하..
- Total
- Today
- Yesterday
- Backjoon
- 지지
- java
- RX100M5
- 스트림
- Python
- 동적계획법
- 자바
- 야경
- 리스트
- 백준
- a6000
- 중남미
- 세모
- 세계여행
- 파이썬
- 유럽여행
- spring
- 세계일주
- 스프링
- 여행
- 유럽
- 남미
- BOJ
- 맛집
- 면접 준비
- 기술면접
- Algorithm
- 칼이사
- 알고리즘
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |