[C++] IOCP OverlappedEx 구조체에 관하여
·
C++
iocp서버 공부를 하던 중 클라가 접속했을 때 정상적으로 큐에 반응은 오나구조체 OverlappedEx라는 멤버변수의 값이 변경되는 버그가 발생했고 왜 발생하였는가와 어떻게 해결했는가를 공유하려합니다. OverlappedEx 구조체enum CompletionType{ NONE, RECV, SEND, CONNECT, DISCONNECT,};struct OverlappedEx{ LPOVERLAPPED overlapped = {}; CompletionType type = NONE; char _buf[BUF_SIZE] = {};};OverlappedEx의 구조체입니다.멤버 변수로는 overlapped와 type, buf가 있습니다. 문제점unsigned __stdcall IOCP::AcceptThread(vo..
[SQL] sql 문법 입문 (1)
·
SQL
※ MySQL shell을 다룹니다. DB 서버 접속\sql // sql로 변경\connect --mysql root@localhost:3306 // 루프백 3306 포트에 root 권한으로 접속아마 처음이면 비밀번호 입력하라고 할겁니다.설치할 때 설정했던 비밀번호 입력하면 됩니다.DB 생성create database [데이터베이스명];DB 리스트 확인 및 접속show databases;use [데이터베이스];테이블 생성create table [테이블명](컬럼명 타입 추가설정, ...);문자형 데이터타입데이터 유형정의CHAR(n)고정 길이 데이터 타입(최대 255byte)- 지정된 길이보다 짦은 데이터 입력될 시 나머지 공간 공백으로 채워진다.VARCHAR(n)가변 길이 데이터 타입(최대 ..
42서울 본과정 후기
·
잡지식
42서울 소개교수, 학비, 교재가 없는 개발자 양성소(부트캠프) 입니다.처음 1달간의 시험을 마치고 합격되면 약 2년간 본과정생으로 다닐 수 있습니다.본과정생들은 서클(레벨)과 블랙홀(남은 일수)가 주어집니다.블랙홀(남은 일수)가 모두 소진될 시 자동 퇴학 처리됩니다.자신의 서클에 맞는 과제가 있고 그 과제들을 무사히 통과할 때마다 블랙홀 일수가 추가로 주어집니다.과제는 같은 학생들에게 평가를 받아서 평가자에게 OK 사인을 n번 받으면 통과됩니다.평가를 받으려면 1포인트 차감, 평가를 하면 1포인트 획득하는 시스템이 있습니다.일정 서클을 통과하면 본과정생 다음인 42Member가 됩니다.42서울 솔직 후기저는 고졸에 공고 꼴통 출신이고 IT에 관해 무지했었습니다.그런 제가 제작년 8기 교육생으로 본과정에..
[C언어] 함수 포인터 개념과 활용
·
C
개인적으로 C언어의 꽃이라고 생각되는 함수 포인터 개념을 이번 포스팅에서 다뤄보려고 합니다. 1. 함수 포인터란?일반적으로 포인터란 자기 자신 이외의 메모리 주소를 담는 변수라고 표현됩니다.이와 비슷하게 함수 포인터는 함수의 주소를 담는 변수라고 표현됩니다. 함수 포인터 또한 결국 포인터이기에 변수뿐만 아니라 함수 인자로도 사용할 수 있죠우선 생김새를 배워봅시다.[함수 반환형*] (*변수명)(인자)ex) void* (*print)(char*);일반 변수처럼 똑같이 자료형이 있고 변수명이 있습니다.일반적으로 인자 형태는 변수명 뒤에 표시합니다. ※ 인자 부분을 비워둘 수도 있습니다. (비-프로토타입)이는 C언어에서만 적용되고 C++은 반드시 인자갯수, 타입을 명시해줘야합니다.2. 함수 포인터의 장단점장점 ..
Visual Studio BOM 없이 파일 저장하는법
·
잡지식
BOM : Byte Order Mark보통 UTF-8 파일 맨 앞부분에 EE BB BF 값이 들어가 파일 시스템 관리할 때 귀찮게 구는 녀석입니다. 찾아보니 without BOM 형식으로 저장하는 방법이 있어 공유합니다. visual studio에 with BOM으로 설정되어있는 파일을 열어줍니다. 파일 → 다른 이름으로 저장저장 고급 옵션 → 인코딩하여 저장유니코드(서명 없는 UTF-8) - 코드 페이지 65001 설정 후 저장하면 끝입니다. if (fopen_s(&contactsFile, CONTACTS_PATH, "r+, ccs=UNICODE") != 0) { if (fopen_s(&contactsFile, CONTACTS_PATH, "w+, ccs=UNICODE") != 0) _OccurErro..
Visual studio 메모리 릭 확인하기
·
잡지식
디버그 → 성능 프로파일러메모리 사용량 클릭 후 시작의심가는 타이밍에 스냅샷 만들기 클릭프로그램이 끝나면 해당 사진처럼 스냅샷별로 메모리 사용량이 나옵니다.스냅샷들 숫자부분 또는 왼쪽 아이콘을 클릭하면 기본 메모리 창이 나옵니다.여기서 스택을 누르고 힙 → 외부 프레임 → ...타고타고 가다보면 어느 함수에서 메모리 릭이 났는지 알 수 있습니다.
[C언어] 비트 연산자를 활용하여 계산기 만들기
·
C
※사칙 연산(+, -, *, /)만 다룹니다.논리회로는 귀찮아서 따로 그리지 않았습니다. 1. 반가산기와 전가산기컴퓨터는 전가산기를 통해 덧셈을 수행합니다.그 과정에서 반가산기를 사용하기에 반가산기를 포함하여 설명드립니다. 이진수 덧셈과 십진수 덧셈은 다를게 없습니다. 10진수 두 수 7과 4가 있다고 칩시다.이 두 수의 이진수 덧셈과 십진수 덧셈과정을 봅시다. 각 수를 A와 B라고 부르겠습니다.10진수인 경우A, B 각각 일의 자리부터 더한다.A의 현재 자릿수에 1을 B의 현재 자리수만큼 덧셈을 반복한다.더하는 도중 현재 자릿수가 9를 초과할 시 현재 자릿수를 0으로 만들고 다음 자릿수를 1올림한다. (올림 발생)올림 발생 후 나머지를 더한다.이 네가지대로 더한다면 A가 7이고 B가 4니까7에 1을 4..
Visual Studio 라이브러리 프로젝트 참조 (C/C++)
·
잡지식
1. 기존 프로젝트 추가 설정 파일 → 추가 → 기존 프로젝트를 클릭하면 파일 탐색기가 열립니다.프로젝트명.vcxproj 파일을 찾아 열기를 눌러주시면 아래와 같이 프로젝트가 추가됩니다. 2. 프로젝트 참조 및 종속성 설정참조할 프로젝트 → 참조 우클릭  → 참조 추가체크 확인참조할 프로젝트 → 빌드 종속성 → 프로젝트 종속성체크 확인3. 속성 → C/C++ → 일반 → 추가 포함 디렉터리 설정참조할 프로젝트 우클릭 하면 나오는 속성창입니다.구성 속성 → C/C++ → 추가 포함 디렉터리 → 편집 순으로 눌러줍니다.해당 프로젝트 .sln 파일이 있는 경로로 설정 후 확인4. 속성 → 링커 → 일반 → 추가 라이브러리 디렉터리 설정3번에서 했던거처럼 속성창 → 구성 속성 → 링커 → 일반 → 추가 라이브러..
원피스는 실존하다
대해적시대