전체 글
-
[OS, Java] Zero Copy백엔드/Java 2024. 7. 31. 19:15
올해 4월달쯤에 간단하게 공부하다가 넘어간 것 같은데, 이번에 제대로 공부할 기회가 생겼다. Zero Copy는 CPU를 사용하지 않고, 디스크/메모리에 저장된 정보를 다른 메모리에 저장하는 방식으로 기존 전통적인 데이터 복사 방식보다 더 성능이 좋은 방식이다. * 이번 내용은 운영체제 이론, 소켓에 대해 알고 있어야한다. (소켓 관련 글) 1. Zero Copy 이전에 사용하는 방법 운영체제에서 사용자 - 커널 공간이 따로 나뉘어져 있는 그림을 많이 봤을 것이다. 코드를 동작할 때, 동작 원리를 깊숙히 들어가면 system call이 호출되는 형식이다. 데이터 복사도 마찬가지로 system call을 사용해서 유저 영역과 커널 영역을 넘나들게 된다. 데이터 복사에서 제일 많이 사용하는 곳은 여러가..
-
[Java] ReentrantLock백엔드/Java 2024. 7. 22. 16:39
몇 주 전에 가상 스레드를 공부하기로 했는데, 생각보다 공부할게 너무 많아서 잘못 건드렸다는 생각이 많이 든다. 포스팅을 적어도 2주에 한 번씩은 하자고 생각했는데, 2주는 무슨 거의 한 달이 된 상황... 그래서 야금야금 분할정복하듯이 키워드를 적어보려고 한다. * 운영체제에 있는 내용은 안다고 가정하고 글을 작성함* CAS 알고리즘에 대해 알고 있으면 좋다 (CAS 알고리즘 포스팅 글) 1. Synchornized자바의 락은 모니터 개념을 사용하고 있다. 모니터란 특정 순간에 하나의 스레드만 객체 인스턴스에 접근할 수 있는 뮤텍스라고 생각하면 된다. 예를 들어서 메서드에 synchronized를 적용하면 인스턴스 메서드에 락이 걸리고, synchronized(객체 인스턴스)를 적용하면 객체 인스턴스..
-
[DB] NoSQL 스토리지 엔진 발전 과정공부/데이터베이스 2024. 6. 23. 22:48
1학기에 Hadoop 수업을 들었는데, 가장 마지막 수업의 제일 마지막 내용에 SSTable이 나왔다. 수업에서는 Hadoop Ecosystem 중 하나인 HBase에서 쓰이는데, SSTable에 대해 더 찾아보니까 NoSQL Storage Engine 발전 과정과 관련이 있었다. 이번 포스팅은 RDB에 사용되는 알고리즘인 B-Tree에 대해 알고 있는 상태로 글을 읽어야 더 도움이 된다. 왜냐하면 B+Tree는 읽기 성능이 좋은 기술이고, LSM Tree는 쓰기 성능이 좋은 기술이라 RDB와 NoSQL의 대표적인 차이점이니 생각해보면서 읽어보면 더 많은 내용을 얻어갈 수 있다. 1. Append Only File (AOF)우선 시작하기 전에 글에 나오는 데이터는 로그 데이터이고, key-value..
-
2024 팀네이버 신입 공채 Tech 최종 합격 후기후기/활동 후기 2024. 6. 17. 20:24
1. 일정 타임라인4학년 1학기를 함께 보낸 네이버... 서류 접수24.03.05 ~ 24.03.18서류 결과24.03.21코딩테스트, 기업 문화 적합도 검사24.03.22 ~ 24.03.24코딩테스트 결과24.04.09기술 역량 인터뷰 (1차 면접)24.04.16 ~ 24.04.26기술 역량 인터뷰 결과24.05.03종합 역량 인터뷰 (2차 면접)24.05.16 ~ 24.05.29최종 결과24.06.14 2. 서류 작성자소서 내용은 3문항이 있었습니다. 1번, 2번은 필수이고, 3번 문항은 선택입니다. 1. 다음 중 본인의 가장 자신 있고 희망하는 분야를 한 가지 선택해 주세요. ■ Front-End ■ Back-End ■ Android ■ iOS ■ Data ■ 공통 선택한 분야에 관심을 갖게 된..
-
[Network] WebSocket공부/컴퓨터 네트워크 2024. 6. 14. 16:22
1. 웹소켓에 대한 간단한 정보인터넷에 널리 알려진 내용부터 잠깐 살펴보고 가자. 먼저 웹소켓이 없었을 때부터 이야기할 예정이라 웹소켓만의 특징을 먼저 알고 있는 상태에서 읽는게 도움이 된다. - HTTP와 같은 Application 계층의 프로토콜이다.- 데이터를 양방향으로 주고 받을 수 있다. 그래서 서버가 먼저 데이터를 보낼 수 있다.- HTTP / HTTPS에서 Upgrade, Connection 헤더를 사용해 웹소켓을 사용할 수 있다. 이번 포스팅은 소켓에 대해 알고 있어어한다. 아래 글을 보고 먼저 소켓에 대해 이해를 한 다음 글을 보는게 좋다.https://hello70825.tistory.com/598 [Network, OS] Socket, I/O Multiplexing, Event Lo..
-
[Network, OS] Socket, I/O Multiplexing, Event Loop공부/운영체제(OS) 2024. 6. 7. 16:57
Socket → I/O Multiplexing → Event Loop 순서로 공부한 내용이다.따로따로 내용을 분리하기엔 서로 연결된 내용이 많아서 한 번에 작성했다. 0. UNIX 철학Everything is a file 객체지향에서 "모든 것은 객체로 이루어져 있다"처럼 UNIX 운영체제의 철학은 "모든 것은 파일로 이루어져 있다"이다.소켓이든, 프로그램이든, 파이프라인이든 모든게 파일로 이루어져 있다는 것이다.이 내용을 기억해두면 좋은게 '추상적 개념'이 아닌 '파일'이라는 관점으로 보아야 수월하게 이해하는데 도움이 된다. 1. 소켓이란?[1] 개념소켓은 운영체제가 제공하는 인터페이스로 애플리케이션 계층의 프로그램이 네트워크 서비스를 사용할 수 있게하는 역할을 한다. TCP/IP 4계층으로 이..
-
[Network] HTTPS공부/컴퓨터 네트워크 2024. 5. 21. 15:47
1. HTTP와 HTTPSHTTP와 HTTPS의 큰 차이점은 패킷이 암호화되냐, 암호화되지 않냐의 차이이다.HTTP는 80번 포트번호로 패킷을 주고 받고, HTTPS는 443 포트번호로 모든 통신을 진행하게 된다.아래 와이어샤크를 통해 패킷을 확인해보자 HTTP 패킷HTTPS 패킷 큰 흐름의 HTTP/HTTPS 트랜잭션 HTTP는 80번 포트를 통해 3-way handshake를 통해 연결을 수립하고, 통신을 하다가 서로 주고 받을 패킷이 없으면 4-way handshake를 통해 통신을 종료한다.HTTPS는 살짝 다르게 3-way handshake를 한 이후 SSL handshake를 진행하고, 이후 통신을 끊을 때에는 SSL 닫힘 통지가 먼저 일어나는데, 이때 클라이언트와 서버가 close_noti..
-
[Concurrency] Actor Model백엔드/Java 2024. 5. 7. 16:17
* 용어 통일을 위해 Actor, 액터 혼용 대신 Actor로만 사용했습니다. 1. 서론동시성 프로그래밍 마지막 포스팅으로 Actor 모델이다. 지금까지 내용을 정리하면 다음과 같다.Compare and Swap(CAS)단일 값에 대해 원자성을 보장해준다. 하지만 "단일 값"만이다.Software Transactional Memory(STM)트랜잭션을 진행하는 동안 다른 메모리 공간에서 공유 자원에 대한 연산을 수행한 뒤 커밋하거나 롤백하여 적용한다. Actor 모델이 대두된 시기는 역시 STM과 똑같이 멀티코어 프로그래밍으로 인해 화두가 되었다. 다만 STM과는 다르게 처음 Actor 모델을 제안한건 1973년이고, 프로그래밍 언어로 만들어진건 1986년 Erlang 언어로 Actor 모델을 기반으로..