Jodd is a set of micro-frameworks and developer-friendly tools and utilities. Code-things-done. Great performances. Tiny dependencies. Use what you like!
オブジェクト指向プログラムで getter/setterメソッドを使わなければならない 10の理由 福盛 秀雄 fukumori at m.ieice.org JavaやC++などのオブジェクト指向言語でプログラムを書いているときに、単純なメンバ変数を参照したり操作するために anObject.getX() [以後これをgetterメソッドと呼ぶ] とか anotherObject.setY(y) [以後これをsetterメソッドと呼ぶ] と書くのはなぜだろうと思ったことはないだろうか? int型の変数ひとつを操作するのになぜわざわざメソッドを定義するのだろう? 単純に代入を使えばいいじゃないか? この文章はそんなあなた(かつての僕も含む)が、getter/setterメソッドを使うべきである理由についてまとめたものである。 ということで早速本論へ。 1. クラス内部のデータ表現を変えた場
ScalaとJavaってまぁまぁ見た目は似てて、同じ予約語も多いので、Javaの予約語を、Scalaの視点からみた場合に分類して簡単に解説してみました。分類の方法は独自だし、けっこう雑です。 Scala始めようと思ってるけど、Javaのあの予約語は、Scalaだと同じやつあるの?もしないなら、Scalaの予約語の、どれを使えばいいの? っていうJavaプログラマ向けです。Javaプログラマにこそ、Scalaが普及して欲しいので。 完全に説明するのもめんどくさかったので、説明もなんか雑ですが・・・ 同時に、以前scalaの予約語について書いたものがあるので、こっちも見るとよいかも。*1 だいだいJavaと同じ機能のモノ 特に説明の必要がないほど、ほぼJavaと同じ使い方するものはなにも書いてません。 catch class もちろんclassの定義に使うのは同じです。 が、Javaの場合 C
前回、前々回と割とヘビーな仕様の話だったので、今回は若干実用的なネタとして、シングルトンパターンの遅延初期化をメモリモデルの視点から、どのようにすればスレッドセーフになるか考えてみたいと思います。 そのシングルトンの遅延初期化はスレッドセーフか 以下のようなシングルトンパターンは日常的に使うデザインパターンの一つだと思います。 ただ、今回はSingletonクラスのgetInstanceメソッドに、わざとロックを掛けずに実装してみました。この場合にどういうことが起こりうるか考えてみたいと思います。 public class Singleton { private static Singleton instance; public static Singleton getInstance() { // バリアがない if (instance == null) { // Normal Load
ひしだまHPの更新履歴。 主にTRPGリプレイの元ネタ集、プログラミング技術メモと自作ソフト、好きなゲームや音楽です。 昨日『Ashigelコンパイラの勉強会』に参加してきました。 スライド:Inside of Asakusa DSL Togetter:#ashigel Ashigelコンパイラの勉強会 自分が書いてきたメモはほとんどスライドの写しなので、今回は感想だけ書きます。(というか全部理解できたとは言いがたいので、感想しか書けないというか(苦笑)) まず「DSL」という言葉について。 自分は最近Scalaを勉強していてScalaの本でよく「DSLの例」を見かけていた。Scala上に新しい構文っぽいものを作り上げ、それを使って目的の記述を行う形式。 なので漠然とAsakusa DSLもそんな感じかと思っていたんだけど、全然違った^^; Asakusa DSLは大きく三層に分かれていて
About XStream XStream is a simple library to serialize objects to XML and back again. Features Ease of use. A high level facade is supplied that simplifies common use cases. No mappings required. Most objects can be serialized without need for specifying mappings. Performance. Speed and low memory footprint are a crucial part of the design, making it suitable for large object graphs or systems wit
Chemistry mailing list for questions and contributions: dev@chemistry.apache.org Important time-saving note for chemists: the Apache Chemistry project has nothing to do with chemistry or chemicals! The name comes from the inclusion of the C.M.I.S. letters, "CheMIStry". Resources¶ CMIS and Apache Chemistry in Action¶ CMIS and Apache Chemistry in Action is a comprehensive guide to the CMIS standard
Performance techniques used in the Hotspot JVM What code shapes does the JVM optimize best? Here is a list. Knowing these optimizations may help language implementors generate bytecodes that run faster. Basic information about bytecodes is in Chapter 7 of the JVM Spec.. In the context of this discussion, "compiler" = "JIT", and usually more specifically refers to the server (or final tier) JIT. Ge
Javaの最適化の議論で「インライン展開」「エスケープアナリシス」などの用語が出てきていて、気になって調べたところ、java実行時のオプションで最適化の方法を指定したり実行過程を表示したり出来るらしい。 主なオプションについて Java HotSpot VM Optionsにパフォーマンスに影響しそうなHotSpot VMのオプションが説明されている。 例: オプション 効果 -XX:+PrintCompilation メソッドがコンパイルされた際にメッセージを表示 -XX:+UseBiasedLocking Biased Lockingを使用する -XX:+OptimizeStringConcat 可能なら文字列の連結操作の最適化を行う -XX:+AggressiveOpts 将来のリリースでデフォルトになりそうな最適化フラグを有効にする ... ... たとえばjava起動時に-XX:
あちこちで書かれているように、iTextは5系にバージョンアップしてから日本語などを使う際に必要なiTextAsian.jarがそのままでは使えなくなってしまっています。 http://d.hatena.ne.jp/thunderhead/20100408/1270695544 http://abetuyo.net/blog/2009/12/itext-50-itextasianjar.html こんな致命的な問題を誰もフィードバックしていないのかなぁ…と思いながらSourceForge.netのiTextプロジェクトのMLを検索してみたところ、以下のエントリを発見しました。 > I noticed that iTextAsian.jar still uses package from > "com.lowagie.text.pdf.fonts/"instead of > "com/ite
前回でパフォーマンス計測に用いるタイマーについての理解を深めたので、やっとパフォーマンスの計測を始めることができる。 今回のテーマはJavaの文字列連結だ。タイムリーだね。 文字列連結についての基礎知識 Javaの文字列連結についての言語仕様まわりは Stringの連結はそう簡単なものではない - じゅんいち☆かとうの技術日誌 が詳しい。しかし、パフォーマンス計測がなっちゃない。パフォーマンスの計測はそう簡単なものではない。 currentTimeMillis()で計測しておいて plusTime:14780, concatTime:7053, sbuilderTime:7, sbufferTime:13 とか、その7とか13の有効数字はいくつだっての*1。 そんなわけで、計測方法を工夫してみよう。二重ループとし、内側を1000回、それを500回繰り返す。ループが1回まわる間に1回ずつSy
追記: 指摘の通りで、現実的な連結回数での計測でもないですし、統計手法を用いた分析をしていないので、このエントリの計測値は当てにしないでください。なので以下のブログを参考にしてください。 currentTimeMillis()で計測しておいて plusTime:14780, concatTime:7053, sbuilderTime:7, sbufferTime:13 とか、その7とか13の有効数字はいくつだっての。 激しく今更感があるタイトルですが(;・∀・) 昔に取り上げたのですが、 文字列の結合をやるからといって、すぐにStringの+をつかってはいけない - じゅんいち☆かとうの技術日誌 Stringの+演算子は間違った使い方するとパフォーマンスが低下しますよっていう話題。若干ネタ成分ありますが、ご容赦ください。 これ系の話題は自分的にはオワコンなんですが、最近、また話題を見つけた
0x00. はじめに 筆者はJava製のWAF(Web Application Firewall)、Guardian@JUMPERZ.NETの開発とメンテナンスを行っている。元は自社のシステムを守るために(そして半分趣味で)作ったものだが、数年前にこれをコアのエンジンとしてさらに拡張し、SaaS型の商用サービス「Scutum(スキュータム)」を立ち上げた。 その後順調に顧客を獲得することができ、システムリソース的にも増強が必要となる段階などを経験した。Google、mixiやはてな等、さまざまな大規模サイトのインフラエンジニアの方々がインフラ設計に関する考え方などをインターネット上で公開してくれているおかげで、初期のシステム設計時に「将来的にスケールアウト可能なシステム構成にしておくこと」が重要であるということがわかっていた。その教えに従っていたおかげで、リソースの逼迫(ちなみに今回はCP
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く