반응형

IT 35

[DB] 데이터베이스 제약조건과 PK, FK

개발하면서 다양한 RDB를 사용하게 되는데, 이번 글에서는 데이터베이스 제약조건과 함께 PK, FK 특징에 대해 정리해볼까 합니다. 먼저 Constraint란 뜻에 대해 찾아보았는데요. 제약의 뜻을 가지고 있었습니다. 그렇다면 데이터베이스에서 말하는 제약조건이란 무엇일까요? 제약조건 제약 조건(constraint)이란 데이터의 무결성을 지키기 위해, 데이터를 입력받을 때 실행되는 검사 규칙을 의미합니다. 이러한 제약 조건은 CREATE 문으로 테이블을 생성할 때나 ALTER 문으로 필드를 추가할 때도 설정할 수도 있습니다. 제약조건에는 어떤 종류가 있을까요? MySQL에서 사용할 수 있는 제약 조건은 다음과 같습니다. NOT NULL UNIQUE PRIMARY KEY FOREIGN KEY DEFAULT ..

IT/DB 2022.10.05

PORT 포트번호란

IP와 함께 PORT 번호에 대해서 들어보았을 것이다. TCP 프로토콜을 살펴볼 때 전송하는 패킷에 PORT 번호에 대한 정보가 포함되어 있었는데 PORT 번호가 무엇인지 간단하게 살펴보자. 포트 번호는 해당 IP주소가 가리키는 PC에 접속할 수 있는 통로이다. 예시를 들자면, A 아파트 이름을 IP 주소라고 할 때 00동 00호로 상세한 집 주소를 나타내는 것과 같은 역할을 하는게 PORT 번호라고 생각하면 쉬울 것 같다. 포트는 0번부터 65535번까지 있는데, 하나의 PC로 연결을 할때 포트 번호에 따라 6만 가지 이상으로 구분할 수 있다. 보통 0~1023번 포트는 잘 알려진 포트로 이미 사용되고 있거나, 상징성이 있기 때문에 해당 프로세스가 아닌 경우에는 다른 포트 번호를 사용하는게 일반적이다...

IT/Web 2022.08.11

TCP란?

https://javacoding.tistory.com/160 IP(Internet Protocol) 내가 인터넷을 통해 정보를 원하는 곳으로 전달하고자 할 경우, 도착지를 알아야 한다. 나의 주소와 상대의 주소는 어떻게 나타낼 수 있을까? 이때 PC마다의 주소를 지정할 수 있도록 한게 IP 체 javacoding.tistory.com 이전 글에서 IP 프로토콜에 대해서 살펴보았는데, 조금 더 상위 계층의 TCP에 대해 간략히 알아보자. 패킷이 소실되거나, 전달 순서가 바뀌거나, 불확실한 상대에게 데이터를 전달하는 등 IP 프로토콜에서 데이터 전송을 신뢰할 수 없는 여러 문제가 있었다. TCP는 이런 문제의 상당 부분을 해결해줄 수 있다는 점에서 신뢰할 수 있는 프로토콜로 많이 알려져 있다. TCP 전송..

IT/Web 2022.08.10

IP(Internet Protocol)

내가 인터넷을 통해 정보를 원하는 곳으로 전달하고자 할 경우, 도착지를 알아야 한다. 나의 주소와 상대의 주소는 어떻게 나타낼 수 있을까? 이때 PC마다의 주소를 지정할 수 있도록 한게 IP 체계이다. PC마다 지정된 IP 주소가 있기 때문에 우리는 목적지의 IP 주소로 정보를 보낼 수 있다. HTTP 통신시에는 패킷(Packet)이라는 통신 단위를 사용하는데 간략하게 그림으로 나타내면 아래와 같다. IP 패킷에는 출발지 IP, 목적지 IP와 같은 수많은 정보들로 이루어져 있다. IP와 함께 사용하는 PORT 주소는 뭘까? https://javacoding.tistory.com/163 PORT 포트번호란 IP와 함께 PORT 번호에 대해서 들어보았을 것이다. TCP 프로토콜을 살펴볼 때 전송하는 패킷에 ..

IT/Web 2022.08.03

Flutter - const Constructor

Flutter를 공부하다가 const constructor에 대해서 알게 되었다. 알아둘 만한 내용이어서 기록해둘까 한다. 정확히 말하면 Dart언어의 const constructor인데, 가장 쉬운 예시는 다음과 같다. const var title = const Text('Hi!') const를 왜 쓸까? const 생성자를 사용하는 이유는 최적화이다. 컴파일러는 모든 const 객체에 대해 동일한 메모리 부분을 할당하여 객체를 불변으로 만든다. 쉽게 말하면 const로 지정해두면 앱을 실행할 때 한 번만 생성한다는 것인데, 한 번만 만들기 때문에 리소스 낭비를 하지 않는다는 것이다. const와 관련해서 가장 많이 비교하는게 const와 final이 있는데, 간단히만 적어두자. 먼저 dart 언어에는..

IT 2022.06.12

Netty 에코 서버-클라이언트 구현 (feat. 네트워크 소녀 Netty)

에코 서버 구현 Netty 를 이용하여 에코 서버를 만들어보자. 통상적으로 네트워크 프로그램을 배울 때 가장 처음 예제로 에코 서버를 사용하는데 그 이유는 프로그램의 구현이 간단할 뿐만 아니라 입출력 또는 송수신이라는 기본적인 동작 방식을 이해하는 데 유용하기 때문이다. 먼저 Server 쪽 코드를 작성해보자. 8888번 포트를 사용하여 클라이언트의 연결을 대기하고, 클라이언트 접속 요청에 의해 소켓 채널을 만들고, 소켓으로 데이터가 들어온다면 지정된 EchoServerHandler가 되돌려주는 간단한 예제이다. // 에코 서버 import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.*; import io.netty.channel.nio.N..

IT 2021.01.07

Netty 코덱

코덱(codec)이란? 네트워크에서는 데이터를 단순한 원시 바이트의 연속으로 취급하지만 애플리케이션에서는 이러한 바이트를 의미 있는 정보 구조로 만들어야 한다. 애플리케이션 데이터와 네트워크 포맷 간의 변환을 수행하는 컴포넌트를 각각 인코더와 디코더라고 하며, 두 기능을 모두 가진 단일 컴포넌트를 코덱이라고 한다. 인코더는 메시지를 전송하기에 적합한 형식으로 변환하며, 디코더는 네트워크 스트림을 다시 프로그램의 메시지 포맷으로 변환한다. 인코더는 아웃바운드 데이터를 처리하며 디코더는 인바운드 데이터를 처리한다. 디코더 네티의 디코더 클래스는 고유한 두 사용 사례를 지원한다. 바이트 스트림을 메시지로 디코딩 : ByteToMessageDecoder 및 ReplayingDecoder 메시지를 다른 메시지 유..

IT 2021.01.05

Netty ChannelHandler와 ChannelPipeline

이미 앞부분에서 ChannelPipeline안에 ChannelHandler를 체인으로 연결해 처리 논리를 구성할 수 있다는 것을 배웠다. 이러한 클래스와 연관된 사용사례들과 ChannelHandlerContext에 대해서도 알아보자. Channel의 수명주기 Channel 인터페이스는 ChannelInboundHandler API와 밀접한 관계가 있으며 간단하지만 유용한 상태 모델을 정의한다. Channel의 네 가지 상태에 대해 알아보자. 상태 설명 ChannelUnregistered Channel이 생성됐지만 EventLoop에 등록되지 않음 ChannelRegistered Channel이 EventLoop에 등록됨 ChannelActive Channel이 활성화됨(원격 피어로 연결됨). 이제 데이터..

IT 2021.01.03

[Springboot/Gradle] JAVA SMTP로 비밀번호 찾기 메일 보내기(NAVER)

간단한 서비스를 개발하다가 회원들의 비밀번호 찾기 기능이 필요하게 되었고, 이메일 정보를 이용해 해당 기능을 구현하기로 결정하였습니다. JAVA SMTP가 잘 되어 있어서 어렵지 않게 구현할 수 있었으며 복잡한 내용은 아니므로 중간중간 사진을 첨부해 참고하기 편하도록 글을 남겨두려 합니다. SMTP란? 간이 전자 우편 전송 프로토콜(Simple Mail Transfer Protocol, SMTP)은 인터넷에서 이메일을 보내기 위해 이용되는 프로토콜이다. 메일 서버간의 송수신뿐만 아니라, 메일 클라이언트에서 메일 서버로 메일을 보낼 때에도 사용되는 경우가 많다. (출처 : 위키피디아 ) 간단히 Simple Mail Transfer Protocol의 약어로 이메일을 전송하기 위해서 사용되는 정도로만 기억해두..

IT/Web 2021.01.03
반응형