タグ

JAVAに関するyoshi_kanagawaのブックマーク (39)

  • Java で画像サイズを変更する : まだプログラマーですが何か?

    最近はスマホのカメラの性能が上がり、その結果として画像ファイルサイズが大きくなりました。解像度が上がったことは嬉しいのですが、画像ファイルをウェブアプリなどにアップロードしようとする際に時間がかかったり、パケット通信量が増えてしまったりします。また送信先の API やシステム設定によってはアップロードサイズに上限が設定されていて、そのままでは送れなかったりすることもあります。 そんな場合に「画像を小さくしてから処理する」方法が考えられますが、Java によるその一例を紹介します。画像ファイルデータが img 変数にバイト配列で格納できているという前提で、横幅を 800 ピクセル、縦横比を変えずに高さをそれにあわせる形で変更するような処理内容を記述しています(こうすると、大抵 1MB 以下になります): byte[] img = null; //. この変数に画像データが byte 配列で格

    Java で画像サイズを変更する : まだプログラマーですが何か?
  • 画像リサイズ - Qiita

    はじめに 事前に以下のアプリケーションをインストールします。 ・ImageMagick Linux版/Windows版/Mac版があります。 http://www.imagemagick.org/script/binary-releases.php ※なお、JavaSEのjavax.imageio.ImageIOクラスを使用すると非常に簡単なのですが、出力される画質は実用に堪えません。 →[2016/02/04追記]saka1029さんにコメントでご教示いただいた方法だとめっちゃきれいです。ありがとうございます!(ImageIOさんごめんなさい) リサイズする画像は以下のファイルを使います。 実装例 サンプルでは、動作確認しやすいようにmainメソッドで実行できるようにしてあります。 結果だけを確認したい場合は、この記事の一番下のリンク先で使えるようにしてありますのでご覧ください。 imp

    画像リサイズ - Qiita
  • 【Java】画像のリサイズについて

  • 「JDepend」 パッケージ間の循環依存を調べる - プログラム日記

    Java のパッケージ間で循環依存が発生しているか調べるツールを探していたところ JDepend というツールが確認できました。ちょっと使い方だけメモしておきます。 ・JDepend http://clarkware.com/software/JDepend.html ※ JDepend は循環依存だけじゃなくて、パッケージ間のメトリクスを測定するツールみたいです。 1. ダウンロードする何はともあれダウンロード。以下から。 ・JDepend http://clarkware.com/software/JDepend.html#download jdepend-2.9.1.zip を適当なディレクトリに展開しておく ( 以下 JDEPEND_HOME )。 2. クラスパスを通すドキュメントに書いてますが「set CLASSPATH=%CLASSPATH%;%JDEPEND_HOME%\l

    「JDepend」 パッケージ間の循環依存を調べる - プログラム日記
  • 最強のJVMチューニング・ツール: GCログを可視化するGCViewerとリモート接続でプロファイリング可能なVisualVM

    まずは倍率を1000倍から5000倍に上げます。 Data Panelも一旦非表示にします。 さて、これを見ると、使用済みヒープと使用済みNew領域は比例しつつ一定の間隔で上下しています。 ここからは特異点は見えないので、一旦非表示にします。 イニシャル・マークレベル(黄色の線)も一定で、分析対象としづらいので非表示にします。 すっきりして少し見やすくなりました。 ここから、 最も時間がかかっているのはイニシャル・マーク イニシャル・マークは1分間に2回程度発生している ということが読み取れます。 イニシャル・マーク では、そもそも、コンカレントGCにおけるイニシャル・マークとは何なのでしょうか。 OracleのドキュメントのReviewing GC with the CMSによると、New領域から参照されているオブジェクトをマークするのだと。 Stop the Worldを伴い、マイナー

  • @IT:Javaパフォーマンスチューニング 第3回

    記事は、HP-UX Developer Edgeに掲載された記事を株式会社アットマーク・アイティおよび記事の筆者が独自の判断のもとに加筆・修正したものです。 今回は、Javaにおけるヒープ・メモリ管理の詳細を説明します。JVMのヒープ・メモリの中で、新しいオブジェクトと古いオブジェクトがどのように配置されるかを理解することで、ヒープ・メモリが有効に利用されているか否かを判断することができます。また、JVMが出力するガベージ・コレクションのログを解析し、オプションの指定によってヒープ・メモリのサイズを適切にチューニングする方法を紹介します。 Java ヒープ・メモリの構造 Javaにおけるガベージ・コレクションのメカニズムを理解するには、まずヒープ・メモリの構造を知っておく必要があります。 図1は、JVM におけるヒープ・メモリの構造を示したものです。この図が示すように、ヒープ・メモリの

    @IT:Javaパフォーマンスチューニング 第3回
  • JavaVMのメモリチューニング

    システムの処理性能を高めるには,基盤となるJavaVM自体のチューニングを適切に実施する必要があります。日立のJavaVMでは,2種類のメモリ空間を管理しています。 この章では,ガーベージコレクションと日立のJavaVMでのメモリ管理,およびJavaヒープとExplicitヒープのチューニングについて説明します。 <この章の構成> 7.1 ガーベージコレクションとJavaVMのメモリ管理の概要 7.2 フルガーベージコレクション発生を抑止するためのチューニングの概要 7.3 Javaヒープのチューニング 7.4 Javaヒープ内のTenured領域のメモリサイズの見積もり 7.5 Javaヒープ内のNew領域のメモリサイズの見積もり 7.6 Javaヒープ内に一定期間存在するオブジェクトの扱いの検討 7.7 Javaヒープの最大サイズ/初期サイズの決定 7.8 Javaヒープ内のPerma

  • TestNG

    Introduction TestNG is a testing framework designed to simplify a broad range of testing needs, from unit testing (testing a class in isolation of the others) to integration testing (testing entire systems made of several classes, several packages and even several external frameworks, such as application servers). Writing a test is typically a three-step process: Write the business logic of your t

  • JVMとGCのしくみ - ITエンジニアとして生きる

    先日職場でJVMの話をしてた。 ちょうどいい機会だからちょっとまとめたいと思う。 JVMの構成まずはJVMの構成について。JVMには3つの領域が存在する。 Permanent領域(非ヒープ領域) New領域(ヒープ領域) Old領域(ヒープ領域) Permanent領域にはJVMにロードされたクラスやメソッドの情報、New領域にはインスタンス化されたオブジェクトの情報、Old領域には寿命の長いオブジェクトの情報が管理される。(「寿命の長い」については後述のScavenge GCを参照。) Permanent領域は非ヒープ領域、New領域とOld領域はヒープ領域となる。 非ヒープ領域には基的にGCは走らず、JVM起動時に静的な情報が管理される。(※) 一方、ヒープ領域はインスタンス化されたオブジェクト情報といった動的な情報が管理され、GC対象となる。 ※ユーザ定義のクラスローダーが存在する

    JVMとGCのしくみ - ITエンジニアとして生きる
  • 「Java のヒープサイズ」についての簡単な説明

    Java のヒープ領域及び 非ヒープ領域、メモリ管理について簡単に説明いたします。 ヒープやヒープサイズはガーベジ・コレクション:GC ( Garbage Collection ) と密接な関連があります。以下のページも合わせて参照ください。 ガーベジ・コレクション:GC ( Garbage Collection ) についての簡単な説明と調査方法 Java のオブジェクトは、大きく分けて、New、Old 、Permanent というメモリ領域で管理されます。 新しいオブジェクトを格納するのが New 領域と呼ばれ、古いオブジェクトを格納するのが Old 領域と呼ばれます。 Permanent 領域にはクラスやメソッドなどの情報が格納されます。 ( これらは Permanent Generation, Tenured Generation, Young Generation とも

  • JVMヒープサイズのデフォルト値は?

    java.lang.OutOfMemoryError Javaアプリケーション運用中に結構な確立で遭遇してしまうエラーです。 どこの現場行っても対応しているような気がします。。 メモリ設計、パフォーマンスを意識したコーディング、大事です。 しかし、運用開始後にはいつも想定外の出来事が発生するもの。 ある程度の規模のシステムであれば、 使用するJVMのヒープサイズをアプリ起動時に適切に設定します。 Webアプリケーションであれば、TomcatやWeblogic等の起動オプション。 (-Xms, -Xmxをオーバーライドして設定) 先日、ヒープサイズを設定してない場合のデフォルト値は どうなるんだっけ?という話がでたので調べてみました。 ◆JVMヒープサイズのデフォルト値 ・J2SE 5.0以前 初期値:2MB 最大値:64 MB ・J2SE 5.0以降 初期値:物理メモリ

  • GlassFish v3(3.1.1)インストール、Eclipseプラグイン導入 - Diary of absj31

    GlassFish v3 (3.0.1) インストール - Shinya’s Daily Report Eclipse3.6 GlassFishプラグインの導入 - Shinya’s Daily Report この日時点での最新(v3.1.2)を導入しようと思ったのですが、Eclipseプラグインの方が対応してないっぽかったので1つ前のバージョンで構築。基的には上記エントリと変わらない流れなはず。 GlassFish v3(3.1.1)インストール 以下のページにアクセスし、インストーラ(glassfish-3.1.1-windows-ml.exe:63MB)をダウンロード。 GlassFish Server 3.1.1 ― Java.net はじめに:『次へ』を選択。 インストールのタイプ:『カスタムインストール』を選択。 インストール:『インストールと設定を行う』を選択。 インストー

    GlassFish v3(3.1.1)インストール、Eclipseプラグイン導入 - Diary of absj31
  • How to transform XML with XSL using Java

  • ClassLoader Leak Patterns

    9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...NTT DATA Technology & Innovation

    ClassLoader Leak Patterns
  • 解放されないリフレクションクラス - たぷつきません

    ある基幹システムを、Tomcat+Postgres+Tapestry+Seasar2+S2Tapestry+S2Daoの構成で開発したが、数日間連続稼動していると、パーマネント領域(以下Perm)がジワジワと減っていくという現象に悩まされている。Tenuredは十分ありGC/FullGC時の下限の平均は100MB前後に落ち着いている。にも関わらずPermは減るのだ。ヒストグラムを取ると判別可能クラス数は減っている時間帯でも、判別不可能クラス数は増加している。 ヒストグラムで取得できるクラス名を便宜上、判別可能クラス、判別不可能クラスという言い方にしている。判別可能なのはクラス名称が明らかなもの。javaasistによりEnhancedされたものも、AOPアライアンスでEnhancedされたものも判別可能としている。これに対してリフレクションによる、sun.reflect.Generated

    解放されないリフレクションクラス - たぷつきません
  • Struts2でPoiを使ったダウンロード - Java Solution会議室

    IT会議室 新規書き込み停止(2012年10月9日)のお知らせ @ITの会員制度「@ITクラブ・メンバーシップ」(@ITクラブ)は、10月9日より、弊社が運営するメディアの共通会員制度である「アイティメディアID」へ移行することになりました。これに伴い、@ITクラブのサービスの一部を変更させていただきます。 @IT会議室については、2012年10月9日をもって新規書き込みを終了いたしました(閲覧は引き続き可能です)。今後、質問や回答などは「QA@IT」(http://qa.atmarkit.co.jp/)をご利用くださいますよう、お願い申し上げます。 Struts2, S2JDBC, eclipseの環境でファイルのダウンロードのロジックを作っています。 JPS側でダウンロードボタンを押したとき、正しくファイルがダウンロードされるのですが、コンソールを見ると、 2011/09/24

  • 肥え続けるTomcatと胃を痛めるトラブルハッカー (1/3) - @IT

    肥え続けるTomcatと胃を痛めるトラブルハッカー:現場から学ぶWebアプリ開発のトラブルハック(8)(1/3 ページ) 連載は、現場でのエンジニアの経験から得られた、APサーバをベースとしたWebアプリ開発における注意点やノウハウについて解説するハック集である。現在起きているトラブルの解決や、今後の開発の参考として大いに活用していただきたい。(編集部) メモリリークと聞いて、良いイメージを思い浮かべる開発者は少ないだろう。経験したことのある人にとっては、思い出したくない過去の記憶がよみがえるかもしれない。もしかしたら、その単語を聞くだけで胃が痛くなる人もいるかもしれない。筆者もかつてはその1人であった。 前々回の記事では、WebサーバとTomcatの間の接続において、スレッド数の不整合により発生したトラブル事例を、前回はTomcatとDBサーバの間のトラブル事例を紹介した。今回もTom

    肥え続けるTomcatと胃を痛めるトラブルハッカー (1/3) - @IT
  • まじめにJVMチューニング: 第1回 まずは現状確認

    まじめにJVMチューニングに取り組む機会があったので、忘れないようにこの記事を書きました。 GCアルゴリズムやパラメータの説明はいろいろなサイトに掲載されていたのですが、 「どうやって取り組むか」「何を見れば良いか」は意外とまとまっていなかったので。 JavaScala製のアプリケーションはもちろんのこと、 Solr, ZooKeeper, Cassandra, Neo4J等jvm上で動くプロダクトを使う場合つねに 「JVMパラメータをどう設定するか」 という課題があります。 最近のミドルウェアでは、インストール時に最適なオプションを渡して javaを実行するようなシェルをつくるrpmを提供していたりしますが。 さて、今回私が取り組んだのはフルGC対策のためのチューニングです。 フルGCとは何かというと、 別名「Stop the World」と呼ばれ、全てのアプリケーション・スレッドを停

  • Tomcat - server.xml

    Tomcat(4.1.24対応)のserver.xmlについての解説です。 このファイルを修正したら、Tomcatを再起動する必要があります。 Webアプリケーション単位の設定は、各WebアプリケーションのWEB-INFディレクトリにある web.xmlで行うことができます。 要素の親子関係 Server server.xmlのルートになる唯一の要素(Element)です。 className 使用するサーブレットコンテナクラスを指定します。 このクラスは org.apache.catalina.Server インターフェイスを実装している必要があります。 省略すると、org.apache.catalina.core.StandardServer がデフォルトで使用されます。 port このサーバがシャットダウンコマンドを受け取るために待機するポート番号を指定します。 shutdown こ

  • Javaメモリ、GCチューニングとそれにまつわるトラブル対応手順まとめ - 日記のような何か

    GC周りでトラブルシューティングした際の経験や、Web等で調べたことをまとめてみる。 前提 ・JVMは、Sun Javaを想定。(他は使ったことないです。。。) ・Sun Java 1.5-1.6を想定。 目標 マイナーGC、Full GCそれぞれが頻発することなく、かつそれぞれの実行時間を1秒未満に抑えること。 マイナーGCは1秒未満どころではなく、もっと短くなるべき。どれくらいが理想かは?(0.1秒未満ぐらいを目指したい?) 連続した負荷状態(想定されるピークアクセス)でもOutOfMemoryErrorが発生しないこと。 理想的な状態は、上記に加えて、Full GCの発生が低頻度であること。 具体的には、できるだけマイナーGCで短命オブジェクト(1回使ったらもう使わないようなオブジェクト。逆にセッションオブジェクト等は長命オブジェクトとなる)を破棄させて、短命オブジェクトが、Tenu

    Javaメモリ、GCチューニングとそれにまつわるトラブル対応手順まとめ - 日記のような何か