해시함수는 임의의 길이의 데이터를 고정된 길이의 데이터 로 매핑하는 함수를 말한다.이 함수를 통해 얻어지는 값을 해시 코드라고 한다.쉽게 말해 아무리 큰 숫자를 넣더라도 정해진 크기의 숫자가 나오는 함수이다.해시코드는 원하는 데이터를 빠르게 찾기 위해서 사용합니다.정확
위와 같이 Object배열을 Integer배열로 캐스팅이 가능하다.하지만 헷갈리지 말아야 할것이 String배열을 Integer배열로 캐스팅 할때 위의 방법을 사용하면 안된다.for루프로 하나씩 돌리거나, stream문법을 사용해야한다.이럴때는 참 파이썬의 map함수가
기본적으로 오차를 내포하고 있다.정밀도가 예를 들어 15자리라고 해도 두 실수를 더하는 과정에서 그보다 윗자리에서도 오차가 발생할 수 있다.오차를 근본적으로 막으려면 BigDecimal을 사용하는 것이 바람직하다.소수점 이하 6자리 정밀도소수점 이하 15자리 정밀도
.java 확장자인 파일은 자바언어로 소스 코드를 작성할 때 사용.class 확장자인 파일은 자바 컴파일러로 컴파일 한 파일클래스 로더(Class Loader)가 확장자가 .class인 클래스 파일의 위치를 찾아 JVM에 로딩한다.Java는 동적 로딩을 지원하기 때문에
자바에가 처음 등장한 이후 두번의 큰 변화가 있었는데, 한번은 JDK1.5부터 지네릭스가 추가된 것이고,다른 하나가 JDK1.8부터 람다식이 추가된 것이다.간단히 보면 메서드 명과 리턴 타입을 생략하면 람다식이 된다.int max(int a, int b) { retur
이 코드는 완성되지 않았다.하지만 보아야 할 곳은 바로 저 stream 내부의 .reduce() 부분을 보자.ide는 나에게 저곳에서 IOException handling이 없다고 알려준다.어라? 위에 throws IOException을 해놓았는데?하고 다시 생각해보니
코딩테스트를 풀다가 어이없는 실수로 한참을 헤맸다.다음 코드에서 이상한 점을 발견해 보라.자꾸 컴파일 에러가 나는 것이다.왜지?... 한참 삽질하고 ChatGPT형님한테도 물어보고 한 결과,(ChatGPT가 틀린 답을 주었다. 처음봤다.)참 나의 어이없는 실수였다.리턴
java.lang.Thread쓰레드를 생성하는 방법은 두가지가 있다.Thread 클래스를 상속(extend) 받아 run 메서드 오버라이드Runnable 인터페이스를 구현(implement)둘다 똑같이 run 메서드를 구현하는 과정이다.또한 Runnable은 메서드가
쓰레드의 우선순위를 지정할 수 있다.static field 로 지정되어있는 것처럼 기본은 5이다. (default)최대는 10, 최소는 1 이다.실행되는 도중 우선순위를 바꿀 수 있다.희망사항일 뿐 쓰레드의 실행배정은 OS에서 하므로, 더 많이 실행될 '확률' 이 높다
이번에는 UncaughtExceptionHandler 에 대해 알아보겠다.사실 내가 보는 책이나 강의들에서는 잠깐 언급하고 지나갔지만, 내가 보기에는 꽤 중요한 부분이라고 생각되어서 따로 공부해서 적었다.Thread에 대한 JAVA api 를 확인하면 내부에 이러한 인
일반쓰레드를 돕는 보조적인 역할일반쓰레드가 모두 종료되면 자동으로 종료됨 (데몬쓰레드가 있다고 프로그램 계속실행x)대략 이런식으로 무한 루프로 구성됨중요한 것은 반드시 실행 전 setDeamon()메서드를 통해 지정을 해주어야 한다.start()호출 후 setDeamo
크게 보면 주요한 것은 RUNNABLE 과 UNRUNNABLE 로 나뉜다고 볼 수 있으며, 그 나머지가 세분되어 있는 형태이다.쓰레드는 여러가지 메서드로 제어할 수 있는데, 중요한 것은 그 메서드가 static이냐 아니냐로 구분 될 수 있따.static의 경우 현재 실
멀티 쓰레드 프로그래밍에서는 한 쓰레드가 진행 중인 작업을 다른 쓰레드가 간섭할 수 있다.특히 많이 쓰는 Spring framework의 경우 Bean 을 싱글톤으로 가지고 있고, tomcat 이 쓰레드 풀을 만들어 요청을 할당하기 때문에 설계할 때 Thread-saf