タグ

関連タグで絞り込む (969)

タグの絞り込みを解除

Javaとjavaに関するyassのブックマーク (1,355)

  • Garbage Collection Optimization for High-Throughput and Low-Latency Java Applications

    Garbage Collection Optimization for High-Throughput and Low-Latency Java Applications High-performance applications form the backbone of the modern web. At LinkedIn, a number of internal high-throughput services cater to thousands of user requests per second. For optimal user experience, it is very important to serve these requests with low latency. For example, a product our members use regularly

    Garbage Collection Optimization for High-Throughput and Low-Latency Java Applications
  • きしださんの文字列連結のやつをCharBufferでやってみる - AOEの日記

    多分色んな人が既にやっていて何番煎じになっているか分かりませんが、きしだ (id:nowokay / @kis) さんの「StringBuilderを使ったクソコードはどこまで遅いか 」「Java8時代の文字列連結まとめ」について自分もちょっと遊んでみました。 というのも今日の昼飯時に社内でもこの話が話題になって、そこで弊社の某モヒカンより「性能面でセンシティブな場面で String を使うことを考えるな。CharBuffer 使え。」との言葉を賜りましたからです。 と言うわけで以下のコードを試してみました。 public static String charBufferJoin() { CharBuffer buffer = CharBuffer.allocate(7995); buffer.put('['); for (int i = 0; i < strarray.length; +

    きしださんの文字列連結のやつをCharBufferでやってみる - AOEの日記
  • 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
    yass
    yass 2014/04/07
    " オブジェクトアロケーションが激しいようなアプリケーションでは92%だと手遅れになることがあるのでCMSInitiatingOccupancyFractionは下げたほうが良い。70とか。"
  • 第13章 パフォーマンスチューニング

    まず wiki の「Performance Tuning」を読んでください。この記事には、RAM、圧縮、JVM の設定など、パフォーマンスに関係する重要な要素についての全般的な説明があります。記事を読んだら、ここへ戻ってきてください。以下では、さらに詳しい情報へのポインタを示します。 Todd Lipcon は、「Avoiding Full GCs with MemStore-Local Allocation Buffers」と題したプレゼンテーションの中で、特に HBase の読み込み時によく発生する、すべてが止まったかのような状態になるガベージコレクション、すなわち CMS が失敗するケースと、古い世代のヒープがフラグメンテーション化するケースの 2 つを取り上げています。最初のケースに対処するには、-XX:CMSInitiatingOccupancyFraction を追加してデフォ

    yass
    yass 2014/04/07
    " CMS が失敗するケースに対処するには、-XX:CMSInitiatingOccupancyFractionを追加してデフォルトより低い値を設定し、CMS をデフォルトよりも早めに開始します。60 パーセントまたは 70 パーセントから開始するようにします "
  • JVM Internals

    This article explains the internal architecture of the Java Virtual Machine (JVM). The following diagram show the key internal components of a typical JVM that conforms to The Java Virtual Machine Specification Java SE 7 Edition. The components shown on this diagram are each explained below in two sections. First section covers the components that are created for each thread and the second section

    JVM Internals
    yass
    yass 2014/04/06
    " This article explains the internal architecture of the Java Virtual Machine (JVM). The following diagram show the key internal components of a typical JVM that conforms to The Java Virtual Machine Specification Java SE 7 Edition. "
  • Doma 2 - Java 8 時代のDBアクセス

    自己紹介 中村 twitter: @nakamura_to GitHub: nakamura-to Java 8の新機能 ラムダ式 Stream API Date and Time API Optional デフォルトメソッド これ全部 Doma 2 で使えます! Doma とは? S2Daoから発展したDBアクセスライブラリ 2 way SQL 注釈処理 依存ライブラリ 0 Doma 1 は Java 6 以上で動作 Doma 2 はDoma 1 を Java 8 に最適化 ラムダ式 TransactionManager tm = ... tm.required(() -> { Emp emp = dao.selectById(1); emp.setAge(emp.getAge() + 1); dao.update(emp); }); Stream API @Dao public int

  • Java8からはHashMapの性能のためにComparableを実装しておいた方がいい - interprism's blog

    こんにちは、andoです。 ついにJava8がリリースされたのでさっそくインストールしてみました。 Java8になってラムダ式を始め、多くの機能が追加されたのですが、既存機能についても性能改善が行われています。 人気がありそうな新機能の紹介は他の人にお任せして、今回はHashMapの変更点について確認したいと思います。 はたして既存のプログラムはJava8で実行するだけで、その恩恵を享受できるのでしょうか。 java.util.HashMap HashMapといえば使用頻度1、2を争うコレクションクラスでデータの検索、追加がO(1)で行え、 辞書的に使える事から簡易的なDTOやキャッシュ、データベースのレコード構造、さらにはListですむところでさえ数値をキーにして使う兵もいるというくらい良くも悪くも色々使えます。 それが速くなるのであれば、既存のプログラムも速くなるはず、ということでさっ

    Java8からはHashMapの性能のためにComparableを実装しておいた方がいい - interprism's blog
    yass
    yass 2014/04/05
    " 実装的にはハッシュコードの衝突ですね。 Map.Entryの単方向リストの連結が深くなると赤黒木に作り変え、検索、追加の走査の回数を削減するようです。 "
  • Linuxでjdkをwgetする方法 - Qiita

    JDKのダウンロードは、普段ここから行いますが、ダウンロードにはOracleのLicenceの同意にチェックする必要があります。 同意はしているのですが、ansibleやchefなどで同意チェックを画面からせずに直接wgetしたい時の方法です。 仕組みは単純でAcceptしたというCookieがリクエストに含まれていれば同意したとみなされ、URL直指定でもダウンロードできます。 以下のコマンドはそのCookieを含むリクエストを送りますので、利用する場合はOracleのLicenseに同意した上で利用して下さい。 下記にないURLは、サイト上で"Accept"した後、ダウンロードしたいファイルを右クリックして確認できます。 コピペして実行出来るものを置いておきます。 (※ダウンロードは自己責任でお願いします) (※2015/11/2変更:最新バージョンに変更) ※注意: 古いバージョンはア

    Linuxでjdkをwgetする方法 - Qiita
    yass
    yass 2014/04/05
    " JDKのダウンロードにはOracleのLicenceの同意にチェックする必要があります。 同意はしたのでLinuxのシェルで直接wgetしたい時の方法です。"
  • Comprehensive Overview of Storage Scalability in Docker

    Accelerate the development and deployment of enterprise AI solutions.

    Comprehensive Overview of Storage Scalability in Docker
    yass
    yass 2014/04/01
    " The SystemTap example script, cycle_thief.stp, lists what interrupts and other tasks run on the same processor as the important task. The cycle_thief.stp script provides the following pieces of information: "
  • [Java]Apache MINA sshdでオレオレsshサーバを作ろう - 2014-03-30 - 新・たけぞう瀕死の日記

    GitBucket 1.12ではssh経由でのリポジトリアクセスをサポートしていますが、これに使用しているのがApache MINAのsshdです。 https://mina.apache.org/sshd-project/index.html Apache MINAはNIOを使用したTCP/IP、UDP/IPベースのネットワークサーバアプリケーションのためのフレームワークで、sshdはMINAを使用して実装されたsshサーバということになります。MINAのsshdは比較的簡単に再利用できるようになっており、Javaアプリケーションでsshを使用した暗号化通信を行いたい場合に使用することができます。 Javaを使用したOSSのsshdの実装を提供しているのは僕の知る限りMINAだけであり(クライアントはいくつか実装がありますが)、JenkinsやGerritなどもこれを使ってsshサーバの

    [Java]Apache MINA sshdでオレオレsshサーバを作ろう - 2014-03-30 - 新・たけぞう瀕死の日記
  • トラブルに備えるJVMオプション - n-agetsumaの日記

    以前の記事でトラブルが起きた後の初動対応を書いてみたが、いざトラブルに遭遇すると、まず再起動してからどうするか考えるケースが多いと感じている。しかし何も情報がないと『情報がない/再現方法が不明』などの理由からそのままお蔵入りになってしまう。今回はトラブルに事前に備えるために、地味だけど大切なJavaVMのオプションをまとめてみる。 GCログの出力とローテーション OutOfMemoryError発生時のヒープダンプ自動出力と出力パス設定 JavaVMクラッシュログの出力パス設定 JVMオプションの設定 (OpenJDK/OracleJDK) JavaVMにはGCおよびヒープメモリの状態をロギングする仕組みや、OufOfMemoryError時にヒープダンプを自動的に出力するような障害に備えて自動的に情報を出力する機能がある。おすすめのオプション*1は以下の通り。 java -Xms?g -

    トラブルに備えるJVMオプション - n-agetsumaの日記
    yass
    yass 2014/03/30
  • Java インナークラスを外部でインスタンス化する - Qiita

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

    Java インナークラスを外部でインスタンス化する - Qiita
    yass
    yass 2014/03/27
    " Piyo b = a.new Piyo(); "
  • OrangeSignal CSV – Java CSV ライブラリ

    OrangeSignal CSV とは OrangeSignal CSVCSV 入出力操作を簡易化させる高機能で便利な Java プラットフォーム向けの CSV ライブラリを提供します。 OrangeSignal CSV はパワフルであらゆるシチュエーションにマッチ可能な OSS (オープンソース・ソフトウェア) の CSV ライブラリです。 機能・特徴 区切り文字、囲み文字、エスケープ文字など CSV 形式を詳細に設定可能 (CsvConfig) 区切り文字、囲み文字、エスケープ文字やその他もろもろの CSV 形式に関する設定が可能です。 設定可能な項目は以下の通りです。 区切り文字 囲み文字 (無効化も可) エスケープ文字 (無効化も可) 項目値内の改行置換文字列 NULL 文字列 (大文字・小文字を区別する/しないの指定も可) 項目値前のホワイトスペースを除去 項目値後ろのホワ

    yass
    yass 2014/03/26
    " OrangeSignal CSV は CSV 入出力操作を簡易化させる高機能で便利な Java プラットフォーム向けの CSV ライブラリを提供します。"
  • JavaのJDK/JRE/Server JREの使い分け - ろば電子が詰まつてゐる

    先日、OracleのWebページからJDKとJREをダウンロードしようとしたら、「Server JRE」というのが用意されていることに気がついた。 このServer JREとは、いったい何じゃらほい? というのが今回のテーマ。なお基的にLinuxサーバ環境で考えます(Windows, Solarisは無視)。 JDKとJRE はじめに、複雑怪奇なJavaパッケージについて少し解説しておく。「Javaをインストール」という場合には、開発キットであるJDKとランタイムであるJRE、どちらをインストールするかが問題になる。しかしこの日記を読んでいるような人ならばJava開発者であろうから、JDKを入れてしまえばほぼ間違いなく問題は解決する。 なぜなら、JDKはJREを内包しているので、JDKをインストールすれば自動的にJREも入るからである。というわけで開発者なら、何も考えずにJDKを入れてし

    JavaのJDK/JRE/Server JREの使い分け - ろば電子が詰まつてゐる
    yass
    yass 2014/03/22
    " Javaの脆弱性のほとんどは、JavaアプレットなどWebブラウザのプラグインで動作する部分 / Server JREは、Webブラウザ向けプラグイン絡みのライブラリがごっそり削除 / これで余計なセキュリティリスクを無くしているわけだ "
  • デシリアライズ速度の比較 ByteBuffer vs DirectBuffer vs Unsafe vs C - Blog by Sadayuki Furuhashi

    OpenJDK や Hotspot VM には sun.misc.Unsafe という内部APIがあり*1、これを使うと ByteBuffer.getInt や ByteBuffer.getLong よりも高速にバイト列から整数値をデコードできるという。これを駆使することで、Cで実装された拡張ライブラリに匹敵する速度を出せるらしい。 それが当なら、データ圧縮やハッシュ関数、シリアライザ/デシリアライザなどの実装を高速化できる。例えば、lz4 や xxhash のJava実装が Unsafe API を使用している*2:jpountz/lz4-java Prestoも、中間データのシリアライズ/デシリアライズにはすべて Unsafe API を使っている*3。 そこで、実際にベンチマークしてみた。 ベンチマーク内容 10MBのランダムなバイト列を生成する 先頭から1バイト読み出す その1バ

    デシリアライズ速度の比較 ByteBuffer vs DirectBuffer vs Unsafe vs C - Blog by Sadayuki Furuhashi
    yass
    yass 2014/03/12
    "sun.misc.Unsafe という内部APIがあり、ByteBuffer.getInt や ByteBuffer.getLong よりも高速にバイト列から整数値をデコードできるという。これを駆使することで、Cで実装された拡張ライブラリに匹敵する速度を出せるらしい"
  • Write SQL in Java 8 using ResultSet Streams.

    SQL in Java 8: ResultSet Streams. With Java 8, writing SQL will change fundamentally, no matter what API you're using. List<Schema> result = new ArrayList<>(); try (Connection c = getConnection()) { String sql = "select schema_name, is_default " + "from information_schema.schemata " + "order by schema_name"; try (PreparedStatement stmt = c.prepareStatement(sql); ResultSet rs = stmt.executeQuery())

    Write SQL in Java 8 using ResultSet Streams.
  • GitHub - haosdent/jcgroup: Cgroup on JVM

    public class ExampleTest { private static final Logger LOG = LoggerFactory.getLogger(ExampleTest.class); private static Admin admin; private static Group root; private static Group one; private static Group two; @BeforeClass public static void setUpClass() { try { admin = new Admin(Constants.SUBSYS_CPUSET | Constants.SUBSYS_CPU); root = admin.getRootGroup(); one = admin.createGroup("one", Constant

    GitHub - haosdent/jcgroup: Cgroup on JVM
    yass
    yass 2014/03/03
    " jcgroup is a cgroup wrapper on JVM. You could use this library to limit the CPU shares, Disk I/O speed, Network bandwidth and etc of a thread. "
  • Javaコーディング規約追補 - torutkのブログ

    最近GoogleJavaコーディング規約を公開したとニュースで知り、目を通してみたメモを書きます。 また、以前Javaのコーディング規約について調べたメモを次のURLに書きましたが、それ以降に公開されたJavaコーディング規約を探してみました。 http://www.alles.or.jp/~torutk/oojava/codingStandard/ Googleが策定・公開したJavaコーディング規約 先月、InfoQの日語訳の記事で、Googleが最近Javaコーディング規約を公開したことを知りました。 InfoQの記事(日語訳)GoogleJavaコーディング規約 (Google)http://google-styleguide.googlecode.com/svn/trunk/javaguide.html さらっと目を通してみたメモを箇条書きで列挙します。 ファイルのエンコ

    Javaコーディング規約追補 - torutkのブログ
  • GitHub - FasterXML/jackson-module-afterburner: (DEPRECATED) -- moved under `jackson-modules-base`

    yass
    yass 2014/02/24
    " Jackson module that uses bytecode generation to further speed up data binding (+30-40% throughput for serialization, deserialization) "
  • Why & How I Write Java | Steve Wedig's Notes

    A few weeks ago I posted a software developer’s reading list. An important criterion for this list was technology independence because most software development skills transcend whatever tools we are currently using. That being said, our choice of tools is quite important. This article explains why I currently build software using Java (and its platform). I also describe how I write Java: techniqu

    Why & How I Write Java | Steve Wedig's Notes
    yass
    yass 2014/02/23