김영한 실전 자바 - 기본편 (섹션 1~4)객체지향의 사실과 오해 (1장~3장)참조형 변수에 대해서는 이전에 자바스크립트를 공부하면서 개념은 알고 있었다. 변수에 주소값이 들어 있다면 해당 주소로 가서 거기에 있는 데이터를 읽는다는 것에는 익숙했다. 하지만 이번에 강의
2023년 7월부터 인턴, 2023년 11월부터 정규직으로 금융권에서 IT직군으로 종사하면서 느낀 점이 여럿 있다. 현재 회사를 다니며 주관적인 느낀 점을 몇가지만 추려 작성해보겠다.부서마다 다를 수 있겠지만, 부서 내 분들이 모두 둥글둥글한 성격을 가지고 계셔서 인간
TCP/IP 프로토콜을 사용한다는 것은 IP를 통해서 데이터의 실질적인 전송을 처리하고, TCP를 통해서 통신의 신뢰성을 보장한다는 의미이다.통신의 신뢰성을 망치는 요인은 여러가지가 있다. 이미 전송된 패킷이 손실되거나, 패킷의 순서가 바뀌거나, 네트워크의 혼잡으로 인
컴퓨터 공학 전공 공부를 하다보면, '캐시해서 성능을 높인다, 캐싱한다.'와 같은 말을 많이 보게 된다. 한번 등장한 것을 기록하여 다시 접근할 때는 빠르게 접근할 수가 있구나라는 생각이 든다. 하지만 정확한 동작 원리를 알지 못해서 이번 기회에 정리해보려고 한다.캐시
정렬 알고리즘을 공부하다 보니, stable / unstable 이나 in-place와 같은 용어들이 등장했다. 학교 수업에서 배웠던 기억은 나는데 정확히 알고 있다는 느낌을 받지 못했고, 헷갈리는 지점들도 있어서 정리한다.stable한 정렬이라는 의미는 중복된 요소를
유니온 파인드 (Union-Find) : 두 노드가 같은 그래프에 속하는지 판별하는 알고리즘그래프를 합치는 Union 연산과 루트 노드를 찾는 Find 연산으로 이루어져있다.항상 써야 할 때마다 직접 구현하다 보면 시간이 좀 걸려서 전체적인 틀 자체는 외워두는 것이 좋
HTTP (HyperText Transfer Protocol) : 인터넷 상에서 데이터를 주고 받는데 사용되는 프로토콜클라이언트는 서버에 요청을 하고, 서버는 해당 요청에 대한 응답을 클라이언트에게 보내는 구조로 데이터를 주고 받는다!Stateless : 서버가 클라이
처음 프론트엔드 개발을 공부하고, 프로젝트를 하면서 API를 사용한 적이 있다. 이떄 CORS Error를 겪었다. 당시에는 구글링을 통해 해결책을 보고 공개되어 있는 CORS-ANYWHERE 프록시 서버로 우회하는 방법을 사용했다. 하지만 그 서버가 닫히고, 직접 c
자바스크립트 비동기 처리 방식 중 하나는 콜백함수를 사용하는 것이다. -> 하지만, 콜백 헬이나 에러 처리에서 불편함 같은 문제가 있고, 이를 해결하기 위해 Promise를 도입한다. 콜백 헬 비동기 함수의 콜백함수는 태스크 큐에 대기하고 있다가 콜스택이 비어 있으
정규화 : 이상 현상을 제거하기 위한 테이블을 분리하는 행위삽입 이상 : 불필요한 데이터를 추가해야지만 추가할 수 있는 상황갱신 이상 : 일부만 변경되어 데이터의 불일치가 발생하는 상황삭제 이상 : 튜플 삭제로 인해 꼭 필요한 데이터까지 삭제되는 상황이런 이상 현상을
IP주소를 기억하기 어렵다. DNS : 도메인 이름을 네트워크 주소로 변환하는 시스템따라서 의미가 있는 도메인 이름을 도입해 이를 IP주소로 변환하는 DNS를 사용하여 편의성을 제공한다.로컬 DNS 서버 : 도메인 네임에 대한 IP주소를 검색할 때 가장 먼저 찾는 서
TCP는 네트워크 계층 중 전송 계층에서 사용하는 프로토콜로서, 논리적인 연결을 설정하여 신뢰성을 보장하는 연결형 서비스 이다.데이터를 전송하기 전에 신뢰성을 위해 상대방 컴퓨터와 논리적인 연결을 수립하는 과정상대방을 어떻게 식별할 수가 있나=> TCP Header에
this : 자신이 속한 객체 또는 자신이 생성할 인스턴스를 가리키는 자기 참조 변수this는 자바스크립트 엔진에 의해 암묵적으로 생성, 함수를 호출하면 this가 암묵적으로 함수 내부로 전달된다.this 바인딩은 함수 호출 방식에 의해 동적으로 결정된다!!!1\. 일
이전 글에서 OS가 동시성을 제공하는 방법에 대해 알아보았다. 동시성을 제공하기 위해 lock을 사용하는데 이때 발생하는 대표적인 문제점인 Deadlock에 대해서 알아보자.Deadlock : 스레드들이 서로가 점유한 자원을 사용하기 위해 무한정 대기하는 상태1\. 비
이전 글(프로세스와 스레드)에서 기본적인 프로세스와 스레드의 차이 그리고 멀티스레드와 멀티프로세스의 차이를 알아봤다. 결국 한 프로세스내에서 스레드는 메모리를 공유하기 때문에 병렬 처리를 할 때, 속도가 메모리 사용 측면에서 강점을 가진다. 하지만, 스레드를 제대로
이전 글에서소스 코드가 평가되면 실행 컨텍스트가 생성되고, 실행 컨텍스트가 실행 컨텍스트 스택에 쌓인다. 그리고 실행 컨텍스트 스택을 통해서 코드 실행 순서를 관리한다.자바스크립트 엔진은 단 하나의 실행 컨텍스트 스택을 갖는다. -> 동시에 2개 이상의 함수를 실행할
실행 컨텍스트 : 코드를 실행하기 위해 필요한 스코프, 식별자, 실행 순서 등을 관리를 구현한 내부 메커니즘, 모든 코드는 실행 컨텍스트에 의해 실행되고 관리된다.자바스크립트 엔진은 소스코드를 2개의 과정, 소스코드의 평가와 소스코드의 실행으로 나누어 처리한다평가 과정
순서에 조건이 붙어있는 경우 일반적인 DFS같은 것으로 구현했을 때, 깔끔하게 구현이 되지 않음을 많이 느꼈다. 이때마다 위상 정렬이라는 개념이 등장했고, 위상 정렬에 대해서 제대로 정리해보자위상 정렬 : 주어진 조건을 위배하지 않으면서, 노드를 순서대로 정렬하는 것위
CFS에서 레드 블랙 트리를 통해 프로세스를 관리하여 탐색시간을 줄인다.binary search tree를 사용하면 탐색 시 O(logN)의 시간복잡도를 가진다.하지만..만약 트리가 편향된다면 어떻게 될까?binary search tree가 편향된다면, 원소를 찾을 때
초기에는 프로그램을 실제 메모리에 직접 올려서 사용, 하지만 컴퓨터는 time sharing, multiprogramming을 하기 때문에 이보다 발전된 방법이 필요하다!메모리 가상화 : 실제 메모리는 하나지만,OS는 프로세스에게 프로세스가 마치 자신만의 메모리를 갖고