Stream 배경 기존의 자바는 데이터에 접근을 하기 위해서는 배열 혹은 컬렉션 등에 저장된 데이터를 반복문 혹은 반복자를 통해서 접근해야 했다 그렇게 되면 코드의 양이 많아지고 재사용이 거의 불가능하다는 단점이 있다 이러한 문제점을 극복하기 위해 데이터를 추상화하여 다루고, 다양한 방식으로 저장된 데이터를 읽고 쓰기 위한 공통된 방법을 제공하는 Stream이 생겨났다. 따라서 스트림 API를 이용하면 배열이나 컬렉션뿐만 아니라 파일에 저장된 데이터도 모두 같은 방법으로 다룰 수 있게 된다. Stream의 특징 외부 반복을 통해 작업하는 컬렉션과는 달리 내부 반복으로 작업을 수행한다 스트림의 연산은 필터 - 맵 기반의 api 를 사용하여 지연 연산을 통해 성능을 최적화한다 스트림은 parallesStre..
1. 람다 표현식(lambda expression)이란? 함수형 프로그래밍 언어에서 사용되는 개념으로 익명함수라고도 한다 Java 8 부터 지원되며, 불필요한 코드를 줄이고 가독성을 향상시키는 것을 목적으로 두고 있다 표현법 (매게변수, ...) -> {함수 실행문}; 람다 표현식 작성 시 유의 사항 기본적인 람다 표현식의 표현법은 매게변수 화살표 함수몸체 입니다 : (매게변수, ...) -> {함수몸체} 매게변수가 하나일 경우 매게변수를 생략 할 수 있다 : () -> {함수몸체} 함수몸체가 단일 실행문이면 괄호({})를 생략할 수 있다 : (매게변수 ,...) -> 함수몸체 함수몸체가 return 문으로만 구성되어 있는 경우 괄호({})를 생략할 수 없다 : (매게변수,...) -> {return 0..
마지막으로 CodeDeploy를 사용하여 s3에 있는 zip 파일을 ec2인스턴스에 이관하고 쉘 스크립트 파일을 생성하고 배포 자동화를 하는 법에 대해서 포스팅을 해보도록하자 -> 이전포스팅 1. start.sh 스크립트 파일 추가 프로젝트의 루트 경로에 scrpits 파일을 생성하고 start.sh 쉘 스크립트 파일을 생성하여 아래의 코드를 추가한다 #!/usr/bin/env bash REPOSITORY=/home/ec2-user/app/deploy PROJECT_NAME=AZ-Server echo "> Build 파일 복사" cp $REPOSITORY/*.jar $REPOSITORY/zip echo "> 구동중인 애플리케이션 pid가 있다면 죽입니다" fuser -k -n tcp 8080 echo "..
자바 관련 용어 1. JVM - Java Virtual Machine (자바 가상 머신) 자바 소스코드로부터 만들어지는 자바 바이너리 파일(.class)를 실행한다 JVM은 플랫폼에 의존적이다 (리눅스의 JWM / 윈도우즈의 JVM은 다름) 2. JRE - Java Runtime Environment (자바 실행 환경) JVM 이 자바 프로그램을 동작시킬 때 필요한 라이브러리 파일들과 기타 파일들을 가지고 있다 즉 JRE는 JVM의 실행환경을 구현했다고 할 수 있다 3. JDK - Java Development Kit (자바 개발 도구) 개발자만을 위한 컴파일러(Javac) 디버깅 툴을 제공 JRE + 개발을 위해 필요한 도구(javac, java)들을 포함 자바의 특징 운영체제에 독립적이다 - JVM ..
스프링 프로젝트를 진행하며 문든 둘의 차이가 무엇인지 궁금해서 찾아보았다 별거 아닌 내용이지만 나는 몰랐으니까 ㅎㅂㅎ 정리해야겠다!! 1. @RequestParam - 파라메터의 값과 이름을 함께 전달하는 방식으로 게시판 등에서 페이지 및 검색 정보를 함께 전달하는 방식을 사용할 때 많이 사용한다. controller layer에서의 사용법 @GetMapping("/comments") @ResponseStatus(HttpStatus.OK) public GetCommentsResponse getComments( @RequestHeader String accessToken, @RequestParam(required = false, defaultValue = "0", "page") int currentPage..
이전 시간에 프로젝트에 github action을 연동하여 push를 감지했을 경우 자동 빌드가 되도록하는 step까지 구현하였다 이번에는 ec2인스턴스를 생성하고 java 설치 s3 버킷 생성 사용자 생성 yml 파일 수정 - workflow 추가 이전 포스팅 - https://0zii.tistory.com/14?category=919071 먼저 ec2 인스턴스를 생성한다 인스턴스 생성에 대해서는 해당 포스팅 내용을 확인하면 된다 인스턴스 생성 후 터미널 접속 방법 포스팅 - https://0zii.tistory.com/2?category=900134 JAVA 설치 1. 인스턴스 생성 후 터미널로 인스턴스에 접근하여 java 버전을 확인해준다 $ java -version 2. ec2 인스턴스에는 기본적..
이번 동아리 프로젝트에서 배포와 ci/cd 연동을 내가 하기로 하였는데 고민끝에 배포환경은 aws 프리티어와 ci/cd 구축은 github action을 사용하기로 하였다. 이번 프로젝트를 배포하며 배포 과정 그리고 ci/cd의 개념에 대하여 알게되는 좋은 계기가 되었다. 물론 ec2 인스턴스를 한 네번정도 만들어보면서 깨달음 ㅎㅎ 그럼 처음으로 github action 연동에 대하여 정리하여보자 CI/CD 란? CI - Continuous Intergration (지속적인 통합) CD - Continuous Deliver, Continuous Deployment (지속적인 배포) 를 뜻하며 개발자들이 코드를 수정하고 통합하고 그리고 수정본을 배포하는 과정을 자동화하여 불필요한 공수를 줄이고 보다 빠른 ..
이번 프로젝트에서 aws에서 제공하는 데이터베이스인 rds를 사용하기로 하였다 데이터베이스 인스턴스를 생성하고 스프링부트 프로젝트에 연동하는 부분까지 실습해보자 1. 먼저 aws에 접속하여 rds 페이지로 이동하여 데이터베이스 생성 버튼 클릭 2. 데이터베이스 선택 - 나는 mysql을 사용할 것 이므로 mysql을 선택했다 3. 템플릿 선택 / 인스턴스 식별자 / 디비 사용자 & 암호 설정 4. 연결에서 퍼블릭 엑세스 예 선택 - 추후 보안그룹 설정을 통하여 인바운드 수정 가능 5. 추가구성에서 데이터베이스 이름 지정 / 파라미터 그룹은 생성 후 다시 지정 예정 6. 완료 버튼 눌러서 디비 생성 완료 RDS를 처음 생성하면 타임존, Character Set, Max Connection 을 설정해줘야 한..