C#にはUsingという仕組みがあるし、Java7なら既にtry-with-resourcesが導入されている。 しかし、何らかの理由でJava6を使い続けないといけないような場合でも、安全に簡単にリソースを解放させる方法はないかと考えて、最終的にはライブラリとして使えるようにまとめてみた。
S2JDBCを使って DBのデータ数十万件をまとめてDLしようとしたらエラーになった。 getResultList()じゃなくてiterate()使ったら結果をまとめて保持しなくなるからメモリを使わなくなるんじゃないの?と思ったけどダメ。 WicketのResourceStream系がキャッシュしてるのか自分で書いたオブジェクトを書き出す処理がミスってたのか何か使い方が間違ってたのか分からずハマった。 Eclipse Memory Analyzer でダンプを見たら、どこかでデータを全件保持している模様。 2/29 ここから追記S2JDBC+PostgreSQLだとs2jdbc.diconのfetchSizeプロパティの設定+トランザクションをきちんと開始する、で解決しそう。(とりあえずローカル環境でエラーの再現 → エラー修正の確認まではできた) PostgreSQL: http://o
Apache Wicket became very popular in the last months and has been used in many projects. Due to the power of Wicket you can develop features very easy and fast. There are many ways to realize these features though. This article provides some cook recipes for the correct, efficient and pertinent usage of Apache Wicket. This article is addressed to developers, who has already made their first experi
import java.io.FileOutputStream; import java.io.IOException; import org.apache.commons.io.IOUtils; import org.jfree.chart.ChartColor; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartUtilities; import org.jfree.chart.JFreeChart; import org.jfree.chart.StandardChartTheme; import org.jfree.chart.plot.PlotOrientation; import org.jfree.data.category.DefaultCategoryDataset; ~ 省略 ~ FileO
PRIMA123 bukan hanya sekadar situs game biasa, tetapi tempat terbaik untuk meraih kemenangan tanpa batas dengan permainan Mahjong Wins yang penuh sensasi. Dengan fitur Naga Terbang Tinggi, peluang jackpot besar, dan pembayaran yang 100% aman serta terpercaya, PRIMA123 siap memberikan pengalaman bermain yang luar biasa. Selain itu, tersedia berbagai bonus dan promosi menarik yang bisa kamu klaim ka
この前、「最も長く続くしりとり何か」という問題は再帰で解けることに気づきました。 そして、再帰なら Java7 の Fork/Join Framework です! というわけで、書いてみました! しりとりのアルゴリズム 「最も長いしりとりは何か」という問題は、再帰を使って解けます。 例えば、「しりとり、りんご、ごりら、ごーる…」という単語の集合=A を使ってできる最も長いしりとりは… 「しりとり」→ {集合A から「しりとり」を除いた集合}=B を使ってできる最も長いしりとり 「しりとり」→「りんご」→ {集合B から「りんご」を除いた集合}=C を使ってできる最も長いしりとり 「しりとり」→「りんご」→ 「ごりら」→ {集合C から「ごりら」を除いた集合}=D1 を使ってできる最も長いしりとり 「しりとり」→「りんご」→ 「ごーる」→ {集合C から「ごーる」を除いた集合}=D2 を使っ
目次 FileAppdender RollingFileAppdender(1.2) DailyRollingFileAppdender(1.2) ExternallyRolledFileAppdender(1.2) RollingFileAppender(1.3) FileAppdender さて、超重要な FileAppender である。名前の通り、ファイルにログを吐き出すという一番使いでの大きな Appender だが、ちょっと待ってね。「ファイルをどう扱うか?」でこれから2つばかり派生クラスがあるんである。要するに「ログローテート」の問題で、ログファイルってものは、どんどんログが蓄積されてしまいには超巨大ファイルになって、馬鹿なエディタ(あるいはメモリ/スワップ領域不足)だと開けなくなる....かもしれない。というわけで、フツーは「ログローテーション」と呼ばれる機構があるのだ。こ
はじめに Apache Logging Services Projectが提供するLog4jは、ファイルサイズによってログファイルのローテーションを行うRollingFileAppenderや日付でローテーションを行うDailyRollingFileAppenderを提供しています。 しかし、ファイルサイズと日付の両方でローテートするAppenderは提供されていないため、両方の機能を同時に利用することはできません。また、DailyRollingFileAppenderを利用する場合は、バックアップログファイル数を設定できないため、Disk Fullへの対策を検討する必要があります。 本稿ではRollingFileAppenderとDailyRollingFileAppenderの機能を組み合わせたAppenderを作成する方法を紹介し、その利用方法について示します。 対象読者 Javaプ
ソースコードを入手できないJavaプログラムを修正するときなど、クラスファイルから基になったソースコードの復元が必要になることがあります。このような方法は、ソースコードを「コンパイル」してクラスファイルを生成する通常の流れとは逆になるため、「逆コンパイル」と呼ばれています。この逆コンパイルを行えば、コンパイル時に失われる情報(コメントや定数同士の四則演算など)以外のソースコードを復元することができます。 Javaの逆コンパイルツールはいくつかありますが、本稿ではJadとJadClipseというツールを使用して、Eclipse上で逆コンパイルする方法を紹介します。 操作手順 (1)JadとJadClipseのダウンロード Jadはコマンドラインで使用する逆コンパイラで、JadClipseというEclipseプラグインを利用すれば、Eclipse上から使用することができます。JadClipse
1. 分からない。いくら説明を読んでも分からない。 ● 1.1. 未だに分からない Java 的オブジェクト指向 今日び Java 的オブジェクト指向の説明なんて星の数ほどあるような気がしますが、それでもなお「これで分かった!」という説明に辿りつけない不運な人がいるようですね。まぁこんだけ色々な説明が溢れていたら逆にどれを読めば良いのかワケ分からなくなってしまうのかもしれません。じっくり読んでも理解できなかったのであれば、きっとその説明と読者の相性が悪かったんでしょう。… というわけで、僕も Java 的オブジェクト指向が全っっっっ然これっぽっちも分からないという人に向けて説明する記事を書こうと思います。そうでない人には無価値な記事ですのでブラウザの「戻る」をクリックしましょう。 ● 1.2. 「オブジェクト指向」という名の南の島がある オブジェクト指向にはいくつもの専門用語があって、学習
その2も書きました。 JavaでOutOfMemoryErrorが発生したときに、ヒープダンプを取得して解析することで、メモリリークの原因を調査することができます。 私の場合、OutOfMemoryErrorを解析する機会はそんなに頻繁にはないのですが、たまに出会したときに「どうやってヒープダンプ取るんだっけ?」、「何のツールでヒープダンプを解析できるんだっけ?」と毎回調べてるので、ちょっとメモっておくことにします。 ヒープダンプを取得する方法(参考: 公式のjhatマニュアル) jmap の -dump オプションを使って実行時にヒープダンプを取得する。jconsole のオプションを使って HotSpotDiagnosticMXBean 経由で実行時にヒープダンプを取得する。-XX:+HeapDumpOnOutOfMemoryError VM オプションを指定すると、OutOfMemo
Java Advent Calendar 2011 の18日目です。 17日目の記事は JavaEE使ってウェブアプリケーションつくろうよ - 水まんじゅう2、 19日目はJavaエバンジェリストの寺田さんですよ。乞うご期待。 プロローグ 後:「先輩、いまさらなんですけど上からSQLの遅いところを調査してくれって依頼がきてて、全クエリの実行時間を実データで集計とれと言ってるんですけど。これ、SQL発行前後で時間計測するしかないですかねー。このプロジェクトどんだけクエリ発行してるところあるんだろ…。簡単にやれないですかね。とりあえず調査に1週間かかるって返答しちゃいましょうか」 先:「まぁまて。全部のクエリにもれなく時間計測のコードを挿し込むとかやってられんし、手作業で漏れも発生するだろ。こういうのはオブジェクト指向で解決するのがスマートだ。あ、とりあえず調査に1週間かかるとは返答しておけ」
2011年12月16日金曜日 JAVAのenumではまる public class Hoge { public static void main(String[] args) { System.out.println("A's member: " + A.A1.MEMBER); System.out.println("B's member: " + B.B1.MEMBER); } enum A { A1(B.B1); public final B MEMBER; private A(B b) { MEMBER = b; } } enum B { B1(A.A1); public final A MEMBER; private B(A a) {
Java Advent Calendar 2011の16日目です。 前:JSFUnitでテストしよう! | Kokuzawaの日記 次:JavaEE使ってウェブアプリケーションつくろうよ - 水まんじゅう 書いてること JUnit の話です。使い始めからちょっとだけ踏み込んだ辺りですかね。ちょっとだけなので普通に使ってる方には不要な内容かと思います。私の今持ってる知識を書き殴ってみた感じになりましたが、微妙な理解と残念な文章力の相乗効果でグダグダになってます。お察しください。 内容は Assertion->カスタムAssertion、Matcher->カスタムMatcher、Rule->カスタムRule です。 Assertion JUnitは assert があってこそです。まず org.junit.Assert にある馴染み深い assert を並べてみます。 assertEquals
YaCy is free software for your own search engine. Join a community of search engines or make your own search portal! There are these three use cases you can choose from: P2P Mode Web Search by the people, for the people: decentralized, all users are equal, no central, no search request storage, shared index. Your Search Portal Your YaCy installation is independent from other peers. Define your own
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く