저번에는 성능 향상과 Stream에 동작 순서에 대해 알아보았다면 이제는 Optional에 대해 알아보자 Stream은 지연 처리를 통해 연산을 하여 값을 도출해낸다. 그렇다면 정확한 이유와 흐름에 대해 파악해보자 Stream 지연 처리 예제 코드를 먼저 살펴보자 public class StreamLazyCal { public static void main(String[] args) { int[] arr = {1, 2, 3, 4, 5, 6, 7}; int sum = Arrays.stream(arr) .filter(n -> n % 2 == 1) .sum(); System.out.println(sum); } } 이 예제 코드는 배열을 filter를 통해 홀수만 걸러내어 그 합을 출력하는 코드이다. Strea..
자 우리는 Stream 메서들을 알아 보았고 데이터를 생성해 가공하고 결과를 만들었다. 그렇다면 이러한 Stream을 왜쓰고 동작 흐름에 대해 좀 더 깊게 들어갈 필요가 있다. 2부는 이 내용에 초점을 둘 것이다. 그 전에 사전 지식에 대해 알 필요가 있다. 동시성(Concurrency) 멀티 작업을 위해 스레드가 번갈아가며 실행하는 성질, 싱글 코어 CPU를 이용한 멀티 작업은 병렬적으로 실행되는 것이 아닌 동시성 작업이다. 병렬성(Parallelism) 멀티 작업을 위해 멀티 코어를 이용해 동시에 실행하는 성질 데이터 병렬성(Data Parallelism) 전체 데이터를 나누어 서브 데이터를 만들고 서브 데이터를 병렬 처리해 작업을 빠르게 종료하는 것 q병렬 스트림은 데이터 병렬성을 구현 멀티 코어의..
오늘의 주제는 Stream이다. 실무에서 많이 사용하고있는 문법인 Stream은 가독성을 높여주고 지연 연산을 통해 성능을 최적화 할 수 있다. 우리는 그럼 이러한 많은 장점을 보유한 Stream을 다음 순서로 알아볼 것이다. Stream에 존재하는 다양한 메서드 생성하기 가공하기 결과 만들기 동작 순서 성능 향상 지연 처리 Null-safe Stream 생성 줄여 쓰기 자 그럼 시작해보자! Stream에 존재하는 다양한 메서드 우린 차근 차근 Stream을 생성하고 가공하고 결과를 만드는 것을 차례대로 해볼 것이다. 그저 문법이기 때문에 그렇게 어렵지 않을 것이다. 그렇다면 같이 Stream을 생성하여 결과를 만들어보자 !! 1. 생성하기 먼저 배열을 통해 Stream을 생성해보자 ! public cl..
현대 개발자들은 Swagger나 Spring docs를 사용해 RestFul API를 문서화 한다. 그렇다면 왜 문서화를 할까? API 문서화가 필요한 경우 혼자 개발하는 경우엔 필요없는 기능일지도 모르지만, 같이 개발한다고 가정해보자 프론트엔드 개발자는 RestAPI 호출되는 방식을 알아야 한다. 하지만 문서 없이 말로만 설명 한다면 계속 까먹을 때마다 설명해야하는 번거로움도 존재할 수 있고 의사전달이 잘못될 수도 있는 문제가 발생한다. 어찌보면 이는 당연한 일이다. 누군가와 같이 일을 하는데 문서 없이 그저 말로만 하는 경우는 있을 수 없는 일이다! 그렇다면 대표적인 문서 자동화 도구인 Swagger와 RestDocs에 대해서 살펴보도록 하자 Spring REST Docs Restful 서비스의 문서..
1. MySQL 엔지 아키텍처 MySQL 전체구조 MySQL은 일반 상용 RDBMS와 같이 대부분의 프로그래밍 언어로부터 접근 방법을 모두 지원한다. MySQL 고유의 C API부터 시작해 JDBC나 ODBC 등응 모든 언어로 MySQL 서버에서 쿼리를 사용할 수 있게 지원한다. MySQL서버는 크게 엔진과 스토리지 엔진으로 구분할 수 있다. 그러면 한 번 살펴보자. MySQL 엔진 MySQL 엔진은 클라이언트로부터의 접속 및 쿼리 요청을 처리하는 커넥션 핸들러와 sQL 파서 및 전처리기, 퀴리의 최적화된 실행을 위한 옵티마이저가 중심을 이룬다. 또한 MySQL은 표준 SQL(ANSI SQL) 문법을 지원하기 때문에 표준 문법에 따라 작성된 쿼리는 타 DBMS와 호환되어 실행될 수 있다. 스토리지 엔진 ..
finally 블록 finally 블록은 보통 예외의 발생 여부와 상관없이 꼭 실행되어야 할 코드를 이 블록에 넣어 마지막에 출력하도록 처리한다. try { // 예외 처리가 발생할 가능성이 있는 로직 작성 } catch (Exception e) { // 예외 발생시 실행되는 로직 보통 에러 메시지를 출력 } finally { // 예외 발생 여부와는 상관없이 수행되는 로직 // finally 블럭은 try-catch문 마지막에 위치해야 함 } 예외 발생 시 try -> catch -> finally 순, 예외가 발생하지 않았을 땐 try -> finally 순으로 실행된다. 예제를 살펴보자 package exception; public class FinallyEx1 { public static void..
JPA를 왜 사용하는가? 필자는 블로그 프로젝트와 팀원들과 토이 프로젝트를 진행하며 JPA를 사용해 왔다. 과거에 JPA를 사용하면서 "SQL쿼리를 직접 작성하지 않는다"는 이점만 보고 JPA를 무작정 사용했던 것 같았다. 하지만 JPA는 우리가 생각하는 것 만큼 간단하지 않다. 복잡하지 않은 일반 개인 프로젝트에서는 무난히 사용했을 지 몰라도 복잡한 연관 관계를 갖고 있는 테이블이 있다고 가정해보자 우리는 이를 JPA로 간단하게 처리할 수 있는가? 그렇다면 JPA를 왜 사용하는지 JPA를 사용했을 때의 이점을 정확히 파악하고 우리는 그것을 남들에게 설명할 수 있어야 한다. 그 이유에 대해 먼저 알아보자 SQL을 직접 다룰 때 발생하는 문제점 RDBMS는 가장 대중적이고 신뢰할 만한 안전한 데이터 저장소..
- Total
- Today
- Yesterday
- 취업준비
- DevOps
- Kotlin
- IT
- 동시성
- thread
- 취업
- swarm
- 면접 준비
- docker
- 게시판
- DB
- 자바
- 개발
- 코딩
- 면접준비
- 개발자
- 백엔드
- MySQL
- 프로젝트
- java
- JPA
- 인터뷰
- 프로그래밍
- Redis
- Spring
- 취준
- 코드
- CS
- 면접
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |