전체 글

Computer Science

[Network] 로드밸런싱(Load Balancin)

로드밸런싱(Load Balancing)이란?서버가 처리해야 할 업무 혹은 요청(Load)을 여러 대의 서버로 나누어(Balancing) 처리하는 것을 의미한다.단일 서버에 과도한 부하가 걸리지 않도록 하여 시스템의 성능과 안정성을 향상시키는 것이 목적이다.Why?사용자가 적을 때는 서버가 클라이언트의 요청에 무리없이 응답할 수 있다. 그러나 사용자가 많아지면 서버는 모든 클라이언트의 요청에 응답하려고 애쓰지만 결국 과부하가 발생하게 된다. 이를 해결하기 위해 아래의 두 가지 서버 확장 방법으로 서버를 확장해야 한다.스케일업(Scale-Up) & 스케일아웃(Scale-Out)스케일 업(Scale-Up): 기존 서버 하드웨어의 성능을 향상시키는 방법(수직확장)스케일 아웃(Scale-Out): 트래픽이나 작업..

Programming/Java

[Java] 문자열(String) 클래스

C언어에서는 문자열을 char형 배열로 표현하지만 자바에서는 String 이라는 클래스를 별도로 제공하며String 클래스에는 문자열과 관련된 작업을 할 때 유용하게 사용할 수 있는 다양한 메소드가 포함되어 있다.String 클래스는 java.lang 패키지에 포함되어 제공된다. String 인스턴스는 한 번 생성되면 그 값을 읽기만 할 수 있고 변경할 수 없다.이러한 객체를 자바에서는 불변객체(Immutable Object)라 한다.더보기더보기ex) 자바에서 덧셈(+) 연산자를 이용하여 문자열 결합을 수행하면 기존의 문자열의 내용이 변경되는 것이 아닌 내용이 합쳐진 새로운 String 인스턴스가 생성된다. 메소드 정리charAt()해당 문자열의 특정 인덱스에 해당하는 문자를 반환한다.만약 해당 문자열의..

Programming/Java

[Java] 상속

상속(Inheritance)이란 ?기존의 클래스에 기능을 추가하거나 재정의하여 새로운 클래스를 정의하는 것을 의미한다.이때, 기존에 정의되어 있던 클래스를 부모 클래스 혹은 상위, 기초 클래스라고도 하며상속을 통해 새롭게 작성되는 클래스를 자식 클래스 혹은 하위, 파생 클래스라고도 한다. 자바의 상속 방법자바에서의 상속은 extends라는 키워드를 통해 사용할 수 있다.부모 클래스를 정의하고 상속 받을 자식 클래스 뒤에 extends 키워드와 함께 부모 클래스를 적어주면 된다.// 부모 클래스class Parent { }// 자식클래스class Child extends Parent () 상속의 장단점장점기존에 작성된 클래스를 재활용할 수 있다.자식 클래스 설계 시 중복되는 멤버를 미리 부모 클래스에 작성..

Computer Science/Data Structure & Algorithm

[CS 면접지식노트] 비선형 자료구조

비선형 자료구조(NonLinear Data Structure) 일렬로 나열하지 않고 자료 순서나 관계가 복잡한 구조로 일반적으로 트리나 그래프를 말한다. 그래프(Graph) 정점과 간선으로 이루어진 자료구조 정점과 간선 어떠한 곳에서 어떠한 곳으로 무언가를 통해 간다고 했을 때 '어떠한 곳'은 정점(Vertex) '무언가'는 간선(Edge)이 된다. 간선에는 단방향과 양방향이 존재한다. V로 부터 나가는 간선을 outdegree / v로 들어오는 간선을 indegree + 정점은 약자로 V 또는 U라고 한다. 가중치 정점고 정점 사이에 드는 비용 트리(Tree) 그래프 중 하나로 그래프의 특징처럼 정점과 간선으로 이루어져있고 트리구조로 배열된 일종의 계층적 데이터의 집합이다. 루트노드, 내부 노드, 리프..

Book/개발 관련 분야 정리

[CS 전공지식노트] 조인의 종류와 원리

Join 두 개 이상의 테이블을 묶어 하나의 결과물로 만드는 것 MySQL - JOIN / MongoDB - lookup 이라는 쿼리로 처리할 수 있다. 조인의 종류 내부 조인(Inner Join): 왼쪽 테이블과 오른쪽 테이블의 두 행이 모두 일치하는 행이 있는 부분만 결과 테이블에 표기 왼쪽 조인(Left Outer Join): 왼쪽 테이블의 모든 행이 결과 테이블에 표기 오른쪽 조인(Right Outer join): 오른쪽 테이블의 모든 행이 결과 테이블에 표기 합집합 조인(Full Outer Join): 두 개의 테이블을 기반으로 조인 조건에 만족하지 않는 행까지 모두 표기 SQL JOIN 시각화 사이트 https://sql-joins.leopard.in.ua/ 내부 조인 두 테이블 간 교집합 S..

Book/개발 관련 분야 정리

[CS 전공지식노트] 데이터베이스 인덱스

인덱스(Index) 데이터 베이스의 테이블 안에서 데이터를 빠르게 찾을 수 있는 하나의 장치이다. 인덱스는 책의 마지막 부분에 있는 색인과 같다. 책의 수많은 본문이 있고 그 본문 안에 찾고자 하는 부분을 색인을 통해서 빠르게 찾을 수 있다. 이와 같이 인덱스를 설정하면 테이블에서 찾고자 하는 데이터를 빠르게 찾을 수 있다. B-Tree 인덱스는 보통 B-tree라는 자료구조로 이루어져있으며 트리는 루트 노드, 리프 노드, 브랜치 노드로 나뉜다. 트리 탐색은 루트 노드부터 탐색하여 브랜치 노드를 거쳐 리프노드까지 내려오면서 탐색한다. 인덱스가 효율적인 이유와 대수확장성 인덱스가 효율적인 이유는 효율적으로 모든 요소에 접근할 수 있는 균형잡힌 트리 구조와 트리 깊이의 대수 확장성 때문이다. 대수확장성이란 ..

Book/개발 관련 분야 정리

[CS 전공지식노트] 데이터 베이스 종류

관계형 데이터 베이스(RDBMS, Relation DataBase Manage System) 행과 열을 가지는 표 형식의 데이터를 저장하는 형태의 데이터 베이스 SQL(Structured Query Language)이라는 언어를 사용하여 조작한다. MySQL, PostgreSQL, MariaDB, Microsoft SQL Server, Oracle Database 더보기 관계형 데이터 베이스의 경우 표준 SQL은 지키지만 각각의 제품에 특화시킨 SQL을 사용하는 경우도 있다. ex) 오라클 - PL/SQL, SQL Server - T-SQL, MySQL - SQL .. MySQL 대부분의 운영체제와 호환되며 현재 가장 많이 사용하는 관계형 데이터 베이스로 C, C++로 만들어졌다. MyISAM 인덱스 압..

DevOps

[AWS] EC2, RDS, S3

EC2(Elastic Compute Cloud) AWS에서 제공하는 클라우드 컴퓨팅 서비스로 인터넷(클라우드)을 통해 서버, 스토리지, 데이터베이스 등의 컴퓨팅 서비스를 제공한다. 쉽게 말해서 아마존에서 가상 컴퓨터를 한대 빌린다 생각하면 된다. Elastic? 사용한 만큼 비용을 지불하기 때문에 탄력적인(Elastic) 이라는 단어가 붙어있다. Elastic은 비용적인 부분뿐만 아니라 필요에 따라 성능, 용량을 자유롭게 조절할 수 있다는 의미도 갖고 있다. 장점 컴퓨팅을 구성하는 시간이 짧다. 다양한 운영체제에 대한 선택이 가능하다. EC2에서는 AMI(Amazon Machine Image)라는 다양한 템플릿을 제공하고 있어서 필요에 따라 운영체제를 선택하고 구성할수 있다. 운영체제뿐만 아니라 CPU와..

DevOps

[Cloud] 운영 환경 구성

과거 물리적인 공간과 하드웨어를 갖춘 서버실을 구축하기 위해 막대한 시간과 비용을 들여야했지만 이젠 클라우드를 통해 클릭 몇 번 혹은 코드 몇 줄로 거대한 서버실에 해당하는 네트워크를 구축할 수 있게 되었다. 또한, 유지보수 측면에서도 큰 변화가 있었다. 자체 서버실 유지, 운영, 구축하기 위해 초기 비용과 유지/관리 비용이 들었다면 클라우드를 사용하게 된 지금은 사용한 만큼 비용을 지불하는 온디맨드(On-Demand)방식의 요금제가 도입되어 보다 합리적으로 서비스 운영이 가능하게 되었다. 대부분의 클라우드 서비스 업체는 다음과 같은 기본 장점을 가진다. 신속한 인프라 구축 유연한 인프라 관리 예상치 못한 트래픽 폭주 대응 손쉬운 글로벌 서비스 강력한 보안과 장애 없는 서비스 합리적인 요금제 기존 서버의..

Programming/Spring

[Spring MVC] API 계층

Controller 클래스 설계 및 구조 생성 API 계층은 클라이언트의 요청을 직접적으로 전달받는 계층 패키지 구조 생성 Spring Boot 기반 애플리케이션에서 주로 사용되는 Java 패키지 구조는 "기능 기반 패키지 구조"와 "계층 기반 패키지 구조" 2가지로 나뉜다. 기능 기반 패키지 구조(package-by-feature) 말 그대로 패키지를 애플리케이션에서 구현해야 하는 기능을 기준으로 패키지를 구성 기능 기반으로 나누어진 패키지 안에는 하나의 기능을 완성하기 위한 계층별(API계층, 서비스 계층, 데이터 액세스 계층) 클래스들이 모여있음. 계층 기반 패키지 구조(package-by-layer) 패키지를 하나의 계층(Layer)으로 보고 클래스들을 계층별로 묶어서 관리하는 구조 어떤 유형의 ..

Smile :DK
슬기로운 코딩생활