목록[백엔드]/[Java | 학습기록] (26)
개발자로 후회없는 삶 살기
서론※ 과거에 기록한 내용에서 중요한 부분만 발췌하여 모두가 이해하기 쉽게 다시 서술한다. 본론- 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바이트를 사용하며, 그 이외의 문자..
서론자바의 객체 정렬 기준에 대해 알아봅니다. 본론- Comparator와 Comparable객체 정렬에 필요한 메서드를 정의한 인터페이스로 정렬 기준을 제공하는 것이 목적입니다. class Student { String name; int ban; int totalScore;}즉, 객체를 비교할 수 있도록 만듭니다. 자바에서 제공하는 primitive 타입은 부등호 비교가 가능하지만 Student 클래스는 이름, 학급, 점수 중 어떠한 것을 정렬 기준으로 비교해야 하는지 알 수 없고 정해줘야 합니다. 이때, 정렬 기준 인터페이스를 사용하여 메서드를 재정의 함으로써 정렬 기준을 명시합니다. public interface Comparable { public int compareTo(T ..
서론왜 람다를 사용하는지 특징과 목적을 알아보겠습니다. 본론자바에서는 이렇게 코드 블록을 어딘가에 전달하는 경우가 있고 그러면 해당 코드가 어딘가에서 사용됩니다. 근데 이렇게 어딘가에 코드 블록을 전달하는 일이 쉽지 않습니다. 자바는 객체지향이기 때문에 원하는 코드가 있는 메서드를 포함하는 클래스를 생성해야 합니다. Comparator를 구현한 Length 클래스는 compare 코드 블록을 어딘가에 전달하기 위해 구현되고 생성되었습니다. 현재는 sort에 전달되어 호출됩니다. - 람다 표현식 문법앞에서 본 예제에서는 한 문자열이 다른 문자열보다 짧은지 여부를 검사하는(compare) 코드를 전달합니다. 이를 람다로 표현해보면 (파라미터, ->, 원하는 코드) 형태를 가집니다. 람다 표현식의 파라미터 타..
서론※ 과거에 기록한 내용에서 중요한 부분만 발췌하여 모두가 이해하기 쉽게 다시 서술한다. 본론- 열거형public enum WeekType { MONDAY, TUESDAY}열거형은 한정된 값을 가지는 상수들의 집합이다. 열거형을 사용하면 상수값을 편하게 사용할 수 있다. public class WeekType { public static final WeekType MONDAY = new WeekType();}enum은 위 코드와 사실상 같다. 클래스 내부에 열거형 객체를 상수로 가지고 있는 것이다. - name과 필드public enum WeekType { MONDAY("월요일"), TUESDAY("화요일"); String desc; private Wee..