일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
31 |
- 0.5px border
- jwt
- Strict
- 0.25px border
- &연산
- 1px border
- font-size
- Props
- angular
- npm
- 클론코딩
- entity
- 문서번호
- ZOOM
- 전역변수
- github
- TS
- 10px
- Websocket
- 데이터베이스 #try #이중
- 서버리스 #
- 0.75px border
- 컴포넌튼
- 타입스크립트
- literal
- 으
- 당근마켓
- es6
- ES5
- TypeScript
- Today
- Total
목록BE/JAVA (26)
복잡한뇌구조마냥
요약 “태그 달린 클래스(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..
✅ 요약Java에서 Cloneable 인터페이스와 clone() 메서드를 사용하면 객체 복제를 간편하게 구현할 수 있을 것처럼 보입니다. 하지만 clone()은 매우 허술하고, 설계적으로 불완전한 메커니즘이며, 잘못 사용하면 예기치 못한 동작, 불변성 훼손, 깊은 복사 실패, 스택 오버플로우 등 수많은 문제가 발생할 수 있습니다.이 아이템에서는 clone()의 문제점과 안전하게 복제를 구현하는 방법, 그리고 대안으로 복사 생성자/팩터리 사용을 권장하는 이유를 설명합니다.🧨 1. Cloneable의 근본적인 문제Cloneable은 표시(marker) 인터페이스일 뿐, 아무 메서드도 정의하지 않음Object.clone()은 기본적으로 얕은 복사(shallow copy) 만 수행하며, Cloneable을 구..
✅ 요약Java는 가비지 컬렉터(GC)가 메모리를 자동으로 관리해주지만, 프로그래머의 실수로 인해 메모리 누수(Memory Leak) 가 발생할 수 있습니다. 특히, 다 쓴 객체를 참조한 채로 계속 유지하면 GC가 회수하지 못해 성능 저하와 OutOfMemoryError로 이어질 수 있습니다. 이를 방지하기 위해 다 쓴 참조는 명시적으로 해제하거나, 유효 범위를 벗어나게 하여 참조를 제거해야 합니다. 🔍 1. 왜 메모리 누수가 발생할까?Java는 명시적인 free() 호출이 없기 때문에, 객체가 더 이상 사용되지 않더라도 참조만 유지되면 GC가 회수하지 않습니다.즉, 다음과 같은 경우는 모두 메모리 누수로 이어질 수 있습니다:컬렉션(List, Map 등)에 넣은 뒤 제거하지 않음콜백이나 리스너 등록 후..
☕ 자바 스트림과 람다 표현식의 간소화 과정람다 표현식을 처음 접하면 -> 기호에 낯설 수도 있지만, 반복적인 코드를 훨씬 간결하고 읽기 쉽게 만들 수 있습니다. 이번 글에서는 반복문을 스트림과 람다로 점진적으로 간소화해보는 과정을 소개합니다. ✅ 1. 전통적인 반복문for (int i = 1; i 익숙하지만 반복 변수를 직접 관리해야 합니다.병렬 처리나 함수형 스타일로 확장하기 어렵습니다. ✅ 2. 스트림 사용 + 익명 클래스IntStream.rangeClosed(1, 5) .forEach(new IntConsumer() { @Override public void accept(int value) { System.out.println(value + "번..
✅ 개요Composition(구성) 은 객체지향 프로그래밍에서 객체 간 관계를 형성하는 중요한 설계 기법입니다.보통 자바에서 객체 간 재사용을 구현할 때 흔히 상속(inheritance)을 떠올리지만, Composition은 상속보다 더 유연하고 유지보수가 쉬운 설계 방식으로 권장되는 경우가 많습니다.🔍 1. Composition이란?Composition이란 다른 객체를 자신의 필드로 포함하여 기능을 위임(Delegate)하는 방식입니다.즉, "has-a" 관계를 나타냅니다.class Engine { public void start() { System.out.println("Engine starting..."); }}class Car { private Engine engin..