본문 바로가기

전체 글56

Multi Thread 환경에서 성능 비교 1탄 ※  아래 내용은 스스로 공부한 내용을 정리한 글입니다.     ※  때로 정확하지 않을 수 있으며, 참고만 부탁드립니다.     ※  잘못된 내용이 있을시 댓글로 알려주시면 감사하겠습니다. 테스트 조건8개의 멀티 스레드를 띄우고, 3초간 while 루프 안에서 count++ 하도록 함.단, 모든 스레드가 완전히 띄워졌을 때 루프를 시작해야 한다. 비교 케이스 local 변수 카운팅tls 변수 카운팅global 변수 카운팅global 변수 mutex lock 사용 시 카운팅 1. local 변수local 변수는 stack에 저장된다. 그리고 스레드끼리는 stack을 공유하지 않는다.위 그림처럼, 스레드마다 stack 크기가 지정되므로 스레드끼리 독립적인 메모리 주소를 갖게 된다.   2. TLS 변수TL.. 2023. 7. 16.
Multi Thread에서 mutex lock 사용하기 ※  아래 내용은 스스로 공부한 내용을 정리한 글입니다.     ※  때로 정확하지 않을 수 있으며, 참고만 부탁드립니다.     ※  잘못된 내용이 있을시 댓글로 알려주시면 감사하겠습니다.    멀티 스레드 환경에서 공유 자원에 동시에 접근해도 될까?멀티 스레드 환경에서 공유된 자원에 동시에 접근하게 되면, 스레드끼리 경쟁이 일어나면서 false sharing(거짓 공유), cache thrashing(캐시 쓰레싱), cache invalid storm 같은 문제가 발생한다. 이를 해결하기 위해 공유 자원에 접근할 때 하나의 프로세스가 접근하고 있는 경우 다른 프로세스는 접근하지 못하도록 제한하기 위해 mutex lock을 이용한다. Mutex는 무엇일까?Mutext는 mutual exclusion이라.. 2023. 7. 10.
이중 포인터(double pointer) 이해하기 in C 포인터에 대해 간단히 말하자면,포인터란 해당 변수의 메모리 공간 주소를 가리키는 변수를 말한다. 변수에서 쓰는 * 표시는 역참조 표시이며, 해당 변수가 가리키는 메모리주소의 값을 가져오는 것을 의미한다. 사실 말로만 설명하면 이해하기 어려운 게 포인터다. 그래서 직접 주소값을 찍어보며 포인터 변수를 알아보았다.int a = 10;int *b = &a;int **c = &b;이렇게 세 가지의 변수를 선언했다. a는 정수형 변수,b는 포인터 변수,c 또한 포인터 변수지만 b와 달리 이중포인터로 선언했다. a와 b, c의 메모리 주소값을 보자.printf("a address : %p\\n", &a);printf("b address : %p\\n", &b);printf("c address : %p\\n", &c.. 2023. 7. 9.
ARP, Address Resolution Protocol | 직접 설명해보는 ARP 흐름 ※  아래 내용은 스스로 공부한 내용을 정리한 글입니다.     ※  때로 정확하지 않을 수 있으며, 참고만 부탁드립니다.     ※  잘못된 내용이 있을시 댓글로 알려주시면 감사하겠습니다.     ※ 노란 형광펜은 궁금점, 회색 형광펜과 파란 형광펜은 궁금점 해결에 대한 표시 입니다.ARP (Address Resolution Protocol) LAN (L2) 에서 목적지를 제대로 찾을 수 있도록 돕는다.  ARP의 흐름을 알아보자. 먼저 FTP에 hostname이 들어온다. FTP 클라이언트는 DNS의 resolver에게 hostname을 주고 IP 주소를 얻는다. FTP 클라이언트는 TCP와 IP 주소를 연결하는 설정을 한다. TCP는 IP 주소와 IP datagram을 보내면서 remote host.. 2022. 9. 29.
Port, IP, MAC 직접 설명해보는 식별자 이야기, 그리고 host, swtich, network의 관계 ※  아래 내용은 스스로 공부한 내용을 정리한 글입니다.     ※  때로 정확하지 않을 수 있으며, 참고만 부탁드립니다.     ※  잘못된 내용이 있을시 댓글로 알려주시면 감사하겠습니다.     ※ 노란 형광펜은 궁금점, 회색 형광펜과 파란 형광펜은 궁금점 해결에 대한 표시 입니다.  7 Layer에는 세 가지의 식별자가 있다. L2의 MAC 주소, L4의 Port 번호, L3의 IP 주소다. 이것들은 무엇에 대한 식별자일까? MAC 주소는 H/W 단의 NIC (Network Interface Card) 에 대한 식별자다. H/W에 붙은 번호로 이해하면 된다. 더 쉽게 말하면 LAN 카드다. LAN 카드는 모두 MAC 주소를 가지고 있다. 만약 노트북이 두 개의 NIC을 가지고 있으면 MAC 주소도 .. 2022. 9. 29.
직접 설명해보는 switch가 하는 일 ※  아래 내용은 스스로 공부한 내용을 정리한 글입니다.     ※  때로 정확하지 않을 수 있으며, 참고만 부탁드립니다.     ※  잘못된 내용이 있을시 댓글로 알려주시면 감사하겠습니다.   ※ 노란 형광펜은 궁금점, 회색 형광펜과 파란 형광펜은 궁금점 해결에 대한 표시 입니다.  "switch가 하는 일은 swtiching이다"  swtich는 "교차로", swtiching은 "어떤 인터페이스의 경로 선택", 그리고 Network는 "고속도로", "고속도로 위 이정표"는 라우팅 테이블, packet은 "자동차"라고 하자.경로 1번은 A->B->E->D->목적지경로 2번은 A->D->목적지 라고 할 때, 경로 2번이 훨씬 빠르고 효율적이다.  A, B, C, D, E, F 같은 각 지점은 라우터라고 .. 2022. 9. 29.
직접 설명해보는 패킷의 생성 원리 ※  아래 내용은 스스로 공부한 내용을 정리한 글입니다.     ※  때로 정확하지 않을 수 있으며, 참고만 부탁드립니다.     ※  잘못된 내용이 있을시 댓글로 알려주시면 감사하겠습니다.   ※ 노란 형광펜은 궁금점, 회색 형광펜과 파란 형광펜은 궁금점 해결에 대한 표시 입니다.   상황 전제 )proccess가 소켓에 I/O (입출력)을 시도한다. 이때 memory에 저장된 stream 데이터가 생긴다.  stream이란, 소켓 수준의 데이터 단위를 말한다. 소켓은 TCP라는 요소를 user mode application이 접근할 수 있도록 추상화한 인터페이스를 말한다. 소켓의 본질은 file이다. 그리고 소켓 수준의 데이터 단위는 stream이다. stream은 시작 지점부터 길게 쭉- 늘어진 데.. 2022. 9. 29.
직접 설명해보는 TCP/IP 송수신 원리 ※  아래 내용은 스스로 공부한 내용을 정리한 글입니다.     ※  때로 정확하지 않을 수 있으며, 참고만 부탁드립니다.     ※  잘못된 내용이 있을시 댓글로 알려주시면 감사하겠습니다.   ※ 노란 형광펜은 궁금점, 회색 형광펜과 파란 형광펜은 궁금점 해결에 대한 표시 입니다.    컴퓨터 구조는 세 부분으로 이루어진다. OS 수준의 User application (User mode)과 System S/W인 Kernel, 그리고 H/W 영역이다. 이 영역에 OSI 7 Layer가 위치한다. Kernel에는 Network 계층 L3와 Transport 계층 L4가 위치하고 있고,  User application에는 L5, L6, L7이 위치한다. 이를 더 간소화하여 네 개의 계층으로도 설명할 수 있다.. 2022. 9. 27.
Wireshark 개론, 네트워크 패킷 분석 툴 1. wireshark 란 무엇일까?무료 오픈 툴(tool)로서 네트워크 상의 패킷을 분석해서 보여주는 도구참고 > 처음 배포되었을 때의 툴의 이름은 Ethereal(이더리얼)이었으나 회선 위에서 상어가 패킷을 잡아먹는 것과 유사하다고 하여 프로그램의 이름을 wireshark(와이어샤크)로 개명유닉스와 윈도우에서 둘 다 사용이 가능하며 실시간으로 패킷 확인이 가능하여 유용추가로 패킷을 캡쳐하기 위해 pcap 네트워크 라이브러리를 사용엔지니어들이 네트워크적 문제를 해결하는데 많이 사용하는 도구 2. wireshark 사용법1번메뉴들을 나타내며 [ File | Edit | View | Go | Capture | Analyze | Statistics | Help ] 총 8개의 메뉴로 구성되어 있음[File] .. 2022. 8. 30.
Linux 생태계 이해하기 🐧 Linux?유닉스에 관심이 많았던 리누스 토발즈가 유닉스 시스템의 작은 버전인미닉스(Minix) 보다 좋은 운영체제를 만들자는 목표로 리눅스를 만들었다.리눅스는 커널이라고 부르는 리눅스의 핵심 부분만 작성해 배포한다.일반적으로 리눅스는 (리눅스 토발즈가 만든) 커널 + 컴파일러 + 셸 +기타 응용 프로그램이 조합된 배포판을 말한다. Linux의 주요 특징폐쇄적인 유닉스와는 다르게 리눅스는 누구든지 자유롭게 프로그램을 변경하여 유통시킬 수 있는 프리웨어이다. 우분투, 페도라 모두 수많은 배포판 종류 중 하나이다.다중 사용자, 다중 처리 시스템커널을 비롯해 대부분의 응용 프로그램의 소스 코드가 공개된 시스템(GPL)다양한 네트워크 프로토콜 및 환경 지원 : 리눅스는 네트워크에 관해 타의 추종을 불허할 .. 2022. 8. 30.
[버스커즈 프로젝트] 프로젝트를 마무리하며, 피드백 시간 가지기 🍊왕고냐가 구현한 기능 링크 🔍 👉프론트 작업 레파지토리 👉백엔드 작업 레파지토리 🍊왕고냐가 버스커즈 프로젝트로 느낀 점 에러 정리는 아주 중요하다. 어제 본 에러가 오늘도 보이고, 방금 해결한 에러로 팀원도 고생할 확률이 높다. 에러 메세지와 해결원인, 해결법을 기록해두면 공부도 되거니와 프로젝트 진행률을 높이는데 기여할 수 있었다.👍 에러 정리 참고 왕고냐의 기술 블로그 프로젝트를 진행하는데 있어, 팀원간의 코드리뷰와 서비스 흐름에 대한 토론은 필요하다. AJAX를 이용하여 페이지 이동 없는 화면을 구현할 때 팀원과 나의 DOM을 넣는 방식에 차이가 있었다. "이걸 이렇게도 할 수 있구나" 라는 생각은 더 나은, 더 효율적인 방법을 고안하게 만들었다. 생각하지 못했던 색다른 방법을 보면 사고의 확장이.. 2022. 7. 21.
[Spring boot] [에러 해결] 스택오버플로우요..? 드디어 내게도 이런 에러가 컴퓨터는 비명을 지름 하지만 에러 사랑꾼인 나는 조금도 놓치지않고 스택오버플로우라며 좋아 날뛰었다. 실제로 보는 건 처음이기때문... 인증샷 먼저 박고 디버깅을 해볼까! 에러 원인 아.. business 설계 담당자가 showmapper. 를 빠트려서 메소드 무한 반복... ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 에러 해결 Public int getTotal(ListDTO listDTO) { return showmapper.getTotal(listDTO) } 깨알 지식 stack overflow 란? 지정한 스택 메모리 사이즈보다 더 많은 스택 메모리를 사용하게 되어 에러가 발생하는 상황을 일컫는다. stack overflow 는 언제 발생하는가? 1. 재귀 함수 재귀 함수는 스택 오버플로우의 대표적인 사례다. 예시.. 2022. 6. 19.