본문 바로가기

Java

[Stream] 수동 직렬화 public class ManualSerializedHandle { private int id; private long type; private float weight; public static void main(String[] args) throws Exception { ManualSerializedHandle msh = new ManualSerializedHandle(); msh.setManualSerializedHandle(100, 2000000, 3.14F); System.out.println(msh.toString() + ":" + msh.getManualSerializedHandle()); msh.saveManualSerializedHandle("d:/manualserial.txt"); Man.. 더보기
[Stream] DataInputStream, DataOutputStream DataInputStream과 DataOutputStream의 예제.. public class DataStreamHandle { public static void main(String[] args) throws Exception { FileOutputStream fos = new FileOutputStream("d:/data.txt"); DataOutputStream dos = new DataOutputStream(fos); dos.write(100); dos.writeInt(100); dos.writeFloat(3.14f); dos.writeFloat(4.14f); dos.writeChar('A'); dos.close(); FileInputStream fis = new FileInputStream("d.. 더보기
[Stream] BufferedInputStream, BufferedOutputStream BufferedStream을 이용한 file copy 예제. public class BufferedStreamFileCopy { public static void main(String[] args) throws Exception { String image = "d:/b9788991268074.jpg"; FileInputStream fis = new FileInputStream(image); FileOutputStream fos = new FileOutputStream("d:/copy2.jpg"); BufferedInputStream bis = new BufferedInputStream(fis); BufferedOutputStream bos = new BufferedOutputStream(fos); lon.. 더보기
[Stream] InputStream, OutputStream 스트림에 대한 공부를 하면서 몇가지 정리를 하고자... FileInputStream과 FileOutputStream을 통해서 이미지 파일을 카피 해보자.. File f = new File(image); int fileSize = (int)f.length(); byte[]b = new byte[fileSize]; int pos = 0; int size = 10; int temp; FileInputStream fis = new FileInputStream(image); FileOutputStream fos = new FileOutputStream("d:/copy.jpg"); int i = -1; while((i=fis.read()) != -1) { System.out.println((char)i); fos... 더보기
자바의 call by value. 예전에 같은 회사에 근무하시는 김풍주대리님께서 알려주셨던 자바의 call by value에 대해서.. 갑자기 생각이 안나는 바람에 다시 정리를 해본다 -_-ㅋ import java.util.ArrayList;public class CallbyValue { public static void main(String[] args) { ArrayList a = new ArrayList(); String aStr = new String("first"); set(a); set(aStr); System.out.println(a); System.out.println(aStr); a.remove(1); System.out.println(a);} public static void set(ArrayList b) { b.add.. 더보기
객체지향적인 설계? 최근에 객체지향적인 설계와 객체지향적인 생각 이런 것들에 대한 생각이 많아져서 고민을 하던차에 풍대리님께 부탁을 드려서 이것에 대한 얘기를 들을 수 있는 기회가 생기게 되었다. 그 내용을 간략하게 정리해보고자 한다. 풍대리님의 강의 스타일은 소설처럼 풀어가시는 스타일이다. 그 리고 그런 스타일이 내가 참 좋아하는 스타일의 강의이기도 하다. (소설같은 자바, 소설같은 JSP를 괜히 두세번씩 읽은게 아닌것이다.) 하지만 덕분에 정리를 하려면 힘들다. ㅋ 왜냐면 전체적인 흐름은 기억에 남는데 정리에 필요한 세부적인 내용은 잘 기억에 남지 않는다. 그래서 조금이라도 머리에 뭔가 남아있을 때 이렇게 정리를 해두어야 한다. -_- 일단 객체지향적인 설계라는 것이 무어냐. 내가 가끔 하는 일단 구현을 하고 그 구현된.. 더보기
클래스의 업캐스트 - 혼동하지말자. 보통 개발 할 때 업캐스팅을 많이 사용한다. 인터페이스던 추상클래스던 .... 다형성을 위해서.. 아래의 예를 보자. public class Shape { public void draw() { ... } } public class Circle extneds Shape { public void draw() { ... } public void myDraw() { ... } } public class Test { public static void main(String args[]) { Circle c = new Circle(); c.draw(); c.myDraw(); Shape s; s = c; s.draw(); s.myDraw(); } } 보면 에러가 날까.. 아니면 정상적으로 작동할까.. 일반적으로 업캐스.. 더보기
상속과 생성자 자바에서 사용되는 상속에 대해서 정리 해본다. GrandFather Father Son 이 3가지의 클래스가 있고 각각 상위의 클래스를 상속받고 있다 라고 한다면 public GrandFather { ... } public Father extends GrandFather { ... } public Son extends Father { ... } Son son = new Son(); 이렇게 Son을 생성한다면 어떻게 될까나..~ 기본적으로 상속을 받은 후 하위의 클래스 인스턴스를 생성할때는 상위 클래스의 생성자를 호출해 주어야 한다. 위와 같은 경우에는 디폴트 생성자에서 그 역할을 해주기 때문에 오류가 나지 않는다. 즉 Son의 디폴트 생성자에서 Father의 디폴트 생성자를 호출하고 Father의 디폴트.. 더보기
jvm GC와 메모리 튜닝 JVM GC와 메모리 튜닝 자바스터디 네트워크 [www.javastudy.co.kr] 조대협 [bcho_N_O_SPAM@j2eestudy.co.kr] 모든 Java Application은 JVM(Java Virtual Machine)위에서 동작한다. 이 JVM이 동작하는데 있어서, 메모리의 구조와 특히 GC는 Application의 응답시간과 성능에 밀접한 관계를 미친다. 이번 강좌에서는 JVM 의 메모리 구조와 GC 알고리즘 (JDK 1.4.X에 포함된 새로운 알고리즘 포함) 그리고, JVM의 메모리 튜닝을 통한 Application의 성능향상방법에 대해서 알아보도록 하자. 1.GC란 무엇인가? GC는 Garbage Collection의 약자로 Java 언어의 중요한 특징중의 하나이다. GC는 Java.. 더보기
Collection 하나 더.. 여태 개발하면서 무지 많이 써오던 컬랙션들. 성능이나 별다른 고민없이 걍 대충 써왔던 것 같다. "켄트 벡의 구현 패턴"이란 책을 보다 보니 자세한 설명이 있어서 그 동안 알고 있던것과 더불어 정리해 두는 게 조을 것 같다. 1. 인터페이스 The core collection interfaces. Queue는 거의 사용하지 않고 책에 없으니까 생략 ^^ - 배열 가장 단순하지만 가장 유연하지 못한 컬렉션. 크기가 고정되어 있고 원소 접근 방법이 용이하면 빠르다. 단순한 연산의 경우 배열은 다른 컬렉션에 비해 시간, 공간 모든 면에서 효율적이다. 일반적으로 배열 접근(element[i])은 ArrayList를 사용했을 때(elements.get(i))에 비해 10배 이상 빠르다고 한다. 대부분의 경우 유연.. 더보기