タグ

Tipsとjavaに関するt_43zのブックマーク (76)

  • Java8時代の文字列連結変態さんまとめ - きしだのHatena

    いろいろな文字列連結のコードを書いた人がいたのでまとめておきますね。 主に変態さん。 とりあえず、基準として、メモリ確保したStringBuilder版 public static String stringBuilderJoinMem(){ StringBuilder s = new StringBuilder(9100).append("["); for(int i = 0; i < strarray.length; ++i){ if(i != 0){ s.append("],["); } s.append(strarray[i]); } s.append("]"); return s.toString(); } 1037ms ということで、まずはbackpaper0さん。比較的常人のコード。 https://gist.github.com/backpaper0/10273558 pu

    Java8時代の文字列連結変態さんまとめ - きしだのHatena
  • Java 7 CMS GCの基本的な情報の整理 - nekop's blog

    バッチ処理などスループット重視のアプリケーションはデフォルトのパラレルGCで良いが、Java EEアプリケーションサーバなどレスポンスタイム重視のものやHadoopなどのクラスタ系ソフトウェアで死活監視に引っ掛る系などのstop the worldをなるべく避けたいいわゆるサーバ系ソフトウェアを運用する場合には、UseConcMarkSweepGCを付与して停止時間の短いCMS GCを使う。その場合にCMSのチューニングに踏み込もうとするとなんだか難しい記述がいっぱいで若干困るので、簡単なガイドをメモとして書いておく。 対象バージョンは以下。 $ java -version java version "1.7.0_51" OpenJDK Runtime Environment (fedora-2.4.5.1.fc20-x86_64 u51-b31) OpenJDK 64-Bit Serve

    Java 7 CMS GCの基本的な情報の整理 - nekop's blog
  • GAE/J使うならこの設定をしておけ! - 手抜きぷろぐらまのメモ帳

    ※2010/4/23 sessionのクリアについてご指摘頂き、追記しました。Google App Engine for Java(GAE/J)にて、どんなアプリを使う場合でも (自分的に)ほぼ必須となる設定ファイルのまとめ。 ていうか、リファレンス読めばいーんだけどさ 1.sessionを有効にする & クリアの設定をする Javasession使わないケースなんてあるのか? appengine-web.xml に 下記を追加 <sessions-enabled>true</sessions-enabled> GAE/Jでsessionを使う場合、このままだとDatastoreにsession情報が残ったままなので定期的にクリアするcronを設定する web.xml に 下記を追加 <servlet> <servlet-name>_ah_sessioncleanup</servlet-

    GAE/J使うならこの設定をしておけ! - 手抜きぷろぐらまのメモ帳
  • Javaバイトコードの読み方 - プログラマーの脳みそ

    Javaのデバッグをしていて、ステップ実行中にステップインを繰り返したらソースコードのないところに行き当たったことがあるだろう。あるいはEclipseでF3キーでクラスやメソッド・フィールドの宣言元を辿っていってソースコードのないところに行き当たったことがあるだろう。 Eclipseの場合、"Class File Editor"というものが開く。そこにはJavaのバイトコードのニーモニックがズラズラと並んでいて、「これは読めないや、ワケが分からない」と投げ出してしまったりしていないだろうか。 怖がることはない。ちょっとコツを掴めばすぐに読めるようになる。 Class File Editorの開き方 自前のJavaクラスの場合、ビルドして出来上がったclassファイルを開く必要がある。"Package Explorer"だとclassファイルは隠されていて見えないのでWindow -> Sh

    Javaバイトコードの読み方 - プログラマーの脳みそ
  • GAE/Jアプリ開発のTIPSまとめ : CB NANASHI管理人ブログ

    2009年09月09日20:38 カテゴリGoogle App Engine GAE/Jアプリ開発のTIPSまとめ Google App Engine for Java関連の記事が随分と溜まってきましたので、まとめ記事を作ってみました。今後も記事追加時にはこの記事を更新していきたいと思います。 GAE関連ブログをお書きの他の方のように、バックエンドの技術に対する深い考察などはありませんが、実際にアプリケーションを作成してみた上で遭遇したトラブルや小技を書いています。また、なるべくGoogleのドキュメントには記述されていないことを書いたつもりです。 GAEでアプリを開発される方の参考になれば幸いです。 ■対象のアプリケーション 次のアプリケーションを作成した上でのTIPSです。 Cycle Base NANASHI -サイクルベース名無し- 自転車用品・パーツのレビューまとめサイト。2ch

  • アプリケーションに最適なJavaコレクションクラスを選ぼう

    CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

    アプリケーションに最適なJavaコレクションクラスを選ぼう
  • 2009-08-10 - marsのメモ - Go Ahead: Next Generation Java Programming Style

    http://codemonkeyism.com/generation-java-programming-style/ 次世代Javaプログラミングスタイルだって。ちょっと面白かった。こうゆうスタイルが身に付いたらプログラマのステージがひとつ上がりそうだけど,世間一般に普及させんのは難しいんだろうなとオモタ。 1.Final is your new love. (変数の)final宣言を好めって良く聞くね。気持ちもはわかるけど,徹底するのは大変。 2.No setters. ミューテータ(setter)作んないでコピーコンストラクタ使えと。オブジェクトの普遍性不変性にこだわりますな。 アクセサ(getter)も作んな,って言ってるけど,ちょっと分かんなかった。→ Tell, Don't Ask | The Pragmatic Bookshelf 3.Do not use loops for

    2009-08-10 - marsのメモ - Go Ahead: Next Generation Java Programming Style
  • Javaメモリ、GCチューニングとそれにまつわるトラブル対応手順まとめ - 日記のような何か

    GC周りでトラブルシューティングした際の経験や、Web等で調べたことをまとめてみる。 前提 ・JVMは、Sun Javaを想定。(他は使ったことないです。。。) ・Sun Java 1.5-1.6を想定。 目標 マイナーGC、Full GCそれぞれが頻発することなく、かつそれぞれの実行時間を1秒未満に抑えること。 マイナーGCは1秒未満どころではなく、もっと短くなるべき。どれくらいが理想かは?(0.1秒未満ぐらいを目指したい?) 連続した負荷状態(想定されるピークアクセス)でもOutOfMemoryErrorが発生しないこと。 理想的な状態は、上記に加えて、Full GCの発生が低頻度であること。 具体的には、できるだけマイナーGCで短命オブジェクト(1回使ったらもう使わないようなオブジェクト。逆にセッションオブジェクト等は長命オブジェクトとなる)を破棄させて、短命オブジェクトが、Tenu

    Javaメモリ、GCチューニングとそれにまつわるトラブル対応手順まとめ - 日記のような何か
  • 第13夜 Java SE 6はnative2ascii使わなくていいのはみんな知っていると思うが - しんさんの出張所 はてなブログ編

    みなさまJava SE 6への移行は進んでおりますでしょうか。もう7月になったということはJava2 SE 5.0のサポート期間は4ヶ月をきったということですよ。 そこで今後はJava SE 6での地味な改良をあげていきたいと思う。派手な話題はみんな飛びつくけど、地味な改良が実はうれしいのだ。 最初はみんな知ってる小ネタから。 J2SE 5.0からPropertiesがXMLを扱えるようになったのはご存知のとおり。それまでは7bitなファイルしか扱えなかった。理由はPropertiesクラスが1.0のときに登場した古参クラスであるということ。1.0はマルチバイトが対応しておらずみんなこんな感じだった。そもそもHashTableを継承してるのはどうよ、とかいいたいことはたくさんあると思うのだが、Javaが発表されたのが14年前。その前からあったことを考えると仕方あるまい。C++ですら標準化さ

    第13夜 Java SE 6はnative2ascii使わなくていいのはみんな知っていると思うが - しんさんの出張所 はてなブログ編
    t_43z
    t_43z 2009/07/09
    そういえば、まだJava SE 6な案件ってやったことがないな・・・
  • 5年後に後悔しないJavaプログラムの書き方 - L'eclat des jours(2009-07-02)

    _ 5年後に後悔しないJavaプログラムの書き方 ここ数日、死ぬほど後悔しまくっているので、あらためて(というのは、数年前にも一度後悔しまくって、そのときの知見はあらかた処方箋とかコーディングの掟に書いているからだが)後悔しないための書き方をいくつか紹介する。 とにかく、ファクトリメソッドパターンを使うこと。 これは当に重要。しかも簡単でありながら効果は絶大。 だめな例。 public class FooBar { private Connection conn; ... protected void setup() { ... conn = DriverManager.getConnection(url); ... } urlを指定することや、DriverManagerの実装を交換すれば良いだろうと想定していても(というか、Connectionならそういう方法もあり得るが、そうはいかな

  • Java Puzzler ってみた - 宇宙行きたい

    id:skrb さんの日記から public class SimpleQuestion { static boolean yesOrNo(String s) { s = s.toLowerCase(); if (s.equals("yes") || s.equals("y") || s.equals("t")) { s = "true"; } return Boolean.getBoolean(s); } public static void main(String[] args) { System.out.println( yesOrNo("true") + " " + yesOrNo("YeS")); } } (コンパイル通らなかったので少し修正してます) 選択肢が 1. false false 2. true false 3. true true 4. None of the abo

    Java Puzzler ってみた - 宇宙行きたい
    t_43z
    t_43z 2009/06/05
    Boolean.getBoolean()の実装知らんかったー。
  • 試験管のなかのコード :: コードサイニング証明書に関するメモ

  • 試験管のなかのコード :: Java 配備ツールキットに関するメモ

    Java 配備ツールキットに関するメモ JavaSE 6u10 で Java 配備ツールキット という機能が追加された。 Java 配備ツールキットを利用することで、クライアントにインストールされている JavaSE 環境の取得や、クライアントへの JavaSE 環境のインストールなどを行うことができる。 この機能は JavaScript ファイル(deployJava.js) で提供されている。 Applet や Java Web Start によるスマートクライアントなどを実装するときに是非活用したい機能だ。 関連情報をメモしておく。 Java 配備ツールキット http://java.sun.com/javase/ja/6/ea/6u10/deploymentToolkit.html Java Web App Deployment Advice for JavaSE 6u10 htt

  • JavaVMのメモリ管理をマスターする

    Webシステムの安定動作には、メモリ使用量の適切な見積もりが不可欠。だがJavaVMでメモリがどのように管理されるかを理解しているだろうか? メモリに関する問題が発生すると、知識や技術資料の不足によって問題が長期化しがち。JavaVMでどのようにメモリが管理されているかを理解し、正確なメモリサイジングやメモリ関係のトラブルの早期解決へとつなげよう。 JavaVMのメモリ構造を理解しよう まず、JavaVMがどのようにメモリを使っているかを理解しておこう。JavaVMがプログラムを実行すると、Javaのプロセスによってメモリが使用される。Javaのプロセスでは、Javaヒープ、Permヒープ、Cヒープ、およびスレッドスタックという4つのメモリ領域を使用する。 Javaヒープはアプリケーションプログラムの各種オブジェクトを格納する領域であり、Classのnewで確保される。JavaヒープはNe

    JavaVMのメモリ管理をマスターする
  • Genericsではまった - 矢野勉のはてな日記

    Java, メモ複合的な総称型にキャストするにはどうしたらいいんだろう? というのでちょっとはまったのでメモ。 こんなインターフェースがあります。インターフェースの内容自体は今回はどうでもいいのですが。 public interface Loggableextends MyClass> { Class getLogClass(); void setLatestLog(T log); } で、このLoggableインターフェースを実装していてなおかつMyClassのサブクラスであるインスタンスだけを処理するstaticメソッドがあります。 public static extends MyClass, T extends MyClass & Loggable> L create(T obj) { Class logClass = obj.getLogClass(); Object newObj

  • 例えば、if〜instanceofを避ける(2) - 都元ダイスケ IT-PRESS

    例えば、if〜instanceofを避ける(1) - 都元ダイスケ IT-PRESSの続き。 解決策は幾つかある。とりあえず今回は1つ紹介。 public enum Processor { LIST(List.class) { @Override public void process() { // List用処理 } }, MAP(Map.class) { @Override public void process() { // Map用処理 } }; private final Class<?> clazz; private Processor(Class<?> clazz) { this.clazz = clazz; } public abstract void process(); public static Processor get(Object obj) { for (Pro

    例えば、if〜instanceofを避ける(2) - 都元ダイスケ IT-PRESS
  • 複数通貨のMoneyをジェネリクスで作る

    Kanazawa.processではテスト駆動開発入門を読んで、テスト駆動開発を学びました。そのでのテスト駆動開発のサンプルとして挙がっていたテーマは複数通貨のMoneyを作るというものでした。 Dollarという米ドルを表現するオブジェクトを作り、Francというスイス・フランを表すオブジェクトを作り、そしてMoneyというオブジェクトに統合していくというリファクタリングの過程を経ています。 これをジェネリクスを使って設計したらどうなるでしょうか。 public abstract class Money<T extends Money<T>> { public abstract T add(Money<?> m); } Moneyオブジェクトに演算用のメソッドadd()を定義します。引き算や掛け算など要求に合わせて各種用意するといいでしょう。 Money<T extends Money

  • Java SE コアAPI 使用コード例一覧 - @IT

    IT編集部 2009/3/24 最終更新: 2012/04/11 17:57 このページは、Java開発者/プログラマのための、Java SE(旧、J2SE)のコアAPIの使用コード例の記事へのリンク集です。パッケージごとに表でまとめてあります。メソッドやコンストラクタ、例外などAPIの使い方の参考にしてください。パッケージやクラスの並び順は、標準のJavadoc(「Java Platform, Standard Edition API 仕様」)と同様にしています。 すべてのクラス java awt(Abstract Window Toolkit) event image io(In/Out) lang(LANGuage) reflect math(MATHmatics) net nio(New In/Out) charset(CHARacter SET) rmi(Remote Meth

  • java.util.Dateをjava.sql.Dateにきちんと変換する方法 - ひがやすを技術ブログ

    多くの人はこうやればいいと思っているかもしれません。 java.util.Date d = new java.util.Date(); java.sql.Date d2 = new java.sql.Date(d.getTime());確かにこれでも一応変換はできますが、きちんと変換してはいません。java.sql.DateのJavadocを見るとこう書いてあります。 SQL DATE の定義に対応させるために、java.sql.Date のインスタンスでラップされたミリ秒の値は、インスタンスが関連した特定のタイムゾーンで時間、分、秒、ミリ秒をゼロに設定することで、「標準化」する必要があります。 つまり、java.util.Date#getTime()をjava.sql.Dateにただ渡すだけでは不十分で、「特定のタイムゾーンで時間、分、秒、ミリ秒をゼロに設定しなければいけない」のです。そ

    java.util.Dateをjava.sql.Dateにきちんと変換する方法 - ひがやすを技術ブログ
  • コードの最低品質を底上げする為のルール的なアレ。 - 設計と実装の狭間で。

    何となくまぁ、話題になったので、とりあえず書いておくます。 ルールなのだけど、常に例外的状況は存在しるます。 その例外的状況を適切に把握しているのであれば、どの様にコード書いても良いです。 自分の中で一定のルールを持ってコーディングすると、 そもそも自分がミスをし易いパターンを把握し易いのと、 自分のコードの最低品質がある程度担保されるので、良いかな…と思うマス。 要は、みんな俺様ルールを作って、 それをある程度意識しながらコーディングすれば良いと思うよ、って話。 考え方の基。 自分の能力が最も発揮されない状況を想定する事。 疲れている、やる気ない、気になる事が他にある、等々… 頭を使う時間は計測するのが難しいが、タイピングしている時間は、ある程度簡単に計測可能である事。 「考えている時間」は、貴重なリソースだけど、見積もりが難しいのだよねぇ…。すごく。 この位の時間考えれば答えが出る筈

    コードの最低品質を底上げする為のルール的なアレ。 - 設計と実装の狭間で。