JAVA関連のことを調べてみた2022年05月07日

JAVA関連のことを調べてみた2022年05月07日

Doma2でMergeを利用する

Doma2でMergeを利用することがあったので、メモとして残しておきます。

といってもそれほど難しいことはなく、まずはDaoインタフェースを用意します。

“`java
@Dao
@ConfigAutowireable
public interface InventoryDao {
/**
* 入荷予定をもとに在庫数を更新する。入荷予定に対する現在在庫が存在しない場合は、在庫データを作成する。
* @param dt 入荷予定日
* @return 挿入・更新件数
*/
@Update(sqlFile = true)
int mergeInventoryUsingReceipt(LocalDate dt);
}

“`

ここで注意するのは、`@Update`アノテーションを付与すること、戻り値を`int`にすることです。この戻り値は更新・挿入・削除した件数になります。

あとはこのDaoインターフェースに対応するMerge文を用意すればよいです。

“`SQL
MERGE inventory AS I
USING (
SELECT *
F

元記事を表示

ガチャで使う乱数を考えてみる

前回の投稿「[Javaの乱数生成器について速度面から調査してみる](https://qiita.com/penguinsan/items/52a7b76e5570f7cf7e15)」でそれほど長周期が必要ないならThreadLocalRandom(SplitMix64)でいいかな、なんて書いたものの、そもそも「長周期が必要ない」もしくは「長周期が必要」ってどういうとき?ってなったのでガチャを例に考察してみます。

# 周期とは
ThreadLocalRandomに使われているSplitMix64などの疑似乱数には内部状態があり乱数を生成するごとに内部状態を更新していきます。
同じ内部状態から生成される乱数は同じになるので、内部状態が1周して同じ値に戻ってくるとそれ以降はまた同じ乱数の系列が出力されることになります。これが周期です。
ちなみにThreadLocalRandomの周期と内部状態は[Java17のAPIドキュメント](https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/random/pa

元記事を表示

Java17でGradleビルド時に「Unrecognized VM option ‘MaxPermSize=2048M’」のエラーが発生した

備忘録です。

## 事象
Java17に上げてGradleでビルドをしようとしたら以下のエラーが発生した。

“`bash
Unrecognized VM option ‘MaxPermSize=2048M’
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
“`

## 原因
gradle.propertiesに設定していた`-XX:MaxPermSize`が[Java17でJava Optionから削除](https://docs.oracle.com/en/java/javase/17/docs/specs/man/java.html#removed-java-options)されたため。

“`text:gradle.properties
org.gradle.jvmargs=-Xms2048M -Xmx5120M -XX:MaxPermSize=2048M
“`

## 解決方法
gradle.prop

元記事を表示

保存した4本値チャートデータの終値と、PUSH APIで受信したチャートデータをマージする

# はじめに

前記事
1. [auカブコム証券のkabuステーションREST APIをcurlで叩く](https://qiita.com/hiuchida/items/fcdd3d6ff921b386a37e)
2. [auカブコム証券のkabuステーションREST APIをjava(generated by the swagger code generator)で叩く](https://qiita.com/hiuchida/items/73b7fc846d4c9501ef2f)
3. [auカブコム証券のkabuステーションREST APIの残高照会をcurlとjavaで叩く](https://qiita.com/hiuchida/items/9eb5336755a3d1b1a3df)
4. [auカブコム証券のkabuステーションREST APIの残高照会から先物OPのdeltaを計算する](https://qiita.com/hiuchida/items/6e0d8d5114192bec1632)
5. [auカブコム証券のkabuステーションREST APIのテスト用モック

元記事を表示

5分足の時刻を列挙する

# はじめに

前記事
1. [auカブコム証券のkabuステーションREST APIをcurlで叩く](https://qiita.com/hiuchida/items/fcdd3d6ff921b386a37e)
2. [auカブコム証券のkabuステーションREST APIをjava(generated by the swagger code generator)で叩く](https://qiita.com/hiuchida/items/73b7fc846d4c9501ef2f)
3. [auカブコム証券のkabuステーションREST APIの残高照会をcurlとjavaで叩く](https://qiita.com/hiuchida/items/9eb5336755a3d1b1a3df)
4. [auカブコム証券のkabuステーションREST APIの残高照会から先物OPのdeltaを計算する](https://qiita.com/hiuchida/items/6e0d8d5114192bec1632)
5. [auカブコム証券のkabuステーションREST APIのテスト用モック

元記事を表示

Minecraft 1.18でマルチツールを作れちゃった話【TagKey

# はじめに
1.18でマルチツールを作る際に躓いていたのになんかあっさり出来てしまったので、同じことをしたい方がいらっしゃれば自由に流用してください。

# 開発環境
今回は以下の環境でやっていきます。

– Windows 10
– Eclipse Temurin JDK with Hotspot 17.0.2
– Minecraft 1.18.2
– MinecraftForge 40.0.3
– IntelliJ IDEA 2021.3.2

# BlockStateについて
ファイル名]

BlockStateの中に「#minecraft:mineable/pickaxe」ってのがありますね。
最近のMinecraftはデータパックなるものに対応したので簡単なModならJavaの知識無しで作れるようになっ

元記事を表示

JPAのサンプル

# 構成
– JsfTest
– src
– main
– java
– bean
– IndexBean.java
– InputBean.java
– entity
– SampleEntity.java
– dao
– SampleDao.java
– service
– SampleService.java
– resources
– application.properties
– webapp
– index.xhtml
– next.xhtml

元記事を表示

LWJGL3で文字を描画する

# 注意
この記事内に登場するコードはすべてMITライセンスで公開されています。
完成品はGithubで公開しているので、解説なんて必要ないという人は[レポジトリ](https://github.com/Tosirukun/lwjgl3-FontRender/tree/main)へGo!

# アプローチ

Graphicsを使用してBufferedImageに文字を描画し、それをテクスチャとして登録し、ポリゴンに張り付ける。

## BufferedImage (ByteBuffer)の錬成

実際にはBufferedImageをByteBufferに変換します。

“`java
public static ByteBuffer getTextTexture(String text, Font font, Color fontColor) {

//まずは描画後のテキストのサイズを取得します
Canvas canvas = new Canvas();
FontMetrics metrics = canvas.getFontMetrics(font);

元記事を表示

WinMergeのHTML形式レポートファイルから差分をプログラム上で取得する方法(Javaによる例あり)

 エビデンスとしてWinMergeでHTML形式のレポートファイルを作成することがあると思います。
 この記事では出力したHTMLファイルから差分となった行をプログラム上で取得する方法について説明します。
WinMergeによるHTML形式のレポートファイル出力
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/846337/7230ab05-5efc-1d57-a87c-35cc4ea7892f.png)
 レポートファイルの差分を比較する部分は4列のtable要素で構成されてます。
WinMergeにより出力されたHTMLレポートファイル
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/846337/e2c153b5-b362-923b-8d74-91f0700729f6.png)
 1-2列目はWinMergeの左側、3-4列目は右側です。それぞれ行番号の列と比

元記事を表示

JAVA_HOME と PATH 環境変数を簡単切り替え

対象者: Windows Java 開発者
(WSL、Docker などの仮想環境除く)

# JAVA_HOME の設定が不要な人

最近は複数バージョンの Java を使用して開発する機会が多くなってきましたが、[Pleiades All in One Java](https://mergedoc.osdn.jp/) の Java Full Edition には、主要な LTS バージョンの Java が付属設定済みのため、JDK のダウンロードやインストールおよび設定が不要で、

:::note info
Eclipse 上で使用する場合は JAVA_HOME や PATH 環境変数の設定も不要です。
:::

プロジェクト設定や実行構成で Java のバージョンを選択しておくだけで、Eclipse の実行メニューから Java メインクラスや Maven コマンドを実行したり、Gradle タスク・ビューから実行できます。

* Eclipse が使用する Java のバージョン
* Eclipse 起動 VM は eclipse.ini の -vm 指定や直下の jre

元記事を表示

可変長配列に要素を追加する処理の色々

# これは何?

go の slice や C++ の std::vector のようなものに要素を追加する場合に世の人々がどうするのかを調べた。

# そもそも

いわゆる可変長配列というものの代表的な実装は

* 適当にメモリ確保して、そこに要素を格納する
* 確保した容量に入らなくなったら、別の場所にメモリを確保して、そこに全部移動してから新要素を追加する

というものになっている。
この「別の場所にメモリを確保」の際にどうするのかが悩みどころ。
必要サイズぴったりにメモリ確保すると「1個追加」を1000回行った場合に絶望的に遅くなる。
多めに確保したいところだけど、多すぎるのはやっぱり損。

みんなどうしているのかなと思って調べてみた。

# 各実装

## go の slice

https://github.com/golang/go/blob/go1.18.1/src/runtime/slice.go#L193
辺りに実装がある。

1. 旧キャパシティが 256未満なら、新キャパシティは旧キャパシティの倍。
1. 旧キャパシティが 256以上なら、新キャパシティは旧キャ

元記事を表示

Java Mapをkey順に並び替える

Mapをkey順(昇順)に並び変える方法です
HashMapは、代入された順番に出力してくれることは保証していません
例えば以下のコード

“`hash.java
import java.util.*;

public class Main {
public static void main(String[] args) throws Exception {

Map map = new HashMap();
map.put(100, “東京”);
map.put(1, “大阪”);
map.put(10, “千葉”);
map.put(10000, “神奈川”);
map.put(1000, “鳥取”);

for (Integer key : map.keySet()) {
System.out.println(key + “: ” + map.get(key));
}
}
}
“`

出力

元記事を表示

udemy「Spring 入門 ~ SpringBoot 2 を使ってお問い合わせアプリとToDoアプリを作る ~」が良かったのでレビュー

udemyで購入して勉強したコースが良かったのでレビューを記載したい。

※有料の講座なので内容に関しては書けません。
この記事では自分にとってどういう点で良かったかを記載したい。

今回レビューする講座は此方
udemy「Spring 入門 ~ SpringBoot 2 を使ってお問い合わせアプリとToDoアプリを作る ~」

https://www.udemy.com/course/java_spring_beginner/

良かった点
☆Spring Frameworkの仕組みを体系的に理解できた☆
この講座では基本的なSpring Frameworkの仕組みを環境構築からマスターすることができる内容になっていると思います。

特に現場でSpring Frameworkを使った実装をしている人はこの講座を使い後追い復習をすると、ぼんやりとしてた仕組みを整理することができ確実に定着させることができると思います。
現場ではどういう風にしているのかについても説明されてるので勉強になります。
あと講義、ハンズオン、実践に分かれてて最初に講義で概要を把握する、次にハンズオンで実際に模範を

元記事を表示

【Java】複合代入演算子

代入演算子には「単純代入演算子」と「複合代入演算子」がある。
本稿では「複合代入演算子」について下記の通りまとめる。

##### ◆複合代入演算子
| 種類 | 意味 |
|:-:|:-:|
| a += b | a = a + b |
| a -= b | a = a – b |
| a *= b | a = a * b |
| a /= b | a = a / b |
| a %= b | a = a % b |

**使用するメリット**
コードを短く記述することができる。
※直観的には分かりにくいため、メリットをそこまで感じない。

実例は割愛する。
以上。

元記事を表示

サーブレットでセッション管理を行う

# はじめに
こんばんわ、きりです。
本記事は[Nablarchを使ってみよう](https://qiita.com/kirin1218/items/242ee0f174f1cb12ef17)のサブ記事として作成しております。

今回はセッション管理について整理します。
本記事ではセッション管理を利用して、(超)簡易的なログインの仕組みを実装してみようと思います。

本記事以外のコンテンツは[こちら](https://qiita.com/kirin1218/items/242ee0f174f1cb12ef17#nablarch%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%88%E3%81%86%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA-%E8%A8%98%E4%BA%8B%E4%B8%80%E8%A6%A7)から閲覧可能です。

なるべく、初心者目線で作成するつもりですが、分かりづらい部分ありましたら、コメント頂きたいです。

# セションとは
セッションとは、クライアントがブラウザなどのアプリケー

元記事を表示

オブジェクト指向を意識した設計ができるようになった気がした - 良いコード/悪いコードで学ぶ設計入門を読んだ感想 –

# はじめに
GWに[「良いコード/悪いコードで学ぶ設計入門」](https://www.amazon.co.jp/%E8%89%AF%E3%81%84%E3%82%B3%E3%83%BC%E3%83%89-%E6%82%AA%E3%81%84%E3%82%B3%E3%83%BC%E3%83%89%E3%81%A7%E5%AD%A6%E3%81%B6%E8%A8%AD%E8%A8%88%E5%85%A5%E9%96%80-%E2%80%95%E4%BF%9D%E5%AE%88%E3%81%97%E3%82%84%E3%81%99%E3%81%84-%E6%88%90%E9%95%B7%E3%81%97%E7%B6%9A%E3%81%91%E3%82%8B%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AE%E6%9B%B8%E3%81%8D%E6%96%B9-%E4%BB%99%E5%A1%B2/dp/4297127830)という本を読んでみて、非常に勉強になったので、
備忘録も兼ねて感想を残していきたいと思います。

## この本を知ったきっかけ
自身のTwitt

元記事を表示

【Java】int型とdouble型の計算の順番で起きたエラー

## 作成したいプログラム
①与えられた数字を2で割る(切り捨て)
②①で得られた数字をさらに2で割る(切り上げ)

## 正しい出力結果
(例)11が入力された場合
“`
5
3
“`

## 起きたエラー
私が初めに書いたエラーは、
“`
class Keisan{
public static void keisan (int num) {
// ①の処理
int middle = (int)Math.floor(num / 2);
// ②の処理
int middle2 = (int)Math.ceil(middle / 2);

System.out.println(middle);
System.out.println(middle2);
}
}
“`
引数numが11の場合、出力結果は
“`
5
2
“`
となる。

つまり、①の処理で先にint型へキャストしてしまったため、②の処理ではint型通しで計算が行われてしまい、3という結果が得られなかった。

元記事を表示

Spring Boot を使用して REST API を作成する

# はじめに
本投稿は、Spring Boot を使用して簡単なREST API を作成することを目的としています。

# 環境構築
## JDKをインストールする
[AdoptOpenJDK](https://adoptium.net/)からJDKをインストールします。

## IntelliJ IDEA(IDE)をインストールする
IntelliJ IDEAは、JetBrains社が開発したJavaなどの言語に対応した統合開発環境です。
https://www.jetbrains.com/ja-jp/idea/download/ にアクセスしてインストールします。

# アプリケーション作成
## 全体像
– Controller
– コントローラは、入力を受け入れて処理を行います。
– 主処理はController内では行わず、Serviceで行います。
– Service
– ビジネスロジックを担当します。
– Repository
– DBアクセスのための入口を担当します。

![名称未設定.001.jpeg](https://qiita-image-stor

元記事を表示

JavaのメソッドとJavaDocの結びつきを考える

いつもの業務中にメソッド名プラス数字というメソッドが乱発されていた。
ただ、これって改善したほうがいいのかと悩んだということに関して記事にさせていただく。

# 問題のコード
問題のコードと似た状態のコードを参考に記載させていただく。
“`
import java.util.*;

public class Main {
public static void main(String[] args) throws Exception {
DoSomething1();
DoSomething2();
DoSomething(1);
DoSomething(2);
}

/**
* DoSomething1の説明
*
*/
public static void DoSomething1(){
//do somthing1
}

/**
* DoSomething2の説明
*
*/

元記事を表示

【Java】アクセス修飾子(public / protected / なし / private)

アクセス修飾子は下記4点がある。
|アクセス修飾子| 制限内容|
|:———–:|:——-:|
|public |同じパッケージ:アクセス可能
違うパッケージ:アクセス可能|
|protected |同じパッケージ:アクセス可能
違うパッケージ:アクセス不可*
*継承関係にあるサブクラスからはアクセス可能|
|修飾子なし |同じパッケージ:アクセス可能
違うパッケージ:アクセス不可|
|private |同じクラスからのみアクセス可能*
*継承関係のサブクラスからもアクセス不可|

 
アクセス制限の範囲は下記の順でアクセス範囲が制限されている。
“`mermaid
graph LR;
public–>protected–>修飾子なし–>private;
“`

**◆クラス・インターフェイスのアクセス修飾子**
public・修飾子なしのみ使用可能

**◆フィールド、メソッド、コンストラクタのアクセス修飾子**
上記4点とも使用可能。

実例は割愛。
以上。

元記事を表示

OTHERカテゴリの最新記事