TCP/IP
·
Network
IP(인터넷 프로토콜) 인터넷 프로토콜 역할 지정한 IP(IP Address)에 데이터 전달 패킷(Packet)이라는 통신 단위로 데이터 전달 IP 프로토콜의 한계 비연결성 패킷을 받을 대상이 없으면? 서비스 불능 상태여도 패킷 전송하면? 비신뢰성 중간에 패킷이 사라지면? 패킷이 순서대로 안 오면? 프로그램 구분 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이면? 인터넷 프로토콜 계층 TCP/IP 패킷 정보 Transmission Control Protocol(전송 제어 프로토콜) TCP의 역할 연결 지향(먼저 연결이 됐는지 확인하고 메시지를 보낸다.) TCP 3 way handshake (가상 연결) 데이터 전달 보증(보내다가 누락이 됐는지 알 수 있다.) 순서 보장 패킷 1, 패킷 2..
git 초보를 위한 fork, pull request 방법
·
Git
pull request 위해서 아래의 절차를 거친다. fork clone, remote 설정 branch 생성 수정 작업 후 add, commit, push pull request 생성 코드 리뷰, Merge Pull Request merge 이후 branch 삭제, fork 한 저장소를 최신 원본으로 동기화 1. fork 타켓 프로젝트의 저장소를 자신의 저장소로 fork 한다. fork 가 완료되면 자신의 계정에 새로운 저장소가 생긴다. 2. clone, remote 설정 fork 한 저장소를 로컬에 clone 한다. $ git clone https://github.com/iamzin/Study-Algorithm.git 로컬 저장소에 원격 저장소를 추구한다. 원본 저장소(직접 추가 필요) fork 한 ..
인터페이스(interface)
·
Programming/Java
인터페이스의 역할은?어떤 객체가 특정한 인터페이스를 사용한다면 그 객체는 반드시 인터페이스의 메서드들을 구현해야 한다. 만약 인터페이스에서 강제하고 있는 메소드를 구현하지 않으면 이 애플리케이션은 컴파일 조차 되지 않는다. 인터페이스와 상속의 차이점은?상속은 상위 클래스의 기능을 하위 클래스가 물려 받는다.인터페이스는 하위 클래스에 특정한 메서드가 반드시 존재하도록 강제한다.package org.opentutorials.javatutorials.interfaces.example1; interface I{ public void z();} class A implements I{ public void z(){}} 클래스 A는 인터페이스 I를 '구현'한다 실질적인 쓰임개발자 A와 B가 계산기 기능이 ..
Https
·
Network
Http 인터넷에서 데이터를 주고받을 수 있는 프로토콜 프로토콜=규칙 ex) https://www.naver.com http형식으로 메시지를 줄꺼야! 나한테 메시지를 줄 때도 http형식으로 줘! Https를 사용하는 이유 1. 보내는 데이터 탈취 방지 - Http로 데이터를 보내면 데이터가 raw하다. - Https는 데이터를 암호화해서 탈취를 방지한다. 2. 서버가 검증된다. - CA를 통해 검증할 수 있다. Https(Hyper Text Transfer Protocol Seure) Http의 보안 버전 내가 서버에 보내는 정보들을 제3자가 못 보게 한다.(암호화) 접속한 서버가 신뢰할 수 있는 곳인지 알려준다. Http Https 네이버인 줄 알고 링크를 클릭했더니 네이놈 개인정보(아이디, 비밀번호..
[Lombok] @RequiredArgsConstructor 의 득과 실?
·
Programming/Spring
백기선 님이 YouTube에 올린 영상 중에 @RequiredArgsConstructor 관한 것이 있다. https://youtu.be/qmI7uJapocw @RequiredArgsConstructor// final로 선언된 멤버 변수를 자동으로 생성합니다. @Service// 서비스임을 선언합니다. public class ProductService { private final ProductRepository productRepository; @Transactional // 메소드 동작이 SQL 쿼리문임을 선언합니다. public Long update(Long id, ProductMypriceRequestDto requestDto){ Product product = productRepository.fi..
JPA Auditing으로 생성일/수정일 자동화하기
·
Programming/Spring
보통 엔티티는 해당 데이터의 생성시간과 수정시간을 포함한다. 그래서 매번 DB에 insert하기 전, update하기 전에 날짜 데이터을 등록/수정하는 코드가 여기저기 들어간다. // 생성일 추가 코드 예제 public void savePosts() { ... posts.setCreateDate(new LocalDate()); postsRepository.save(posts); ... } 이런 단순하고 반복적인 코드가 모든 테이블과 서비스 메서드에 포함되어야 한다고 생각하면 매우 귀찮고 코드가 지저분해진다. 이 문제를 해결할 수 있는 것이 JPA Auditing이다. 적용하기 @MappedSuperclass @EntityListeners(AuditingEntityListener.class) public ..
[JPA] find date between 날짜 사이 찾기
·
Programming/Spring
@Entity(name = "test_jojo") @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) public class Jojo { @Id @GeneratedValue @Column(name = "jo_id") private Long joId; @Column private LocalDateTime regDate; } public interface JojoRepository extends JpaRepository { List findAllByRegDateBetween(LocalDateTime start, LocalDateTime end); } public void test() { LocalDateTime startDatetime = LocalDat..
[JPA] Entity와 Repository의 관계, Repository의 기본 메서드/추가 메서드
·
Programming/Spring
Entity클래스를 작성했다면 Repository 인터페이스를 만들어야 한다. 스프링부트에서는 Entity의 기본적인 CRUD가 가능하도록 JpaRepository 인터페이스를 제공한다. public interface MemberRepository extends JpaRepository { } Spring Data JPA에서 제공하는 JpaRepository 인터페이스를 상속하기만 해도 되며, 인터페이스에 따로 @Repository등의 어노테이션을 추가할 필요가 없다. JpaRepository를 상속받을 때는 사용될 Entity 클래스와 ID 값이 들어가게 된다. 즉, JpaRepository 가 된다. Repository의 기본 메서드 / 추가 메서드 기본 제공 메서드 기능 save() 레코드 저장 (..
@Controller와 @RestController의 차이
·
Programming/Spring
@RestController의 동작방식 @RestController 는 @Controller 어노테이션과 @ResponseBody 어노테이션을 합쳐놓은 어노테이션이다. 클래스 상단에 @RestController 어노테이션을 선언하면 Method마다 @ResponseBody를 붙여 주지 않아도 된다. 즉 동일한 동작을 한다고 말할 수 있다. @Controller와 @RestController 방식의 차이점을 알아보자. 스프링 Controller는 일반적으로 View Page 이름을 리턴해주어 사용자에게 뷰페이지를 출력하게 해준다. 그림을 보면 어떤 흐름으로 동작하는지 볼 수 있다. 사용자의 요청이 오면 등록된 ViewResolver를 통해 사용자에게 text/html 타입의 응답을 보내주게 된다. @Con..
SpringMVC Controller 생성하기
·
Programming/Spring
1. MVC ▶ 개요 - MVC(Model View Controller)란 하나의 디자인 패턴이다. - 스프링 MVC : 스프링이 제공하는 웹 어플리케이션 구축 전용 MVC 프레임워크. 1. 모델(Model) : 비즈니스 규칙을 표현 2. 뷰(View) : 프레젠테이션을 표현 3. 컨트롤러(Controller) : 위 두가지를 분리하기 위하여 양측 사이에 배치된 인터페이스 이번 포스팅은 MVC의 개념을 설명하는 포스팅은 아니기에 이정도만 작성하고, 그 첫번째로 스프링 부트에서 Controller 생성 하는 방법을 알아보려 한다. ▶ Controller란? - Controller에 대해 간단히 말하자면 MVC에서 C에 해당 하며 주로 사용자의 요청을 처리 한 후 지정된 뷰에 모델 객체를 넘겨주는 역할을 한..