응애개발자
article thumbnail
[Database] RDBMS와 NoSQL
CS/DB 2024. 5. 27. 15:33

📌RDB (Relational Database)관계형 데이터베이스는 데이터를 테이블 형식으로 저장하고, 이 테이블들이 서로 관계를 맺도록 하는 데이터베이스를 의미한다. RDB는 데이터 모델을 설명하는 용어이다. 📌RDBMS (Relational Database Management System)RDBMS은 RDB를 관리하는 소프트웨어를 말한다. 즉, RDB를 생성하고 수정하고 관리할 수 있는 소프트웨어이다. 그리고 이러한 RDBMS는 주로 SQL을 이용하여 데이터를 조회하고, 관리한다. RDMBS 특징2차원 데이터(테이블)로 표현된다. (행/열)상호관련성을 가진 테이블의 집합으로 구성된다.테이블 사이의 관계를 외래키로 나타낸다.스키마 변경이 어렵다.수직확장이 용이하지만 수평확장은 어렵다.ACID(원자성..

article thumbnail
[Network] Stateless와 Connectionless
CS/Network 2024. 5. 24. 22:50

HTTP의 특성에 대해서 알아보자. 📌Stateless (무상태)Stateless는 서버가 클라이언트의 상태를 저장하지 않는 HTTP의 특징이다. 그렇다면 Stateful(상태유지)하면 안될까? 왜 HTTP는 무상태의 특성을 갖는지 알아보자.  확장성 (Scalability)서버가 각 클라이언트의 상태를 유지하지 않으므로, 클라이언트의 수가 증가하더라도 서버의 복잡성이 크게 증가하지 않는다.여러 서버에 트래픽을 분산시키기 쉬워진다. 클라이언트의 상태를 유지할 필요가 없기 때문에 로드 밸런서를 통해 요청을 여러 서버로 분산할 수 있다.단순성 (Simplicity)각 요청이 독립적이므로, 서버는 각 요청을 독립적으로 처리할 수 있다. 이는 서버 구현을 단순하게 한다.클라이언트와 서버 간의 인터랙션이 단순해..

article thumbnail
[Network] 3-Way Handshake란
CS/Network 2024. 5. 22. 02:12

3-Way Handshake는 TCP의 접속과정, 4-Way Handshake는 TCP 접속 해제 과정이지만 오늘은 접속 과정만 알아보겠다. 📌3-Way HandshakeTCP/IP 프로토콜을 이용해서 이용해서 응용프로그램은 데이터를 주고받기 전에 먼저 연결을 진행한다.(정확한 전송을 보장하기 위해)3-Way Handshake는 이 연결 과정을 의미한다.더보기TCP/IP 프로토콜은 하나의 프로토콜이 아닌 TCP와 IP를 합쳐서 부르는 말이다. TCP/IP를 사용하겠다는 것은 IP 주소 체계를 따르고 IP Routing을 이용해 목적지에 도달하여 TCP의 특성을 활용하여 송신자와 수신자의 논리적 연결을 생성하고 신뢰성을 유지할 수 있도록 하겠다는 것을 의미한다. 즉, 여기서 말하는 TCP/IP 프로토콜은..

article thumbnail
[Network] OSI 7계층 모델
CS/Network 2024. 5. 20. 18:08

인터넷에서 네트워크를 공부하다 보면 항상 TCP/IP라고 말하는데 분명 다른 개념인데 왜 이렇게 말하는걸까? 라고 생각해본적이 있다. 그래서 확실하게 개념을 잡고자 정리를 해보았다. 📌 OSI 7계층OSI 모델은 네트워크에서 일어나는 통신을 7개의 계층으로 나눈 참조 모델이다. 이는 네트워크 프로토콜 설계 및 개발에 표준을 제공하기 위해 만들어졌다. 그럼 어떻게 OSI 7 계층이 만들어졌을까?네트워크의 시작 : 먼저 서로 다른 컴퓨터 사이에 정보를 주고 받을 수 있었다. 프로토콜의 발전 : 그러면서 자연스럽게 여러 회사에서 각각의 프로토콜(규칙)을 개발하게 되었다. -> 이때 통일된 규정이 없어 문제가 발생하였다. 서로 다른 언어들을 사용한다면 컴퓨터와 컴퓨터간 정보를 알아 들을 수 없게 되었다.표준의..

article thumbnail
[Java] 쿠키와 세션의 차이
CS/Java 2024. 5. 16. 18:08

들어가기 앞서 쿠키와 세션을 사용하는 이유에 대해서 먼저 생각해보자. HTTP 프로토콜은 비연결성, 무상태성이라는 특징을 갖는다.비연결성(Connectionless) : 클라이언트가 서버에 요청을 보냈을때(Request), 그에 맞는 응답(Response)을 보낸 후 연결을 끊는 처리방식이다.무상태성(Stateless) : 연결을 끊는 순간 서버의 통신이 끝나며 상태 정보는 유지하지 않는다.따라서 클라이언트와 서버가 통신을 할 때 서버는 클라이언트가 누구인지 계속 인증을 해주어야 한다. 예를들어 로그인을 하고 마이페이지를 가고 싶지만, 정보가 유지되지 않아서 다시 로그인을 해야하고, 장바구니를 가려고 해도 로그인을 해야한다. 이처럼 매번 요청을 보낼때마다 로그인을 하면 굉장히 불편할 것이다. 그런 불편함..

article thumbnail
[Java] HashMap, HashTable, ConcurrentHashMap, CopyOnWriteArrayList, SynchronizedList 비교
CS/Java 2024. 5. 11. 21:06

Map 인터페이스의 구현체로는 HashMap , HashTable, ConcurrentHashMap 등이 있다. Map은 형태를 띄게 된다. 그럼 이 셋의 특징과 차이는 무엇이 있을까? 그리고 ArrayList 형태를 띄는 CopyOnWriteArrayList, SynchronizedList란 무엇일까? 한번 알아보자.  📌HashMap특징Key와 value에 null을 허용한다.동기화를 보장하지 않는다.싱글 쓰레드 환경에서 사용하는게 좋다.HashTable과 ConcurrentHashMap보다 데이터를 찾는 속도는 빠르다.단점동기화를 보장하지 않기 때문에 신뢰성과 안정성이 떨어진다.public class HashMap extends AbstractMap implements Map, Clonea..

article thumbnail
[Java] JPA를 사용하는 이유, ORM이란?, JPA와 MyBatis의 차이
CS/Java 2024. 5. 9. 17:56

들어가기 앞서, MyBatis와 JPA를 사용하여 프로젝트를 만든 경험이 있었다. 확실히 JPA를 사용하면 코드 작성도 편해지고 가독성도 좋았다. 그렇다면 조금 더 자세하게 JPA가 무엇인지, Hibernate가 무엇인지, Spring Data JPA가 무엇인지, ORM이 무엇인지, JPA와 MyBatis의 차이는 무엇인지 자세하게 알아보자.📌JPA란?JPA(Java Persistence API)는 자바 진영의 ORM(Object Relational Mapping:객체 관계 매핑)기술 표준으로 사용되는 인터페이스 모음을 말한다.  여기서 중요하게 생각할 점은 JPA는 특정 기능을 하는 라이브러리가 아닌, ORM을 사용하기 위한 인터페이스의 모음이라는 것이다. 그렇다는 것은 JPA는 단순히 명세이기 때문..

article thumbnail
[Java] Dispatcher Servlet이란?
CS/Java 2024. 5. 7. 17:34

📌Dispatcher Servlet(디스패처 서블릿)Dipatcher Servlet이란 서블릿 컨테이너의 가장 앞단에서 HTTP 프로토콜로 들어오는 모든 요청을 먼저 받아 적합한 컨트롤러에 위임해주는 프론트 컨트롤러입니다. 조금 더 자세히 설명하면 클라이언트로부터 어떠한 요청이 오면 Tomcat(톰캣)과 같은 서블릿 컨테이너가 요청을 받게됩니다. 그리고 이 모든 요청은 프론트 컨트롤러인 디스패처 서블릿이 가장 먼저 받게 됩니다. 그러면 디스패처 서블릿은 공통적인 작업을 먼저 처리한 후에 해당 요청을 처리하는 컨트롤러를 찾아 작업을 위임합니다. 디스패처 서블릿 등장하기 이전 디스패처 서블릿 등장하기 이후   디스패처 서블릿 역할HTTP 프로토콜로 들어오는 모든 요청을 먼저 받고, 요청을 적합한 컨트롤러에..

article thumbnail
[Java] equals(), hashCode()
CS/Java 2024. 5. 5. 16:10

📌 equals(), hashCode()equals와 hashCode는 모든 객체의 부모 객체인 Object클래스에 정의되어 있습니다. 따라서 Java의 모든 객체는 Object 클래스에 정의된 equals와 hashCode 함수를 상속받고 있습니다. 📌 equals()==연산자와 equals() 메서드의 가장 큰 차이점은 == 연산자는 비교하고자 하는 두개의 대상의 주소값을 비교하는데 반해  equals()는 비교하고자 하는 두개의 대상의 값 자체를 비교합니다. (일치 = true, 불일치 = false)   String에서의 equals() 예시 코드public class Hello { public static void main(String[] args) { String s1 =..

article thumbnail
[Java] Error와 Exception
CS/Java 2024. 5. 2. 23:15

📌 Error(오류)와 Exception(예외)오류Error(오류)는 시스템이 종료되어야 할 수준의 상황과 같이 수습할 수 없는 심각한 문제를 의미합니다. 개발자가 미리 예측하여 방지할 수 없습니다. 예외Exception(예외)는 개발자가 구현한 로직에서 발생한 실수나 사용자의 영향에 의해 발생하며 프로그램 실행 중 발생하는 이벤트로 프로그램 명령의 정상적인 흐름을 방해하는 것입니다. 오류와 달리 개발자가 미리 예측하여 방지할 수 있기에 상황에 맞는 예외처리(Exception Handle)를 해야 합니다. 자바의 Error와 Exception 모두 자바의 최상위 클래스인 Object를 상속받습니다. 그리고 그 사이에는 Throwable이라는 클래스와 상속 관계가 있습니다. 밑에서 Throwable 클래..