Java 중복 없이 난수 생성 특정 범위의 난수(Random Number)를 중복없이 생성해야 할 상황에 간편하게 구현을 할 수 있는 방법을 알아보게 되면서 공유하고 한다. 해결방법 ThreadLocalRandom 사용 자바 8 이후로 Random클래스의 init() 메서드를 사용하여 distinct 옵션과 limit 옵션을 정한 IntStream을 얻을 수 있게 되었다. ThreadLocalRandom.current().ints(0, 100).distinct().limit(5).forEach(System.out::println); Collections.shuffle() 사용 list에 담긴 특정 범위의 수 들을 Collection.shuffle() 메서드를 사용하여 Random 하게 섞을 수 있습니다...
들어가며 intelij로 프로세스를 실행하다 보면 동일한 클래스를 이미 실행시킨 상태에서 실행하려 하면 팝업이 뜨게 된다. 어쩔수 없이 기존 프로세스를 죽인 뒤에 실행을 해야 됬는데 'parallel run'을 통해서 해결할 수 있는 방법을 공유하고자 한다. 해결방법 해당 프로세스의 Configuration을 수정 'Edit Configurations..' 클릭 (보통 한번 실행을 하게 되면 저장이 되게 됨) 오른쪽 상단의 'Allow parallel run' 체크 끝으로 이 글이 도움이 되었다면, Google 광고 한번씩 클릭 부탁 드립니다. 🙏🙏🙏 광고 클릭은 많은 힘이 됩니다!
(Effective Java) 규칙43. 람다보다는 메서드 참조를 사용하라 람다 람다가 익명 클래스보다 나은 점 중에서 가장 큰 특징은 간결함인데 람다보다도 더 간결하게 만들 수 있는 방법이 있다. 바로 메서드 참조(method reference) 임 예) 임의의 키와 Integer 값의 매핑을 관리하는 프로그램 값이 키의 인스턴스 개수로 해석된다면, 이 프로그램은 멀티셋(multiset)을 구현한게 됨 키가 맵 안에 없다면 키와 숫자1을 매핑하고, 이미 있다면 기존 매핑 값을 증가시킴 map.merge(key, 1, (count, incr) -> count + incr); 자바 8때 Map에 추가된 merge 메서드, 키, 값, 함수를 인수로 받아 수행하는 함수임 메서드 참조 위 코드는 깔끔한 코드지만..
(Effective Java) 규칙45. 스트림은 주의해서 사용하라 스트림 API 스트림 API는 다량의 데이터 처리 작업(순차적이든 병렬적이든)을 돕고자 자바 8에 추가되었다. 스트림 API가 제공하는 추상 개념 핵심 스트림(stream)은 데이터 원소의 유한 혹은 무한 시퀀스(sequence)의 개념 스트림 파이프라인(stream pipeline)은 이 원소들로 수행하는 연산단계를 표현하는 개념 스트림의 원소들은 어디로부터든 올 수 있다. 대표적으로는 컬렉션, 배열, 파일, 정규표현식 패턴 매처(matcher), 난수 생성기, 혹은 다른 스트림 스트림 안의 데이터 원소들은 객체 참조나 기본 타입 값임 기본 타입으로는 int, long, double을 지원 스프림 파이프라인 소스 스트림에서 시작하여 종..
JVM 이해하기 자바 JVM, JDK, JRE JVM (Java Virtual Machine) 자바 가상 머신 자바 바이트 코드(.class 파일)를 OS에 특화된 코드로 변환(인터프리터와 JIT 컴파일러)하여 실행함 JVM 스펙(링크)은 정해져 있고 이에 맞춘 구현체(JVM 밴더)는 다양하게 존재함 (오라클, 아마존, Azul, 등) 플랫폼에 종속적임 실행시 네이티브 코드로 변경을 하게 되는데 이를 OS에 맞추어 실행해야 되기 때문 JRE (Java Runtime Environment) 자바 애플리케이션을 실행하기 위한 최소한의 구성 (JVM + 라이브러리) JVM과 핵심 라이브러리 및 자바 런타임 환경에서 사용하는 프로퍼티 세팅이나 리소스 파일을 가지고 있음 오라클은 자바 11부터는 JDK만 제공하며..
(Effective Java) 규칙15. 클래스와 멤버의 접근 권한을 최소화하라 잘 설계된 컴포넌트란 잘 설계된 컴포넌트는 모든 내부 구현을 완벽히 숨겨, 구현과 API를 깔끔히 분리한다. 클래스 내부 데이터와 내부 구현 정보를 외부 컴포넌트로부터 얼마나 잘 숨겼느냐 API를 통해서만 다른 컴포넌트와 소통하며 서로의 내부 동작 방식에는 전혀 개의치 않는다. 정보 은닉, 혹은 캡슐화라고 하는 이 개념은 소프트웨어 설계의 근간이 되는 원리다. 정보은닉의 장점 대부분의 장점은 시스템을 구성하는 컴포넌트들을 서로 독립시켜서 개발, 테스트, 최적화, 적용, 분석, 수정을 개별적으로 할 수 있게 해준다. 1. 시스템의 개발 속도를 높임 여러 컴포넌트를 병렬로 개발할 수 있기 때문이다. 2. 시스템 관리 비용을 낮춤..
(Effective Java) 규칙 60. 정확한 답이 필요하다면 float과 double은 피하라 float과 double의 설계 float과 double 타입을 과학과 공학 계산용으로 설계되었다. 이진 부동소수점 연산에 쓰이며, 넓은 범위의 수를 빠르게 정밀한 '근사치'로 계산하도록 세심하게 설계되었다. 따라서 정확한 결과가 필요할 때는 사용하면 안된다. float와 double 타입은 특히 금융 관련 계산과는 맞지 않는다. 0.1 혹은 10의 음의 거듭 제곱 수(10^-1, 10^-2 등)를 표현할 수 없기 때문임 float과 double 사용의 문제 예) 주머니에 1.03달러가 있었는데 그중 42센트를 썼다면 남은 돈은 얼마인가? //답을 구하는 어설픈 코드 .. System.out.println..
(Effective Java) 규칙58. 전통적인 for 문보다는 for-each 문을 사용하라 전통적인 for문의 컬렉션, 배열 순회의 단점 아래 관용구들은 while문보다는 낫지만(규칙57) 가장 좋은 방법은 아니다. for(Iterator i = c.iterator(); i.hasNext()) { Element e = i.next(); ... // e로 무언가를 함 } for (int i = 0; i < a.length; i++) { ... // a[i]로 무언가를 한다. } 반복자와 인덱스 변수는 모두 코드를 지저분하게 할 뿐 진정 필요한 건 원소들뿐임 쓰이는 요소가 늘어나면 오류가 생길 가능성이 높아짐 컬렉션이냐 배열니야에 코드 형태가 상당히 달라짐 for-each 문 for-each 문의 정식..
- Total
- Today
- Yesterday
- 일본여행
- effective java
- windows
- 이펙티브자바
- JavaFX Window Close
- 배낭여행
- JavaFX 종료
- Java UI
- 일본 자전거 여행
- 일본 여행
- 배낭 여행
- JavaFX Table View
- JavaFX 테이블뷰
- JavaFX
- 자전거 여행
- 이펙티브
- git
- 일본 배낭여행
- 자바
- 인텔리제이
- java
- intelij
- 자전거
- 텐트
- 방통대 과제물
- effectivejava
- 스프링부트
- 이펙티브 자바
- TableView
- springboot
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |