タグ

ブックマーク / www.02.246.ne.jp/~torutk (11)

  • CPUクロックに基づく相対時刻の計測

    [ C++で開発 ] CPUクロックに基づく相対時刻の計測 CPUのクロックに基づき電源ONからの相対時刻を取得する方法を調査し記述します。最近のCPUは、クロックに従ってカウントアップするレジスタを保持しているので、このレジスタの値を読み出すことでCPUが起動してからのクロック数を取得することができます。例えば1GHzの動作周波数のCPUであれば、分解能は1ns(ナノ秒)となります。非常に高精度な分解能です。 2012-09-22 TSCの種類について追記 RDTSCP命令について追記 VisualC++のコンパイラ組み込み関数__rdtsc/__rdtscpについて追記 Intel x86系CPU RDTSC CPU命令を直接利用 Intel x86系のCPUAMDのAthlon等も含む)では、CPUクロックごとに加算される64bitのタイムスタンプカウンタ(IA32_TIME_ST

  • C++コーディング標準リンク集

    [ C++で開発 ] C++コーディング標準リンク 書籍・インターネット上で、さまざまなコーディング標準・プログラミングガイドが公開されています。 C++言語コーディング標準 C++は1998年にISOで標準化されました。この際、言語仕様も変わっているので、標準化前のドキュメントは内容が古いことがあります。 書籍 日語 Effective C++ 第3版-プログラムとデザインを改良するための55項目("Effective C++, Third Edition"、Scott Meyers著) 最近ではC++の静的解析ツールで標準チェックルールにもなっており、C++のコーディング・ガイドラインの標準文書となっています。 C++ Coding Standards - 101のルール、ガイドライン、ベストプラクティス("C++ Coding Standards"、Herb Sutter、Andr

  • java.util.concurrentパッケージを用いたマルチスレッドプログラミングについて

    はじめに Java SE 6時点では、マルチスレッドプログラミングを行う素材として、当初から持つThreadクラスと、Java 5で追加されたjava.util.concurrentパッケージがあります。また、Swing GUI上でスレッドを扱うjavax.swing.SwingWorkerクラスもJava SE 6から追加されています。 Java SE 6におけるスレッドの生成方法 java.lang.Threadクラスのインスタンスをnewで生成し、start()メソッドを呼ぶ java.util.concurrent.Executorインタフェースを実装するクラスのインスタンスを取得し、execute()などの別スレッドで実行を依頼するメソッドを呼ぶ javax.swing.SwingWorkerクラスのサブクラスを定義し、そのインスタンスをnewで生成し、Swingスレッド(Eve

  • Swing Application Framework (JSR-296)

    Swing Application Framework概要 はじめに Swing Application Frameworkとは Swing Application Frameworkとは、複雑なGUIツールキットであるSwingライブラリの上で簡単にGUIアプリケーション・プログラムを作成するために提供されるフレームワークです。Swing Application Frameworkは、2008年リリース予定の次期Java Standard Edition(Java SE 7)に標準搭載することを目指してJava標準化プロセス(JCP:Java Community Process)においてJSR-296として仕様が策定され、そのリファレンス実装が現在開発されている途上です。 1998年にリリースされたJava 2(JDK 1.2)に標準搭載されているGUIツールキットSwingは、柔軟性が

  • JNI:Java Native Interface

    JavaからC/C++言語を呼び出す、またはその逆の方法として、JNI(Java Native Interface)というAPIが提供されています。記事では、JavaからC/C++言語をネイティブメソッドとして呼び出すコードとそのコンパイル・リンク・実行手順、およびC/C++言語からJavaを呼び出すコードとそのコンパイル・リンク・実行手順を記します。 JNIに必要なもの JNIは、Javaで記述する部分とC/C++で記述する部分があります。Java側はJDKがあればよいのですが、C/C++側はC/C++コンパイラが別途必要となります。 Windows環境で必要なもの Windows環境のJavaVMはネイティブメソッドをDLL(Dynamic Link Library)という形で用意されていないといけないので、DLLを構築できるC/C++コンパイラが必要となります。 Windows環境

  • Java How To Programming

    hits since 2002.1.3 Java Standard Edition Java 2,Standard Edition, v1.4(JDK1.4) 時代のHello Worldプログラム Java Platform Standard Edition 6(JDK6)時代のHello Worldプログラム import文は単独の型インポート宣言とオンデマンドの型インポート宣言のどちらを使用するべきか? タイマを使う。周期的に実行したいこと、一定時間後に実行したいこと。 整数型について 配列 コレクションを扱うプログラミングに役立つTips 型に安全な定数の作り方。シリアライズでも大丈夫なように作るには? 外部プロセスの起動方法 システムプロパティ総覧計画 JDBCでテーブルの中身を見る JAASでユーザ認証と権限制御 スタブ不要なRMI パッケージ・バージョン 文字列操作と正規表現

  • Timerを使う。周期的に実行したり、一定時間後に実行したり

    javax.swing.Timer Swingのクラスライブラリの1つとして提供されている。一定時間後にイベントを実行することができる。これは、Swingのイベントスレッドで実行されるので、描画に関わる処理を記述していてもSwingスレッドと干渉しないで済むのがメリット。実行はSwingのイベントキューに載せられるため、正確性には欠ける。 java.util.Timer 汎用のタイマとして提供されている。処理を周期的に実行したり、一定時間経過後に実行したり、指定した日時に実行したりと多彩な機能を持つ。Swingとは無関係なので、ヘッドレス(GUIが無い環境)でも使用できる。Timer専用スレッドで管理され、正確性もjavax.swing.Timerよりは高い。しかし、java.util.Timerの実装上欠点がいくつかある。まず、スケジューリングにシステムクロックを使用するので、システムク

  • インクルードガード

    [ C++で開発 ] インクルードガード 少し込み入ったプログラムを開発していると、ヘッダファイルを2重にincludeしてしまい、コンパイルエラーとなることがあります。ここでは、その回避方法として使われる内部インクルードガードと、include処理時間を大幅に削減しコンパイル時間を短くする冗長インクルードガードの2つを取り上げます。 (追加)最近のGCCでは#pragma onceも無警告で使用できるようになっているようです。 インクルードガードの必要性 2重インクルードの発生 まず、2重インクルードが発生する例を見てみます。

  • プロパティ・ファイルを読み込む

    プロパティ・ファイルを読み込む プロパティは、プログラム外部に定義したデータを読み込み、プログラム内で扱う仕組みで、いわゆる設定ファイルを実現するものです。java.util.Propertiesクラスによってその機能が提供されています。 プロパティ・ファイルの形式 プロパティ・ファイルの形式は、<キー> = <値>というテキスト形式とXML形式の2つがあります。また、テキスト形式については、文字コードがISO 8859-1ラテン文字で記述する方式と、任意の文字コードで記述し読み込み時に指定する方法があります。

  • CentOS 5をWindows上のVMware Playerで動かすメモ

    CentOS 5をVMware上にインストール Windows OS上に、無償であるVMware Playerをインストールし、その上でCentOS 5.xを動かす環境の構築メモです。 VMware playerのインストール 2009.3.1現在のVMware Player最新バージョンは、2.5.1です。が、VMware Toolsが添付されなくなってしまったので、一つ前のバージョン系列である、2.0.5をインストールします。 2009.11.23現在、VMware Player 3.0が最新バージョンです。以下の機能が付加され、随分と制約がなくなりました。これからVMware playerを使うならば、3.0系を推奨します。 VMware Toolsをネットワークインストール(ダウンロードも可) ゼロからOSをインストールする機能 ハードディスクの容量増減 CPU数が4つまで対応 C

  • Java SE 6 Mustang新機能

    [ Topページへ戻る ] [ Java SE SDKをビルドする ] Java SE 6 Mustang新機能 2005.10.20よりアクセス はじめに Mustang開発の主要テーマ リリース予定 JSR-270(Java SE 6追加仕様)で定義された新機能 JSR-199 コンパイラAPI JSR-269 アノテーションプロセッサー 参考URL JSR-250 標準アノテーション 新機能 コアクラス 文字列 ファイルI/O ネットワークI/O ユーティリティ JFC/Swing 全般 OSネイティブなルック&フィールにSwing対応を強化 Swingのサンプルプログラムを強化 レイアウト機能の改善 Swingのドラッグ&ドロップ改善 真のダブルバッファリングを提供 JTableでソート機能、ハイライト、フィルター機能を提供 Swingで別スレッドを扱うユーティリティクラスSwin

  • 1