エンターテイメント!!

遊戯王好きのJavaエンジニアのブログ。バーニングソウルを会得する特訓中。

2024/04/15週 気づきと振り返りなどなど

業務こなして学んだこと

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使いたかった人生だった。

その他雑記

ショッカーおじたん

電車に乗ってたんだが、「イー」という奇声をたまに発するおじたんがいた。
なんなんだ?って思ったけど、ショッカーが好きなのかな?ぐらいで思考するのをやめた。