목록분류 전체보기 (28)
나의 독학은
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/6GJXM/btsH9Ih4vbj/mQaRiUtkLOvK7jf5Zfovn0/img.png)
비관적 락과 낙관적 락에 대한 공부 자료는 저 이외에도 충분하다고 판단하여, 해당 글에서는 설명하지 않습니다.락에 대해 학습하고 있는 중이기 때문에, 틀린 부분이 있을 수 있습니다. 발견하신다면 댓글로 남겨주시면 감사하겠습니다. 트랜잭션과 격리 수준을 이해해서 낙관적, 비관적 락을 왜 사용하는지에 대해 알아봅니다.1. 트랜잭션의 격리 수준(Isolation level) 이해하기트랜잭션의 격리 수준(isolation)이란?데이터의 일관성을 유지 하기 위해 여러 트랜잭션이 서로에게 영향을 미칠 수 있는 범위를 어느 정도로 제한할 지를 레벨로 나눈 것입니다.예를 들면, A트랜잭션에서 id=1 에 대한 레코드를 조회 할 때, B트랜잭션에서 id=1 에 대한 레코드를 변경했다고 가정합니다.이 때, A트랜잭션의 결..
우테코 프리코스가 끝나고, 핵심 기능 부터 구현하기 위해 '숫자 야구 게임' 미션을 다시 풀어보았다. 하지만, 핵심 기능부터 구현 하기 위해, 고민하고 답을 찾는 과정이 2주가 걸렸다.이 과정에서 생겼던 궁금증들을 Q&A 형식으로 먼저 얘기해보겠다! *예시로 나오는 코드의 전문입니다.✅ 요구사항을 만족하기 위해 검증(validate)을 어디서 할 것인가?요구사항을 만족하는 조건들을 어디서 검증해야 할까? 나의 생각은 각 객체의 생성자에서 검증을 하는 것이다.이 때, 객체가 생성이 된다면 그 객체는 요구사항의 조건을 충족하는 보장된 객체임을 뜻하기 때문이다. 예를 들어, 숫자 야구 게임의 "서로 다른 세 자리수" 라는 요구사항은 다음과 같은 조건들을 내포하고 있다.①서로 다른 세 자리수의 숫자는 중복되지 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dzOBIx/btsAy6wJHrn/sJSNrNLXpPpqlZsmoJgemK/img.png)
😊4주차 목표 1, 2, 3주차에 학습한 모든 것들을 코드에 녹여내서 아쉬움이 남지 않도록 최선을 다하기! 😊4주차 목표 ☆ 코드의 전문입니다. ✅ 어려울 수록 빛났던 테스트 코드 이번 주차도 을 지키면서 테스트 코드의 장점인 코드에 대한 피드백을 빨리 받고자 했다. 그렇게 다음과 같은 것들을 누리게 되었다. 람다식으로 예외를 터뜨리거나 map 을 순회하는 람다식을 올바르게 사용할 수 있었던 이면에는 초록불이 들어올 때까지 테스트 코드를 돌려봤기 때문이었다. 테스트 코드를 처음 학습했던 2주차에서 알게된 "코드를 작성하면서 '어떻게 테스트를 할 것인가?' 를 자문하기" 를 지키게 되었다. 구현 전에 어떻게 테스트를 작성할지 미리 생각하게 되었고, 이는 테스트 코드를 작성하기 어려운 기능을 더 작은 단위의..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/JDLpv/btszK6M7fGm/tEsi0Kd0C3rKFr5ekqNmK1/img.png)
😊 3주차 목표 순서 지키기 객체지향 코드를 위해 노력하기 1주차 및 2주차 피드백반영하기 손이 가는대로 코드를 작성하지 말고 미리 생각하기 😊 로또 게임 구현 ☆ 코드의 전문입니다. ✅ 사용자를 위한 어떤 프로그램을 만들건지 생각하기 이번 요구사항은 1등 당첨금(20억)만큼의 돈을 쓰면 얼만큼의 수익률이 생길지 궁금해하는 사용자가 이 로또게임을 많이 이용할 것이라 생각했고 이에 맞게 설계와 예외처리를 진행했다. ✅ MVC 사용 [학습] 3주차 요구사항에 "도메인 로직에 대해 단위테스트 하기, 도메인 로직과 UI 로직을 분리해라" 가 나왔기 때문에 도메인 로직에 대해 알아봤다. 이 글에서 은행 업무를 예시로 어떤 로직이 도메인이고, UI 인지 설명 해줘서 도움을 많이 받았다. 도메인로직에 대해 정확히 모..
♧학습한 글의 원본 ▷ 기본 규칙 ✅ [S-I-D] 따르기 기억하기 쉽게 Short 자연스럽게 읽히도록 Intuitive(직관적으로) 무엇을 하고 소유하는지 가장 효과적인 방법으로 Descriptive(서술하기) ✅ 축약형 이름 피하기 - onItmClk (x) - onItemClick (o) ✅ 자료구조를 포함한 이름 피하기 - List itemList (x) - List items (o) ✅ 문맥 상 중복이 있는 이름 피하기 class MenuItem{ handleMenuItemClick = ... (x) handleClick = ... (o) } MenuItem.handleMenuItemClick (x) MenuItem.handleClick (o) ✅ 예상된 결과 반영하는 이름 짓기 /* Bad *..
▷ 커밋 메시지를 의미 있게 작성한다. ✅ 좋은 커밋 메시지 작성법 : 어떻게 했는지 보다는 무엇을 했고 왜 했는지를 설명하기 1. 제목과 본문을 빈 행으로 구분하기. - 제목은 변경사항의 요약, 본문은 변경사항의 세부내용을 설명 2. 제목을 50글자 이내로 제한 3. 제목의 첫 글자는 대문자로 작성하지 않기 4. 제목의 끝에는 마침표, 느낌표 넣지 않기 5. 제목은 명령문으로 하고, 과거형 사용하지 않기 6. 본문의 내용은 72글자 내로 작성하기 ✅ 커밋 유형 feat: 새로운 기능 추가 fix: 버그 수정 docs: 문서 수정 style: 코드 스타일 수정 - 공백과 들여쓰기를 사용해 코드를 정리 - 코드에 주석을 작성 - 변수 이름을 명확하게 작성 refactor: 코드 구조 개선 - 중복된 코드를..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bqPw2H/btszi5UTUev/Du6mm44pOdoCgCNyv4OBL1/img.png)
😊 2주차 목표 요구사항에 충실하고, 2주차 목표인 함수 분리하기와 함수별로 테스트 작성에 익숙해지기! 1주차 공통 피드백 적용하기! 코드를 한 줄 한 줄, 고민하며 프로그램을 구현하기! 오류를 무서워하지 말고 성장의 과정이라 믿기! 천천히 그리고 꼼꼼히 문서 읽기! 😊 자동차 경주 게임 구현 ☆ 코드의 전문입니다. ✅ 좋은 프로그램이란? 2주차는 요구사항 마다 "~할 수 있다." 로 끝나서 참 애매했다. 어떻게 예외처리를 해야할지 씻을 때도, 자기 전에도, 구현 도중에도 진짜 계속 고민했다. 그 과정에서 Console.readLine() 내부 안을 들어가 보기도 했고, escape 문자는 출력과 다르게 그대로 입력이 되는지 알게 되고, BigDecimal와 BigInteger 자료형의 함수들도 찾고, ..
✅ 정규식의 장점 많은 양의 텍스트 파일 중에서 원하는 데이터를 손쉽게 뽑아낼 수 있다. 입력된 데이터가 형식에 맞는지 체크할 수 있다. ✅ Pattern 과 Matcher Pattern : 정규식을 정의하는데 사용 Matcher : 정규식을 데이터와 비교하는 역할 1. 정규식을 매개변수로 Pattern클래스의 static메서드인 Pattern compile(String regex)을 호출하여 Pattern인스턴스를 얻는다. Pattern p = Pattern.compile("c[a-z]*"); // c로 시작하는 영단어 2. 정규식으로 비교할 대상을 매개변수로 Pattern클래스의 Matcher matcher(Charsequence input) 를 호출해서 Matcher인스턴스를 얻는다. Matcher..