본문 바로가기

전체 글239

Google Java Style Guide 번역 본 글은 Google Java Style Guide를 번역한 글입니다.Google Java 스타일 가이드목차소개소스 파일 기본사항소스 파일 구조포맷팅네이밍프로그래밍 관행Javadoc1. 소개이 문서는 Java 프로그래밍 언어로 작성된 소스 코드에 대한 Google의 코딩 표준을 완전히 정의합니다. Java 소스 파일은 여기에 명시된 규칙을 준수할 때만 Google 스타일을 따른다고 말할 수 있습니다.다른 프로그래밍 스타일 가이드와 마찬가지로, 여기서 다루는 문제는 형식에 관한 심미적 문제뿐만 아니라 다른 유형의 규칙이나 코딩 표준도 포함됩니다. 그러나 이 문서는 주로 우리가 보편적으로 따르는 엄격한 규칙에 초점을 맞추고 있으며, (사람이나 도구에 의해) 명확하게 시행할 수 없는 조언은 피합니다.1.1 용.. 2024. 10. 15.
orElse함수는 잘못 쓰기 쉽다(with orElseGet함수) # 논리 오류를 알게된 경위collectionLike를 데이터베이스에서 찾고 없으면 collectionLike를 새로 만들어 저장하는 코드를 짰다. 코드 검사에서 orElse에 있는 collectionLikeRepository.save()가 항상 호출된다고 위험을 알렸다. @Transactional public void saveCollectionLike(Long memberId, Long collectionId) { Member member = memberRepository.findByIdOrElseThrow(memberId); Collection collection = collectionRepository.findByIdOrElseThrow(collectionId);.. 2024. 10. 9.
빵그리 리팩토링 https://devroach.tistory.com/57 1. 한 함수 내에 추상화 수준 같게 해야 한다. 1-1   Tell, Don't Ask" 원칙[Review 관련]package com.bbangle.bbangle.review.service;import com.bbangle.bbangle.board.domain.Board;import com.bbangle.bbangle.board.repository.BoardRepository;import com.bbangle.bbangle.boardstatistic.service.BoardStatisticService;import com.bbangle.bbangle.exception.BbangleErrorCode;import com.bbangle.bbangle... 2024. 10. 3.
헥사고날 아키텍쳐 1. 질문사항 유저랑 댓글작성자를 구분해서 엔티티 만드는 것이 나을까?2. ENUM과 값 객체 차이 ENUMVOIDxx목적  고정된 상수 집합을 나타냅니다속성과 동작으로 개념 캡슐화사례카테고리돈, 주소 3. VO와 엔티티 차이4. 서비스마다 데이터베이스를 따로 만들어야 하나? ------개념정리애그릿게잇 루트하위의 모든 객체를 처리하는 책임  포트와 어댑터란? Order: 도메인 모델을 나타내는 클래스입니다.OrderService (입력 포트):주문 처리 로직을 정의하는 인터페이스입니다.애플리케이션의 비즈니스 로직 진입점 역할을 합니다.OrderEventPublisher (출력 포트):주문 처리 결과를 외부 시스템에 알리는 인터페이스입니다.도메인 이벤트를 발행하는 추상화된 방법을 제공합니다.OrderSe.. 2024. 10. 3.
알고리즘 수업 시그마xipi f(n)은 n^2이다 라고 '일반 함수'처럼 표현함 - overhead instructinos - control instructions (46P) - treshhold value, logn과 nx의 교점,  - 21p차이남 - 59p 1번 설명/ f(n)은 g(n)의 하한선이다 - loga m 와 logb m은 같은 세타 값을 가진다. - b>a>0 일 때 a^n은 B^n과 같지 않다. [기대치 계산 표기법] 1. everything case         세타      **공부 2. Average                  스몰오    **공부    3. Worst(Upper Bound/상한)   빅오  4. Best(Lowwer Bound/하한)   오메가 ----ETC---- - .. 2024. 9. 26.
[백준 16565] N포커 / 자바 / 수학(포함배제원리 + 모듈러 연산) #문제         레벨: G1알고리즘: 수학(포함배제원리 + 모듈러 연산) 풀이시간: 1시간힌트 참조 유무: 유https://www.acmicpc.net/problem/16565#문제 풀이        쌍이 맞는 조합 카드 4개를 뽑고 나서 나머지 카드를 뽑으면 된다. 쌍이 맞는 4개의 카드를 뽑는 경우의 수는 13이고 나머지 카드를 뽑는 건 52-4= 48에서 N-4를 뽑으면 되니48C(N-4)를 해주면된다. 13x 48C(N-4)위는 틀렸다.위 공식은 두 개 이상의 포카드가 있는 경우를 중복 계산할 수 있다. 예를 들면 N=8일 때 K 조합을 뽑고  48C4에서 포카드 조합이 나오거나 안 나오거나 두 케이스를 커버칠 수 있는 거 아니야? 라고 생각할 수 있다. 그 생각이 맞다. 그러나 우리는 중복.. 2024. 9. 23.
[백준 2188] 축사 배정 / 자바 / 이분매칭 #문제         레벨: P4알고리즘: 이분매칭 풀이시간: 1시간 힌트 참조 유무: 유https://www.acmicpc.net/problem/2188#문제 풀이        이분매칭이 처음이라면 https://jsw5913.tistory.com/214 [백준 11375] 열혈강호 / 자바 / 이분 매칭#문제         레벨: P4알고리즘: 이분 매칭 풀이시간: 1시간힌트 참조 유무: 유https://www.acmicpc.net/problem/11375#문제 풀이         이 문제는 이분 매칭 문제이다. 예시를 통해 문제를 설명하겠jsw5913.tistory.com이 글을 먼저 읽고 오길 바란다. [풀이방법] DFS 함수에서는 해당 소가 들어갈 수 있는 모든 축사를 확인한다:이미 방문한 축사.. 2024. 9. 21.
[백준 13549] 숨바꼭질3 / 자바 / 다익스트라 알고리즘 #문제         레벨: G5알고리즘: BFS(그래프 탐색) 풀이시간: 30분힌트 참조 유무:https://www.acmicpc.net/problem/13549#문제 풀이        직관적으로 가장 빠른 방법은 -초를 소비하고 2배를 가는 거다. 그렇다면 우린 다익스트라 알고리즘을 사용하면 된다. 최종 목표지까지 최소한의 비용을 알고싶다면 출발지부터 최소한의 비용의 노드들 부터 탐색하면 되는 거다. 그래서 미리 큐에 거듭해서 거리는 두배지만 시간은 그대로인 배열이 거듭해서 추가 되고 먼저 빼지는 거다.#풀이 코드      import java.util.*;public class Main { static final int MAX = 100001; public static void main(.. 2024. 9. 14.
[백준 1799] 비숍 / 자바 / 백트래킹 + 분할정복 #문제         레벨: G1알고리즘: 백트래킹 + 분할정복풀이시간: 1시간힌트 참조 유무: 유https://www.acmicpc.net/problem/1799 #문제 풀이         완전탐색을 할 경우 2의 100승으로 무조건 시간초과입니다. 그렇다 하면 조금 더 긍정적으로 생각해보겠습니다. 흰색칸 비숍과 검정칸 비숍은 서로 영향을 줄 수 없습니다. 그래서 우린 흰색칸 비숍과 검정칸 비숍을 나누어서 탐색하게 된다면2^50 + 2^50 으로 아까보다 나아졌습니다. 그래도 우린 시간초과에 걸립니다. 그렇다면 우리에겐 dp와 백트래킹이 남았습니다. 위 문제를 dp로 풀 경우를 생각하면 비트마스킹 dp을 생각해볼 수 있습니다. 이차원배열을 100자리의 비트마스킹으로 표현하는 것입니다. 그러나 대각선의 .. 2024. 9. 12.