일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 스프링부트와AWS로혼자구현하는웹서비스
- 혼공SQL
- 이펙티브자바
- 기술면접
- 이팩티브 자바
- 인프런백기선
- 자바스터디
- 자료구조
- vue.js
- SQL쿡북
- 인프런김영한
- MariaDB
- 도메인 주도 개발 시작하기
- CleanCode
- mysql
- jpa
- react
- java
- 네트워크
- aop
- 알고리즘
- 알고리즘분석
- AWS RDS
- 자바예외
- AWS
- 자바
- 인덱스
- 클린코드
- 이펙티브 자바
- DDD
- Today
- Total
목록전체 글 (272)
기록이 힘이다.
1. 타입 안정성이 보장됩니다. 단순한 문자열로 쿼리를 생성하는 것이 아니라, 메소드를 기반으로 쿼리를 생성하기 때문에 오타나 존재하지 않는 컬럼명을 명시할 경우 IDE에서 자동으로 검출됩니다. 이 장점은 Jooq에서도 지원하는 장점이지만, MyBatis에서는 지원하지 않습니다. 2. 국내 많은 회사에서 사용 중입니다. JPA를 적극적으로 사용하는 회사에서는 Querydsl를 적극적으로 사용중입니다. 3. 레퍼런스가 많습니다. 앞 2번의 장점에서 이어지는 것인데, 많은 회사와 개발자들이 사용하다보니 그만큼 국내 자료가 많습니다. 해당 답변을 얻을 수 있다는 것이 큰 장점입니다.
휴리스틱이란 '시간이나 정보가 불충분하여 합리적인 판단을 할 수 없거나, 굳이 체계적이고 합리적인 판단을 할 필요가 없는 상황에서 신속하게 사용하는 어림짐작의 기술’ 주석 C1: 부적절한 정보 다른 시스템에 (예를 들어, 소스 코드 관리 시스템, 버그 추적 시스템, 이슈 추적 시스템, 기타 기록 관리 시스템에) 저장할 정보는 주석으로 적절하지 못하다. 일반적으로 작성자, 최종 수정일, SPR(Software Problem Report) 번호 등과 같은 메타 정보만 주석으로 넣는다. 주석은 코드와 설계에 기술적인 설명을 부연하는 수단이다. C2: 쓸모 없는 주석 오래된 주석, 엉뚱한 주석, 잘못된 주석은 더 이상 쓸모가 없다. 주석은 빨리 낡는다. C3: 중복된 주석 주석은 코드만으로 다하지 못하는 설명을..
인터프리터 방식과 컴파일 방식의 차이점을 서술해 주세요. 인터프리터 방식(Interpreter)과 컴파일 방식(Compiler)은 프로그래밍 언어 코드를 실행 가능한 형태로 변환하는 데 사용되는 두 가지 주요한 접근 방식입니다. 인터프리터 방식: 인터프리터는 프로그래밍 언어 코드를 한 줄씩 읽고 해석하여 실행합니다. 코드를 실행하기 전에 매번 번역 과정이 필요하므로 실시간으로 코드를 해석하고 실행할 수 있습니다. 인터프리터는 프로그래밍 언어의 문장을 해석하고 즉시 실행하기 때문에 개발과 디버깅이 빠르고 간편하며, 플랫폼에 종속되지 않고 어디에서나 실행할 수 있습니다. 그러나 실행 시간에 코드를 해석하므로 실행 속도가 컴파일 방식보다 상대적으로 느릴 수 있습니다. 대표적인 인터프리터 언어로는 Python,..

동기화하는 부분을 작게 만들어라 자바에서 synchronized 키워드를 사용하면 락을 설정한다. 같은 락으로 감싼 모든 코드 영역은 한 번에 한 스레드만 실행이 가능하다. 락은 스레드를 지연시키고 부하를 가중시킨다. 반면, 임계영역은 반드시 보호해야 한다. 따라서, 코드를 짤 때는 임계영역 수를 최대한 줄여야 한다. 올바른 종료 코드는 구현하기 어렵다 깔끔하게 종료하는 코드는 올바로 구현하기 어렵다. 가장 흔히 발생하는 문제가 데드락이다. 즉, 스레드가 절대 오지 않을 시그널을 기다린다. 깔끔하게 종료하는 다중 스레드 코드를 짜야 한다면 시간을 투자해 올바로 구현하기 바란다. 스레드 코드 테스트하기 코드가 올바르다고 증명하기는 현실적으로 불가능하다. 테스트가 정확성을 보장하지 않는다. 그럼에도 충분한 ..
클래스 체계 (자바의 경우) 가장 먼저 변수 목록을 작성 정적(static), 공개(public) 상수가 있다면 맨 처음에 나온다. 다음으로 정적 비공개(private)변수가 나오며, 비공개 인스턴스 변수가 나온다. 변수 목록 다음에는 함수가 나온다. 공개 함수를 먼저 쓴다. 비공개 함수는 자신을 호출하는 공개 함수 직후에 넣는다. ⇒ 추상화 단계가 순차적으로 내려간다. 캡슐화 변수와 유틸리티 함수는 가능한 공개하지 않는 편이 좋다. (반드시는 아니다) 때로는 protected로 선언해 테스트 코드에 접근을 허용하기도 한다. → 하지만 캡슐화를 풀어주는 결정은 언제나 최후의 수단이다. 클래스는 작아야한다 클래스를 만들 때 제일 중요한 것은 **“크기가 작아야 한다”**이다. → 여기서 작아야하는 것은 물..
CSRF 토큰 오류는 주로 CSRF(Cross-Site Request Forgery) 보호 메커니즘을 사용하는 웹 애플리케이션에서 발생합니다. CSRF는 사용자가 동의하지 않은 채로 웹 사이트에서 동작을 수행하도록 공격자가 사용자를 속이는 유형의 공격입니다. CSRF 공격을 방지하기 위해 웹 애플리케이션은 CSRF 토큰을 사용합니다. 이 토큰은 각 사용자 세션마다 생성되는 고유한 값으로, 요청에 포함되어 해당 요청이 정당한 출처에서 시작된 것인지 확인하는 데 사용됩니다. CSRF 토큰 오류가 발생하면 요청에 포함된 CSRF 토큰이 누락되거나 잘못된 것이거나 만료된 것을 의미합니다. 이 때 서버는 요청을 잠재적으로 악성적으로 간주하고 오류로 응답합니다. 다음은 CSRF 토큰 오류를 해결하기 위해 수행할 수..
Pojo와 DTO는 모두 객체 지향 프로그래밍에서 데이터를 전달하거나 저장하기 위한 클래스입니다. 그러나 둘 사이에는 몇 가지 차이점이 있습니다. POJO (Plain Old Java Object): POJO는 단순히 데이터를 저장하고 접근하기 위한 클래스입니다. POJO는 Java의 기본적인 객체 지향 원칙을 따르며, 일반적으로 getter와 setter 메서드를 사용하여 데이터에 접근합니다. POJO는 특정 프레임워크나 라이브러리에 종속되지 않으며, 순수하게 데이터를 표현하기 위한 목적으로 사용됩니다. 비즈니스 로직을 갖지 않고 데이터만 담고 있는 단순한 구조를 가지고 있습니다. DTO (Data Transfer Object): DTO는 데이터의 전송을 목적으로 사용되는 객체입니다. 주로 여러 개의 ..
TDD 법칙 세 가지 첫째 법칙: 실패하는 단위 테스트를 작성할 때까지 실제 코드를 작성하지 않는다. 둘째 법칙: 컴파일은 실패하지 않으면서 실행이 실패하는 정도로만 단위 테스트를 작성한다. 셋째 법칙: 현재 실패하는 테스트를 통과할 정도로만 실제 코드를 작성한다. 위 세 가지 규칙을 따르면 개발과 테스트가 대략 30초 주기로 묶인다. 테스트 코드와 실제 코드가 함께 나올뿐더러 테스트 코드가 실제 코드보다 불과 몇 초 전에 나온다. 이렇게 일하면 매일 수십 개, 매달 수백 개, 매년 수천 개에 달하는 테스트 케이스가 나온다. 실제 코드를 사실상 전부 테스트하는 테스트 케이스가 나온다. 하지만 실제 코드와 맞먹을 정도로 방대한 테스트 코드는 심각한 관리 문제를 유발하기도 한다. 깨끗한 테스트 코드 유지하기..