본문 바로가기

분류 전체보기

(104)
[Java] Checked Exception, Unchecked Exception 1. Checked Exception, Unchecked Exception이란 자바로 열심히 코딩을 하다보면 여러가지 Exception(예외)들을 만납니다. 실무에서뿐만 아니라 코딩테스트를 풀다가도 자주 만나는 Exception으로는 NullPointException, ArrayIndexOutOfBoundsException 등이 있습니다. 그렇다면 앞의 두 예시는 어떤 상황에서 발생할까요? 보통은 컴파일 시에는 발생하지 않습니다. 그랬다면 이미 알고 수정했을겁니다. 그렇다면 실행도중에 발생한 예외일겁니다. 그럼 Runtime 시점에 발생했으니 RuntimeException일겁니다. 이것들은 우리가 프로젝트를 실행할 때는 전혀 문제가 없습니다. 그래서 굳이 에러가 발생할 상황이 만들어지지 않는다면 체크할 ..
[프로그래머스] 괄호 회전하기 (Java) 카테고리 자료구조 나만의 카테고리 자료구조 - Stack 문제 링크 programmers.co.kr/learn/courses/30/lessons/76502 코딩테스트 연습 - 괄호 회전하기 programmers.co.kr 요점 Stack을 사용하여 올바른 괄호를 판단하는 로직을 구현할 수 있다. 참고 지식 Java Stack 풀이 (Java) import java.util.*; class Solution { private int answer = 0; public int solution(String s) { Stack stack = new Stack(); for (int i = 0; i < s.length(); i++) { stack.clear(); s = s.substring(1, s.length()) ..
[프로그래머스] 징검다리 건너기 카테고리 이분 탐색 나만의 카테고리 이분 탐색 문제 링크 programmers.co.kr/learn/courses/30/lessons/64062 코딩테스트 연습 - 징검다리 건너기 [2, 4, 5, 3, 2, 1, 4, 2, 5, 1] 3 3 programmers.co.kr 요점 이분 탐색을 구현할 수 있는지를 확인하는 문제 개인적으로 5만번 이상의 반복을 시키는 문제는 드물다고 생각 => 그 이상이라면 다른 방법을 찾아야한다 이분 탐색 문제의 Target 수가 없고 최대값을 찾는 문제라면 보통 배열 기준이 아닌 문제의 정답에 기준을 맞춰야한다. 참고 지식 대개 이분탐색의 Target이 정해져 있다면 탐색의 끝은 mid == target, 아니라면 min > max 일 때 끝이다 풀이 (Java) cla..
[Java] String 선언 방식에 따른 차이 String을 사용할 때 2가지 방식으로 선언할 수 있는데 어떤 차이가 있을까요? Java에서 String은 Reference 타입 중 가장 많이 사용되지 않을까 생각됩니다. 그런데 잘 알지도 못하고 사용하고 있다고 위의 질문을 들었을 때 알게 되었습니다. 그리고 Java책을 다시 펴보게 됐네요 ㅎㅎ public class Test { public static void main(String [] args) { String init1 = new String("init1"); String init2 = "init2"; String init2_2 = "init2_2"; } } String을 사용할 때 보통은 init2의 방식대로 사용하겠지만 위의 방식도 가능합니다. 중요한 차이점은 JVM에서 관리하는 메모리 ..
메모리 구조와 Stack / Heap 메모리 1. 메모리 구조 애플리케이션을 개발하고 서버에 띄우게 되면 OS가 RAM 메모리를 할당해주고 그 곳에 로드되게 됩니다. 이때 OS로부터 할당받는 메모리는 4가지 영역으로 나누어집니다. Code(코드) 영역 프로그램의 코드가 저장되는 공간입니다. Data(데이터) 영역 전역 변수와 정적 변수가 저장되는 공간입니다. 프로그램 시작과 함께 할당되고 프로그램이 종료되면 해제됩니다. Stack(스택) 영역 함수의 호출과 관계되는 지역 변수와 매개변수가 저장되는 공간입니다. 함수의 호출과 함께 할당되며 함수 호출이 종료되면 해제됩니다. 메모리의 높은 주소에서 낮은 주소 방향으로 할당됩니다. Heap(힙) 영역 사용자에 의해 동적으로 할당되고 해제되는 공간입니다. Java - new, c - realloc 등을 사..
[Java] Java Primitive Type VS Reference Type Java에서는 기본형 타입과 참조형 타입이 있습니다. 저도 너무나 자연스럽게 사용하고 있지만 아래의 질문을 받으니 대답 할 수가 없었습니다. Java에서 Primitive Type, Reference Type은 메모리 어디에 저장이 될까요? 이에 대한 정답은 아래에 정리하겠습니다. 1. Primitive Type (기본형 타입) 기본값이 NULL이 아닌 값들로 이루어져있다. 실제 값을 저장하고 메모리는 스택(Stack) 메모리에 저장된다. 컴파일 에러를 발생시킨다. 타입 메모리 크기 기본값 표현 범위 boolean 1 byte false true, false byte 1 byte 0 -128 ~ 127 short 2 byte 0 -32,768 ~ 32,767 int 4 byte 0 -2,147,483,6..
SPA에 대해서 (Single Page Application) 단일 페이지 애플리케이션(Single Page Application)은 웹, 앱에서 점점 많은 정보를 제공하는 추세에 따라 발전된 모던 웹의 패러다임입니다. 정보가 많아질수록 웹을 로딩하는데 비용이 많이 들어가게 되고 사용자 경험이 점점 안좋아지게 됩니다. 따라서 해결책이 필요해지게 된거죠. 기존에는 Link Tag 방식을 사용했습니다. 우리가 아는 링크를 클릭하게 되면 다른 페이지로 이동하게 됩니다. 그리고 그 링크에 대한 URL은 각각 다르게 설정되어 있죠. 이 방식은 각 URL에 해당되는 화면에 대한 리소스를 전부 구성하여 내려주게 됩니다. 이것이 서버 렌더링 방식이죠. 서버에서 렌더링하여 클라이언트에게 보내주게 됩니다. 서버 렌더링 방식은 새로운 페이지 요청마다 정적 리소스를 다운로드하게 되고 전..
[프로그래머스] 로또의 최고 순위와 최저 순위 (Java) 카테고리 기본 알고리즘 나만의 카테고리 아이디어 짜기 문제 링크 programmers.co.kr/learn/courses/30/lessons/77484 코딩테스트 연습 - 로또의 최고 순위와 최저 순위 로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 순위 당첨 내용 1 6개 번호가 모두 일치 2 5개 번호 programmers.co.kr 요점 int 배열의 순회 방법 중 어느 방법이 좋은지 비교해보자 참고 지식 [Java] IntStream.of(int[]) 풀이 (Java) // 추천 import java.util.*; class Solution { public int[] solution(int[]..
[Java] Java의 날짜, 시간 클래스는 어떻게 편해졌나 Java 1.7까지는 기본 SDK에서 날짜와 시간을 표현하고 사용하기 위해서는 java.util.Date 클래스와 java.util.Calendar 클래스를 이용해야 했습니다. 하지만 아주 잠깐만 사용해봐도 어마어마하게 불편하다는 것을 알 수 있습니다. 그래서 나온것이 Joda-Time이라는 오픈소스 라이브러리였고 Java 8에서는 드디어 개선되어서 적용되었습니다. 그러면 어떻게 좋지 않았고 어떠한 사항이 개선되었는지 확인해보겠습니다. 우선 아주 잘 정리된 Naver D2의 게시글을 공유해드립니다. 저의 게시글은 아래 링크의 글에 기반으로 한 글입니다. 그런데 정리를 곁들인. d2.naver.com/helloworld/645609 1. JDK 1.8 미만의 날짜 계산 단점 사용시 착오가 생길 수 있는 부..
도메인 주도 설계 (Domain Driven Development)에 대해서 DDD에 대해서 알아가면 알아갈수록 개념을 하나로 잡기가 어렵다는 걸 느끼게 됐습니다. 여러 블로그에서 DDD에 대한 정보를 검색해봐도 정확한 적용방식이나 개념이 이해가 가지 않아서 정리하게 된 글입니다. 저와 같은 분들에게 도움이 되면 좋겠습니다. DDD란 뭘까? DDD란 말 그대로만 보자면 도메인 패턴을 중심에 놓고 프로그램을 설계해가는 방식을 의미합니다. 이러한 설계 방식을 올바르게 적용한다면 도메인 모델이라고 하는 소프트웨어 추상화를 달성할 수 있게 되고 이것이 목표인 설계 방식이라고 보여집니다. 그럼 도메인은 뭘까요? Domain (도메인) 도메인 - 영어 단어로써의 의미는 영토, 영역, 범위를 의미합니다. 프로그래밍 부분에서 의미는 소프트웨어 프로그램이 제공하는 기능 중 하나(영역)입니다. 도..