タグ

javaに関するHHRのブックマーク (166)

  • トラブルに備えるJVMオプション - n-agetsumaの日記

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

    トラブルに備えるJVMオプション - n-agetsumaの日記
    HHR
    HHR 2019/08/28
  • Java Mixed-Mode Flame Graphs で Java の CPU ネックをフルスタックで分析する - ablog

    Brendan Gregg (NETFLIX の Senior Performance Architect) 作の Java Mixed-Mode Flame Graphs を使うと Java のプロセスが CPU ネックのケースで、Java アプリケーションコード、JVM(HotSpot VM)、Linux Kernel のどのレイヤーのどの関数がボトルネックになっているかを簡単に特定することができます。 以下は GitHub - martint/jittest: Demonstrate JIT compiler issue in java 7 のワークロードを実行して Flame Graphs で可視化したものです。 以下は Java One 2015 での Brendan Gregg のスライドです(YouTube もあります)。 JavaOne 2015 Java Mixed-Mo

    Java Mixed-Mode Flame Graphs で Java の CPU ネックをフルスタックで分析する - ablog
    HHR
    HHR 2019/04/16
    http://www.brendangregg.com/FlameGraphs/cpuflamegraphs.html#Java がちゃんと更新されているからここは参考程度に。
  • IBM Developer

    IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.

    IBM Developer
    HHR
    HHR 2019/04/15
    javaagent
  • JavaでよくつかうCollection実装クラスの仕組みと特性 - Qiita

    ArrayList~配列によるList~ ArrayListはその名の通り、配列(Array)によるListの実装です。 内部で配列を持っており、配列に対してデータの格納や参照、挿入などを行います。 そのため、ArrayListの特性を知るためには配列の特性を知る必要があります。 そもそも配列とは 配列はメモリ上に連続した領域を確保するものです。 その一番の特性は添え字による参照が高速にできることです。 領域が連続しているので、先頭アドレス、添え字、1つあたりのデータサイズさえわかれば、参照したいアドレスを以下の式で求めることができます。 ArrayListの内部処理 配列はこのように連続した領域を確保する必要があるため、来であれば最初に決めた要素数から変更することはできません。 しかし、ArrayListでは動的に要素を追加していくことができるようになっています。 ArrayListで

    JavaでよくつかうCollection実装クラスの仕組みと特性 - Qiita
    HHR
    HHR 2019/04/12
    絵的でわかりやすい。ArrayList, LinkedList, HashSet, HashMap
  • JacksonでJSONを生成する - Qiita

    Jacksonとは JSONをJavaで取り扱うためのいろいろなクラスやインターフェースを提供してくれるAPI。 Jacksonには以下の3つのjarが用意されている。 Jackson Core ストリーミング、パーサー、ジェネレータ機能を含むパッケージ Jackson Annotations アノテーションが用意されたパッケージ Jackson databind データバインディングとツリーモデルを提供してくれるパッケージ これらの説明は次のリンクで JSONの解説 JSON - Wikipedia JSONホーム Jacksonうんぬん Jackson Home <-- 昔はあったんですが、今はもうないようです Jackson Github Jacksonの便利な使い方 [初心者向け] - Qiita JsonFactoryクラス Jacksonのファクトリークラス。 createGe

    JacksonでJSONを生成する - Qiita
    HHR
    HHR 2019/03/06
    class mappingしない場合はJsonFactory.createGenerator()を使う
  • ヤフーにおけるJava事情を軽くご紹介します

    ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。LINEヤフー Tech Blog はじめに こんにちは。第8代黒帯〜プログラミング言語(Java)〜 の森下と申します。 ヤフーでは、最近はJavaで書かれたさまざまなOSSの利用や貢献がされていたり、サービス開発でもJavaが使われることが増えてきているなど、社内でのJava利用が拡大してきています。 その背景には、ヤフーにおける標準言語の一つとしてJavaが位置付けられていることや、システムが大規模になるにつれて静的型付けやコンパイルなどできっちり作れるという利点が活きてくる点、また社内で利用できるPaaS環境(Pivotal Cloud Foundry)でもSpring Bootベースのアプリケーションがサポートされていて親和性があるといったことからだと思い

    ヤフーにおけるJava事情を軽くご紹介します
    HHR
    HHR 2019/03/06
  • 心地良すぎるモックライブラリ Mockito 〜その1〜 - A Memorandum

    EasyMockとの違い Eclipse での利用に際して org.mockito.Mockito モックの利用と妥当性検証 スタブメソッドの定義 引数の照合 メソッド呼び出しの妥当性検証 voidメソッドから例外を返却 API的に EasyMock と大きな違いはありませんが、使用感としては格段に心地良い Mockito。 [:W150] 家 http://mockito.org/ のドキュメント(というかJavaDoc)をベースにメモ。 EasyMockとの違い Mockito では record モードと replay モードを切り替える必要がない Mockito で作成するモックは常に、EasyMock で言う NiceMock となる スタブメソッドの妥当性検証が常にオプション扱い 大きくは以上となります。具体的に、EasyMock では import static org.e

    心地良すぎるモックライブラリ Mockito 〜その1〜 - A Memorandum
  • Java の double を素直な String にしたい、E 要らない - Qiita

    Java でいろんな double を普通に文字列にするのが簡単にいかなかったのでメモ。限られた需要だと思うので今後参照するか微妙だが。 ゼロがいくら並んでもいいので、指数表記はやめて素直な文字列にして欲しい問題 最初に結論 BigDecimal#toPlainString() を使う: double d1 = 0.00000000000000000000000000000000000000000123456789012345678901234567890d; double d2 = 1234567890123456789012345678900000000000000000000000000000000000000000000d; double d3 = 1234567890.1234567890123456789d; System.out.println(BigDecimal.valu

    Java の double を素直な String にしたい、E 要らない - Qiita
    HHR
    HHR 2018/12/21
    BigDecimal#toPlainString() を使う
  • 【Java】BigDecimalをちゃんと使う~2018~ - Qiita

    Java9でBigDecimal#ROUND_~系がやっと@Deprecatedになりましたね。 にもかかわらず、未だにBigDecimalを解説するブログやエントリで、BigDecimal#setScale・BigDecimal#divideなどを説明するときにBigDecimal#ROUND_~系を利用して説明されるのはなんなんですか?それ全部、Java9で@Deprecatedですよ? と、最近モヤモヤするので記事書くことにしました。 まずは基的なことから。 生成・Factoryメソッド 基的に以下の方法で生成する。 BigDecimal value = BigDecimal.valueOf(1234.567);// 数値系からの生成 BigDecimal value = new BigDecimal("1234.567");// 文字列から生成

    【Java】BigDecimalをちゃんと使う~2018~ - Qiita
    HHR
    HHR 2018/12/21
    BigDecimal
  • Javaでの数値計算の誤差や限界値 - kmkのメモ帳

    int型の計算誤差 int型同士の[掛け算、足し算、引き算]で誤差が発生するのはint型の最大値を超えてしまった場合か、最小値を下回ってしまった場合のみです。尚、当たり前ですが少数点を含む数値はだめです。整数に限ります。 int型の最大値 = 2147483647 int型の最小値 = -2147483648 この値を超えないよう注意さえすればint型では掛け算、足し算は誤差なく実施できます。 ただし、int型は小数点を切り捨てるため、割り算では大抵誤差が発生します。 例:1/2 = 0.5 0.5はint型では0として扱われるため 1/2 = 0 となってしまう。 double型の誤差について double型では値を格納する際に誤差が発生する可能性があります。 そのため、どのような計算でも誤差が発生する可能性があります。 尚、double型が扱える範囲は 最大値 1.79...E+308

    HHR
    HHR 2018/12/21
    BigDecimal
  • サマーインターンシップでHBaseをJDK 11で動かしZGCとの性能を評価してもらった話 - LINE ENGINEERING

    LINE株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。 LINEヤフー Tech Blog こんにちは、LINEのメッセンジャーアプリのサーバサイドエンジニアをしている'18卒のエンジニアのbitter_foxです。この記事はLINE Advent Calendar 2018の18日目の記事です。 弊社では夏休みの1ヶ月間〜2ヶ月間、学生に実際の業務を体験してもらう就業型のサマーインターンシッププログラムを実施しております。 弊社の就業型インターンでは社内のチームにジョインし、ある程度大きめのプロジェクトに1ヶ月間〜2ヶ月間、取り組んでもらいます。 私の所属するチームでも今夏、学生を受け入れ、「HBaseをJDK 11で動かしZGCを評価する」というプロジェクトに1ヶ月間取り組んでもらいました。 記事ではそのインタ

    サマーインターンシップでHBaseをJDK 11で動かしZGCとの性能を評価してもらった話 - LINE ENGINEERING
  • Homework Help Java Projects | Help with Java Assignment

    Fast & Effective Java Assignments Help – Get Your Programming Homework Done by Pro Coders You might hate Java. You might despise Java. You might be lenient towards Java. Or you might love Java (poor kid). In any case, sooner or later, you will need Java programming assignment help while studying this notoriously tricky language. Our service specializes in providing urgent programming assignment he

    HHR
    HHR 2018/12/07
    gson 絵的で良記事。JsonElement JsonObject JsonArrayの関係とか
  • JVMオプション | Java | 技術メモ | TOYATAKU WEB

    GCの種類と方式について [2013-08-23] GCとメモリ情報の出力 [2013-07-10] HotSpot関連 [2013-01-31] チューニング(性能改善)関連 [2016-07-14] new GC overhead limit exceeded [2013-01-31] -XXオプションについて、有効は「+」、無効は「-」と指定する。 自分がどのVMで起動しているか確認する場合は「java -version」コマンド。 Java VMのデフォルト値はJava HotSpot VM Optionsを参考に。 また、JVM は「クライアントVM」か「サーバVM」かを実行時に指定できる。 上記は指定しなかった場合、OSによってデフォルト値が異なるので、デフォルト値がどうなっているかは以下を参照する。 ・サーバークラスマシンの検出 GCの種類と方式について JVMでは、「Sca

    HHR
    HHR 2018/11/26
    G1GCではUseAdaptiveSizePolicyされる
  • Android版クックパッドアプリで採用している技術の現状確認 2018年版 - クックパッド開発者ブログ

    目次 目次 はじめに 技術選択の各論 開発環境 targetSdkVersion minSdkVersion Kotlinの導入 HTTP Client Dependency Injection Image Loader Debugging Android Emulator on Jenkins コードレビューbot リリースエンジニアリング おわりに はじめに 技術部の門田( @_litmon_ )です。 Androidクックパッドアプリで採用している技術の現状確認 2015年版 から3年、Androidアプリ開発を取り巻く環境も大きく変わってきました。 エントリでは、以前のエントリからこれまでにAndroidクックパッドアプリにあった技術選択の推移や、現在の状況を記していきます。 技術選択に関する基的な方針などは変わっていないので、前回のエントリ( Androidクックパッド

    HHR
    HHR 2018/11/19
    “Volley内部で使用されているApache HTTP ClientがDeprecatedになっていたため、昨年メインとなるCookpad APIとの通信層に使用するコアライブラリをOkHttp3に置き換えました”
  • 最近のJava界隈はとても良い感じ - Qiita

    はじめに 私はこれまでのエンジニア歴で継続的にJavaを使い続けていますが、以前と比較すると使い勝手の面で格段に良くなっていると実感しています。 また、JJUG、JSUGなどで講演を聞いたりしたりする中で、個人的に最近のJava界隈は非常に進歩的で良い感じだと感じています。 そんな中、「Javaは人口が多いだけで特別に採用するメリットが無い」「Javaはレガシーで生産性が低い」というツイートを見かけたので、その反論を込めて私の考えを書き連ねたいと思います。 なお、以下で述べる内容には、Javaが良いというよりは、特定のフレームワークが良いだけ、というものもありますが、あくまでJava「界隈」について述べているのであしからず 。 最近のJavaの良いと思う点 言語仕様、標準ライブラリの改善 プロジェクトの立ち上がりの早さ 型安全性の活用 マイクロサービスアーキテクチャへの対応 パフォーマンス

    最近のJava界隈はとても良い感じ - Qiita
  • Java 11正式版がリリース、本バージョンからOracle JDKのサポートは有償に。OpenJDKで無償の長期サポート提供は現時点で期待薄 - Publickey

    Java 11正式版がリリース、バージョンからOracle JDKのサポートは有償に。OpenJDKで無償の長期サポート提供は現時点で期待薄 Java 11正式版がリリースされました。 Java 11は2017年9月から始まった6カ月ごとのJavaバージョンアップサイクルからちょうど1年となるバージョンであり、また2014年3月に登場したJava 8以来、4年半ぶりに長期サポート(LTS:Long Term Support)対象となるバージョンでもあります。 JDK 11 General Available Release is Out! #OpenJDK #JDK11 Download: https://t.co/GxeXcyGUiv Release Notes: https://t.co/h5tqx7d9U5 pic.twitter.com/XByIzINXCj — Java (@j

    Java 11正式版がリリース、本バージョンからOracle JDKのサポートは有償に。OpenJDKで無償の長期サポート提供は現時点で期待薄 - Publickey
    HHR
    HHR 2018/09/26
  • オワコンであるVectorとListの同期の話 - プログラマーの脳みそ

    JJUG Night Seminarへ行ってきました - 虎塚にあったjava.util.Vectorの話。 java.util.Vectorは随分前にオワコン化していて、今、新たにVectorを使ってコードを書く人がいたら優しく諌めてあげるべきシロモノ。 「VectorとArrayListだとArrayListの方が同期化されていなくて速いです!」と習った人も多いのではないかと。 public synchronized E get(int index) { if (index >= elementCount) throw new ArrayIndexOutOfBoundsException(index); return elementData(index); } これはJDK7u7のVectorのコードのうちget()の部分の抜粋なのだけど、synchronizedメソッドになってる。s

    オワコンであるVectorとListの同期の話 - プログラマーの脳みそ
    HHR
    HHR 2018/09/09
    synchronized Collections.synchronizedList()
  • Javadoc ドキュメンテーションコメントの書き方 - Qiita

    出展: プログラム内のコメントの書き方 | 天才まくまくノート はじめに(モチベーション) こんな話があります。あるソフトウェア企業が一人の技術者の採用を決めました。その決め手となった理由は、「公開しているオープンソースソフトウェアのドキュメントが素晴らしかったから」です。彼らは、作成されたドキュメントを見ただけで、その人には技術力がある、一緒に働いて欲しいと判断したのです。 ある国の言語を学ぶために読み書きの練習が必要であるのと同様に、コーディング技術をつけるには、多くの良質なコードを読み、多くのコードを書くことが必要です。設計ドキュメントを書くのも同じことです。日頃から分かりやすいドキュメントを書く鍛錬を怠らず、長年の経験を積んでいかなければ、良質なドキュメントを書く力は身に付きません。今日からドキュメンテーションコメントをバリバリ書いて、ドキュメンテーション力を付けていきましょう。

    Javadoc ドキュメンテーションコメントの書き方 - Qiita
    HHR
    HHR 2018/09/01
  • Java8のラムダ式を理解する - Qiita

    Runnable runner = () -> { System.out.println("Hello Lambda!"); }; 見慣れてないとギョッとするかもしれませんが、実は既存のJavaの機能を利用して構成されています。 ここではラムダ式を分解して成り立ちから理解してみましょう。 ラムダ式の省略についてはこちら。 【Java】ラムダ式の省略まとめ 1. ラムダ式を分解してみる ラムダ式はローカルクラスと無名クラスという仕組みを利用しています。 1-1. ローカルクラス ローカルクラスとはメソッドの処理中でクラスを宣言して利用できる仕組みです。 public static void main(String[] args) { class Local { public void sayHello() { System.out.println("Hello!"); } } Local l

    Java8のラムダ式を理解する - Qiita
    HHR
    HHR 2018/09/01
    “無名クラスから更に「new Runnable(){}」と「public void run」を省略してラムダ式”
  • インターフェースと抽象クラスの使い分け、活用方法 - Qiita

    はじめに インターフェースとか抽象クラスとか、使い方をよく分かっていませんでした。 色々試行錯誤してみて、最近その恩恵というものが分かってきたので、自分なりの解釈を記そうと思います。 その考え方は正しい、間違っているとか是非コメントお待ちしております。 今回は言語はC#で書きます。 JavaPHPといった他のオブジェクト指向言語でも基は通じるのでパッと見わかるような内容になっていると思います。 最初にインターフェース、抽象メソッドについて概要。 その次に実際のコードとしてどう活用していくかを記していきます。 そもそもインターフェースとか抽象クラスってなんぞや まず、コードベースで見ていきます。

    インターフェースと抽象クラスの使い分け、活用方法 - Qiita
    HHR
    HHR 2018/08/26
    対して抽象クラスの抽象メソッドはpublicまたはprotected。 protectedを強制できるので内部で呼び出すメソッドの実装を強制することが可能