業務こなして学んだこと
Javaでパフォーマンス測定
eclipse4.24でパフォーマンス検証することになって色々調べた結果、MissonControlleってのができるっぽいので、使おうと思ったが、使い方が分からねぇ。。。
いろいろ調べてたけど、時間だけがすぎるので、VisualVMに変更。
思ったより簡単に調べられた。
VisualVMなのか、VirturalVMなのか、最初わからんかったわ。。。
ずっとVirtualVMかと思って調べてたけど、ちゃんとVisualVMが検索結果に出て聞いて、気づくのが遅れた。
検索が優秀になって、自分がバカになってしまったような感覚を感じた。
VisualVMとeclipseに連携するには、VMの引数に -Xverify:none
が必要になる。
ただし、JDK13から非推奨。実行時に警告でるけど、機能はするみたい。
JavaのStreamでlist生成するときは、toListを使え
他人が書いてたコード見てたんだけど、foreach(v -> list.add(v))
みたいな実装をしていた。
Lambdaが登場して結構たつけど、まだそういう実装する人がいるんだなぁと感じた。
mybatisのxmlでforeachは使うべきではない
mybatisのxmlで、foreachは使うべきではない。
そう思う理由は、以下。
- SQLの長文化によるエラーを誘発しやすい
- 生成されるSQLが分かりづらく、思わぬSQLが投げられる
- SQL1本化して高速化しても、だいたい間違っている。(orでの連携は、インデックスが効かない過リスクがある)
- パラメータがないと、意図せぬSQLが発行される可能性がある
これ何回か遭遇したことがあって、大体は長文化でエラーになった。
その尻拭いを、毎回やっていた記憶しかない。
マジで辞めろ。
普通にシンプルなSQL発行する方が、改修しやすいから、SQLにロジックを入れるべきではないと思う。
SQLplusでカラムごとの末尾の空白は取れない
Oracle10g使ってるんだけど、ツールとしてSQLplusでデータ取ってくるものを作ったが、カラムの末尾が取れねぇ。。。
いろいろ調べたら、取得した文字列の末尾の空白を消してくれるらしい。。。
結果は、全部連結した文字列だから、末尾のカラムしか、空白取れない。。。
12c以降は、Markup指定で、カラムごとに末尾の空白を消してくれるらしい。。。
12c使いたかった人生だった。
その他雑記
ショッカーおじたん
電車に乗ってたんだが、「イー」という奇声をたまに発するおじたんがいた。
なんなんだ?って思ったけど、ショッカーが好きなのかな?ぐらいで思考するのをやめた。