본문 바로가기
반응형

프로그래밍언어/Java10

함수형 프로그래밍(Functional Programming, FP) 기반의 소프트웨어 디자인과 개발을 Java와 Spring Boot에서 적용하기 위한방법 함수형 프로그래밍(Functional Programming, FP) 기반의 소프트웨어 디자인과 개발을 Java와 Spring Boot에서 적용하기 위한방법 1.함수형 프로그래밍 개념: 함수형 프로그래밍의 핵심 원칙과 기본 개념들을 이해하는 것이 중요합니다. 불변성(Immutability), 순수 함수(Pure functions), 고차 함수(Higher-order functions), 커링(Currying) 등의 개념을 공부해보세요. 2.Java 8 이상의 함수형 프로그래밍 기능: Java 8부터 함수형 프로그래밍 지원이 개선되었습니다. 람다 표현식(Lambda expressions), 스트림 API(Stream API), Optional 클래스 등을 활용하여 코드를 더 간결하게 작성할 수 있습니다. 3.. 2023. 4. 30.
LocalDate, LocalTime, LocalDateTime 날짜 타입 사용법 계산 비교 타입 월 마지막 날짜 찾기 Rest API Response Json String 문자열 변환 날짜 처리하는 내용은 이상하게 항상 검색하게 되는데.. 참 이거 맨날 할때마다 외워지지도 않고 검색하는게 당연하기 때문에 15년넘게 검색을 했으니 이제는 좀 정리할때도 된것같아서 정리를 해보자!! LocalDate, LocalTime, LocalDateTime 자바에서는 각 버전별로 사용해왔었던 날짜처리 클래스가 있는데 가볍게 설명하고 최근 가장많이 사용하고있는 LocalDate, LocalTIme, LocalDateTime 에 대한 날짜 타입 비교, 계산, 포맷, 변환, Josn 표기방법까지 알아보자!! 날짜 타입의 변천사 Java 1.0 java.util.Date 날짜와 시간관련 기능을 제공 Date 라는 클래스의 이름과 달리 특정 시점을 날짜가 아닌 밀리초 단위로 표현 Date date = new .. 2022. 9. 7.
annotation 만들기, 커스텀 어노테이션 만들기, annotation 설명 종류 타입 Annotation 이란 ? java (1.5) 부터 등장했으며 프로그램에 추가적인 정보를 제공하는 메타 데이터라고 할수있다. 메타데이터란 어플리케이션에서 처리해야 할 데이터가 아니라 컴파일 과정과 런타임에서 코드를 어떻게 컴파일하고 처리할 것인지에 대한 정보를 말한다. 이런 Annotation 옵셥(@Retention)에 따라 컴파일 전, 컴파일 시기, 런타임 시기에도 처리되도록 할수있다. Java 의 리플렉션을 사용하여 런타임 시기에 어노테이션의 메타 데이터를 바탕으로 AOP를 구성하는데 큰 도움을 줄수있다. 이러한 메타 데이터를 활용하여 비지니스 로직과 분리하여 대상의 유효성 체크, 값 주입, 역활 주입 등을 수행할 수 있어 코드를 간결하게 작성할수 있다. - 주의사항 Annotation 자체는 특.. 2022. 9. 4.
Java Functional Programming 스트림 설명 종류 그리고 고차함수 스트림 (Stream) Stream 은 Java 8버전부터 추가되었습니다. 아래 제공하는 여러가지 데이터를 처리할수 있는 기능들을 제공합니다. 상당히 편리하지만 제대로 알고써야 편리한 기능입니다. Filter, Sorted, Map, Match, Reduce, groupingBy 원시 타입을 위한 IntStream, LongStream 같은 원시타입을 다루는 스트림과 레퍼런스 타입(클래스, 일반 컬렉션 객첵)등을 다루는 일반 스트림이 존재합니다. 스트림은 아래와같이 일련의 작업등을 특정한 조건에 대입하여 원하는 데이터를 제어하는 기술입니다. 스트림을 가장 쉽게 설명한건데 우리가 데이터를 받을때 첨부터 원하는 데이터만 받을수도 있지만 위에 그림처럼 데이터(꽃게, 물고기, 해파리) 들 중에 원하는 물고기만 .. 2022. 8. 13.
Java Functional Programming 함수형 프로그래밍으로 가기위한 용어정리 불변객체, 일급함수, 고차함수, 커링 자바 프로그래밍중 함수형 프로그래밍을 아직 많이 접해보지 않았다면 아직은 우리에게 익숙한 변수 함수를 이용한 데이터 코드를 보여드리도록 하겠습니다. 굳이 약간 어그로가 될수도 있을만한 코드를 공유드립니다. 같은 기능에 대해서 "절차지향 코드", "객체지향 코드", "함수지향 코드" 3가지를 살펴 보도록 하겠습니다. 절차 지향 적인 코드 레벨 변수와 함수를 이용해서 데이터를 가공하는 부분에 초점을 두고있으며 데이터 가공 목적이 강하기 때문에 데이터가 정확하다면 중복된 코드레벨이 발생할수 있지만 단점으로는 길어질수 있는것 같습니다. 그리고 value가 변하게되면 코드들에 Static value들이 존재하기때문에 운영 리소스에 소비되는 시간이 많이 발생해서 피로도가 증가할것 같습니다. class Main { .. 2022. 8. 12.
Type Boolean Integer to boolean integer 차이점 Java Wrapper형 과 Primitive형 언제 쓰면되나? 안녕하세요 앵과장입니다. 벌써 2022년 봄지나가네요 그만큼 프로젝트 일정도 중간을 향해 달려가는중입니다. 한참 코드리뷰를 진행하고 있다보니 알고 있지만 다시한번 또 제목에서 언급한것처럼 기본형(Wrapper) 그리고 참조형(Primitive) 사용하는방법 언제쓰면 좋은지 정리 하도록 하겠습니다. Wapper 타입 Primitive 타입 종류 Boolean boolean Integer integer Byte byte Short short Long long Float float Double double Character character Boxing UnBoxing 에 대해서 많은 부분 설명을 하고 있는데 사실 개발진행하면 박싱 언방식보다는 좀더 용도에 초점을 맞춰서 설명하는게 실용성에서 고민을 해보도록 .. 2022. 5. 3.
Java 코드 컨벤션 협업을 위한 방법 안녕하세요 앵과장입니다. 2022년 이제는 그만 모아야 할것 같은 웰컴 패키지를 받았습니다. 앞으로 3년~4년 정도는 웰컴팩을 받지 않는 방향으로 살아보도록 하겠습니다. why 코딩 규칙이 필요한 이유? 소프트웨어 개발에서 가장 고민되는 부분은 변수명 메소드명 입니다. 언어별로 요구하는 스타일이 존재하는데 Java는 보통 카멜표기법으로 표현하며 enum을 선언할때 대문자를 선호 하는편입니다. Java는 컴파일 언어이며 지속적으로 성장하는 언어입니다. 타입 선언시 var 라는 스크립트에 방법적 접근도 가능하지만 직관적이지 않을 수 있습니다. Long은 기본 Null 이며 long 0의 값으로 선언됩니다. 협업에는 구성원들에 성장과 성향에 따라서 학습된 러닝커브가 인지된 상태에서 진행 되어야 합니다. 사람마.. 2022. 1. 14.
Java Collection Framework JCF 자료구조 종류 와 특징 안녕하세요 앵과장입니다. 개발하면서 우리가 가장 많이 사용하고 있는 자료구조에 대해서 정리해보도록 하겠습니다. 모든언어는 데이터를 사용하는데 있어서 다양한 종류의 Collection을 제공 합니다. 데이터를 조회하고 등록 수정 삭제 를 넘어서 가공하거나 통계 집계를 내거나 Join을 하고 타입을 변환도 하면서 말입니다. 매번 데이터를 가공하는데 처음부터 구현하기란 참 쉬운게 아닙니다. 언어에서 제공하는 라이브러리를 이해하고 필요한곳에 사용하는 방법에 대해서 알아보도록 하겠습니다. 컬렉션 Java Collection Framework Java에서 컬렉션(Collection)이란 데이터의 집합, 그룹을 의미하며 JCF(Java Collections Framework)는 이러한 데이터, 자료구조인 컬렌션과 이.. 2021. 12. 6.
Java 제네릭(Generic) 사용 방법과 개념 정리 안녕하세요 앵과장입니다. Springboot 를 사용하기 전에는 기능에대한 공통적인 요소나 여러 데이터 타입 및 객체를 처리하기 위해서 자주 사용했는데 최근에는 자주 사용하고 있지 않다보니 어떻게 동작했었지 하고 의문을 가지게 되어 기록하고 공유 합니다. 제네릭(generic) 언제 가장 많이 사용하나요? 요구 조건을 개발하다보면 같은 동작과 행위를 하는데 있어서 변수에 값을 IF 조건문 그리고 Switch Case문을 사용하는데 소스가 이쁘지 않거나 모양이 좀 빠지는데 이럴경우가 존재합니다. 확장성 부분도 고려될때 사용되기도 하는데 제가 사용했던 부분은 ApiResponse 처리할때 사용했던 기억이 있습니다. 이걸 정말 많이 사용하냐 라는 질문에는 어떤 개발을 하느냐에 따라 달라지는데요 개발해야하는 비.. 2021. 12. 1.
Java 파일이 JVM에서 동작하는 원리와 메모리 영역에 대한 생각정리 안녕하세요 앵과장입니다. 벌써 2021년 12월이 다가오고 있네요 남아있는 모든 주변 사람들과 내가 해왔던것들에 대해서 정리하는 시간을 가지고 착하게 살았는지 나쁘게 살았는지 자신을 뒤돌아 보는 시간을 잠깐 가져보시기 바랍니다. 저는 이번 크리스마스에는 산타할아버지에게 선물 받긴 힘들거같네요 아이들한테는 착한아이가 되라고 했지만 저는 착한 어른이 되지는 못한것 같습니다. (2021년 나와 함께한 모든 분들께 여러가지로 죄송합니다) Java 딱히 Java 설명을 하려고 작성한건 아니고 너는 참 오랫동안 사랑받는구나. 한국에서는 말이야!! 넌꼭 한글과같은 느낌이야 Java는 컴파일언어 입니다. 언어에는 여러종류가 있는데 참 친절한 언어이면서 어떻게보면 타입도 명확하고 자유도도 떨어지고 최근에 만들어진 언어들.. 2021. 11. 26.
728x90