JAVA/자바공부
-
JAVA 함수형 프로그래밍 (1) - Functional InterfaceJAVA/자바공부 2024. 8. 16. 03:31
자바에서 제공하는 함수형 프로그래밍 도구 java.util.function 패키지에 위치한 대표적인 인터페이스 사용법을 정리한다.아래의 기능을 적재적소에서 활용하면 가독성, 유지보수, 확장성이 좋은 코드를 작성할 수 있다. 엄청 많은데 큰 분류로, Function, Functional Interface, Consumer, Supplier, Predicate, Comparator의 사용법을 알면 원시타입용도 인터페이스(박싱 안해서 메모리 덜 사용), 추가 매개변수용도 인터페이스와 같이 구분할 수 있다. 1. Function 인터페이스- 매개변수를 조작해서 반환값을 얻는 용도@Test@DisplayName("Function interface 테스트 - 매개변수가 1개")void step1() { // ..
-
Java Exception Handling (e.printStackTrace())JAVA/자바공부 2023. 10. 20. 01:20
업무 중 코파일럿에 의해 Exception catch문과 e.printStackTrace()가 자동으로 생성되는 일이 있었다.팀장님의 이거 쓰면 안되요! 라는 리뷰가 달렸는데, 왜 안될까?Exception이란 무엇일까? e.printStackTrace의 정체는 무얼까? Exception 정의프로그램 실행중 정상적인 흐름을 방해하는 이벤트일반적으로 Exception이 발생하면 현재 코드 블럭이나 메서드의 동작이 멈춘다.Exception의 역사약 40년 전 최초 프로그래밍 언어에는 Exception이라는 개념이 없었다.C 언어에서는 비정상적인 종료를 알리고자 -1 또는 null을 반환하는 방식으로 동작했다.함수를 호출하고 실수로 -1, null 값 확인을 놓치는 실수들이 속출1985년, C++ 언어가 등장해..
-
자바 LocalDateTime 요일, 오전/오후 한국어로 변경JAVA/자바공부 2023. 8. 3. 19:03
시간을 다룰때 한국어로 변경이 필요한 경우가 있었다. 요일이랑, 오전/오후 변경을 기록한다. (Locale 같은 정보 활용하면 더 쉬운 방법이 있을 것 같은데... ) 요구사항 : 아래의 형식으로 시간 표현 8/3(목) 오전 10시 00분 내가 짠 코드 @Component public class KoreanDateFormatter { private static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("a hh시 mm분"); private static final Map DAY_OF_WEEK_KO_MAP = Map.of( DayOfWeek.SUNDAY, "일", DayOfWeek.MONDAY, "월", DayOfWe..
-
(다시 보는) SOLID 원칙이란?JAVA/자바공부 2023. 5. 29. 02:40
1년 동안 많은 것이 변했다. 쌓은 지식도 지식을 쌓은 방법도 변했다. 아마도 그 원인은 1. ChatGPT 등장 2. 절대적인 Code input/output 증가 다시한번 SOLID 원칙에 대해 정리해 본다. SOLID 원칙 전에 객체지향에 대한 복습 객체지향이란? 코드를 데이터(상태-속성)와 기능(함수-행동)으로 객체 정의 객체끼리 메시지로 상호작용하게 하는 코딩 방법 캡슐화, 추상화, 상속, 다형성이 객체지향의 핵심 재사용할 수 있고 확장에 유연한 코드를 작성할 수 있다. 객체지향을 왜 해야할까? 소프트웨어 비용을 줄여서 시장에서 경쟁력을 가질 수 있다. 소프트웨어는 계속 변해서 다음의 비용이 발생한다. 코드 분석 시간 코드 변경 시간 비용을 줄이기 위한 방법으로 객체지향 뿐만 아니라 다양한 선택..
-
DB의 시간, Java의 시간, Javascript의 시간 (Data, LocalDate, LocalDateTime, Y2K38 Problem)JAVA/자바공부 2023. 3. 7. 23:22
시간에 대해 문제의식을 가진 것은 MySQL의 datetime과 timestamp의 차이를 인지하면서 부터이다. timestamp를 사용하면 2038년이 지나고 1970년으로 시간이 바뀐다고 한다.(Y2K38 버그라고 이름도 있음) MySQL에서는 8.0.28버전 부터는이 문제를 해결했다고 하는데 왜 1970년으로 회귀하는지와 자바, 자바스크립트에서는 무엇을 해야하는지 알아보자. 컴퓨터가 시간을 정의하는 방법1970년 1월 1일 0시 0초를 기준으로 흐르는 시간을 밀리세컨 단위 정수로 측정하고 표현한다. 측정한 시간을 Unix time, Unix Epoch Time, Unix Timestamp로 부른다.2023년 3월 7일, 11시 현재 Unix Time은 1678197732 이다.Bell 연구소에서..
-
자바JAVA/자바공부 2023. 2. 20. 21:49
자바 공부 자료 기록 1. 자바의 신 (책) - 초반에 cli 환경에서 class 작성부터 컴파일을 진행하는 방식으로 진행되는 것이 인상적이다. https://product.kyobobook.co.kr/detail/S000060306246 2. 컴퓨터 언어 기초 (터커의 go 프로그래밍 1~6강) - 개인적으로 기초 CS개념을 너무 쉽게 설명해줘서 Java 하기전에 보면 좋았을 것 같다. https://www.youtube.com/watch?v=Tq3W8UyltFs&list=PLy-g2fnSzUTAaDcLW7hpq0e8Jlt7Zfgd6 3. Effective Java - 실용적인 자바 사용법에 대한 서적이라고 한다. 2023년 볼 예정이다. 4. 오라클 공식 문서 - 엄밀히 말하면 자바는 Oracle 소..
-
정규식 표현 (자바, 코틀린) - 전화번호, 우편번호, 이메일JAVA/자바공부 2022. 10. 14. 00:26
출처 정규식 test 해볼 수 있는 사이트 : https://regexr.com/ 정규식 기본 강의 : https://www.youtube.com/watch?v=rhzKDrUiJVk 정규식 표현식 정리 : https://codechacha.com/ko/java-regex/ 자바 정규식 : https://vogella.com/tutorials/JavaRegularExpressions/article.html 코틀린 정규식 : https://codechacha.com/ko/kotlin-how-to-use-regex/ https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/matches.html 우편번호 정규식 /* * 우리나라 우편번호 정규식 */ // 1988 ..
-
자바 17로 바꿔야 할까? (자바 JDK 10 ~ 17 정리)JAVA/자바공부 2022. 10. 1. 00:16
잠이 안 와서 유튜브에 보는데 intellij conf에 자바 17에 대한 발표가 있었다. 정리해 본다. 출처 Project Repo : github Intelij Conf 2022 : youtube 🧑🏫 발표자가 생각하는 Java 17 요약 17 오면서 성능 향상 (빠르다, 메모리 조금 쓴다), 새로운 기능 추가 됨 자바 8 쓰는 중이라면 11 건너뛰고 바로 17로 가자 (라이브러리 버전들이 영향받을 것…그렇지만) JDK 17은 발표된 지 1년 지났고 라이브러리들 안정화된 것 같음 (17은 Sept 2021 발표) JDK 19도 이미 출시 JDK 21(LTS) 출시 예정 (Sept 2023, LTS 출시가 2년 주기로 바뀜 관련 기사) JDK 17은 6년 이상 지원 될 것 1. 발표자 Nikhil N..