Stream의 forEach는 요소를 돌면서 실행되는 stream 연산의 최종 작업이다. 보통 System.out.println 메소드를 넘겨서 결과를 출력할 때 사용한다. 종료 조건이 있는 로직을 구현할 때 주의해야 한다. Stream 자체를 강제적으로 종료시키는 방법은 없다. 무언가 강제적인 종료 조건에 대한 로직이 있는 for-loop를 stream.forEach()로 구현한다면, 기존 for-loop에 비해 비효율이 발생한다. 스트림 병렬화에 대한 공식 문서의 Side-effects 항목을 참고하면, forEach 내부에 로직이 하나라도 더 추가된다면 동시성 보장이 어려워지고 가독성이 떨어질 위험이 있다. 또한 Stream의 의도를 벗어나게 된다. 본래 forEach는 스트림의 종료를 위한 연산이..
Local variable userId defined in an enclosing scope must be final or effectively final long userId = -1; if(...){ userId = updateUser(); }else{ userId = insertUser(); } userList.removeIf(t->t.getUserID()==userId); 위처럼 람다식을 사용하려다가 에러가 났다. removeIf 안의 userId변수가 final 이거나 effectively final이여야 한다고 한다. 이유를 찾아보았다. 람다식에서는 다른 스레드에서 호출될때 변수가 스택영역에서 사라질것을 대비하여 자유변수의 복사본을 만들어 접근을 허용하도록 하게 한다. 이를 람다 캡쳐링(cap..
Java 8에서 추가된 java.util.stream 패키지를 이용하여 컬렉션의 요소를 람다식으로 처리할 수 있다. 컬렉션을 sort 하기위해 comparable 인터페이스를 구현하는 클래스를 정의할 필요가 없다! 설령 구현한다고 해도 아래와 같이 간략하게 구현할수 있다.. 람다식을 안쓴다면 public class ValueComparator implements Comparator { ... @Override public int compare(String s1, String s2) { return map.get(s1).compareTo(map.get(s2)); } } 혹은 Comparator compare = new Comparator() { @Override public int compare(Integ..
객체, 데이터들을 효율적으로 관리 할 수 있는 자료구조들이 있는 라이브러리를 컬렉션(Collection) 프레임워크라고 한다 https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html java Collection API 문서를 보면 Collection의 상속 관계를 알 수 있다. List, Set, Queue은 Collection 인터페이스을 상속받지만, Map 인터페이스는 구조상(key,value)의 차이가 있어 별도로 정의한다. 요약 구조를 한 눈에 정리하자면 아래와 같다. 인터페이스 순서 중복가능 구현클래스 Collection List O O ArrayList, Stack, Vector, LinkedList Queue O O DelayQ..
사업자 등록번호에는 아래와 같이 정해진 규칙이 있습니다. 출처: seoulcredit.co.kr/business_id 여기서 주의깊게 봐야할 것은 4. 검증번호(마지막 1자리) 입니다!! 마지막 1자리로 유효한 사업자 등록번호인지 확인할 수 있는 거죠. 검증 알고리즘을 볼까요? 마지막 자리수를 자외한 각 자리수에 1.3.7.1.3.7.1.3.5 곱한 후, 각각 더한 다음. 마지막에서두전째 숫자에 5를 곱하고 10으로 나누어 나온 값의 몫을 더합니다. 그리고나서 10에서 아까 더한 수에 10으로 나눈 나머지를 뺍니다. 이 숫자가 사업자등록번호의 마지막 자리의 수와 일치하면 검증된 사업자번호입니다. 예를 들어, 110-81-41272 이 사업자 등록번호인지 확인해보죠 사업자 등록번호 마지막자리수만 제외하고,..
Js 파일을 변경하게 되면 로컬 pc에 쿠키가 남아있어 수정사항이 web에 바로 반영되지 않을 수 있다. 그래서 사용자들이 캐시를 지워야 하는 번거로움이 있다. 이 문제를 해결하기 위해 위처럼코딩하면 된다. css 도 동일 href에 ?ver= 로 관리하면 됨. 참고 블로그 수정전 : 수정후 : 1번과 2번 방법이 섞인것 같아 보이는가? 하지만 아니다. 서버에는 실제로 scripts.js 파일만 올라가 있다. 또, 수정후에 뒤에 붙은 변수인 version=20071207은 php에서처럼 스크립트에 입력되는 request가 아니라 그냥 구분을 위해서 붙여놓은 것이다. 해단 request 변수는 js 파일에 영향을 미치지 않는다. 이렇게 해 두면 웹 브라우저는 버전별로 다른 웹 캐쉬를 생성하게 된다. 보통의..
NEW QUESTION 81 Which two reasons should you use interfaces instead of abstract classes? (Choose two.) A. You expect that classes that implement your interfaces have many common methods or fields, or require access modifiers other than public. B. You expect that unrelated classes would implement your interfaces. C. You want to share code among several closely related classes. D. You want to decl..
NEW QUESTION 61 Given: 1 2 3 4 5 6 7 8 class Block{ String color; int size; Block(int size, String color){ this.size = size; this.color = color; } } Colored by Color Scripter cs and the code fragment: 1 2 3 4 5 List blocks = new ArrayList (); blocks.add(new Block(10, "Green")); blocks.add(new Block(7, "Red")); blocks.add(new Block(12, "Blue")); Collections.sort(blocks, new ColorSorter()); cs Whi..
- Total
- Today
- Yesterday
- 선언적트랜잭션 #noRollbackFor #@Transactional
- 백준
- 프론트엔드개발자
- 퇴사
- 백준14501
- 프론트엔드
- html꿀팁
- script버전
- C++
- C# java 차이점
- 개발중캐시삭제
- 백준퇴사
- 런타임에러
- 캐시삭제
- c#
- boj
- html
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |