분류 전체보기137 [알고리즘] HashMap, TreeMap, HashSet, TreeSet 1. HashMap 해시 함수란, 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수이다. 해시 함수에 의해 얻어지는 값을 해시 값, 해시 코드, 해시 체크섬 혹은 해시라고 부른다. 보통 해시함수는 해시값이 다르다면 서로 다른 데이터를 가지고 있어야 하지만, 해시 값을 결정하는 함수에 따라서 서로 다른 데이터가 하나의 해시값에 저장이 되는 경우도 있다. 이런 경우를 해시 충돌이라고 한다. 해시 충돌이 빈번하게 발생하면 효율성을 떨어뜨리기 때문에 해시 충돌을 최소화하는 것이 좋다. 파이썬에서는 이러한 hashmap을 간단하게 dictionary의 형태로 나타낼 수가 있다. hashmap은 (key, value)의 쌍으로 이루어져 있기 때문에 삽입, 삭제, 탐색 등 모든 함수의 시간복잡도가 전부 O.. 2022. 2. 12. [Spring Boot] IoC, DI, 그리고 컨테이너 0. 제어의 역전 IoC (Inversion of Control) 컨테이너나 AppConfig처럼 Application의 설정 정보를 담은 클래스가 없으면 클라이언트 구현 객체(여기서는 서비스)가 스스로 필요한 서버 구현 객체를 생성하고 연결하고 실행해야 했다. '''OrderServiceImpl.java''' public class OrderServiceImpl implements OrderService { private final MemberRepository memberRepository = new MemoryMemberRepository(); //private final DiscountPolicy discountPolicy = new FixDiscountPolicy(); private final .. 2022. 1. 21. [Spring Boot] AOP 0. AOP가 필요한 상황 만약 모든 메소드의 호출 시간을 알고 싶으면 어떻게 해야 할까? MemberService에 정의된 각각의 메소드의 호출 시간을 정확히 알고 싶어졌다. 즉, 정확히 회원 가입과 회원 조회에 걸리는 시간을 찍어보고 싶은 것이다. AOP를 모르는 상황에서 이를 해결하기 위해서는 각 메소드마다 정의된 것을 조금씩 바꿔줘야 한다. 아래는 회원가입 메소드에 호출 시간을 계산하는 기능을 추가한 것이다. public class MemberService { /** * 회원가입 */ public Long join(Member member) { long start = System.currentTimeMillis(); try { validateDuplicateMember(member); //중복 회.. 2022. 1. 20. [Spring Boot] JdbcTemplate, JPA, 스프링 데이터 JPA Spring에서 DB에 접근하는 방법은 여러 개가 있는데, 전에 봤던 순수 JDBC를 쓸 수도 있지만, JdbcTemplate이나 JPA, 스프링 데이터 JPA를 이용하는 방법도 있다. 각각의 차이는 다음과 같다. JDBCTemplate을 이용하면 반복된 코드가 많이 줄어들지만, SQL을 직접 작성해야 한다. JPA를 이용하면 기본적인 CRUD하는 데에 내가 쿼리를 직접 작성할 필요가 없다. (select 할 때만 JPQL을 짜야 한다) 스프링 데이터 JPA까지 오니까 아예 구현 클래스를 작성할 필요 없이 인터페이스만으로 개발이 끝나 버렸다. 웹 MVC, 데이터 접근 기술, ORM 기술도 되게 중요하다. 1. JDBCTemplate 이용하는 법 다음의 코드를 JdbcTemplateMemberReposit.. 2022. 1. 20. 도커 (Docker) 프로젝트를 하면서 도커에 대해서 이름을 들어보게 되었다. 배포와 관련해서 사용되는 거라는 건 알겠는데, 정확히 어떤 역할을 하는지는 헤매고 있었다. 이번에 새로 수강하게 된 강의에서 도커를 살짝 다루기도 하고, 최근에 노마드 코더 유투브에서 도커에 대한 영상을 찾아보기도 하면서, 구체적인 사용법까지는 아니더라도 어디에 사용되는지 정도는 이해하게 되었다. 도커는 환경의 차이를 극복하기 위해서 만들어졌다. 예를 들어 내가 개발한 환경은 윈도우이고, 개발한 것을 올릴 서버는 리눅스이면 OS의 차이로 인해서 문제가 생길 수 있다. 도커는 이런 문제를 해결해준다. 서로 다른 OS에서도 똑같이 동작할 수 있도록 해주는 것이다. 이를 위해서는 먼저 내 컴퓨터인 윈도우에 도커를 설치한다. 그리고 나서 서버에도 도커를 .. 2022. 1. 18. [Spring Boot] 스프링 DB 접근 기술 지난 블로그에 이어서 같은 예제로 외부 DB를 연결하고 컨테이너에 존재하던 메모리 구현체를 DB로 바꿔 꼈다. 그리고 JDBC(Java DataBase Connectivity : 자바에서 DB 프로그래밍을 하기 위해 사용하는 API)를 이용해서 리포지토리들을 구현해줬다. 오늘 수업에서는 순수 JDBC를 이용한 것으로, 약 20년 전에는 이런 식으로 코딩을 했다고 한다. 그래도 작동 원리 이해?를 위해서 공부해보고 넘어갔다. 1. H2 데이터 베이스 설치 H2는 개발이나 테스트 용도로 가볍고 편리하게 사용할 수 있는 DB로, 웹 화면을 제공한다. 먼저 아래 사이트에 가서 H2 데이터 베이스를 설치한다. 주의할 점은 1.4.200 버전을 설치해야 한다는 것이다. 최신 버전은 일부 기능이 정상적으로 작동하지 .. 2022. 1. 14. 이전 1 ··· 6 7 8 9 10 11 12 ··· 23 다음