분류 전체보기
![[Java의 정석] 14. 람다와 스트림](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FctNmro%2FbtrBHUwB9QU%2FAAAAAAAAAAAAAAAAAAAAAKj066H8gwKY-EQqDPA4YZjHUIdWFpjQnM-WDt8JLeAk%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1756652399%26allow_ip%3D%26allow_referer%3D%26signature%3Dsr0xB01raTifzskwTtBKXE7WRE0%253D)
[Java의 정석] 14. 람다와 스트림
1. 람다식 1) 람다식이란? 메서드의 이름과 반환값 없이, 하나의 식처럼 표현한 것으로 '익명 함수'라고도 한다. int[] arr = new int[5]; Arrays.setAll(arr, (i) -> (int) (Math.random()*5 + 1)); // 람다식 더보기 /* int max(int a, int b) { return a > b ? a : b; } */ (int a, int b) -> a > b ? a : b (a, b) -> a > b ? a : b // 타입 추론이 가능한 경우는 타입 힌트를 생략 가능 더보기 a -> a*a // 매개변수가 하나인 경우는 괄호 생략 가능 (int a) -> a*a // 매개변수 타입이 있으면 괄호 생략 불가능 더보기 /* (String name, ..
무엇을 위한 개발인가..
개발을 위한 개발인가. 취업을 위한 개발인가 사람을 위한 개발.. 개발 팀을 꾸려가다보면, 성과와 인정 사이에서 고민할 때가 생긴다. 물론 모든 팀원들과 완벽하게 합이 잘 맞고, 좋은 성과를 내면 고민할 필요없이 너무 좋은 축복이지만, 팀원들과 뭔가 잘 맞지 않는다고 느껴질 때가 있다. 성과도 내가 원하는만큼 나오지 않아서 팀원들을 보챌때도 많다. 그냥 아는 선후배나 친구사이로 만났더라면 더 좋게 지낼 수 있을거 같은데 정해진 시간 안에 많은 것을 얻어갔으면 하는 욕심에서 인정을 조금 덜어내고, 성과를 선택했다. 1. 내가 원하는 수준에 미치지 않는 팀원들을 압박한다고 해서, 그들이 즉시 내가 원하는만큼의 성과를 내주지 않는다. 2. 팀원들이 무엇을 힘들어하는지 잘 알아야한다. 3. 그것을 잘 알았다면,..
![[RFC 표준] OAuth 2.0를 쉽고 정확하게 알아보자! (기초 개념 및 용어 정리)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2Fpcneq%2FbtrBGgMbd40%2FAAAAAAAAAAAAAAAAAAAAAAoEIFuEGPNU8Iul7z1oZRqxZLcZ1oQnrU7HkWDW0j-i%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1756652399%26allow_ip%3D%26allow_referer%3D%26signature%3DpW1hgxqCBCoo9kKd%252FgchEtTZU9k%253D)
[RFC 표준] OAuth 2.0를 쉽고 정확하게 알아보자! (기초 개념 및 용어 정리)
[OAuth 프로토콜이란?] 어떤 회사가 자신의 서비스를 운영하기 위해 어떤 리소스가 필요하다고 가정하자. 근데, 해당 리소스를 처음부터 수집하고 가공하는 일은 노력이 많이들기도 하고, 서비스 사용자에게도 불편한 경험이 될 수 있다. 이 때 구글이나 네이버 같은 대기업에서는 당사에서 미리 만들어 놓은 리소스를 사용할 수 있도록 api 를 공개하는 경우가 있다. 이 때 구글, 네이버 같은 기관은 OAuth provider 라고 말한다. 이 리소스는 민감한 정보(사용자의 개인정보 등)를 포함할 수 있기 때문에 안전하게 미리 약속된 방식으로 데이터를 주고 받을 필요가 있다. 이처럼 에서 HTTP 상으로 정보를 안전하게 주고 받을 수 있도록 통일한 규약을 OAuth 프로토콜이라고 한다. 1. 구성요소 4가지 아..

Java 한글 인코딩 안될때 jdk 버전 확인해야함.
배경 IDE 에서는 한글이 잘 출력되는데, java 소스코드(System.out.println)를 통해서 출력시 글자가 깨지는 현상. 원인 JEP-400(인코딩이 default 로 UTF-8 로 설정되는 기능)이 jdk 18 버전에서 문제를 일으키는 것으로 확인. (Windows 환경) 해결방안 jdk 버전을 17 이하 버전을 사용할 것. 참고 https://inside.java/2021/10/04/the-default-charset-jep400/ Jep 400 and the default charset – Inside.java Have you ever wondered what is `default charset`? Here’s what the javadoc for Charset.defaultCharse..

Spring MSA 를 간단하게 구현해보자 (+ 최신 release, 모니터링, heapdump)
GitHub - Dong-Hyeon-Yu/spring-cloud-monitoring-example: Monitoring Spring MSA example (release train-2021.01) / gateway+discover Monitoring Spring MSA example (release train-2021.01) / gateway+discovery+config+feign / grafana+prometheus+docker / jvm heap dump example - GitHub - Dong-Hyeon-Yu/spring-cloud-monitoring-example:... github.com 환경 ▪️ Release Trains : 2021.0.1 (https://spring.io/project..

프록시 요청 시 원래 사용자 ip 복원하기 (Nginx, Cloudflare)
[배경] 도메인 호스팅 업체 CloudFlare 를 사용 중. (이전에는 godaddy 를 사용하다가 호스팅이 불안정 했을 때, 급하게 옮긴뒤로 CloudFlare 가 더 편해서 계속 사용 중임.) CloudFlare에서는 프록시 모드로 https 통신을 지원해준다. 이 프록시 모드를 사용하면 웹서버로의 요청 ip가 실제 사용자의 ip가 아닌, CloudFlare의 프록시 서버 ip 로 찍히게 된다. 현재 운영하고 있는 개발용 api는 개발 팀원들만 접속할 수 있도록 특정 ip 만 열어놓은 상태이다. godaddy의 인증서가 서브도메인에는 적용되지 않아서, lets encrypt의 무료인증서로 서브도메인에 tls 프로토콜을 적용한 상태였다. 하지만 이 무료 인증서의 치명적인 단점은 3개월마다 연장을 해주..

AWS 운영비 줄이기(ec2, savings plan, ebs, s3)
최근 (1)더 많은 저장공간의 필요성 + (2)환율 급등의 이유로 월간 aws 이용 금액이 50% 정도 상승하였음. 이에 따라 aws 이용 비용을 줄이고자 하는 방안을 제시함. 1) 요금 현황 사용중인 EC2 인스턴스 : t3.medium(seoul) 스토리지 : HDD 128 GB 고정ip 2) EC2 비용 절감 부분: savings plans 1년 약정 (1) 예상 월별 결제액 : 22.92$ (2) 월간 실질 절감 비용: 16.5$ EC2 instance : 38$ - 23$ = 15$ VAT : 15$ * 0.1 = 1.5$ ⇒ 약 16.5$(20,911원) 절감 예상 (2022.05.03 현재 환율 1267.38 원/달러) 3) 스토리지 비용 절감 부분 - S3 (1) 예상 월 지출 금액 : 3..

JavaThread 에 대해 깊게 이해해보자 (feat. Openjdk 커널 분석)
Thread에 대한 기초적인 os 지식은 이 글(쓰레드(Thread)와 동기화 문제)을 참고하기 바람 Thread는 user가 관리하느냐, os가 관리하느냐에 따라 User-Level-Thread 또는 Kernel-Level-Thread 로 나뉜다. 두 가지의 장점을 합친 Hybrid 모델도 존재한다. Java에서는 Kernel thread와 User thread를 모두 사용하는 Hybrid 모델이다. (jdk 1.2 버전까지는 100% User-Level-Thread인 GreenThread라는 것이 있었다고 한다.) 그림을 잘 보면, User-level thread 3개가 2개의 Kernel-Level-Thread를 공유하고 있는 것을 알 수 있다. OS 수업을 듣다가, java 는 구체적으로 이런 방..