CS 39

[혼공컴운] 1. 컴퓨터 구조 시작하기

📋 컴퓨터 구조를 왜 알아야 하는지 이해한다.📋 컴퓨터 구조의 큰 그림을 그려본다. 01-1. 컴퓨터 구조를 알아야 하는 이유문제 상황을 빠르게 진단할 수 있고, 문제 해결의 실마리를 다양하게 찾을 수 있다. 컴퓨터가 '미지의 대상'에서 '분석의 대상'이 된다.1. 문제 해결 능력 향상2. 성능/용량/비용을 고려한 개발 가능 01-2. 컴퓨터 구조의 큰 그림컴퓨터가 이해하는 정보우리가 알아야 할 컴퓨터 구조 지식은 2가지다.하나는 '컴퓨터가 이해하는 정보'이고, 또 하나는 '컴퓨터의 네 가지 핵심 부품'이다.컴퓨터 구조→ 컴퓨터가 이해하는 정보→ 컴퓨터의 네 가지 핵심 부품컴퓨터는 0과 1로 표현된 정보만을 이해한다. 0과 1로 표현된 정보는 2가지, 바로 데이터와 명령어이다..

CS/컴퓨터 구조 2024.04.16

헷갈리는 용어

모듈 vs 컴포넌트 컴포넌트란? - 어떠한 기능을 재사용하기 위해 만들어진 독립적인 기능의 최소 단위 - 실행, 구현된 소프트웨어의 활동 단위 - 런타임 시점에서 의미가 있다. 모듈이란? - 어떠한 기능을 재사용하기 위해 만들어진 독립적인 기능의 최소 단위 - 설계 시점에 의미가 있는, 스스로 동작할 수 있는 요소 - 연관있는 메서드나 클래스의 집합 Q. 하나의 기능을 하기 위해 필요한 모듈들을 인스턴스화 시키면 그것이 컴포넌트인가? 하나의 기능을 위해 필요한 여러 모듈들을 인스턴스화 시켜 동작하게 하는 것이 바로 컴포넌트의 개념에 부합할 수 있습니다. 그러나 이것이 항상 정확하게 컴포넌트라고 정의되는 것은 아닙니다. 컴포넌트의 정의와 역할이 상황이나 컨텍스트, 그리고 사용되는 기술이나 프레임워크에 따라..

CS 2024.04.05

OOP의 디자인 패턴

목차 SOLID 디자인 패턴 생성 패턴 구조 패턴 행위 패턴 객체지향 프로그래밍의 5가지 설계 원칙 SOLID란 객체 지향 프로그래밍을 하면서 지켜야하는 5대 원칙이다. 아래의 원칙을 지킨다면 시간이 지나도 변경이 용이하고, 유지보수와 확장이 쉬운 소프트웨어를 개발하는데 도움이 된다. [ 단일 책임 원칙 : SRP(Single Responsibility Principle) ] 모듈이 변경되는 이유가 1가지 이어야 한다는 의미. 여기서 변경되는 이유가 한가지라는 것은 해당 모듈이 여러 대상 또는 액터들에 대해 책임을 가져서는 안되고, 오직 하나의 액터에 대해서만 책임을 져야 한다는 것을 의미한다. 만약 어떤 모듈이 여러 액터에 대해 책임을 가지고 있다면 여러 액터들로부터 변경에 대한 요구가 올 수 있으므로..

CS/디자인 패턴 2024.04.03

JVM과 프로세스, 스레드

들어가며 프로세스와 스레드에 대한 개념은 개발에 있어 기초이자 필수이다. 그러나 계속해서 제대로 이해되지 않는 부분이 존재하고 또한 JVM과 연관지어 생각해본 경험이 없었다. 이번 포스팅을 통해 JVM과 프로세스가 어떻게 관련지어 동작하는지 알아보자. 목차 프로세스와 스레드 fork()와 exec() 데몬 JVM과 프로세스 프로세스란? 프로그램이 CPU를 점유하고 있을 때 프로세스가 된다. OS는 여러 프로세스를 실행하고 관리한다. 프로그램과 프로세스 프로그램은 레시피, 프로세스는 실제 레시피에 대한 요리 프로세스 상태 new - 프로세스가 생성되는 상태 ready - 프로세스가 CPU에 할당되어, 처리되기를 기다리는 상태 running - 프로세스가 CPU에 할당되어, 명령어들이 실행되는 상태 wait..

CS/운영체제 2024.03.31

[항해 취업코스] 개발자 취준 기록 16일차

기초 Q. Call by reference란 무엇이고 보통 어떻게 쓰이나요? Call by reference는 메서드에 변수를 인자로 전달할 때, 그 변수의 원래 주소를 전달하는 방법을 말한다. 메서드 내에서 이 변수를 조작하면 원래의 변수의 값이 변경된다. 원래의 값을 변경하고 싶을 때, 또는 큰 데이터 구조를 복사하는 비용을 피하고 싶을때 사용된다. Q. Override 와 Overload 를 설명해주실 수 있을까요? Override는 상속 관계에 있는 클래스에서 상위 클래스가 가지고 있는 메서드를 하위 클래스에서 재정의 하는 것을 말한다. Overoad는 매개 변수의 타입과 개수를 다르게 하여 다양한 호출에 응답되도록하는 것을 말한다. Q. JPA는 언제 필요하고 언제 필요하지 않은지 설명해주실 ..

CS 2024.03.30

네트워크 프록시 (Network Proxy)

Proxy 해당 포스팅에서 언급하는 Proxy는 네트워크 프록시를 의미한다. ‘대리’라는 뜻을 가짐. 프록시 서버란? 클라이언트와 서버간의 중계 서버로, 통신을 대리 수행하는 서버 프록시 사용 이유 - 필터 : 리소스의 접근에 대해 허용 / 차단 관리 - 접근 제어 : 허가된 클라이언트에 대한 접근 허용 / 허가되지 않은 클라이언트는 예로 비밀번호 요구 등의 방법 사용 - 캐싱 : 인기있는 요청들을 관리해서 바로 프록시에서 응답할 수 있도록하여 네트워크 비용을 줄일 수 있음 - 익명화 : HTTP 메세지에서 신원을 식별할 수 있는 특성을 제거함으로써 Forward Proxy : 일반적으로 Proxy라 불리는 것 : 클라이언트와 인터넷 사이에 위치하여 클라이언트 대신 서버에 요청을 보내주는 역할을 하는 것..

CS/네트워크 2024.03.29

OSI 7 계층

1 계층 : Physical Layer 두 컴퓨터가 서로 통신하려면 어떻게 해야할까요? 컴퓨터 간의 언어를 사용해야 합니다. 컴퓨터는 0과 1로 이루어져 있습니다. 전기 신호를 발생시켜 전압의 차이를 이용하여 0과 1을 구분해서 신호를 보내는 방식을 사용합니다. 그런데 이 신호는 아날로그 신호 일거 아니에요? 그러면 컴퓨터에서 생성한 데이터는 디지털 신호일거 아니에요? 디지털 신호는 전선을 통해서 전송될 수 없습니다. 따라서 아날로그 신호로 변환해야만 전선을 통해서 신호를 전송할 수 있습니다. 이러한 디지털 신호를 아날로그 신호로 변경해서 전송하는 것을 인코딩이라고 합니다. 다른 컴퓨터에서 보낸 아날로그 신호를 컴퓨터가 이해할 수 있도록 디지털 신호로 변경하는 것은 디코딩 입니다. 결국 Physical ..

CS/네트워크 2024.03.28

[항해 취업코스] 개발자 취준 기록 15일차

기초 Q. NoSQL과 RDBMS의 특징과 차이점에 대해서 장, 단점을 들어 설명해주세요. RDBMS는 스키마를 정의하여 사용하지만, NoSQL은 스키마를 정의하지 않고 사용할 수 있습니다. RDBMS는 엄격한 스키마와 트랜잭션으로 데이터 무결성을 보장하는 특징이 있고, NoSQL은 무결성 보장에는 제한적이지만 데이터의 유연성과 확장성에 초점을 두어 대량의 데이터와 높은 사용자 부하에도 쉽게 확장할 수 있는 특징이 있습니다. Q. RDBMS의 정규화에 대해 설명해주세요. 정규화란? 중복을 최소화하여 이상 현상(Anomaly)의 발생을 방지하는 것을 뜻합니다. 이상현상이란 정규화가 제대로 되지 않은 Table에 어떤 작업을 수행했을 경우 비합리적 문제가 발생하는 현상입니다. 이상 현상에는 삽입 이상, 삭제..

CS 2024.03.28

[항해 취업코스] 개발자 취준 기록 13일차

Q. Garbage Collector의 역할, 원리, 알고리즘에 대해 아는 만큼 설명해주실 수 있을까요? GC의 역할 프로그램에서 동적으로 할당한 메모리 영역에 대해 어떠한 변수로 참조하지 않는 메모리 영역을 자동으로 해제시켜주는 역할을 합니다. GC의 원리/알고리즘 GC가 어떻게 변수를 참조하지 않는 메모리 영역을 검사하는지 설명드리겠습니다. 검사를 위한 알고리즘에는 두 가지가 있는데요, 첫 번째는 reference counting 방식입니다. 몇 가지 방법으로 해당 객체에 접근할 수 있는지에 대한 count를 저장하는 방법인데요, 순환참조로 인해 해당 count가 1을 유지하게 되어 메모리가 해제되지 않는 문제가 생깁니다. 이를 해결하는 방식이 Mark and Sweep 방식입니다. Mark and ..

CS 2024.03.26

Checked Exception과 Unchecked Exception에 대해 알아보자.

이 글은 Exception을 이해하기 위해서 다른 외부 블로그나 링크들을 참조하여 정리한 포스팅 입니다. 자바에서 예외 처리는 프로그램의 안정성과 신뢰성을 높이기 위해 매우 중요한 부분입니다. 예외는 크게 에러, 체크 예외, 언체크 예외 등 3가지로 나눌 수 있습니다. 자바 예외 클래스의 계층 구조 RuntimeException의 하위 클래스들이 Uncheck Exception 이라 하고 하위 클래스가 아닌 Exception 클래스의 하위 클래스들을 Checked Exception이라고 합니다. Checked Exception이란? 컴파일 시점에 처리 여부를 체크하는 예외입니다. 컴파일러가 해당 예외를 처리하거나 선언하지 않았다면 컴파일 에러를 발생시킵니다. Uncheck Exception이란? 런타임 ..

CS/Java 2024.03.22