본문 바로가기

분류 전체보기166

동기와 비동기 난 둘의 개념을 안다... 동기와 비동기를 떠올리면 항상 위의 이미지가 떠오른다. 문제는 위 이미지에서 어떤게 비동기고 어떤게 동기였지? 하고 항상 헷갈린다는 것이다. 이것저것 한꺼번에 하는게 동기였는지 비동기였는지.. 동기(synchronous): 데이터의 요청과 결과가 한 자리에서 동시에 일어나는것 비동기(Asynchronous): 요청한 결과가 동시에 일어나지 않을 것. 헷갈리는 이유는 둘의 사전적인 설명이 이래서,,,그림상으로는 동시에 이것저것하는게 비동기인데 사전적인 설명으로는 반대인것처럼 느껴진다. 요청과 결과가 한 자리에서 동시에 일어난다는 건, 뭔가 요청한다음에 기다리는 동안 딴짓하지 않고 결과가 나올때까지 대기한다는 의미이다. 카페에서 커피를 시켰다고 치면 나올때까지 알바생을 응시하며 기.. 2022. 9. 18.
[스프링 입문] 섹션 3. 회원 관리 예제 - 백엔드 개발 비지니스 요구사항 정리 데이터: 회원ID, 이름 기능: 회원 등록, 조회 아직 데이터 저장소가 선정되지 않음(가상의 시나리오) 컨트롤러: 웹 MVC의 컨트롤러 역할 서비스: 핵심 비즈니스 로직 구현 리포지토리: 데이터베이스에 접근, 도메인 객체를 DB에 저장하고 관리 도메인: 비즈니스 도메인 객체, 예) 회원, 주문, 쿠폰 등등 주로 데이터베이스에 저장하고 관리됨 아직 db를 뭐쓸지 결정하지 않았으므로, 일단 인터페이스 기반으로 개발한다. 회원 도메인과 리포지토리 만들기 이렇게 만들어준다. package hello.hellospring.domain; public class Member { private Long id; private String name; public String getName() { r.. 2022. 9. 18.
[스프링 입문] 섹션 2. 스프링 웹 개발 기초 스프링 웹 개발에는 세가지가 있다. 정적 컨텐츠 mvc와 템플릿 엔진 api 정적 컨텐츠 정적 컨텐츠는 말 그대로 그냥 파일을 때려박는다는 뜻.. 이런 애들이다. 그냥 고정된 웹페이지들 mvc와 템플릿 엔진 mvc: model, view, controller 컨트롤러 @Controller public class HelloController { @GetMapping("hello-mvc") public String helloMvc(@RequestParam("name") String name, Model model) { model.addAttribute("name", name); return "hello-template"; } } 뷰 hello! empty 위 화면에서 파라미터로 넘겨준 것에 주의. 컨트롤러에.. 2022. 9. 17.
[스프링 입문]섹션 1. 프로젝트 환경설정 view 환경설정 스프링 부트 스타터 사이트에서 스프링 프로젝트를 생성하고 IntelliJ에서 연다. staic 폴더 아래에 기본적인 웰컴페이지 html 파일을 작성하고 실행하면 위 화면을 볼 수 있다. 관련 설명을 공식 페이지에서 볼 수 있다. 링크는 여기 tymeleaf 템플릿 엔진 Thymeleaf 는 웹을 위한 server-side Java template engine이다. Thymeleaf 공식 페이지 얘에 대한 설명도 스프링 공식 페이지에서 볼 수 있다. controller라는 패키지를 만들고 HelloController 라는 파일을 작성해보자. package hello.hellospring.controller; import org.springframework.stereotype.Control.. 2022. 9. 17.
defaultdict이란? 오늘은 고수가 23줄만에 푼 문제를 1시간 반 넘게 붙잡고 뻘짓한 슬픈 날이다. 나는 dfs 문제에 좀 약한 것 같다.... 아무튼 고수들의 코드를 보니 하나같이 defaultdict를 쓴 것을 볼 수 있었다. 나는 그냥 dict을 썼다가 key error를 213539번 마주한 상태였다. dict이면 dict이지 defaultdict는 대체 무엇이란 말인가? 그래서 defaultdict이란? 객체의 기본값을 미리 지정해 놓을 수 있는 딕셔너리이다. 그러니까 이걸 쓰면 그런 키 값 없어! 하고 뱉는 keyerror로부터 자유로워질 수 있다는 말이다. from collections import defaultdict data = defaultdict(int) 예를 들어 이렇게 사용하면 값이 지정되지 않은 키.. 2022. 9. 16.
클린코드 16장 16장 SerialDate 리팩터링 SerialDate는 날짜를 표현하는 자바 클래스다. 이 장에서는 SerialDate 클래스를 리팩터링한다. 첫째, 돌려보자. SerialDateTest라는 클래스는 단위 테스트 케이스 몇 개를 포함한다. 돌려보면 실패하는 테스트 케이스는 없지만 살펴보면 모든 케이스를 점검하지 않는다. 그래서 저자는 독자적으로 단위 테스트 케이스를 구현한다. 그러자 경계 조건 오류가 존재하며, 논리적 오류로 인하여 결코 실행되지 않는 코드도 존재한다는 사실이 밝혀진다...해당 오류들을 모두 고쳐 테케를 모두 통과하게 만든 후 리팩터링에 들어가자. 둘째, 고쳐보자. 변경 이력 없애기 이제는 소스 코드 제어 도구를 사용하므로 변경 이력은 없애도 좋다. import문 줄이기 import 문.. 2022. 9. 16.
반응형