반응형

Today I Learned/컴퓨터기초 10

네트워크 배우면 까먹고 배우면 까먹고 ,, 기본 개념 확실히 정리하기 (1)

OSI 7계층, TCP/IP 등 공부는 했지만 공부하는 단계에서 직접적으로 사용해본적이 없다보니 시간이 지날수록 머릿속에서 흐릿해져 갑니다. 그때마다 새롭게 공부하기 아쉬웠는데, 우연히 아주아주 잘 설명된 글을 하나 보게되어 이 글을 짧게 정리해두면 나중에 다시 보고 기억하는데 도움이 될 것 같아 정리합니다. 참고 글 https://yozm.wishket.com/magazine/detail/1875/ 주니어 개발자를 위한 엄청 쉬운 네트워크 이야기 | 요즘IT 저는 5년차 개발자입니다. 회사에서 신입 개발자들과 함께 일하다 보면 네트워크에 관해 모르는 분들이 많으시더군요. 저도 사실 처음에는 그랬습니다. 그런데 일을 하다 보니 주니어 개발자 yozm.wishket.com https://yozm.wishk..

메모리 계층 구조와 In-Memory DB (Redis) 특징

대표적인 데이터베이스의 종류 2가지 RDB (관계형 데이터베이스) 엑셀처럼 행과 열이 존재함 SQL이라는 언어를 사용해서 접근할 수 있음 MySQL, PostgresSQL등이 있음 HDD나 SSD같은 보조기억 장치에 데이터를 저장함 NoSQL HDD나 SSD같은 보조기억 장치에 데이터를 저장 key-value의 방식으로 데이터를 저장 데이터의 형식이 정해져있지 않아 구조 변경이나 데이터 형식 변경이 쉬움 MongoDB, Elasticsearch 등이 있음 In-Memory DB Memory 같은 주 기억 장치에 데이터를 저장 NoSql에 속하는 데이터 베이스로 key-value 형식으로 데이터를 저장 (RDB에도 인메모리 db 있긴함) Memory의 특성 때문에 데이터가 휘발성이며, I/O 속도가 매우 ..

인덱스, 트랜잭션, 무결성

인덱스 테이블의 검색 속도를 향상시키기 위한 자료구조 장점: 검색 속도 향상 단점 인덱스를 저장하기 위한 추가적인 공간 필요 잘못 사용할 경우 오히려 비효율적인 검색 인덱스로 사용하면 좋은 컬럼 규모가 작지 않은 테이블 자주 inser, update, delete가 발생하지 않는 컬럼 → 자주 변경이 발생하지 않는 컬럼, 유지비용 절감 join , where, order by 에 자주 사용되는 컬럼 → 정렬, 검색, 조인에서 효율을 높일 수 있음 데이터의 중복도가 낮은 컬럼 예를 들어 검색 조건에 자주 사용되는 주문 번호, 사용자 ID, 날짜 조건 등등이 포함되는데 인덱스의 생성, 업데이트, 삭제등에 오버헤드가 발생할 수 있기 때문에 필요한 인덱스만 잘 설정하고 데이터베이스의 사용 패턴과 요구사항을 고려..

빅오(big-O) , 시간복잡도

빅 오 란 입력값 N이 커질때, 함수의 실행 시간의 추이를 말한다. 예를들어 숫자 1부터 N까지 출력하는 알고리즘을 작성했을 때 N 값이 100일때보다 1000000000000일때 실행시간이 커질 것이다. 이처럼 입력값이 커졌을 때의 알고리즘 효율성이 중요한데, 이를 미리 판단할 수 있는 수학식이다. 빅 오 표기법의 종류 O(1): 입력값이 커져도 실행 시간이 일정함으로 가장 좋은 알고리즘 (거의 발견할 수 없음) O(log n): 매우 큰 입력값에도 큰 영향을 받지 않음 (대표 알고리즘: 이진 검색) O(n): 입력값에 수행 시간이 비례함 (대표 알고리즘: 정렬되지 않은 리스트에서 최대값, 최솟값) O(n log n): 병합 정렬을 비롯한 대부분의 효율 좋은 정렬 알고리즘이 이에 해당함. O(n제곱):..

운영체제 (Operating System) 개념

강의: https://youtu.be/26QPDBe-NB8 운영체제의 역할 운영체제도 하나의 소프트웨어이며, 하드웨어와 응용프로그램 사이를 연결해주는 중개자 역할을 한다. 사용자가 손쉽게 컴퓨터를 다루게 도와주며, 하드웨어(cpu, 입출력장치,메모리 등) 가 효율적으로 사용될 수 있도록 도와준다. 운영체제의 탄생 1940~1950년대 초기 컴퓨터는 아주 느렸고, 프로그래머가 컴퓨터에 수행하고 싶은 내용을 직접 카드에 작성해서 하나하나 넣어서 동작 시켰다. 그래서 컴퓨터는 한번에 한가지 카드만 읽어서 순차적으로 일을 수행할 수 있었다. 그런데 점점 컴퓨터 속도가 발전하면서, 사람이 카드를 작성하고 입력하러 가는게 더 느려져서 컴퓨터가 놀게(?) 되었다. 컴퓨터가 스스로 작동할 수 있는 방법이 필요했고, 그..

부울 연산과 논리 게이트 (컴퓨터에서 and, or, not이 동작하는 방법)

https://www.youtube.com/watch?v=gI-qXk7XojA 컴퓨터의 트렌지스터는 전기가 흐르거나 끊어지는 1과 0상태로 작동한다. 1과 0 상태 참과 거짓으로 어떻게 연산이 이루어지는지 논리 게이트로 알수있다. 1. Not : 반대로 출력 input output True False False True 2. And : 둘다 참일때 참 회로가 직렬로 되어 있어 둘 중 하나가 막히면 output까지 이동할 수 없음 input1 input2 output True True True True False False False True False False False False 3. Or: 하나만 참이어도 참 회로가 병렬로 연결되어 있어 하나만 참이어도 output까지 연결됨 input1 input..

컴파일러(compiler) vs 인터프리터(interpreter) 차이

컴파일러 컴퓨터는 이진법으로 이해하는데, 사람이 이진법으로 코드를 작성하기는 너무 어렵다. 그래서 우리는 우리가 정한 문법에 맞게 소스코드를 작성하고, 이 규칙을 컴파일러가 해석해서 이진법으로 이루어진 머신코드로 변환해준다. 이제 이 머신코드를 컴퓨터가 해석해서 작동하게 된다. 인터프리터 컴파일러는 소스코드 파일 하나 전체를 한번에 읽어서 머신코드 파일을 만들어내는데, 우리가 작성한 소스코드를 한줄 한줄 바로 바로 번역해주는게 인터프리터 이다. 대표적인 예로 컴파일 언어는 c언어가 있고 인터프리터 언어로는 파이썬, 루비가 있다. 그래서 c로 코딩을 하면 파일을 하나 컴파일하고 수정할 때마다 다시 컴파일해서 만들어진 파일을 이용해야하는것이다. 이 둘의 차이를 잘 설명해준 유튜브가 있어서 링크 공유 http..

[cs50] 알고리즘

https://www.boostcourse.org/cs112/lecture/118999/ 모두를 위한 컴퓨터 과학 (CS50 2019) 부스트코스 무료 강의 www.boostcourse.org 알고리즘은 input 으로 받은걸 output 으로 만드는 처리과정이다. 이 처리과정은 output을 만들기위한 규칙을 순서대로 나열한것인데, 같은 Output이더라도 이 규칙이 다를 수 있다. ( 같은 문제더라도 알고리즘이 달라질 수 있다. ) 예시를 같이보면 이해가 쉬운데, 전화번호부에서 "최하나"를 찾는다고 해보자 1. 앞에서부터 한장씩 넘기면서 찾는다. 2. 앞에서부터 두장씩 넘기면서 찾는다. 3. 절반을 나누고 펼쳐진 페이지가 "최"보다 작으면 뒷장을, 크면 앞장을 계속 반으로 나누면서 본다. 만약 성이 ..

[cs50] 1. 컴퓨팅사고 (feat.이진법)

https://www.boostcourse.org/cs112/lecture/118997 모두를 위한 컴퓨터 과학 (CS50 2019) 부스트코스 무료 강의 www.boostcourse.org 컴퓨터 기초 강의중 유명한 cs50을 듣기 시작! 유튜브에도 영상이 있고, edx에도 있는데 아무래도 영어보다 한글이 이해하기 쉽고 부스트코스에 잘 정리해두어서 부스트코스로 들어보려고 한다. 1. 이진법 우리는 평소에 10진법을 사용해서 위에 숫자를 백이십삼이라고 읽는다. 하지만 컴퓨터는 2진법을 사용한다. 왜 컴퓨터는 이진법으로 읽을까???? 컴퓨터안에 있는 많은 부품들은 전기를 통해 작동하는데, 전기는 2개중 하나이다. off or on / 1 or 0 / true or false / 전기 플러그인을 꽂거나 빼거..

반응형