Dev/Java 37

[java] FilenameFilter, FileFilter

File class는 파일 내부의 리스트를 찾는 메소드를 세 개 갖고 있다. public String[] list( FilenameFilter filter ); 디렉토리의 파일목록을 String 배열로 반환 public File[] listFiles( FileFilter filter ); FileFilter 인스턴스에 구현된 조건에 맞는 File을 배열로 반환 public File[] listFiles( FilenameFilter filter ); FilenameFilter 인터페이스가 구현된 조건에 맞는 File을 배열로 반환 interface FileFilter와 FilenameFilter는 특정 파일이나 디렉토리를 필터링 하여 리스트를 추출할 필요가 있을 때 사용한다. 두개의 차이점은 정의된 메소드..

Dev/Java 2020.06.10

[java] jmeter 성능 테스트

서버 부하 테스트를 해야해서 jmeter를 처음 사용해 보았다. 내가 테스트한 것은 멀티스레드로 랜덤한 파라미터값으로 요청을 왕창 보내는 간단한 기능이었다. 이 내용을 또 까먹지 않기 위해 간략하게 정리한다. 에이징 테스트란? 컴퓨터 장치를 검사하는 방법의 한 가지. 컴퓨터 시스템과 컴퓨터를 구성하는 각각의 시스템이 한계 상황 속에서 견뎌 낼 수 있는가를 확인하기 위하여 사용되는 검사 방법. 예를 들어 하드 디스크의 내구성을 검사하기 위하여 하드 디스크에 대한 입출력 작업만을 7일 이상 쉬지 않고 계속해서 수행하는 방법이 이에 해당된다. 출처: Jmx 파일 Jmx 파일은 Jmeter 관련 설정 파일이다. JMX (Java Management Extensions)는 응용 프로그램(소프트웨어) / 객체 / ..

Dev/Java 2020.05.20

[effective-java] 동시성

[11장. 동시성] 스레드는 여러 활동을 동시에 수행할 수 있게 해준다. 단일 스레드 프로그래밍보다 동시성 프로그래밍은 어렵다. 공유중인 가변 데이터는 동기화해 사용하라 synchronized 키워드는 메소드나 블록을 한번에 한 스레드씩 수행하도록 보장한다. (=synchronized가 붙으면 단 하나의 스레드만 실행가능) 동기화는 배타적 실행뿐 아니라 스레드 사이의 안정적인 통신에 꼭 필요하다. Thread.stop은 사용하지 말자 쓰기와 읽기 모두가 동기화되지 않으면 동작을 보장하지 않는다. 이 문제들을 피하는 가장 좋은 방법은 가변 데이터를 공유하지 않는 것이다. (가변 데이터는 단일 스레드에서만 쓰도록 하자) 여러 스레드가 가변 데이터를 공유한다면 그 데이터를 읽고 쓰는 동작은 반드시 동기화해야 ..

Dev/Java 2020.01.15

[effective-java] 일반적인 프로그래밍 원칙

[9장. 일반적인 프로그래밍 원칙] 1. 지역변수의 범위를 최소화하라 - 지역변수의 범위를 줄이는 가장 강력한 기법은 가장 처음 쓰일 때 선언하기 지역번수의 범위는 선언된 지점부터 그 지점을 포함한 블록이 끝날 때 까지. - 거의 모든 지역변수는 선언과 동시에 초기화. try-catch문은 이 규칙에서 예외. 변수를 초기화하는 표현식이 검사예외를 던질 가능성이 있을 경우 try 블록안에서 초기화. 예외가 블록을 넘어 메소드까지 전파할 수 있으므로) 변수 값을 try 블록 바깥에서도 사용해야한다면 try 블록 앞에서 선언. 반복문에서는 반복변수의 범위가 반복문의 몸체 그리고 for 키워드와 몸체 사이의 괄호 안으로 제한된다. 반복 변수의 값을 반복문이 종료된 이후에 써야 하는 상황이 아니라면, while문..

Dev/Java 2020.01.14

[java] CSV 파싱하기

CSV PARSER 이용해서 확장자가. csv인 파일을 파싱해서 처리해야 하는 일이 생겼다. 그런데 테스트 진행중에 CSV 파싱 오류가 계속해서 발생했다. 구글링 해본 결과 윈도우 OS에서 파일이 편집되었을 경우 인코딩 방식을 'ISO-8859-1'로 지정해야 한다는 것을 알게 되었다! 자바 코드 /** * * getParsingCsvData * */ private List getParsingCsvData(File file){ List csvList = new ArrayList(); // try with resources try (BufferedReader reader = Files.newBufferedReader(file.toPath(), Charset.forName("ISO-8859-1"))) { /..

Dev/Java 2019.12.13

[java] Logback 과 Maven

Log LevelTRACE : 가장 상세한 정보를 나타낼 때 사용한다.DEBUG : 일반 정보를 상세히 나타낼 때 사용한다.INFO : 일반 정보를 나타낼 때 사용한다.WARN : 에러는 아니지만 주의할 필요가 있을 때 사용한다.ERROR : 일반 에러가 일어 났을 때 사용한다.FATAL : 가장 크리티컬한 에러가 일어 났을 때 사용한다. package org.slf4j;public interface Logger { // Printing methods: public void trace(String message); public void debug(String message); public void info(String message); public void warn(String message); publ..

Dev/Java 2019.10.04

[java] JVM, JRE, JDK, 자바 메모리 구조

[ JVM, JRE, JDK] JVM : 자바 가상머신(Java Virtual Machine) 바이너리 코드를 읽고, 검증, 실행한다. 자바 소스코드로부터 만들어지는 자바 바이너리 파일(.class)을 실행가능 JRE : 자바 실행환경(Java Runtime Environment) 자바 프로그램을 동작할 때 필요한 라이브러리 파일과 기타 파일 포함. JDK : 자바 개발도구(Java Development Kit) JRE + 개발을 위해 필요한 툴 javac, java 포함 [자바 메모리 구조] 이미지 추가 예정 eden - s0 - s1 - tenured - direct memory 에덴에서 생성(Object 생성 시) 에덴영역이 가득차면 minor gc 발생 계속 사용되는 object(=reachabl..

Dev/Java 2019.09.28

[java] HttpClient

HttpClient클래스 이 클래스의 가장 주요 기능은 HTTP 메소드를 실행하는 것이다. HTTP 메소드 실행에는 일반적으로 HttpClient 에 의해 내부적으로 처리되는 하나 또는 여러 개의 http request/response 교환이 포함된다. setConnectionTimeout : 연결이 설정 될 때까지 시간 초과를 설정한다. 클라이언트가 서버에 연결을 시도할 때, 연결이 설정되거나 서버가 연결 요청에 응답하기까지 경과 된 시간을 의미한다. setSoTimeout : 연속 된 두 패킷 사이의 비활성 시간 또는 시간 차이를 설정한다. 연결을 설정 한 후 클라이언트 소켓은 요청을 보낸 후 응답을 기다린다. 서버가 응답하기 전에 클라이언트가 서버에 요청을 보낸 이후의 경과 시간을 의미한다. 연결 ..

Dev/Java 2019.09.26

[java] on-heap 과 off-heap

on-heap store : Java heap에 존재할 객체를 참조한다 (또한 GC를 따릅니다). off-heap store : EHCache에 의해 관리되지만 힙 외부에 저장되는 (직렬화 된) 개체를 참조한다 (또한 GC에 종속되지 않는다). 메모리에서 계속 관리되므로 힙 메모리보다 약간 느리지만 디스크 저장소보다 빠르다. EHCache의 off-heap store 는 일반 오브젝트를 힙에서 가져 와서 직렬화하여 EHCache가 관리하는 메모리 덩어리에 바이트로 저장한다. 디스크에 저장하는 것과 같지만 여전히 RAM에 있다. 이 상태에서는 객체를 직접 사용할 수 없으므로 먼저 역 직렬화해야한다. Cache 일반적으로 애플리케이션에서 데이터베이스를 접근하게 되면 많은 시간과 비용을 소비하게 된다. 그래서..

Dev/Java 2019.09.20
반응형