タグ

javaに関するpipeheadのブックマーク (16)

  • 動的配列について – JavaのLinkedListとArrayListを分析・比較する | POSTD

    私はSkienaの『Algorithm Design Manual』 (訳注:『アルゴリズム設計マニュアル』 上巻 ・ 下巻 ) を読んでいました。ところでこのは素晴らしいで、連結リストと配列についてこんな比較をしていました(chapter 3.1.3)。 連結リストが静的配列に勝る相対的な長所には以下のものがあります。: • メモリが当にいっぱいにならない限り、連結構造にオーバーフローが生じない。 • 連続的な(配列)リストに比べて、挿入と削除が単純である。 • 大きなレコードを扱う場合、要素自体を動かすよりもポインタを動かすほうが容易かつ高速である。 一方で、配列の相対的な長所には以下のものがあります。 • 連結構造には、ポインタのフィールドを格納するための余計な領域が必要となる。 • 連結リストでは、要素に対する効率的なランダムアクセスができない。 • 配列は、ランダムなポイン

    動的配列について – JavaのLinkedListとArrayListを分析・比較する | POSTD
    pipehead
    pipehead 2016/08/02
    /* http://alex.dzyoba.com/programming/dynamic-arrays.html の和訳 */ > 気を確かに持って、誰かや何かを盲目的に信じることのないようにしましょう。計測、計測、計測です。
  • JavaでMultiton(マルチトン)パターン | 嫁に下ネタ言うのやめたい

    pipehead
    pipehead 2015/06/12
    > Singletonで実装したけど、後から仕様変更やらなんやらで複数インスタンスにする必要がある。ええい!キーを指定して複数のインスタンスを管理出来るように変更してしまおう! ということになっていると思われる。
  • いぬごやねっと

    いぬごやねっと
    pipehead
    pipehead 2015/03/25
    継承: is-a (分類); コンポジション: has-a (分割)
  • getter/setterとはなんだったのか - プログラマーの脳みそ

    Javaのgetter/setterのお話。 僕は当時を語るには若すぎるのだけど、過去を振り返って書いてみる。当時を知る人は誤りがあれば指摘してほしいし、情報があればコメントなりトラックバックなりして欲しい。前世紀の話というのは今となっては探すことがなかなか難しくなりつつある。 「privateな変数にpublicなアクセサを定義する」? - ネットの海の片隅で getter/setterとは何か Javaのオブジェクトにフィールドがあったとして、そのフィールドに値を設定するメソッドがsetter(せったー)、そのフィールドの値を取得するメソッドがgetter(げったー)と呼ばれる。慣習としてsetterはsetXXX(int value)といった様にsetから始まる名前をつけ、引数はひとつ。戻り値はvoid型。getterはgetXXX()といった様にgetから始まる名前をつけ、引数はな

    getter/setterとはなんだったのか - プログラマーの脳みそ
  • nullチェックは、ifですべきかtry/catchですべきか?

    「Javaの高速化の方法」というページに、次のような高速化手法が書かれていました。 文字列がNULLかどうかの判断は IF文を使用せずに 例外処理NullPointerException で置き換える if文の場合です。 if(obj == null) { /* process */ } try/catchの場合です。 try { /* process */ } catch (NullPointerException e) {} たまにこういう謎の高速化手法を教えてもらうのですが、どうしてもすぐには信じられないので少し調べました。 ifとtry/catchのオーバーヘッドは? Stack Overflowに、ドンピシャな質問がありました。 Java if vs. try/catch overhead 読んでみると、「例外処理は例外的な処理に使うものだから、通常のフローでnullになるような

    nullチェックは、ifですべきかtry/catchですべきか?
    pipehead
    pipehead 2013/08/29
    > 結論、nullである確率が高い場合はifが高速だが、nullでない確率が高い場合はtry/catchの方が高速。しかしながら、普通に使う分にはほとんど誤差。
  • Mozilla Re-Mix: Firefoxから[Java Deployment Toolkit]プラグインを削除する方法。

    Firefoxには、ウェブサイトの閲覧に必要ないくつかのプラグインがインストールされています。 このようなプラグインはシステムにインストールされているツールやソフトウェアによって様々なものがインストールされていますが、時には意図していないものや明らかに不要であることがわかっているものもあります。 このように使わないプラグインは無効にするのが手っ取り早い方法ですが、ほとんどのプラグインには削除ボタンが用意されておらず、リストに表示しないようにするにはちょっとした手間が必要となります。 今回はそんなプラグインの中から、開発者でもない限りはほぼ不要と思われる「Java Deployment Toolkit」を削除する方法をご紹介したいと思います。 Javaをインストールされている方なら、Firefoxに「Java Deployment Toolkit」プラグインを見つけることができると思いますが

  • volatileってなんだろう - ぼっち勉強会

    目的 「volatileって何?」という質問があり、自分の理解も曖昧だったので復習してみた。 勉強内容 volatileって? 何の意味があるの? コンパイラの最適化(置き換え)を抑止する コンパイラの最適化(リオーダー)を抑止する スレッドが値を参照する際に、必ず最新の値を見るようにする volatileって? 修飾子です。次のようにフィールドに対して付けます。 public class Hoge { public volatile int num; } 何の意味があるの? ぼくは次のように理解していますが、まだ自信はありません。 コンパイラの最適化(置き換え)を抑止する コンパイラの最適化(リオーダー)を抑止する スレッドが値を参照する際に、必ず最新の値を見るようにする Javaでは3つ目の説明ばかり見るのですが、これは結果として他のも対応されるからなのかな? まだよく分かっていません

    volatileってなんだろう - ぼっち勉強会
  • 負数の剰余を計算してはならない - おともだちティータイム

    負数が含まれる剰余を計算した場合、言語に跨がって一意な結果が得られない。 -5 % 3 5 % -3 C -2 2 C++ -2 2 Java -2 2 Ruby 1 -1 Python 1 -1 Common Lisp 1 -1 さて、なぜこんなことが起きるのかというと、剰余には複数の定義が存在するからである。 m ÷ n = q … rこの r を剰余と言うが、 r の範囲が 0 ≤ r < n 最小非負剰余 -n/2 ≤ r < n/2 絶対値最小剰余 の二つの定義があり、一般的には前者の「最小非負剰余」を用いるようである。 m が負数、 n が正数の場合は、先程の表にあるプログラミング言語は以下のように分類される。 絶対値最小剰余 C C++ Java 最小非負剰余 Ruby Python Common Lisp しかし、最小非負剰余では r が正数になる必要があり、剰余の結果が

    負数の剰余を計算してはならない - おともだちティータイム
    pipehead
    pipehead 2012/04/09
    絶対値最小剰余: C, C++, Java; 最小非負剰余: Ruby, Python, Common Lisp
  • PCに残ったJavaランタイムの残骸を除去する「JavaRa」 | OSDN Magazine

    多くのPCにインストールされているJavaのランタイム(JRE)には、アップデート時に旧バージョンを削除しないという問題があることが知られている。これは互換性確保のためなのだが、不要なファイルがシステムに残されるのを嫌うユーザーもいるだろう。そこで利用したいのが「JavaRa」である。 JavaRaは不必要になった古いバージョンのJREを根こそぎ除去してくれるシンプルなツールだ。単にファイルを消すだけではなく、レジストリのエントリも修正してくれるため、痕跡を残さずPC内をクリーンアップできる。また、JREを最新バージョンへ更新する機能や、不必要なJREの関連ファイル・データを削除する機能もある。 システムドライブの空き容量が少ないとWindowsの動作が緩慢になったり、アプリケーションが不安定になったりしかねない。Javaの更新時にはJavaRaを利用して容量の確保を心がけたい(図1)。

    PCに残ったJavaランタイムの残骸を除去する「JavaRa」 | OSDN Magazine
  • 『JavaRa』はJavaを更新し、古いバージョンを削除してくれるポータブルツール! | ライフハッカー・ジャパン

    Windowsのみ: 『JavaRa』は、もう古くなってしまって必要がないにも関わらずPCの中に密やかに存在しているJava Runtime Environment (JRE)を削除し、さらにオプションで最新バージョンにアップデートしてくれる軽量ユティリティ。シンプルながらも確実な仕事をしてくれます。 多くのJavaベースのアプリにはJava runtimeのコピーが含まれていたり、違うバージョンがインストールされていたりするのですが、全てをインストールしておく必要はありません。『JavaRa』はJREを最新バージョンにアップデートし、不要となった古いバージョンを削除。 使い方も簡単で、VistaまたはWindows 7の管理者モードでアプリを起動させ、「Remove Older Version」と書いてあるボタンをクリックすれば処理が開始されます。また、スタートアップのエントリーやSun

    『JavaRa』はJavaを更新し、古いバージョンを削除してくれるポータブルツール! | ライフハッカー・ジャパン
  • 値渡しと参照渡し (と参照の値渡し) - ぐるぐる~

    値渡しと参照渡しは、分かってしまえば何も難しいところはないんだけど、分かるまでにちょっとした壁があるというかなんとうか・・・ てことでちょっとまとめておきますねー 値渡し (call-by-value) と参照渡し (call-by-reference) の違い 値渡しと参照渡しの違いは、「呼出し元の値自体を変更できるかどうか」と説明されることが多い。 しかし、例えば Java ではミュータブルなオブジェクト *1 を渡した場合、呼出し元の値自体を変更できるという勘違いをする可能性があるため、この説明はあまり好ましくない。 そのため、参照渡しを「呼出し元の別名を渡している」と覚えるのが分かりやすいと思う。 値渡しは「何かの値をコピーして渡している」と覚える*2。 Java の場合 Java には値渡ししか存在しないが、「参照型」のためにややこしく感じる。 参照型は参照渡しとは無関係で、C

    値渡しと参照渡し (と参照の値渡し) - ぐるぐる~
    pipehead
    pipehead 2009/06/03
    > 参照渡しを「呼出し元の別名を渡している」と覚えるのが分かりやすいと思う。 値渡しは「何かの値をコピーして渡している」と覚える
  • スコープとエクステントまとめ - t2ru's blog

    ABCLのソースを読んでるうちにスコープとエクステントについてだんだんわかってきたので、自分なりに少しまとめてみた。合ってるかどうかはわからないので、すべてに?がついていると考えてください。 スコープ アクセス可能な場所的範囲 エクステント アクセス可能な時間的範囲 言語 種別 スコープ エクステント コンパイラ・インタプリタでの検索方法(典型例) 実装上の領域(典型例) C ローカル(auto)変数 ブロック内 ブロックに入って時点から出た時点まで 関数の変数宣言リスト スタック C ブロック内のstatic変数 ブロック内 プログラムの開始から終了まで 関数の変数宣言リスト データ領域 C トップレベルのstatic変数 ファイル内 プログラムの開始から終了まで コンパイル単位の変数宣言リスト データ領域 C グローバル変数 ファイル内、extern宣言により別ファイルの変数を参照可

    スコープとエクステントまとめ - t2ru's blog
    pipehead
    pipehead 2009/01/15
    スコープ: アクセス可能な場所的範囲; エクステント: アクセス可能な時間的範囲
  • 計算量を具体的に見てみる 2009-01-06 - きしだのはてな

    アルゴリズムの話では、計算量の解析がかかせません。 計算量はオーダー記法で表されますが、これは、データの入力量に対してどのくらい時間がかかるかをあらわしたものです。 こういった話はどのアルゴリズムのにも載ってるはずですが、具体的にどのようなプログラムを書くとそのオーダーになるかという記述はあまりありません。 ということで、やってみました。 計算時間表示のための共通処理を行うクラスは、一番最後に書いてます。 O(1) 計算時間がO(1)のアルゴリズムは、処理が入力の量によらない場合です。 配列の要素のアクセスや、ハッシュテーブルによるデータ検索、連結リストへの追加削除などがこれにあたります。 コードには入力量でのループが含まれません。 public class O1 extends ViewCompFrame{ @Override void compute(int n) { proc();

    計算量を具体的に見てみる 2009-01-06 - きしだのはてな
    pipehead
    pipehead 2009/01/06
    O(1), O(log n), O(n), O(n log n), O(n^2), O(2^n), O(n!)
  • 任意の底を持つ対数を計算する方法 - プログラマはサイコロを振らない

    多くのプログラミング言語では、任意の底を持つ対数を計算するために一工夫が必要だ。 PHP PHPで任意の底の対数得るのは簡単だ。log関数を用いて次のように書く。第二引数を省略するとネイピア数(自然対数の底)eが底となる。 <?php // 底が2、真数が10の対数値。 $value = log(10.0, 2.0); ?> しかし、このように書ける言語は少ない。 Java JavaではMath.logメソッドもしくはMath.log10メソッドを使う。前者は自然対数(底はネイピア数e)、後者は常用対数(底は10)の値を返す。しかし、任意の底について計算をするようなメソッドは用意されていない。そこで、数学で習った対数の底の変換公式*1を用いて任意の底を持つ対数を計算する。 (対数の底の変換公式) bは任意の底だ。この式を用いれば、任意の底を持つ対数も、自然対数や常用対数を用いて計算すること

    任意の底を持つ対数を計算する方法 - プログラマはサイコロを振らない
    pipehead
    pipehead 2008/08/06
    log() で底が指定できないときは底の変換公式を用いる必要あり
  • こんなプログラムはいやだ: 負の剰余 - bkブログ

    こんなプログラムはいやだ: 負の剰余 知人から次の式の計算結果はどうなるかという問題を出されました。 -3 % 5 3 % -5 -3 % -5 降参して答えを尋ねたところ、問題を出した方も答えを知らないことがわかりました。そこで、いくつかの言語処理系で結果を調べてみました。手元の環境 (Intel Xeon 上の Debian GNU/Linux sarge) で調べると2つのグループに分かれました。 C (GCC 3.3.5) Java (Sun JDK 1.5.0_05) PHP 4.3.10-16 Emacs 22.0.50.2 Ruby 1.8.2 Python 2.3.5 Perl 5.8.4

  • #とは : JavaA2Z

    記号のひとつ。 Javaプログラムでは特定の機能を持たないため、基的に使用することはない。 一応「記号」のため、変数名等の識別子に使用することはできない。 その他に、Javaでは、特定のクラスの非staticメソッド及び非staticフィールドを「文章表現」する場合にこの表記を使用することがある。 たとえば、StringクラスのtoString()メソッドを「String#toString()」と表記する。 ただし、あくまで文章表現であり、当然プログラム中では使用できない。 また、十分広まっている記法とは言い切れないため、あらゆる場面で通用するとは限らない。 一般には「ナンバー」、つまり番号を意味する記号として使用される。 たとえば「#3」は「ナンバー3」もしくは「3番」という意味となる。 // Sample.java public class Sample { public stati

    pipehead
    pipehead 2005/06/02
    > Javaでは、特定のクラスの非staticメソッド及び非staticフィールドを「文章表現」する場合にこの表記を使用することがある。たとえば、StringクラスのtoString()メソッドを「String#toString()」と表記する。
  • 1