전체 글

안녕하세요 :) 우아한테크코스 5th BE 하디입니다 잘 부탁드립니다 !
환경Spring framework 6.2.6AOP 의 동작@Transactional annotation은 어떻게 동작하는걸까? @Transactional 를 사용하면 AOP 를 이용해서 실제 메서드가 실행되기 전과 후에 트랜잭션 관련 행위를 수행한다. 이러한 행위는 TransactionInterceptor 에 의해서 수행된다. TransactionInterceptor 는 공식문서에서 선언적 트랜잭션 관리를 위한 AOP Alliance MethodInterceptor 라고 정의되어 있다. 즉, 메서드 호출을 가로채서 트랜잭션에 대한 부가적인 처리를 한다고 볼 수 있다.TransactionInterceptor 는 메서드의 호출을 가로챈다. 그리고 내부적으로 TransactionAspectSupport 의in..
· 네트워크
안녕하세요. 오랜만에 글을 써보네요. 오늘은 HTTPS 에 대해서 알아보려고 합니다 ! HTTPS 에 대해 글을 쓰는 이유는 다음과 같은데요. 팀 프로젝트의 HTTPS 적용의 필요성 네트워크 스터디를 하는 도중 HTTPS가 키워드로 등장 평소에 궁금했던 내용이기도 하였고 이참에 제대로 알아보자고 생각하여 공부하고 정리해보았으니 혹시 잘못된 내용이 있다면 댓글로 부탁드립니다. 1. HTTPS의 필요성 HTTP와 HTTPS의 차이점이 무엇일까요 ? (1). 메시지 암호화 사진출처: https://www.geeksforgeeks.org/difference-between-http-and-https/ 위의 그림을 보시면 알 수 있듯이 HTTP는 메시지를 암호화하지 않고 전달하기 때문에 중간에 탈취당하면 Plain..
저번 글에서는 List.CopyOf에 대해서 다뤘는데요. 이전 글: https://zerotoinfinite.tistory.com/9 Java - List의 복사 (2): List.copyOf 리스트의 복사 두 번째인 List.copyOf에 대해 알아보자! 저번 글에서 Collections.unmodifiableList에 대해 다뤘으므로 이 글을 읽기 전에 먼저 읽으시면 이해가 잘 될 겁니다! 이전 글: https://zerotoinfinite.tisto zerotoinfinite.tistory.com 오늘은 리스트 내 원소(객체)들 까지 복사하여 새로운 리스트를 만드는 법에 대해 알아보겠습니다!! 방법만 아는 것은 의미가 없다고 생각합니다. 언제 어느 상황에 리스트 내 객체까지 복사해야하는지를 알아야됩..
리스트의 복사 두 번째인 List.copyOf에 대해 알아보자! 저번 글에서 Collections.unmodifiableList에 대해 다뤘으므로 이 글을 읽기 전에 먼저 읽으시면 이해가 잘 될 겁니다! 이전 글: https://zerotoinfinite.tistory.com/8 Java - List의 복사 (1): Collections.unmodifiableList 우아한 테크코스를 진행하면서 받았던 리뷰와 찾아서 공부했던 내용을 바탕으로 적었다. 공부하는 건 많아지는데 쉽게 까먹을까 봐 블로그에 쓰기로 다짐.. 총 3가지의 리스트 복사에 대해서 다 zerotoinfinite.tistory.com 리뷰어님의 리뷰를 받아 리팩토링을 한 나의 코드는 다음과 같았다. public List getCars() ..
우아한 테크코스를 진행하면서 받았던 리뷰와 찾아서 공부했던 내용을 바탕으로 적었다. 공부하는 건 많아지는데 쉽게 까먹을까 봐 블로그에 쓰기로 다짐.. 총 3가지의 리스트 복사에 대해서 다룰 것이다! Collections.unmodifiableList List.copyOf stream을 활용한 deepCopy 오늘은 첫번째로 Collections.unmodifiableList에 대해 다룰 것이다. 문제 상황 public List getCars() { return Collections.unmodifiableList(cars); } 처음 리뷰요청을 하였을 때 나의 코드는 위와 같았다. 사실 저렇게 쓴 이유는... 다들 저렇게 써서.. 였던 것 같다. 리뷰어님은 저 코드를 보고 이렇게 말씀하셨다. 내부의 car..
Java - Iterator 목차 Iterator 란? Iterator Method Iterator, get 시간 측정 1. Iterator 란? Iterator란 Collection에 저장된 데이터에 접근하는데 사용되는 인터페이스이다. 즉 List, Set, Map등과 같은 컬렉션의 데이터에 접근할 수 있다. 내부 구조가 다르지만 표준화된 인터페이스를 제공하면서 공통적으로 데이터에 접근할 수 있는 것이다. List list = new ArrayList(); Iterator iterator = list.iterator(); 2. Iterator Method hasNext() 다음 원소가 있으면 true, 없으면 false를 반환한다. 주로 while문과 함께 쓴다. (다음 원소가 있으면 로직 진행) Li..
Java - Collections Class 목차 Collections 사용 이유 Collections 기능 1. Collections 사용 이유 Collections는 static method를 가진 class이다. 인스턴스를 생성하지 않고도 method를 가져다 쓸 수 있다. List, Set, Map을 등을 다루는 method들이 정의 되어 있기 때문에 따로 직접 구현을 하지 않고 사용할 수 있다. 대표적으로 List를 정렬하는 method인 Collection.sort()가 있다. 즉 Collection Framework를 다룰 때 유용한 method를 제공한다. 2. Collections 기능 Collections Class에는 다양한 기능이 있지만 자주 쓰는 기능에 대해서 알아보도록 합시다!!..
Java - Map 목차 Map의 사용 이유 Map의 구현체 HashMap의 생성자 HashMap의 기능 1. Map의 사용 이유 Map은 형태로 데이터를 저장한다. 연관 있는 데이터 끼리 묶어서 저장하고 싶다면, Map을 고려할 만 하다. Key는 중복될 수 없지만 , Value는 중복될 수 있다. 2. Map의 구현체 HashMap 들어오는 데이터에 대한 hashCode를 기반으로 해시 값이 같은 값을 Entry 배열에 저장한다. 데이터를 정렬하지 않는다. TreeMap RedBlack Tree를 기반으로 데이터를 저장 및 관리한다. Key 값을 기준으로 정렬한다. 3. HashMap의 생성자 HashMap() 새로운 빈 HashMap을 생성한다. Capacity는 16, load factor는 0...
Java - Set 목차 Set 사용 이유 및 특징 Set의 구현체 HashSet 생성자 HashSet 기능 Hash 충돌 1. Set 사용 이유 및 특징 Set은 중복된 원소를 갖지 않는다는 특성이 있다. 특정한 순서를 가지고 있지 않다. 중복을 제거해야 하는 상황이라면 Set을 고려할 만 하다. 2. Set의 구현체 HashSet Set은 인터페이스 이므로 구현체인 HashSet을 통해 객체를 생성한다. Set set = new HashSet(); 이 외에도, LinkedHashSet, TreeSet 등 다양한 구현체가 있다. 3. HashSet 생성자 HashSet() 새로운 빈 Set을 생성한다. 내부적으로 HashMap을 쓰는데, capacity (16), load factor(0.75) 이다...
Java - 리스트(List) 목차 List 사용 이유 List의 구현체 ArrayList 생성자 ArrayList 기능 1. 배열이 아닌 List를 사용하는 이유 배열은 크기가 정해져 있지만 List는 크기를 마음대로 조절할 수 있다. 구현체 안에 다양한 method들을 사용할 수 있다. 2. List의 구현체 List는 인터페이스다. 즉, 인터페이스를 구현한 구현체가 필요하다. List의 구현체는 다음과 같다. ArrayList LinkedList 이 외에도 List의 구현체는 다양하다. 대표적으로 쓰이는 ArrayList를 알아보도록 하자. 3. ArrayList 생성자 (Constructor) ArrayList() List list = new ArrayList(); 기본적으로 capacity가 1..