본문 바로가기

전체 글

(94)
[클린코드 Javascript] 전역 공간 신경쓰기 1학년때 배우기로, 전역변수는 프로그램 생명주기 처음부터 끝까지 살아있기에 지양해야한다고 배웠다. 즉, 실행이 끝날 때 까지 메모리 공간을 차지하기 때문에, 메모리 부족의 원인이 될 수 있다. 또한 전역 변수는 어떤 함수에서든지 접근이 가능하기 때문에, 멀티 태스킹 환경에서 예상치 못한 문제를 일으킬 수 있다. ---------------------------------------------------------------------------------------------------------------------------------------------------------- 여기서 자바스크립트 한 스푼을 추가하자면, 자바스크립트는 브라우저 환경의 경우 window객체가 가장 상위 객체, Node..
[1일1cs]데이터베이스 무결성 제약조건 먼저 무결성이란, 일관성과 정확성을 지키기 위한 규칙이다. 여기서 일관성이란 트랜잭션이 정의된 모든 조건에 맞게 데이터값이 변경되는 것. 또한 트랜잭션 전 후 같은 상태로 유지되어야한다 정확성이란 데이터의 중복 또는 누락없이 정확한 상태를 말한다. 이들을 유지하는 상태를 무결성 상태라고 한다 무결성이 지켜지지 않는다면 논리적 오류 중복 재설계등 여러 곳에서 문제가 발생하기에 꼭 필요하다. 조건 1. 개체 무결성 이는 기본 키 제약이라고도 한다. 말그대로 기본 키에 집중한 제약. 기본 키에는 NULL이 올 수없다. (기본 키가 고유값을 갖어야 하기에 당연하다 생각들긴한다.) 또한 기본 키는 (고유성을 갖어야하에) 테이블 내에 하나만 존재해야한다. 2. 참조 무결성 이는 외래 키 제약이다. 여기서 외래 키는..
절차지향 vs 객체지향 절차지향의 대표적 예시로 C언어가 있고, 절차 즉 순서대로 처리하는 프로그래밍 기법이다. 이는 컴퓨터 처리 구조와 비슷하기에 실행 속도가 빠르나, 유지보수가 용이하지 않다. 반대로 객체지향에는 JAVA C++등 언어가 있고, 객체로 모델링해 인스턴스를 만들어 내는 프로그래밍 기법이다. 이는 코드 재활용, 유지보수가 용이하나 설계가 비교적 어렵고, 실행 속도도 비교적 느리다.
[1일1cs] 컴파일러, 인터프리터 컴파일러 : 1. 전체를 한꺼번에 해석. 2. 기계어 번역과정에서 object파일을 만들고 다시 링킹하는 과정이 있기에, 메모리사용이 더 증가. 하지만 이 실행파일을 만든다면 속도가 빨라짐. 3. 한꺼번에 실행하므로, 오류도 실행전에 파악가능. 4. C, C++, JAVA 등 인터프리터 : 1. 한 번에 한 문장 해석. 2. object파일 만들고 링킹하는 과정이 없음. 메모리 효율 좋음. 3. 오류를 실행하고 나서야 파악가능. 4. Python, Javascript 등
DNS와 DHCP DNS는 네임서버에서 이루어지고, 즉 사람이 외우기 힘든 직관적이지 않은 숫자로 된 IP주소를 www.naver.com 과 같이 변환해 주는 프로토콜이다. DHCP는 IP주소, 서버 주소, 게이트웨이 주소등을 할당해주는 프로토콜. IP주소 중복을 방지한다. (고유성확보) 우리의 IP주소는 알다시피 동적인데 이는 DHCP에 요청을 보낼 때 마다 변한다. 먼저 우리의 PC에서 DHCP 서버를 찾는 과정을 거친다. DHCP서버를 찾았다면 IP주소 요청 메세지를 보낸다. DHCP에서는 우리의 PC에서 IP주소 리스트를 보낸다. 우리의 PC는 DHCP의 리스트중 하나를 골라서 요청한다. DHCP는 이를 할당해주고 임대 기간을 통보한다. 이제 우리는, 인터넷을 사용한다.
[1일1cs] 동기와 비동기 블로킹과 논블로킹 동기(Synchronus)와 비동기(Asynchronus)는 프로세스 순서 보장에 관심이 있는 개념. 블로킹과 논블로킹은 실행 제어권에 관심이 있는 개념. 동기는 process A 와 process B 가 있다면, A가 B의 완료에 계속해서 신경을 쓴다. 그렇게 B가 끝나면 A가 실행하고자 한다. (순서 보장) 반면 비동기는 A가 B의 완료에 신경을 쓰지 않고, B가 종료되지 않아도 A가 실행된다. (순서 보장 X) 블로킹과 논블로킹은 process A와 process B 가 있다면, A도중에 B가 실행된다면, 제어권을 B에게 넘긴다면 블로킹. A도중에 B가 실행되어도, A가 계속 실행되며 (제어권을 넘기지 않고) B를 실행한다면 논블로킹. 동기와 비동기 그리고 블로킹과 논블로킹은 조합해서 사용하곤 한다..
[1일1cs] 대표적인 sql종류 3가지 설명, 종류별 명령어 1) DML manipulation 즉, 조작어이다. 데이터를 조작하는 만큼 직관적으로, SELECT(데이터 조회) INSERT(데이터 삽입) DELETE(데이터 삭제) UPDATE(데이터 수정) 가 있다. 2) DDL Define 즉, 정의하는 문이다. 데이터를 정의하는 만큼 직관적으로, CREATE(생성) ALTER(변경) RENAME(이름 재정의) , DROP(삭제) 가 있다. 3) DCL Control 즉 조작어이다. GRANT(권한 부여), REVOKE(권한 취소) +) TCL transaction control을 하는 언어로, COMMIT ( 내용 반영) ROLLBACK(커밋 이전으로 돌림) 등이 있다.
[1일1cs] 라이브러리 vs 프레임워크 간단하게 제어권이 누구에게 있느냐에 따라 구분이된다. 라이브러리는 제어권이 개발자에게있고, 프레임워크는 프레임워크 에게 있다. 라이브러리는 개발자가 제어권을 갖고, 사용처에 맞게 개발자가 활용하는 반면, 프레임워크는 전체적 흐름을 프레임워크에게 제어권을 넘김으로써, 프레임워크가 개발자의 제어권을 대신한다.