Bean Validation API
·
java/spring
Bean들의 유효성 검증을 위한 APIBean의 유효성 검증은 매우 중요하다. 각 Bean마다 유효성 검증 로직을 구현하기에는 비효율 적이기에 Bean Validation API를 통해서 간단하게 유효성 검증을 하도록 설계할 수 있다.즉, Domain-Model 제약 조건을(Constraints) 선언함으로써 Validation 로직을 여러 레이어에서 분리 시키려는 것이 Bean Validation API의 핵심 목표이다. Bean Validation API 유효성 검증 관련 메커니즘아래의 구성요소를 따르면 보다 직관적으로 유효성 검증을 하는 것을 볼 수 있다. [제약 조건]Domain Model에 Contraint 어노테이션을 부여한다.해당 Constraint 에 명시된 유효성 검증 로직(isValid..
Parametric Search
·
알고리즘
1. 정의조건을 만족한는 최소/최댓값을 구하는 문제(최적화 문제)를 결정문제로 ****변환하여 이분탐색을 수행하는 탐색법 2. 적용하기 전 확인해야 할 것최적화 문제를 결정 문제로 바꿀 수 있는지 확인하기최적화 문제 : 여러가지 경우의 수 중 최적의 해를 찾는 문제, 여러 경우의 수가 존재결정 문제 : 예/아니오 두 가지의 결정만이 있는 문제ex어떤문제에서 최대가 되는 x를 구하고자 한다. y이상일 때 문제가 해결되는 지 알고 싶다. ⇒ 최대가 되는 x값을 구하는 문제(최적화 문제)를 y이상일 때 되는지 안 되는지(결정문제) 로 변경이 결정 문제로 얻어낸 함수가 감소 혹은 증가 함수인지 따져봐야한다.ex최소 혹은 최대라는 얘기가 있는 경우범위가 무지막지하게 큰 경우시간 복잡도에서 값 하나를 로그로 어떻게..
Gradle 파일 뜯어보기
·
java/build
1. gradle-wrapper.properties 쓰임새Gradle Wrapper의 동작방식을 설정하는 파일Gradle Wrapper란 개발자들인 특정 gradle 버전으로 고정하여 동일한 환경에서 작업할 수 있도록 돕는다. 쓰임 예시distributionBase=GRADLE_USER_HOMEdistributionPath=wrapper/distsdistributionUrl=https\\://services.gradle.org/distributions/gradle-8.11.1-bin.zipnetworkTimeout=10000validateDistributionUrl=true/zipStoreBase=GRADLE_USER_HOMEzipStorePath=wrapper/distsdistributionBase=G..
git 레포 초기설정 파일 뜯어보기
·
git
그 동안 여러번 git을 쓰면서 제대로 뜯어보질 못한 것 같아서 이렇게 조금씩이나마 뜯어보는 시간을 가져보았다.  1. .gitattributes쓰임새이 설정은 다양한 운영체제에서 파일 호환성을 보장하고, Git이 파일을 적절히 처리하도록 돕는 역할을 한다.용어 설명text : text 파일로 취급하겠다는 뜻eol(End Of Line) : 줄바꿈을 뜻하는 단어줄바꿈 형식LF(Line Feed) : 제어 문자로 표현 시 “\n” 를 뜻한다. 주로 Linux/Mac 에서 쓰이는 방식이다.CRLF(Carriage Return Line Feed) : 제어 문자로 표현 시 “/r”을 뜻한다. 주로 window에서 쓰인다. 쓰임 예시/gradlew text eol=lf*.bat text eol=crlf*.jar ..
[JSCODE] 면접 스터디 회고
·
회고
5주간에 걸친 JSCODE 면접 스터디가 끝이 났다. 처음엔 멘토같은 형의 추천으로 별 생각없이 DB에 대한 확실한 기반이 부족하여 DB에 대해 공부하기 위해 신청했던 스터디였지만 끝나고 보니 남은게 정말 많았던 스터디 였다. 잘했던 점DB 지식의 체계적인 확립스터디를 통해 기본적인 DB 지식부터 심화된 개념까지 공부할 수 있었다. 멘토님의 조언으로 실무에서 활용할 수 있는 팁과 추가 학습 자료를 접할 수 있어 큰 도움이 되었다.다양한 개발자들과의 교류스터디원들과의 교류를 통해 새로운 공부 방법을 탐색하고, 서로 자극을 주고받으면서 학습에 대한 확실한 동기부여가 될 수 있게끔 되었다. 또한 나 역시도 훗날 다른 개발자들에게 보다 더 나은 정보를 공유하고 싶은 좋은 경험을 가졌다.면접 준비 경험의 내재화다..
이상 현상과 정규화
·
DB
이상현상 (Anomaly)좋은 관계형 데이터 베이스를 설계하는 목적 중 하나가 정보의 이상현상이 생기지 않도록 고려해 설계하는 것이다.이상현상이란 DB 설계할 때 잘못 설계하여  데이터를 삽입, 삭제, 수정할 때 논리적으로 생기는 오류를 말한다.이러한 이상현상에는 삽입이상, 삭제이상, 수정이상 이렇게 세 개가 있다.아래는 잘못된 설계로 만들어진 테이블의 예시이다.삽입이상삽입 이상이란 데이터를 삽입할 때 의도치 않은 값이 삽입되는 논리적 오류를 말한다.예를 들어 '이상철'이라는 개인정보만 입력하고 싶은데, 강의명이 null값으로 들어가게 되는 오류가 발생한다. 갱신이상갱신 이상이란 중복된 데이터를 수정 중 일부 데이터만 수정이되는 논리적 오류를 말한다.예를 들어 '김현수'의 나이를 22로 바꾸고 싶은데, ..
트랜잭션 ACID 원칙
·
DB
ACID 란?트랜잭션이 반드시 지녀야하는 특징을 정해놓은 원칙이다.트랜잭션이란? 하나의 논리적 작업의 단위를 말한다.ACID 원칙을 보장해야 DB 트랜잭션이 정상적으로 수행된다.Atomicity(원자성), Consistency(일관성), Isolation(독립성), Durability(영속성) 으로 이루어져 있다. Atomicity - 원자성원자성이란 변경사항이 모두 반영되거나, 아예 반영이 되지 않는 속성을 말한다.즉, 부분만 반영되는 것이 아닌 전부 커밋(commit)되거나 롤백(rollback)시키는 속성이다. -> 일부만 성공을 허용하지 않는다.개발자가 코드를 짜면 DBMS가 수행을 해주는 방식이다. Consistency - 일관성트랜잭션 이전과 이후의 DB는 항상 일관돼야 한다는 원칙이다.즉, ..
낙관적 락 과 비관적 락
·
DB
낙관적 락Application Level 에서 관리하는 Lock을 뜻한다.읽기 작업이 빈번하게 일어나고 쓰기 작업같은 경우 적게 일어날 때 이 방법이 유용하다.버전과 TimeStamp 등의 방식을 활용하여 충돌 검사를 수행한다.transaction 1 이 karol(id = 2) 조회transaction 2 이 karol(id = 2) 조회transaction 2 이 karol(id = 2) 를 karol2로 변경 요청Application이 변경요청을 받고 name 변경과 함께 version을 변경을 DB에 요청 후 적용trasaction 1에서 karol(id = 2)를 karol1으로 변경 요청했으나 버전이 달라 실패  비관적 락DB Level에서 관리하는 Lock을 뜻한다.항상 충돌이 일어난다는 가..