- 1. No12. 変数の宣言・変数への代入・練習問題02
- 2. データベースパフォーマンスを最適化するコネクションプーリングとは
- 3. なぜControllerでインターフェースを呼び出すと、そのインターフェースの実装クラスのメソッドを実行できるのでしょうか?(インターフェースとポリモーフィズムに対する理解を深めましょう)
- 4. Javaで「戻り値を使ってメソッドから値を返す」の動作を確認してみた
- 5. .next()と.nextLine()の違いと、初心者向けのScannerの解説
- 6. COBOLとJAVAを比較してみた
- 7. Java Virtual Threadについて調べる時間
- 8. 【Paiza】Javaで五目並べ問題を1次元配列で解く
- 9. 【SpringBoot】AmazonS3にファイルをアップロード&ダウンロードする方法
- 10. Javaで「引数に配列やクラスオブジェクトを渡す」の動作を確認してみた
- 11. 【Java】Spring Bootを使ったToDoアプリケーションを作成しよう-⑨例外処理の実装-
- 12. 【Java】Spring Bootを使ったToDoアプリケーションを作成しよう-⑧戻る機能の実装-
- 13. 【Java】Spring Bootを使ったToDoアプリケーションを作成しよう-⑦削除機能の実装-
- 14. 【Java】Spring Bootを使ったToDoアプリケーションを作成しよう-⑥変更機能の作成-
- 15. 【Java】Spring Bootを使ったToDoアプリケーションを作成しよう-⑤新規登録機能の作成-
- 16. 【Java】Spring Bootを使ったToDoアプリケーションを作成しよう-④一覧機能の作成-
- 17. 【Java】Spring Bootを使ったToDoアプリケーションを作成しよう-③実装方針と環境構築-
- 18. 【Java】Spring Bootを使ったToDoアプリケーションを作成しよう-②設計-
- 19. 【Java】Spring Bootを使ったToDoアプリケーションを作成しよう-①イントロダクション-
- 20. 【Java/Spring Boot 】画面からコントローラに値を渡す方法
No12. 変数の宣言・変数への代入・練習問題02
**【動画URL】** https://youtu.be/X-oBdKR3x6A?feature=shared
変数を使いたい時は宣言をする
データ型 変数; int number;![](https://storage.googleapis.com/zenn-user-upload/d6c5ba284fb4-20231009.png)
—
**【動画URL】** https://youtu.be/6KRixzAZQUU?feature=sharedかごにものを入れること
後で計算に使うなど取っておきたいものは変数に入れておくと良い
int number=7;
boolean result=true;
String item=”りんご”;
など![](https://storage.googleapis.com/zenn-user-upload/73f9562d9a9f-20231009.png)
変数に初めて値を入れる事を初期化という
同じ変数に値を再び入れると上書きされる
![](https://storage.googleapis.com/zenn-use
データベースパフォーマンスを最適化するコネクションプーリングとは
# データベースのコネクションプーリングについて
## 1. コネクションプーリングの概要
コネクションプーリングは、データベースとの接続(コネクション)を効率的に管理するための技術です。データベースへの接続はコストが高く、頻繁に作成・破棄するとパフォーマンスに影響を与えます。コネクションプーリングでは、一度作成したコネクションを再利用することで、接続のオーバーヘッドを削減し、アプリケーションのパフォーマンスを向上させます。## 2. コネクションプーリングのメリット、デメリット
### メリット:
* パフォーマンス向上: コネクションの作成と破棄にかかる時間とリソースを節約。
* スケーラビリティの向上: 多くのリクエストを効率的に処理できる。
* リソース管理: データベースサーバーへの負荷を軽減し、安定性を向上させる。### デメリット:
* 設定の複雑さ: 正しいプールサイズの設定や管理が必要。
* メモリ使用量: 使用されていないコネクションがメモリを消費する可能性。
* デッドロックのリスク: 不適切な使用でデッドロックが発生することがある。## 3. O
なぜControllerでインターフェースを呼び出すと、そのインターフェースの実装クラスのメソッドを実行できるのでしょうか?(インターフェースとポリモーフィズムに対する理解を深めましょう)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3809422/087ce4e2-89c7-057f-9cfb-3a2d38a40bc8.png)
Springを学ぶときに、このような疑問が生じることがあるかもしれません。**私たちはここでインターフェースの抽象メソッドを呼び出しているだけなのに、なぜ実行時にそのインターフェースの実装クラスのメソッドが実行されるのでしょうか?**
直接に答えると:ここではJavaの三大特徴の一つである**ポリモーフィズム**が使われています。
**ポリモーフィズム**はオブジェクト指向プログラミングの重要な特徴の一つです。**ポリモーフィズムを通じて、親クラス(またはインターフェース)の参照変数は、任意の子クラス(または実装クラス)のインスタンスを指すことができます。** これにより、より汎用的で柔軟なコードを書くことができます。
:::note info
Javaの三大特徴は、カプセル化、継承、そしてポリモーフィズムです。
:::
_______
Javaで「戻り値を使ってメソッドから値を返す」の動作を確認してみた
# 概要
Javaで「戻り値を使ってメソッドから値を返す」の動作を確認してみました。
以下のページを参考にしました。https://www.javadrive.jp/start/method/index5.html
# 実装
以下のファイルを作成しました。
“`JSample5_1.java
class JSample5_1{
public static void main(String args[]){
int kekka;kekka = bai(9);
System.out.println(kekka);kekka = bai(5);
System.out.println(kekka);
}private static int bai(int n){
return n * 2;
}
}
“`以下のコマンドを実行しました。
“`
$ javac JSample5_1.java
$ java JSample5_1
18
10
“`# まとめ
何かの役に立てばと。
.next()と.nextLine()の違いと、初心者向けのScannerの解説
色々なサイトで説明されていますがイマイチ核心を掴めていない両者の違いを自分なりに確認していきます。
まずは、両者のメソッドを確認。## .next()とは
Scannerで取得した値を文字列として受け取る。受け取る範囲は空白まで。
例:「aaaa bbbb ccccc」と入力された場合は「aaaa」のみ取得される。## .nextLine()とは
Scannerで取得した値を文字列として受け取る。受け取る範囲は改行まで。
例:「aaaa bbbb ccccc」と入力された場合は「aaaa bbbb ccccc」まで取得される。### 実際のコードと出力結果の例
▼コード
“`
import java.util.Scanner;public class ScannerNextMethod {
public static void main(String[] args) {
Scanner scNext = new Scanner(System.in);
String a = scNext.next();
System.out.printl
COBOLとJAVAを比較してみた
## はじめに
__ 【COBOL(Common Business Oriented Language) = コボル】と__
__ 【Java = ジャバ】のを比較してみました。__##### COBOLの基本的な記載方法は以下を参照。
https://qiita.com/nano357/items/462a3ec523a3e624340b__データ転記__
cobol
““
**************************************************************************
03 END-FLG PIC X(3).*文字定数転記処理
MOVE “END” TO END-FLG.
““
java
“`java
//クラス※1
public class Example
Java Virtual Threadについて調べる時間
# はじめに
Goのgoroutineは軽量スレッドモデルであり、従来の言語のスレッドモデルよりも小さな単位で実行単位を分け、コンテキストスイッチングのコストとブロッキングタイムを低減する概念です。Kotlinではcoroutineという名前で導入され、JDK21からはVirtual Threadが正式にリリースされました。https://go.dev/tour/concurrency/1
# 従来のJavaスレッドモデル
従来のJavaのスレッドモデルはNative Threadモデルで、JavaのユーザースレッドからJNIを通じてカーネル領域を呼び出し、カーネルスレッドを生成してマッピングして作業を行う形態です。つまり、ユーザースレッドとカーネルスレッドの関係は1:1です。このとき、JavaのスレッドはI/O、インタラプト、スリープなどの状況でblock/waiting状態になりますが、**この時に他のスレッドがカーネルスレッドを占有して作業を行うことをコンテキストスイッチングと言います。**
スレッドモデルは従来のプロセスモデルを細かく分け、プロセスの共通部分を共有
【Paiza】Javaで五目並べ問題を1次元配列で解く
# 【Paiza】Javaで五目並べ問題を1次元配列で解く
この記事では、PaizaのBランクレベルアップ問題集の中にある五目並べの問題を二次元配列を用いずに一次元配列のみで解く酔狂な解法を紹介したいと思います!
実際の業務では中々使うことのないようなロジックにはなりますが、「こんな考え方もあるのかぁ」と読んでもらえると幸いです!## 目次
1. [問題の概要](#1-問題の概要)
2. [解法のアイデア](#2-解法のアイデア)
3. [コード解説](#3-コード解説)
– [ 一次元配列に置き換える方法](#一次元配列に置き換える方法)
– [数列の法則](#数列の法則)
– [判定と出力](#判定と出力)
4. [まとめ](#4-まとめ)## 1. 問題の概要
この問題は、”O”と”X”で五目並べの駒の種類を示し、入力された盤面を読み取ってどちらが勝者か、それとも引き分けかを判定するコードを書くという問題です。
通常この手の問題は二次元配列の考え方で解くのが主流ですが、敢えて一次元配列で今回は解いてみました笑[問題文はこちら](https:
【SpringBoot】AmazonS3にファイルをアップロード&ダウンロードする方法
# 概要
Spring Bootを3系にアップデートすると`javax`→`jakarta`に置き換える必要があるため、`javax`が依存関係に含まれる`spring-cloud-starter-aws`[^1]が使えなくなる(と思ったのですが、手元の環境では普通に動きました…)。
念のため依存関係が`jakarta`になっている`io.awspring.cloud.spring-cloud-aws-starter`に変更したのですが、情報が少なかったのでサンプルを公開します。[^1]: `io.awspring.cloud`と`org.springframework.cloud`がありますがどちらでも一緒です
# 環境
– Java17
– SpringBoot
– spring-boot-starter-parent:3.2.6
– spring-cloud-aws-dependencies:3.1.1
– spring-cloud-aws-starter
– spring-cloud-aws-starter-s3# サンプル
ストレージクラスに
Javaで「引数に配列やクラスオブジェクトを渡す」の動作を確認してみた
# 概要
Javaで「引数に配列やクラスオブジェクトを渡す」の動作を確認してみました。
以下のページを参考にしました。https://www.javadrive.jp/start/method/index4.html
# 実装
以下のファイルを作成しました。
“`JSample4_1.java
class JSample4_1{
public static void main(String args[]){
int num = 8;
int array[] = {10, 4};System.out.println(“num = ” + num);
System.out.println(“array[0] = ” + array[0]);henkou(num, array);
System.out.println(“num = ” + num);
System.out.println(“array[0] = ” + array[0]);
}private static void henkou(i
【Java】Spring Bootを使ったToDoアプリケーションを作成しよう-⑨例外処理の実装-
例外処理について書いています。
# 共通的な例外処理を書いてみよう
まず、例外処理とは、プログラムの実行中に発生する予期しないエラーや問題(例外)を適切に処理するための仕組みです。例外が発生したときにプログラムがクラッシュするのを防ぎ、ユーザーに適切なエラーメッセージを表示したり、エラーの原因をログに記録したりすることができます。これにより、システムの安定性とユーザー体験を向上させることができます。
*
controllerパッケージの中にGlobalAdviceController.javaという名前のJavaファイルを作成します。
クラスに@ControllerAdviceというアノテーションを付与します。@ControllerAdviceは、アプリケーション全体で共通の例外処理を一箇所にまとめるための仕組みを提供します。
“`java
@ControllerAdvice
public class GlobalAdviceController {}
“`今回は、@ExceptionHandlerというアノテーションを使って、「データベースアクセスエラーが発生
【Java】Spring Bootを使ったToDoアプリケーションを作成しよう-⑧戻る機能の実装-
戻る機能を作成していきましょう。
# 2.設計で検討した一覧機能をおさらい
>1.画面遷移
一覧画面 ⇔ 登録画面 ⇔ 確認画面 → 完了画面 (→ 一覧画面)
⇔ 変更画面 ⇔ 確認画面 → 完了画面 (→ 一覧画面)
→削除確認画面 → 完了画面(→ 一覧画面)>URL設計
画面名: タスク確認画面からタスク変更画面
URL: /task/back
HTTPメソッド: GET*
画面遷移図にて両矢印(⇔)になっているところは、前の画面に戻ることができます。登録画面、確認画面周りで戻る処理を追加していきましょう。
# controllerクラスを書いてみよう
URL設計で検討したURLをもとにcontrollerクラスのメソッドを書いていきましょう。
確認画面から登録画面に戻る際は、入力した値がクリアされないようにしたいです。そのため、確認画面で表示した値をオブジェクトで引数として受け取り、画面に表示するようにします。
“`java
@GetMapping(“/task/back”)
public String bac
【Java】Spring Bootを使ったToDoアプリケーションを作成しよう-⑦削除機能の実装-
削除機能を作成していきましょう。
# 2.設計で検討した一覧機能をおさらい
> 機能一覧
4.タスクの削除
ユーザーが既存タスクを削除できる機能。物理削除。> 画面遷移
一覧画面 → 削除確認画面 → 完了画面(→ 一覧画面)>画面一覧
>- 完了画面
>- 削除確認画面>画面項目
>- 削除確認画面
タイトル 出力
説明 出力
期限 出力 yyyy/mm/dd
ステータス 出力 変更のときのみ
完了 ボタン 削除処理を実行し、完了画面に遷移
もどる ボタン 確認画面に遷移>- 完了画面
完了メッセージ 出力
“The data was successfully deleted.”削除したときのみ表示
go to list ボタン 一覧画面に遷移削除機能は、削除内容を確認して削除を実行します。画面のUIとしては、既存の画面イメージとよく似ているようです。
削除確認画面
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/605915/dcff528b-4670-f
【Java】Spring Bootを使ったToDoアプリケーションを作成しよう-⑥変更機能の作成-
変更機能を作成していきましょう。
# 2.設計で検討した一覧機能をおさらい
> 機能一覧
3.タスクの変更:
ユーザーが既存タスクを変更できる機能。タイトル、説明、期日、ステータスの変更が可能。> 画面遷移
> 一覧画面 ⇔ 変更画面 ⇔ 確認画面 → 完了画面 (→ 一覧画面)>画面一覧
>- 変更画面
>- 確認画面
>- 完了画面>画面項目
>- 変更画面
タイトル 入力/出力 100文字まで/必須
説明 入力/出力 200文字まで
期限 入力/出力 必須 yyyy/mm/dd
ステータス 入力/出力 必須 0~3までの範囲
確認 ボタン 確認画面に遷移
もどる ボタン 一覧画面に遷移>- 確認画面
タイトル 出力
説明 出力
期限 出力 yyyy/mm/dd
ステータス 出力 変更のときのみ
完了 ボタン 登録/変更処理を実行し、完了画面に遷移
もどる ボタン 確認画面に遷移>- 完了画面
完了メッセージ 出力
“The data was successfully updated.”変更したときのみ表示
go to list ボタン 一覧画面に遷移
【Java】Spring Bootを使ったToDoアプリケーションを作成しよう-⑤新規登録機能の作成-
新規登録機能を作成していきましょう。
# 2.設計で検討した一覧機能をおさらい
> 機能一覧
>1.タスクの登録:
ユーザーが新しいタスクを入力し、ToDoリストに追加できる機能。タスクの登録項目としては、タイトル、説明、期日がある。> 画面遷移
一覧画面 ⇔ 登録画面 ⇔ 確認画面 → 完了画面 (→ 一覧画面)> 画面一覧
> – 登録画面
> – 確認画面
> – 完了画面> 3.画面項目
>- 登録画面
タイトル 入力 100文字まで/必須
説明 入力 200文字まで
期限 入力 必須 yyyy/mm/dd
確認 ボタン 確認画面に遷移
もどる ボタン 一覧画面に遷移>- 確認画面
タイトル 出力
説明 出力
期限 出力 yyyy/mm/dd
ステータス 出力 変更のときのみ
完了 ボタン 登録/変更処理を実行し、完了画面に遷移
もどる ボタン 確認画面に遷移>- 完了画面
完了メッセージ 出力
“The data was successfully saved.”登録したときのみ表示
go to list ボタン 一覧画面に遷移> 4.バリデ
【Java】Spring Bootを使ったToDoアプリケーションを作成しよう-④一覧機能の作成-
一覧機能を作成していきましょう。
# 2.設計で検討した一覧機能をおさらい
> 機能一覧
2.タスクの一覧表示:
ユーザーがToDoリスト内の全てのタスクを閲覧できる機能。タスクのタイトル、説明、期日、ステータスを表示。
ステータスは、未着手、作業中、完了> 画面遷移
一覧画面 ⇔ 登録画面 ⇔ 確認画面 → 完了画面 (→ 一覧画面)
⇔ 変更画面 ⇔ 確認画面 → 完了画面 (→ 一覧画面)
→削除確認画面 → 完了画面(→ 一覧画面)> 画面一覧
>- 一覧画面> 画面項目
>- 一覧画面
新規登録 ボタン 新規登録画面に遷移する
タイトル 出力 繰り返しあり
説明 出力 繰り返しあり
期限 出力 繰り返しあり yyyy/mm/dd
変更 ボタン 変更画面に遷移・繰り返しありここまでみていくと、一覧画面が一覧機能をつかさどっていることがわかります。登録済のタスクが一覧で並んでいて、登録画面や変更画面、削除確認画面へも遷移することができます。また、ユーザーが最初に遷移する画面にもなっていますので、今回のTODOアプリケーションの肝になる画面
【Java】Spring Bootを使ったToDoアプリケーションを作成しよう-③実装方針と環境構築-
本稿では、TODOアプリケーションのファイル構成や環境構築について記載をしていきます。また、実装する上で知っておいた方がよい知識もまとめてみました。
実装は次の投稿からはじまり、本稿は知識を入れるための読み物の位置づけです。# 今回TODOアプリケーションを実装するファイル構成
今回のTODOアプリケーションのファイル構成は以下の通りです。“`
ファイル構成
tutorialTodoApplication
|-src/main/java
|-com.example.demo
|-ServletInitializer.java
|-TutorialTodoApplication.java
|-com.example.demo.common
|-Constants.java
|-com.example.demo.controller
|-TaskController.java
|-GlobalAdviceController.java
|-com.example.demo.entity
|-Task.java
|-c
【Java】Spring Bootを使ったToDoアプリケーションを作成しよう-②設計-
todoアプリケーションの設計をしていきます。
# はじめに
設計とは、アプリケーションの要件に基づいて、アプリケーション全体の構造や動作を計画するプロセスです。良い設計は、アプリケーションの拡張性、保守性を高め、開発プロセス全体の効率性を向上させることを期待されます。
難しく書きましたが、要するに、要件をもとにシステムに実装する機能を明確化、具体化していくプロセスです。エンジニアはこの設計(How)の部分で価値を発揮することを期待されます。
設計では、主に「画面・機能・データ」 を検討します。この単位だとまだ大雑把なので、もう少し検討しやすい形に整えます。設計する単位まで落とし込むと、今回は以下の4つを検討しTODOアプリケーションを設計していきます。実際の案件では、もっとたくさんの仕様書を作成することもあるかもしれませんが、今回では最低限必要なものだけピックアップしてしました。
TODOアプリケーションの作成プロセスを、「仕様を考える」と「仕様をコーディングする」とわけたときに、「仕様を考える」に該当する最低限必要なものを設計として扱うことにします。例えば、コードを書くと
【Java】Spring Bootを使ったToDoアプリケーションを作成しよう-①イントロダクション-
JavaのフレームワークであるSpring Bootを使ってToDoアプリケーションを作成していきます。ToDoアプリケーションの作成を通じて、Javaアプリケーション全体で使う基本知識を整理していきます。
「Javaやhtml、SQLの基礎学習を1周終え、小規模なアプリケーションを作ってみたい人」や「Javaを扱うエンジニアとして少し経験を積んできたが知識の抜け漏れを確認したい人」が本稿をみたときに基本知識を理解できるような記載を意識し、必要な知識の言語化を図っていきます。
画面が遷移したり、登録してみたり動くものを作成してわくわくした体験をかけたらいいなと思います。さらに、動いたものを作って終わりでなく、例外処理や楽観ロックなどエラーを想定したコードも書いていきます。
# 何をするのか/しないのか
Todoアプリケーションの作成を行い、主にJavaを書くところに注力します。設計から実装までを対象範囲とします。ただしJunitの実装はスキップします。また、webやJavaの基礎知識は触れません(基礎知識から記述すると膨大な量になってしまうので)。あくまでも、Todoアプリケ
【Java/Spring Boot 】画面からコントローラに値を渡す方法
Java の Spring Boot を使用して、画面からコントローラ(Controller)に値を渡す方法はいくつかあります。以下に、主な方法を整理しました。
## 1. リクエストパラメータを使用する(@RequestParam)
クエリパラメータとして値を渡し、コントローラで`@RequestParam`アノテーションを使って取得する方法です。
例:
URL: `/users?name=John`“`java:UserController
@Controller
public class UserController {@GetMapping(value = “/users”)
public String getUsersByName(@RequestParam(“name”) String name) {
System.out.print(“name:”+name);// Expected output: name:John
return “index”;
}
}“`
## 2. URL パス変数を使用