タグ

ブックマーク / cero-t.hatenadiary.jp (5)

  • 100万件ぐらいのレコードを扱ったらOOMEが出た話。 - 谷本 心 in せろ部屋

    要約 技術的な話だけ教えて、という方のために先に結論だけ書いておきますと、PostgreSQLはクエリを実行した時点で全レコードの情報を一気に読んできてヒープを埋めてしまう場合がある、ということ話です。 たとえば、ResultSet#nextメソッドを使いながら処理を回すようなコードを書いて、少ないヒープでも処理できるようにするのは常套手段だと思いますが、そういうコードを書いていても一気にヒープを消費してしまうことがあるのです。詳しくはこのドキュメントを見てください。 https://jdbc.postgresql.org/documentation/head/query.html#query-with-cursor ことの発端 ちょっと仕事Java + jOOQ + PostgreSQLで、DBのデータを集計するようなバッチ処理を書いてまして、もちろん俺様の書いたコードにバグなんてある

    100万件ぐらいのレコードを扱ったらOOMEが出た話。 - 谷本 心 in せろ部屋
  • 節電のために余計な3G通信をカットしたら、1時間に1〜2%しか消費しなくなった。 - 谷本 心 in せろ部屋

    節電のために、画面をOFFしたタイミングで3G通信をOFFにできるアプリを導入しました。 候補は、これらです。 Tasker Llama JuiceDefender ecoNetBattery data on demand この選択肢から、 とりあえず無料で試したかったので、Taskerが消えて、 定期的に3G通信してくれる機能が欲しかったので、data on demandが消えて、 そんな高機能なのは要らないので、Llamaが消えました。 それでJuice DefenderとecoNetBatteryが残ったのですが 両方試してみた感じ、 設定の分かりやすさや、レスポンス(画面ONにしてから3Gが使えるようになるまでの早さ)の面で、 ecoNetBatteryのほうが上でした。おまけに説明も日語ですしね。 ツールの導入効果ですが 元々は1時間あたり10%ぐらいバッテリー消費をしていたの

    節電のために余計な3G通信をカットしたら、1時間に1〜2%しか消費しなくなった。 - 谷本 心 in せろ部屋
  • レビューで鍛えるJavaコーディング力 その1(日付バリデーション) - 谷本 心 in せろ部屋

    現場でJavaのソースをレビューしていると、一目で「問題だ」と気づくコードによく出会います。 しかも、同じような問題をアチコチで見かけることも、少なくありません。 FindBugsを導入したおかげで、そういう問題が多少減ったものの、 やはりゼロになるわけではありません。 、、、ということで、 そんな問題コードに即座に反応できるようになるために、 私が見てきた問題コードをクイズ形式で紹介していきます。 ぜひ皆さんも、脊髄反射でNG部分を見つけてください。 見つけられなければ、適当にブクマでもしてください(笑 では今回は、日付チェックに関する問題です。 問題 以下のコードの問題を指摘し、修正してください。 ただし、問題は複数あることもあれば、全くないこともあります。 /** * 日付が正しい形式であり、存在する日付であることを検証します。 * * @param date 日付を示す文字列 *

    レビューで鍛えるJavaコーディング力 その1(日付バリデーション) - 谷本 心 in せろ部屋
  • 考えなしに肥大化する定数クラス。 - 谷本 心 in せろ部屋

    よく定数クラスというものを見かける。 大体はXxxConstantsという名前で、public static finalなフィールドをたくさん持つクラス。 あるいは、定数クラス自身をinterfaceとして定義しておいて、 値を利用するクラスで、implementsするという手法も見かける。 初めて見た時には、便利な手法だと思ったけど、 その後、ひどい定数クラスを目にすることが少なくなかった。 定数クラスは、疎結合の考え方と全く合わないと僕は思う。 具体的に、悪い例を見ながら話していく。 public class XxxConstants { public static final String EOL = "\r\n"; public static final String ENCODING = "UTF-8"; public static final int HOGE_X = 480;

    考えなしに肥大化する定数クラス。 - 谷本 心 in せろ部屋
  • いいから聞け! 俺が文字コードについて教えてやるよ その1(前提知識編) - 谷本 心 in せろ部屋

    ちょっと久々のJavaネタですが、 前から書き溜めていた、文字コードやエンコードについてのノウハウを書きます。 今回は、詳細な説明に入る前に、前提になる知識や用語について説明しておきます。 文字コードとエンコードって違うの? 新人くん「では、HTMLの文字コードはUTF-8でお願いします」 先輩社員「文字コードじゃなくてエンコーディングでしょ?」 新人くん「えっ。あぁ、はい、それで」 文字コードとエンコード(エンコーディング)を混同して使ったりすると、 ちょっと原理主義的な人に怒られたりするんですけど、 大まかに言えば、「文字コード」は文字に割り当てられた「数字」のことで、 「エンコード」は文字と数字をマッピングする「方式」のことだと捉えていれば、大きくは外れません。 ただ、「文字コード」という言葉は、「数字」「方式」の両方で使われるほか、 文字一覧を示す「Charset」という意味で使わ

    いいから聞け! 俺が文字コードについて教えてやるよ その1(前提知識編) - 谷本 心 in せろ部屋
  • 1