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

2017年9月21日にいよいよJava 9 がリリースされます。Java 9 を利用することのメリットは一体何でしょうか?こんにちは。ヌーラボのアカウント基盤をJava で支えるNulab Apps チームの加藤です。Nulab Apps チームが開発するアカウントの基盤はサード パーティ製のJava ライブラリだけでも 154 個の依存関係を有します。154 個のJava ライブラリは数々の破壊的変更を乗り越え、おおよそ最新の安定バージョンに更新し続けてきました。 もちろん言語のメジャーバージョンアップにも対応し、現在ではJava 8 の関数型をプロダクト コードで使用可能な環境を維持しています(これが楽しい)。本ブログは、ヌーラボのアカウント基盤を先行して (ローカル開発環境のみで)Java 9 にマイグレーションして発生した問題と一時的な対処法を記録した奮戦録です。

Oracleによる初のJavaOne開催中、ジェームズ・ゴスリング氏はeWEEKの単独インタビューで、これまで明かさなかったOracle退社の理由を語った。 ジェームズ・ゴスリング氏が米Sun MicrosystemsでJava言語およびプラットフォームを構築したチームを率いていたころ、同社は好調で、Javaは革新的な技術だった。だが、最終的にはSunは財務的な窮地に陥り、米Oracleが救済者として現れた――正しいことを言う救済者として。だが水面下では、少なくともゴスリング氏の考えでは、間違ったことばかりする救済者だという。 ゴスリング氏はJavaを作り出した。これは多少は尊敬されていい功績のはずだが、同氏が言うには、Oracleから与えられたのはその逆だったという。eWEEKの単独インタビューで、ゴスリング氏はOracleを辞めた理由と、Oracleが同氏の創造物であるJavaを今後管

Java基礎文法最速マスター - いろいろ解析日記をリスペクト。Javaの変態文法・技法一覧です。Javaの基礎をある程度知っている人はこれを読めばJavaの変態をマスターしてJavaを書くことができるようになっています。簡易リファレンスとしても利用できると思いますので、これは足りないと思うものがあれば教えてください。 1.基礎 エンクロージング型内部classの作成 外部classのインスタンスに紐付くインスタンスを生成します。外部クラスのインスタンス - 内部クラスのインスタンス間に、クラス - インスタンスのような関係を持たせることができます。 public class Outer { public class Inner { } } というようなクラスを作った場合、 Outer o = new Outer(); Inner i = o.new Inner(); となります。new
@IT編集部 2009/3/24 最終更新: 2012/04/11 17:57 このページは、Java開発者/プログラマのための、Java SE(旧、J2SE)のコアAPIの使用コード例の記事へのリンク集です。パッケージごとに表でまとめてあります。メソッドやコンストラクタ、例外などAPIの使い方の参考にしてください。パッケージやクラスの並び順は、標準のJavadoc(「Java Platform, Standard EditionAPI 仕様」)と同様にしています。 すべてのクラスjava awt(Abstract Window Toolkit) event image io(In/Out) lang(LANGuage) reflect math(MATHmatics)net nio(New In/Out) charset(CHARacter SET) rmi(Remote Meth
ぜひVim とかEmacs に戻れない理由が知りたいです! いや、Eclipseからテキストエディタに戻れない10の理由を読んだ感想なんですが。秀丸とか (あと Tera なんとかとかEm なんとかとか K2 なんとかとか) まあそういう普通のエディタと IDE を比べたら、IDE の方が優れていて当たり前というか、優れてなかったら IDE の存在ってなんなんだというか、まあそういう感じですが。ことVim とEmacs になると、Eclipse とどっちがいいのかわからんのですよ。いや本当に。 以下 Eclipse についてライトVim ユーザがなんとなく雑感。 1. ぶっちゃけ、Vim でも困らないことは結構あります。 入力補完 → Ctrl-N と Ctrl-P で足りてます。(Intellisense 並みの水準でなくても困ってない) メソッドの宣言場所の表示 → ct
6月に開催されたISE(日本IBMシステムズ・エンジニアリング)Technical Conference 2008のセッションの中からWebSphere Application Server (WAS)+WEBフレームワークについての資料が公開されています。 - IBM WSDD | WAS × Webフレームワーク連携手法 - Japan本セッションでは代表的なフレームワーク(Struts/Spring/Hibernate)を題材にアプリケーション・アーキテクチャーという側面からそれらの機能、利点等を考察します。また、今後のフレームワークのあり方やWASで使用する際の考慮点についても触れます。 資料ではフレームワークとは何か?といったところから始まって、J2EEフレームワークの種類やそのメリットなど、具体的なコード例を挙げながらその効果を解説してくれています。フレームワーク入門者向け
はてな界隈では、Javaって、あんま人気無いみたいだけど、ちょっと書かせてよ。SIerでお仕事してると、派遣とか常駐とか言う形で、色んな会社に行って、違う会社の人とお仕事するんだけど、「経験年数n年(n>3)です」っていう人達が、恐ろしく使えなくてびっくりすることがしばしば。 特に、Java 5以降の機能 拡張for構文Enum可変長引数辺りを全く知らなかったり。 って言うか、Javaの極々基本的な知識である equals/hashCodeの実装Serializableの実装Iteratorの実装が全く出来ないんだよね…。 そういうのを知らなくても(出来なくても)業務をこなせちゃう(?)のが、Javaの言語特性だとは思わないけど、こういう人達だらけなんだよね…。PMが新しい人を採用しようとして、ここら辺の知識を割りと厳し目にテストしたら、候補が10人居たのに全滅で、プロジェクトのスター

【追記 2008/7/2】とても昔のClosureについて書いた記事が注目を集めてしまったみたいですが、ぜひ、もっと後で書いた次の記事とその関連スレッドの方も確認してみてください。このときよりも、もう少し事情が分かってから書いたものなので、より正確に状況を理解できると思います。それに、私自身、この言葉にはまだ混乱しています・・・ http://d.hatena.ne.jp/lethevert/20070524/p2 - という問いに対して、そろそろ私の結論を整理しておきます。 これは、将来の自分に対する参照の便のための整理です。 前提知識 前提知識として、こちらの内容を読んで理解しておきます。 Closure (computerprogramming) -Wikipedia [id:lethevert:20060119:p1] [id:lethevert:20060121:p2] また
TopHatenarを知っているだろうか。 http://tophatenar.com/はてなユーザのRSSフィード購読者数とソーシャルブックマーク獲得数のユーザランキングを表示してくれるサイトだ。 ここ2,3ヵ年の流れだと、こういうアイディアサイト(作るに時間はかからないけどアイディアが秀逸なサイト。あまり好きじゃない言葉だけどWeb2.0系サイトともいえるかも)は、Railsで作るのがはやっていた。Railsのほうが作りやすいし、注目も集めるから。TopHatenarは、実はJavaで作られている。フレームワークはSeasar2系だ。作者は、こういっている。 このサービスは、僕が去年末ごろから持っていたアイデアを、Cubby+Mayaa+S2JDBCの使い心地を確かめる意味を込めて実装したものです。 僕がWebアプリを作る上でのフレームワークの好みは、S2JSF、Teeda、Rai
データ活用は次のステージへ トラディショナルからモダンへ進化するBI 未来への挑戦の成功はデータとともにある EDRトップランナー対談:後編セキュリティ戦略を転換せざる得ない背景と EDRのような手法が必要な理由に迫る 身近な改善の第一歩! ニューノーマルな働き方を前提にした これからの時代のWi-Fi環境構築のポイント オラクルスペシャリストが語る! 多くの企業で利用されるオラクルDBの課題 アセスメントの重要性とコスト最適化 特集:セキュリティトレンド-秋- つながる世界で問われる対応 サプライチェーンセキュリティを考える ビジネスの推進には必須! ZDNet×マイクロソフトが贈る特別企画 今、必要な戦略的セキュリティとガバナンス 大学、研究機関、製造業など いま目覚ましい躍進ぶりを見せるデルのHPC その背景と選ばれる理由にせまる 今を知り、未来を見据える 培ってきたノウハウを最新
NetBeansの中の人経由でこれを発見した。 Without default value for source encoding, platform encoding is used, which is bad forbuild reproducibility. Then setting a default value consistently across every Maven plugin will improvebuild reproducibility. Proposed default value: ISO-8859-1, which must be supported by every JVM (seejava.nio.Charset) and is already the default value for some plugins (the majority of
Java が使いにくい言語であるというのは、世界中の LL ファンが皆思っていることだろうから改めていうことでもないけど、使いにくいのは静的言語だからというのは間違っている。Java が使いにくいのは単にJava の設計者のセンスが悪かっただけであり、静的言語のせいではない。 たとえばこんなコード。 publicMap<String, List<String>> example() { List<String> list = new ArrayList<String>(); list.add("foo"); list.add("bar"); list.add("baz");Map<String, List<String>>map = new HashMap<String, List<String>>();map.put("names", list); returnmap; }
スレッドセーフとは,アプリケーションをマルチスレッドで動作させても問題がないことを指す。サーバー向けアプリケーションは,マルチスレッドで動作するように設計・実装することが望ましい。そのほうが通常はパフォーマンスが向上するからだ。 だが,マルチスレッドのアプリケーションは,注意深く設計・実装しないとトラブルが生じる。例えば,あるスレッドで保持していた変数の値がほかのスレッドからアクセスされ,処理結果が上書きされたり,ほかの利用者の情報が見えてしまったりする。 こうしたトラブルは,開発者が1人で単体テストしているときには見つけられず,多数の利用者で限界時の挙動テストをしたときや,本番移行した後で,たまたま見つかることが多い。トラブルが発生するタイミングを再現することが難しいので,デバッグは困難になりがちだ。 マルチスレッドでのトラブルを防ぐため,開発者は,スレッドセーフな設計と実装を心がける必
![[実装編]スレッドセーフにすることを忘れてはいけない](/image.pl?url=https%3a%2f%2fcdn-ak-scissors.b.st-hatena.com%2fimage%2fsquare%2fdcbbc815331c5691afb8ab3f427b04bf8380d435%2fheight%3d288%3bversion%3d1%3bwidth%3d512%2fhttps%253A%252F%252Fxtech.nikkei.com%252Fimages%252Fxtech%252F2025%252Fogp_nikkeixtech.png%253F20220512&f=jpg&w=240)
僕はJavaで文字列の比較をするときは、String#equals()を使って比較するしなさいって習った。先生の説明に(文系の大学だけどなぜかJavaの講義があった)にも納得してString#equals()を使い続けてた。 Stringはプリミティブ値じゃなくてオブジェクトになるので==を利用すると、その文字の比較ではなくて同一参照か否かを確認するから結果はfalseになっちゃうよという説明。中途半端に知っていたのでその説明には納得。でも違った。 class Test { public static void main(String args[]) { String str1 = "Hello"; String str2 = "Hello"; if(str1 == str2){ System.out.println("実行されちゃう><。"); } String str3 = new S
Javaプログラムにおいて,クラスを作ることを厭う人たちが多い. そのような人たちの多くはデータを桁数依存にて構造が存在する文字列にして扱うことを好む. しかしJavaにおいてStringを解析することは多くの例外の原因となり,ひいてはシステム障害の原因となることが多い. またStringの演算は重く,Stringはメモリ消費量が多い. この文章では,Java利用システムにおいてStringの濫用を戒め,適切な型の利用と適切なクラス設計を行うことを勧める.*1 Stringの問題 多発する例外 Stringを利用することにより発生する例外には次のものがある. NullPointerException StringIndexOutOfBoundsException IndexOutOfBoundsException IllegalArgumentException UnsupportedEn
教育界、技術者コミュニティでJava言語の教育と啓蒙に長年携わってきた筆者が、独自の視点からJavaの面白さを掘り下げていく。(編集部)Java2 SE 1.4とJava SE 5の間には、機能差があり過ぎたため、現場で導入ができずに、これまで移行を見送ってきた読者も多いことでしょう。しかし、今回のJava SE 6(開発コード名:Mustang)の登場で、そろそろJava2 SE 1.4 からJava SE 5 もしくは 6 へ移行してもいい時期になりました。Java SE 5 が登場したときほどの機能追加はありませんが、Java SE 6 にも注目の機能がいくつかあります。 今回は、注目度が高いパーシステンス(永続化)に関係するものについて紹介しましょう。ただし、本稿執筆時点(2006年12月5日)ではJava SE 6はRC(Release Candidate)版ですので、リリ

1リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く