일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- lambda calculus
- Network
- exception
- functional programming
- DesignPattern
- Spring
- tcp
- 백준
- 함수형 프로그래밍
- Rails
- Python
- 파이썬
- 로버트마틴
- 자바
- javscript
- JavaScript
- 큐
- JDBC
- Pattern
- 겨울카카오인턴
- Java
- 프로그래머스
- 람다 칼큘러스
- Eclipse
- solid
- Collections
- 스택
- Collection
- design-pattern
- 디자인패턴
- Today
- Total
목록전체 글 (177)
개발자 노트
스프링 AOP 문제Spring에서 self-invocation은 클래스의 메서드가 같은 클래스 내의 다른 메서드를 호출하는 방식으로, 특히 @Transactional과 같은 AOP(Aspect-Oriented Programming) 관련 애노테이션을 사용할 때 문제를 일으킬 수 있습니다. Spring에서는 프록시 기반 AOP를 사용하기 때문에, 프록시 객체가 아닌 클래스의 실제 메서드가 호출될 경우 AOP 애노테이션이 적용되지 않습니다.예를 들어, Spring에서 @Transactional 애노테이션을 적용한 메서드 A가 같은 클래스의 다른 메서드 B에서 호출될 때, B가 프록시를 통해 호출되지 않으면 A의 트랜잭션이 제대로 관리되지 않을 수 있습니다. 이는 프록시가 생성한 객체 외부에서 메서드를 호출해..
참조모나드 영어 위키 - https://en.wikipedia.org/wiki/Monad_(functional_programming)함수 영어 위키 https://en.wikipedia.org/wiki/Function_(mathematics)함수 한글 위키 - https://ko.wikipedia.org/wiki/함수도입이번에는 글의 흐름을 다르게 진행해보려고 합니다.모나드가 무엇인지 바로 말씀드리지 않고, 연속적으로 함수의 합성할 때 마주하는 문제점을 고민 해보고, 해결 방법을 제시함으로써 모나드(라고 불릴만한 것)을 이해해보도록 하겠습니다.그래서 먼저 함수가 무엇인지 다시 살펴봄으로써 이해를 높힌 뒤 문제되는 예제를 설명드리겠습니다.개인적인 견해가 있으므로 참고하시어 읽어주세요. 그래서 제목에서 보시..
Stream API peek? 문서에서 왜 Stream.peek을 주로 디버깅 용으로 사용하라고 했는가? 대하여 알아보겠습니다. 참조 Stream API peek은 Stream api의 한 부분이므로 Stream API 문서부터 살펴보도록 하겠습니다. stream api의 문서를 보시면 filter, map등과 같은 method에 전달되는 함수는 올바른 동작을 위하여 다음 2가지 제약조건을 만족해야 한다고 합니다. non-interfering이여야 할 것 대부분의 경우, 상태를 지니지 말아야 할 것 여기서, non-interfering에 주목해보겠습니다 non-interfering interfering의 사전적 의미 간섭하는, 참견하기 좋아하는 문서에서 말하는 non-interfering stream p..
User들을 1. 성을 기준으로 정렬 2. 성이 동일할 경우 이름으로 정렬 3. 그리고 List로 반환하라. 라고, 정렬 기준이 두 개일 경우에 대한예제를 만들어 보았습니다. 그리고 method reference, lambda expression 을 통해서 문제를 작성해보았는데요... 이게 왠 걸... lambda expression으로 작성한 예제는 컴파일 에러가 발생합니다. 띠용! 타입을 잘 추론 못하나...? 완전 같아보이는데 말이죠 -- 차후 작성
최근에 Modern Java In Action 책을 보았습니다. 매우 감명받았죠. 함수형 프로그래밍, Java API 공부할 땐 책을 봐야겠구나 느꼈습니다. 구글링에 비해 책이 내용이 알차고 신뢰도도 매우 높았습니다. 무려! 자바챔피언, 교수2, 엔지니어1이 작성한 책이니까요. 여튼, stream api를 공부하고 작성한 코드들을 두어보겠습니다. 그리고 왜 이렇게 코드를 작성했는 지 그 아이디어를 차차 공유해보도록 하겠습니다. https://school.programmers.co.kr/learn/courses/30/lessons/92335 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. ..
추후 자바 API 및 기술 블로그들의 소개를 통해서 자세히 풀어나가도록 하겠습니다. 비동기 비동기란? 작업(task)을 순서대로 처리하지 않는 것 언제 사용 하는가? 성능 개선을 위하여 사용. I/O 작업이 있을 경우 CPU bounded JOB이 있을 경우 (배치성) 비동기 프로그램 작성시 고려할 점 비동기 작업의 결과물을 어떻게 이용할 것인가? callback 완료시 추가 작업을 하도록 함수(루틴) 전달. blocking 모두 완료될 때까지 대기 buffer 이용 I/O가 끝나지 않더라도 데이터 이용가능 비동기 작업들이 어떤 상태에 있는가? 상태에 따른 대응 모두 완료됬을 경우 -> 처리 처리 중일 경우 -> 대기 또는 다음 프로세스 진행 에러났을 경우 -> 전체 프로세스 실패 등 비동기 테스크인 I..
예제 코드 https://github.com/jurogrammer/dtrans 상황 트랜잭션을 분리해서 작업하고 싶은데, 이 때문에 서비스 클래스를 생성하기엔 번잡할 때 코드 @Service @RequiredArgsConstructor public class SaveServiceVer1 { private final UserRepository userRepository; private final OrderRepository orderRepository; @Transactional public void save() { userRepository.save(new User("홍길동")); // 만약 order 저장시 에러가 발생 경우에도, user는 그대로 저장하고 싶다면? saveOrder(); } publi..
2의 보수 서론 이번 글에선 2의 보수에 대해 말씀드리려고 합니다. 이렇게~ 간단한 내용을 따로 작성할 필요까지 있나? 의문이 드실 수 있습니다. 하지만, 여러 글들을 봐도 개인적으로 이해 안됬던 부분이 있었습니다. 바로 다음 질문들입니다. 2의 보수가 뭘까? 1의 보수가 뭘까? 보수란 뭘까? 물론, 1의 보수, 2의 보수를 구하는 방법은 널리 알려져 있습니다. 다음처럼 말이죠. 보수 구하기 0110 이라는 2진수가 있을 경우 1의 보수 0110의 각 자리 수를 모두 flip한 것이 1의 보수이다. 즉, 1001 입니다. 2의 보수 1의 보수에서 1을 더한다. 즉 1010 입니다. 그런데 보수가 뭐길래 위와 같은 과정으로 구한 결과 값이 1의 보수, 2의 보수라고 하는 걸까요? 이번 글에선 이 의문을 해..
관련 글 java docs Collection 정리[상위 문서] Set 인터페이스란? 중복된 elements를 담지 않는 Collection 특징 수학의 집합을 모델 삼음 오직 Collection의 메서드만 상속받고, 중복된 element를 금지하는 제약만 추가. 이미 collection에 존재하는 element를 추가할 경우 add method의 반환 값은 false이다. equals hashCode operation에 대한 강한 제약사항을 두었음. Set 구현체의 타입이 다르더라도 Set inatance간 의미있는 비교 가능. 두 Set간 동일한 elements를 지닐 경우, 두 set은 동일하다고 한다. 다용도 Set 구현체들 HashSet hash table에 elements를 저장 가장 성능이 ..
관련 글 java docs Collection 정리[상위 문서] Collection이란? elements들의 그룹을 나타냅니다. Collection interface 가장 일반화된 collections를 전달하는데 사용됩니다. 예 - HashSet의 conversion consturctor public HashSet(Collection c) boolean addAll(Collection c) boolean retainAll(Collection c) void clear() array operations를 위한 메서드 Object[] toArray() T[] toArray(T[] a) Stream API를 위한 method Stream stream() Stream parallelStream() Collect..