목록분류 전체보기 (269)
Coding Planet

자바 입문 레벨에서 개발자 문서를 보거나 github의 다른 코드들을 보다 보면 Box와 같은 낯선 형태의 문장을 만나게 된다. 이러한 것들이 지네릭스인데 남궁성 저자의 자바의 정석을 참고하여 입문수준에서 간단하게 살펴보고자 한다. 어렵다면 강조된 내용만 봐도 대충 감을 잡을 수 있다. | 지네릭스란? 지네릭스는 다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 컴파일 시 의 타입체크(compile-time type check)를 해주는 기능이다. 객체의 타입을 컴파일 시에 체크하기 때문에 객체의 타입 안전성을 높이고 형변환의 번거로움이 줄어든다. -자바의 정석 1. 컴파일 시 의 타입체크(compile-time type check) 지네릭스를 사용하면, 컬렉션에 저장되는 객체의 타입을 컴파일 시점..
람다식에 관한 개괄적인 포스트는 아래 참조! https://sharonprogress.tistory.com/330 람다식(Lamda expression) 총정리와 활용예제 아래 포스트의 예시 및 내용은 남궁성 저자의 자바의 정석을 많이 참고했다. | 람다식이란 람다식은 간딘히 말해서 메서드를 하나의 '식(expression)'으로 표현한 것이다. 자바 8부터 등장한 개념으 sharonprogress.tistory.com 앞 선 포스트에서 설명한대로 람다식은 메서드를 하나의 식으로 표현해 간략하면서 명확하게 식으로 표현할 수 있도록하는 표현식이다. 이에 더해 람다식이 하나의 메서드만 호출하는 경우에는 '메서드 참조(method reference)'라는 방법으로 람다식을 더욱 간략하게 쓸 수 있다. | 메서..

아래 포스트의 예시 및 내용은 남궁성 저자의 자바의 정석을 많이 참고했다. | 람다식이란 람다식은 간딘히 말해서 메서드를 하나의 '식(expression)'으로 표현한 것이다. 자바 8부터 등장한 개념으로 객체지향언어인 자바에 함수형 활용을 더해주었다. 람다식은 메서드의 매개변수로 전달되어지는 것이 가능하고, 메서드의 결과로 반활될 수도 있다. 람다식으로 인해 메서드를 변수처럼 다루는 것이 가능해진 것이다. 메서드를 람다식으로 표현하면 메서드의 이름과 반환값이 없어지므로 람다식을 '익명함수'라고 하기도 한다. 아래 식에서 (i) -> (int)(Math.random()*5+1) 부분이 람다식이다. int[] arr = new int[5]; Arrays.setAll(arr, (i) -> (int)(Math..

| 자바의 정석(남궁 성 저자) 발췌 전통적으로 프로그래밍에서 함수라는 이름은 수학에서 따온 것입니다. 수학의 함수와 개념이 유사하기 때문이죠. 그러나 객체지향개념에서는 함수(function)대신 객체의 행위나 동작을 의미하는 메서드(method)라는 용어를 사용합니다. 메서드는 함수와 같은 의미이지만, 특정 클래스에 반드시 속해야 한다는 제약이 있기 때문에 기존의 함수와 같은 의미의 다른 용어를 선택해서 사용한 것입니다. 그러나 이제 람다식에서는 메서드가 하나의 독립적인 기능을 하기때문에 함수라는 용어를 사용하기도 합니다. | 컴퓨터 언어 내에서 메서드와 함수의 차이 컴퓨터 프로그래밍에서 "메서드(method)"와 "함수(function)" 용어는 종종 혼용되지만, 그들 사이에는 명확한 차이점이 있다...

ConCurrentHashMap과 HashTable을 공부하면서 경쟁조건과 Lock이 주요 키워드로 등장했다. 스레드를 공부하면서 빈번하게 등장하기 때문에 두 개념 모두 어렴풋이 알고 있긴 하지만 이번 기회에 정리하고 가야겠다. | 경쟁 조건 (Race Condition)과 Lock 경쟁 조건은 멀티 스레드 프로그램에서 두 개 이상의 스레드가 데이터나 자원에 동시에 접근하려고 할 때 발생하는 문제이다. 이러한 상황에서 스레드들의 실행 순서에 따라 프로그램의 결과가 달라질 수 있으며, 이는 데이터의 일관성과 정확성을 해칠 수 있다. 경쟁 조건을 방지하기 위해 동기화 메커니즘(대표적으로 Lock)을 사용하여 스레드들이 자원에 안전하게 접근할 수 있도록 해야한다. Lock은 동시에 여러 스레드가 같은 자원에 ..
HashMap / HashTable / ConCurrentHashMap은 Java의 Map 인터페이스 구현체이다. | HashMap / HashTable / ConCurrentHashMap 비교하기 특징/구현체 HashMap Hashtable ConcurrentHashMap 동기화 (Synchronization) 동기화되지 않음 동기화됨 부분 동기화(세그먼트 락) Null 허용 키와 값 모두에 null 허용 null 허용하지 않음 null 허용하지 않음 성능 빠름 느림 HashMap보다 느리지만, Hashtable보다는 빠름 Iterator fail-fast fail-safe가 아님 fail-safe 멀티 스레드 환경 적합하지 않음(동기화 추가 필요) 적합하지만 성능 저하 적합하며 성능 최적화됨 용도 단..

|ThreadLocal이란 ThreadLocal은 Java의 스레드 로컬 변수를 관리할 수 있도록 하는 기능이다. 지금까지 변수들은 클래스, 메서드 레벨에서 관리되었는데 스레드별로 저장되고 관리할 수 있는 것이다. 즉, 한 스레드에서 설정한 ThreadLocal 변수의 값은 다른 스레드와 공유되지 않으며, 각 스레드는 해당 변수의 자신만의 독 립적인 값을 유지하게 된다. 이를 통해 스레드 간 데이터 격리가 이루어져 스레드 안전성(thread-safety)을 확보할 수 있다. 더 간단히 설명하자면 threadLocal변수를 선언하면 멀티 스레드 환경에서 각 스레드마다 독립적인 변수를 가지게 되고 각 값은 get(), set() 메서드를 통해 접근할 수 있게 된다. **thread-safety 멀티 스레딩 ..

SyntaxError: Unexpected token '
"Daemon" 이라는 단어는 원래 그리스 신화의 보호신 또는 신의 지배를 받는 영혼을 의미하는 단어에서 유래됬으나, 컴퓨팅 분야에서 백그라운드에서 실행되는 프로세스나 서비스를 의미한다. 보통 사용자의 직접적인 개입없이 독립적으로 실행되며 시스템 관리, 자원 관리, 파일 전송, 네트워크 서비스 제공 등의 작업을 수행하는 프로그램을 가리킨다. 운영체제나 서버에서는 다양한 데몬이 시스템의 기본적인 기능을 지원하기 위해 실행되고 있는데 이 포스트에서는 데몬쓰레드(daemeon thread)를 중점적으로 살펴 보고자 한다. | 데몬 쓰레드(daemon thread) 데몬 쓰레드는 일반쓰레드(데몬 쓰레드가 아닌 쓰레드)의 작업을 돕는 보조적인 역할을 수행하는 쓰레드이다. 주 쓰레드(애플리케이션의 메인쓰레드)가 종..
|Spring Security란? Spring Security는 Spring 기반의 애플리케이션에 보안 기능을 추가할 수 있도록 설계된 프레임워크이다. 인증(Authentication)과 권한부여(Authorization)을 위한 포괄적이고 확장 가능한 솔루션을 제공한다. Spring Security는 메서드 수준, URL 수준에서 보안 등 보안 수준을 설정할 수도 있다. Spring Security를 사용할 경우 개발자가 보안 관련 코드를 직접 작성하지 않아도 간단히 사용할 수 있도록 고안되었는데 주요 기능은 다음과 같다. 인증: 사용자가 누구인지 확인하는 과정. 예를 들어, 사용자 이름과 비밀번호를 사용한 로그인 과정이 여기에 해당한다. 권한 부여: 인증된 사용자가 특정 자원에 접근하거나 작업을 수행..