タグ

Javaに関するhiro14akiのブックマーク (109)

  • UUID(v4) がぶつかる可能性を考えなくていい理由 - Qiita

    お手軽にランダムなIDを取得したい時にUUIDはとても重宝します。 でもたまに、 「このID(UUID)ってぶつかることない?対策しなくて大丈夫?」 と聞かれることがあります。 それに対して、 「ウィキペディア先生がぶつからねえって言ってたから大丈夫だよ!(#゚Д゚)」 で切り抜けるのもそろそろ限界のような気がするのでちゃんと調べました。 (もちろんウィキペディア先生を頼りました!) 2つの理論 UUIDの衝突確率について考える上で次の2つの理論が重要になります。 鳩の巣原理 誕生日のパラドクス 鳩の巣原理 鳩の巣原理とは、 m個の入れ物にn個のものを入れるとき、n > m ならば少なくとも1個の箱には2個以上のものが入る 9個の巣箱に10羽の鳩が入る場合、必ずどれかの巣箱には2羽以上入ることになるということです!(ウィキペディア先生) 考えれば当たり前のことですが同様にして考えれば、 「

    UUID(v4) がぶつかる可能性を考えなくていい理由 - Qiita
  • オラクル、Oracle JDKを再び無料提供へ、本番環境でも利用可。昨日リリースのJava 17から

    オラクルは、同社が提供している企業向けのJavaディストリビューションであるOracle JDKのライセンスを変更し、無料で番環境などでの利用を可能にしました。 同社が9月14日付で公開したブログ「Introducing the Free Java License 」で、次のように説明しています(関連するプレスリリース「Oracle Releases Java 17」)。 Oracle JDKを無料で提供し、四半期ごとのセキュリティアップデートも提供する。 新ライセンス「Oracle No-Fee Terms and Conditions (NFTC)」は、商用利用や番環境での利用を含むすべてのユーザーに対して無料での利用を許可する。 Oracle JDK 17から、この無料のリリースとアップデートの提供を開始する。これは次の長期サポート(LTS:Long Term Support)が

    オラクル、Oracle JDKを再び無料提供へ、本番環境でも利用可。昨日リリースのJava 17から
  • Javaはどのように動くのか~図解でわかるJVMの仕組み 記事一覧 | gihyo.jp

    運営元のロゴ Copyright © 2007-2024 All Rights Reserved by Gijutsu-Hyoron Co., Ltd. ページ内容の全部あるいは一部を無断で利用することを禁止します⁠。個別にライセンスが設定されている記事等はそのライセンスに従います。

    Javaはどのように動くのか~図解でわかるJVMの仕組み 記事一覧 | gihyo.jp
  • 西暦1年は閏年か? - プログラマーの脳みそ

    閏年(うるうどし)の話題。 Twitterで見かけた話題で「西暦1年は閏年かどうかぱっとわからん人おる?」という些か煽り気味のツイートを見かけたのだけども、反射的に「閏年じゃないに決まってるじゃん」とぱっと答えてしまわないだろうか。当にそうだろうか? そう単純な話なのだろうか? プログラミングを学んでカレンダーを扱うことを学ぶ際に置閏法についても簡単に触れられることがある。置閏法というのは閏年や閏月(太陰暦では1年が13ヵ月になるケースがあり追加の月を閏月と呼ぶ)をどのようなルールで挿入するかという話で、まさにアルゴリズムであるからプログラミングの話題と相性がいい。 置閏法 現代の西暦の置閏法(ちじゅんほう)は 西暦を 400 で割り切れる年は閏年 上記以外で西暦を 100 で割り切れる年は平年 上記以外で西暦を 4 で割り切れる年は閏年 上記以外は平年 といった手続きで閏年(つまり2月

    西暦1年は閏年か? - プログラマーの脳みそ
  • Javaでiterator(イテレータ)を使う方法【初心者向け】

    イテレータとは イテレータは、集合の要素に順番にアクセスする時に使用するインターフェースです。 集合にはリスト、セット、マップなど複数の種別がありますが、イテレータはそれらにアクセスするための、共通の仕組みを提供します。 イテレータを用いることで、個別の実装を意識せずに、要素へのアクセスを自然に記述できます。 イテレータの書き方 既存のクラスからイテレータを得る Iterableインターフェースを実装するクラスのiteratorメソッドを呼び出すと、イテレータを得られます。 (例)ArrayList, HashSet, LinkedList, TreeSet ArrayList list = new ArrayList(); Iterator iterator = list.iterator(); 自作のクラスでイテレータを実装する Iteratorインターフェースを実装クラスでは以下2つ

    Javaでiterator(イテレータ)を使う方法【初心者向け】
  • Java で -Xmx や -XX:MaxRAM オプションを指定した際の最大ヒープ・サイズを調べる - Qiita

    JVM の使用するメモリはヒープだけではない メモリ管理の概要 Java オブジェクトは、ヒープと呼ばれる領域に格納されています。ヒープは、JVM が起動したときに作成され、そのサイズはアプリケーションの実行中に増減することもあります。ヒープが一杯になると、ガベージ (不要なメモリ) がコレクト (収集) されます。ガベージ コレクションは、現在使用していないオブジェクトをクリアし、新しいオブジェクトのための領域を確保します。 ただし、JVM はヒープ以外にもメモリを使用します。Java メソッド、スレッド スタック、ネイティブ ハンドルはヒープ以外のメモリに割り当てられます。JVM の内部データ構造も同様です。 Understanding Memory Management Java objects reside in an area called the heap. The heap

    Java で -Xmx や -XX:MaxRAM オプションを指定した際の最大ヒープ・サイズを調べる - Qiita
  • Java Stream APIをいまさら入門 - Qiita

    Stream API? Stream APIとはJava SE 8から追加されたイテレーションの拡張APIです。 今までコレクションに対して行っていた煩雑な処理をわかりやすいコードで記述することが可能になります。 (稿ではラムダ式の解説は行いません。ラムダ式がわからない人は調べてください。) streamとはコレクションの要素へのアクセスを許可されたもの、コレクションの別の形態と考えてください。 基的な流れ 1. コレクションからstreamを取得 2. streamに対して満足するまで「中間操作」を実行。コレクションの中身を都合よく変換 3. 「終端操作」で変換したコレクションの中身に対して処理を適用する では実際の使用例を見てみましょう。 Stream APIの使い方 サンプル「1〜5の中で偶数だけを表示する」 Stream APIを使わない場合 List<Integer> int

    Java Stream APIをいまさら入門 - Qiita
  • ラムダ式とStream APIで学ぶモダンJava ― 関数型を取り入れて変化するJava言語の現在 - エンジニアHub|Webエンジニアのキャリアを考える!

    ラムダ式とStream APIで学ぶモダンJava ― 関数型を取り入れて変化するJava言語の現在 20年以上の歴史を持つJava言語ですが、近年は関数型を取り入れるなど大きく変化し、リリースサイクルも格段に短くなってますます進化しています。モダンなJavaプログラミングで必要となるラムダ式とStream APIについて、谷心(cero_t)さんによる詳細な解説です。 1996年にJava 1.0が登場して、もう20年以上がたちました。この間、Javaにはさまざまな言語機能やAPIが追加され、変化し続けています。 これだけ長い歴史を持つプログラミング言語ですから、利用者が多かったり、フレームワークやライブラリが充実していたりする一方で、書籍やWebに掲載されている情報が少し古かったり、研修で学ぶJavaが最新の動向を踏まえていなかったりするなど、長い歴史を持つが故の問題もあります。 特

    ラムダ式とStream APIで学ぶモダンJava ― 関数型を取り入れて変化するJava言語の現在 - エンジニアHub|Webエンジニアのキャリアを考える!
  • ロギングベストプラクティス - kawasima

    printfをつかったり、ログエントリを自分でファイルに書き出したり、ログローテションを自分でやったりしてはいけない。運用担当者にお願いして、標準ライブラリやシステムAPIコールを使うようにしよう。そうすれば、実行中のアプリケーションが他のシステムコンポーネントと適切に連携して、特別なシステム設定なしに適切な場所またはネットワークサービスにログを記録できるようになる。 ロギングライブラリを使いたければ、特にJavaの世界にはLog4j, JCL, slf4j, logbackなど多くのものが存在する。私はslf4jとlogbackを組み合わせて使うのが好きだ。とてもパワフルで、設定も比較的簡単だ。(JMXで設定できたり、設定ファイルのリロードもできる)。 slf4jの最高なところは、状況にあわせてロギングのバックエンドを変えれるところにある。特にあなたがライブラリ書くときには、ライブラリの

    ロギングベストプラクティス - kawasima
  • ArrayListじゃなくListを使うという話 - 日々常々

    具象型ではなく抽象型で扱え、インタフェースを使え、みたいなお話に対して。 前置き Javaの話。他の言語だと話は変わります。 「こうするのが絶対的に正解」と言うものではありません。私の現在の選択の説明です。明日になったら違うこと言ってるかも。 主な登場人物は掲題の java.util.ArrayList および java.util.List、そして java.util.Collection と java.lang.Iterable です。 こんな世界観。他のインタフェースやクラスもたくさんありますが、この話の筋では無いので触れません。 前提として以下を置いています。 フレームワークやライブラリではなく、一つの業務アプリケーションに閉じた話です。ゆえに不特定多数から使われる型ではなく、影響を与えるコードは全て目が届く範囲にあるものとします。 計算量は別の話です。扱うドメインにもよりますが、

    ArrayListじゃなくListを使うという話 - 日々常々
  • Catch up Java 12 and Java 13

    Head toward Java 15 and Java 16Yuji Kubota465 views•46 slides

    Catch up Java 12 and Java 13
  • ヤフーにおけるJava事情を軽くご紹介します

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

    ヤフーにおけるJava事情を軽くご紹介します
  • 今からでも遅くない JMSを学ぼう!(前編) 非同期通信の世界へようこそ (1/6):CodeZine(コードジン)

    CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

    今からでも遅くない JMSを学ぼう!(前編) 非同期通信の世界へようこそ (1/6):CodeZine(コードジン)
    hiro14aki
    hiro14aki 2019/02/07
    JMS
  • 4. JMSを使ってみる — Spring Bootキャンプ ハンズオン資料 1.0.0-SNAPSHOT ドキュメント

    4. JMSを使ってみる¶ 前章では画像処理サーバーをSpring MVCで作成しました。一般的に、画像処理のような重い処理を同期実行していくと、 同時リクエストによってリクエスト処理スレッドが枯渇しやすくなってしまいます。 そこで、画像処理リクエストを受けてもすぐに処理は行わずレスポンスだけ返し、実際の処理は非同期で行うことを考えましょう。 章ではJMS(Java Message Service)を使用して、非同期プログラミングを試します。次章で画像処理サーバーのJMS対応を行います。 HTTPリクエストを受けたControllerは、すぐに処理を行うのではなく、処理に必要なデータを詰めたメッセージをJMSに対応したメッセージキュー製品に送信します。 メッセージ送信が完了すればHTTPレスポンスを返却します。 送信されたメッセージは受信側によって取り出され、処理がおこなれます。J

    hiro14aki
    hiro14aki 2019/02/04
    JMS の仕組みについて
  • 「Kubernetesで運用する」その前に Kubernetesを本番環境で利用する際のポイント

    Kubernetesで運用する」その前に Kubernetes番環境で利用する際のポイント:キャッチアップが大切(3/3 ページ) 今後のJavaはますますDockerKubernetesを意識した開発が進む 寺田氏は、DockerKubernetesで構築するアプリケーションを開発するためのJava活用のポイントにも言及。「現時点で世界的に最も利用されているJavaのバージョンは『Java 8』だ」と説明し、Java 9、Java 10以降でのDockerKubernetesに関係する2つの機能改善を取り上げる。 参考記事:Dockerとは まず、Java 9からは、カスタマイズしたJavaの実行環境であるJRE(Java Runtime Environment)が作成できるようになった点を説明する。 Java 8以前は、Oracleが用意したJDK(Java Develop

    「Kubernetesで運用する」その前に Kubernetesを本番環境で利用する際のポイント
  • Java 11 時代の Java プログラミングスタイルガイド - Qiita

    Java のリリースサイクル が変更され、2019/01 現在の Java の最新バージョンは早 11。文法面での改善も進んでおり、モダンな Java のスタイルにも変化が見られる。この記事では Java 11 時代におけるモダンな Java プログラミングのスタイルをまとめてみたい。 筆者の主観を多分に含むため、その点ご注意を。 var(ローカル変数の型推論) var を積極的に利用する。 Java 10 で導入された var によるローカル変数の型宣言だが、基的には使用できる場面では積極的に使用するというスタンスでよいだろう。モダンな言語の多くは同様の型推論を採用しているが、それで問題になったという話は聞かない。 高度に訓練された Java プログラマーにとっては左辺の型定義など IDE が自動補完してくれるので便利さを感じないという意見には一理あるのだが、コードを読むときに限っては

    Java 11 時代の Java プログラミングスタイルガイド - Qiita
    hiro14aki
    hiro14aki 2019/01/11
    コーディングガイドライン的な。
  • 最近のJava界隈はとても良い感じ - Qiita

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

    最近のJava界隈はとても良い感じ - Qiita
  • Java POIでExcel(.xlsx)ファイルを作る - Qiita

    はじめに 事前に以下のライブラリを用意します。 Apache POI https://poi.apache.org/download.html ※"poi-bin-3.16-20170419.tar.gz"のリンクからダウンロード 今回のサンプルは以下のjarがあれば動作します。 poi-3.16.jar poi-ooxml-3.16.jar poi-ooxml-schemas-3.16.jar xmlbeans-2.6.0.jar commons-collections4-4.1.jar 実装例 今回のサンプルでは以下の機能を確認します。 複数のシートを作成する ウィンドウ枠の固定を設定する オートフィルタを設定する 列幅を自動調整する セルに文字列を表示する セルに改行入りの文字列を表示する セルに整数を表示する セルに小数を表示する セルに円を表示する セルにパーセントを表示する セ

    Java POIでExcel(.xlsx)ファイルを作る - Qiita
    hiro14aki
    hiro14aki 2018/09/12
    xlsx の生成方法
  • モダンなJava開発ガイド (2018年版)

    2018年現在でもJava開発をしていると、Antすら使っていないEclipseプロジェクトにそこそこの頻度で出くわします。Eclipseの自動コンパイルが通ればOKであり、ビルドはExcel手順書をもとに手動で行われ、依存関係ライブラリはもちろんlibフォルダに各種jarファイルが放り込んであります。Eclipse上以外ではどう動かせば分かる人がいないため、コマンドラインからビルドなどを行うことは叶わず、CI化なんて夢のまた夢です。 そんなJava開発から脱却したい人向けのJava開発のモダン化ガイドです。 基的にJava 8以降での開発を想定しています。 OpenJDK/OracleJDK上での開発を想定しています。 Android開発の場合は一部適用できない可能性あり。 英語のIDE、ツール等は積極的に使用します。 英語嫌いだとモダン化は難しい。 Java開発全般を前提としているた

    モダンなJava開発ガイド (2018年版)
  • TERASOLUNA Server Framework for Java (5.x) Development Guideline — TERASOLUNA Server Framework for Java (5.x) Development Guideline 5.4.1.RELEASE documentation

    TERASOLUNA Server Framework for Java (5.x) Development Guideline