전체 글
-
[Java] JVM이란? JVM(Java Virtual Machine)의 모든것을 알아보자Java/자바를 더 깊게 2022. 2. 17. 09:06
JVM이란? Java Virtual Machine의 약자로 자바 가상 머신이라고 불립니다. 자바와 운영체제 사이에서 중계자 역할을 합니다. 따라서 자바가 운영체제 종류에 영향받지 않고 돌아갈 수 있도록 합니다. = (Write Once Run AnyWhere) C언어나 C++언어 같은 경우에는 16비트, 32비트, 64비트 플랫폼에 따라 int 형의 크기가 변하지만 JVM은 기본 자료형인 int는 4바이트(2^32)로 고정시켜 타입의 안정성을 꾀하고 플랫폼 독립성을 보장합니다. 어떤것들은 JVM이라고 부를 수 있을까? (JVM Specification) Specification은 '규격' 또는 '사양'이라고 번역됩니다. 특정 기술분야에 대해, 이 기술은 이런 규격을 가졌으니 이 기술을 사용하거나 구현할 ..
-
[백준] 3085번 : 사탕 게임 - 자바(JAVA)알고리즘/백준 2022. 2. 17. 00:01
https://www.acmicpc.net/problem/3085 3085번: 사탕 게임 예제 3의 경우 4번 행의 Y와 C를 바꾸면 사탕 네 개를 먹을 수 있다. www.acmicpc.net 문제 해석 N x N 크기에 사탕이 채워져 있다. 사탕의 색은 같지 않을 수 있다. 사탕의 색이 다른 인접한 두 칸을 골라서 교환할 수 있다. 교환은 단 한 번만 이루어진다. 이때 사탕이 같은 색인 가장 긴 연속 부분을 출력한다. 입력 첫째 줄에 보드의 크기 N이 주어진다. 다음 N개의 줄에는 보드에 채워져 있는 사탕의 색상이 주어진다. 제약조건 3 tempMax ? maxCandyCount : tempMax; tempMax = 1; } } maxCandyCount = maxCandyCount > tempMax ?..
-
[백준] 1965번 : 상자넣기 - 자바(JAVA)알고리즘/백준 2022. 2. 16. 00:01
https://www.acmicpc.net/problem/1965 1965번: 상자넣기 정육면체 모양의 상자가 일렬로 늘어서 있다. 상자마다 크기가 주어져 있는데, 앞에 있는 상자의 크기가 뒤에 있는 상자의 크기보다 작으면, 앞에 있는 상자를 뒤에 있는 상자 안에 넣을 수가 www.acmicpc.net 문제 해석 상자가 일렬로 늘어서 있는데 상자마다 크기가 존재한다. 앞에 있는 상자의 크기가 뒤에 있는 상자의 크기보다 작으면, 앞에 있는 상자를 뒤에 있는 상자 안에 넣을 수 있다. 만약 상자의 크기가 (1, 5, 2, 3, 7)인 5개의 상자가 존재한다면, 크기 1인 상자를 크기 5인 상자에 넣고 크기 5인 상자를 크기 7인 상자 안에 넣을 수 있다. 상자의 크기가 주어질 때, 한 번에 넣을 수 있는 최..
-
[Java] String이 불변 객체인 이유는?Java/자바를 더 깊게 2022. 2. 15. 01:19
보통 String / StringBuffer / StringBuilder의 차이점들은 많이 알고 있습니다. String은 불변 객체이며, StringBuffer/ StringBuilder는 가변 객체입니다. 또한 StringBuilder는 thread-safe 하지 않으며 StringBuffer는 thread-safe 합니다. 그런데 String은 왜 불변 객체로 만들었을까요? 1. 성능 자바에서 문자열은 정말 많이 사용됩니다. 따라서 자바는 상수풀 이라는 것을 만들었습니다. public class Test { public static void main(String[] args) { String s1 = "Hello World"; String s2 = "Hello World"; System.out.pri..
-
클린 코드 - 오류 처리클린 코드(Clean Code) 2022. 2. 15. 00:01
입력이 이상하거나 디바이스가 실패할지도 모르기 때문에 오류 처리는 프로그램에 필수적인 요소입니다. 여기저기 흩어진 오류 처리 코드는 실제 코드가 하는 일을 파악하기 어렵게 만들기 때문에 오류 처리는 중요합니다. 1. 오류 코드보다는 예외를 사용하라 오류 플래그를 사용한 경우 = 예외를 사용하지 않음 if(!Error1){ doSomething1(); if(!Error2){ doSomething2(); } else { logger.log("Error2 발생"); } } else{ logger.log("Error1 발생"); } 예외를 사용하는 경우 try{ doSomething1(); } catch (Exception e){ logger.log(e); } try{ doSomething2(); } catch..
-
테스트 코드 - 회원 관리 예제 실습(회원 서비스 개발)테스트코드(Test Code) 2022. 2. 14. 00:01
이전에 회원 관리 예제를 작성하는 실습(회원 서비스 개발)을 진행하였습니다. 이를 통해 테스트 코드를 작성해보고자 합니다. https://junuuu.tistory.com/93 1. src/test/java 에 hello.hellospring.service 패키지를 생성합니다. 2. hello.hellospriong.service패키지에 MemberServiceTest 클래스를 생성합니다. 일반적으로 테스트하고자 하는 클래스 이름 뒤에 Test를 붙여 이름 짓습니다. 3. MemberServiceTest 클래스에 테스트 코드를 작성합니다. package hello.hellospring.service; import static org.junit.jupiter.api.Assertions.assertThrow..
-
스프링 부트 - 회원 관리 예제 실습(회원 서비스 개발)Spring Framework 2022. 2. 13. 00:01
이전 시간에는 회원 도메인과 리포지토리를 생성했습니다. https://junuuu.tistory.com/75 스프링 부트 - 회원 관리 예제 실습(회원 도메인과 리포지토리 생성) 비즈니스 요구사항 정리 데이터 : 회원 ID, 이름 기능 : 회원 등록, 조회 아직 데이터 저장소가 선정되지 않은 가상의 시나리오(어떤 데이터베이스를 사용할지 정해지지 않음) 일반적인 웹 애플리 junuuu.tistory.com 오늘은 회원 도메인과 리포지토리를 기반으로 회원 서비스를 개발해보겠습니다. 클래스 의존관계 MemberService는 MemberRepository에 의존적이기 때문에 MemberRepository를 사용해야 합니다. 1. hello.hellospring.service 패키지 생성 2. hello.hel..
-
[백준] 1931번 : 회의실 배정 - 자바(JAVA)알고리즘/백준 2022. 2. 12. 00:01
https://www.acmicpc.net/problem/1931 1931번: 회의실 배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 문제 해석 한 개의 회의실이 존재하며 회의를 하기 위해서는 회의실을 사용해야 한다. N개의 회의에 대하여 시작시간과 끝나는 시간이 주어진다. 이때 회의가 겹치지 않으며 최대가 되는 회의의 개수를 찾아보자. 회의가 끝나는 것과 동시에 다음 회의가 시작할 수 있다. 회의의 시작시간과 끝나는 시간이 같을 수도 있다. 입력 첫째 줄에 회의의 수 N이 주어진다. 둘째 줄부터 N개의 회의시작시간과 회의 종료시간이 주어진다. 제약조건 1