Study: ComputerScience(CS)

[Network] Blocking vs Non-Blocking & Sync vs Async 비교 정리
💡 본 문서는 'Blocking vs Non-Blocking'과 'Sync vs Async'에 대해 정리해놓은 글입니다. network외에도 이 개념은 사용할 때도 있으나, 이 문서의 경우 네트워크 상에서 말하는 개념으로 설명하고 있으니 참고바랍니다. Blocking vs Non-Blocking I/O 다른 주체가 작업할 때 자신의 제어권이 있는지 없는지로 판단할 수 있습니다. Blocking I/O System Call이 끝날때까지 프로그램은 대기해야 하고 System Call이 완료가 되면 그때야 Return 합니다. 다시 말하면, 자신의 작업을 진행하다가 다른 주체의 작업이 시작되면 다른 작업이 끝날 때까지 기다렸다가 자신의 작업을 시작하는 것입니다. 이는 제어권이 다른 작업에 있다고 표현할 수 있..
[DB] DB 데이터 dump하는 방법 : MySQL 데이터를 export, import 하자! (feat. mysqldump)
💡 본 문서는 mysql 데이터 덤프하는 'mysqldump'에 대해 정리해놓은 글입니다. 따라서 'mysqldump'를 이용하여 mysql 데이터를 export, import를 하고자 하니 참고하시기 바랍니다. mysql 설치 mysql이 설치가 되어있지 않다면 다음의 링크를 통해 설치를 진행합니다. mysql official page: https://dev.mysql.com/downloads/mysql/5.7.html#downloads 잘 설치 되었는지 확인합니다. mysql --version MySQL 데이터 내보내기(export) & 가져오기(import) MySQL 데이터 내보내기 $ mysqldump -u -p > .sql Enter password: 참고로 table_name을 작성하지 않으..

[Linux] C++ 컴파일러에 대하여 (feat. clang/LLVM, clang-format, clang-tidy)
💡 본 문서는 '[Linux] C++ 컴파일러에 대하여 (feat. clang/LLVM, clang-format, clang-tidy)'에 대해 정리해놓은 글입니다. C++ 파일을 컴파일하기 위해서 많이 사용하는 컴파일러는 gcc와 clang입니다. 본 문에서는 clang에 대한 설명 및 관련 도구들에 대해 정리하였으니 참고하시기 바랍니다. About clang C, C++, Obejctive-C, Obejctive-C++ 프로그래밍 언어를 위한 컴파일러 프론트엔드이며, LLVM을 백엔드로 사용하며 LLVM 2.6 이후로 릴리즈의 일부로 자리잡으며, GCC(GNU 컴파일러 모음)를 대체하는 것을 목표로 하고 있습니다. 현재 GCC가 GPLv3를 적용한 이후 소스 코드 공개를 꺼리는 기업들이 하나둘씩 LL..

[Linux] Executable and Linkable Format(ELF): 실행 및 링킹 파일 포맷 (feat. readelf)
Executable and Linking Format(ELF) UNIX / LINUX 기반에서 사용되는 실행 및 링킹 파일 포맷을 ELF라 하며, 하나의 ELF Header와 파일데이터로 구성됩니다. ELF header : ELF 파일의 Metadata를 가진 Header Segment : 동일한 메모리 속성(read-only, writable, ...)을 가진 하나 또는 그 이상의 섹션의 집합 Section : 특정 정보(machine instructions, symbol table, ..)를 포함하고 있는 ELF file의 작은 조각 Symbol : ELF file내에 저장된 함수 또는 변수의 디스크립션입니다. 간단한 함수 또는 변수의 정보를 포함하고 있습니다. Object file : 컴퓨터에서 읽..

[DB] 커넥션 풀(DBCP)이란? DB Connection Pool
웹 애플리케이션을 운영하다 보면 에러 로그로는 식별 할 수 없는 잠재적인 이슈가 발생합니다 대체로 애플리케이션내의 오류가 명확히 확인이 되지 않은 상태에서 Out of memory가 발생 하거나, DB 서버에서부터 발생한 장애로 인해 웹 서버가 뻗어 버리는 경우가 해당합니다. 결론부터 말하면 이러한 문제는 대부분 애플리케이션의 비지니스 로직의 오류가 아닌 WAS와 DB 서버간의 이슈로 DB Connection Pool에 대한 이해가 필요한 내용입니다. 왜 이러한 문제가 발생하게 될까? 먼저, 웹 어플리케이션을 지탱하는 WAS에서 DB 서버에 접근을 시작하고 데이터를 가져오기까지의 단계에서 가장 비용이 드는 부분이 어디일까? 과정은 다음과 같습니다. DB 서버 접속을 위해 JDBC 드라이버를 로드합니다. ..