분류 전체보기
-
Stack (스택)알고리즘/자료구조 2020. 12. 29. 23:32
Stack LIFO(Last In First Out) 구조를 가진 자료구조다. 말그대로 나중에 들어온 데이터가 먼저 나간다. 먼저 들어온 데이터가 가장 아래에 위치한다. 아래있는 데이터를 꺼내려면 그 위에 있는 데이터를 모두 꺼내야 한다. 스택에 데이터를 넣는 행위를 push 이라고 한다. 스택에서 데이터를 꺼내는 행위를 pop 이라고 한다. 두가지 자료구조를 활용해서 스택을 구현했다. 하나는 배열, 하나는 ListNode(LinkedList를 실습하기 위해 만든 클래스)이다. 배열로 구현했을 땐, 크기를 미리 정해야하기 때문에 가변적이지 못하다. ListNode로 구현했을 땐 스택 크기 제한이 없다. 구현1 (int 배열 사용) 테스트코드 포함 전체 코드 링크 package com.example.wee..
-
Linked List (연결 리스트)알고리즘/자료구조 2020. 12. 29. 21:26
Linked List 리스트 자료구조는 중복 저장을 허용하며 데이터를 나란히 저장한다. 자바에는 리스트 자료구조를 정의해놓은 List컬렉션이 있다. (인터페이스) 객체를 인덱스로 관리하여 객체를 삽입하면 인덱스가 자동으로 부여된다. 그래서 인덱스로 객체에 검색, 삭제가 가능하다. 객체를 직접 저장하고 있지 않고 객체의 주소를 가지고 있다. null도 저장이 가능하다. (아무것도 참조하지 않는 상태) 구현체로 ArrayList, LinkedList, Vector 등이 있다. LinkedList(연결 리스트)는 List 인터페이스의 구현체로 메모리의 동적할당을 기반으로 구현된 리스트다. LinkedList의 모든 노드는 인접 노드를 참조해서 체인처럼 관리한다. 노드를 리스트의 중간에 삽입하여도 인접한 노드들..
-
[애플리케이션을 테스트하는 다양한 방법] JUnit5 Assertion개발/Test 2020. 12. 28. 14:12
Assertion 실제테스트에서 검증하고자 하는 내용을 확인하는 기능이다. assert를 다 다루기엔 너무 많고 몇가지만 간추려서 학습한다. 연습 코드 실제 로직 작성전에 테스트 먼저 작성하자. assertEquals(expected, actual) 인자로 (기대값, 실제값[, 실패시 메세지])로 주고 두 값이 같은지 확인한다. 실패시 메세지는 필수는 아니다. 다만 나중에 봤을 때 메세지를 적어놨면 디버깅이 더 쉬울것이다. 메세지는 스트링으로 줄수도 있고 supplier (or supplier를 람다식)으로 작성할 수도 있다. Supplier도 테스트가 실패했을때 출력해줄 메세지를 적어주면 된다. 스트링으로 작성핳는 것 보다 복잡하지만 사용하는 이유는 에러 메세지를 만들 때, (연산이 들어가는 등 복잡한..
-
[애플리케이션을 테스트하는 다양한 방법] JUnit 소개와 시작개발/Test 2020. 12. 28. 03:39
백기선님 인프런 강의 더 자바, 애플리케이션을 테스트하는 다양한 방법 정리 연습 코드 진행중 발생한 문제 자바 버전 관련 에러 - Error:java: invalid source release: 11 해결 JUnit5 소개 Junit4는 자체가 하나의 덩어리 jar로 디펜더쉴로 들어오고, junit4가 다른 라이브러리 참조한다. Junit5는 JUnit5 자체가 여러 모듈화되었다. 플랫폼 위에 5의 세부모듈인 Jupiter, Vintage를 올리는 형태다. 그 중 JUnit Platform은 JUnit으로 작성한 테스트코드를 실행시켜주는 런처를 제공한다. 런처를 통해 콘솔, 메인 메소드, 인텔리제이같은 툴에서도 자바로 써진 테스트코드를 실행할 수 있다. 인텔리제이에서 테스트 코드를 main 메서드 없이 ..
-
[Mac OS] homebrew로 Java11 설치 & 여러가지 버전 변경하기 (+ Error:java: invalid source release: 11 해결)개발/Java 2020. 12. 28. 03:32
개요 백기선님의 더 자바, 애플리케이션을 테스트하는 다양한 방법 강좌를 수강하기 시작했는데, 시작하자마자 문제가 생겼다. 스프링부트 프로젝트를 생성하고 시험삼아 테스트 클래스를 런 시켜보았는데 다음 에러가 발생했다. Error:java: invalid source release: 11 검색해보고 이유를 유추해보니, 나는 지금 자바 8버전을 사용하고 있지만 해당 프로젝트에서는 11버전을 요구하고 있는것 같았다. 그래서 문제를 해결하기 위해 자바11을 설치하고, 만일을 위해 자바8로 돌아갈 수 있도록 하는 방법을 찾았다. homebrew로 자바11 설치하기 homebrew란 MacOS용 패키지 관리자인데, 개발자에게 필요한 도구를 쉽게 설치할 수 있다. 설치에 관한 내용은 여기로 다음을 순서대로 진행한다. ..
-
깃허브 자바 API (Github Java Library) 사용하기 (외부 라이브러리 불러오기)개발/Java 2020. 12. 27. 21:20
깃허브 API 사용하기 백기선님이 이끄시는 live-study를 할 때, 해당 주차의 issue에 공부한 글의 링크를 달아 출석체크를 한다. Issue를 1~18주차까지 순회하면서 참가자 목록을 만들고 출석률을 계산하는 프로그램을 만든다. 이 프로그램을 만드는 과정에서 Github 자바 라이브러리가 필요하여 사용하는 방법(라이브러리를 불러오는 방법)을 정리하기로 하였다. Access Token 생성 우측 상단 자신의 프로필 클릭 -> Settings -> Developer Settings -> Personal access tokens -> Generate new token 으로 간단하게 토큰을 생성할 수 있다. ❗️Access token은 타인에게 노출해서는 안되고, 한번 생성하면 다시 보이지 않으니 자..
-
멀티 스레드 - 개념, 생성과 실행, 우선순위, 동기화 메소드(synchronized)개발/Java 2020. 12. 27. 19:45
'이것이 자바다' 교재를 참고하였습니다. 코드는 여기에 멀티 스레드 목차 멀티 스레드 개념 작업 스레드 생성과 실행 스레드 우선순위 동기화 메소드와 동기화 블록 멀티 스레드 개념 프로세스와 스레드 프로세스란 운영체제에서 실행중인 하나의 애플리케이션을 의미한다. 사용자가 애플리케이션을 실행하면 운영체제는 실행에 필요한 메모리를 할당해주고 코드를 실행하는데 이것이 프로세스다. 예를들어 구글 크롬을 실행시키면 하나의 프로세스를 생성한 것이고, 구글 크롬을 2개 띄우면 프로세스를 두개 생성한 것이다. 멀티 태스킹이란 두가지 이상의 작업을 동시에 처리하는 것이다. 운영체제는 멀티 태스킹을 위해 자원을 적당히 할당하고 병렬로 실행시킨다. 멀티 프로세스도 멀티 태스킹이지만, 한 프로세스 내에서 여러가지 작업을 처리할..
-
[객체지향의 원리와 이해] (3-2) 자바와 객체지향 - 추상화:모델링개발/OOP, Design Pattern 2020. 12. 27. 14:27
추상화 : 모델링 추상 : [심리] 여러 가지 사물이나 개념에서 공통되는 특성이나 속성 따위를 추출하여 파악하는 작용 피카소같은 화가의 작품을 보면 실제 사람과 비슷한 모습을 하지 않고 어떠한 특징들만을 표현하고 있다. 계급을 사람의 키로 표현한다던가 하는 방식으로 말이다. 사전적 정의처럼 추상화 한다는 것은 어떠한 것을 표현할 수 있는 공통된 특징과 속성을 파악하여 표현하는 것을 말한다. 추상화는 모델링이다 객체지향의 4대 특성(캡,상,추,다)는 클래스를 통해 구현된다. 클래스를 통해 '사람'을 구현한다고 했을 때, 먼저 클래스 설계를 한다. 설계를 하기 위해 사람의 공통된 특성을 뽑아보자. - 사람 - 시력 - 몸무게 - 나이 - 직업 - 연봉 - 먹다() - 마시다() - 눕다() - 자다() - ..