프로그래밍/Java 15

Jackson 라이브러리 기본기능 정리 - json 직렬화와 역직렬화

Jackson Annotation 예제 본 글은 다음 원문을 번역 및 수정한 글입니다. https://www.baeldung.com/jackson-annotations 전체 코드는 다음 레파지토리에 있습니다. 필요하다면 클론 받으셔서 test 패키지에 있는 JacksonTest.class 를 보시면 한 눈에 볼 수 있습니다. https://github.com/JunHoPark93/jackson-practice JunHoPark93/jackson-practice Practice for jackson library. Contribute to JunHoPark93/jackson-practice development by creating an account on GitHub. github.com Jackson ..

프로그래밍/Java 2020.02.27 (3)

CompletableFuture - 안정적 비동기 프로그래밍에 대해 - (1)

CompletableFuture - 안정적 비동기 프로그래밍 모든 코드는 깃허브에 있습니다. https://github.com/JunHoPark93/completablefuture-practice JunHoPark93/completablefuture-practice Contribute to JunHoPark93/completablefuture-practice development by creating an account on GitHub. github.com 이 글은 모던 자바인 액션이라는 책을 보고 정리한 내용입니다. Future 의 단순 활용 - 기존의 한계 자바 5부터 미래 시점에 결과를 얻을 수 있는 Future 인터페이스를 제공하고 있습니다. 시간이 걸릴 수 있는 작업을 Future 내부로 작성..

프로그래밍/Java 2020.02.04 (3)

Enum 조회 성능 높여보기 - HashMap을 이용해서 빠르게 조회해보자

Enum 조회 성능 높여보기 자바의 Enum 에서 매핑을 할 때 find 메서드를 정의해서 알맞는 enum 을 찾는 로직을 많이 구현해본적이 있을 것 같아요. 다음과 같은 코드가 익숙하실텐테요. 저도 이런식으로 하다가 어느 날 친구가 인사이트를 주어 개선할 부분이 있는 것 같아 실험을 해보았습니다. 먼저 간단한 AccountStatus enum을 보겠습니다. package com.jaytech.codepractice; import java.util.stream.Stream; import lombok.Getter; @Getter public enum AccountStatus { INUSE("사용중"), UNUSED("미사용"), DELETED("삭제"), UNKNOWN("알수없음"); private fin..

프로그래밍/Java 2020.01.12 (4)

Maven 저장소에 오픈소스 배포하기 - bintray를 통한 배포

모듈 배포하기 이 부분에서 도메인 지식이 하나도 없어서 처음 공부해보면서 정리한 내용입니다. JCenter와 MavenCentral 차이점 스택 오버플로우의 답변을 참고하세요. Jcenter vs. mavenCentral jcenter() and mavenCentral() is a repository for the Gradle plugin in Android Studio Earlier versions of Android Studio used mavenCentral(), and after some time, it switched to jcenter. This is because jcenter() is superior to mavenCentral() in terms of performance and memo..

모던 자바 인 액션 스터디 - 스트림 활용법과 문제 풀어보기

4장 스트림 스트림은 자바 8 API에 새로 추가된 기능입니다. 스트림을 이용하면 선언형으로 컬렉션 데이터를 처리할 수 있습니다. 여기서 선언형이란 데이터를 처리하는 임시 구현 코드 대신 질의로 표현하는 것을 말합니다. 또한 스트림을 사용하면 멀티스레드 코드를 구현하지 않아도 데이터를 투명하게 병렬로 처리할 수 있습니다. 한마디로 정의하면 스트림이란 데이터 처리 연산을 지원하도록 소스에서 추출된 연속된 요소(Sequence of elements)입니다. 말이 너무 어렵나요? 용어를 하나씩 살펴봅시다. 연속된 요소: 컬렉션과 마찬가지로 스트림은 특정 요소 형식으로 이루어진 연속된 값을 제공합니다. ArrayList와 같은 컬렉션의 주제는 데이터이고 스트림의 주제는 계산식입니다. 소스: 스트림은 소스로부터 ..

모던 자바 인 액션 스터디 - 동작 파라미터, 람다 표현식

2장 동작 파라미터화 코드 전달하기 어떤 상황에서든지 요구사항은 바뀔 수 있습니다. 이에 따라 자바에서는 동작 파라미터라는 것을 이용하여 자주 바뀌는 요구사항에 효과적으로 대응할 수 있습니다. 다음과 같이 동작을 추상화해서 변화하는 요구사항에 대응할 수 있는 코드를 구현하는 방법을 살펴볼까요. public static void main(String[] args) { List inventory = Arrays.asList( new Apple(80, FilteringApples.Color.GREEN), new Apple(155, FilteringApples.Color.GREEN), new Apple(120, FilteringApples.Color.RED)); prettyPrintApple(inventory,..

모던 자바 인 액션 스터디 - 자바 8 의 변화

1장 자바 8, 9, 10, 11 객체지향은 90년대에 각광을 받았습니다. 하나는 캡슐화 덕분에 C에 비해 소프트웨어 엔지니어링적인 문제가 훨씬 적었고 다른 하나는 객체지향 패러다임 덕에 윈도우 95 및 다른 프로그래밍 모델에 쉽게 대응할 수 있었기 때문입니다. 이 패러다임은 '모든 것은 객체다' 라고 요약이 가능합니다. 하지만 프로그래밍 언어 생태계에 변화의 바람이 불기 시작했습니다. 빅데이터라는 도전에 직면하면서 멀티코어 컴퓨터나 컴퓨팅 클러스터를 이용해서 데이터를 효과적으로 처리할 필요성이 생겼습니다. 이에 따라 자바 8에서는 새로운 개념이 추가되었습니다. 자바 함수 프로그래밍 언어에서 함수(function)는 메서드(method)라는 의미로 사용됩니다. 자바의 함수는 이에 더해 수학적인 함수처럼 ..

[Java] Thread(스레드)에 관한 고찰 - 스레드 관련 코드를 어떻게 짜야할까

이번 포스팅은 스레드를 다루는 방법과 이슈들을 소개합니다. 스레드 이슈에 있어서 간단한 예는 두 스레드가 같은 객체를 공유하면서 서로 간섭하며 예상치 못한 결과를 내놓는 것입니다. 예제는 스레드를 공부하면서 한 번 쯤 봤을 만한 아주아주 간단한 예제입니다. 하지만 왜 그렇게 예상치 못한 결과가 되는지 명확히 설명하는 곳이 없어 책을 참고하여 정리를 해보았습니다. 먼저, 아주 간단하고 대중적인 예로 코딩을 해보았습니다. 계산기로 초기화 된 index 값에서 getNextIndex 를 호출하면 다음 번 인덱스를 반환하는 클래스 입니다. 다음과 같이 두 개의 스레드를 만들고 계산기의 인덱스를 각각 1만번 씩 호출을 해보았습니다. 최적의 시나리오는 각각 Set 에 고유한 숫자 1만개씩 보유하는 경우인데요. 사실..

프로그래밍/Java 2019.10.27 (1)

[Servlet] 웹서버 vs 애플리케이션 서버 vs 서블릿 컨테이너 - Tomcat 은 서블릿 컨테이너일까?

다음의 포스팅을 번역 정리한 내용인데, 조금 예전 글이라 EJB에 대한 언급이 많지만 개념을 확립하는데 도움이 되기 때문에 정리해보았다. https://www.java67.com/2016/06/3-difference-between-web-server-vs-application-server-vs-servlet-container.html 웹 서버 vs 애플리케이션 서버 vs 서블릿 컨테이너 웹 서버, 애플리케이션 서버, 웹 컨테이너 라는 3가지 용어를 혼용해서 사용하는데 사실은 제각기 다른 것이다. 웹 서버는 정적인 페이지(HTML, CSS)를 제공하는 서버를 의미한다. 애플리케이션 서버는 서버 사이드 코드를 이용하여 동적인 컨텐츠를 만드는 서버를 의미한다. 톰캣은 정확히 말하면 애플리케이션 서버가 아니라 ..

프로그래밍/Java 2019.10.09 (2)

[Java] 자바의 String 클래스의 특별성 간단 정리

https://www3.ntu.edu.sg/home/ehchua/programming/java/J3d_String.html String is Special - Java Programming Tutorial A Brief Summary of the String Class A Java String contains an immutable sequence of Unicode characters. Unlike C/C++, where string is simply an array of char, A Java String is an object of the class java.lang. Java String is, however, special. Unlike an or www3.ntu.edu.sg 참조 원문입니다. ..