We will find a way, we always have.

-interstellar

Programming Language/자바 17

[자바] 자바에서 ConcurrentHashMap

개선된 ConcurrentHashMap ConcurrentHashMap 클래스는 동시성 친화적이며 최신 기술을 반영한 HashMap 버전이다. 내부 자료구조의 특정 부분만 잠궈 동시 추가, 갱신 작업을 허용한다. 떄문에 동기화된 Hashtable 버전에 비해 읽기 쓰기 연산 성능이 월등하다. 리듀스와 검색 ConcurrentHashMap은 스트림에서 봤던 녀석들과 비슷한 종류의 세 가지 새로운 연산을 제공한다. forEach: 각 (키, 값) 쌍에 주어진 액션을 실행 reduce: 모든 (키, 값) 쌍을 제공된 리듀스 함수를 이용해 결과로 합침 search: 널이 아닌 값을 반환할 때까지 각 (키, 값) 쌍에 함수를 적용 또 키, 값 그리고 Map.Entry 를 활용해서도 연산을 수행할 수 있는 메서드도..

[자바] static 메서드와 static 클래스

static class와 static method 자바에서 static 키워드는 JVM이 시작될 때 static 영역에 한번 저장되어 프로그램이 종료될 때 해제되는 것을 의미한다. static 영역에 할당된 메모리는 모든 객체가 공유하는 메모리라는 장점을 가지지만 Garbage Collection이 관리하지 않으므로 자주 사용한다면 메모리 효율이 떨어질 수 있다. static 메서드 static 메서드는 객체 생성 없이 사용할 수 있는 메서드이다. 사용 예시 class Counter { static int count = 0; Counter() { count++; System.out.println(count); } public static int getCount() { return count; } } pu..

[자바] 가비지 컬렉션 GC

가비지 컬렉션 Garbage Collection(GC) 가비지 컬렉션이란? Heaq 영역에서 동적으로 할당했던 메모리 중 사용하지 않는 메모리 객체(garbage)를 모아 주기적으로 제거하는 프로세스 C / C++ 언어에서는 가비지 컬렉션이 없어 프로그래머가 수동으로 메모리 할당과 해제를 해야한다. 자바는 JVM에 탑재된 가비지 컬렉터가 메모리 관리를 대행하기에 개발자 입장에서 메모리 관리와, 메모리 누수(Memory Leak) 문제에 대해 완벽히 관리하지 않아도 된다. 특정 개체가 garbage 인지 판단하기 위해서 도달능력(Reachability) 이라는 개념을 사용한다 객체에 레퍼런스가 있으면 Reachable로 구분되고, 객체에 유효한 레퍼런스가 없으면 Unreachable로 구분하고 가비지 컬렉..

[자바] formatting 출력하기, 입력받기

printf() C언어에서 사용하던 printf()를 자바에서도 사용할 수 있다. 지금까지 사용하던 println()은 값을 변환하지 않고는 다른 형식으로 출력할 수 없다. 이제 printf() 사용방법을 확인해보자. 지시자 설명 %b 불리안(boolean) 형식으로 출력 %d 10진(decimal) 정수의 형식으로 출력 %o 8진(octal) 정수의 형식으로 출력 %x, %X 16진(hexa-decimal) 정수의 형식으로 출력 %f 부동 소수점(floating-point)의 형식으로 출력 %e, %E 지수(exponent) 표현식의 형식으로 출력 %c 문자(character)로 출력 %s 문자열(string)로 출력 HTML 삽입 미리보기할 수 없는 소스 위의 소스코드를 실행하면 . . . 이렇게 출..

[자바] 변수 2

변수의 타입 자료형은 크게 '기본형'과 '참조형' 두 가지로 나뉘고, 기본형 변수에는 실제 값을 저장하고 참조형 변수는 어떤 값이 저장되어 있는 주소를 값으로 갖는다. 자바에서 기본형 변수로써 사용하는 값의 종류 (Type of data)는 논리형(boolean), 숫자, 문자형(char) 이렇게 3가지가 있다. 하지만 더 숫자를 더 세부적으로 나누면 정수형과 실수형으로 나뉘고 여기서 또 각각의 범위에 따라 정수형은 byte, short, int, long 으로, 실수형은 float, double 로 나뉜다. 새로운 클래스를 생성하는 것이 참조형 변수를 선언하는 것이라고 볼 수 있다. HTML 삽입 미리보기할 수 없는 소스 자료형 저장 가능한 값의 범위 크기(bit) 크기(byte) boolean fal..

[자바] 변수 1 (feat. 개발자 두 명이 자리를 바꾸는 데 필요한 의자 갯수는?)

수학에서의 변수는 상수의 반대로써 "변하는 수"라고 정의되지만 프로그래밍 언어에서의 변수는 값을 저장할 수 있는 메모리상의 공간을 일컫는다. 그래프도 수학과 자료구조에서의 정의가 다른 것 처럼ㅎ 변수를 선언하면 메모리에 공간을 만드는 것이다. 자바의 변수 선언과 초기화는 다음과 같이 한다. HTML 삽입 미리보기할 수 없는 소스 우선 변수를 선언한 다음에 초기화를 할 수 있다. 초기화란 선언된 변수에 유효한 값을 넣어주는 것인데, 만약 초기화를 하지 않았다면 그 변수에는 쓰레기값이 들어가게 되고 사용할 수 없게 된다. 변수를 사용하고자 한다면 변수 선언 후 초기화를 해주자!! 두 변수의 값 교환하기 개발자 밈 중에 개발자 두 명이 자리를 바꾸는 데 필요한 의자 갯수는? 이라는 밈이 있다. 상식적으로 생각..

[자바] 세상과 인사하기

JAVA의 정석이라는 도서와 자바를 부탁해 라는 도서로 자바에 대해 공부를 시작하였다. 해당 도서의 사용 IDE는 이클립스였지만, 주변 사람들의 추천으로 IDE는 인텔리제이를 설치하게 되었다. C 배웠던 것 처럼 파이썬과는 다르게 지정해줘야할 것이 조금 많았다. 자바 코드를 작성하면 컴파일러가 바이트코드로 변역해준다. 이 과정을 컴파일링이라고 한다. 변역된 바이트코드는 자바 가상 기계(JVM)를 통해 기계어로 실시간 통역된다.(인터프리팅) 이렇게 자바는 프로그래밍 과정 중 컴파일링과 인터프리팅 모두 사용하는데 이것이 자바의 특징이다. 때문에 다양한 환경에서 동작하는 특징을 갖는다. 이제 자바 코드를 작성해보자!!! 단순히 출력 파일을 작성하기 위해서도 프로젝트를 생성해서 클래스를 만들고 메인 메소드 작성..