본문 바로가기

CS공부

(9)
파이썬 파헤치기 - numpy 배열 연산자를 알아보자! 파이썬에서 pandas와 함께 자주 사용되는 numpy. 이 둘은 특히 데이터 분석에서는 기초적으로 사용되는 라이브러리입니다. 특히, numpy는 수학과 과학과 관련된 연산에서는 필수적으로 사용하다보니 꼭 한번 정리하고 넘어가도록 하겠습니다. Numpy의 연산자들 np.add np.subtract np.multiply np.divide np.true_divide np.flooor_divide np.remainder np.mod np.prod np.reciprocal 1. np.add - array 단위로 덧셈을 계산하는 연산자입니다. import numpy as np a = np.add(1,10) print(a) # 112. np.subtract - array 단위로 뺄셈을 계산하는 연산자입니다. imp..
파이썬 파헤치기 - 배열(Array)에 대해서 리스트(list)와 튜플(tuple) 리스트는 [1, 2, 3] 형태로 정의하며 각 원소를 수정 할 수 있는 특성갖으며, []는 비어있는 list를 의미 합니다. b = [1,"A",2,3,4] type(b) 튜플은 (1, 2, 3) 형태로 정의하며 한번 정의한 원소를 수정 할 수 없는 특성을 가집니다. 튜플 원소에 대한 수정 작업은 "TypeError: 'tuple' object does not support item assignment" 같은 오류를 발생. ()는 빈 tuple을 의미하며, 위에서 언급했듯 원소의 추가 삭제가 불가능합니다. 주의할 점은 원소가 하나만 있는 tuple은 일반적인 괄호와 구분이 되지 않기 때문에 ('A',)와 같이 작성해 tuple임을 알 수 있습니다. 그렇다면 원소의 추..
Class란 무엇인가? Class는 객체 지향 프로그래밍에서 사용되는 개념. 비슷한 속성과 기능을 가진 객체들을 정의하는 틀 (설계도 or 템플릿 역할 ex) 붕어빵 틀) 사용 목적 1. 코드의 재사용성 - 비슷한 기능을 가진 객체들을 class에 정의해놓고 인스턴스를 생성 2. 유지 보수의 용이성 - class를 통해 변경이 필요한 해당 객체의 관련된 코드만 수정 3. 코드의 가독성 - 비슷한 기능을 가진 메서드를 한 곳에서 관리 -> 가독성과 유지보수성 증가 4. 상속과 다형성의 지원 - 상속을 통해 이미 구현된 기능 재사용, 다형성을 통해 같은 이름의 메서드를 각각 다른 방식으로 구현 5. 모듈화 - 관련 있는 데이터와 메서드를 한 곳에 묶어서 모듈화. 대규모 프로젝트에서 코드 구성과 관리 용이
replication과 clustering이란?? Replication replication은 DB를 이중화, 복제 두 개 이상의 DB를 Master - Slave로 나눠서 저장하는 방식 (DB를 권한에 따라 수직적인 구조) 여러 대의 서버에 데이터를 복제해 안정적인 데이터 접근 및 처리를 보장. Matser DB에서는 쓰기 작업, Slave DB에서는 읽기 작업만을 처리. 비동기 식으로 노드들 간 데이터를 동기화. Master DB역할 - 웹 서버로부터 데이터 등록, 수정, 삭제 요청 시 바이너리 로그 생성해 Slave 서버로 전달 Slave DB 역할 - Master로 부터 전달받은 바이너리 로그를 데이터에 반영 (바이너리 로그 : 데이터 변경사항들에 대한 정보를 포함하는 로그 파일의 세트) 사용 목적 1. 실시간 data 백업. 2. 여러 대의 D..
JVM이란 무엇인가요? JVM(Java Virtual Machine), 자바를 실행하기 위한 가상 머신. OS에 종속받지 않으며, CPU가 java를 인식하고 실행 가능하도록 하는 가상 컴퓨터. JVM을 통해 자바 코드를 컴파일하여 해당 운영체제에서 실행 가능한 기계어로 변환하고 자바 코드가 다양한 운영체제와 하드웨어에서 동작이 가능하게 함. (원시코드인 *.java는 CPU가 인식하지 못하기에 기계어로 컴파일이 필요) JVM에서 자바 프로그램이 실행되는 동안 메모리 관리, 가비지 컬렉션, 스레드 관리 등의 다양한 작업 수행 JIT 컴파일러(Just-In_Time 혹은 동적 번역)를 통해 실행 중인 코드를 최적화하고 효율적인 실행이 가능하도록 함. JIT 컴파일러는 프로그램을 실제 실행하는 시점에 기계어로 번역하는 역할이며, ..
B-트리 구조와 B+구조 두 가지 모두 데이터베이스 인덱스 구조에서 많이 사용되는 트리 구조입니다. B-트리 구조 M개의 자식을 가질 수 있으며 M차 B트리라고 합니다. 각 노드에 포인터와 쌍을 저장하고, 루트 노드에서부터 리프 노드까지 내려가면서 키 값을 찾는 방식입니다. 모든 노드가 균등하게 채워져있어 검색 시간이 일정하게 유지됩니다. 리프 노드에서 키 값을 찾아야 하기 때문에 B+트리에 비해 데이터를 읽어오는데 더 많은 디스크 I/O가 필요합니다. B+트리 구조 B-트리 구조와 유사하지만, 리프 노드에만 키와 포인터 쌍을 저장합니다. 리프 노드 사이에 연결 리스트를 만들어 빠른 범위 검색 수행이 가능합니다. 리프 노드가 모두 같은 깊이에 있다는 점이 B-트리와의 차이점이며, 리프 노드에서 키 값을 찾는 시간이 일정하게 유지..
RDBMS의 INDEX란 무엇일까? DB에서 검색 속도를 높이기 위해 사용되는 기술입니다. INDEX는 DB에서 테이블의 특정 컬럼에 대한 데이터 구조이며, 전체 데이터를 스캔하지 않고 원하는 데이터를 찾기 때문에 검색 속도를 향상시킬 수 있습니다. DB의 크기와 작업 부하에 따라 적절히 사용해야 됩니다. (INDEX 생성 시 DB 크기가 늘어나고, 관리를 위한 추가 작업이 필요) 데이터 양이 적거나 INDEX가 비효율적으로 설정되어 있을 경우, 전체 검색이 오히려 더 빠를 수도 있습니다. 그러므로 적절치 않은 사용으로 DB성능 저하를 야기할 수 있어 올바른 설계와 관리가 필요합니다. 테이블 내에서 1개 or 여러 개의 컬럼을 이용해 생성(클러스터드 vs 넌클러스터드) 비유하자면 인덱스는 책의 목차라고 생각! 목차 페이지가 있는 것처럼 D..
Linked List의 종류와 개념 저번 포스팅에서 array와 linked list에 대한 간략한 설명과 차이점에 대해서 알아봤습니다. 이번 포스팅에선 linked list의 종류와 개념에 대해서 알아보도록 하겠습니다! Singly Linked List(단순 연결 리스트) - 각 노드에는 각각 데이터와 한 개의 포인터 공간이 존재하며, 포인터는 다음 노드를 가리킴. Doubly Linked List(이중 연결 리스트) - 단순 연결 리스트와 달리 양방향 탐색이가능 - 이전 노드에 대한 포인터도 가지고 있기 때문에 메모리 사용이 더 많음. - 윈도우 슬라이딩 기법 Circular Linked List(원형 연결 리스트) - 마지막 노드의 포인터가 첫 번째 노드를 가리킵니다. - 이 특성으로 특정 지점에서 순회를 중지하지 않고 계속 순환이 ..