java

· 코딩/Java
요약Date 와 LocalDateTime 은 날짜와 시간까지 포함.LocalDate 는 날짜까지만 나타냄.Date는 Timezone 정보가 UTC로 고정이지만, LocalXXX 는 Timezone과 무관하게 일시 정보만 표현한다.Timezone 정보를 포함하는 ZonedDateTime이 있다. Date 의 단점(우리 회사 이거 쓰고 있다.)Java 초기 버전부터 사용된 전통적 타입이다.시간대는 UTC로 고정이다.(협정 세계시)하지 "만" 여러 문제 때문에 권장되지 않는다.월이 0부터 시작이다.년도는 1900년부터 시작이다.먼 소린고 했더니,new Date(100,0,1) 라고 하면, 2000년 1월 1일이 된다.가독성도 떨어지고, 내부 메서드들도 직관적이지 않다. LocalDate 와 LocalDateT..
개요 이 글은 Java 문법이 익숙하고 Kotlin 문법이 헷갈리는 사람(나)를 위해 정리한 글이다. 아주 빠르게 훑어보자 변수 val a = 10 // Int 로 타입 추론 var b = 10 b = 20 // var 변수는 재할당 가능 null var x: Int? = 10 x = null // ? 는 nullable 타입 ?. !!. var str: String? = null println(str?.uppercase()) str = "abc" println(str!!.uppercase()) function fun add(x: Int, y: Int): Int { return x + y } fun add(x: Int, y: Int) = x + y // 리턴 타입 생략 + 한 줄 표현 기본 자료형 숫자형..
· 코딩/Java
Java - Predicate 👶 Predicate란? 오늘 코드분석 도중 Predicate라는 인터페이스를 만났다. 초면이었다. Java 1.8부터 도입된 함수형 인터페이스이다. 제네릭 타입 하나를 매개변수로 전달받아 특정 작업 수행 후 boolean 타입을 반환하는 작업을 수행하게 한다. 🧭 함수형 인터페이스 = SAM Interface (Single Abstract Method) 함수형 인터페이스란, 하나의 추상 메소드를 갖고 있는 인터페이스를 말한다. Java8부터 지원된 람다는 함수형 인터페이스로 접근 가능. Predicate 외에도 Consumer, Supplier, Function, Comparator 등이 있다. 추가로, @FunctionalInterface 어노테이션을 사용한다. (없어도..
· 코딩/Java
1. Atomic ... 클래스 Long 과 AtomicLong은 어떤 차이가 있을까? 개요 프로젝트를 진행하면서 HashMap을 이용해 Key-Value 형태로 된 InMemory DB를 직접 구현하던 도중, 유저의 정보를 저장할 때 Long Type으로 선언된 유저의 ID값을 증가시켜줘야 하는 경우가 생겼습니 simgee.tistory.com 앞서 멀티스레드 환경에서 동시성 이슈가 발생할 수 있기 때문에 synchronized, volatile 등을 쓴다고 언급한 바 있다. 그리고 AtomicLong이 약간 갑자기 등장한 감이 있는데 이에 대해 요점만 정리해보자. 자바에서는 AtomicInteger, AtomicLong, AtomicBoolean, AtomicReference 클래스를 제공한다. 이 ..
· 코딩/Java
논 블로킹 알고리즘(Non-blocking Algorithms) 이 글은 원 저자 Jakob Jenkov의 허가로 포스팅된 번역물이다.원문 URL : http://tutorials.jenkov.com/java-concurrency/non-blocking-algorithms.html 동시성에서의 논 블로킹 알고리즘이란 쓰레드간의 공유된 상태(자원) parkcheolu.tistory.com 0. (1/2)에서의 낙관적 락에 대해... 앞서 언급한 컴페어 스왑을 통한 낙관적 락은 공유 자료구조에 알맞게 동작한다. 이 공유 자료구조는 단일 컴페어 스왑 연산에서 전체 자료구조가 새로운 자료구조로 교체될 수 있는 (swappable) 성질을 가진다. 그러나 전체 자료구조를 변경된 복제본으로 교체하는 일이 언제나 가..
· 코딩/Java
1. synchronized, volatile 1-1. synchronized 자바에서 멀티스레드로 인해 동기화를 제어해야하는 경우가 있는데, 가장 흔히 아는 Synchronized 키워드에 대해 먼저 알아보자. Java의 동기화 Synchronized 개념 정리#1 Java의 동기화 -Synchronized 키워드의 사용Java를 프로그래밍 하다면 multi-thread로 인하여 동기화를 제어해야하는 경우가 생깁니다.그래서 흔히 Synchronized 키워드를 사용하는데요그냥 multi-thread로 동시 tourspace.tistory.com 이 블로그에 잘 나와있는데... 마지막 예시를 내 마음대로 수정해서 적용해보았다. public class SyncBlock { private Map map1 =..
· 코딩/Java
0. 출처 [Java] JVM 구조와 메모리 영역 - Method, Heap, Stack Area 1. JVM 동작 과정 JVM은... 많이 알겠지만 Java Virtual Machine이고, 자바 바이트 코드를 OS에 맞게 해석해주는 역할을 한다. 또 메모리 관리도 담당한다. (GC는 Java 7부터 힙 영역의 객체들을 관리하는 역할을 한다.) 자바 코드가 JVM을 통해 실행되기 때문에 플랫폼에 구애받지 않는다는 것이 장점이라는 것도? 많이 알고 있을 것이다. 메모리 영역을 알아보려면, JVM이 자바 코드를 어떻게 OS에서 실행하는지 그 과정을 알아볼 필요가 있다. 자바 코드(.java 파일)는 컴파일러가 자바 바이트 코드인 .class 파일로 변환된다. .class 파일을 JVM의 클래스 로더에게 보..
· 코딩/Java
0. 출처 [Java] 자바 static의 의미와 사용법 1. 정적(Static)이란? '고정된'이라는 의미를 가지고 있다. static 변수와 메서드를 만들 수 있는데, 다른 말로 정적 필드, 정적 메서드라고 하고, 합쳐서 정적 멤버라고도 한다. (클래스 멤버라고도 한다.) 이들은 객체(인스턴스)에 소속된 멤버가 아니라, 클래스에 고정된 멤버이다. 때문에 클래스 로더가 클래스를 로딩해서 메서드 메모리 영역에 적재할 때 클래스별로 관리된다. 따라서 클래스 로딩이 끝나는 즉시 사용이 가능해진다. Static영역에 할당된 메모리는 모든 객체가 공유하여 하나의 멤버를 어디서든 참조할 수 있는 장점이 있지만? Garbage Collector의 관리 영역 밖이기 때문에, 프로그램 종료시까지 메모리가 할당된 채로 ..
· 코딩/Java
※ 주의: 뇌피셜 적당량 함유 삐슝빠슝 java 에서 interface에 대해 간단히 정리해보자면... 1. 선언되는 멤버 변수는 모두 상수, public static final 이 생략된 형태로 선언된다. 2. 선언되는 메소드는 모두 추상, public abstract 가 생략된 형태로 선언된다. 근데... 놀랍게도 JDK1.8 부터는 추상이 아닌 메소드를 작성할 수 있게 된다... 그 역사에 대해 간단히 말하자면... 원래 있던 수 많은 라이브러리 중, 기존 interface에 "어 하나만 추가할까..." 하면 와르르멘션이 된다. 왜냐면 그 interface를 구현하던 수 많은 클래스들이 그 추가한 하나의 추상 메소드를 정의해줄 의무를 갖게 되면서 다 빨간줄이 그일 것이기 때문... 그래서 대안으로,..
· 코딩/Java
※ 주의 : 뇌피셜 有 1. 싱글톤 패턴이란? 싱글톤 패턴이란, 프로그램이 실행될 때 객체가 필요 이상으로 많이 생성되지 않고 최초에 한 번 생성된 후, 필요 시 계속 그 객체만 호출하는 형태로 디자인된 구조를 말하는 것 같다. 2. 어떻게? 보통 get instance() 라는 메서드를 만드는 게 일반적인 것 같다. 구글링 해도 같은 이름이 많이 나오는 것 같다. 어떤 관리 프로그램을 만든다고 생각해보자. 먼저, 관리할 객체를 생성할 수 있는 class를 여러개 생성할 것이다. 지금 과제로 하고있는 Movie 클래스도 그런 경우이다. Movie의 하위 클래스인 SeriesMovie 클래스도 생성할 수 있었다. 그래서, 지금 있는 Movie와 SeriesMovie를 깡깡 찍어내서, 뭘로 관리할까... 했..
승농
'java' 태그의 글 목록