Java

IntelliJでRobocodeのRobot開発メモ

毎回忘れて色々試しては時間を食っている気がするのでメモ。 1. Robocode自体のインストール (See http://robowiki.net/wiki/Robocode/Download) 2. IntelliJで適当にprojectを作り、`Project Settings` -> `Modules (Dependencies)` に `JARs or directory`…

JVM Tool Interfaceを少しさわってみたメモ

ふと、JVM(TM) Tool Interface 1.2.3 に触れたことがないことに気がつき、少しさわってみたのでメモ。OpenJDKのソースコードの jdk/src/share/demo/jvmti の下に幾つか例があるので、それを試してみることに。ちなみに概要は上記URLのドキュメントの各APIの…

MessagePack v07とJacksonの文字列を対象とした性能比較

int cnt = 800000; { ObjectMapper mapper = new ObjectMapper(); ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); List<String> strList = new ArrayList<String>(cnt); for (int i = 0; i < cnt; i++) { strList.add("01234567"); } System.gc(); Thre</string></string>…

ByteBufferへのコピー速度比較

JavaでByteBufferへのコピーを行う際の速度を簡単に比較してみました。java.nio.ByteBuffer#put(byte)で1byteずつ書き込んでいくのでなければ大体同じですね。 Heap上のbyte arrayをコピー java.nio.ByteBuffer#put(byte[], int, int) byte[] bs = new byte[…

TypeProfileが取得される場合、所得されない場合について

JavaではJITコンパイルに関連するTypeProfileという機構がありますが、これがどのような状況で取得されるのかちょっと興味があったので簡単に試してみました。komamitsu/TypeProfileTest komamitsu/TypeProfileTest · GitHubChildというinterfaceを継承するC…

JavaのEscape AnalysisでNoEscapeがGlobalEscapeになってしまうケースの検証

Java ™ HotSpot Virtual Machine Performance Enhancements Escape analysis is supported and enabled by default in Java SE 6u23 and later. ということで最近のJVMでは有効になっているEscape analysisですが、こんな記事を見つけました。Richard Burnis…

jackson-dataformat-msgpack

数ヶ月前から komamitsu/jackson-dataformat-msgpack というのを細々と作ってました。これは何かというと、 msgpack/msgpack-java at v07-develop · GitHub で開発が進められているMessagePack Javaのv0.7系の実装と FasterXML/jackson-databind · GitHub の…

コンパイル時に特定のAnnotationが付いているClassのmodifierをチェックする方法

先日、@ Messageのついたunpack対象のclassの定義に public staticとつけていないのが原因だった。— Kumazaki Hiroki (@kumagi) 2014, 2月 28 @komamitsu_tw これ、コンパイル時に怒らせる事ってできないんでしょうか。できないんですよねリフレクションだか…

Androidでのnew String(byte[])とCharsetDecoder.decode()の違い

byte[] -&gt; String 変換のパフォーマンス、とAndroidでCharsetDecoder#decode(ByteBuffer in).toString()が遅い件 - komamitsu.log でAndroidではnew String(byte)の方が速い結果が出たので[https://github.com/OESF/OHA-Android-4.0.3_r1.0:title=コード]…

byte[] -> String 変換のパフォーマンス、とAndroidでCharsetDecoder#decode(ByteBuffer in).toString()が遅い件

Android上でMessagePackのベンチマークコードを動かしつつprofile取ってみたら、msgpack-java/src/main/java/org/msgpack/unpacker/StringAccept.java at master · msgpack/msgpack-java · GitHub辺り(CharsetDecoder#decode(ByteBuffer in).toString())で…

ScalaのTraitをjavapしてみたメモ

Traitがどんな感じでJavaのバイトコードに落ちているのか興味があったので試してみた。 komamitsu@carrot ~/lab/scala/traitsample2 $ scala -version Scala code runner version 2.9.1.final -- Copyright 2002-2011, LAMP/EPFL Hello.scala trait T1 { val…

using multiple databases with Spring iBatis

Spring経由でiBatisを使いつつ、複数のデータベースを利用しようと思ったら結構ハマったのでまとめておきます。 やりたいこと database1にはpersonというtableがあって、database2にはprojectというtableがあり、それぞれにアクセスしたい。 解決方法の概要 …

Non blocking IOでecho server

まぁクリスマスなんですがJavaのNon blocking IO周りについて少し調べてました。非リアですね。参考にしたのはうっすらと全体を網羅していたっぽいこちら => http://tutorials.jenkov.com/java-nio/index.htmlで、手を動かさないと理解できない人種なので簡…

MySQLからRedisへのimport tool

この程度のことは何かしらの言語を使って、一瞬で作らなきゃだなぁ、と思って何が適当か少し考えてみた。想定される制約条件は以下。 いろいろなサーバーで実行したい Root権限が無いケースも想定 インストールされているのは Perl, Python, Java(Maven入り)…

Hibernate触ってみたメモ

そろそろ仕事がらこの辺りもからんできそうなので家事育児の隙をついて弄ってみました。という備忘録的メモ。まぁ実際はSpring経由でやりそうなんですが、まず直接使ってみたいなぁと。方針は以下。 できるだけAnnotationで Maven! Maven! Maven! -1. 事前準…

java.lang.NoClassDefFoundError: org/apache/log4j/Logger

ちゃんとpathが通っているにもかかわらず、Tomcat起動時にこのエラーが出まくるときは、ServerをCleanするとなおることがある。というメモ。

途方にくれたときは mvn help:describe

最近、Mavenを勉強しているのだけど、何をすれば良いのか分からなくなり途方にくれることが良くある。特に疲れているとき。そんな時は, mvn help:describe -Dcmd=install とか打つと何か光が見えるような気がしないでもない。まぁ lsを一定間隔で打つような…

DBアクセスのサンプル

Spring frameworkを使うとDBまわりのコードがすっきりするらしいので、練習兼メモがてらサンプルを書いてみた。 RDBMSは何でも良いのだけどPostgreSQLで。適当なテーブルを用意しておく。 sample=# \c psql (8.4.4) You are now connected to database "samp…

Mixin的なもの

普段使いのRubyでは、ModuleのMixinによって実装の継承ができて大変嬉しいのですが、Javaの場合はできなさそうで少し悲しいなぁ、と思っていたところSpring AOPをつかうとそれっぽいことができそうなので試してみました。まず、Mixinのことなど何も知らないU…

Springを使ってみるメモ

簡単なサンプルを動かそうとするだけで結構はまったのでメモ。 前提とか事前準備: Ubuntu 10.04 Eclipse 3.5 - aptで入れたやつ Tomcat 6 - http://tomcat.apache.orgからダウンロード(aptで入れると/usr/share/tomcat6と/var/lib/tomcat6でdirectoryが分割…

staticのメンバークラスで遅延初期化

staticのメンバークラスは遅延初期化されるらしいので試してみた。 class Hoge { private final String clientName; Hoge(String clientName) { this.clientName = clientName; System.out.println( "Hoge's constructor was called by " + clientName ); } …

Builder pattern

Effective Java second editionを読み始めたのですが、何だか良いですね。これは。で、Java素人の私は色々目から鱗なのですが、最初の方に載っていたBuilderパターンが格好良かったので、思い出しながら書き直してみました。 class Foo { private final int …

ダイクストラ法の練習

久しぶりにダイクストラ法を、更に久しぶりにJavaで書いてみたら、引っかかりまくりで呆然としました。やはり週一で1アルゴリズムくらいのペースで書いておかないと、腕がなまってしまうなぁ、と痛感。 class Node { private char label; private int totalC…

割込みでjava作業

色々発見があったのでメモる。 eclipseリソース喰いすぎで遅すぎ。この待ち時間は結構な工数のロスだと思った。 single-sign-onのダミーサーバーをperlで書いたのだけど、redirectでmethod=>'POST'って利かないのかな? localhostにcookieを付けたい時はsetD…