Java

ダブル配列の検索を書いてみる

情報系修士にもわかるダブル配列 http://d.hatena.ne.jp/takeda25/20120219/1329634865 上の解説記事が素晴らしくて、自分も分かった気になりました。ありがたいことです。解説されている内容をJavaで書いてみました。 ダブル配列の検索 https://gist.github…

メモ: sun.net.www.protocol.jar.JarFileFactoryのキャッシュ

このコードの意図が分からず、調べたですよ。(「これは知識問題」等と思わせぶりなことを言われたので、つい気になって) public static void setDefaultUseCaches() { try { new URL("http://example.com").openConnection().setDefaultUseCaches( false);…

鈍器本の自前vectorをJavaで実装(修正版)

鈍器本の自前vectorをJavaで実装したかった(敗北) - 虎塚 上の記事のコードについて、師匠から色々とツッコミをもらったので修正しました。敗北っていってるのにこの追い討ち! さすがです! (勉強になりました…)マイナス点をゼロにしただけで、前回実装で…

鈍器本の自前vectorをJavaで実装したかった(敗北)

前回の読書日記で悩んでいたら、E_mattsanから「Javaで書いてみては?」とコメントで助言をいただきました。なるほど!…結論をいうと、収穫を得る前にギブアップしてしまったのですが、迷走の記録を貼っておきます。(追記: 2011/12/31) 修正版を書きました…

リストを項目ごとに集計するときのデータオブジェクトの使い方

irofさんのブログを見て、自分ならどう書くかなーと思ったので、読み進める前に書いてみました。その結果、本題のアルゴリズムとは全然関係ないところで疑問を持ったので、グデグデとメモします。 元エントリ irofさんによる元エントリはこちら。 リストを項…

メモ: JSON-java

githubサーフィンしてたら、Douglas Crockford先生のJavaでJSONを扱うための参考実装を見つけました。 https://github.com/douglascrockford/JSON-java 試しに使おうとしたらjarもビルドファイルもなかったので、書いたbuild.xmlをメモ。findjar(http://fin…

メモ: ベンチマークツール jvm-serializers

jvm-serializers https://github.com/eishay/jvm-serializers/wiki ツールメモ 兼 プチコードリーディングメモ。MessagePackのWikiを眺めていて知った、Javaのシリアライズ/デシリアライズのパフォーマンスを測定するツール。以前からあったTPC(Thrift-Prot…

TODO: assertEqualsでなくassertThatを使うべきケースの理解

JavaのユニットテストツールのJUnit(http://junit.org/)で、assertThatメソッドが使えるようになったのは、バージョン4.4からです。それまでは「xの値が3である」というテストを次のように書いていましたが、 assertEquals(3, x); こう書けるようになりま…

インクリメント in ローカル変数、インスタンス変数、クラス変数の違い

Javaの前置インクリメントと後置インクリメントの内部実装を読みたい - 虎塚 Javaの前置・後置インクリメントの内部実装を読みたい・その2 - 虎塚 id:terazzoさんのブコメのおかげで、ひとまず、前置/後置インクリメント命令を定数化した箇所を見つけました…

Javaの前置・後置インクリメントの内部実装を読みたい・その2

先日書いたJavaの前置インクリメントと後置インクリメントの件について、id:Nagiseさんからヒントを頂きました。 window.twttr = (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0], t = window.twttr || {}; if (d.getElementById(id)) re…

Javaの前置インクリメントと後置インクリメントの内部実装を読みたい

id:E_Mattsanさんからコメントで教えていただいたページが面白いです。 More Effective C++ 第6回 http://blog.livedoor.jp/exiashio/archives/2514235.html C++の前置インクリメントと後置インクリメントの内部実装について書かれています。元ネタは、『新…

「再考するJava」よんだ。関数オブジェクト in Javaとか。

じゅんいち☆かとうさんのJava連載がはじまると聞いて、WEB+DB PRESSを買いました。WEB+DB PRESS Vol.63作者: 竹迫良範,和田卓人,おにたま,中島聡,角田直行,はまちや2,上谷隆宏,青木俊介,大塚知洋,生尾剛士,大和田純,永安悟史,馬場俊彰,久保達彦,白土慧,じゅ…

メモ: JDK1.1とJDK1.2のArrayクラスの違い

1つ前の記事の一部に、某方面から指摘を頂いたので、訂正しておきます。シリアルバージョンUIDの計算中に、対象クラスのインタフェースを取得して、名前やシグネチャを利用します。その処理が、Arrayクラスの場合に、スキップされている点についてです。 3.…

デフォルトのシリアルバージョンUIDを作成するコードを読んでみる

ダイチャンさんが、ブログでJavaのシリアルバージョンUIDの話をされていて、最後の一文が自分も気になったので調べました。 ランタイムが未定義のserialVersionUIDにどんな値を割り当ててるのか、見る方法は分からなかった。誰か知ってますか? Serializable…

疑問メモ: 値渡し、参照渡し、Java、C

Javaのオブジェクト参照は、Cのポインタをラップしたようなモノである、という理解なのだけれど、要は何なのだろう? - Java C C++ 仮引数が基本データ型(Java) or 変数のみ(C/C++) 値渡し 値渡し 値渡し 仮引数が配列かオブジェクト(Java) or 変数*(C…

メモ: Webアプリのパスワードを扱うためのハッシュ化

Webアプリケーションのログインに使うユーザパスワードは、安全のため、平文のままデータベースに保存してはいけません。保存するのは、ハッシュ化した値を利用します。保存したデータと、ユーザが入力した文字列をハッシュ化したものを突き合せて、認証を行…

あきらめて『プログラミング言語Java』よんでる

普段の学習と別に、『プログラミング言語Java』を読んでいます。読むだけだと飽きるので、練習問題を少しずつ解いています。目的は、 Java7が出る前に文法を総ざらいする JVMの読みたい実装に当たりをつける で、区切りの良いところで覚書を残すことにしまし…

Java用爆速タイマーを作ってみる

(最終更新: 2011/03/06) # 履歴は記事の末尾にあります先日、JDKのコードを読んで、JavaのSystem.nanoTime()を実行すると、Win32APIのQueryPerformanceCounterが使用されることを確認しました。そこで、System.nanoTime()を使うよりも速いJava用タイマーを…

JDKの時間計測まわりのコードを読んでみる

window.twttr = (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0], t = window.twttr || {}; if (d.getElementById(id)) return t; js = d.createElement(s); js.id = id; js.src = "https://platform.twitter.com/widgets.js"; fjs.paren…

Webアプリケーションのサービスクラスとは何か

「JSP、サーブレット、サービス、DAO、DTOといった構成のアプリケーションにおけるサービスクラスとは何か」、という問いに自分なりの答えを出すのが、今日の宿題です。 自分の解答 ※注意: 以下の文章は言い切り形式で書いていますが、間違っているかもしれ…

『一番やさしいJSP&サーブレット入門塾』

ああだこうだ言いつつも、『一番やさしいJSP&サーブレット入門塾』を6年ぶりに再読しました。# 第2版が出ています。あれ?と思う記述も時々ありますが、やはり分かりやすい本だと思います。何でもコードで解説されてるし。勉強になりました。というわけで、J…

Hello Slim3をしてきました

GAE/Jの初心者向けセミナーへ行って、Hello GAE、Hello Slim3をしてきました。GAE/Jは1年前にbotを作ろうとして以来、Slim3はまったくの初めてでした。講師のshin1ogawaさんの解説が丁寧でわかりやすく、初心者でもついていくことができました。Slim3での開…

『JUnit イン・アクション』Part1のメモ

三連休なので『テスト駆動開発入門』を写経しよかなと思ったのだけど、JUnitの知識が残念なレベルなので、先に『JUnitイン・アクション』から。このへんを目的に、写経しつつPart1まで読みました。 JUnitの使い方と仕組みを基本から理解する 『テスト駆動開…

サーバーサイドJavaの知識が足りない・・・

と新年早々に実感して、詰め込み中。。粒度がごっちゃだけど、理解したいことについてメモ。 パフォーマンスをあげるために共有して良いものと、そうでないもの、またその方法 特に、DB接続を共有する場合の排他制御の例アレコレ いま使用しているDB接続マネ…

メモ:JREとアタッチコードのバージョンを合わせる件(追記)

昨日、OS組込みJDKと同じバージョンのOpenJDKをビルドし直したのは、Javaプログラムの実行時のJREとして、OS組込みJDKを指定していたためです。当然、実行時のJREを変更すれば、ビルドし直す必要はありませんでした。…という当たり前のことにビルド終わって…

クラスパス設定のコード in JDK

Javaアプリケーションの実行時に、クラスパスに何も指定しない場合は、カレントディレクトリが初期値として設定されます。何かを指定した場合は、初期値が上書きされるため、クラスパスにカレントディレクトリを含めたいならば明示的に記述する必要がありま…

メモ:OpenJDK 6 b17をFedora13でビルドする

そんなこんなで、Fedora13でビルドをやり直しました。 ビルド対象 OpenJDK 6 Build b17 ダウンロードは、http://download.java.net/openjdk/jdk6/promoted/b17/から。 Fedora 13 Kernel Linux 2.6.33.3-85.fc13.x86_64 GNOME 2.30.0 VirtualBox(メモリ512MB…

続・makeアレコレ。via OpenJDK's Makefile

OpenJDKのMakefileを確認するタスクの続き。Makefileを読んでいたけれど、改めて見たらMakefileが400コくらいある…さすがに回り道すぎるので、クラスロード時に実行されるクラス群が、大体rt.jarに含まれることを先に確認しました。sun.misc.VM.classあたり…

メモ:JD-Eclipse

櫻庭さんの記事でJavaデコンパイラJDを知り、初めて使ってみました。JD-EclipseというEclipseプラグインがあったので、インストール。 http://java.decompiler.free.fr/jd-eclipse/update デバッグ実行中、ソースコードをアタッチしてないclassに入った時に…

メモ:OpenJDK 6 のビルド手順

OpenJDKをビルドしたので、手順をメモしておきます。クラスローダを理解するために読んでみることにしました。じつは先週、クラスローダの仕組みを知らないせいで先輩に迷惑をかけ、「正月休みにOpenJDKのコード読んで、1行1行ブログで説明しろ」と言い渡さ…