모던 자바: 자바 8에서 자바 21까지 심층 가이드
·
Language/Java
해당 글은 아래 링크의 내용을 번역 + 추가한 것 입니다.https://medium.com/java-and-beyond/modern-java-an-in-depth-guide-from-version-8-to-21-by-akiner-alkan-f89b50e13c72 0. 서론자바는 다재다능한 프로그래밍 언어로, 변혁의 여정을 걸어왔습니다.자바 8부터 흥미로운 기능들이 개발자들의 코딩 방식을 바꾸어 놓았습니다.  더 나은 기능을 위한 깔끔한 람다 표현식부터 데이터를 더 쉽게 다룰 수 있도록 해준 Stream API까지, 자바 8은 혁신적인 변화를 가져왔습니다.우리는 자바 21까지의 업데이트를 살펴볼 것입니다.이 현대적인 자바 기능들을 간단한 설명과 실용적인 예제로 풀어가며 함께 여정에 동참해 보세요.이 여정이..
[Java] Function 인터페이스를 활용한 조회 로직 개선
·
Language/Java
1. 상황로아투두 프로젝트를 진행하면서 Member Entity를 조회하는 여러 메소드들이 있었는데,그 중 회원 한명을 조회하는 Get 메소드는 입력받은 파라미터만 다르고 거의 동일한 join 구문과 fetch 로직이 반복되고 있었습니다.이러한 상황에서 새로운 join이 필요하거나 파라미터가 추가될 때마다 모든 관련 메소드를 수정해야 하는 번거로움이 있었죠. [username으로 조회하는 메소드와 id로 조회하는 메소드]@Overridepublic Optional get(String username) { return Optional.ofNullable( factory.select(member) .from(member) ..
[LOATODO] 스프링 개발자의 NestJS 찍먹 후기
·
Project/LOATODO
1. 나름 안정적인 운영개발을 하다보면, 익숙한 환경을 벗어나 새로운 환경을 시도해보고 싶을 때가 있습니다. 백엔드 개발자가 갑자기 프론트엔드를 한다던가... 앱 개발을 한다던가.... 국비지원 자바로 시작해서 스프링으로 넘어가고,로아투두도 그렇고 현재는 주로 스프링 부트를 사용해 백엔드 개발을 해오고 있습니다. 최근에 느낀점은새로운 프로젝트를 시작해도, 이미 만들어진 틀이 있어spring starter에서 Security, JPA, QueryDSL 등 필요한 라이브러리 가져오고대충 config 파일 만들어서 세팅해주고 도커 파일 만들고 AWS에서 설정 해주면 CI/CD 들어가서 배포까지 깔끔하게 됩니다. 이렇게 하면 t4g.micro EC2를 예약 인스턴스를 구매했다는 가정하에하루에 2달러 내외의 서버..
[프로그래머스 / Java] 하샤드 수
·
CodingTest/Java로 푼 코딩 테스트
1. 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 문제 해석 받은 숫자의 각 자리수의 합이 나누어 떨어져야한다. 예를들어 1111을 받으면 1+1+1+1 = 4, 1111이 4로 나누어 떨어지면 하샤드 수 이다. 그럼 각 자리수를 더해서 직접 나누어 보면 되지않을까? 3. 첫번째 풀이 class Solution { public boolean solution(int x) { boolean answer = true; int x2 = x; int tmp = 0; if (x > 1000) { int a = x/1000; tmp += a; //1000..
[LOATODO] 전략패턴(Strategy Pattern)을 이용한 코드 리팩토링
·
Project/LOATODO
1. 서론디자인 패턴 중 전략패턴에 대해 공부하였고 프로젝트에서 수정하면 좋은 부분이 생각나서 반영하였습니다. - 공부자료 1 : 전략 패턴 예제 작성 + 깃허브 커밋 (참고. JAVA 객체 지향 디자인 패턴 서적) Fetch: 전략패턴 · minhyeok2487/DesignPattern@1a60ca0minhyeok2487 committed Feb 26, 2024github.com - 공부자료 2 : 사이트 전략 패턴/ 디자인 패턴들 / 행동 패턴 전략 패턴 다음 이름으로도 불립니다: Strategy 의도 전략 패턴은 알고리즘들의 패밀리를 정의하고, 각 패밀리를 별도의 클래스에 넣은 후 그들의 객체들을 상호교환refactoring.guru  2. 리팩토링2 - 1. 리팩토링 부분현재 LoaTodo의 레이..
[Java] 스택(Stack)이랑 큐(Queue)가 뭔데? + 코딩테스트 문제
·
CodingTest/Algorithm
1. 스택(Stack) 1 - 1. 스택이란? "쌓다", 데이터를 차곡차곡 쌓아 올린 형태의 자료구조를 말합니다 같은 구조와 크기의 자료를 정해진 방향으로만 쌓을 수 있습니다. 가장 마지막에 삽입된 자료가 가장 먼저 삭제되는 LIFO(Last In First Out) 구조 가장 최근에 스택에 삽입된 자료의 위치를 top이라고 합니다. 활용 예시 웹 브라우저 뒤로가기 실행 취소(Ctrl + z) 역순 문자열 만들기 후위 표기법 계산 수식의 괄호 검사(연산자 우선순위 표현을 위한 괄호 검사) 1 - 2. 자바에서의 스택 자바에서의 스택은 Stack 클래스를 구현하여 제공하고 있습니다. Stack st = new Stack(); Stack의 메서드 boolean empty() : Stack이 비어있는지 확인 ..
[Java] 오버로딩(OverLoading)??
·
Language/Java
1. 오버로딩(OverLoading)이란? 메서드는 같은 클래스 내에서 서로 구별될 수 있어야 하기 때문에 각기 다른 이름을 가져야 합니다. 그러나 자바에서는 한 클래스 내에 이미 사용하려는 이름과 같은 이름을 가진 메서드가 있더라도 매개변수의 개수 또는 타입이 다르면, 같은 이름을 사용해서 메서드를 정의할 수 있습니다. 이것을 오버로딩(OverLoading)이라고 합니다. 2. 오버로딩(OverLoading)의 조건 메서드 이름이 같아야 합니다. 매개변수의 개수 또는 타입이 달라야 합니다. 변환타입은 영향이 없습니다. 3. 예시 3 - 1. 대표적인 예시 "println" 가장 대표적인 예시로 println 메서드가 있습니다. println메서드를 호출할 때 매개변수로 지정하는 값의 타입에 따라서 호출..
[Java / 코딩테스트] 겹쳐진 압축 해제
·
CodingTest/Java로 푼 코딩 테스트
1. 생각 전형적인 스택 문제 ")"까지 보고 반복문 2. 코드 import java.util.*; class Solution { public String solution(String s){ String answer = ""; Stack st = new Stack(); for (char c : s.toCharArray()) { if(c == ')') { String tmp = ""; while (!st.empty()) { String t = st.pop(); if(t.equals("(")) { String num = ""; while (!st.empty() && Character.isDigit(st.peek().charAt(0))) { num = st.pop() + num; } String res = "..
[Java / 코딩테스트] 최대 길이 연속수열
·
CodingTest/Java로 푼 코딩 테스트
1. 생각 중복을 제거해야 하므로 Set을 쓰면 될거같은데 정렬을 해야하나? nums의 길이가 300,000 이므로 시간복잡도를 최대한 적게 써야한다. 정렬 없는 HashSet으로 해결 2. 코드 import java.util.*; class Solution { public int solution(int[] nums){ int answer = 0; HashSet numSet = new HashSet(); for (int num : nums) { numSet.add(num); } for (Integer i : numSet) { if(numSet.contains(i-1)) continue; int cnt = 0; while (numSet.contains(i)) { cnt++; i++; } answer = M..