본문 바로가기

Java5

Java를 배워야 할 다섯가지 이유 1. Garbage Collection이 필요하다면 메모리 할당/반환을 처리하는 것이 너무 지겹고 고단하다면, Java를 배워야 할 필요가 있을지 모릅니다. 잘 잘려진 대로, Java는 메모리 할당과 반환에 대한 작업을 Garbage Collector를 통해 알아서 처리해 줍니다. 그 성능이 걱정되신다구요? Java는 만들어진 지 오래된 언어이고, JVM의 성능을 최적화하기 위해 오랫동안 애써 왔습니다. 그 이야기는, Java의 JVM이 제공하는 Garbage Collector의 성능이 이제 믿을만한 수준까지 도달했다는 의미이기도 합니다. (물론 Java에서도 메모리 누수 현상, 즉 Memory Leak은 발생할 수 있으므로 이를 피하기 위해서는 코딩할 때 주의해야 합니다. Effective Java 2.. 2013. 12. 31.
Presto: 페이스북(facebook)의 대용량 데이터 분석 솔루션 페이스북이 대용량 데이터 분석 솔루션 Presto를 오픈 소스로 공개했습니다. 대용량 데이터를 많이 분석해야 하는 Facebook 특성상 이런 솔루션이 필요했을 것으로 보이는데요. (페이스북 내부적으로 300 페타바이트 이상의 데이터가 보관되어 있다고 합니다.) 2012년부터 이 솔루션을 개발하기 시작해서 드디어 오픈 소스로 공개가 가능한 시점까지 왔습니다. https://www.facebook.com/notes/facebook-engineering/presto-interacting-with-petabytes-of-data-at-facebook/10151786197628920 페이스북이 공개한 Presto 아키텍처는 위 그림과 같습니다. 글라이언트는 데이터 웨어하우스(Warehouse)에 대한 SQL 질.. 2013. 11. 8.
[Java NIO] how to accept socket connection with java NIO The key component of java NIO is java.nio.channels.Selector. With this, you can easily monitor a specific set of events happening from underlying channels. With this, you can easily write codes to create a socket, bind the socket, listen the socket, and accept a new client connection. Following is an example code from a working system. Selector accept_selector = Selector.open(); ServerSocketChan.. 2013. 4. 15.
간단한 Java Reflection 사용 사례 Java의 Reflection을 사용하면 속도는 뭐 그저 그럴지 모르지만 귀찮은 작업이 줄어들 때가 있습니다. 가령 어떤 객체의 모든 필드와 그 값의 쌍을 Map 객체 안에 저장하고 싶다거나 할때 특히 유용하죠. (그 역방향 작업이 필요할 때도 있겠죠.) 그런 작업이 필요할 때 어떤 코드를 작성하면 되는지 보시면... import java.lang.reflect.Field; import java.util.HashMap; import java.util.Map; class A { private String p; private String q; A() { p = "foo"; q = "bar"; } public String getP() { return p; } public String getQ() { retur.. 2010. 9. 2.