| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- npm
- 1px border
- font-size
- 데이터베이스 #try #이중
- jwt
- es6
- ZOOM
- 으
- angular
- Strict
- literal
- 전역변수
- 서버리스 #
- 당근마켓
- Props
- 0.5px border
- 0.25px border
- TS
- 타입스크립트
- TypeScript
- ES5
- 문서번호
- 10px
- 0.75px border
- Websocket
- 컴포넌튼
- 클론코딩
- github
- entity
- &연산
- Today
- Total
목록전체 글 (166)
복잡한뇌구조마냥
1. 배경: 일반적인 제네릭 컨테이너의 한계제네릭 컬렉션(List, Map)은 타입 매개변수의 개수가 고정됨.하지만 여러 타입을 한 컨테이너에 안전하게 담고 싶을 때가 있음.예: DB Row, 설정값 저장소, 어노테이션 API 등단순히 Map를 쓰면 타입 캐스팅 필요 + 타입 안전성 상실. Map favorites = new HashMap();favorites.put("String", "hello");favorites.put("Integer", 123);// 잘못된 타입도 들어감 → 런타임 오류 가능favorites.put("Integer", "oops");2. 타입 안전 이종 컨테이너 패턴의 아이디어컨테이너가 아니라 키에 타입 매개변수를 부여하자.즉, Map, Object>를 이용해서 키 자체가 타입 ..
1. JPA란?JPA(Java Persistence API): 자바 진영의 ORM(Object Relational Mapping) 표준 인터페이스객체와 테이블 매핑을 도와주는 스펙 (구현체: Hibernate, EclipseLink 등)SQL 직접 작성 대신 객체 중심으로 데이터베이스 다룸👉 즉, “자바 객체를 DB 테이블과 자동으로 매핑해주는 기술”2. JPA를 쓰는 이유SQL 작성 줄임 → CRUD 대부분 자동 처리객체 모델과 테이블 모델의 불일치(패러다임 불일치) 해결유지보수성, 확장성 향상📌 전통적인 방식 String sql = "INSERT INTO member (id, name) VALUES (?, ?)";PreparedStatement pstmt = conn.prepareStatement..
1. 리플렉션이란?런타임에 클래스, 메서드, 필드, 생성자 등에 접근할 수 있는 자바 API즉, 코드가 실행되는 도중에 객체의 타입을 확인하고 동적으로 동작을 바꿀 수 있음java.lang.reflect 패키지에 포함👉 컴파일 시점에 알 수 없는 클래스/메서드를 런타임에 다룰 수 있다2. 왜 필요한가?프레임워크/라이브러리(예: Spring, JPA) 내부 동작객체 자동 주입, 어노테이션 기반 설정런타임 로딩설정 파일(XML/Properties)에 적힌 클래스명을 읽어 객체 생성테스트/디버깅private 필드 접근, 동적 프록시 생성 등3. 기본 사용법클래스 정보 가져오기 // 3가지 방법Class clazz1 = Class.forName("com.example.Member");Class clazz2 =..
1. 로 타입(Raw Type)이란?제네릭(Generic) 문법에서 타입 매개변수를 지정하지 않은 타입.예:List list = new ArrayList(); // 로 타입List처럼 구체적인 매개변수화 타입을 쓰지 않은 상태.2. 로 타입이 문제인 이유타입 안전성(Type Safety) 손실컴파일러가 타입 검증을 못 하므로 잘못된 타입이 들어가도 컴파일 단계에서 안 잡힘.List list = new ArrayList();list.add("문자열");list.add(123); // 컴파일 OK, 런타임에서만 문제 발생 가능표현력 감소코드에서 어떤 타입을 의도했는지 알 수 없어 가독성↓, 유지보수성↓에러 검출 시점 지연문제를 런타임에서야 발견 → 디버깅 난이도 상승.컴파일러 최적화·도움 불가타입 추론이 안..
요약 “태그 달린 클래스(tagged class)”는 한 클래스 안에 kind 같은 태그값으로 여러 형태를 구분하는 방식.이 방식은 필드/메서드가 뒤섞여 지저분해지고, 생성자·검증·equals/hashCode 같은 공통 로직이 복잡해지며, 실수가 생기기 쉽다.추상 클래스/인터페이스 기반 계층구조로 바꾸면 타입별 필드만 갖게 되고, 컴파일러가 누락/오류를 잡아주며, 가독성과 유지보수성이 크게 좋아진다.현대 자바(17+)라면 sealed 클래스/인터페이스로 더 안전하게 닫힌 계층을 만들 수 있다.1) 태그 달린 클래스가 뭔가요?public class Shape { public enum Kind { CIRCLE, RECTANGLE } private final Kind kind; // CIRCL..
1. SOLID란?SOLID는 로버트 C. 마틴(Robert C. Martin, Uncle Bob)이 정리한 객체 지향 설계 5대 원칙의 앞글자를 딴 용어입니다.목표: 유지보수성, 확장성, 재사용성이 높은 코드 설계 약어원칙이름의미SSRP: 단일 책임 원칙한 클래스는 하나의 책임만 가져야 한다OOCP: 개방-폐쇄 원칙확장에는 열려 있고, 변경에는 닫혀 있어야 한다LLSP: 리스코프 치환 원칙하위 타입은 상위 타입을 대체할 수 있어야 한다IISP: 인터페이스 분리 원칙사용하지 않는 메서드는 만들지 않는다DDIP: 의존 역전 원칙추상화에 의존하고, 구체화에 의존하지 않는다 2. SRP – 단일 책임 원칙 (Single Responsibility Principle)정의한 클래스는 오직 하나의 변경 이유만 가..
1) 서블릿이 뭐고, 왜 쓰나서블릿은 Java로 작성된 서버 사이드 컴포넌트로, 브라우저 요청(HTTP)을 받고 응답(HTML/JSON 등)을 만들어 반환합니다.JSP가 “화면 템플릿”에 가깝다면, 서블릿은 컨트롤러(요청 분기/비즈니스 로직 호출) 역할을 주로 담당합니다.⚠️ Tomcat 10+에서는 패키지가 jakarta.servlet.* 입니다. (Tomcat 9 이하는 javax.servlet.*)환경에 맞춰 import 경로만 바꾸면 됩니다.2) 최소 예제: HelloServlet// Tomcat 10+ (Jakarta) 기준package com.example;import jakarta.servlet.*;import jakarta.servlet.annotation.WebServlet;import ..
1. JSP란 무엇인가?JSP(Java Server Pages)는 Java 기반의 서버 사이드 웹 페이지 기술로, HTML 안에 Java 코드를 삽입해 동적으로 웹 페이지를 생성하는 방식입니다.Servlet보다 더 간단하게 UI와 서버 로직을 합쳐서 구현할 수 있도록 설계되었습니다.2. JSP의 동작 원리JSP 파일은 처음 실행될 때 Servlet으로 변환되고, 이후 컴파일되어 실행됩니다.사용자가 JSP 페이지 요청JSP 엔진이 JSP → Servlet(Java 소스)로 변환변환된 Servlet이 컴파일되어 클래스 파일 생성Servlet이 실행되어 HTML 결과를 브라우저에 응답📌 한 번 변환된 JSP는 변경 전까지 재컴파일되지 않음3. JSP 기본 문법스크립트릿(Scriptlet) 표현식(Expres..