- 1. SpringBoot の Validation 簡易メモ
- 2. Javaで「配列の要素を昇順・降順にソートする(sort)」の動作を確認してみた
- 3. YAVI使い方メモ
- 4. DTOクラスはアホにしよう
- 5. ABC359A~Fの解答[Java]
- 6. ABC358A~D、Gの解答[Java]
- 7. 【Java Gold】4種類のネストされたクラスの特徴についてまとめてみた
- 8. ABC357A~Fの解答[Java]
- 9. ABC356A~Eの解答[Java]
- 10. ABC355A~Dの解答[Java]
- 11. [備忘録]EclipseでTomcatが起動できなかったときの対処
- 12. Intellij IDEAでtypo検出の緑の波線を消す方法
- 13. Java Gold 紫本
- 14. 【Java】ArrayListクラスを継承する
- 15. Spring Data Jpaの@OneToMany @ManyToOne Entityテーブル結合基礎 備忘録#5
- 16. [超初心者向け]プログラミング??Java??って人に
- 17. Javaで「配列の要素を逆順に並び替える」の動作を確認してみた
- 18. OpenAI APIをJavaで使用する: 非公式クライアント「jvm-openai」の紹介
- 19. Javaの値型(基本データ型、プリミティブ型)と参照型(オブジェクト型)の違い
- 20. Java 16で登場した「recordクラス」について
SpringBoot の Validation 簡易メモ
SpringBoot で Validation 使った時のの簡易メモ
良いやり方は模索中。。。# 実行環境
– Windows11
– Pleiades 2024 Full Edition
– Maven v3.9.6
– SpringFramework Boot v3.3.0
– Java v21
– spring-boot-starter-thymeleaf
– spring-boot-starter-web
– spring-boot-starter-validation ()# プロジェクト作成
– Spring Boot DevTools
– Spring Web
– Lombok
– Thymeleaf
– ValidationValidation で追加された依存関係は以下
“`xml:pom.xml
org.springframework.boot
spring-boot-starter-validation
Javaで「配列の要素を昇順・降順にソートする(sort)」の動作を確認してみた
# 概要
Javaで「配列の要素を昇順・降順にソートする(sort)」の動作を確認してみました。
以下のページを参考にしました。https://www.javadrive.jp/start/array/index14.html
# 実装
以下のファイルを作成しました。
“`JSample14_1.java
import java.util.Arrays;class JSample14_1{
public static void main(String[] args){
int[] src = {12, 24, 18, 35, 21};
System.out.println(Arrays.toString(src));Arrays.sort(src);
System.out.println(Arrays.toString(src));
}
}
“`以下のコマンドを実行しました。
“`
$ javac JSample14_1.java
$ java JSample14_1
[12, 24, 18, 35, 21]
[1
YAVI使い方メモ
# YAVIとは?
– Java のバリデーションライブラリ
– ラムダを使用し、型安全な API を提供する
– Yet Another Validation for Java の略で、読みは**ヤバイ**
– 日本人の [@making](https://x.com/making) さんが作っている
– Spring WebFlux.fn で使えるバリデーションが欲しいというのが動機で、 Bean Validation を置き換えるのが目的ではない
– 詳しい話は [Java用Validatorライブラリ”YAVI”(ヤヴァイ)の紹介 – IK.AM](https://ik.am/entries/461) を参照のこと# 環境
“`
>gradle –version————————————————————
Gradle 8.8
————————————————————Build time: 202
DTOクラスはアホにしよう
# DTOクラスはアホにした方がいい
– DTOクラスはただの入れ物であり、中身のデータが何かは知らない
つまり、getterやsetterは(中身は何か知らんけど)ただ来たものを、受け渡すだけ
– DTOクラスは、賢くしない方がいい(処理とかを入れない方がいい)
– 末端であるDTOクラスで色々やろうとすると、メンテナンス性が悪くなる
→・末端が広大化していく
・要件が増えた時にif文が増えたりしてカオスになる**どこで頭を使うかにもよるが、基本は末端がアホな方がいい**
# カプセル化の意味
– カプセル化とは、他のオブジェクトに「使っていいよ」と公開するフィールドとメソッドを最小限に抑え、さらには、公開するなら操作できる範囲を必要最小限に抑えること。(アクセス制御 access control)
↓
**いちいち色々と処理をするためのメソッドとかをDTOクラスに作っていたらキリがない!!**# 備考
– Androidの場合、DTOクラスはアホにしてView Modelは頭をよくするようにすればいいハズ。。。
– kotlinのdata class(
ABC359A~Fの解答[Java]
## はじめに
今回はコンテスト中にFまで解けたのでそれを載せようと思います。なお、僕のライブラリは[GitHub](https://github.com/viral8code/viral-Library)をご確認ください。
では、見てきましょう。## A – Count Takahashi
問題文は[こちら](https://atcoder.jp/contests/abc359/tasks/abc359_a)`Takahashi`か`Aoki`の$2$通りなので、先頭一文字だけに注目すれば良いです。
“`A.java
final class Main{
private static final boolean autoFlush = false;
private static final SimpleScanner sc = new SimpleScanner(System.in);
private static final SimpleWriter out = new SimpleWriter(System.out,autoFlush);public s
ABC358A~D、Gの解答[Java]
## はじめに
今回はコンテスト中にDまでとGが解けたのでそれを載せようと思います。なお、僕のライブラリは[GitHub](https://github.com/viral8code/viral-Library)よりご確認ください。
では、見ていきましょう。## A – Welcome to AtCoder Land
問題文は[こちら](https://atcoder.jp/contests/abc358/tasks/abc358_a)愚直に調べれば良いです。
“`A.java
final class Main{
private static final boolean autoFlush = false;
private static final SimpleScanner sc = new SimpleScanner(System.in);
private static final SimpleWriter out = new SimpleWriter(System.out,autoFlush);public static void main(String
【Java Gold】4種類のネストされたクラスの特徴についてまとめてみた
## 記事作成の経緯
現在、Java SE 11 Programmer II試験(以下Java Gold)に向けて勉強をしているのですが、参考書をある程度読み込みましたので、問題集への取り掛かりと並行してアウトプットをしていこうと思い、記事を作成しています。
自分はアウトプットを目的として書いていますが、どこかにいるであろう同じ試験への合格・挑戦を目指している方への参考になるような記事作成を心掛けていきます。
記事は「[オラクル認定資格教科書 Javaプログラマ Gold SE11(山本道子 著)](https://www.shoeisha.co.jp/book/detail/9784798170572) 」(いわゆる紫本)を参考に作成しております。## 今回紹介する内容
今回はおそらくJava Goldを勉強する際、最初に苦労するであろうネストされたクラスについて紹介していこうと思います。## ネストされたクラスとは
ネストクラスとは一言で表すと「クラス定義の中に定義されたクラス」です。クラス定義は通常、Javaファイル内で行われクラスの中に
ABC357A~Fの解答[Java]
## はじめに
今回はコンテスト中にEまで、コンテスト後にFを解いたのでFまで載せようと思います。なお、僕のライブラリは[提出結果](https://atcoder.jp/contests/abc357/submissions?f.Task=&f.LanguageName=Java&f.Status=AC&f.User=viral)よりご確認ください。
では、見ていきましょう。## A – Sanitize Hands
問題文は[こちら](https://atcoder.jp/contests/abc357/tasks/abc357_a)$H$を順に受け取って、$M$が$0$を下回ってしまうタイミングを探しました。
“`A.java
final class Main{
private static final boolean autoFlush = false;
private static final SimpleScanner sc = new SimpleScanner(System.in);
private static final SimpleWriter
ABC356A~Eの解答[Java]
## はじめに
今回はコンテスト中にEまで解けたのでそれを載せようと思います。なお、僕のライブラリは[提出結果](https://atcoder.jp/contests/abc356/submissions?f.Task=&f.LanguageName=Java&f.Status=AC&f.User=viral)をご確認ください。
では、見ていきましょう。## A – Subsegment Reverse
問題文は[こちら](https://atcoder.jp/contests/abc356/tasks/abc356_a)区間反転はライブラリ化してあるのでそれを使いましたが、内部的には愚直に交換を行なっています。
“`A.java
final class Main{
private static final boolean autoFlush = false;
private static final SimpleScanner sc = new SimpleScanner(System.in);
private static final SimpleWriter
ABC355A~Dの解答[Java]
## はじめに
今回はコンテスト中にDまで解けたのでそれを載せようと思います。なお、僕のライブラリは[提出結果]()をご確認ください。
では、見ていきましょう。## A – Who Ate the Cake?
問題文は[こちら](https://atcoder.jp/contests/abc355/tasks/abc355_a)$A$と$B$が異なるなら答えが定まりますが、$A=B$なら答えが求まりません。また、$1 \le A,B \le 3$より、答えは$A \ \mathrm{xor} \ B$で求まります。
“`A.java
final class Main{
private static final boolean autoFlush = false;
private static final SimpleScanner sc = new SimpleScanner(System.in);
private static final SimpleWriter out = new SimpleWriter(System.out,autoFlush);
[備忘録]EclipseでTomcatが起動できなかったときの対処
## 実行環境
– Eclipse Version: 2023-09 (4.29.0)
– Java 1.8.0_202
– Tomcat Tomcat10_Java21## 発生した事象
TomcatでWebアプリケーションを実行中、突如下記のエラーが発生。
![Tomcat-Error.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2516167/989c4d86-a9b4-59d5-f157-21feef4cf5a3.png)(ちゃんと考えてれば**突如**なんてことにはなり得ないんですが^^;)
## 原因
サーブレットのリファクタリングを行ったことでした。
1. `HogeCode.java`を`FooCode.java`に変更
2. アノテーションも`@WebServlet(“/HogeCode”)`から`@WebServlet(“/FooCode”)`に変更※サーブレット名、アノテーション名に被りはありません。
サーブレット名が他のサーブレットと同一の場合も同様の起動エラー
Intellij IDEAでtypo検出の緑の波線を消す方法
## 症状
![スクリーンショット 2024-06-23 14.26.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3172801/2b43ba70-e7ae-bbd5-4011-3902661687c2.png)
邪魔ですね。
## 対策
Settings(command + ,) → Editor → Inspections → Proofreadingのチェックを外せばオーケーです。
![スクリーンショット 2024-06-23 14.29.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3172801/f0129423-e192-6e8f-be4f-7b3011534982.png)
![スクリーンショット 2024-06-23 14.33.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3172801/
Java Gold 紫本
# enum P9
**特定の値を列挙するオブジェクトのこと**
→ 列挙型の実体 = 定数、メソッドを持つクラス
## 注意点メモ
・明示的なインスタンス化はできない
・オブジェクト.クラス定数でアクセス
・コンストラクタ、メソッド、変数定義可
・抽象メソッド、インタフェースのオーバーライド、実装可
・定数は書いた順番に管理
“`enum.java
enum Card {
SPADES,
CLUBS,
DIAMONDS,
HEARTS
}
↓ コンパイルすると…
final class Card extends java.lang.Enum{
public static final Card SPADES = new Card();
public static final Card CLUBS = new Card();
public static final Card DIAMONDS = new Card();
public static final Card HEARTS = new Card(
【Java】ArrayListクラスを継承する
#### ▶はじめに
ArraiListクラスの継承について最近学んだのでアウトプットのために記事を書こうと思いました。
初学者のため、間違いなどありましたご指摘いただけますと幸いです。#### ▶(前提)ArrayListとは
そもそもArrayListってなに?というところから説明できればと思います。ArrayListとは、Listインターフェースを実装したクラスの一つです。
実装には配列が使われており、要素の追加や削除ができます。
配列ではないのか?と思う方もいるかもしれませんが
配列はサイズが宣言時に固定されている一方で、ArrayListは後から必要に応じて拡張されます。
“`Java:宣言方法
ArrayList<-> 変数名 = new ArrayList<->();//上記に書き方よりも下記で書かれていることの方が多い
List<-> 変数名 = new ArrayList<->();
“`
なぜList<->という書き方なのかについては今回触れないので、調べていただければと思います。
(QiitaでもListとArrayListについて書かれている記事
Spring Data Jpaの@OneToMany @ManyToOne Entityテーブル結合基礎 備忘録#5
### ER図
![スクリーンショット 2024-06-23 12.28.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3807467/7d3c3f50-9c83-5a6a-d92d-81599f62b29e.png)
### 成果物イメージ
![スクリーンショット 2024-06-23 12.53.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3807467/f1d999dc-eeab-966c-ae14-d4153be1e560.png)### schema.sql
“`schema.sql
— テーブル削除
DROP TABLE IF EXISTS company CASCADE;
DROP TABLE IF EXISTS employee CASCADE;— カテゴリーテーブル
CREATE TABLE company
(
id SERIAL PRIMARY KEY,
[超初心者向け]プログラミング??Java??って人に
# 概要
### この記事で何がわかるようになる?
+ そもそもプログラミングってどういうものなの?
+ Javaの歴史や考え方
+ どんな開発を行うことができるか、日本で使える??### 今回の記事で覚えておきたいこと
+ プログラミングって?
+ Javaはオブジェクト指向という考え方がある# そもそもプログラミングってなんなの?(小声)
+ コンピュータに対して指示書を作成することをプログラミングという
– この指示書自体のことをプログラムという
– プログラムが与えられているから、私たちの動作によって処理を行ってくれる
– キーボードを打ったら文字が反映される
– 指で画面をなぞったらスライドされる などなど
– プログラミング言語とは機械への指示書を書くために用いられる言葉のこと
– 機械は基本的に二進数しか読めないからプログラミング言語を書いて、それを機械語に変換して指示を与える
> これが機械語のイメージ
>
> 10110000 01100001
># Javaとは
– Javaとは先ほど説明したプログラ
Javaで「配列の要素を逆順に並び替える」の動作を確認してみた
# 概要
Javaで「配列の要素を逆順に並び替える」の動作を確認してみました。
以下のページを参考にしました。https://www.javadrive.jp/start/array/index15.html
# 実装
以下のファイルを作成しました。
“`JSample15_1.java
import java.util.Arrays;class JSample15_1{
public static void main(String[] args){
int[] src = {12, 24, 18, 31, 17};
System.out.println(Arrays.toString(src));for (int f = 0, l = src.length – 1; f < l; f++, l--){ int temp = src[f]; src[f] = src[l]; src[l] = temp; } System.out.println(Arrays.toString(src
OpenAI APIをJavaで使用する: 非公式クライアント「jvm-openai」の紹介
こんにちは、皆さん!今日は、Javaを使ってOpenAI APIを簡単に利用するための非公式クライアントライブラリ「jvm-openai」について紹介します。このライブラリを使用することで、OpenAIのさまざまなAPI機能をJavaコードから直接利用できるようになります。
# jvm-openaiとは?
「[jvm-openai](https://github.com/StefanBratanov/jvm-openai)」は、Java向けの非公式OpenAI APIクライアントで、Jacksonを使用してJSONを解析するシンプルなライブラリです。このライブラリを使用することで、OpenAIのさまざまなAPI(例えばチャット、画像生成、音声生成など)を簡単に操作することができます。
## 依存関係の追加
まず、Java 17以上を使用する必要があります。プロジェクトに依存関係を追加するには、以下のように設定します。
### Gradleの場合
“`groovy
implementation(“io.github.stefanbratanov:jvm-openai:${v
Javaの値型(基本データ型、プリミティブ型)と参照型(オブジェクト型)の違い
# 値型(プリミティブ型、基本データ型)と、参照型(オブジェクト型)の違い
| | 値型(プリミティブ型)
基本データ型| 参照型
(オブジェクト型) |
| —- | —- | —- |
| 型 | intとか | Integerとか |
| 頭文字 | 小文字 | 大文字 |
| 特徴 | ・変数に「値」そのものを持つ
・変数のサイズ(bit)が決まっている
・既定サイズを超える値を格納することはできない
・適切な型を使わないと無駄にメモリを使う
・何のメソッドも持たない
(「int.メソッド名」とかのドット演算子でメソッドを呼び出せない)
・オブジェクトではなく単なる値|・変数には「値」そのものではなく、値がメモリのどこに格納されているかを示す「参照値」が格納される |※基本データ型=値型(プリミティブ型)
↑言い方が違うだけで同じもの# ラッパークラス(wrapper class、プリミ
Java 16で登場した「recordクラス」について
# 導入
Java 16では新しい言語機能として「レコードクラス」というものが導入されました。
私自身、ほとんどJava8か11のプロジェクトばかりしか触れてこなかったので、きちんと触ったことがなかったのですが、この機能が便利そうでしたので、記事にまとめてみました。
ですので、本記事では、レコードクラスの概要と使用例を紹介していきます。# レコードクラスの概要
レコードクラスは、簡潔にイミュータブルなデータキャリアを定義するための機能です。
古くから利用されているJavaBeansのようなゲッターのみを持つシンプルなクラスを簡潔に定義できます。これにより、不要なコード(getterメソッド、`toString()`、`equals()`、`hashCode()`メソッドの定義)の明示的な実装を削減することができ、コードの可読性と保守性が向上します。
## レコードクラスの定義
レコードクラスは、`record`キーワードを使用して定義します。
例は以下のようになります。“`java
record レコードクラス名(型1 引数名1, 型2 引数名2, …) {}