일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
- 전역변수
- jwt
- 0.75px border
- npm
- TypeScript
- ZOOM
- 컴포넌튼
- 클론코딩
- 데이터베이스 #try #이중
- entity
- literal
- 1px border
- 타입스크립트
- github
- 당근마켓
- 으
- 0.5px border
- &연산
- Websocket
- 10px
- Strict
- angular
- 문서번호
- ES5
- Props
- font-size
- TS
- 서버리스 #
- es6
- 0.25px border
- Today
- Total
목록BE/JAVA (39)
복잡한뇌구조마냥
요약자바 명명 규칙은 **철자 규칙(Spelling)**과 문법 규칙(Grammatical) 두 가지로 나뉜다.특별한 이유가 없다면 반드시 지켜야 하며, 규칙을 어기면 가독성·유지보수성이 떨어지고 버그가 생기기 쉽다.철자 규칙은 강제적, 문법 규칙은 유연하되 널리 쓰이는 전통을 존중해야 한다.가장 중요한 원칙: 일관성 유지.📌 철자 규칙 (Spelling Conventions) 대상규칙예시패키지전부 소문자, 도메인 이름 역순com.example.project클래스/인터페이스파스칼케이스, 각 단어 대문자 시작ArrayList, HashMap, WordProcessor메서드/필드카멜케이스, 첫 글자 소문자getName, computeHash, count상수(static final)대문자 + 언더스코어MAX..
요약지역변수는 짧게, 필요한 순간에만 선언·사용하라.선언과 동시에 초기화 → 초기화가 어렵다면 정보가 생길 때까지 선언 미루기.반복문에서는 for문/for-each문을 우선 사용해 변수 범위를 최소화.메서드는 짧게 유지 → 지역변수도 자연스럽게 짧은 생존 범위를 갖게 된다.범위 최소화는 가독성, 유지보수성, 안정성을 높이고 버그 발생 가능성을 낮춘다.1. 왜 지역변수 범위를 최소화해야 할까?변수의 생존 기간이 길수록 잘못된 사용 가능성이 높아진다.긴 범위의 변수는 코드 가독성을 해치고, 디버깅과 유지보수에도 불리하다.따라서 변수는 필요할 때 선언하고, 사용 직후 소멸되도록 작성하는 것이 바람직하다.2. 기본 원칙선언과 동시에 초기화대부분의 지역변수는 값을 선언과 동시에 초기화해야 한다.초기화가 어렵다면,..
1. 재정의 vs 다중정의재정의(Overriding)상위 클래스의 메서드와 시그니처가 동일할 때 하위 클래스에서 다시 정의하는 것.호출 대상은 런타임 시점 객체의 실제 타입으로 결정 → 동적 바인딩.다중정의(Overloading)메서드 이름은 같지만, 매개변수 시그니처가 다른 여러 메서드를 정의하는 것.호출 대상은 컴파일 타임에 매개변수의 정적 타입으로 결정 → 정적 바인딩. class Parent { void hello(Object o) { System.out.println("Object"); } void hello(String s) { System.out.println("String"); }}Object obj = "text";Parent p = new Parent();p.hello(obj..
1. 스트림과 스트림 파이프라인스트림(Stream): 데이터 원소의 유한 혹은 무한 시퀀스.스트림 파이프라인(Stream Pipeline): 스트림 원소들로 수행하는 연산 단계의 묶음.소스(Source): 컬렉션, 배열, I/O 채널 등.중간 연산(Intermediate Operation): 변환, 필터링 등. 새로운 스트림을 반환.종단 연산(Terminal Operation): 합계, 수집, 탐색 등. 최종 결과 반환.지연 평가(Lazy Evaluation): 종단 연산이 호출될 때 연산이 실제 수행됨.종단 연산에 쓰이지 않는 원소는 아예 계산되지 않음.덕분에 무한 스트림도 다룰 수 있다.✅ 스트림 API는 메서드 연쇄를 지원하는 플루언트 API라서 선언형 프로그래밍 스타일을 제공한다.2. 스트림의 장..
1. AOP란?Aspect Oriented Programming (관점 지향 프로그래밍)핵심 로직(비즈니스)과 부가 로직(공통 관심사: 로깅, 보안, 트랜잭션 등)을 분리하는 기법OOP(객체지향 프로그래밍)를 보완하는 개념👉 핵심 아이디어: “횡단 관심사(Cross-cutting concern)를 모듈화하자”2. AOP가 필요한 이유예를 들어 서비스 메서드마다 실행 시간 측정을 넣고 싶다고 할 때:AOP 적용 전 (중복 코드 발생) public void createMember() { long start = System.currentTimeMillis(); // 비즈니스 로직 long end = System.currentTimeMillis(); System.out.println("실..
1. Thymeleaf란?자바 기반 서버 사이드 템플릿 엔진HTML 안에 변수를 바인딩하거나 조건문, 반복문 등을 지원JSP와 달리 HTML을 그대로 열어도 깨지지 않는다는 장점 (순수 HTML 친화적)Spring Boot에서는 spring-boot-starter-thymeleaf 의존성으로 쉽게 연동 가능2. 의존성 추가 (Gradle)dependencies { implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-web'}3. 기본 사용법(1) Controller @Controllerpublic class H..
1. Spring Data JPA란?JPA를 더 쉽게 쓰도록 도와주는 Spring 프로젝트반복적인 DAO/Repository 구현을 자동화인터페이스만 정의하면 CRUD 메서드를 자동 제공👉 JPA는 EntityManager를 직접 쓰지만, Spring Data JPA는 Repository 인터페이스 기반으로 훨씬 단순화됩니다.2. 의존성 추가 (Gradle) dependencies { implementation("org.springframework.boot:spring-boot-starter-data-jpa") runtimeOnly("com.h2database:h2")}3. Entity 예제 import jakarta.persistence.*;import lombok.Getter;import..
1. @Testorg.junit.jupiter.api.Test메서드를 테스트 메서드로 지정반환 타입은 void, public 필요 없음@Testvoid addTest() { int sum = 2 + 3; assertEquals(5, sum);}2. @DisplayNameorg.junit.jupiter.api.DisplayName테스트 이름을 한글/문장으로 지정 (출력 시 가독성↑) @Test@DisplayName("2 + 3은 5가 되어야 한다")void addTest() { assertEquals(5, 2 + 3);}3. @BeforeEach / @AfterEach각각 테스트 메서드 실행 전/후 실행되는 메서드 @BeforeEachvoid setup() { System.out.p..