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

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

Play Frameworkで画面表示が遅い原因と対処

# はじめに

※別のブログに投稿していた記事をQiitaに投稿し直しています。(元の記事は削除予定)

# 環境

Play Framework 2.2.6
macOS Big Sur 11.5.2

# 現象

Play Frameworkのアプリをローカルで起動すると、画面表示が遅い。
Chromeで確認したところ、“`Cache-Control“`の値がローカル環境と本番環境とで異なる。

* ローカル環境

「Cache-Control: no-cache」になっている。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2627583/082c9817-70f0-36f0-28de-b4923382811b.png)

* 本番環境

「Cache-Control: max-age=3600」になっている。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2627583/

元記事を表示

【Java】matchesメソッドについてのメモ

## 概要
String型の文字列をチェックする際に必要なmatchesメソッドの使い方を、学習のメモとして記録しておこうと思う。

※今後も情報を追記します。

## 部分一致
“`Java
String password = “AaBbcC123”;

//パスワードに数字を含む
password.matches(“.*[0-9].*”);

//アルファベットの小文字を含む
password.matches(“.*[a-z].*”);

//アルファベットの大文字を含む
password.matches(“.*[A-Z].*”);
“`
結果、
“`Java
true
true
true
“`

## 完全一致
“`Java
String password = “AaB123”;

//パスワードが5文字で数字のみ
password.matches(“[0-9]{5}”);

//パスワードが6文字でアルファベットと数字のみ
password.matches(“[a-fA-F0-9]{6}”);
“`
結果、
“`Java
false
true
“`

## 参考

元記事を表示

【Java】ポリモーフィズム(Polymorphism)

本稿ではポリモーフィズム(多態性)の説明については割愛する。
具体例を用いて動きの概要をまとめる。
## 具体例
準備するクラス

“`mermaid
classDiagram
Animal <|-- Dog Animal <|-- Cat Animal : -int speed Dog : -int speed Cat : -int speed class Animal{ +Cry() +Run() } class Dog{ +Cry() +Run() +Eat() } class Cat{ +Cry() +Run() } ``` **Animalクラス(親クラス=スーパークラス)** ※abstractの説明も割愛する。 ```java:Animal.java public abstract class Animal { private int speed = 5; public abstract void Cry(); public void Run() { System.out.println(speed + "km/hの速度で逃げ出した。"); }; } ```

元記事を表示

ポートフォリオ作成の過程で学んだ技術を振り返る ~Spring Boot編~

# はじめに
Javaのポートフォリオ作成の過程で学んだフレームワークやライブラリ等を、サンプルコードをもとに一言で説明したり要点をまとめてみました。
本記事は自身の振り返りのために作成した備忘録なので、第三者向けの説明が不十分な箇所があるかと思います。ご了承ください。

# Spring Boot
JavaでWebアプリを作成するためのフレームワーク。
アプリ(プロジェクト)作成時に使いたいフレームワークやライブラリを選択すれば、利用設定なしに最適な環境を構築できる。あとは必要に応じてConfigクラスを作成したり、XMLファイルに外部ファイルとの依存関係、プロパティファイルにDBアクセスの設定等を記述する。

## Spring Tool Suite(STS)
Springベースのアプリケーション開発を行うために提供される開発ツール。
https://spring.io/tools

## MVCアーキテクチャ
Webアプリケーションを設計・作成するときの考え方。

表1 MVCとその役割
|名前|役割|対応するファイル|
| —- | —- | —- |
|Mode

元記事を表示

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

元記事を表示

OTHERカテゴリの最新記事