분류 전체보기 228

[C / get_next_line] 파일 디스크립터 (File Descriptor)

파일 디스크립터 (File Descriptor) 리눅스 혹은 유닉스 계열 시스템에서 프로세스가 파일을 다룰 때 사용하는 개념으로 프로세스에서 특정 파일에 접근할 때 사용하는 추상적인 값 파일에 빨리 접근할 수 있도록 도와주는 파일의 별명같은 것이다. 일반적으로 0과 양수인 정수값을 갖는다. - 유닉스 시스템에서 모든 객체들을 파일이라고 한다. ( 디렉토리, 소켓, 파이프 등 모든것이 하나의 파일) 유닉스 시스템에서 이 객체들에 접근할 때 파일 디스크립터를 사용한다. - 응용 프로세스가 파일을 열거나 생성시 파일 디스크립터를 얻게 된다. 얻게된 파일 디스크립터는 이후 일어나는 모든 동작(읽기, 쓰기, 파일 동작 제어 등)에서 그 파일을 가리키는데 사용된다. - 파일을 open()시 file discript..

42SEOUL 2022.03.16

[C / get_next_line] 정적 변수 (static variable)

정적 변수 (static variable) 함수가 종료되어도 프로그램이 종료되지 않는 이상 메모리상에 남아있는 변수 static 자료명 변수명; 보통 일반 지역변수는 스택(Stack) 영역에 저장된다. 이 스택 영역의 변수들은 함수 호출시 메모리에 할당되며 함수 종료시 메모리에서 사라진다. static 변수는 데이터(Data)영역에 저장되는데, 전역 변수도 이곳에 저장된다. 데이터 영역은 프로그램 시작시 0 또는 NULL이 할당되며, 프로그램 종료시 소멸된다. 이해를 돕기위한 코드 int test() { static int cnt = 0; cnt++; return (cnt); } int main() { printf("%d\n", test()); printf("%d\n", test()); return (0..

42SEOUL 2022.03.16

[Spring] CORS 에러

CORS (Cross-Origin Resource Sharing) 서로 다른 Origin(출처)끼리 요청을 주고 받을 수 있게 정해둔 표준, 보안 정책 Origin : 서버의 위치를 찾아가기 위해 필요한 가장 기본적인 것들을 합쳐놓은 것 ex) URL CORS 에러 리액트와 스프링 사이에서 데이터를 전달하는데 CORS 정책 위반으로 에러가 발생했다. CORS를 설정해주지 않았거나 제대로 설정하지 않아 원하는 리소스를 공유하지 못 하는 것이다. CORS 에러 해결 방법 @CrossOrigin 어노테이션을 사용하여 해결했다.

6. 트리

트리 노드로 이루어진 자료구조 트리는 하나의 루트 노드를 갖는다. 루트 노드는 0개 이상의 자식 노드를 갖는다. 그 자식노드 또한 0개 이상의 자식노드를 갖는다. 트리에는 싸이클이 존재할 수 없다. 각 노드느 부모 노드로의 연결이 있을수도 없을수도 있다. 비선형 자료구조로 계층적 관계를 표현 기본 용어 노드 : 한 정보 아이템 + 다른 노드로 뻗어진 가지 차수 : 한 노드의 서브트리 수 단말 노드 : 차수 = 0 비단말노드 : 차수 != 0 형제 : 부모가 같은 노드 리프 노드 : 자식이 없는 노드 부모 자식 트리의 차수 : 그 트리의 노드의 최대 차수 조상 : 루트에서부터 그 노드에 이르는 경로상의 모든 노드 레벨 루트 : 레벨 1 자식 : 부모 + 1 트리의 높이, 깊이 : 최대 레벨 산술식 A + ..

학교/자료구조 2022.03.14

5. 이중 연결리스트

이중 연결리스트 각 노드가 선행노드와 후속 노드에 대한 링크를 가지는 리스트 노드의 왼쪽링크와 오른쪽 링크를 가지고 헤드노드를 가진다. 노드 구조 typedef struct node *nodepoint; typedef struct node { nodepoint llink; int data; nodepoint rlink; } 노드 삽입 void dinsert(nodepoint node, nodepoint newnode) { newnode -> llink = node; newnode -> rlintk = node -> link; node -> rlink -> llink = newnode; node -> rlink = newnode; } 노드 삭제 void ddelete(nodepoint node, nodep..

학교/자료구조 2022.03.14

4. 연결 리스트

연결리스트 (Linked list) 노드를 연결시킨 자료구조 노드는 데이터와 포인터를 가지고 있다. 장점 길이가 가변적 단점 데이터를 바로 찾아낼 수 없고, 전부 탐색해야 한다. 노드 구조 typedef struct listNode listNode *listpoint; typedef struct listNode{ int data; listpoint link; }; 저렇게 정의를 어떻게 하는지 이해가 안 됐는데 암묵적 허용(?)이라고 한다. 두 개의 노드 가진 연결리스트 생성 listpointer create2() { listpoint first, second; Malloc(first, sizeof(listNode); Malloc(second, sizeof(listNode); second -> link =..

학교/자료구조 2022.03.14

[SQLD] 1.1.4. 관계 / 1.1.5. 식별자

관계관계엔터티의 인스턴스 사이의 논리적인 연관성으로서, 존재의 형태나 행위로서 서로에게 연관성이 부여된 상태ex ) [강사]가 [수강생]을 가르친다. 관계의 패어링 (Paring)패어링 : 엔터티 안에 인스턴스가 개별적으로 관계를 가지는 것관계 : 패어링의 집합관계 패어링 : 각 엔터티의 인스턴스들은 자신이 관련된 인스턴스들과 관계의 어커런스로 참여하는 형태 UML(Unified Modeling Language)연간관계존재적 관계, 실선으로 표현ex) DB팀에 만쥬사원이 소속되어 있다. => DB팀과 만쥬사원은 존재의 형태의존관계행위에 의한 관계, 점선으로 표현ex) 고객이 주문을한다. => 고객과 주문은 행위에 의한 관계 관계 표기법관계명엔터티가 관계에 참여하는 형태관계시작점 : 관계가 시작되는 편관계..

학교/SQLD 2022.03.09

[C / Libft] 컴파일 과정

컴파일 과정 1. 소스파일 (*.c) 사람이 이해할 수 있는 언어 2. 목적파일 (*.o) 기계가 이해할 수 있는 언어 이 때 gcc 컴파일러 필요 // 소스 파일로 목적 파일 생성 gcc -c 3. 실행파일 (a.out || .exe) 기계어로 된 목적파일과 시스템 라이브러리를 묶어 생성한 파일 링커 : 목적파일들과 c 라리브러리, 사용자 라이브러리들을 링크한다. // 생성된 목적 파일로 링커 과정을 통해 실행 파일 생성 gcc -o

42SEOUL 2022.03.09

[C] File 종류와 함수

파일의 종류 텍스트 파일 (Text File) .txt 확장자를 가지는 파일 사람의 눈으로 쉽게 읽을 수 있는 파일로 문서 편집기를 통해 읽거나 편집 가능한 파일 이러한 형태의 파일은 데이터가 그대로 노출되는 문제가 발생할 수 있다. 바이너리 파일 (Binary File) 컴퓨터를 위한 파일 사람의 눈으로 식별할 수 있는 데이터가 아닌 기계가 식별할 수 있는 0 또는 1로 만들어진 데이터를 저장한 파일의 형태 텍스트에 비해 더 많은 양을 저장할 수 있지만, 눈으로 식별하기 쉽지 않다. 데이터가 그대로 노출되지 않기 때문에 텍스트 파일보다 안전 File 함수 open 파일을 여는 함수 int open(const char *pathname, int flags[, mode_t mode]); pathname :..

42SEOUL 2022.03.08

[React] 로그인/로그아웃 유지하기 ( sessionStorage, localStorage)

header {(sessionStorage.getItem("isLogin") === null) ? 로그인 : 로그아웃 } login if(this.state.studentId && this.state.password) { axios.post("/logIn", { studentId: this.state.studentId, password: this.state.password }) .catch(function(error){ alert("학번 또는 비밀번호를 다시 확인해주세요."); }) .then((response) => { let id = response.data.studentId; let pw = response.data.password; console.log(id, pw); if(id === this...