본문 바로가기

Computer/CS_Knowledge6

[CS] Design Pattern Design Pattern 개념 특정 상황에서 공통적으로 발생하는 문제에 쓰이는 재사용 가능한 해결책 장점 소프트웨어의 구조를 파악하기 용이 재사용을 통한 개발 시간 단축 설계 변경 시, 비교적 원활한 조치 가능 단점 객체 지향 언어에서 사용할 경우, 객체 지향적 설계를 추가로 고려해야 함 초기 투자 비용이 큼 종류 생성 패턴 객체 생성과 관련된 패턴 객체의 생성과 조합을 캡슐화해 특정 객체가 생성되거나 변경되어도 프로그램 구조에 영향을 크게 받지 않도록 유연성을 제공 구조 패턴 프로그램 구조를 설계하는데 사용되는 패턴 클래스나 객체를 조합해 더 큰 구조를 만드는 패턴 행위 패턴 객체나 클래스 사이의 알고리즘 또는 책임 분배에 관련된 패턴 결합도를 최소화하는 것이 주 목적 대표적인 생성 패턴 Single.. 2023. 8. 4.
[CS] Database Database DBMS 데이터베이스를 관리하고 운영하는 소프트웨어 대부분의 DBMS는 테이블로 이뤄진 RDBMS(Relational DBMS) 형태로 사용 기능 데이터 정의(DDL): 테이블과 컬럼을 정의 데이터 조작(DML): 데이터의 CRUD 등을 수행 데이터 제어(DCL): 데이터 무결성(data integrity)을 지키도록 제어 RDBMS / NoSQL RDBMS: 정해진 스키마에 따라 데이터를 저장하기 때문에 명확한 데이터 구조 보장 시스템이 커질 수록 쿼리가 복잡해지고 성능이 저하되며, Scale-out이 어려움 NoSQL: Key-Value 형태로 데이터를 자유롭게 관리할 수 있음 데이터 중복이 발생할 수 있음 데이터가 자주 변경이 이루어지는 시스템에서는 RDBMS를, 막대한 데이터를 저.. 2023. 7. 28.
[CS] Network Network HTTP(Hyper Text Transfer Protocol) 데이터를 주고 받기 위한 프로토콜 상태 정보를 저장하지 않는 Stateless 및 클라이언트의 요청에 맞는 응답을 보낸 후 연결을 끊는 Connectionless 특징 연결 상태 처리나 상태 정보를 관리할 필요가 없어 서버 디자인이 간단 통신의 정보를 모르기 때문에 매번 인증 필요 해결방안: 쿠키, 세션 등 HTTP Method 종류 기능 GET 데이터 조회 POST 요청 데이터 처리, 주로 등록에 사용 PUT 리소스를 대체(덮어쓰기), 해당 리소스가 없으면 생성 PATCH 리소스 부분 변경 (PUT이 전체 변경, PATCH는 일부 변경) DELETE 데이터 삭제 HTTP 상태 코드 1xx : 처리가 진행 중 2xx : 성공 응.. 2023. 7. 12.
[CS] Operating System 운영체제 OS 정의 : 응용 프로그램과 하드웨어 간의 인터페이스로써 사용자가 컴퓨터를 편리하고 효과적으로 사용할 수 있도록 환경을 제공하는 시스템 소프트웨어 Program & Process & Thread Program 어떤 작업을 위해 실행는 파일 Process - 실행중인 프로그램 - 각각 독립된 메모리 영역(Code, Data, Stack, Heap의 구조)을 할당 - 최소 1개의 Thread(Main Thread 포함)를 보유 Thread - 프로세스 안에서 실행되는 여러 작업 단위 - 프로세스 내에서 Stack만 따로 할당받고 Code, Data, Heap 영역은 공유 - cf. Java-Thread: JVM에 의해 스케쥴되는 실행 단위 코드 블럭 Multi-process & Multi-thre.. 2023. 7. 12.
[CS] Spring Spring POJO(Plain Old Java Object) 외부의 종속성이 없는 단순한 자바 객체 프로그래밍 지향하는 프레임워크 다른 클래스나 인터페이스를 상속하지 않고 getter, setter와 같이 기본적인 기능만 가진 자바 객체 1 2 3 4 5 6 7 8 9 10 public class example { private int age; private String name; public int getAge(){return age;} public String getName(){return name;} public void setAge(){this.age = age;} public void setAge(){this.name = name;} } IoC(Inversion of Control, 제어의 역.. 2023. 7. 6.
[CS] Java Java 특징 객체지향(캡슐화, 상속, 다형성 등) 언어 JVM(Jva Virtual Machine) 위에서 동작 → 운영체제로부터 독립적이나 실행속도가 느린 단점이 존재 실행 절차: *.java 파일 생성 → compiler: *.java → *.class 파일인 Byte code로 Compile → JVM: Byte Code → 기계어인 Binary Code로 변환 → CPU에서 실행되어 사용자에게 제공 다중 상속이나 타입이 엄격 JVM 구성: Class Loader, Execution Engine, Runtime Data Area Class Loader: 바이트 코드(*.class)들을 JVM의 메모리 영역인 Runtime Data Areas에 배치 Execution Engine: 클래스 로더를 통.. 2023. 7. 6.