본문 바로가기

분류 전체보기142

OSI 7계층, TCP/IP 5계층 0. 개요 이번 게시물에서는 기기간에 인터넷으로 정보를 전달하는 방법을 이해하기 위한 첫 번째 단계인 OSI 7계층과 현재 표준으로 사용하고 있는 TCP/IP 5계층에 대해 정리해 볼 것이다. 1. Circuit Switching Network, Packet Switching Network OSI Model을 소개하기에 앞서, 중앙 제어 전달 방식과 목적지 주소 전달 방식에 대해 알아보자. - Circuit Switiching Network (중앙 제어 전달 방식) Circuit Switching은 A에서 B로 데이터를 보낼 경우, 하나의 회선을 부여한다. 해당 통신이 진행되는 동안, 이 회선은 A, B를 제외하고 다른 곳에서 접근이 불가능해진다. 데이터가 분리되지 않으며, 다른 곳을 경유하지 않기 때문.. 2023. 11. 9.
[Thymeleaf] Thymeleaf(타임리프)의 특징과 기본 표현식, 태그 속성 1. 개요 이번 게시물에서는 Thymeleaf의 특징, 기본 표현식, 태그 속성들에 대해 정리해볼 것이다. 해당 게시물에서는 타임리프만의 특징들에 대해서 정리해볼 예정이며, 다음 게시물에서는 spring과 같이 사용할 경우 활용할 수 있는 다양한 기능들을 소개할 것이다. spring에서 많이 사용하는 뷰 템플릿이므로, spring study 카테고리에서 작성하게 되었다. 목차 Thymeleaf의 특징 기본 표현식 태그 속성 추가 2. Thymeleaf의 특징 1) 서버 사이드 HTML 렌더링 (SSR) 타임리프는 백엔드 서버에서 HTML을 동적으로 렌더링한다. 이에 관해서는 예전에 작성한 글을 첨부한다. 서버/클라이언트 템플릿 엔진 2) 네츄럴 템플릿 타임리프의 장점 중 하나이다. 이는 순수 HTML을 .. 2023. 6. 7.
[Java] String.repeat() 1. 개요 지금까지 문자열을 반복해야 하는 경우 for문을 사용했었는데, 자바 11부터 생긴 repeat()을 사용하면 편하게 문자열을 반복시킬 수 있다. 2. String.repeat() 바로 코드를 통해 확인해보자. public class Repeat { public static void main(String[] args) { StringBuilder sb = new StringBuilder(); String str = "Hello "; for (int i=0; i 2023. 5. 31.
[Java] StringBuilder 1. 개요 이번 게시물에서는 StringBuilder에 대해 작성해 볼 것이다. 2. 일반적인 문자열 덧셈 String a = "Hello"; String b = " String"; String c = "Builder!"; String result = a + b + c; System.out.println(result); 일반적으로는 위와 같이 문자열 덧셈 연산자를 활용하여 사용한다. 하지만, 이를 성능적인 측면에서 봐보자. String a = "Hello"; String b= " hi"; a += b; String은 불변(immutable) 객체이다. 즉, 한번 만들어지면 그 값을 수정할 수 없는 객체이다. 위의 예시를 보자. a += b가 계산될 때, String 객체는 불변이므로 새로운 String .. 2023. 5. 29.
[Java] 코테 준비를 위한 입출력 1. 개요 자바 사용 시 일반적으로는 System.out.println(""), Scanner 를 사용하여 입출력을 처리한다. 하지만 코딩 테스트 문제를 풀기 위해서, 이 두 방식은 시간 소모가 심하다는 단점이 있다. 구글링하면 많이 나오는 정보들이지만, 한번 정리하기 위해 어떤 클래스를 사용해야하는지 정리해볼 것이다. 2. 자바 입력 클래스 BufferedReader를 사용하는 것이 Scanner를 사용하는 것보다 빠르다. BufferedReader BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String input = br.readLine(); 하지만 BufferedReader는 정수를 입력받는 함수를 제공해주지 .. 2023. 5. 29.
[Spring] Spring Controller 어노테이션 정리 (MVC, REST api) 1. 개요 스프링을 공부하면서, 컨트롤러 작성 시 여러 어노테이션들을 배우게 되었다. 각각의 특징들을 간단하게나마 모두 정리하면 좋을 것 같아, 해당 게시물에서 최대한 나열해 보려고 한다. 목차 @Controller @RestController @RequestMapping() @GetMapping(), @PostMapping(), ... @ResponseBody @RequestParam() @ModelAttribute @PathVariable() HttpEntity, ResponseEntity @RequestBody @ResponseStatus(HttpStatus.OK) RedirectAttributes etc 2. @Controller @Controller public class MyMVCControl.. 2023. 5. 26.
[Spring] 스프링 MVC 패턴에서 Controller가 Model에 정보 저장하는 방법 정리 1. 개요 스프링 MVC 패턴에 의해 개발을 진행한다면, Controller에서 View에 정보를 전달하기 위해 Model에 정보를 담게 된다. 방식이 여러가지 있으며, 정리하기 위해 해당 게시물을 작성한다. 2. ModelAndView ModelAndView는 스프링 MVC가 제공해주는 클래스로, 핸들러 어댑터가 핸들러(컨트롤러)에서 받은 정보를 가지고 ModelAndView 인스턴스에 담아서 반환한다. 이때, 핸들러에서 직접 ModelAndView를 만들어서 반환할 수도 있다. @RequestMapping("/member/mv") public ModelAndView mvt() { ModelAndView mv = new ModelAndView("response/hi"); //(1) Member memb.. 2023. 5. 25.
[Spring] MVC 패턴, 스프링 MVC 구조 이해 1. 개요 이번 게시물에서는 MVC 패턴에 대한 소개, 장점에 대해서 설명할 것이다. 그 후, 스프링은 이 MVC 구조를 어떻게 구현하였는지를 알아보기위해 이와 비슷한 MVC 프레임워크를 만들어 볼 것이다. 2. MVC 패턴의 등장 이유 여러 이유로 인하여 서블릿으로만, 혹은 JSP로만 모든 비즈니스 로직과 뷰 렌더링을 처리해 본 사람들은 알 것이다. 하나의 파일이 너무 많은 역할을 하게 되고, 비즈니스 로직 변경 혹은 UI 변경을 할 일이 있을 경우 모두 함께 있는 파일을 수정해야 한다. 이때, 가장 큰 문제는 UI와 비즈니스 로직은 변경의 라이프 사이클이 전혀 다르다는 점이다. UI를 일부 수정하거나 비즈니스 로직을 수정하는 일은 개별적으로 주로 발생하며, 서로에게 영향을 주지 않는 경우가 많다. (.. 2023. 5. 24.