본문 바로가기

CS study

(51)
1주차 스터디 노트(DB, 스키마, RDBMS, Key, 제약조건) 1. 파일시스템과 데이터베이스의 차이점에 대해서 설명해주세요. 파일 시스템은 간단한 데이터 저장 목적으로 사용되고, 데이터베이스는 데이터의 일관성, 성능, 보안, 중복 최소화 등 다양한 측면에서 향상된 기능을 제공한다. 언뜻 보면 두 구조는 비슷해 보인다. 하지만 핵심적으로 말하자면 다음과 같은 차이가 있을 것이다. 파일시스템은 데이터를 파일 형태로 저장하며, 데이터베이스는 구조화된 방식으로 데이터를 저장한다. 파일 시스템? : 데이터를 파일에 저장 파일시스템은 운영 체제의 일부로, 파일을 저장하고 관리하는 방식이다. 데이터 접근과 관리가 기본적이고, 복잡한 쿼리나 트랜잭션 지원이 없다. 데이터베이스? : 정의된 데이터 형식, 구조화된 데이터를 저장 데이터를 테이블 등의 구조로 저장하며, 복잡한 쿼리, ..
예시를 통해 알아보는 Java의 Call by Value, Call by Reference 개념 개요 java에서는 call by value로 jvm이 동작하고, c++등에서는 call by reference로 참조에 의한 복사로 객체들이 생성되고 동작된다고 한다. (물론, 최신 트렌드에서는 이를 적당히 합하여 사용한다. 원론적인 이야기이다.) 오늘은 이 개념에 대해 의의와 실제 동작 과정에서 어떻게 이루어지는지 알아볼 것이다. 한 눈에 보는 두 개념의 차이 요약 : 참조에 의한 호출은 그냥 무조건 메모리 주소 자체를 참조하는 거고, 값에 의한 호출은 그 값의 복사본을 만들어서(만들때 원본을 참조) 운영한다는 차이이다. Call by reference : 원본 데이터 자체를 직접 조작. Call by value : 원본 데이터를 보호하면서 독립적인 복사본을 통해 작업을 수행. call by valu..
[Elasticsearch] RDBMS에 비해 왜 빠를까? 역인덱싱에 대해 개요 NoSQL의 경우 일반적으로 RDBMS보다 빠르다고 하는데, 구체적으로 왜 그런지 조사해보았다. RDBMS(관계형 데이터베이스 관리 시스템)와 NoSQL(비관계형 데이터베이스)은 데이터를 저장하고 관리하는 방식에서 근본적인 차이가 있다. 아래와 같은 이유로 차이가 발생한다. 구조적 차이 SQL의 주요 초점은 데이터 중복을 줄이는 것. RDBMS의 경우 테이블 형식으로 데이터를 저장하며, 엄격한 스키마를 따른다. 데이터는 행과 열로 구성되며, SQL(Structured Query Language)을 사용하여 데이터를 조작한다. 이를 통해 데이터의 무결성과 일관성, 트랜잭션 등의 규칙을 엄격하게 지킬 수 있다. NoSQL은 반대로 유연하고 빠른 동적 스키마를 제공한다. NoSQL 데이터베이스는 비관계형..
URI/URL/URN, Restful 원칙 개요 기존 개념의 추가 정의 시간이다. 알고는 있었지만 명확하게 설명하지 못했던 내용들을 다시 복기하고, 정리하고자 한다. Restful을 설명하기 전에, 헷갈렸던 URI/URL부터 짚고 넘어가 보자. URI/URL/URN 1. URI (Uniform Resource Identifier) 정의: URI는 인터넷에서 자원을 식별하는 데 사용되는 문자열이다. '자원'은 웹 페이지, 문서, 이미지, 파일, 그리고 백엔드에서 자주 사용하는 API Endpoint 를 포함하는 개념이다. 기능: URI는 특정 자원을 식별하고, 해당 자원이 어떻게 접근될 수 있는지에 대한 정보를 제공한다. 종류: URI에는 두 가지 주요 형태가 있다. URL (Uniform Resource Locator) URN (Uniform R..
SOLID 5원칙에 대해 java에서 항상 나오던 기본 원칙 중 하나인 SOLID를 예시를 들어 설명하고자 한다. 개념 자체는 알고 있지만 구체적인 예시를 떠올려 보다 생각나 포스팅하였다. SRP(Single Responsibility Principle) : 단일 책임 원칙 한 클래스는 하나의 책임만 가져야 한다는 원칙. 개인적으로 비교적 가장 쉬운 개념이라 생각이 든다. 객체지향적으로 만들어진 모든 Class들은 각각의 역할에 맞는 메서드, 변수, 책임 등을 가져야 한다. 로그인 클래스가 존재한다면 이 클래스는 로그인에 관련된 기능만을 가져야 한다. 수정, 삭제, 확장 역시도 로그인에 관련된 내용일 것이다. OCP(Open - Closed Principle) 개방 - 폐쇄 원칙 기능의 개방(확장)에는 열려 있고, 변경에는 닫혀..
[해시 테이블].. equals와 hashcode를 사용한 객체 비교 탐구(유익) 장장 3.5시간동안 고민하고 찾아봤던 나의 기록을 정리하고자 한다. 알고리즘 문제를 풀던 도중, 의문이 생겨 레퍼런스를 조사하고 정리한 내용이다. 가장 큰 의문의 시발점은 다음과 같았다. "기본형 및 String은 ==나 equals로 참 거짓을 판단할 수 있는데, 내가 만든 Class 객체들도 이걸 사용할 수 있을까?" 결론부터 말하자면 가능하다. Object에서 기본적으로 지원하는 equals 메서드를 자체적으로 Override하면 된다. HashSet -> HashMap -> contains~() -> getNode() -> equals and Hash을 통해 비교하기 때문 내가 궁금했던 HashSet이나 HashMap의 자료구조에서 사용하는 contains도 결국에는 equals와 hashcode..
[JIRA] 지라에 대해 (About Jira) 개요 이번 프로젝트에서 다시 한번 지라를 다루게 되었다. 기존 ssafy의 gitlab과는 달리, jira 공식 사이트에서 계정을 생성하여 운영해 볼 생각이다. (물론 크게 다르지는 않다. 호스팅의 차이만 있을 뿐) 이 과정에서 먼저 지라에 대해 정리해보고자 한다. 내가 사용했던 방법 ( The way I used it) 지라를 사용하는데 공식 방법이나 획일화된 방법이 있는 것은 아니라고 생각한다. 나는 지금까지 이렇게 사용하였다. 지금까지의 지라 사용법은 다음과 같았다. 1. 스프린트 계획 스크럼 방법론을 따라, 주차별 스프린트 계획을 세웠다. 이는 월요일 아침 즈음에 시작해서, 오전 시간을 활용해 회의하고 이번 주차에 해야 할 목표와 세부 사항을 설정하였다. 1. a sprint plan Follow..
인터셉터와 AOP의 차이, 인터셉터의 추가 개념 개요 이번 프로젝터에서 prehandler를 사용하여 인터셉터 기능을 사용했었고, 로그 수집을 위해 포인트컷을 사용하여 AOP(로그 수집)의 기능도 구현해봤다. 문득 드는 생각이 두 기능이 로직상 유사해 보이는데, 똑같은 거 같은데 굳이 인터셉터를 쓰는 이유가 뭘까? 정확히 말하면 인터셉터의 기능을 AOP가 전부 할 수 있지 않나? 싶어 조사해보았다. 그림으로 보는 도식도 일단 필터는 이전에 학습했던 것처럼, 스프링 영역 밖에서 서블릿의 입출력을 관리한다. Dispatcher Servlet의 호출 이전/이후로 인터셉터는 동작한다.AOP의 경우 애플리케이션 전방에 걸쳐 다양하게 작업을 적용할 수 있는 것을 확인할 수 있다. 인터셉터의 주요 메소드 preHandle: 이 메소드는 컨트롤러(핸들러) 메소드가 ..