분류 전체보기128 [Jenkins] aws ec2로 scp 할 때 Host key verification failed error 해결 [Jenkins] aws ec2로 scp 할 때 Host key verification failed error 해결 jenkins에서 build한 jar 파일을 aws ec2로 scp 하기 위해 명령어를 입력했다. scp -i [A서버에 있는 B서버의 pem.key 위치] [A서버에 있는 복사할 파일] [user]@[host]:~/[복사할 B서버의 위치] ex) scp -i /home/pem_keys/test.pem build/libs/*.jar ubuntu@11.111.111.11:~/deploy/test.jar A 서버 -> B 서버 SCP 로컬에서 terminal로 직접 jenkins서버에 접속해 aws ec2로 scp 명령어를 입력할 때는 파일 이동이 잘 되는데, jenkins에 script로 해.. 2022. 10. 13. [이펙티브 자바] 10. 동시성 [이펙티브 자바] 10. 동시성 아이템 78. 공유 중인 가변 데이터는 동기화해 사용하라 synchronized 키워드는 해당 메서드나 블록을 한번에 한 스레드씩 수행하도록 보장한다. 즉, 객체를 하나의 일관된 상태에서 다른 일관된 상태로 변화시킨다. long과 double 외의 변수를 읽고 쓰는 동작은 원자적(atomic)이다. 이 말을 듣고 "성능을 높이려면 원자적 데이터를 읽고 쓸 때는 동기화하지 말아야겠다"고 생각하기 쉬운데, 아주 위험한 발상이다. 동기화는 배타적 실행뿐 아니라 스레드 사이의 안정적인 통신에 꼭 필요하다. 공유 중인 가변 데이터를 비록 원자적으로 읽고 쓸 수 있을지라도 동기화에 실패하면 처참한 결과로 이어질 수 있다. 다음 스레드를 중지하는 코드를 살펴보자 잘못된 코드 - 이 프.. 2022. 10. 12. [이펙티브 자바] 09. 예외 [이펙티브 자바] 09. 예외 아이템 69. 예외는 진짜 예외 상황에만 사용하라 예외를 완전히 잘못 사용한 예 - 따라하지 말 것! try { int i = 0; while(true) { range[i++].climb(); } } catch (ArrayIndexOutOfBoundsException e) { } 직관적이지 않다. 예외를 써서 루프를 종료하는 이상한 방식으로 구현 다음과 같이 표준 관용구대로 작성했다면 누구나 쉽게 이해했을 것이다. for(Mountain m : range) m.climb(); 예외를 써서 루프를 종료한 이유는 뭘까? 잘못된 추론을 근거로 성능을 높여보려 한 것 JVM은 배열에 접근할 때마다 경계를 넘지 않는지 검사 일반적인 반복문도 배열 경계에 도달하면 종료(경계를 넘지 않.. 2022. 10. 5. [이펙티브 자바] 08. 일반적인 프로그래밍 원칙 [이펙티브 자바] 08. 일반적인 프로그래밍 원칙 아이템 57. 지역변수의 범위를 최소화하라 지역변수의 유효 범위를 최소로 줄이면 코드 가독성과 유지보수성이 높아지고 오류 가능성은 낮아진다. 지역변수의 범위를 줄이는 가장 좋은 방법은 '가장 처음 쓰일 때 선언하기'다. 지역 변수를 미리 선언하게 되면 사용하고자 하는 블록이 끝난 뒤에도 살아있을 수 있어 끔찍한 결과가 생길 수 있다. 거의 모든 지역변수는 선언과 동시에 초기화해야 한다. try-catch문 예외 반복문에서의 변수 범위 초기화 반복문에서는 독특한 방식으로 변수 범위를 최소화한다. 반복문에서는 반복 변수의 범위가 반복문의 몸체, 그리고 for 키워드와 몸체 사이의 괄호 안으로 제한된다. 따라서 반복 변수의 값을 반복문이 종료된 뒤에도 써야하는.. 2022. 9. 27. [이펙티브 자바] 07. 메서드 [이펙티브 자바] 07. 메서드 아이템 49. 매개변수가 유효한지 검사하라 메서드와 생성자 대부분은 입력 매개변수의 값이 특정 조건을 만족하기를 바란다. 이런 제약은 반드시 문서화해야 하며 메서드 몸체가 시작되기 전에 검사해야 한다. "오류는 가능한 한 빨리 (발생한 곳에서) 잡아야 한다"는 일반 원칙의 한 사례이기도 하다. 오류를 발생한 즉시 잡지 못하면 해당 오류를 감지하기 어려워지고, 감지하더라도 오류의 발생 지점을 찾기 어려워진다. 메서드 몸체가 실행되기 전에 매개변수를 확인한다면 잘못된 값이 넘어왔을때 즉각적이고 깔끔한 방식으로 예외를 던질 수 있다. 매개변수 검사를 제대로 하지 못했을 때 생기는 문제 메서드가 수행되는 중간에 모호한 예외를 던지며 실패할 수 있다. 메서드는 잘 수행되었지만 잘못.. 2022. 9. 21. [이펙티브 자바] 06. 람다와 스트림 [이펙티브 자바] 06. 람다와 스트림 아이템 42. 익명 클래스보다는 람다를 사용하라 예전에는 자바에서 함수 타입을 표현할 때 추상 메서드를 하나만 담은 인터페이스(드물게는 추상 클래스)를 사용했다. 이런 인터페이스를 함수 객체(function object)라고 하여, 특정 함수나 동작을 나타내는 데 썼다. 익명 클래스의 인스턴스를 함수 객체로 사용 - 낡은 기법이다! Collections.sort(words, new Comparator() { @Override public int compare(String s1, String s2) { return Integer.compare(s1.length(), s2.length()); } }); 전략 패턴처럼, 함수 객체를 사용하는 과거 객체 지향 디자인 패턴에.. 2022. 9. 14. 이전 1 ··· 3 4 5 6 7 8 9 ··· 22 다음 728x90 반응형