제어의 역전 (Ioc)
제어의 역전 (Inversion Of Control)
제어의 역전 (Inversion Of Control)
의존관계 주입(DI)
싱글톤 레지스트리와 오브젝트 스코프
🔗 직렬화 프록시 패턴을 이용하면 Serialziable 구현의 위험을 크게 줄여줄 수 있다.
🔗 아이템 3에서 싱글턴 패턴을 설명하며 다음 예를 보여주었다.
🔗 아이템 50에서는 불변인 날짜 클래스를 만드는 데 가변인 Date 필드를 이용했다.
🔗 개발 일정에 쫓기는 상황에서는 API 설계에 노력을 집중하는 편이 나을 것이다.
🔗 Serializable을 구현하면 릴리즈 한 뒤에는 수정하기 어렵다.
🔗 자바 직렬화의 위험성
🔗 정확성이나 성능이 쓰레드 스케줄러에 따라 달라지는 프로그램이라면 다른 플랫폼에 이식하기 어렵다.
🔗 지연 초기화(Lazy Initialization)는 필드의 초기화 시점을 그 값이 처음 필요할 때까지 늦추는 기법이다.
🔗 한 메서드를 여러 스레드가 동시에 호출할 때 그 메서드가 어떻게 동작하느냐는 해당 클래스와 이를 사용하는 클라이언트 사이의 중요한 계약과 같다.
🔗 wait와 notify는 올바르게 사용하기가 아주 까다로우니 고수준 동시성 유릴리티를 사용하자.
🔗 java.util.concurrent 패키지는 실행자 프레임워크(Executor Framework)라고 하는 인터페이스 기반의 유연한 태스트 실행 기능을 담고 있다.
🔗 응답 불가와 안전 실패를 피하려면 동기화 메서드나 동기화 블록 안에서는 제어를 절대로 클라이언트에 양도하면 안 된다.
🔗 synchronized 키워드는 해당 메서드나 블록을 한번에 한 스레드씩 수행하도록 보장한다.
🔗 테트로미노 14500번 문제
🔗 리모컨 1107번 문제
🔗 일곱 난장이 2309번 문제
🔗 연속합2 13398번 문제
🔗 사탕 게임 3085번 문제
🔗 가장 긴 바이토닉 부분 수열 11054번 문제
🔗 가장 긴 감소하는 부분 수열 11722번 문제
🔗 가장 큰 증가 부분 수열 11055번 문제
🔗 정수 삼각형 1932 문제
🔗 와인시음백준 2156문제
🔗 동물원 백준 1309 문제
🔗 스티커 백준 9465문제
🔗 RGB 거리 백준 1149 문제
🔗 오르막 수 백준 11507문제
🔗 API 설계자가 메서드 선언에 예외를 명시하는 까닭은, 그 메서드를 사용할 때 적절한 조치를 취해달라는 것이다.
🔗 호출된 메서드가 실패하더라도 해당 객체는 메서드 호출 전 상태를 유지해야 한다.
🔗 1,2,3 더하기 3 백준 15988문제
🔗 예외의 toString 메서드에 실패 원인에 관한 정보를 가능한 한 많이 담아 반환하는 일은 아주 중요하다.
🔗 합분해 백준 2225문제
🔗 제곱수의 합 백준 1699 문제
🔗 연속합 백준 1912 문제
🔗 메서드가 던지는 예외는 그 메서드를 올바로 사용하는 데 아주 중요한 정보다.
🔗 상위 계층에서는 저수준 예외를 잡아 자신의 추상화 수준에 맞는 예외로 바꿔 던져야 한다.
🔗 숙련된 프로그래머는 그렇지 못한 프로그래머보다 더 많은 코드를 재사용한다
🔗 검사 예외를 제대로 활용하면 API와 프로그램의 질을 높일 수 있다.
🔗 가장 긴 증가하는 부분 수열4 백준 14002문제
🔗 가장 긴 증가하는 부분 수열 백준 11053문제
🔗 자바의 문제 상황을 알리는 타입(throwable)
🔗 예외를 사용한 반목문의 해악
🔗 이친수 백준 2193문제
🔗 쉬운 계단 수 백준 10844문제
🔗 자바의 명명 규칙은 크게 철자와 문법, 두 범주로 나뉜다.
🔗 모든 사람이 마음 깊이 새겨야 할 최적화 격언 세가지를 알아보자
🔗 네이티브 메서드는 뭐야?
🔗 리플렉션 기능 (java.lang.reflect)를 이용하면 프로그램에서 임의의 클래스에 접근할 수 있다.
🔗 적합한 인터페이스만 있다면 매개변수뿐 아니라 반환값, 변수, 필드를 전부 인터페이스 타입으로 선언하라.
🔗 문자열 연결 연산자로 문자열 n개를 잇는 시간은 n^2에 비례한다.
🔗 문자열은 다른 값 타입을 대신하기에 적합하지 않다.
🔗 자바의 데이터 타입은 크게 두 가지로 나눌 수 있다.
🔗 float와 double 타입은 특히 금융 관련 계산과는 맞지 않는다.
🔗 표준 라이브러리를 사용하면 그 코드를 작성한 전문가의 지식과 앞서 사용한 다른 프로그래머들의 경험을 활용할 수 있다.
🔗 while 문 보다는 낫지만 가장 좋은 방법이이 아닌 관용구들
🔗 지역변수의 범위를 줄이는 가장 강력한 기법은 ‘가장 처음 쓰일때 선언하기’다
🔗 1,2,3 더하기 5 백준 15990문제
🔗 API를 쓸모 있게 하려면 잘 작성된 문서도 곁들여야 한다.
🔗 자바 8 이전 메서드가 특정 조건에서 값을 반환 할 수 없을 때 취할 수 있는 선택 두 가지
🔗 null 반환은 나빠!
🔗 가변 인수는 인수 개수가 정해지지 않았을 때 아주 유용하다.
🔗 재정의한 메서드는 동적으로 선택되고, 다중정의한 메서드는 정적으로 선택된다.
🔗 메서드 이름을 신중히 짓자
🔗 클라이언트가 불변식을 깨뜨리려고 혈안이 되어있다고 가정하고 방어적으로 프로그래밍 하라
🔗 카드 구매하기2 백준 16194문제
🔗 카드 구매하기 백준 11052문제
🔗 2 x n 타일링 백준 11726문제
🔗 1로 만들기 백준 1463문제
🔗 골드바흐의 파티션 백준 17103문제
🔗 숨바꼭질6 백준 17087문제
🔗 2진수 8진수 변환 백준 1373문제
🔗 소수 구하기 백준 1929문제
🔗 소수 찾기 백준 1978문제
🔗 골드바흐의 추측 백준 1929문제
🔗 최대공약수 합 9613문제
🔗 최대공약수 최소공배수 백준 2609문제
🔗 팩토리얼의 0의 개수 백준 1676문제
🔗 단어 뒤집기2 백준 17413문제
🔗 단어 뒤집기 백준 9093문제
🔗 오큰수 백준 17298문제
🔗 수열 백준 1874 문제 [스택]
🔗 괄호 백준 9012 문제 [스택]
🔗 쇠막대기 백준 10799문제
🔗 에디터 백준 1406 문제 [스택]
🔗 오류는 가능한 한 빨리 (발생한 곳에서) 잡아야한다는 일반 원칙의 한 사례
🔗 플라이웨이트 (flyweight) 패턴이란?
🔗 프록시 (Proxy) 패턴이란?
🔗 프록시 (Proxy) 패턴이란?
🔗 Java Version Up? Concurrency Programming Still Difficult
🔗 스트림의 등장 :: 원소 시퀀스 반환 메서드의 반환타입 혼란 유래
🔗 스트림은 함수형 프로그래밍에 기초한 패러다임이다
🔗 스트림 API가 제공하는 추상 개념의 핵심 두가지
🔗 합성 (Composite) 패턴이란?
🔗 템플릿 메소드 패턴 매력의 반감 : 람다의 등장
🔗 어탭터 (Adapter) 패턴이란?
🔗 마커 인터페이스(Marker Interface)
🔗 보통의 프로그래머에게 가장 중요한 애너테이션 @Override 메소드
🔗 명명 패턴의 전통
🔗 열거 타입은 모든 상황에서 타입 안전 열거 패턴보다 우수하지만 단 하나의 예외가 있다.
🔗 ordinal 인덱싱
🔗 구닥다리 기법 feat 비트 필드 열거 상수
🔗 ordinal 메소드의 유혹
🔗 프로토타입 (Prototype) 패턴이란?
🔗 타입 안전 이종 컨테이너 패턴이란?
🔗 가변인수(varargs) 메소드와 제네릭은 베프가 될 수 없어!!
🔗 불공변 방식보다 유연한 무언가가 필요해 !!@@
🔗 메소드도 제네릭으로 만들 수 있어@@
🔗 제네릭 관련 용어
🔗 배열과 제네릭 타입의 차이
🔗 비검사 경고
🔗 제네릭 타입 (generic Type)
🔗 소스 파일 하나에 톱 레벨 클래스 여러 개 두기
🔗 태그 달린 클래스란?
🔗 인터페이스는 오직 이 용도로만 사용해야해 !!
🔗 디폴트 메소드 두둥 등장!!
🔗 인터페이스 (interface) , 추상 클래스 (abstract class)
🔗 상속을 고려한 설계와 문서화가 정확히 무슨 말이야?
상속은 코드를 재사용하는 강력한 수단이지만, 항상 최선은 아니다.
불변클래스란 간단히 말해 그 인스턴스의 내부 값을 수정할 수 없는 클래스다.
🔗 public 클래스에서의 public 필드를 통한 데이터 접근의 단점
어설프게 설계된 컴포넌트와 잘 설계된 컴포넌트의 가장 큰 차이는 바로 클래스 내부 데이터와 내부 구현 정보를 외부 컴포넌트로부터 얼마나 잘 숨겼느냐이다.
🔗 Comparable 인터페이스의 유일무이한 메서드 compareTo
Cloneable은 복제해도 되는 클래스임을 명시하는 용도의 믹스인 인터페이스(mixin interface)지만,
🔗 모든 하위 클래스에서 toString 메소드를 항상 재정의하라.
🔗 equals를 재정의한 클래스 모두에서 hashCode로 재정의해야 한다.
equals 메소드는 기본적으로 최상위 객체인 Object에서 제공하는 메소드로서 재정의를 염두에 두고 설계된 것이다. 때문에 재정의 시 지켜야 하는 일반 규약이 명확이 정의가 되어있다.
자바 라이브러리에는close 메소드를 호출해 직접 닫아줘야 하는 자원이 많다.
자바는 아래와 같이 두 가지 객체 소멸자를 제공한다.
자바는 메모리를 자동으로 관리해주는 가비지 컬렉터를 지원하는 언어이다.
똑같은 기능의 객체를 매번 생성하기보다는 객체 하나를 재사용하는 편이 나을때가 많다.
많은 클래스가 하나 이상의 자원에 의존한다.
객체 지향적으로 사고하지 않는 이들이 종종 남용하는 경우가 있지만, 정적 메서드와 정적필드만을 담은 클래스는 나름의 쓰임새가 있다. 아래의 예시를 보자
정적팩토리 메소드와 생성자에는 똑같은 제약이 하나 있다.
클래스는 클라이언트에 public 생성자 대신 (혹은 생성자와 함께) 그 클래스의 인스턴스를 반환하는 단순한 정적 팩토리 메서드를 제공할 수 있다.
빌더 (Builder) 패턴이란?
추상 팩토리 (Abstract Factory) 패턴이란?
팩토리 (Factory) 패턴이란?
싱글톤(Singleton) 패턴이란?
Step 1 : 다형성과 추상 타입
디자인 패턴(Design Pattern)이란?
Step 1: 객체와 테이블 매핑
Step 1: Filter
이번 블로깅에서는 JPA가 내부적으로 어떻게 동작하는지 작성할 것이다.
Step 1: JPA? - Java Persistence API
Step 1 : 객체의 핵심은 기능을 제공하는 것
Authentication Manger
Authentication Flow
이번엔 가벼운 회원 관리 프로그램을 만들어 볼 것이다.
SecurityContextPersistenceFilter
SecurityContext
Step 1: 정적 컨텐츠
필터 초기화와 다중 설정 클래스
Authentication
Step 1: Welcome Page 만들기
CSRF (사이트 간 요청 위조 Cross-site request forgery)
DelegatingFilterProxy
AuthenticationException
이클립스 기준입니다.
캐시 제어 헤더
권한 설정 및 표현식
SessionManagementFilter
캐시 시간 초과
캐시 기본동작
동시 세션 제어
인증
RememberMeAuthenticationFilter
AnonymousAuthenticationFilter
일반정보
Remember Me
Security Logout
HTTP Header
인증 API - FORM 인증 방식
HTTP 주요 상태코드
사용자 정의 보완 기능 구현
프로젝트 생성
API URI 설계 (Uniform Resource Identifier)
HTTP (HyperText Transfer Protocol)
URI (Uniform Resource Identifier)
[인터넷 통신]
Step 1: 스프링의 동작 과정
Step 1: pom.xml에 maria(mysql) db 관련 설정
Step 1: 프로젝트 생성
springboot와 jpa, thymeleaf를 이용한 게시판을 만들어 보겠습니다.