Java

「みんなの Java 」を読んだ

みんなのJava OpenJDKから始まる大変革期!作者:きしだ なおき,吉田 真也,山田 貴裕,蓮沼 賢志,阪田 浩一,前多 賢太郎発売日: 2020/03/06メディア: Kindle版 主に Java のリリースサイクルの変更とか、結局 JDK どれ選んだらいいの?みたいなところを整理し…

Javaの単一ファイル実行を試してみる #Java

概要 みんなの Java 読んでいたら、Java の単一ファイル実行試してみたくなったのでやってみた。 環境 Mac で試した。 Java のバージョンは12。 $ java -version openjdk version "12.0.1" 2019-04-16 OpenJDK Runtime Environment (build 12.0.1+12) OpenJD…

1365. How Many Numbers Are Smaller Than the Current Number

LeetCode の挑戦ログ Problem https://leetcode.com/problems/how-many-numbers-are-smaller-than-the-current-number/ 数字の配列が与えられる それぞれの値より少ない値がいくつ含まれているか数える その数を同じ index の配列にして返す Solution class …

1207. Unique Number of Occurrences

LeetCode の挑戦ログ Problem https://leetcode.com/problems/unique-number-of-occurrences/ 整数の配列を渡される 値の登場回数がユニークで構成される場合は true を返す Solution class Solution { public boolean uniqueOccurrences(int[] arr) { Map<Integer, Long> m</integer,>…

977. Squares of a Sorted Array

LeetCode の挑戦ログ Problem https://leetcode.com/problems/squares-of-a-sorted-array/ 整数の昇順でソートされた配列が渡される 各要素を自乗して、それを昇順でソートした配列にする Solution class Solution { public int[] sortedSquares(int[] A) { …

617. Merge Two Binary Trees

LeetCode の挑戦ログ Problem https://leetcode.com/problems/merge-two-binary-trees/ 2つのバイナリツリーを同階層でマージしたツリーを作る Solution /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; …

657. Robot Return to Origin

LeetCode の挑戦ログ Problem https://leetcode.com/problems/robot-return-to-origin/ 座標位置を上下左右に動かす指示が文字列で与えられる R (right), L (left), U (up), and D (down) 元の位置 (0, 0) に戻っていたら true , 戻っていなければ false を…

A - Remaining Balls

AtCoder の挑戦ログ Problem https://atcoder.jp/contests/abc154/tasks/abc154_a Solution import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String color1 = sc.next(); sc…

728. Self Dividing Numbers

LeetCode の挑戦ログ Problem https://leetcode.com/problems/self-dividing-numbers/ 整数の範囲が渡される 範囲の中から、自身の桁ごとの数字で割り切れる値を抽出する 0 を含む値は除外する Solution class Solution { public List<Integer> selfDividingNumbers(i</integer>…

961. N-Repeated Element in Size 2N Array

LeetCode の挑戦ログ Problem https://leetcode.com/problems/n-repeated-element-in-size-2n-array/ 2N サイズの配列が与えられる N+1 種類の整数が含まれている 一つの要素が N 回繰り返されている N 回繰り返されてる数を特定する Solution class Solutio…

JUnit5 を IntelliJ IDEA から実行できない #IntelliJIDEA

TL;DR Maven のプロジェクトに JUnit5 の依存を追加した コマンドラインからは通るが、 IntelliJ IDEA からの実行がエラーになる junit-platform-launcher を依存に追加したら実行できるようになった 環境 openjdk 12.0.1 IntelliJ IDEA 2019.3.2 詳細 公式…

905. Sort Array By Parity

LeetCode の挑戦ログ Problem https://leetcode.com/problems/sort-array-by-parity/ 正の整数からなる配列を渡される 偶数 -> 奇数の順にソートする 偶数 -> 奇数であれば他の順序は問わない Solution class Solution { public int[] sortArrayByParity(int…

832. Flipping an Image

LeetCode の挑戦ログ Problem https://leetcode.com/problems/flipping-an-image/ バイナリマトリックス(二次元配列)が渡される 各行をひっくり返した後、反転させる Solution class Solution { public int[][] flipAndInvertImage(int[][] A) { return Ar…

1299. Replace Elements with Greatest Element on Right Side

LeetCode の挑戦ログ Problem https://leetcode.com/problems/replace-elements-with-greatest-element-on-right-side/ 配列の右側で最大の値に置き換えた配列を作成する 配列の最後に -1 をつける Solution class Solution { public int[] replaceElements(…

数字の配列を降順にソートする #java

概要 数値の配列を降順にソートされたリストにする Stream の sorted を使う Collections の reverseOrder で降順になる サンプル int[] nums = {3, 6, 8, 1, 5, 4, 7, 9, 2}; List<Integer> sorted = Arrays.stream(nums).boxed() .sorted(Collections.reverseOrder(</integer>…

JJUG CCC 2018 Fall で登壇してきました #jjug_ccc #ccc_e4

JJUG CCC 2018 Fall にて「複雑なドメインに泥臭く立ち向かう」というタイトルで登壇してきました。 JJUG CCC での登壇は1年ぶりです。 セッション概要 www.java-users.jp 当日の資料 speakerdeck.com 前回登壇したときのブログ su-kun1899.hatenablog.com …

データベースのPRIMARY KEYを自動採番せずにアプリケーション側で生成する

データベースの自動採番 データベースにはPRIMARY KEY(要はID)を自動採番で生成してくれる機能を提供していることが多い。 MySQLのAuto Increment PostgreSQLのSerial OracleのSequence etc サロゲートキーのような、特に意味のないデータのIDを発行するとき…

JJUGで発表してきました #jjug_ccc #ccc_l1

JJUGで「SpringBootとMyBatisでデータベースを可視化する」というテーマで発表してきました。 speakerdeck.com CfPの書き方教えてくれたり、発表資料レビューしてくれた同僚たちには感謝しかない。 朝イチ・冬将軍・雨模様で果たして聞きに来てくれる人いる…

MySQLのConnector/J (JDBC)のconnectTimeoutとsocketTimeout #MySQL

MySQLのConnector/J (JDBC)にはconnectTimeoutとsocketTimeoutのパラメータがあり、JDBCの接続文字列に追加することで設定できる。 MySQL :: MySQL Connector/J 5.1 Developer Guide :: 5.1 Driver/Datasource Class Names, URL Syntax and Configuration Pr…

JJUG CCC 2017 Fall CfPに応募してみた #jjug_ccc

初心者枠があったので、ダメ元で応募してみた。 JJUG CCC 2017 Fall CfP 募集開始しました | 日本Javaユーザーグループ 参考にしたもの CfPどうやって書くのがいいかな、って思ってたら同僚が色々教えてくれた。 その中でも特に参考になったもの。 blog.buil…

SonarQubeを使ってみた #sonarqube

概要 Javaで作ってるリポジトリにSonarQubeを適用してみました。 SonarQubeとは? SonarQubeは、ソースコードの静的解析ツールです。 www.sonarqube.org 今回はオープンソースであれば無料で使えるSonarQube.comを利用します。 about.sonarqube.com アカウン…

Javaで期間の日数を計算する #java

概要 2016年1月7日から2017年4月27日みたいな期間の日数を数える方法。 Period…惜しい 日付の期間を扱うには java.time.Period クラスがあるが、悲しいことに日数をカウントするAPIがない。 getDays() は日付だけで計算をするため、月をまたいだ日数のカウン…

CircleCIでjacocoのカバレッジレポートをとる #circleCi #jacoco #java

概要 SpringBoot + Spock + maven で開発をしているんだけれど、せっかくテストも書いているのでカバレッジレポートをCI時に取得するようにする。 pom.xmlにjacocoプラグインを追加 ... <build> ... <plugins> ... <plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>0.7.9</version> <executions> <execution> <id>prepare-agent</id> </execution></executions></plugin></plugins></build>

Mavenで特定のクラスのテストだけ実行する #maven #java

特定のテストだけ mvn test -Dtest=red.sukun1899.SampleSpec クラス名が一意になるなら、パッケージは省略できる mvn test -Dtest=SampleSpec 複数の場合はカンマでつなぐ mvn test -Dtest=HogeSpec,FugaSpec 特定のメソッドだけ実行する場合シャープでつな…

application.ymlの値をJavaアプリケーション側で受け取る #SpringBoot

org.springframework.beans.factory.annotation.Value を使うとよい。 ただし、まとまった単位で管理したいときは @ConfigurationProperties を使うのがよさげ。 例 @Configuration public class AppConfig { @Value("${spring.datasource.schema}") private…

SpringBootでMybatisの設定を動的に書き換えられないか挑戦してみた(失敗した)

MyBatisのConfigをJava側で動的に書き換えられないか調べてみた。 結果できなかったんだけど、備忘録として。 stackoverflow.com org.apache.ibatis.session.Configuration に値を突っ込むことでどうにかなりそう? configuration.getVariables().put("globa…

Javaの文字列結合はどうしたものか #java

以前はStringBuilderかStringBufferがお約束だったけども、String#joinがJava8から追加されてどうしたらいいものか。 StringJoinerなんてのもある。 というかString#joinは内部的にはStringJoinerを使っているらしい。 色々記事を漁ってみたものの、パフォー…

SpockでJavaの無名クラスを使ったらCircleCIがコケた #circleci #java #spock

CircleCIがテストの途中にタイムアウトでこけた。 command mvn test took more than 10 minutes since last output ログを見ても途中で止まっており、結果としてもタイムアウトなので検討つかない。 もちろんローカル環境では発生しない。 Revertなりなんな…

JavaのStreamで独自ソート #java

sortedにComparator Streamで独自ソートするにはsortedにComparatorを渡してやればOK。 List<Person> personsSortedByName = getPersons().stream() .sorted(new Comparator<Person>() { @Override public int compare(Person person1, Person person2) { return person1.get</person></person>…

SpockでオーバーロードされたメソッドをMockする #spock #groovy

JavaでオーバーロードされたメソッドをMockしようとしても、うまくMockできないことがある。 どちらのメソッドを呼べばいいかわからないからだと思う。(たぶん) 下記のようなメソッドをMockしたい場合の対応。 public String doSomething(String arg1) pub…