[Weekly Paper] AOP(Aspect Oriented Programming)란? Spring에서 AOP가 필요한 이유와 사용 방법
·
카테고리 없음
AOP(관점 지향 프로그래밍)란? 공통 관심사를 분리하여 코드의 재사용성과 유지보수성을 향상시키는 것.AOP는 횡단 관심사(cross-cutting concerns)를 분리하여 모듈성을 높이는 프로그래밍 패러다임이다.AOP가 필요한 이유- 코드 중복 제거: 로깅, 트랜잭션 관리, 보안, 예외 처리 같은 기능은 여러 클래스에서 반복적으로 사용된다. (실행 시간 측정 등...) AOP를 활용하면 이러한 중복을 제거하고 유지보수성을 높일 수 있다.- 관심사의 분리: 핵심 비즈니스 로직과 부가적인 기능을 분리하여 코드의 가독성과 재사용성을 높일 수 있다.- OOP의 한계 극복: 객체지향 프로그래밍(OOP)만으로는 모든 관심사를 모듈화하기 어려운 경우가 많다. AOP를 사용하면 특정 기능을 모듈화하여 코드 구조를..
[Weekly Paper] HashSet의 내부 동작과 중복 제거 매커니즘
·
카테고리 없음
HashSet을 사용해서 Channel에 있는 user목록을 구현하려고 했으나 실패했다. 그래서 중복을 허용하지 않는 HashMap을 이용하여 구현하였는데, 왜 똑같은 중복을 허용하지 않는 자료구조이지만 HashSet은 안되고, HashMap은 되는지 문득 내부 동작 방식과 중복 제거 메커니즘이 문득 궁금해졌다.  1. HashSet의 내부 동작 일단 먼저 HashSet을 뜯어보았다. HashSet은 내부적으로 HashMap을 사용하는 것을 찾을 수 있었다. 그럼 이제 요소를 추가하는 add()를 찾아보자. HashSet의 add()는 HashMap의 put()을 사용함을 알 수 있었다.HashSet에 들어갈 요소 자체를 key값으로 사용하고, value에는 더미 객체를 사용하고 있었다. 그렇지만 왜 같..
[Weekly Paper] map과 flatMap의 차이점 - JAVA Stream API
·
카테고리 없음
차이점이 둘의 큰 차이점은 다음과 같다. map은 1:1 변환을 수행 / flatMap은 1:N 변환을 수행map은 변환 결과를 그대로 유지 / flatMap은 변환 결과를 단일 레벨의 스트림으로 평탄화  Map- 1 : 1  매핑- 각 요소당 정확히 하나의 결과를 생성한다. 즉, 1 -> 1- 결과는 새로운 스트림으로 반환된다. - 예시 코드List names = Arrays.asList("john", "maria", "david");List lengths = names.stream() .map(name -> name.length()) // String -> Integer로 변환 .collect(Collectors.toList()); // 결과: [4, 5, 5]  FlatMap- 1 : ..