BufferedStream 팁

밥벌이/Java 2015. 9. 18. 22:20

BufferedStream 의 경우 입출력 결과를 버퍼에 담아놨다가 입출력을 수행하기 때문에
버퍼링 기능을 하게 되고 건건이 입출력하는 것 보다 좋은 성능을 보여준다.

그런 이유로 JAVA에서 Stream을 사용할 경우 그대로 사용하지 않고

BufferedStream과 같은 보조스트림을 구현해서 사용하게 된다.

이때 불필요한 코딩을 줄일 수 있는 팁이 있다.

 

1. BufferedStream을 사용하고 close를 통해 Stream을 닫을 경우

기반이 되었던 Stream은 별도로 close 해줄 필요가 없다.

BufferedStream의 close()메소드에서 내부적으로 기반스트림에 대한

close()메소드를 수행하기 때문이다.

 

2. BufferedStream 의 경우 버퍼가 가득찼을 때만 출력소스에 출력을 하기 때문에

출력이 끝난 뒤 반드시 flush() 해주어 마지막에 버퍼에 있는 모든 내용이 출력될 수 있도록 해야한다.

하지만 출력뒤 바로 Stream을 닫아버리는 상황이라면 close()만 수행하면 되며,
별도로 flush()를 수행할 필요는 없다.
BufferedStream의 close()의 경우 조상인 File Stream의 close()를 그대로 상속받고
File Stream의 close()는 내부적으로 flush()를 수행한다음 close()를 수행하기 때문에
flush()를 수행하는 시점이 Stream을 끝내는 상황이라면 close()만으로
충분하다는 것이다. 

 

'밥벌이 > Java' 카테고리의 다른 글

VO, DTO 구분해서 사용해야 할까?  (0) 2020.07.16
XML파일의 활용  (0) 2015.09.18
Properties 파일 읽기  (0) 2015.09.18
Posted by mypiece
,

1. classpath 상에 파일 불러오기

  

test.properties 파일에는 아래와 같은 내용이 들어있다고 가정함.

key=/com/test/key

 

//step1 : Stream 연결          
InputStream is = getClass().getResourceAsStream("/com/test/test.properties");

/* or Reader

Reader reader = new InputStreamReader(getClass().getResourceAsStream("/com/test/key") );

*/

 

//step2 : 연결된 Stream을 통해 Proerties 객체 load

Properties prop = new Properties();
prop.load(is);


//step3 : 파일에 key 에 값을 가져온다

prop.get("key");

 

※ 동일한 Properties파일이 JAR파일과 Classes에 각각 존재한다면 Classes에 있는 파일을 읽어들인다.

 


2. classpath 가 아닌 외부폴더에서 읽어오기

 

File propFile = new File(“d://com/test/test.properties”);
BufferedInputStream bi = new BufferedInputStream(new FileInputStream(propFile));
Properties prop = new Properties();
prop.load(bi);
prop.get("key");​

 

'밥벌이 > Java' 카테고리의 다른 글

VO, DTO 구분해서 사용해야 할까?  (0) 2020.07.16
XML파일의 활용  (0) 2015.09.18
BufferedStream 팁  (0) 2015.09.18
Posted by mypiece
,

Oracle에서는 정렬시 null값을 제일 마지막에 위치시킨다.(ms-sql은 반대) 
null 값을 제일 큰 값으로 인식한다는 말이다.

즉, 아래와 같다.


select *
from
(
 select 'aaa' col_1 from dual
 union all
 select 'bbb' from dual
 union all
 select null from dual
)
order by col_1;




​-----------------------------------------------------------------


하지만 order by에 옵션을 주어 이러한 null값에 순위를 바꿔줄 수가 있다. 


select *
from
(
 select 'aaa' col_1 from dual
 union all
 select 'bbb' from dual
 union all
 select null from dual
)
order by col_1 nulls first;


위와 같이 설정하게 되면 null 값이 제일 위에 위치하게 된다.
주의할 점은 해당 옵션은 null이 아닌 나머지 데이터 정렬에는 어떠한 영향도 주지 않는다.
단지 null값의 순위를 '처음' 또는 '끝'으로 바꿔준다. 

'밥벌이 > Database' 카테고리의 다른 글

Redo와 Undo  (0) 2015.09.23
[Oracle] 제약조건 활성화/비활성화  (0) 2015.09.18
[Oracle] 외래키 옵션  (0) 2015.09.18
[Oracle] MERGE 구문  (0) 2015.09.18
[Oracle] 계층쿼리  (0) 2015.09.18
Posted by mypiece
,