의문점 공부하기 102

🧾면접 최종 정리(Java, Spring, DB, OS, 네트워크, 자료구조)

스프링: 자바 플랫폼을 위한 오픈소스 어플리케이션 프레임워크로 , pojo 기반 - plain old java object , DI- defendency injection 의존성 주입, aop -관점 지향 프로그래밍 을 지원하는 컨테이너를 제공하는 프레임워크 제어의 역전 Ioc(Inversion of Control) - 디자인 원칙 중 하나로 객체의 생성부터 생명주기의 까지 모든 객체에 대한 제어권이 바뀐것을 의미 - 클래스 간 결합도를 줄이기 위해 -결합도는 왜 줄이는가? 결합도는 구성 요소 간의 의존성 정도를 나타내는데 높은 결합도는 시스템을 유지보수하거나 확장하기 어렵게 만들기 때문에 DI(Dependency injection) 의존성 주입 - 디자인 패턴 중 하나 의존 객체를 직접 생성하는 것이 ..

🧾스프링

스프링은 자바 기반의 엔터프라이즈급 애플리케이션을 개발하기 위한 종합적인 프레임워크입니다. 스프링은 모듈화가 잘 되어 있어 필요한 모듈만 선택하여 사용할 수 있습니다. 주요 모듈에는 Spring MVC(웹 애플리케이션 개발), Spring ORM(객체 관계 매핑), Spring JDBC(데이터베이스 액세스), Spring AOP(관점 지향 프로그래밍) 등이 있습니다. 설정이 XML 기반이며, 개발자가 많은 구성을 수동으로 처리해야 합니다. Spring MVC (웹 애플리케이션 개발): 목적: 웹 애플리케이션을 개발하기 위한 모듈입니다. 특징: MVC 아키텍처를 기반으로 한다. 모델(Model), 뷰(View), 컨트롤러(Controller)의 분리를 통해 애플리케이션을 구조화한다. 모델은 데이터를 나타내..

🧾리액트 정리

리액트는 컴포넌트 기반 아키텍처를 기반으로, 각 컴포넌트는 스테이트를 가질 수 있고, 재사용 가능 가상 DOM 사용 성능 최적화 리덕스는 특히 상태 관리가 복잡한 대규모 애플리케이션 또는 여러 컴포넌트 간에 상태를 공유해야 하는 경우에 유용합니다. 전역 상태를 하나의 객체로 관리 -> 쉽게 관리 가능 예측 가능 컴포넌트 간 데이터 공유-> 리액트는 부모-자식 관계가 아닌 컴포넌트 간 상태 공유가 어려운데 리덕스 사용시 동일한 상태 트리 공유로 데이터 쉽게 전달 공유 상태 로직 추상화하여 관리 가능 유지보수성 향상 브라우저 라우터: 클라이언트 측 라우팅 처리하는 도구, 다른 경로로 이동시 페이지 새로고침이 필요없다

면접대비 java

자바(Java) OOP란 객체지향 프로그래밍이란 인간 중심적 프로그래밍 패러다임이라고 할 수 있습니다. 즉, 현실 세계를 프로그래밍으로 옮겨와 프로그래밍하는 것을 말합니다. 현실 세계의 사물들을 객체라고 보고 그 객체로부터 개발하고자 하는 애플리케이션에 필요한 특징들을 뽑아와 프로그래밍 하는 것입니다. 대표적인 특징으로 추상화, 상속, 캡슐화, 다형성이 있습니다. 객체 지향적 설계 원칙의 종류 SRP(Single Responsibility Principle) : 단일 책임 원칙 클래스는 단 하나의 책임을 가져야 하며 클래스를 변경하는 이유는 단 하나의 이유이어야 합니다. OCP(Open-Closed Principle) : 개방-폐쇄 원칙 확장에는 열려 있어야 하고 변경에는 닫혀 있어야 합니다. LSP(L..

🧾 HTTP VS HTTPS

HTTP 의 문제점 HTTP 는 평문 통신이기 때문에 도청이 가능하다. 통신 상대를 확인하지 않기 때문에 위장이 가능하다. 완전성을 증명할 수 없기 때문에 변조가 가능하다. 위 세 가지는 다른 암호화하지 않은 프로토콜에도 공통되는 문제점들이다. TCP/IP 는 도청 가능한 네트워크이다. TCP/IP 구조의 통신은 전부 통신 경로 상에서 엿볼 수 있다. 패킷을 수집하는 것만으로 도청할 수 있다. 평문으로 통신을 할 경우 메시지의 의미를 파악할 수 있기 때문에 암호화하여 통신해야 한다. 보완 방법 통신 자체를 암호화 SSL(Secure Socket Layer) or TLS(Transport Layer Security)라는 다른 프로토콜을 조합함으로써 HTTP 의 통신 내용을 암호화할 수 있다. SSL 을 조..

🧾면접 대비

RDB와 NoSQL의 차이 RDBMS는 정해진 스키마가 존재하고, NoSQL는 정해진 스키마가 없다는 것이 가장 큰 차이입니다. NoSQL은 정해진 스키마가 없을 때 데이터 구조 변화가 자유롭고 데이터 분산이 용이하다는 장점이 있지만, 데이터 중복이 발생하거나 데이터 변경 시에 연산이 오래 걸린다는 단점이 있습니다. DB에서 인덱스를 잘 사용 했을 때의 장점 DB의 인덱스를 잘 사용하는 것은 데이터를 검색하는 시점에 성능 차이에 큰 영향을 미칩니다. 대용량 데이터를 담고 있는 DB 테이블에서 필요한 데이터를 빨리 찾기 위해 인덱스가 필요합니다. 인덱스가 없거나 적절한 인덱스를 찾지 못할 경우 데이터가 담겨있는 테이블 전체를 읽어야 하기에 데이터 조회 시간이 오래 걸립니다. 인덱스는 DB 데이터의 주소를 ..

🧾동기, 비동기의 차이에 대해

일반적으로 동기와 비동기의 차이는 메소드를 실행시킴과 동시에 반환 값이 기대되는 경우를 동기 라고 표현하고 그렇지 않은 경우에 대해서 비동기 라고 표현한다. 동시에라는 말은 실행되었을 때 값이 반환되기 전까지는 blocking되어 있다는 것을 의미한다. 비동기의 경우, blocking되지 않고 이벤트 큐에 넣거나 백그라운드 스레드에게 해당 task 를 위임하고 바로 다음 코드를 실행하기 때문에 기대되는 값이 바로 반환되지 않는다. -예시 해야할 일(task)가 빨래, 설거지, 청소 세 가지가 있다고 가정한다. 이 일들을 동기적으로 처리한다면 빨래를 하고 설거지를 하고 청소를 한다. 비동기적으로 일을 처리한다면 빨래하는 업체에게 빨래를 시킨다. 설거지 대행 업체에 설거지를 시킨다. 청소 대행 업체에 청소를..

🧾웹 통신의 큰 흐름에 대하여

우리가 Chrome 을 실행시켜 주소창에 특정 URL 값을 입력시키면 어떤 일이 일어나는가? in 브라우저 url 에 입력된 값을 브라우저 내부에서 결정된 규칙에 따라 그 의미를 조사한다. 조사된 의미에 따라 HTTP Request 메시지를 만든다. 만들어진 메시지를 웹 서버로 전송한다. 이 때 만들어진 메시지 전송은 브라우저가 직접하는 것이 아니다. 브라우저는 메시지를 네트워크에 송출하는 기능이 없으므로 OS에 의뢰하여 메시지를 전달한다. 우리가 택배를 보낼 때 직접 보내는게 아니라, 이미 서비스가 이루어지고 있는 택배 시스템(택배 회사)을 이용하여 보내는 것과 같은 이치이다. 단, OS에 송신을 의뢰할 때는 도메인명이 아니라 ip주소로 메시지를 받을 상대를 지정해야 하는데, 이 과정에서 DNS서버를 ..

🧾JPA2

Java Persistence API JPA는 오늘날 스프링에서 많이 활용되고 있지만, 스프링이 제공하는 API가 아닌 자바가 제공하는 API 자바 ORM 기술에 대한 표준 명세로, 자바 어플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스 ORM ORM 프레임워크는 자바 객체와 관계형 DB를 매핑한다. 즉, 객체가 DB 테이블이 되도록 만들어주는 것 ORM을 사용하면, SQL을 작성하지 않아도 직관적인 메소드로 데이터를 조작할 수 있다는 장점이 있다 종류로는 Hibernate, EclipseLink, DataNucleus 등 스프링 부트에서는 spring-boot-starter-data-jpa로 패키지를 가져와 사용하며, 이는 Hibernate 프레임워크를 활용한다. JPA는 애플리케..