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.
java.util.concurrent クラス CountDownLatch java.lang.Object java.util.concurrent.CountDownLatch public class CountDownLatchextends Object 他のスレッドで実行中の操作セットが完了するまで、1 つ以上のスレッドを待機可能にする同期化支援機能です。 CountDownLatch は、指定された「カウント」を使用して初期化されます。await メソッドは、countDown() メソッドの呼び出しの結果として、現在のカウントがゼロに達するまでブロックします。その後、待機中のスレッドがすべて解放され、後続の await の呼び出しがすぐに返されます。これは単発的な現象であり、カウントをリセットすることはできません。カウントをリセットするバージョンが必要な場合は、Cycl
本稿では、Java8における遅延評価のサポートについて紹介する。 遅延評価とは、ある値に対する計算処理を、実際にその値が必要になった時点で行うことであり、関数型言語が一般的にサポートする仕組みである。 Java8では、Stream APIにおいて遅延評価を局所的にサポートしている。このため、本記事では以降、Java8の仕組みを遅延評価ではなく、遅延処理と呼ぶことにする。 Stream API の遅延処理 Stream API ではStreamの要素に対して設定した中間操作は、終端操作を実行するまで遅延される。 この特徴を生かすことで、従来の方法では複雑になってしまう処理を簡潔に記述し、かつ高速に実行できる可能性がある。 こうした遅延処理が有効に働く場合について、IO処理を例に見てみよう。 従来のIO処理のコード テキストファイルの中から、特定の文字を含む行だけを抽出したり、先頭の100行の
こんなEnum public enum InsideHead { JOY, SADNESS, FEAR } こんなクラスで使うとして。 @Accessors(fluent = true) @Getter @ToString @EqualsAndHashCode public class Bufferings { private InsideHead insideHead = InsideHead.JOY; public void eatChocolate() { this.setInsideHead(InsideHead.JOY); } public void workOvertime() { this.setInsideHead(InsideHead.SADNESS); } public void seeSourceCodeWithNoTest() { this.setInsideHea
この記事は Java Advent Calendar 2015 の一日目の記事です。二年連続でトップバッターだ! 先日の JJUG CCC 2015 Fall で G1 GC について話してきました。 去年の CMS GC と同じく結構遅めの時間帯&裏番組に伝説の灰色ページ管理人・ひしだま伝道師が発表するなどの豪華な時間帯にも関わらず、165人規模の部屋がいっぱいに埋まるぐらいの盛況でした。聴講頂いた皆様ありがとうございました! スライドは以下に公開しました。G1 GC の挙動から GC ログの読み方、どういうケースが厄介なのかを紹介しているので是非ご覧ください! Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6 from Yuji Kubota アフターフォロー、またはちょっとした補足 極力、後から参照可能なように資料
通常、対象のクラスをインスタンス化する方法は、publicなコンストラクタを提供する。 その他の提供方法として、今回紹介する「staticファクトリーメソッド」がある。 単純なコード例は以下。(staticファクトリーメソッドは、newInstanceメソッド) public class Name { private final String value; private Name(String value){ this.value = value; } public static Name newInstance(String value){ return new Name(value); } } publicなコンストラクタの代わりに、staticファクトリーメソッドを提供したときの長所をまとめちゃいます。 今回は1つ目です。 コンストラクタと違い、メソッド名に名前を持つことができる
Javaで文字列連結をする場合に「String同士の足し算は効率が悪いのでやめましょう!」というよくある話とともに名前が挙がるStringBufferクラスとStringBuilderクラス。 最近だと「StringBufferクラスよりStringBuilderクラスの方が効率的!」というのも同じくらいよく聞くようになったが、そのたびに「ただしStringBuilderはスレッドセーフでないのでマルチスレッドでは使わないこと」と但し書きのような文言が添えられる。 この注意書きは果たして何を意味しているのだろうか、具体的にどういう場合に問題が起こるのかを調べてみた。StringBufferとStringBuilderの連結のパフォーマンス比較の記事はたくさんあるが、マルチスレッドでの使い分けおよび実行結果の違いについてはあまり見つけられなかったので、今回簡単なマルチスレッドなコードでStr
アプリケーションエンジニアの多くは、眠れない夜を過ごしたことがあるでしょう。特に月に一度の…「月末締めバッチ」の日は。 そんなデータ量の多い日や、初モノのバッチが動く日でも安心して眠れるためのバッチ設計を考えてみます。 ログの設計 まず何はなくともログです。きちんとしたメッセージを出せていれば、専任の人がリカバリ可能にもなるってものです。 Audit用のログなど業務要件の強いものを除いては、だいたい3種類に分けるようにしています。 プログレスログ リカバリログ 例外ログ(調査のため) この分類でファイル単位も分けます。ログを必要とする人が、それぞれ異なるからです。 プログレスログ プログレスログは、特に長時間かかるバッチに対して、現在どのくらいまで処理が出来ているのかを目的として出力します。 トラブル発生時や、大規模移行作業時には、バッチの定期的なモニタリングと報告の必要が出てきます。「あ
This document describes how to configure Spring Security for authentication and authorization in a web application. It defines a WebSecurityConfig class that configures HTTP security with roles like OWNER and MANAGER for access control. It also defines a UserDetailsManager service for loading users and a User entity class implementing UserDetails. Tests are shown for security configuration, login,
安価でプログラミングをするスレより。このスレは1さんと2さんが主に会話をしています。Javaについての会話がとても有意義だったのでまとめてみました。挫折ポイントとして名高いオブジェクト指向も、このようにエヴァで例えるとすんなりと理解できそう! 1さんが2さんにJavaを教えるところからスタートします。 ちなみにけっこう長めのまとめ。Javaに興味ある人、Javaをお勉強中の人は何度か読み返すといいかもしれません(*・ω・*) 110: 1◆NaUNjCMHzs 2014/04/05(土)01:07:13 ID:n6jvIZNZZ どこまでできる? 111: 2◆DTn7LrZ..DaI 2014/04/05(土)01:08:06 ID:XKWkZFm7A 何をだい?? 112: 1◆NaUNjCMHzs 2014/04/05(土)01:08:29 ID:n6jvIZNZZ java 113
ガベージファースト・コレクタ ガベージファースト・コレクタとは ガベージファースト(G1)コレクタとは、大容量のメモリを搭載するマルチプロセッサを対象としたサーバースタイルのガベージ・コレクタです。ソフト・リアルタイム目標を高確率で達成し、かつ高いスループットを実現します。 G1は長期的には、並行マークスイープ・コレクタ(CMS)の後継となる技術です。 グローバル・マーキングなどのヒープ全体に対する処理は、アプリケーション・スレッドと並行して実行されます。これによって、割込みがヒープ・サイズまたはライブ・データ・サイズに比例して増加するのを防ぎます。 また、並行マーキングによって、コレクション処理の"完全性"が確保され、コンパクト化を伴う退避によって再利用の対象となるリージョンが特定されます。 この退避はマルチプロセッサ上で並行して実行されるので、一時停止の時間が短縮し、スループットが向上
https://www.youtube.com/watch?v=7KS4L-mA_-c 1 comment | 0 points | by WazanovaNews ■ comment by Jshiike | 約1時間前 Takipi のFounderであるTalWeissのSan Francisco Java User Groupミートアップでの講演。本番環境で役に立つデバッグテクニックの紹介です。 1. スレッド名の活用 スレッド名はmutable(EJB除く)である。コードのコンテキストにあわせて、Thread.currentThread().setName(Context, TID, Params, Time,...);のようにすれば、トランザクションID、Serveletパラメータ、キューメッセージID、起動時間など、スタックトレースに役に立つ情報を表示できるようになる。 J
Javaの最強リファレンス、その名も「Java最強リファレンス」を頂きました。 これが最強のリファレンスだ! pic.twitter.com/lsNf0mRSh6 — 山本://裕介 (@yusuke) 2014, 11月 7 サイボウズ株式会社にてkintoneなどを開発されているエンジニア田中 裕一(@yuichielectric)さんの著書。 Java8対応をうたう本はそれなりに出始めていますが、「とりあえずJava8に追加されたAPIにいくつか触れている」「Lambda記法をちょっと解説している」だけの本も相応にあります。またLambdaに触れる章を追加しただけで、他のコードは古めかしい残念な書き方をしている残念な本があるので注意が必要です。 そしてこのリファレンス、Java5〜Java8までとかなり広範囲をカバーしています。バランスを取るのは非常に難しいはず! 章立ては以下の通り
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 本投稿は私の主観によって書かれています。コメントは大歓迎です。もし長くなるようでしたら別途記事に投稿し、リンクを張っていただけると嬉しいです。 概要 GoFのデザインパターンは適当すぎるから、いい加減、修正されるべき。 参考までに各パターンに対するコメントを書く。 GoFのデザインパターン GoFのデザインパターンは適当であり、教科書通りに学ぶべきものではないように思う。 以下がGoFのデザインパターンの良くない原因だろう。 本が出版されたのは1994年であり、Java(1995)が出てくるよりも前だった オブジェクト指向が未成熟な時代
LL から Java に移行した人がはまりがちなこと こんにちは。Java 初心者です。 Java 初心者、得に LL から Java に来た人にありがちな問題について社内向けに書いたものをオープンアンドシェアさせていただきます。 前提として、我々は Java 8 でガンガン攻めているということをご承知おきください。 また、自分がこの数ヶ月で「うわー。こうしとくべきだったのかー」と気づいたやつをドヤ顔で語っているということにもご注意ください。 【追記】 対象は中規模 B2C の場合です(中規模というのは facebook より小さいという程度の意味です) 例外を握りつぶさないようにしよう Eclipse が生成する以下のようなコードをそのまま残しているケース。 これは言うまでもなく良くないですね。デバッグが困難になります。 try { } catch (IOException e) { e
68. Springのサブプトジェクト群 IDE Spring Tool Suite (STS) RAD Starter Spring Roo Web Spring Boot Spring XD Spring Data Rest Spring WebFlow Spring Security OAuth Spring MVC Spring Security Spring Mobile Social Big Data Security DataAccess Spring Hadoop Batch Spring Data MongoDB Spring Data JPA Spring Batch Enterprise Integration Spring Integration Core Spring DI Spring AOP Spring TX … Spring Social Github S
photo: http://www.flickr.com/photos/zzpza/ Java6がEOLとなったこともあり、コンパイルバージョンもJava7以降を指定するようになったので、標準的に利用するMavenのカバレッジプラグインを見直しています。 Javaのカバレッジツールとして、今のところ有名なものとしては、以下のものがあります。 Cobertura JaCoCo Coberturaは、Javaのカバレッジツールとしては情報量も実績も多くあります。私も、これまではCoberturaを使っていたのですが、Java7を利用するようになってからは、いろいろとエラーが発生するようになってしまいました。 JaCoCoは、情報量は少ないのですが、別のカバレッジツールであるEmmaを置き換えるためのカバレッジライブラリとして、EclEmma(Emmaを利用したEclipseプラグイン)の開発チ
テスト対象のクラスSampleA をテスト対象のクラスにします。 このクラスは6行目と8行目で、SampleC を使っています。 public class SampleA { private SampleC sampleC; public String createName() { Integer id = sampleC.getId(); Integer price = sampleC.getPrice(id); String ret = "id:" + id + " price:" + price; return ret; } } @Spyを使って、SampleAのテストをします。import static org.mockito.Matchers.*; import static org.mockito.Mockito.*; public class MockitoSampleTes
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く