정렬 알고리즘
거품 정렬(Bubble Sort) public void bubbleSort(int[] arr) { int temp = 0; for(int i = 0; i < arr.length; i++) { for(int j= 1 ; j < arr.length-i; j++) { if(a...
거품 정렬(Bubble Sort) public void bubbleSort(int[] arr) { int temp = 0; for(int i = 0; i < arr.length; i++) { for(int j= 1 ; j < arr.length-i; j++) { if(a...
동기화란? 작업들 사이의 수행 시기를 맞추는 것. 사건이 동시에 일어나거나, 일정한 간격을 두고 일어나도록 시간의 간격을 조정하는 것을 이른다. -네이버 국어사전- 국어사전에 따르면 ‘동기화’에 대해 위와 같이 설명하고 있다. 컴퓨터 과학에서도 비슷한 의미로 통용되는데, 작업들의 수행 시기를 맞추면서 여러 프로세스가 공유하고 있는 자원이...
ArrayList란? ArrayList는 크기가 가변적으로 변하는 리스트이다. 일반적인 배열로 데이터를 다룰 때에는 처음 설정한 사이즈 그대로 다뤄야 한다는 불편함이 있지만, ArrayList는 데이터 크기에 따른 배열의 사이즈를 내부에서 자동으로 관리해준다. 내부 구현 생성자 private static final Object[] EMPT...
리플렉션이란? 사전적 의미로는 ‘반사’라는 뜻을 가지고 있으며, 자바에서는 런타임 단계에서 클래스, 메서드 등의 정보를 얻어오는 기술을 뜻한다. 연못에 형상이 반사되어 비치듯이, 투영된 클래스의 정보를 얻어온다는 의미로 이러한 이름이 붙은게 아닌가 싶다. 리플렉션을 활용하는 대표적인 사례로는 Jackson과 같이 객체를 매핑해주는 라이브러리가 있...
static 이란? static은 정적으로 할당되는 변수, 함수, 클래스 등에 사용되는 키워드이다. 전역으로 공유되는 고정된 변수나 메서드를 정의할 때 사용되며, 프로그램의 생성과 동시에 static 영역에 할당되고 프로그램이 종료될 때 까지 유지된다. 사용 예시 static 키워드 사용 시 개발자가 별도의 객채 생성 과정을 거치지 않고 변수...
try with resources 란? try with resources는 자원 반납 코드를 자동으로 실행되도록 지원해주는 문법이다. 파이썬에서는 with, C#에서는 using과 같은 유사한 문법이 존재한다. 기존 방식 (try-catch-finally) 문제점 public static void main(String args[]) { ...
해시 함수란? private void hash(int x){ return x % 5; } hash(7); // 2 hash(8); // 3 hash(9); // 4 해시 함수는 입력값을 고정된 길이의 특정 값으로 출력하는 함수이다. 출력 데이터인 해시값은 동일한 입력에는 항상 동일한 값을 리턴한다. 모듈러 연산(나머지 계산...
서론 병렬 처리란 CPU의 멀티 코어를 활용, 작업의 요소를 분할해서 각각의 코어가 처리하는 것을 말한다. Java 8부터 Stream API가 도입되었고, 해당 기능을 이용해 손쉽게 병렬 처리를 구현 가능하다. 병렬 처리가 더 많은 코어를 활용하기 때문에 항상 빠르다고 생각할 수도 있으나 그렇지는 않다. 병럴성 데이터 병렬성 데이터를 분할해서...
데이터 타입 원시 타입 byte 8비트의 정수 자료형, 기본값은 0이며 -128 ~ 127의 범위를 가진다. short 16비트의 정수, 기본값은 0이며 -32768 ~ 32767의 범위를 가진다. int 32비트의 정수, 기본값은 0이며 -2147483648 ~ 2147483647의 범위를 가진다. long 64비트의 정수, 기본값은 0...
개론 어딘가에 갔을 때 그곳의 문화, 풍습에 맞게 행동하라는 말을 비유적으로 할 때 ‘로마에 가면 로마법을 따르라’ 라는 글귀를 언급하곤 한다. 그렇다면 우리는 객체지향의 세계에 입문했다면, 무조건 객체지향의 원칙들을 지켜야 하는 것일까? 물론 반드시 지킬 필요는 없다. 범법행위도 아니라서 잡혀갈 일도 없다. 그런데 왜 우리는 객체지향의 원칙들을...