목록전체 글 (102)
영호
들어가며 JUnit5, Assertj를 이용해 테스트코드 작성을 경험해보기 위한 자바 프로젝트 생성 과정을 정리해보겠습니다. 자바 프로젝트 생성 1. 프로젝트 명 작성 2. Gradle선택 3. 프로젝트 명 작성 4. 생성 완료 마무리 JUnit5, Assertj 설정 및 테스트코드 작성은 링크를 참고해주세요.
들어가며 프로젝트를 진행하다 보면 기능들이 점점 추가가 된다. 초반에는 사람이 수동으로 기능이 정상적으로 동작하는지 확인할 수 있다. 그러나 기능들이 점점 많아지다 보면 수동으로 확인하는 것은 불가능에 가까웠기 때문에, 테스트 코드는 필수적이다. 그래서 Java에서 주로 사용하는 테스트 프레임워크인 JUnit과 테스트 코드 작성을 도와주는 Assertj에 대해 알아볼 예정이다. 목차 JUnit이란? AssertJ란? JUnit, Assertj를 이용한 테스트 코드 작성 JUnit이란? Java에서 지원하는 유닛 테스트 프레임워크이다. JUnit을 이용하여 수많은 기능들의 동작을 한 번에 테스트할 수 있게 해 준다. JUnit4부터 어노테이션을 지원한다. Assertj란? JUnit만을 이용해 테스트 코드..
들어가며 TypeORM을 사용하며 entity 작성하는 방법을 알아볼 예정입니다. 포스팅에서 바탕이 되는 ERD는 팀 프로젝트를 진행하며 설계한 ERD의 일부를 사용할 예정입니다. USER(1) PARENT(1) -> 일대일 관계 USER(1) BABYSITTER(1) -> 일대일 관계 TypeORM entity관련 기본적인 데코레이션 @PrimaryGeneratedColumn 이름 그대로 PK를 생성해주는 데코레이션입니다. autoIncrement가 적용된 데코레이션입니다. @PrimaryColumn PK를 생성해주지만 autoIncrement는 지원하지 않는 데코레이션입니다. @Column 이름 그대로 column을 생성할 때 기본으로 사용되는 데코레이션입니다. 다양한 column option, ty..
문제 링크 https://programmers.co.kr/learn/courses/30/lessons/81303 나의 풀이 Linked List를 이용하여 주어진 조건들을 구현하면 된다 각 노드들에는 [prev, next, is_deleted]로 마지막 원소는 최종적으로 삭제되었는지를 판단하기 위해 추가했다. 되돌리기 명령어를 위해 deleted라는 stack을 이용한다. 배열로 풀게 되면 입력 노드들의 개수가 최대 1,000,000개, 명령어는 최대 200,000개라 삭제, 되돌리기 명령어 때문에 시간 초과가 날 수 있기 때문에 Linked List로 풀어야 한다. Code #https://programmers.co.kr/learn/courses/30/lessons/81303 def solution(n..
개요 TypeScript와 JavaScript를 비교하면서 TypeScript는 어떤 식으로 컴파일 과정을 거치는지 알아보겠습니다. TypeScript vs JavaScript 우선 Typescript와 Javascript는 컴파일언어, 인터프리터 언어라는 차이가 있습니다. Typescript는 컴파일 언어, Javascript는 인터프리터 언어입니다. 컴파일 언어 : 소스코드 전체를 한 번에 검사해서 실행 프로그램으로 만들어주는 언어 인터프리터 언어 : 소스코드를 한줄한줄 읽어가며 실행하는 언어 TypeScript의 실행과정 Typescript코드 작성 Typescript코드를 TSC가 추상 구문 트리(AST)라는 것으로 변환을 합니다. 이 과정에서 공백, 주석 등 불필요한 정보들은 제거가 됩니다. 타..
문제 링크 https://programmers.co.kr/learn/courses/30/lessons/81302 나의 풀이 places를 돌며 'P'인 경우 bfs를 수행한다. bfs에서 queue에는 [x, y, distance] 형식으로 넣고 처음에 distance는 0으로 설정한다. 이후 while문을 돌며 pop한 distance에 +1을 해주고, 해당 값이 3이 되면 거리두기 2를 지킨 경우이기 때문에 멈춘다. 만약 상하좌우 탐색 중 distance가 2 이하인데 'P'를 만나면 거리두기가 지켜지지 않은 경우이다. bfs탐색 결과 False가 나오면 거리두기를 지키지 않은 것이기 때문에 모든 반복문을 멈추고 false를 리턴한다. bfs탐색 결과 True면 거리두기를 잘 지킨 경우다. Code ..
문제 링크 https://www.acmicpc.net/problem/14502 나의 풀이 방법 안전영역인 0의 좌표들을 safe_zones배열에 저장한다. 3개의 벽을 세울 안전영역 3군데를 고른다. 이때 (1,1), (2,2), (3,3)에 세우는 것과 (1,1), (3,3), (2,2)에 세우는 것은 똑같은 경우이기 때문에, combination을 사용한다. 이 작업을 하지 않으면 시간초과가 발생한다. 안전영역에 3개의 벽을 세우는 모든 경우의 수에 대해 bfs를 수행한다. Code # 연구소 import sys from collections import deque from itertools import combinations input = sys.stdin.readline row, col = map..
JVM이란? JVM은 Java Virtual Machine의 약자로 '자바 가상 머신'이라고 부릅니다. JVM으로 인해 운영체제에 구애받지 않고 JDK만 설치되어 있다면, 어느 환경에서든 동일한 Java파일을 실행할 수 있게 해 줍니다. JVM메모리 구조 JVM에 대해 크게 4가지로 나누어 보면 Class Loader, Excution Engine, Garbage Collector, Runtime Data Area가 있습니다. 지금부터 위 4가지를 하나씩 알아보겠습니다. Class Loader 자바 프로그램의 전체적인 실행 과정은 Java Compiler가 자바 소스코드인 .Java파일을 바이트코드 형태인 .class파일로 변환합니다. 이후 해당 바이트코드 파일들을 읽어 실행 시키는 것이 전체적인 실행 ..