목록[백엔드]/[Java | 학습기록] (29)
개발자로 후회없는 삶 살기

서론※ 아래 내용을 다룹니다.Hash 알고리즘Set 자료구조 내부 원리hashCode와 Equals를 재정의 해야 하는 이유 본론- List vs Set 특징 비교1. List1) 인덱스가 있다.2) 중복을 허용한다.3) 순서가 있다. 2. Set1) 인덱스가 없어서 순서가 없다.2) 중복을 허용하지 않고 유일한 요소만 저장할 수 있다.3) 요소를 포함하고 있는지 중복을 체크하는 속도가 매우 빠르다.자바의 Set은 위와 같은 특징을 가지고 있어서, 중복 제거 할 때 용이하게 사용되고, 순서가 필요한 경우엔 사용할 수 없다. 3번 특징처럼 체크 속도가 왜 이렇게 빠른지 구현하면서 알아보자. - Set의 문제점public class MyHashSetV0 { private int[] elementData..

서론※ 아래 내용을 다룹니다.배열리스트ArrayList각각의 성능 비교 본론- ArrayList와 배열의 차이점배열의 단점 : 동적으로 배열의 크기를 조절할 수 없고, 너무 크게 잡으면 메모리가 낭비된다.이러한 단점을 극복하는 ArrayList는 배열의 문제점을 해결하고 간편하게 사용할 수 있도록 도와주는 자료구조이다. 직접 간단하게 구현해보면서 실제 ArrayList 클래스 내부 구조를 파악해보자 ArrayList 내부 구현 코드를 보면 Object 배열을 사용하고 기본 크기는 10이다. 🚨 범위를 초과하면 어떻게 될까?배열을 사용하기 때문에 범위를 초과하면 당연히 OOB 에러가 난다. - 동적 배열우리가 원하는 리스트는 동적으로 저장할 수 있도록 크기가 커지는 것이다. 따라서 ArrayList 내부..

서론※ 아래 내용을 다룹니다.제네릭 타입제네릭 메서드와일드 카드타입이레이저각각의 사용 목적 본론- 제네릭이 필요한 이유public class IntegerBox { private Integer value; public Integer get() { return value; } public void set(Integer value) { this.value = value; }}IntegerBox는 정수를 저장하는 박스이고, StringBox는 문자열을 저장하는 박스이다. 🚨 요구사항이 늘어난다면?Boolean, Double 등 요구사항에 있는 타입의 Box를 전부 새로 만들어야 한다.코드가 다 똑같이 생겼는데 데이터 타입만 달라 코드 중복이 발생한다. ->..

서론※ 과거에 기록한 내용에서 중요한 부분만 발췌하여 모두가 이해하기 쉽게 다시 서술한다. 본론- JVM, JDK, JRE, JAR 구분1. JVM자바 바이트 코드를 어떻게 실행할 지에 대한 표준 스펙으로 바이트 코드를 OS에 특화된 코드로(기계어) 변환하고 실행하는 것의 표준이고 구현체이다. class 파일을 열어보면 바이트 코드를 디컴파일해서 보기 좋게 만들어 준다. JVM이 바이트 코드를 Mac, Window에 맞는 머신 코드로 변경한 후(기계어) 실행하는 것이다. 이외에도, 클래스 로드, 메모리에 로드하고 실행하는 자바를 사용하는 개발자를 위한 OS 인터페이스라고 볼 수 있다. 하는 일이 물리 컴퓨터의 OS와 비슷하다. ※ 바이트 코드 : java 파일을 컴파일해서 생긴 class 파일 안에 들어..

서론※ 과거에 기록한 내용에서 중요한 부분만 발췌하여 모두가 이해하기 쉽게 다시 서술한다.자바의 데이터 형식Arrays, Collections 클래스본론- 자바의 데이터 형식1. List : 데이터의 중복을 허용하는 순서가 있는 데이터 집합2. Set : 데이터의 중복을 허용하지 않고, 순서가 없는 데이터 집합, List와 Set은 상위에 공통 기능을 가지는 Collection 인터페이스를 가짐3. Map : 키-벨류 쌍의 데이터 집합, 상위에 Collection 인터페이스가 없음 🚨 컬랙션에서 동기화란?Arraylist와 Vector, HashTable과 HashMap은 동일한 기능을 제공하는 것처럼 보이나, 동기화 지원 여부라는 차이가 있다. -> HashTable의 Putsynchronized 키..

서론※ 과거에 기록한 내용에서 중요한 부분만 발췌하여 모두가 이해하기 쉽게 다시 서술한다. 본론- 최고의 오류 핸들링이란?1) 문제가 발생해도 서비스가 다운되지 않게 하는 것2) 발생한 문제를 로그로 남기고, 로그를 분석하여 원인을 파악하는 것자바는 안정성을 추구하는 언어로, 오류를 핸들링할 수 있는 문법을 제공한다. ✅ 오류와 에러오류가 에러를 포함하는 개념이다. 따라서 에러는 오류라고 볼 수 있다. 런타임 에러 : 프로그램이 실행되는 도중에 발생하는 예기치 못한 오류컴파일 에러 : 컴파일 시점에 컴파일러에 의해 파악된 오류논리적 에러 : 곱하기를 기대했지만, 더하기를 해서 기대한 결과와 다른 결과를 출력한 오류개발자가 가장 중요하게 예외 처리를 해야 하는 것은 런타임 에러로, 런타임 에러가 발생하면 ..

서론※ 이 글에서는 자바에서 파일을 다룰 때 사용하는 try-catch-finally 방식의 문제점을 언급하며, try-with-resources를 사용해야 하는 이유를 서술한다. 본론✅ try-with-resources란?public class Main { public static void main(String[] args) throws IOException { FileInputStream fis = new FileInputStream("ex.txt"); BufferedInputStream bis = new BufferedInputStream(fis); }}파일을 사용하기 위해선 디스크에 저장되어 있는 파일을 메모리에 올려야 하는데, 자바에서는 JVM이 어플리케이션에..

서론※ 과거에 기록한 내용에서 중요한 부분만 발췌하여 모두가 이해하기 쉽게 다시 서술한다. 본론- 자바의 인코딩 방식1. 자바 내부적으로는 문자열이 UTF16으로 인코딩 된다.2. 문자열 송/수신을 위해 직렬화가 필요할 때는 변형된 UTF8을 사용한다.3. 문자열 입/출력에서는 사용자 지정 인코딩 or OS 기본 인코딩 방식으로 문자열을 인코딩한다.자바의 인코딩 방식은 상황에 따라 다르며, 내부 메모리 상에서 처리되는 것과는 다르다. 유니코드, 아스키코드 : 문자를 컴퓨터로 표현하기 위해 고유한 숫자와 매칭한 코드 집합UTF-8 : 가변 길이 유니코드 인코딩으로 특정 문자를 바이트로 변환하는 방법 (영어 1B, 한글 3B), 8은 1B를 나타내지만 아스키 문자에 대해 1바이트를 사용하며, 그 이외의 문자..