タグ

javaに関するkma83のブックマーク (93)

  • 「うわっ…私のアプリ、遅すぎ…?」 スレッドダンプでJavaアプリケーションのボトルネックを調査しよう | TECHSCORE BLOG | TECHSCORE BLOG

    「うわっ…私のアプリ、遅すぎ…?」 スレッドダンプでJavaアプリケーションのボトルネックを調査しよう こんにちは、寺岡です。 今回は、アプリケーションのトラブルを調査する際に役立つスレッドダンプについて書いてみたいと思います。 スレッドダンプって何? スレッドダンプとは、ある時点の全てのスレッドのスタックトレースを出力したものです。 スタックトレースとは現在のスレッドのメソッドの呼び出し階層を出力したもので、例外が発生した時なんかによく見かけるアレのことです。 javaプロセス内部では複数のスレッドが並列に処理を行っています。 Tomcatなどのサーブレットは複数のスレッドを使ってリクエストを処理しますし、シングルスレッドのシンプルなアプリケーションでもGCなどの処理は専用のスレッドが処理を行っています。 スレッドダンプを取得するとは、プロセス内の全スレッドに対して「ちょっとお前ら、今何

    kma83
    kma83 2017/03/28
    java ボトルネック スレッドダンプ ロードアベレージ
  • 言語によってちょっと違うFuture/Promiseをまとめてみた(1) - Qiita

    はじめに 最近非同期プログラミングに触れる機会が増えてきていますが、言語ごとに使い方が少しずつ異なるので、よく使うJavaJavaScript(ECMAScript6)、Scala についてまとめてみました。 まとめる前の時点ではこんな程度の理解でした。 Future は get するとブロックするやつだよね! Promise は コールバック登録するやつで Future とセットで使うんだよね! スレッドに責任持っているクラスとの連携が必要なはずだけどググらないとわからないや…… エラー処理とかどうするんだろう? Java 1.5 以降の場合 1.5 以降、java.util.concurrent 配下に、非同期実行に関連するインターフェースが定義されています。 Future<V> get で結果Vが返ってくるまで待つ cancel で キャンセル。isCanceled、isDone

    言語によってちょっと違うFuture/Promiseをまとめてみた(1) - Qiita
  • IntelliJ IDEAでpropertiesファイルを日本語(各国の言語)で表示する - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

    IntelliJ IDEAでpropertiesファイルを日本語(各国の言語)で表示する - Qiita
    kma83
    kma83 2016/10/04
    properties
  • Play Frameworkでも使われているコンフィグライブラリが非常に便利 - Qiita

    Javaで設定ファイルというと、propertiesファイルを使うのが一般的かと思いますが、key=value形式だけしか使えなかったり、 テスト環境や番環境でほんの一部だけ値を切り替えたい場合でも、ほとんど同じファイルを環境の数だけ作らないといけなかったりと、結構面倒です。 Play Frameworkでも使っている、「Typesafe Config」というライブラリを使うと、これらの問題が解決できるようでしたので、まとめてみました。 一応Githubにもコミットしてあります。地味にGit初めて使いました。 https://github.com/2KB/config-test01 Typesafe Configとは ・Java製のコンフィグファイルを使用するためのライブラリ。 ・Scalaの創始者が立ち上げた、Typesafe社が作っている。 ・jarファイルを一個読み込むだけで簡単に

    Play Frameworkでも使われているコンフィグライブラリが非常に便利 - Qiita
  • Java7のtry-with-resources構文でcloseし忘れを防ぐ - Qiita

    FileInputStream is = null; FileOutputStream os = null; try{ is = new FileInputStream("hoge.txt"); InputStreamReader ir = new InputStreamReader(is,"Shift_JIS"); os = new FileOutputStream("hige.txt"); OutputStreamWriter ow = new OutputStreamWriter(os,"UTF-8"); int tmp; while((tmp = ir.read()) != -1){ ow.write(tmp); } }catch(Exception e){ e.printStackTrace(); }finally { is.close(); os.close(); } try(

    Java7のtry-with-resources構文でcloseし忘れを防ぐ - Qiita
  • [Java] getResourceAsStreamの使い方

    リソースファイルの利用方法を紹介します(Java version 1.6.0)。 getResourceAsStreamメソッドを利用すると、リソースファイル(設定ファイルなどのこと)を簡単に読み込むことができます。 以下の説明では、リソースファイルとして app.properties を利用します(参考: java.util.Propertiesの使い方)。 app.propertiesの内容は以下のとおりです。 name=MyApplication インスタンス経由 app.properties を読み込むサンプル TestApp は以下です。 package sweng.sample; import java.io.*; import java.util.*; public class TestApp { // コンストラクタ public TestApp() throws IOEx

    kma83
    kma83 2015/11/21
  • Java: PreparedStatement で like を扱う時の注意点 - toyfish.blog

    JDBC には PreparedStatement クラスが用意されていて、SQL 文の一部をパラメータ化することができる。 パラメータ部分のエスケープ処理は JDBC ドライバが行ってくれるので、SQL インジェクション対策として最近では必須になりつつあるこのクラス。しかし、like 演算子を使う場合は、ちょっと注意が必要だ。 Lv 1 ネットで検索してみると、失敗例としてひっかかってくるのがこのパターン。 Statement stmt = conn.prepareStatement("select * from items where name like '?%'"); stmt.setString(1, "hatena"); ResultSet rs = stmt.executeQuery();name が "hatena" で始まる行を選択しようとしているわけだけど、これだと例外が

    Java: PreparedStatement で like を扱う時の注意点 - toyfish.blog
  • “Stop the World”を防ぐコンカレントGCとは? (1/2) - @IT

    “Stop the World”を防ぐコンカレントGCとは?:現場から学ぶWebアプリ開発のトラブルハック(2)(1/2 ページ) 連載は、現場でのエンジニアの経験から得られた、APサーバをベースとしたWebアプリ開発における注意点やノウハウについて解説するハック集である。現在起きているトラブルの解決や、今後の開発の参考として大いに活用していただきたい。(編集部) Full GC問題の時代が再び到来! それまで順調に動いていたはずのWebアプリケーションが、ある時突然、応答を返さなくなる。そして、運用者があたふたしている間に、何事もなかったかのように再び動き出す。 Javaで構築したシステムにかかわる者ならば誰しもが体験するであろう事象、そうFull GC(ガベージ・コレクション)だ。Full GCが行われている間、すべてのアプリケーションスレッドは停止する。この事象は“Stop the

    “Stop the World”を防ぐコンカレントGCとは? (1/2) - @IT
  • Apache SparkをJavaアプリケーションから使う。

    Apache SparkをJavaから操作 下記のSparkのプログラミングガイドを参考にしました。 Spark Programming Guide – Spark 1.2.0 Documentation 前回使ったSparkの対話シェルはScalaでしたが、今回は使い慣れているJavaで試してみます。Javaの対話シェルは用意されていませんが、SparkのJavaライブラリは用意されています。 JavaでSparkContextの用意 ライブラリはMavenから導入できます。最新バージョンのSparkで試します。 org.apache.spark spark-core_2.10 1.2.0 ライブラリが導入できたら、SparkContextを作成します。 「高速な分散処理エンジンApache Sparkの操作を対話シェルで試してみる!」では、対話シェルの起動時点でscという変数にSpar

    Apache SparkをJavaアプリケーションから使う。
    kma83
    kma83 2015/06/30
    Apache SparkをJavaアプリケーションから使う。 | 三度の飯とエレクトロン
  • Java で簡単マルチスレッドプログラミング - にょきにょきブログ

    仕事でマルチスレッドを扱うようになったので備忘録として Executors 関連のメモを残しておく。 あるタスクを別スレッドで実行したい時、Executors クラスを使えば自前でスレッドの管理をすること無く簡単に並列処理を行えるようになる。 もちろん完全に簡単になったわけではなく、マルチスレッドプログラミングの困難さは健在だが、自前でスレッドの管理をしない分バグを仕込む可能性も減るだろう。 はじめに Executors はタスクと呼ばれる処理の最小単位を別スレッドで実行する仕組みである。マルチスレッドなのでシングルスレッドに比べると複雑性は若干上がるものの、通常のマルチスレッドプログラミングに比べれば少ない複雑性、高い安全性を備える。そして何より、パフォーマンスの向上が期待できる。 この仕組みはジョブキューモデルそのものである。ジョブはタスク、キューは後述する Executor に相当す

    Java で簡単マルチスレッドプログラミング - にょきにょきブログ
    kma83
    kma83 2015/06/02
    Java で簡単マルチスレッドプログラミング - にょきにょきブログ
  • Jenkins使い方メモ - Qiita

    1.544 APサーバ Tomcat 7.0.42 インストール war ファイルのダウンロード Welcome to Jenkins CI! | Jenkins CI にアクセスして、 war ファイルをダウンロードする。 JENKINS_HOME の設定 環境変数 JENKINS_HOME を設定する。 この JENKINS_HOME には、バージョン管理システムからチェックアウトしてきたファイルなどが保存される。 デフォルトでは、実行ユーザのホームフォルダ以下に .jenkins というフォルダが作成され、そこが利用される。 デプロイ Tomcat の webapps フォルダにダウンロードした war ファイルを配置する。 動作確認 Tomcat を起動して http://localhost:8080/jenkins/ にアクセスする(ホストとポートは適宜読み替え)。 簡単なプロジ

    Jenkins使い方メモ - Qiita
    kma83
    kma83 2015/03/03
    メール通知の設定でお世話になった
  • http://sehermitage.web.fc2.com/program/java/ByteArray.java

    kma83
    kma83 2015/02/23
    バイト配列同士のxor演算メソッドとか
  • [java]符号無し演算にはまる

    プロトコル解析するときは、だいたい符号無し1byteで扱っていって、必要があれば符号有りにしたりすると思う。 いつも忘れるのだが、Javaは符号無し、が無い。 "byte"すらも、符号付き1byte型だ。 なんとなく話の方向の想像がついただろうが、まあ書かせておくれ。 C#で書いて動いているFeliCa Lite-Sの相互認証処理を、Androidに移植している。 実装は終わってデバッグしているのだが、どうにもMAC(W)計算が合わない。 半日あれこれ調べたところ、書込カウント値が正しく計算できていないことに気付いた。。 Lite-SからはMACが強化されて、書込カウント値を使うようになった。 これが24bit(3byte)ある。 Read without EncryptionでWCNTレジスタを読込み、その中の3byteを整数変換するだけだ。 C#では、こんな感じで書いている。 int

    kma83
    kma83 2015/02/06
    FeliCa Lite-Sの相互認証まわりのネタ。