전체 글 353

네트워크 기초

네트워크란? 노드 (node)와 링크 (link)가 서로 연결되어 있거나 연결되어 있지 않은 집합체 노드란? - 서버, 라우터, 스위치 등 네트워크 장치를 의미하고 링크는 유선 또는 무선을 의미 처리량과 지연시간 - 네트워크 구축 시 '좋은' 네트워크를 만드는 것이 중요! 좋은 네트워크 - 많은 처리량을 처리할 수 있고 지연 시간이 짧고 장애 빈도가 적으며 좋은 보안을 갖춘 네트워크 처리량 (throughput) - 링크를 통해 전달되는 단위 시간당의 데이터량 (단위시간 = bps) - 처리량은 사용자들이 많이 접속할 때마다 커지는 트래픽, 네트워크 장치 간의 대역폭, 네트워크 중간에 발생하는 에러, 장치의 하드웨어 스펙에 영향을 받음 (대역폭 - 주어진 시간 동안 네트워크 연결을 통해 흐를 수 있는 최..

프로그래밍 패러다임 (Programming paradigm)

프로그래밍 패러다임이란? - 프로그래머에게 프로그래밍의 관점을 갖게 해주는 역할을 하는 개발 방법론 - 그로그래밍 패러다임은 크게 선언형, 명령형으로 나누며, 선언형은 함수형이라는 하위 집합을 갖고, 명령형은 객체지향, 절차지향으로 나뉜다. 선언형 프로그래밍과 함수형 프로그래밍 선언형 프로그래밍 (declarative programming) '무엇을' 풀어내는가에 집중하는 패러다임 '프로그램은 함수로 이루어진 것이다' 라는 명제가 담겨있는 패러다임 함수형 패러다임 (functional programming)은 선언형 패러다임의 일종 함수형 프로그래밍 '순수 함수'를 블록처럼 쌓아 로직을 구현하고 '고차 함수'를 통해 재사용성을 높인 프로그래밍 패러다임 순수 함수 - 출력이 입력에만 의존하는 것을 의미 고..

이터레이터 패턴, 노출모듈 패턴, MVC 패턴, MVP 패턴, MVVM 패턴

이터레이터 (Iterator pattern) - 이터레이터 (iterator)를 사용하여 컬렉션 (collection)의 요소들에 접근하는 패턴 - 순회할 수 있는 여러 가지 자료형의 구조와는 상관없이 이터레이터 하나의 인터페이스로 순회 가능 노출모듈 패턴 (revealing module pattern) - 노출모듈 패턴은 즉시 실행 함수를 통해 private, public 같은 접근 제어자를 만드는 패턴 - 자바와 달리 자바스크립트는 private, public 같은 접근 제어자가 존재하지 않고 전역 범위에서 스크립트가 실행 - 따라서, 노출모듈 패턴을 위와 같은 접근 제어자를 구현 (Ex - CJS (CommonJS) 모듈) MVC 패턴 (Model, View, Controller) - 모델 (Mod..

전략패턴, 옵저버 패턴, 프록시 패턴 (프로시 서버)

전략 패턴 (Strategy pattern) - 정책 패턴 (Policy pattern)이라고 부르기도 함 - 객체의 행위를 바꾸고 싶은 경우 직접 수정하는 것이 아닌, '전략' 이라고 부르는 '캡슐화한 알고리즘프'을 컨텍스트 안에서 바꿔주면서 상호 교체가 가능하게 만든 패턴 (컨텍스트 - 상황, 맥락, 문맥을 의미하여 개발자가 어떠한 작업을 완료하는데 필요한 모든 관련 정보를 말함) - Ex) 결제를 할 때, 결제 방식에 대한 '전략'을 카드, 현금, 입금 등의 다양한 방법으로 결제하는 것과 비슷 옵저버 패턴 (Observer pattern) - 주체가 어떤 객체의 상태 변화를 관찰하다가 상태 변화가 있을 때마다 메서드 등을 통해 옵저버 목록에 있는 옵저버 목록에 있는 옵저버들에게 변화를 알려주는 패턴..

싱글톤 패턴, 팩토리 패턴

싱글톤 패턴 (Singleton pattern) - 하나의 클래스에 오직 하나의 인스턴스만 가지는 패턴 - DB 연결 모듈에 많이 사용 - 인스턴스를 하나만 만들어 놓고 이 인스턴스를 다른 모듈이 공유하며 사용하여 인스턴스를 생성할 때 드는 비용 감소 - 하지만, 의존성이 높아진다는 단점이 발생 - 싱글톤 패턴은 모듈간의 결합을 강하게 만들 수 있음 - 이때, 의존성 주입을 통해 모듈간의 결합을 조금 느슨하게 만들어 해결 가능 (이를 '디커플링 된다' 라고 부르기도 함) - 싱글톤 패턴의 단점 TDD (Test Driven Development)의 방해요소 - TDD는 단위 테스트를 주로 하는데, 단위 테스트는 독립적이어야 하고, 테스트를 어떤 순서로든 실행할 수 있어야 함 - 하지만, 하나의 인스턴스를..

배열의 오름차순, 내림차순

가장 기본이 되는 String, int 타입 배열의 오름차순과 내림차순에 대해 알아보자 String 타입 배열 오름차순 String[] arr = {"b", "d", "a", "c"}; Arrays.sort(arr); System.out.print(Arrays.toString(arr)); // {"a", "b", "c", "d"} 내림차순 String[] arr = {"b", "d", "a", "c"}; Arrays.sort(arr, Collections.reversreOrder()); System.out.print(Arrays.toString(arr)); // {"d", "c", "b", "a"} int 타입 배열 오름차순 int[] arr = {5, 2, 4, 3, 1}; Arrays.sort(arr..

728x90