728x90
반응형

분류 전체보기 108

[네트워크] Blocking/Non-blocking & Synchronous/Asynchronous

동기/비동기는 우리가 일상 생활에서 많이 들을 수 있는 말이다. Blocking과 Synchronous, 그리고 Non-blocking과 Asysnchronous를 서로 같은 개념이라고 착각하기 쉽다. 각자 어떤 의미를 가지는지 간단하게 살펴보자. 2대2 매트릭스로 정리된 그림이다. 그림을 보면 Blocking 이면 반드시 Sync 가 아니고, Non-blocking 이면 반드시 async 도 아니다. 즉, Blocking / Non-blocking 과 Sync / Async 는 다른 개념이라는 것이다. Blocking / Non-blocking 과 Sync / Async 는 '관점'을 어떻게 두느냐에 따라 다르다. 블로킹 Blocking A 함수가 B 함수를 호출 할 때, B 함수가 자신의 작업이 종료..

CS/Network 2023.07.05

[네트워크] 로드 밸런싱 (Load Balancing)

로드 밸런싱 (Load Balancing) 이란? 네트워크 또는 서버에 가해지는 부하(Load)를 분산(Balancing) 해주는 기술이다. 중앙처리장치 혹은 저장장치와 같은 컴퓨터 자원들에게 작업을 나누는 것을 의미한다. 로드 밸런싱의 필요성? 로드밸런싱은 여러 대의 서버를 두고 서비스를 제공하는 분산 처리 시스템에서 필요한 기술이다. 서비스의 제공 초기 단계라면 적은 수의 클라이언트로 인해 서버 한 대로 요청에 응답하는 것이 가능하다. 하지만 사업의 규모가 확장되고, 클라이언트의 수가 늘어나게 되면 기존 서버만으로는 정상적인 서비스가 불가능하게 된다. 트래픽이 많은 최신 웹 사이트는 클라이언트의 수많은 동시 요청을 처리하고 텍스트, 이미지, 비디오 또는 애플리케이션 데이터 등을 빠르고 안정적인 방식으..

CS/Network 2023.07.04

[스프링] MVC, MVP, MVVM 디자인 패턴

MVVM을 이해하기 위해서는 MVC -> MVP -> MVVM 순서대로 아키텍처 패턴에 대한 이해가 필요하다. MVC 패턴 객체지향프로그래밍에서 MVC란 사용자 인터페이스를 성공적이며 효과적으로 데이터 모형에 관련 시키기 위한 방법론 또는 설계 방식중 하나로써, 목적 코드의 재사용에 유용한 것은 물론, 사용자 인터페이스와 응용프로그램 개발에 소요되는 시간을 현저하게 줄여주는 형식이라고 많은 개발자들이 평가하고 있다. Model, View, Controller의 약자로 User – View – Controller – Model – Controller – View User의 구조를 가지고 있다. MVC 패턴은 응용프로그램의 시각적 부분과 가 이면의 동작과 제어를 처리하는 부분(비즈니스 로직이라 한다)을 분리..

Programming/Spring 2023.07.03

[스프링] 디자인 패턴

디자인 패턴의 개요 여러 사람이 협업을 하며 프로그램을 개발 할 때 다른 사람이 작성한 코드나 기존의 코드를 이해하는 것은 어렵다. 이런 코드들은 유지 보수를 함에 있어서 새로운 기능을 추가하거나 최적화를 하기에 힘든 구조적인 결함을 가지고 있다. 이를 최소화하기 위해서 디자인 패턴은 등장했다. 특수한 경우의 프로그래머가 아니라면 프로그래밍을 하면서 만나는 문제가 지구상에서 유일한 문제일 경우는 거의 없기 때문에 앞서 이미 많은 수많은 오류들을 피하는 방법을 패턴화하게 된다면 좀더 버그가 발생하는 폭을 줄이고 수정하는데(발생하는 숫자가 아니라 예외를 찾는데 조금더 덜 시간을 사용하게 됨) 최소한의 시간을 들일 수 있게 된다. 즉, 디자인 패턴은 프로그램 등을 개발하는 중에 발생했던 문제점들을 정리 및 특..

Programming/Spring 2023.07.02

[개발상식] 디자인 패턴

소프트웨어 디자인 패턴이란? 소프트웨어 개발 방법으로 사용되는 디자인패턴(Desigin Pattern)은 과거의 소프트웨어 개발 과정에서 발견된 설계의 노하우를 축적하여 그 방법에 이름을 붙여서 이후에 재사용하기 좋은 형태로 특정 규약을 만들어서 정리한 것이다. 디자인 패턴은 소프트웨어 설계에 있어 공통적인 문제들에 대한 표준적인 해법과 작명법을 제안하며, 알고리즘과 같이 프로그램 코드로 바로 변환될 수 있는 형태는 아니지만, 특정한 상황에서 구조적인 문제를 해결하는 방식입니다. 즉 "효율적인 코드를 만들기 위한 방법론"이라고 생각하시면 된다. 디자인 패턴은 외우기보다는 어떠한 패턴이 있는지 알고 수많은 디자인 패턴에서 다양한 코딩 노하우를 습득하는것이 중요하다고 생각한다. "이 코드에는 무조건 이 패턴..

CS/개발상식 2023.07.01

[백준] 13249 공의 충돌 (파이썬)

골드 Ⅴ https://www.acmicpc.net/problem/13249 13249번: 공의 충돌 무게가 모두 같고, 크기가 0인 공 N개가 일직선 위에 놓여져 있다. 오른쪽으로 굴러가는 공과 왼쪽으로 굴러가는 공이 같은 속도로 충돌하면, 속도는 변하지 않고 공의 진행 방향만 바뀌게 된다. www.acmicpc.net 📄 문제 무게가 모두 같고, 크기가 0인 공 N개가 일직선 위에 놓여져 있다. 오른쪽으로 굴러가는 공과 왼쪽으로 굴러가는 공이 같은 속도로 충돌하면, 속도는 변하지 않고 공의 진행 방향만 바뀌게 된다. 공 N개의 위치가 주어진다. 효빈이는 공 N개의 진행 방향(오른쪽, 왼쪽)을 같은 확률로 결정한다. 시간 0일 때, 효빈이는 공을 결정한 방향으로 동시에 1초에 1만큼 이동하는 속도로 굴..

[스프링] 관점 지향 프로그래밍 (AOP)

AOP의 등장 배경 객체 지향 프로그래밍 (OPP, Object-oriented Programming) 공통의 목적이 있는 데이터와 동작을 묶어서 하나의 객체로 정의하는 것이다. 객체를 적극적으로 활용함으로써 기능을 재사용할 수 있는 것이 가장 큰 장점이다. 여기서 말하는 객체를 잘 활용하기 위해서는 관심사 분리(SoC, Seperation of Concerns)의 디자인 원칙을 준수해야 한다. Spring MVC에서는 @Controller, @Service, @Repository와 같이 관심사별로 계층을 나눠 객체를 관리하게 된다. 이 관심사의 분리는 모듈화의 핵심이 된다. 객체 지향 프로그래밍의 한계 점 특정 관심사 업무 코드에 트랜잭션, 로깅, 보안 등은 필수적인 부가기능이기 때문에 업무 기능과는 ..

Programming/Spring 2023.06.29

[개발상식] 객체 지향 프로그래밍 (OOP)

객체 지향 프로그래밍은 컴퓨터 프로그래밍의 패러다임 중 하나이다. 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다. - 위키피디아 - 객체지향 프로그램밍(Object-Oriented Programming)은 프로그래밍 패러다임 중 하나로, 상태(state)와 행위(behave)로 이루어진 객체들간의 상호작용을 통해 프로그램을 설계, 개발 하는 것이다. 즉, 쉽게 말해 객체지향 프로그래밍은 객체를 만드는 것이다. '객체' 라는 말은 Object를 직역한 말인데, 쉽게 말해 변수와 메소드를 그룹핑 한 개념이다. 즉, 프로그래밍에서 필요한 데이터..

CS/개발상식 2023.06.29

[네트워크] TLS/SSL HandShake

TLS / SSL 이란? SSL(Secure Sockets Layer)은 보안 프로토콜로서, 개인정보 보호, 인증, 무결성 을 인터넷 통신에 제공한다. SSL/TLS를 사용하는 웹사이트의 URL에는 "HTTP" 대신 "HTTPS" 가 있다. SSL 이란 명칭은 TLS(Transport Layer Security)로 발전했다. 최근 명칭: TLS(Transport Layer Security) 과거 명칭: SSL(Secure Sockets Layer) SSL의 인지도가 크기 때문에 TLS을 SSL로 부르며 사용한다. Certificate Authority(CA)라 불리는 서드 파티로부터 서버와 클라이언트의 인증을 하는데 사용된다. 주로 전송계층과 응용계층 사이에서 보안조치를 하는데 사용하게 된다. SSL (..

CS/Network 2023.06.28

[네트워크] HTTP와 HTTPS의 차이점

HTTP는 암호화가 추가되지 않았기 때문에 보안에 취약한 반면 HTTPS는 안전하게 데이터를 주고 받을 수 있습니다. 다만, HTTPS는 암호화/복호화 과정이 필요하기 때문에 요즘은 거의 큰 차이를 못느끼지만 HTTP보다 속도가 느리고 인증서를 발급하고 유지하기 위한 추가비용이 발생할 수 있습니다. HTTP (Hyper Text Transfer Protocol) 인터넷 상에서 클라이언트와 서버가 자원을 주고 받을 때 쓰는 통신 규약이다. 즉, 서버/클라이언트 모델을 따라 데이터를 주고 받기 위한 프로토콜이다. 서로 다른 시스템들 사이에 통신을 주고 받게 해주는 가장 기본적인 프로토콜이다. 인터넷에서 하이퍼텍스트를 교환하기위한 통신규약이다. 요청(Request)과 응답(Response)으로 구성되어 있으며..

CS/Network 2023.06.27
728x90
반응형