본문 바로가기

Java44

[Java] Java8과 Java11의 특징 정리 java8의 특징은 이전 포스트에 다뤘어요. 이번엔 java 11을 다뤄보려 해요. Java 10은 라이선스 없이 상업적으로 사용할 수 있는 마지막 무료 Oracle JDK 였어요. JAva 11부터는 Open JDK를 무료로 사용할 수 있어요. Java 11에서 추가된 내용들을 기능, 성능 관점에서 보도록 해요. 기능 추가 1. String 클래스, 메서드 추가 isBlank, lines, strip, stripLeading, stripTrailing, and repeat가 추가됐어요. String multilineString = "My name \n \n is \n Gump."; List lines = multilineString.lines() .filter(line -> !line.isBlan.. 2021. 11. 14.
[JUnit5] @ParameterizedTest 애노테이션(반복 테스트) 커스텀 하기 반복 테스트(ParameterizedTest)에 대한 출력을 통일성 있게 하고싶어 아래와 같은 옵션들을 지정했어요. @ParameterizedTest(name = "{displayName} {index}, args = {arguments}") @DisplayName("사용자 생성 - 성공") @ParameterizedTest(name = "{displayName} {index}, args = {arguments}") @ValueSource(strings = {"ㅁㅇㄹㅁㅇㄹ", "ㅓㅓㅓㅓ", "adfdf", "검프", "검프23213"}) void save(String name) { ... } 테스트 출력시 위와 같이 나오며, "반복 테스트의 이름, 실행 번호, 파라미터"와 같은 형식으로 나오게 했어요. .. 2021. 10. 20.
[Java] Java7과 Java8의 특징 정리 Java7의 특징 Try-with-resources 지원 다이아몬드 연산자를 활용한 Type Reference(타입 추론)지원 다중 Exception Catching 숫자 리터럴에서 언더스코어(underscore) 지원 Switch문에서 String 객체 사용가능 @SafeVarargs 지원 Java8의 특징 Heap Permanent Generation 제거 Interface Default and Static Methods Functional interfaces Lambda expressions Method References Date and time API 지원 Optional 지원 Stream API Collections Parallel Array Sorting (배열 정렬의 병렬처리) Bas.. 2021. 9. 18.
[Java] 해시 함수(Hash Function)란? 해시 함수는 임의의 길이를 갖는 메시지를 입력받아 고정된 길이의 해시값을 출력하는 함수예요. 저장된 자료의 양에 상관없이 원소 하나를 저장하고 검색하는 것을 상수 시간에 가능하게 하기 위해 해시 테이블이 나왔어요. Hash 함수 임의의 길이의 데이터를 고정된 길이릐 데이터로 매핑하는 함수예요. h(x) = x mod 13 위와 같은 계산값을 좋은 해시 함수의 조건 계산이 간단해야 함. 입력 원소가 해시 테이블 전체에 고루 저장되어야 함. (해시 충돌을 막아야 한다는 말이에요) 위에서 정의한 함수에서 7과 20의 값을 입력하면 같이 7이라는 출력값이 나와요. 이때 해시 충돌이라 얘기해요 해시 충돌 해결 체이닝 같은 주소로 해싱되는 원소들을 모두 하나의 연결 리스트에 매달아서 관리, 원소를 검색할 때는 해당.. 2021. 9. 14.
[Java] Json Data를 리스트로 변환하자 with Jackson 나라별 백신 접종률 데이터를 JSON으로 가져왔는데, 데이터양이 엄청나게 무시무시해요. (현재 기준 약 3만 개) 또한 JSON Data를 자세히 보면 컬렉션 안에 컬렉션이 있다는 것을 확인할 수 있어요. 저는 이 많은 데이터 중 오직 country 필드의 값이 World인 데이터만 가져오려고 해요. 어떻게 해야 할까요? [ { "country": "Afghanistan", "iso_code": "AFG", "data": [ { "date": "2021-02-22", "total_vaccinations": 0, "people_vaccinated": 0, "total_vaccinations_per_hundred": 0.0, "people_vaccinated_per_hundred": 0.0 }, { "dat.. 2021. 8. 20.
[DB] NoSql이 무엇인지, 기존 RDBMS와의 차별점은 무엇인지 설명해주세요 이번 포스트는 SQL vs. NoSQL Databases: What’s the Difference? 을 번역하며 정리한 것이에요. NoSql 데이터베이스(비관계형 데이터베이스)는 관계형 데이터베이스와 방식은 다르지만 관계 데이터를 저장할 수 있어요. Not Only SQL, 기존의 관계형 DBMS가 갖고있는 특성 뿐만 아니라 다른 특성들을 부가적으로 지원한다는 것을 의미해요. 데이터베이스는 크게 SQL과 NoSQL, 관계형 데이터베이스와 비관계형 데이터 베이스로 나뉘어요. 둘의 차이점은 구축 방법, 저장 정보 유형 및 저장 정보에 따라 달라져요. 관계형 데이터베이스는 전화번호와 주소를 저장하는 전화번호부와 같이 구조화 되어있어요. 비관계형 데이터베이스는 사람의 주소와 전화번호부터 Facebook 좋아요 .. 2021. 8. 2.
[Logging] Logback이란? 블로그를 작성하고, 테코톡을 진행했어요. 더 쉽게 이해하고 싶다면 아래 영상을 시청해주세요! [10분 테코톡] ☂️ 검프의 Logging(로깅) #2 Logback 로깅 프레임워크 중 하나로, SLF4J의 구현체에요. SLF4J에 관한 설명은 앞선 포스팅으로 대신할게요. [Logging] SLF4J란? Logback 구조 Logback은 아래 3가지 모듈로 나뉘어요 logback-core logback-classic logback-access logback-core: 다른 두 모듈을 위한 기반 역할을 하는 모듈이에요. Appender와 Layout 인터페이스가 이 모듈에 속해요. logback-classic: logback-core에서 확장된 모듈로, logback-core와 SLF4J API 라이브러리.. 2021. 7. 14.
[Logging] SLF4J란? 블로그를 작성하고, 테코톡을 진행했어요. 더 쉽게 이해하고 싶다면 아래 영상을 시청해주세요! [10분 테코톡] ☂️ 검프의 Logging(로깅) #1 SLF4J(Simple Logging Facade for Java)는 이름에서 확인할 수 있듯이. java.util.logging, logback 및 log4j와 같은 다양한 로깅 프레임 워크에 대한 추상화(인터페이스) 역할을 하는 라이브러리에요. SLF4J는 추상 로깅 프레임워크이기 때문에 단독으로는 사용하지 않아요. 즉, 최종 사용자가 배포시 원하는 로깅 프레임워크를 결정하고 사용해도 SLF4J가 인터페이스화 되어있기에, SLF4J를 의존하는 클라이언트 코드에서는 실제 구현을 몰라도 돼요(의존관계 역전 법칙). SLF4J 동작과정 SLF4J은 간략히 아.. 2021. 7. 10.
[Spring] 스프링 Interceptor의 동작 과정 Handler Interceptor 전반적인 클라이언트 요청흐름 그림에서 확인해보면, Spring Container내에서 Handler Mapping(수행할 handler 결정) 이후 HandlerAdaptor(결정된 핸들러 수행) 전/후 과정에서 수행됨을 확인할 수 있어요. 주 사용 목적은 핸들러(컨트롤러)의 수정없이 핸들러 수행 전/후처리 동작을 추가하여 핸들러(컨트롤러)의 반복적인 코드를 제거하기 위함이에요. 쉽게 말해, HandlerMapping이 결정한 handler을 HandlerAdapter 수행 전, 후로 가로체어 추가적인 작업이 가능해요. 또한 View 렌더링 이후 클라이언트에게 Response를 전달하기 전에 추가적인 작업이 가능해요. 어디에 사용될까? 가만보니, Filter와 매우 유.. 2021. 6. 22.