일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 데이터 flow
- series
- UML
- 알고리즘
- 포트앤어댑터 아키텍처
- equals
- 위상정렬
- 파이썬
- 백준
- disjoint set
- 세그먼트 트리
- JPA
- DP
- 스프링
- ddd
- 헥사고날 아키텍처
- 비트마스크
- spring security
- Redis
- 문자열
- 이펙티브 자바
- BFS
- dataframe
- pandas
- docker
- springboot
- java
- dfs
- 다익스트라
- 자바
- Today
- Total
목록전체 글 (95)
코딩못하는사람
문제점 스프링 시큐리티를 활용하기 위해서는 DB에 해쉬로 암호화된 패스워드를 저장해야 한다. 따라서 BCryptPasswordEncoder에 encode 메서드를 통해 해쉬암호화를 사용하여 패스워드를 저장했다. 문제는 패스워드 변경 관련 로직 및 테스트 코드 작성에서 발생했다. @Test public void 회원정보_업데이트_테스트() throws Exception { //given User user = userRepository.findByName("test").orElseThrow(NoSuchUserException::new); UpdatePasswordDTO updatePasswordDTO = new UpdatePasswordDTO("12345", "1234", "1234"); //when use..
아이템40]@Override 애너테이션을 일관되게 사용하라. @Override 애너테이션은 상위 타입 메서드를 재정의했음을 알려준다. 이 애너테이션을 일관되게 사용하면 여러가지 악명높은 버그를 예방해준다. public class Bigram { private final char first; private final char second; public Bigram(char first, char second) { this.first = first; this.second = second; } public boolean equals(Bigram b) { return b.first == first && b.second == second; } public int hashCode() { return 31 * firs..
아이템29] 이왕이면 제네릭 타입으로 만들라 제네릭(generic)이란? 데이터의 타입(data type)을 일반화한다(generalize)는 것을 의미한다. 클래스나 메소드에서 사용할 내부 데이터 타입을 컴파일 시에 미리 지정하는 방법이다. 이렇게 컴파일 시에 타입검사를 미리 수행하면 타입 안정성과 타입 검사에 들어가는 노력을 줄일 수 있다. 클라이언트에서 직접 형변환해야 하는 타입보다 제네릭 타입이 더 안전하고 쓰기 편하다. 따라서 새로운 타입을 설계할 때 형변환 없이 제네릭 타입을 사용해주자. 제네릭으로의 변경이 필요한 코드를 보고 제네릭으로 고쳐보면서 이해해보자. public class Stack { private Object[] elements; private int size = 0; priva..
[아이템15]클래스와 멤버의 접근 권한을 최소화 어설프게 설계된 컴포넌트와 잘 설계된 컴포넌트의 차이는 클래스 내부 데이터와 내부 구현 정보를 외부 컴포넌트로 부터 얼마나 잘 숨겼는지에 의해 결정된다. 잘 설계된 컴포넌트는 모든 내부구현을 숨기고 구현과 API를 깔끔하게 분리해서 서로의 내부 동작방식을 알 필요가 없게된다. 이것을 정보은닉 및 캡슐화라고 부른다. 정보은닉의 장점 시스템 개발 속도 상승 (여러가지 컴포넌트를 병렬적으로 개발 가능) 시스템 관리 비용 절감 (디버깅 및 다른 컴포넌트로 교체하는 부담이 적다) 성능최적화에 도움 소프트웨어 재사용성을 높인다.(외부 의존도가 거의 없고 독자적이라면 낯선 환경에서도 사용가능) 큰 시스템 제작 난이도를 낮춰준다. (전체가 완성되지 않아도 개별 컴포넌트의..