タグ

javaに関するkatsushのブックマーク (36)

  • Javaのバージョン別、1行ずつファイルを読む方法まとめ - Qiita

    (この記事は 地平線に行く とのマルチポストです) Java でファイルを読み込む処理は、バージョンが上がるごとにどんどん簡単に書けるようになっていきました。 今回は、どれだけ簡単になっていったかを Java のバージョンごとにまとめて説明します。 なお、ここでは以下の処理を行うコードをもとにしています。 そこそこ大きいテキストファイルを一行ずつ読み込む 文字コードは UTF-8 Java 1.1, Java 1.2, Java 1.3 public static void main(String[] args) throws IOException { File file = new File(args[0]); BufferedReader reader = null; try { reader = new BufferedReader( new InputStreamReader(

    Javaのバージョン別、1行ずつファイルを読む方法まとめ - Qiita
  • Quarkus - Supersonic Subatomic Java

    Quarkus Core repository has reached the incredible milestone of 1000 community contributors! Celebrate with us Get Started with Quarkus | Read the Guides Container First Quarkus tailors your application for GraalVM and HotSpot. Amazingly fast boot time, incredibly low RSS memory (not just heap size!) offering near instant scale up and high density memory utilization in container orchestration plat

    Quarkus - Supersonic Subatomic Java
  • Spring Bootで入力値の検証(バリデーション)の順番を制御する - かずきのBlog@hatena

    okazuki.hatenablog.com 基的に上の記事の通りでいいんですが、複数の属性を同じプロパティにつけた場合に、一気にバリデーションが実行されてエラーメッセージがうざいことになってしまいます。例えば以下のようなBeanがあったとして。 package okazuki.validationEdu; import org.hibernate.validator.constraints.Length; import org.hibernate.validator.constraints.NotEmpty; public class Person { @NotEmpty(message = "なまえ入れてね") @Length(min = 1, max = 10, message = "1~10の間") private String name; public String getNa

    Spring Bootで入力値の検証(バリデーション)の順番を制御する - かずきのBlog@hatena
  • Spring BootでBean Validation (1) @GroupSequenceで順番にチェック - 親バカエンジニアのナレッジ帳

    Spring Bootでは(Spring Boot以外にもBean Validation使ってるやつ全部ですが)、Serializableクラスに対して 「org.hibernate.validator.constraints」や「javax.validation.constraints」を使って、 @NotEmptyや@Sizeといったようにアノテーションを使うだけでバリデーションを行うことができます。 入力値を見て、アノテーションの制約に違反していれば勝手にエラーを検知してくれるのですが、 (処理を途中で止めたりエラー内容を画面に表示させるのは手動でやらなければいけません。) 1つのフィールドに対して複数のアノテーションを付与した場合はすべてのエラーチェックが走り、 エラーメッセージも複数出力される可能性があります。 例えば、以下のようなコードがあった場合、 @NotEmpty @Si

    Spring BootでBean Validation (1) @GroupSequenceで順番にチェック - 親バカエンジニアのナレッジ帳
  • JavaプログラマーのためのGo言語入門 | フューチャー技術ブログ

    JavaプログラマーのためのGo言語入門こちらはJava to Go in-depth tutorialの日語訳です 原文の著者に許諾を得て翻訳・公開いたします。 このチュートリアルは、JavaプログラマーがすばやくGo言語にキャッチアップできるようにすることを目的としています。 目次 Hello stack 主な違い シンタックス(文法) 定数 構造体 ポインタ スライス 値の作成 メソッドとインターフェース エラー PanicとRecover ゴルーチンとチャネル Hello server Hello stack 1まずはじめに簡単な例を見ていきましょう。この例ではシンプルな抽象データ型をGoで実装しています。 // collectionパッケージはstring型を格納できるスタックを実装している package collection // Stackのゼロ値はすぐに使用できる空のス

    JavaプログラマーのためのGo言語入門 | フューチャー技術ブログ
  • JVM の DNS キャッシュを制御する - 平常運転

    JVM (Java 仮想マシン) には DNS の名前解決の結果をキャッシュする挙動が備わっている。キャッシュするだけならいいのだけれど、このキャッシュでは DNS の TTL を無視してキャッシュするため、名前解決の結果が変わっても JVM からの接続先が切り替わるまでに(TTL から想定される時間以上に)時間がかかる、あるいは全く切り替わらないということがある。この挙動やその制御について調べたので、その話をする。 (以下の話題では Oracle JDK および OpenJDK を対象にして論じるので、それ以外の JVM 実装でどうなってるかは調べていない。適用できる箇所もあればそうでない箇所もありそう) 背景・解説 これらのデフォルト値は名前解決成功時は セキュリティーマネージャーがインストールされている場合のデフォルト値は -1 (ずっと) で、セキュリティーマネージャーがインストー

    JVM の DNS キャッシュを制御する - 平常運転
  • ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ

    JJUG-CCCJavaユーザーズグループクロスコミュニティカンファレンス 2018/12 登壇資料です。Read less

    ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
  • JavaのマイクロサービスフレームワークHelidonを試す - きしだのはてな

    HelidonはMicroProfileに対応したフレームワークです。 Helidon このあたりで紹介されていますね。 OracleJava用のマイクロサービスフレームワーク「Helidon」を発表 - Computerworldニュース:Computerworld HelidonにはシンプルなSEとMicroProfile対応のMPがあります。Maven Archetypeが用意されているので、こちらを使うと楽です。 SEだと関数を登録する感じで、MPだとJAX-RSやCDIを使ったアノテーションベースのコードになります。 ちょっと試すにはSE、大きめのプロジェクトを作る場合はMPがよさげ。 面白いのは、Dockerfileが用意されているので、ビルドしてそのままDockerイメージが作れるところです。 FROM openjdk:8-jre-alpine RUN mkdir /app

    JavaのマイクロサービスフレームワークHelidonを試す - きしだのはてな
    katsush
    katsush 2018/11/25
  • 軽い気持ちでLinkedListを使ったら休出する羽目になった話 - Qiita

    ざっくり言うと リスト構造のデータに対してランダムアクセスはしちゃだめだぞ。お兄さんとの約束だ! 発端 数年前に他部署の支援で作ったJavaのシステムに、ちょっとデカめのデータを突っ込んだらありえないほど遅いので助けてくれ、と連絡が入った。 まぁクエリとかインデックスをちょっと見れば直るっしょ・・・と鼻をほじりながら支援に向かった。 処理内容 遅い部分の処理は以下のようなものであった。 処理対象のデータをListで受け取る。 それをforループで1件ずつ前処理する。 処理結果をオブジェクトに格納し、ORマッパーでDBにINSERTする。 これだけ? そう、これだけだ。並列処理なんて高級なことはもちろんやってない。 インフラ調査 処理中のサーバのようすを調査する。今回のインフラは典型的な3層3サーバ構成。 WEBサーバはなにもかもが余裕。 APサーバではCPUを1つ使い切っている。 14コア

    軽い気持ちでLinkedListを使ったら休出する羽目になった話 - Qiita
  • Spring Security にできること・できないこと - Qiita

    自己紹介 opengl-8080 主に Qiita で技術メモを書いたり 関西の SIer 勤務 今日お話しすること Spring Security が保護してくれること、してくれないこと Spring Security を導入すれば、この攻撃は守ってくれる この攻撃は Spring Security の守備範囲外なので別途対処が必要 仕様や機能の話をメインにして、実装の細かい話は無し デモ用アプリ 起動方法 GitHub からプロジェクトをダウンロードし、プロジェクトのルートで gradlew start を実行 ※初回は Payara (60MB)などのダウンロードが行われるので注意 動作確認 AP サーバーが起動したら、以下の URL にアクセスする。 https://localhost:8443/secure Spring Security を使用したアプリケーション https:

    Spring Security にできること・できないこと - Qiita
  • Javaでプログラムを書く際に意識しておきたいこと - 覚えたら書く

    以下、個人的にJavaでプログラムを書く際に意識しておきたいことです。 ただし、学術的な裏付けなどがある内容でありません。あくまで私の経験に由来する内容となっています。 そもそもコンテキストによってはそぐわない内容もあると思いますので、その辺はうまいことスルーしてもらえたらと思います。 Collection 空のList メソッドの戻り値として空(size==0)のListを返却する場面がありますが、その場合はCollections.emptyListを使うのが良いです。 new ArrayList()でListを生成してreturnするよりも、処理も早くコードの意味も分かりやすくなります。 ただし、このメソッドで返されるListはImmutable(不変)であることを理解しておく必要があります。 Collectionsクラスには、空Setや空Mapを返すメソッドも用意されています。 大量

    Javaでプログラムを書く際に意識しておきたいこと - 覚えたら書く
    katsush
    katsush 2017/06/08
  • SpringでAOP - Qiita

    Seasar2でAOPは散々使ってきたが、Springではまだ使ったことなかったので、どんな感じになるのか簡易なコマンドラインアプリケーションで試してみた。今更感があるのでAOPとは?の説明はここでは省略。Spring AOPはXMLで設定を記述する方法もあるが、今回はアノテーションベース + Spring Bootで試してみた。 用語の整理 とはいえまず最初に用語の整理をしてみる。正直AOPでよく聞く用語は公式を直訳すると結構分かりづらく、あまり直観的ではないので語弊を恐れず簡潔に定義したい。 Aspect(アスペクト) 複数のクラスにまたがる関心事をモジュール化したもの(まとめたもの)。 JoinPoint(ジョインポイント) Advice(下記参照)を挿入する場所。場所といってもソースの特定の位置というわけではなく、メソッド(やコンストラクタ)の実行前、メソッド(やコンストラクタ)の

    SpringでAOP - Qiita
  • 例えば、Strutsを避ける

    はじめに 筆者は10年以上ウェブアプリケーション開発を主な業務とするJavaプログラマであったにも関わらず、Strutsについてはこれまでずっとわず嫌いでした。初期のStrutsは「XMLだらけで効率が悪そう」というイメージが強かったためです。最近はRuby on Rails等の影響を受けCoC(convention over configuration)を採り入れ、XML地獄もだいぶ解消したようです。 StrutsはJavaアプリケーションらしくない種類(任意のコード実行等)の脆弱性を連発することでも知られており、最近は我々の提供するSaaS型WAFサービス、Scutum(スキュータム)のお客様からも頻繁にStrutsについての問い合わせを受けるようになりました。また、去年見つかった任意のコード実行の脆弱性では、脆弱性の公表後すぐにPoCが出回り実際に攻撃が発生するなど、悪い意味で注目

    例えば、Strutsを避ける
  • Javaの謎のパフォーマンス劣化現象との戦い - Cybozu Inside Out | サイボウズエンジニアのブログ

    こんにちは。アプリケーション基盤チームの横田です。 Javaの謎のパフォーマンス劣化にまつわる調査をしていたのですが、1ヶ月の苦労の末に原因がわかりましたので、報告させていただきます! 公開後に頂いたはてなブックマークでのご指摘・社内でのタイポ・読みにくいなどの指摘を受けてたので、謹んで修正させいただきます。 修正した内容につきましては、記事の最後を参照してください。 忙しい人のためのまとめ jdk-7u4以降のjdk-7 *1 でJavaのパフォーマンスが劣化する謎の現象 CodeCacheの容量限界に近づくとJITコンパイラを停止してコンパイルしたコードを捨てる機能が原因だった 起動オプションで回避できるので、長期運用するときは -XX:-UseCodeCacheFlushing, -XX:ReservedCodeCacheSize=128m をつける 上のオプションを設定した時に、C

    Javaの謎のパフォーマンス劣化現象との戦い - Cybozu Inside Out | サイボウズエンジニアのブログ
  • [Speedment] StreamsをつかったDBアクセスライブラリ[Java8] | DevelopersIO

    Java8標準機能を使用したライブラリ Speedmentとは Speedmentとは、「JavaでのDBアクセスを楽しく簡単に行うためのライブラリ」とのことです。 Java8標準のStreamsを使用して実装するのが特徴で、下記のようなイメージで直感的に使用することができます。 //公式サイトのサンプルのまま List<User> youngUsers = speedment.managerOf(User.class) .stream() .filter(User.AGE.lessThan(18)) .collect(toList()); ↑のコードをみるだけでも、なんとなく使い方が想像できますね。 なお、SpeedmentにはOSS版とエンタープライズ版があり、OSS版はMySQL/MariaDBがサポートされています。(Java8以降対応) 環境構築方法 今回使用した動作環境は以下の

    [Speedment] StreamsをつかったDBアクセスライブラリ[Java8] | DevelopersIO
  • JavaでのDBのテストデータ作成はDbSetupが楽 - Qiita

    Javaでのデータベースのテストデータ作成にはDBUnitがよく使われますが、自分はDbSetupをオススメします。 DbSetup なぜDBUnitがイマイチなのか 自分も最初はDBUnitを使ってたのですが、以下の理由からしっくり来ませんでした。 DBを使ったテストでは少量のデータを使うことが多い ホワイトボックステストで大量のデータを使うことはほとんどなく、単一または複数のテーブルに対して、少量のデータを用意するケースがほとんどです。なので、テストごとにファイル(XML or Excel)を用意するのは面倒です。 テストコードとデータが分離している テストデータを外部ファイルに保存するため、テストコードとテストデータが分離してしまっています。そのため、何をテストしているのかが分かり辛いです。 そこでDbSetup そこで見つけたのがDbSetupです。DbSetupはテストデータをJ

    JavaでのDBのテストデータ作成はDbSetupが楽 - Qiita