본문 바로가기

전체 글

(47)
[Spring] 스프링 입문 - 회원 관리 예제, 웹 MVC 개발 회원 웹 기능 - 홈 화면 추가 1. HomeController 생성 package hello.hellospring.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; @Controller public class HomeController { @GetMapping("/") public String home() { return "home"; } 2. home.html 생성 Hello Spring 회원 기능 회원 가입 회원 목록 localhost:8080에서 위와 같은 웹 페이지가 만들어 진다 회원 웹 기능 - 등록 1. MemberControl..
[Spring] 스프링 입문 - 스프링 빈과 의존 관계 회원 컨트롤러가 회원 서비스, 리포지토리를 사용할 수 있게 의존관계를 준비한다 Controller 어노테이션 스프링 컨테이너가 창에 뜨면, 스프링 컨테이너 라는 통이 생긴다 Controller 어노테이션이 있으면 MemberController 객체를 생겨서 통에 넣어두고, 스프링이 관리한다 new 방식으로 객체를 생성하지 말고, 컨테이너에 하나만 등록해서 그 등록한 것을 사용하자! Autowired 스프링 컨테이너에서 memberService를 가져오는데, 생성자에 접근 순수한 자바 코드였던 MemberService에 Service라는 어노테이션을 초기에 선언 → 스프링이 Service라는 어노테이션을 보고, 스프링 컨테이너에 MemberService를 등록 Controller, Repository도 마..
[알고리즘] 트리, 그래프에 대하여 그래프(Graph) : 사이클이 존재하는 그래프 개체는 노드(Node) 관계는 간선(Edge) 무방향 그래프 (Undirected Graph) A와 B가 연결되어 있으면 B와 A도 연결되어 있다 방향 그래프 (Directed Acyclic Graphs) 간선에 방향이 존재하는 그래프 A → C 일 때, C → A 인 건 아니다 여기서 사이클 이라는 중요 개념이 등장한다 💡 사이클 : 시작 정점과 끝나는 정점이 동일한 경로 사이클이 존재하지 않는 방향 그래프는 DAG(Directed Acyclic Graphs) 트리는 사이클이 존재하지 않는 DAG 이다 가중치 그래프 간선에 가중치, 즉 비용이 추가된 그래프이다 A → B로 갈때 10 만큼의 비용이 필요하다, 라는 느낌 트리(Tree) : 사이클이 존재하지..
[Server] TCP와 UDP TCP; Transmission Control Protocol 연결지향형 프로토콜, 즉 송신자와 수신자가 양방향 소통을 한다 패킷을 한 컴퓨터에서 다른 컴퓨터로 전달해주는 IP 프로토콜로, 신뢰성이 요구되는 애플리케이션에서 사용한다 안정적이고, 혼잡 제어와 흐름 제어가 가능하다! 하지만 데이터 전송 순서가 보장되면서 상대적으로 느리다..라는 것 연결형 서비스 byte 스트림으로 연결한다 흐름 / 혼잡 제어 O 신뢰성 GOOD 전이중 방식 (Full-Duplex) : 양방향 동시 전송 가능 점대점 (Point to Point) : 1대1, 2개의 종단점 TCP Header Source Port, Destination Port : 송/수신자의 포트 번호 주소 Sequence Number : 시퀀스 번호 - ..
[Spring] 스프링 입문 - 회원 서비스 테스트 [단축키] 테스트 생성 command + shift + T 💡 테스트는 한글로 적어도 괜찮다! 실제 코드에 포함되지 않기 때문에 given, when, then 문법 given : 어떤 것이 주어졌을 때 when : 이 코드를 실행 했을 때 then : 결과는 이것이 나와야 한다 회원가입 테스트 코드 작성 class MemberServiceTest { MemberService memberService = new MemberService(); @Test void 회원가입() { // given Member member = new Member(); member.setName("hello"); // when Long saveId = memberService.join(member); // then Member ..
[알고리즘] 코틀린으로 큐(Queue) 구현하기 🔑 문제 첫 번째 숫자를 1 감소한 뒤, 맨 뒤로, 다음 첫 번째 수는 2감소한 뒤 맨 뒤로, 첫 번째 수는 3을 감소, 그 다음 수는 4, 그 다음 수는 5를 감소해 다음 오는 첫 번째 수는 다시 1을 감소한 후 맨 뒤로 보낸다. 이 작업을 반복한다. 숫자가 감소할 때 0보다 작아지는 경우 0, 맨 뒤로 보내는 숫자가 0일 경우에도 수를 맨 뒤로 보낸 이후 한 과정이 종료된다. 이 때의 8자리의 숫자 값이 암호가 된다. [조건] 문제는 queue를 사용해 해결해야 한다. 지인의 학교 수업 문제로, 저작권 상 자세한 설명은 생략 🧸 풀이 코틀린에서는 Queue를 바로 사용할 수 없고, 자바의 기능을 사용해야 한다 LinkedList 사용! java.util.LinkedList를 import 해주어야 한다..
[Spring] 스프링 입문 - 회원 서비스 개발 회원 서비스 개발 : 회원 리포지토리와 도메인을 활용하여 실제 비즈니스 로직을 작성 1. MemberService 클래스 생성 💡 service 패키지를 새로 만들어서, 그 안에 생성합니다 [단축키] Command + Option + V : return 형식으로 변수 추출 2. 회원가입 메서드 생성 public class MemberService { private final MemberRepository memberRepository = new MemoryMemberRepository(); /** * 회원 가입 */ public Long join(Member member) { // 같은 이름이 있는 중복 회원은 안되는 조건 Optional result = memberRepository.findByName..
[Spring] 스프링 입문 - 회원 리포지토리 테스트 케이스 테스트 케이스 만들기 : 내가 원하는 대로 작동하는지 검증하기 위해 테스트 케이스를 만든다 ! class MemoryMemberRepositoryTest { MemoryMemberRepository repository = new MemoryMemberRepository(); @Test public void save() { Member member = new Member(); member.setName("spring"); repository.save(member); Member result = repository.findById(member.getId()).get(); Assertions.assertEquals(member, result); } } hello.hellospring.repository 패키지..