- nginx
- 데이터베이스
- Docker
- 스프링부트
- spring mvc
- 스프링
- springboot
- Django
- join
- spring
- 문자열
- spring security 6
- @transactional
- java
- sql
- PYTHON
- Git
- select
- session
- AWS
- ORM
- jpa
- 자바
- mysql
- string
- spring boot
- 프로그래머스
- DI
- SSL
- 1차원 배열
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
목록java (38)
개발하는 자몽
지난 포스팅에 이어서 작성합니다.2024.10.02 - [Java] - Java/Spring 테스트 - 1 의존성의존성컴퓨터 공학에서 말하는 의존성(Dependency)은 결합(Coupling)과 같은 의미로, 다른 객체의 함수를 사용하는 상태를 말함 ⇒ A는 B를 사용하기만 해도 의존한다고 할 수 있음의존성을 약하게 만드는 기술 중 하나가 의존성 주입필요한 값을 `new`해서 직접 인스턴스화하는 것이 아닌 외부에서 넣어주는 것`new`를 이용하여 인스턴스화 하는 것은 하드 코딩의존성 주입은 의존성을 약화시키는 것, 의존성을 완전히 없애는 방식이 아님의존성 제거 == 객체 간의 협력 부정 / 시스템 간의 협력 부정대부분의 디자인 패턴이나 설계는 어떻게 하면 의존성을 약화시킬 수 있는지 고민한 결과..
이 글은 아래 인프런 강의를 듣고 기록을 남기고자 작성하였습니다. Java/Spring 테스트를 추가하고 싶은 개발자들의 오답노트 강의 | 김우근 - 인프런김우근 | Spring에 테스트를 넣는 방법을 알려드립니다! 더 나아가 자연스러운 테스트를 할 수 있게 스프링 설계를 변경하는 방법을 배웁니다., 프로젝트 설계를 발전시키는 테스트의 본질을 짚www.inflearn.com 🔖목차🔖TDD테스트란테스트TDD장단점개발자의 고민테스트 코드의 필요성좋은 아키텍처란필요성테스트 3분류개념 TDD회귀 버그(Regression Bug) → 테스트 자동화테스트 추가소프트웨어의 내적 품질 향상 O, 사용자가 체감할 수 있는 외적 품질 향상 X가시적 성과 지표 → 커버리지(Coverage) 비결정적인 테스트테스트를..
`new Integer(int)`는 새로운 객체 인스턴스를 매번 생성한다. `Integer.valueOf(int)`은 지정된 `int` 값을 나타내는 `Integer` 인스턴스를 반환한다.새로운 `Integer` 인스턴스가 필요한 경우가 아니라면, 일반적으로 생성자 `Integer(int)` 보다 해당 메서드를 우선적으로 사용하는 것이 메모리 측면에서 권장된다. 이는 자주 요청되는 값을 캐싱하여 더 나은 공간 및 시간 성능을 제공할 가능성이 높기 때문이다. 다음은 예시 코드다.public static void main(String[] args) { Integer a = new Integer(10); Integer b = new Integer(10); System.out.p..
백준에서 DP의 기초 문제인 1463번을 풀어보았다. 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 문제 풀이 해당 문제를 보고 어떻게 DP로 풀어야겠다! 는 생각이 바로 들진 않았고, 처음에 그냥 무작정 반복문과 if-else의 조합으로 풀었다. 실패했다. if-else가 아닌 이유 if-else가 아닌 모든 경우의 연산을 시도하고 가장 작은 연산 횟수를 택해야 하기 때문에 모두 if로 행하고 Math.min으로 비교했을 때 가장 작은 값을 택한다. 동적 계획법으로 풀 수 있는 이유 여러 해설을 봤는데 가장 이해가 잘 되는 글은 아래 블로그였다. 백준 알고리즘 1463번 문제풀이 1로 만들기 문제 정수 X에 사용할 수 ..
스프링 핵심 원리 - 고급편 - 인프런 | 강의 스프링의 핵심 원리와 고급 기술들을 깊이있게 학습하고, 스프링을 자신있게 사용할 수 있습니다., - 강의 소개 | 인프런 www.inflearn.com 섹션 5. 동적 프록시 기술 - 리플렉션 리플렉션에 대해 정리해보자. JDK 동적 프록시를 이해하기 위해서는 리플렉션(Reflection)을 알아야 한다. 이 기술은 JDK 동적 프록시와 마찬가지로 자바에서 제공한다. 리플렉션을 이용하면 클래스나 메서드의 메타정보를 동적으로 획득하고, 코드도 동적으로 호출할 수 있다. @Slf4j public class ReflectionTest { @Test void reflection0() { Hello target = new Hello(); //공통 로직1 시작 log..
스프링 핵심 원리 - 고급편 - 인프런 | 강의 스프링의 핵심 원리와 고급 기술들을 깊이있게 학습하고, 스프링을 자신있게 사용할 수 있습니다., - 강의 소개 | 인프런 www.inflearn.com 섹션 3. 템플릿 메서드 패턴과 콜백 패턴 오늘 공부한 내용을 간단하게 정리해 보자. 템플릿 메서드 패턴 전략 패턴 템플릿 콜백 패턴 템플릿 메서드 패턴(Template Method Pattern) 좋은 설계는 변하는 것과 변하지 않는 것을 분리하는 것이다. 이 둘을 분리하여 모듈화를 한다. 템플릿 메서드 패턴은 이런 문제를 해결한다. GOF 디자인 패턴 - 템플릿 메서드 패턴 작업에서 알고리즘의 골격을 정의하고 일부 단계를 하위 클래스로 연기합니다. 템플릿 메서드를 사용하면 하위 클래스가 알고리즘의 구조를..
동시성 문제와 쓰레드 로컬이 무엇인지 간단하게 정리해 보자. 동시성 문제 아래 코드에는 store라는 필드 변수와 해당 변수에 매개 변수를 저장하는 bizLogic() 메서드가 있다. 해당 필드 변수를 저장하고 조회하는 bizLogic 메서드에 여러 쓰레드가 동시에 접근하면 store의 값은 어떻게 될까? @Slf4j class FieldBiz { private String store; //필드 변수 public String bizLogic(String s) { log.info("저장 전 : store={} s={}", store, s); store = s; sleep(1000); log.info("저장 후 : store={} s={}", store, s); return store; } private v..
스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 - 인프런 | 강의 웹 애플리케이션 개발에 필요한 모든 웹 기술을 기초부터 이해하고, 완성할 수 있습니다. MVC 2편에서는 MVC 1편의 핵심 원리와 구조 위에 실무 웹 개발에 필요한 모든 활용 기술들을 학습할 수 있 www.inflearn.com 섹션 6. 로그인 처리1 - 쿠키, 세션 목표 로그인 상태를 유지하기 위해 쿠키(Cookie)를 사용해 보고 크롬의 개발자도구를 이용하여 쿠키와 세션을 확인해 보자. HTTP 요청은 무상태(stateless)이기 때문에 클라이언트를 확인하려면 따로 방법이 필요하다. 이 방법이 바로 쿠키이다. 1. 클라이언트가 서버에게 로그인 요청을 전송한다. 2. 서버는 요청 처리 시 쿠키를 생성하여 여기에 클라이언트를 확인..
해당 메서드는 매개변수로 받은 클래스가 특정 클래스를 구현 또는 상속했는지 boolean 값으로 결과를 반환한다. public class ItemValidator implements Validator { @Override public boolean supports(Class clazz) { return Item.class.isAssignableFrom(clazz); } ... } 위 코드를 예시로 보면 clazz가 Item 클래스를 구현 또는 상속했는지 확인한다. ==으로 확인하는 것보다 해당 메서드를 사용하여 검증하는 방식이 좋다.
이 글은 김영한 님의 "스프링 DB 1편 - 데이터 접근 핵심 원리" 강의에 기반하여 쓰였습니다. 스프링이 제공하는 예외 추상화를 이해하기 위해서는 자바 기본 예외에 대한 이해가 필요하다. 자바의 모든 객체의 최상위 부모는 object이다. 따라서 예외의 최상위 부모도 object이다. Throwable은 최상위 예외로 하위에 Exception과 Error가 있다. Error는 애플리케이션에서 복구가 불가능한 시스템 예외로 애플리케이션 개발자는 이 예외를 잡으려고 해서는 안된다. 상위 예외를 catch로 잡으면 그 하위 예외까지 함께 잡는다. 따라서 애플리케이션 로직에서는 Throwable 예외도 잡으면 안 되는데, Error 예외도 함께 잡을 수 있기 때문이다. 애플리케이션 로직은 이러한 이유로 Exc..