전체 글

꾸준히 성장하는 개발자 WONOW 입니다. 🤗
· CS
📢 각 도메인 별 Repository 에 의존할 경우 도메인 규칙을 정해놓은 서비스를 이용하지 않아 유지보수성이 떨어지게 됩니다. 예를 들어 지갑(Wallet) 엔티티에 돈을 빼는 메서드가 있다고 합시다. Wallet에 돈을 빼면 땅바닥에 둘 수 없으니, 다른 Wallet (ex. Admin Wallet) 에 보관합니다. 위 로직은 Entity 내에 작성할 수 없는 코드입니다. 이를 간단한 예시로 설명 드리겠습니다.문제 상황초기 상태WalletService 는 돈을 빼는 비즈니스 로직을 가지고 있습니다. 돈을 뺀 후에는 특정 규칙(여기서는 어드민 지갑에 추가) 이 적용됩니다.public class WalletService { private final WalletRepository walletRepos..
주의점왕복 거리를 구하는 것모든 경우 따져야 하는 것알고리즘 선택과 근거플로이드 워셜간선 최단 거리를 구해야하는 문제모든 정점을 따져야한다.다익스트라: 하나의 정점에서 모든 정점까지 최단거리음수 불가추후 탐색할 때 다익스트라 로직을 여러번 실행해야함벨만포드: 하나의 정점에서 모든 정점까지 최단거리음수 가능음수 탐지 가능문제는 두개의 정점(치킨집)을 구해야해서 여러번 계산해서 비효율적플로이드: 여러개의 정점에서 여러개의 정점까지 최단거리음수 가능But 음수 사이클은 불가그러나 문제는 음수 사이클이 없음접근 방법 (플로이드 워셜)플로이드 워셜 설명 (추후 링크로 변경)문제 예시 1번으로 설명 Node (도시) 는 5개 Edge (도로) 는 4개 있다.플로이드 워셜을 이용하기 위해 2차원 배열을 만들어준다.자..
링크https://www.acmicpc.net/problem/22251 주의점0층 제외 알고리즘 선택과 근거브루트포스모든 층을 다 봐야한다.구현디스플레이 구현 접근 방식 디스플레이 표현디스플레이를 이렇게 표현했다. 1번이 켜져있으면 0010010 이렇게 표현한다. 3이면 1011011 자릿수1. 최대 자릿수가 같을 때까지 현재 층이나 호석이 층이나 둘 다 0 계속 추가2. 체크할 때 자릿수마다 바뀐 LED 수 체크 하면 된다. 정답import java.io.*;import java.util.*;public class Main { static String[] num = {"1110111", "0010010", "1011101", "1011011"..
나는 나답게 살았나?올해를 돌아보며 문득 이런 생각이 들었다. 나는 올해 나답게 살았나?when you lose your money, you lose nothing. when you lose your health, you lose something. when you lose your character, you lose everything. 이 문장을 접하고, 내 삶에서 정말 잃지 말아야 할 것이 무엇인지 깊이 고민하게 되었다. 인격은 사람에 따라 정의가 다 다를 것이다.내가 생각하는 인격은 삶을 대하는 태도와 새로운 도전에 임하는 자세, 그리고 주변인들을 대하는 태도에서 드러난다고 믿는다.이 모든 게 하나로 뭉쳐 나의 인격이 된다고 생각한다. 그리고 이것이 결국 내가 중요하게 여겨야 할 나의 캐릭터라고..
· CS
개념들어가기에 앞서트랜잭션은 Spring의 대표적인 AOP 기술 중 하나입니다. 다른 프레임워크에선 이 @Transactional 기술을 부러워 하는 경우도 있습니다.왜 그럴까요?트랜잭션을 사용하지 않은 코드public void saveUser(User user) { Connection connection = null; try { // 데이터베이스 커넥션을 얻음 connection = dataSource.getConnection(); // 트랜잭션 시작 connection.setAutoCommit(false); // 사용자 저장 로직 실행 PreparedStatement statement = connection.prep..
· CS/DB
개념Isolation Level 은 데이터베이스의 트랜잭션 격리 수준을 얘기합니다.이는 여러 트랜잭션이 동시에 실행되고 있을 때 특정 트랜잭션이 다른 트랜잭션에서 변경하거나, 조회하는 데이터를 볼 수 있게 허용하는 여부를 결정하는 것입니다.Serializable가장 엄격한 격리 수준입니다. 이름 그대로 트랜잭션을 순차적으로 진행시킵니다.여러 트랜잭션이 동시에 진행 될 일이 없어서 데이터 부정합 문제가 발생되지 않지만, 트랜잭션을 순차적으로 진행하기 때문에 동시 처리 속도가 현저히 떨어지게 됩니다.Repeatable ReadRepeatable Read 는 언두 로그를 활용하는 트랜잭션 격리 수준입니다.📢 언두 로그가 뭘까요?일반적인 RDBMS 는 변경 전의 레코드를 언두 공간에다가 백업합니다. 이렇게 되..
wonow_
wonow_