개발 지식
-
멀티스레드 서버에 코루틴 얹기개발 지식 2022. 6. 8. 12:02
- 출처 : https://post.naver.com/viewer/postView.naver?volumeNo=33676443&memberNo=559061&vType=VERTICAL * 동기, 비동기 - 동기 방식의 일처리 : A 일을 끝내야만 B 일을 할 수 있는 방식 - 비동기 방식의 일처리 : A 작업 요청해두고 다른 작업을 하다가, A가 완료되고 난 이후 아무때나 B 작업을 시작하는 방식 * 블록킹, 논블록킹 - 블록킹 : 동기 방식 작업시 A가 완료되기까지 B 작업이 막혀있으니 블록킹 - 논블록킹 : 비동기 방식 작업시 A 작업과 무관하게 다른 작업을 할 수 있으니 논블록킹 * 코루틴
-
thread, handler, callback개발 지식 2022. 6. 8. 11:50
* thread - 프로그램 수행시 프로세스 내부에 존재하는 일련의 실행 코드. - 멀티태스킹 : 하나의 운영 체계에서 다수의 프로세스가 동시에 실행되는 환경 - 멀티스레딩 : 하나의 프로세스 내에서 다수의 스레드가 동시에 실행되는 환경 - 출처 : https://velog.io/@dlrmwl15/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-%EC%8A%A4%EB%A0%88%EB%93%9CThread%EC%99%80-%ED%95%B8%EB%93%A4%EB%9F%ACHandler - 동시 작업을 위한 하나의 실행 단위 - 앱을 실행하면 메인 스레드가 시작되고, 해당 스레드는 앱의 기본 실행을 담당. UI 스레드라고도 부름. - 임의의 스레드는 메인 스레드의 역할과 유관..
-
[개발 지식] 데이터와 주소개발 지식 2022. 4. 8. 14:45
데이터가 움직이는 통로인 bus를 통해서 한번에 송수신할 수 있는 데이터의 크기가 32bit 혹은 64bit. 즉, bus가 32개 혹은 64개의 선으로 구성되어있다는 것. 각 선은 0 또는 1을 전송. CPU는 이 bus로 들어오는 32bit 혹은 64bit 데이터를 한번에 처리할 수 있어야한다. 포인터의 크기는 16진수 8자리, 2진수 32자리 즉 32bit = 4Byte가 된다. 이 말은 32자리의 2진수만큼 공간을 확보한 상태에서 포인터가 할당된다는 것을 의미한다. 그런데 32자리의 2진수로 표현하는 것보다 16진수 8자리로 표현하는 것이 더 일반적이다.
-
[개발 지식] 컴파일, 링크, 디버그, 빌드개발 지식 2022. 4. 7. 10:25
출처 : https://starrecode.tistory.com/8 * 컴파일 컴파일이란 인간이 읽기 편하게 만든 코드를 기계가 읽을 수 있는 언어로 바꿔주는 것입니다. 컴파일은 컴파일러가 하게 됩니다. 컴파일러는 특정 프로그래밍 언어(C/C++)로 만들어진 문서를 목적코드(컴퓨터가 처리할 수 있는 언어)로 변환합니다. 이렇게 만들어진 파일은 Object 파일로 만들어집니다. * 링크 링크란 나눠져있는 Object 파일이나 라이브러리 등을 연결하는 작업을 말합니다. * 디버그 디버그란 오류를 잡아주는 작업을 말합니다. 프로그래밍 과정에서 오타를 내서 오류가 발생하거나 실행 과정에서 예상치 못한 예외가 발생할 수 있습니다. 이러한 오류를 검사해주는 작업입니다. * 빌드 빌드란 위의 과정들을 차례대로 실행하..
-
[개발 지식] C/C++ 외부 라이브러리 dll/lib 차이점개발 지식 2022. 4. 7. 10:17
출처 : https://wnsgml972.github.io/setting/2018/11/01/dll_lib/ * dll/lib 차이점 둘다 외부의 코드를 사용하기 위한 라이브러리 dll은 동적 라이브러리, lib는 정적 라이브버리 dll은 Runtime 중에, lib는 Compile 할때 필요합니다. * lib - Link 단계에서 정적으로 라이브러리 파일을 추가합니다. 일반적으로 실행 파일(exe)을 만들 때는 소스 코드를 컴파일하고 만들어진 obj 파일을 링커가 하나로 묶어 exe 파일을 만듭니다. 여기서 lib을 사용하면 링크 단계에서 링커가 이 lib파일도 같이 묶어서 하나의 exe 파일을 만들게 됩니다. 쉽게 말하면 우리가 컴파일에 성공해 만들어지는 exe 파일 안에 lib의 내용이 모두 들어가..
-
[개발 지식] visual studio 관련 Debug/Release, x86/x64, 로컬/원격 디버거개발 지식 2022. 4. 7. 09:54
* Debug/Release (1) 출처 : https://salon.tistory.com/19 디버그(Debug) : 시스템의 논리적인 오류나 비정상적 연산을 찾아내고 그 원인을 밝히고 수정하는 작업 과정 릴리스(Release) : 소프트웨어 배포 생명 주기에서 컴퓨터 소프트웨어의 배포를 의미 디버그 모드와 릴리스 모드는 정의에서도 알 수 있듯이 컴파일 목적이 서로 다른 빌드입니다. Debug Release 코드 최적화 여부 X O 파일 크기 ↑ ↓ 코드 실행 속도 ↓ ↑ 메모리 사용량 ↑ ↓ 컴파일 속도 ↑ ↓ - 코드 최적화 코드 최적화란 언어를 컴파일하는 과정에서 컴파일러가 판단하여 최적화를 진행함을 의미합니다. - 파일 크기 최적화로 인해 Release 모드로 컴파일 한 것의 용량이 더 작습니다..
-
소켓으로 문자열 전송 (TCP/IP 통신)개발 지식 2022. 4. 5. 14:14
* 소켓(SOCKET)이란? 출처 : https://helloworld-88.tistory.com/215 소켓은 네트워크로 데이터를 보내거나 네트워크로부터 데이터를 받기 위한 창구 역할을 한다. 그러므로 프로세스가 데이터를 보내거나 받기 위해서는 반드시 소켓을 열어서 소켓에 데이터를 써보내거나 소켓으로부터 데이터를 읽어들여야 한다. 소켓은 프로토콜, IP주소, 포트넘버로 정의된다. 프로토콜은 통신에서 어떤 시스템이 다른 시스템과 통신을 원활하게 수용하도록 해주는 통신 규약을 말한다. IP주소는 전 세계 컴퓨터에 부여된 고유의 식별 주소이다. 포트는 네트워크 상에서 통신하기 위해서 호스트 내부적으로 프로세스가 할당받아야 하는 고유한 숫자이다. 즉 같은 컴퓨터 내에서 프로그램을 식별하는 번호이다. 소켓이란 ..