분류 전체보기 (222) 썸네일형 리스트형 JAVA 병렬 스트림 사용시 고려할 점 1. 확신이 서지 않으면 직접 측정하라. 병렬스트림이 순차 스트림보다 언제나 빠른 것은 아니다. 병렬스트림의 수행과정이 투명하지 않을 수도 있고 공유된 가변상태가 있을 경우 올바르게 동작하지 않을 수도 있다.(스레드에서 공유하는 객체의 상태를 바꾸는 경우가 있을 때) 순차스트림과 병렬스트림 중 어떤것이 좋은지 모를 때는 벤치마크로 직접 성능을 측정해라. (JMH를 이용하여 jar로 만들어서 벤치마크) 2. 박싱을 주의하라. 자동박싱과 언박싱은 성능을 크게 저하시킬 수 있다. 박싱동작을 피할 수 있도록 기본형 특화 스트림(IntStream, LongStream, DoubleStream)을 사용하는 것이 좋다. 3. 순차스트림보다 성능이 떨어지는 연산이 있다. 병렬스트림에서 limit, findFirst처럼.. 람다란 무엇인가 람다표현식 메서드로 전달할 수 있는 익명함수를 단순화 한 것. 이름은 없지만 파라미터 리스트, 바디, 반환 형식, 발생할 수 있는 예외리스트를 가질 수 있다. 보통 메서드와 달리 이름이 없기때문에 구현해야할 코드의 걱정거리가 줄어든다. 특정 클래스에 종속되지 않기 때문에 함수라고 부른다. 람다 표현식을 메서드 인수로 전달하거나 변수로 저장할 수 있으며 익명 클래스처럼 자질구레한 코드를 구현할 필요가 없다. 람다 문법 람다는 파라미터, 화살표, 바디 세 부분으로 이루어진다. (Apple a1, Apple a2) -> a1.getWeight().compareTo(a2.getWeight()); - 파라미터 : Comparator의 compare메서드 파라미터(사과 두 개) - 화살표 : 람다의 파라미터 리스트.. 자바 스트림 처리 스트림이란? 한 번에 한개씩 만들어지는 연속적인 데이터 항목들의 모임. 입력스트림에서 데이터를 한 개씩 읽어들어 출력스트림으로 데이터를 한 개씩 기록한다. 어떤 프로그램의 출력 스트림은 다른 프로그램의 입력스트림이 될 수 있다. 예를 들어, 자동차 생산 공장 라인은 여러 자동차로 구성된 스트림을 처리하는데, 각각의 작업장에서 자동차를 받아서 수리한 후 다른 작업장이 처리할 수 있도록 넘겨준다. 즉, 조립라인은 자동차를 물리적인 순서로 한 개씩 운반하지만 각각의 작업장에서는 동시에 작업을 처리한다. 자바8에서 java.util.stream패키지에 스트림API가 추가되었다. 스트림API는 조립라인처럼 어떤항목을 연속으로 제공하는 어떤 기능이라고 생각한다. 스트림은 스트림 내의 요소를 쉽게 병렬로 처리할 수 .. java static 사용이유 생성자 대신 static 팩토리 메소드 JAVA Static 이란? 고정된 이란 의미를 가지며 static변수와 static메소드를 만들 수 있다. 메모리에 한 번 할당되어서 프로그램이 종료될때 해제되는 것을 의미한다. GC가 적용되지 않는다. 일반적으로 Class는 static영역에 할당되고 new를 통해 생성된 객체는 heap영역에 생성된다. heap영역의 메모리는 gc를 통해 관리를 받지만 static영역에 할당된 메모리는 모든 객체가 공유하는 장점이 있지만 GC관리 영역밖에 존재하기 때문에 자주 사용할 경우 퍼포먼스에 악영향을 줄 수 있다. Static을 사용하는 이유 인스턴스를 생성할 경우 각 인스턴스는 독립적이기 때문에 서로 다른 값을 유지한다. static을 사용하면 클래스가 메모리에 올라갈 때 이미 자동적으로 생성되기때문에 인스.. Spring Boot QR코드 이미지 생성 해서 thymeleaf로 보여주기 QR코드 생성을 위한 라이브러리 추가 pom.xml com.google.zxing javase 3.1.0 Controller.java @RequestMapping("/getQrcode") public String getQrcode(Model model) throws Exception { String img = getQRCodeImage(result.getData().getQrCode(), 200, 200); model.addAttribute("img", img); return "qrcode"; } // QR코드 이미지 생성 public static String getQRCodeImage(String text, int width, int height) throws WriterException, IOExce.. intellij gradle 버전 변경하기 gradle-wrapper.properties에서 사용중인 버전을 확인할 수 있다. distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists gradle 버전 7부터 maven repository사용중에 에러가 나서 버전을 낮추기로 함. 해당 폴더가 있는 경로로 들어가서 .\gradlew.bat wrapper --gradle-version 6.7 원하는 버전을 입력하면 된다. gradle 버전은 아래링크 .. 자바최적화 - JVM 1. 인터프리팅과 클래스로딩 JVM인터프리터 > 'while루프 안에 switch문' java HelloWorld 로 자바 어플리케이션을 실행하면 OS는 가상 머신 프로세스를 구동한다(자바 바이너리) 자바 가상환경이 구성되고 스택머신이 초기화된 다음 class파일이 실행된다. HelloWorld.class의 main()메서드가 진입점인데 제어권을 이 클래스로 넘기려면 가상머신이 실행되기 전에 클래스를 로드해야한다.(자바 클래스로딩) 자바프로세스가 초기화되면서 클래스로더가 차례대로 동작하는데 제일먼저 부트스트랩클래스가 자바런타임코어클래스를 로드한다. (java8이전까지는 rt.jar, 9이후부터는 클래스로딩 개념자체가 바뀜) 부트스트랩 클래스로더의 주임무는 다른 클래스로더가 나머지 시스템에 필요한 클래스를.. task non-zero exit (137) docker container 비정상 종료 task non-zero exit (137) 대부분 메모리 문제라고 함. docker-desktop 윈도우 로컬에서 띄웠고 wsl2 사용중이었다. docker memory를 늘려줬다. settings > advanced 에 메모리를 늘릴 수 있으나 wsl2 사용중일 경우 c:\Users\{username}\.wslconfig [wsl2] memory=3GB swap=0 localhostForwarding=true wsl --shutdown 후 다시 시작해줘야 함. docker-desktop만 재시작했더니 안됨; 이전 1 ··· 18 19 20 21 22 23 24 ··· 28 다음