Akira Koyasu's WebLog
Scala for Java Programmers
- May 19, 2013 10:46 pm
- Program
今回の社内勉強会はScalaについてでした。
Scalaを理解すること、使ってみることは、Javaプログラマにとって様々なメリットがあります。限られた時間の中でScalaの全てを説明することはできませんが、Javaプログラマにあまり馴染みの無い概念である「関数型プログラミング」と「トレイト」について少し詳しく説明し、またコレクションの操作、並列処理モデルのアクターに触れています。
Javaで作るTCPサーバ(1)
- April 21, 2013 12:48 am
- Javaで作るTCPサーバ | Program
このところ暖かい日が続いているなあと思っていたら、急に寒くなって喉の調子を悪くしました。
ところで最近、なぜかSocketからサーバを作る必要があってコードを書いたので、自分の中の整理も含め、JavaでTCPサーバを実装する方法についてまとめたいと思います。
Javaでサーバソケットを扱う
Java SE 7において、サーバソケットを扱う方法は3つあります。
- まずはいわゆる普通のソケットAPIです。JDK1.0の時代からあるAPIで、(つまりこの旧き良きAPIは1996年から存在します) java.net.ServerSocket を使います。
- 次に「ノンブロッキング」と呼ばれるモードで処理を行うAPIがあります。java.nio.channels パッケージにある、ServerSocketChannel と Selector を中心に使います。このAPIはJDK1.4で追加されました。
- そして最後に、非同期で処理を行う最も新しいAPIがあります。これも java.nio.channels パッケージにある、AsynchronousServerSocketChannel を中心に使います。このAPIはJDK1.7で追加されました。
MapReduceで巨大データ同士をJOINする
- February 7, 2013 1:28 am
- Program
立春をすぎて、暖かく感じる日も増えてきた今日この頃です。さて春といえばミツバチ、ミツバチといえばHiveですが、今日はHiveを使わないで純粋なMapReduceで、巨大データ同士をJOINするための一つの方法を書き留めたいと思います。
よくある問題
具体的に考えるために、状況を想定してみます。例えば以下の2つのテーブル、アクセスログ(日時,ユーザID,アクセスURL)とユーザマスタ(ユーザID,年齢,性別,住所)があるとします。これらのテーブルをユーザIDで結合したいとしましょう。
SQLで言えば次のような処理ということになります。
SELECT * FROM access_log LEFT OUTER JOIN user USING (user_id);
つまり何ということはない普通のJOINなのですが、この2つのデータがとても大きなものであるとき、私たちは問題に直面します。 続きを読む
Getting Started with Glassfish on Heroku
- January 6, 2013 2:03 am
- Program | Uncategorized
新年明けましておめでとうございます。今年もよろしくお願いいたします。私は今回の年末年始のお休みの間、なるだけPCを開かないでおこうと心に決めていたのですが、前々から気になっていたHerokuを少しだけ触ってみようかな、などど思い立ってしまいました。
さて、HerokuにはJava・Ruby on Rails・Python/Djangoなど、いくつかのWebアプリケーション実行環境が用意されています。JavaのWebアプリケーションを実行するために、Herokuの公式ドキュメントではJettyを使用していますが、ここはGlassfishを動作させてみましょう。jarファイル1個で起動できるEmbedded Glassfishを使用します。
プロジェクトを作成してローカル環境で実行する
Mavenを使ってビルドを行いますので、まずはpom.xmlを作成します。packagingはwarとし、maven-war-pluginには以下のようにweb.xml不要の設定をします。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.3</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
さらに以下のdependencyを追加します。
<dependency>
<groupId>org.glassfish.main.extras</groupId>
<artifactId>glassfish-embedded-all</artifactId>
<version>3.1.2.2</version>
</dependency>
次にGlassfishを起動するクラスを作成します。リッスンポートは環境変数から取得するように設定しています。 続きを読む
Garbage Collection for Dummies
- December 27, 2012 11:23 pm
- Program
Garbage Collection (GC) についての勉強会を行いました。その資料を公開します。
内容は以下の通りです。
- JVM & GC – JVMのヒープとGCの基本
- heap in JVM
- Garbage Collection
- stop the world
- Generational GC
- Collectors in HotSpot JVM – HotSpot JVMが備えるGCを総ざらい
- throughput & low-latency
- 5 Collectors
- Ergonomics & Tuning – エルゴノミクスとGCチューニング初めの一歩
- Ergonomics
- JVM options
- command line tools
- RSS feed
- Advertisement

日本語
English