スタートアップ課題に関するkasmakaのブックマーク (22)

  • マルチスレッドプログラミング

    プログラムがどうやって実行されるか考える場合、考え方の一つに「ロボットがプログラムの命令を順次解釈していく」というものがある。 このロボットはプログラム内の各命令を順番に調べていき、その命令を正確に解釈することによってプログラムを実行する。 if-else などの分岐が起こった場合や、for, while などで繰り返しを行う場合、メソッドを呼び出す場合も同様である。 ロボットの通り道を矢印で表したが、この矢印はプログラムの実行中、一の糸のように途切れることなく続いている。if, for などの繰り返し命令、メソッド呼び出しなどの命令を解釈する場合にも、ロボットがたどった道は一の制御の流れで表すことができる。 このような一連の制御の流れを、スレッド (thread of control) と呼ぶ。 これまでのプログラムは、基的にスレッドが一だけであった。 java.lang.Thr

    kasmaka
    kasmaka 2013/05/19
    Thread割込み処理
  • Lesson3:足りない信頼性はアプリが自分で確保する

    Lesson1~2で見たように,UDPはアプリケーション同士を橋渡しするポート番号だけを管理し,それ以外のしくみを省略することで「軽さ」を実現している。 このため,ただ単純にUDPを使ってデータを運ぼうとすると,データはどんどん送り出せるけれど,相手に届く保証はまったくないという,信頼性がきわめて低い通信になってしまう(図3-1)。 図3-1●UDPそのものは通信の信頼性を高めるしくみを備えていない UDPの仕事はポート番号の管理だけで,紛失したパケットを再送するといった通信を制御するしくみは備えていない。パケットが途中でなくなろうが順番が入れ替わろうが,まったく関知せずやりとりを続ける。 [画像のクリックで拡大表示] 送信側のUDPスタックは,UDPパケットを送ったら,送りっ放しであとは知らんぷり。受信側のUDPスタックも,UDPパケットが届こうが届くまいがおかまいなしだ。 こんな通信し

    Lesson3:足りない信頼性はアプリが自分で確保する
  • 標準出力を JTextArea に出力する - As I like it.

    System.setOut(PrintStream out) で標準出力の出力先を変更できる。 JTextArea に転送するような PrintStream を作れば、JTextArea がコンソール代わりに。 JTextArea に出力する際は、Swing のイベントディスパッチスレッドにのせる必要がある。 import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.OutputStream; import java.io.PrintStream; import javax.swing.JFrame; import javax.swing.JTextArea; import javax.swing.SwingUtilities; import javax.swing.WindowCons

    標準出力を JTextArea に出力する - As I like it.
  • とほほのJava入門 - とほほのWWW入門

    画面上にボタンなどの部品を配置する際に使用するレイアウトアルゴリズムには下記のものなどがあります。 FlowLayout - 流し込みレイアウト GridLayout - グリッドレイアウト BorderLayout - ボーダーレイアウト BorderBagLayout - ボーダーバッグレイアウト CardLayout - カードレイアウト BoxLayout - ボックスレイアウト

  • ActionEvent

    イベント処理の流れを間単に確認しておきます。 まずボタンやテキストなどのコンポーネントが何のイベントを受け取るのかを指定します。これは例えばボタンについて考えてみると、ボタンが押されたとか、ボタンの上でマウスが動いたなどの様々なイベントが絶えず発生していますが、必要の無いイベントについては処理する必要が無いため、自分で処理したいイベントだけ受け取るようにするためです。 次に、各コンポーネントなどにイベントが発生した場合の処理の記述ですが、Javaではイベントを処理する専用のクラスを用意し、その中で処理を記述します。その処理を記述するクラスがリスナーと呼ばれるものになります。 ※Sunのホームページでは下記のような図で記述されています。 例としてActionEventを見てみます。ActionEventはボタンを押すといった動作を行った際に発生するイベントですが、記述方法としては下記のように

    kasmaka
    kasmaka 2013/04/23
    swing actionevent
  • SwingでJavaに強くなる

    SwingのキホンJFrameを使う SwingでJavaに強くなる(1) JavaはサーブレットやJSPだけじゃない!Eclipseを使ってSwingを学ぶことで、Javaの基GUIアプリケーションの基スキルを高めよう

  • JavaSE チャットシステムを作ろう - @//メモ

    kasmaka
    kasmaka 2013/04/13
    参考プログラム
  • とほほのJava入門 - とほほのWWW入門

    import java.util.*; class ArrayListTest { public static void main(String[] args) { ArrayList list = new ArrayList(); list.add("AAA"); list.add("BBB"); list.add("CCC"); for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); } } } 下記などのメソッドが用意されています。 list.add(o) - オブジェクト o を配列の末尾に追加する list.add(n, o) - オブジェクトを n で指定した場所に追加する list.get(n) - n番目の要素を得る list.remove(n) - n番目の要素を削除する list.

  • ファイル操作-Java - へっぽこメモ

    へっぽこメモ うん、なんかメモ的なアレ トップページページ一覧メンバー編集 ファイル操作-Java 最終更新: toriaezuikioi 2010年09月15日(水) 14:04:09履歴 Tweet ファイル操作 Javaの1.4から追加されたという、Channelを使って下記を行うよよよ。 ・書き込み ・読み込み ・コピー ・書き・読みの際のエンコーディング 〜おまけ〜 Channelが無かった(知らなかった)時に作った、読み書きメソッドを公開。 注:使用は自己責任(バグっても責任は取りません。) ・読み書きメソッド 環境 ・Java 6 update 21 書き込み /** * ファイル書き出しメソッド * 引数1:String path → ファイル名までのPath(C:\test.txt) * 引数2:String data → 中に書き込むデータ * */ public vo

    ファイル操作-Java - へっぽこメモ
    kasmaka
    kasmaka 2013/04/11
    参考プログラム
  • 「New I/Oで高速な入出力」第1回 New I/Oをご存じですか

    Java SEには便利な機能が数多くあるのですが,新しい機能ほど活用されていないのではないでしょうか。筆者がJ2SE 1.4であまり使われていないのではないかと感じる機能を挙げてみます。 Assertion New I/O Image I/O Preferences API Logging API AssertionやLogging APIは,JUnitLog4Jなどのオープンソースのプロダクトで置き換えられるので,それほど使われていなくても不思議ではありません。 しかし,JPEGのイメージを出力するために,いまだにcom.sun.image.codec.jpeg.JPEGImageEncoderクラスを使用しているのは腑に落ちません。J2SE 1.3の頃に作られたアプリケーションであればわかりますが,J2SE 1.4以降に作られたアプリケーションではImage I/Oを使うべきではない

    「New I/Oで高速な入出力」第1回 New I/Oをご存じですか
  • 5. ノンブロッキングチャネル (2)

    5.2. ノンブロッキング入出力 次に、ノンブロッキング入出力を利用したサーバアプリケーションの記述方法を説明します。 ノンブロッキングにすることのできるチャネルは SelectableChannel クラスを継承しています。SocketChannel クラスや ServerSocketChannel クラスも SelectableChannel クラスを継承しています。ブロックモードを変更するには configureBlocking メソッドを用います。新規作成された SelectableChannel は必ずブロックモードです。configureBloking(false) を呼び出すことでノンブロッキングなチャネルとなります。 channel.configureBlocking(false); ノンブロッキングモードのチャネルでは、入出力操作を行っても処理がブロックされません。たとえ

    kasmaka
    kasmaka 2013/04/10
    参考プログラム
  • SelectionKey (Java Platform SE 6)

  • 5. ノンブロッキングチャネル

    5.1. SocketChannel/ServerSocketChannel 従来の java.net パッケージを使用した入出力では、ソケットの accept メソッドや read メソッドなどを呼び出すと接続や入力があるまで処理が待ち状態になりました。 このような入出力待ちの動作のことをブロックといいます。 接続の待ちうけでブロックが発生するため、複数のネットワーク接続を同時に処理するサーバアプリケーションを実装するにはマルチスレッドを利用する必要がありました。 マルチスレッドを利用したサーバアプリケーションの作成方法はネットワークプログラミング3章で説明しています。 しかしスレッドの生成はそれなりにコストのかかる処理であり、アクセスの多いサーバではその影響が無視できないくらい大きくなります。 そこで NIO ではブロックの発生しない入出力を実現する方法が提供されました。 ブロックされ

    kasmaka
    kasmaka 2013/04/10
    参考プログラム
  • https://blogs.oracle.com/yosshi/entry/grizzly%E3%81%AE%E6%A6%82%E8%A6%81_2_java_new_i

    kasmaka
    kasmaka 2013/04/10
    参考プログラム
  • J2SE, v1.4 の新機能 New I/O Channel 基礎編

    今回取り上げる Channel は、ファイルや Socket といった今までストリームとして扱っていたものに対するコネクションを表すインタフェースです。 今まで java.io パッケージで提供されていた InputStream/OutputStream やその派生クラス群があるのに、なぜ Channel を新たに導入したのでしょうか。 一番大きな理由はやはりパフォーマンスのようです。 ストリームだとちまちまと読み書きを行うイメージがありますが (あくまでもイメージです ^^;;)、Channel をインプリメントしたクラスではガバッと読んで、ガバッと書き込みを行うという感じです。まとめて行うので、その分効率が上がるというわけです。ここで活躍するのが前回の Buffer です。 実際には java.nio.channels.Channel インタフェースには読み込みや書き込みのメソッドは定

  • 【マルチスレッド】マルチスレッドに引数を渡す方法 - 夢に純粋に

    今回はマルチスレッドに引数を渡す方法を紹介する。 マルチスレッドを実行するときに引数を渡すには、マルチスレッドクラスの中でクラス名と同じ名前のメソッドを宣言する。 すると、マルチスレッド作成時にそのメソッドが実行され、引数で渡した変数がマルチスレッド内の変数に格納される。 class multiThread extends Thread{ //変数の宣言 private int multiThreadInt; //スレッド作成時に実行される処理 public multiThread(int multiThreadInt){ this.multiThreadInt = multiThreadInt; } //スレッド実行時の処理 public void run(){ } //スレッド終了時に呼び出し public void stopThread(){ } } マルチスレッドを作成するときは、

    【マルチスレッド】マルチスレッドに引数を渡す方法 - 夢に純粋に
    kasmaka
    kasmaka 2013/04/08
    スレッド参考
  • Javaの道:入出力(4.バッファ入出力)

    概要 バッファ入出力は主にファイル入出力関連クラスと共に使用されます。バッファ入出力を行うことにより以下のような利点があります。 FileReaderクラス、FileInputStreamクラス、InputStreamReaderクラスのreadメソッドは呼び出されるたびにファイルにアクセスするため、効率が良くありません。BufferedReaderクラス、BufferedInputStreamクラスのreadメソッドは呼び出されると読み込めるだけのデータを読み込み、バッファにためておきます。そして、readメソッドが呼び出されるたびにバッファからデータを読み込みます。バッファ内のデータがなくなったときにだけ、ファイルにアクセスします。そのため、オーバーヘッドが少なく効率が良いです。 FileWriterクラス、FileOutputStreamクラス、OutputStreamWriterク

    Javaの道:入出力(4.バッファ入出力)
    kasmaka
    kasmaka 2013/04/04
    ストリーム参考
  • Javaでファイルオープン:文字コードや追加モードなど - 万象酔歩

    メモです。 Java(の標準のライブラリ)はファイルオープンが極めて煩わしい ものとなっています。 しかしながらファイルのオープンを嫌うと、システム構成や デバッグ法などが硬直したものとなり、大きな損失 を生みだす元となります。 ファイルオープンの心理的壁を乗り越えるため、 次の観点でまとめます。コピペで動きます。 テキストかバイナリか 読み込みか書き出しか 書き出しの場合追加(APPEND)か否か テキストの場合文字コードセットは何か 文字コードセットは決して無視してはならない重要な指定です。 さらに、ファイル生成時にフォルダも生成する形も載せます。 クラスは全てjava.ioパッケージのものですので、 import java.io.*; でインポートし使用できます。もちろん*を使わず一個一個書いても構いません。 Javaには解体子がありませんので、資源の後始末(close)はクラスの利

    Javaでファイルオープン:文字コードや追加モードなど - 万象酔歩
    kasmaka
    kasmaka 2013/04/04
    ストリーム参考
  • バイトストリーム

    バイナリの書き込み FileWriterクラスによる、文字列の書き込みなどは非常に便利なものでした しかし、もしプログラムが直接利用するデータを保存したい場合 文字列であれば、読み書きするたびにデコードやエンコードをしなければいけません そうではなく、直接整数や浮動少数を読み書きしたい場合 まず最初に、バイナリデータとしてファイルに書き込む必要があります つまり、テキストファイルではなくバイナリファイルの生成が必要なのです バイナリデータの書き込みは、java.ioパッケージのFileOutputStreamクラスがあります このクラスを用いれば、byte型の配列などを自由に書き込むことができます コンストラクタは次のものがあります public FileOutputStream( File file ) throws IOException public FileOutputStream

    kasmaka
    kasmaka 2013/04/04
    ストリーム参考
  • Java Platform SE 6

    kasmaka
    kasmaka 2013/04/04
    クラス参考