전체 글

전체 글

    RDB와 NoSQL에 대하여

    RDB(Relational Database) 란? 관계형 데이터베이스(RDB)는 테이블, 행, 열의 정보를 구조화하는 방식의 데이터베이스를 말한다. RDB에는 테이블을 조인하여 정보 간 관계 또는 링크를 설정할 수 있는 기능이 있기 때문에 여러 데이터 포인트 간의 관계를 쉽게 이해하고 정보를 얻을 수 있다. RDB의 장점 데이터 구조(스키마)가 명확하게 정의되어 있음 데이터 분류, 정렬, 탐색 속도가 빠르다 데이터의 무결성을 보장한다 정형화되어 있는 데이터에 접근할 때 효율적이다. RDB의 단점 데이터 구조(스키마)를 변경 및 수정하기 어렵다 시스템이 커질수록 JOIN이 많은 복잡한 쿼리를 사용할 가능성이 높다 수평적 확장(Scale-out)이 용이하지 않음 NoSQL 이란? NoSQL은 not only..

    데이터베이스 키(Key)의 종류

    데이터베이스에서 키(Key)란 검색이나 정렬시 각 Tuple을 구분할 수 있는 기준이 되는 속성을 말합니다. 키(Key)의 종류에는 5가지가 존재합니다. 1. 후보키 (Candidate Key) 후보키는 Tuple을 유일하게 식별하기 위해 사용하는 속성들의 부분집합을 말합니다 후보키가 되기 위해서는 다음의 두 가지 조건을 만족해야 합니다. 유일성 : 키 값이 각 Tuple을 유일하게 구분할 수 있어야 합니다. 최소성 : 유일성을 만족하는 키 속성의 조합이 최소한으로만 구성되어야 합니다 2. 기본키 (Primary Key) 기본키는 후보키 중에 선택된 주요 식별자를 말합니다. 이 값은 중복이 될 수 없고, Null 값을 가질 수 없습니다. 3. 대체키 (Alternate Key) 대체키는 후보키 중 기본키..

    왜 스프링(Spring)은 강력한 도구가 되었을까?

    스프링(Spring) 이란? 스프링은 JAVA의 객체 지향 언어가 가진 강력한 특징을 살려내는 프레임워크(Framework) JAVA로 다양한 애플리케이션을 만들 수 있는 프로그래밍 도구 비즈니스 로직에만 집중할 수 있도록 다양한 기능을 제공 프레임워크(Framework) vs 라이브러리(Library) 프레임워크 : 제공되는 틀에 따라 코드를 작성해야 한다 (통제권을 프레임워크가 가짐) 라이브러리 : 개발에 필요한 코드를 구현해 놓은 집합으로 개발자가 이를 호출하여 사용 스프링 생태계 (Spring Ecosystem) 스프링이 웹 개발을 위한 도구라는 것은 잘 알려진 사실입니다. 하지만 스프링 프레임워크 하나만으로 강력한 도구가 될 수는 없습니다. 스프링이 강력한 도구가 된 이유에는 스프링 생태계가 있..

    Git Flow 란? - git 의 브랜치 전략에 대하여

    Git Flow 란? git flow란 git을 통해 소스코드를 관리할 때 브랜치를 어떻게 관리하는가에 대한 브랜치 전략 중 하나다. Vincent Driessen의 블로그에서 제안한 글을 기반으로 만들어 졌고, 현재 git으로 소스코드를 관리하는 많은 기업들에서 표준으로 자리잡고 있는 방법론이다. git flow는 push, commit, pull request 등과 같은 어떤 기능이 아닌 코드 컨벤션과 같은 서로간에 정하는 약속, 방법과 같은 것이기 때문에 각 회사, 혹은 개발 환경에 맞게 수정 변형해서 사용할 수 있다. Git Flow 의 핵심 브랜치 전략 master : 서비스가 배포되는 브랜치 develop : 현재 개발중인 코드의 가장 상위 브랜치 feature : 단위 기능을 개발하는 브랜치..

    삼성 SW 역량테스트 B형 후기

    SSAFY 9기에 입과해 교육을 듣던 중 SW 테스트 A형 이상을 취득한 교육생에게 B형에 응시할 자격이 주어졌다. SSAFY에 입과하기 위해 쳤던 코딩 테스트에서 A형을 취득했기 때문에 B형에 응시할 수 있었다. 3/4, 4/1, 4/29 총 3회의 응시 기회가 있었고, 가장 처음 열린 3/4 시험을 신청했다. 삼성전자 SW 역량 테스트? 삼성 SW 역량테스트는 삼성에서 주관하는 코딩테스트라고 보면 된다. 예전에는 SWEA에서 상시 검정을 통해 시험을 신청해서 응시했지만 코로나로 인해 상시 검정이 막히고 현재는 삼성전자, 삼성 SDS 알고리즘 특강 수강생 혹은 SSAFY 교육생, 삼성 임직원 등 특정 조건을 만족해야 응시 기회가 주어진다. 삼성 SW 역량 테스트는 A형(Advanced), B형(Prof..

    Item 02. 생성자에 매개변수가 많다면 빌더를 고려하라 - 이펙티브 자바

    정적 팩터리와 생성자 방식의 문제점 정적 팩터리와 생성자 방식으로 인스턴스를 생성하는 것은 공통적인 제약이 있다. → 선택적 매개변수가 많을 경우 적절히 대응하기 어렵다는 것. public class NutiritionFacts { private final int servingSize; private final int servings; private final int calories; private final int fat; private final int sodium; private final int carbohydrate; public NutiritionFacts(int servingSize, int servings) { // servingSize 와 servings 값을 받는 생성자 public N..

    [자료구조] 그래프란? 개념과 표현 방법

    그래프란? 그래프란 노드와 간선의 집합으로 정의되며, 알고리즘에서 노드(Node)와 노드를 연결하는 간선(Edge)로 구성된 자료구조를 말한다. 이때 간선은 노드 쌍을 연결하며, 경우에 따라 가중치(Weight) 정보가 포함될 수 있다. 특히, 그래프는 선형 자료구조나 트리 자료구조로 표현하기 어려운 N : N 관계를 가지는 원소들을 표현하기에 용이하다. 어디에서 많이 쓰일까? 그래프는 네트워크 모델링에 아주 유용하게 사용된다. 예를 들어, 소셜 네트워크 분석, 지하쳘 통행 분석, 최단 경로 문제와 같은 것을 해결하는 데 사용될 수 있다. 그래프의 용어 정점 (Vertex) → 그래프의 구성요소로 하나의 연결점을 가리킨다. (노드 = 정점) 간선 (Edge) → 두 정점을 연결하는 선을 말한다 차수 (D..

    [알고리즘] 백트래킹 해결 방법과 예시 문제

    백트래킹 이란? 백트래킹은 완전탐색을 하는 과정에서 가지치기를 통해 유망하지 않은 곳은 더 이상 탐색하지 않는 알고리즘 기법을 말한다. 백트래킹 용어 유망(Promising) 하다. 어떤 노드를 방문했을 때 그 노드를 포함한 경로가 해답이 될 수 있다면 유망하다고 한다. 가지치기 (Pruning) 유망하지 않은 노드가 포함되는 경로는 더 이상 고려하지 않는다. 백트래킹 문제의 일반적인 해결 방법 상태 공간 트리를 구한다. 깊이 우선 탐색(DFS)을 이용하여 상태 공간 트리를 탐색한다. 각 노드가 유망한지를 점검한다. 만일 그 노드가 유망하지 않으면, 그 노드의 부모 노드로 돌아가서 다음 자식 노드로 간다. 어떤 노드가 해당 문제의 해가 되면 탐색을 중지하고, 해를 구한다. 백트래킹 문제의 예시 1. N-..