- 1. ORACLE PL/SQLとは 〜初学者向け入門編〜
- 2. SpringBootでSpring WebFluxを試してみた
- 3. Java Silver 試験対策 メソッドまとめ一覧
- 4. instanceof演算子
- 5. Javaで「戻り値として配列を返す」の動作を確認してみた
- 6. Raspberry PiでMinecraft 1.21のサーバーを建てる
- 7. Thymeleafの設定(spring bootなし)
- 8. MavenによるSpringプロジェクトの作成
- 9. No12. 変数の宣言・変数への代入・練習問題02
- 10. データベースパフォーマンスを最適化するコネクションプーリングとは
- 11. なぜControllerでインターフェースを呼び出すと、そのインターフェースの実装クラスのメソッドを実行できるのでしょうか?(インターフェースとポリモーフィズムに対する理解を深めましょう)
- 12. Javaで「戻り値を使ってメソッドから値を返す」の動作を確認してみた
- 13. .next()と.nextLine()の違いと、初心者向けのScannerの解説
- 14. COBOLとJAVAを比較してみた
- 15. Java Virtual Threadについて調べる時間
- 16. 【Paiza】Javaで五目並べ問題を1次元配列で解く
- 17. 【SpringBoot】AmazonS3にファイルをアップロード&ダウンロードする方法
- 18. Javaで「引数に配列やクラスオブジェクトを渡す」の動作を確認してみた
- 19. 【Java】Spring Bootを使ったToDoアプリケーションを作成しよう-⑨例外処理の実装-
- 20. 【Java】Spring Bootを使ったToDoアプリケーションを作成しよう-⑧戻る機能の実装-
ORACLE PL/SQLとは 〜初学者向け入門編〜
#### 【背景】
ネット上でのPL/SQLについての文献が少ない為、現場で培ってきたPL/SQLについての知識をまとめようと思います。
PL/SQLを使用している現場に参画して1年以上が経過し、ある程度ノウハウが蓄積されたので改めて知識共有として
自身の知識と+αネット上に転がっている数少ない文献とを組み合わせて**初学者でも取り組みやすい資料**にしました。私の経歴だけ前提として記載しておきます。間違った記載があればご指導ご鞭撻の程、宜しくお願い致します。
#### 【職務経歴・言語】
|言語 |言語歴 | 業界|
|—|—|—|
|PL/SQL |1年3か月|銀行系システム・リース決済システム
|Java |2年0ヶ月 |保険系業務システム等—
### 目次
1.PLSQLとは何か
2.何が出来るのか
3.実務的にどう使うか
4.基本構造
5.データ型
5.プロシージャ
6.ストアドプログラム
7.パッケージ
8.資料についてのまとめ↓別添資料にて記載
・使用可能なオラクル関数(ファンクション)
・例外処理—
1.PL
SpringBootでSpring WebFluxを試してみた
# 背景・目的
過去に、Spring Bootについて下記の記事にまとめました。今回は、Spring WebFluxを試してみます。– [Spring BootでDAOからデータベースにアクセスしてみた-その2(クライテリア)](https://qiita.com/zumax/items/0eab43e74eb76143530e)
– [Spring BootでDAOからデータベースにアクセスしてみた-その1(DAOとアノテーション)](https://qiita.com/zumax/items/4dd856cd108d23a15188)
– [Spring Bootでバリデーションを試してみた](https://qiita.com/zumax/items/f09bacf18f3bb96d1331)
– [Spring Bootでデータを保存する-その2](https://qiita.com/zumax/items/06d0465218478840a949)
– [Spring Bootでデータを保存する-その1](https://qiita.com/zumax/items/2e3
Java Silver 試験対策 メソッドまとめ一覧
## Stringクラスのメソッド
### indexOf
指定された文字列や文字が最初に出現するインデックスを返します。見つからない場合は-1を返します。“`java
String str = “Hello, World!”;
int index = str.indexOf(“World”); // 7
int charIndex = str.indexOf(‘o’); // 4
“`
### substring
指定された範囲の文字列を返します。substring(int beginIndex)とsubstring(int beginIndex, int endIndex)の2種類があります。“`java
String str = “Hello, World!”;
String sub1 = str.substring(7); // “World!”
String sub2 = str.substring(7, 12); // “World”
“`
### replace
指定された文字や文字列を別の文字や文字列に置き換えます。“`java
String st
instanceof演算子
参照変数と型を比較する際にinstanceof演算子を使用しています。
“`java
#1 if (obj instanceof String){
#2 String str = (String) obj;
}
“`
#1でobjがStringに変換可能なら、trueになる。
Javaで「戻り値として配列を返す」の動作を確認してみた
# 概要
Javaで「戻り値として配列を返す」の動作を確認してみました。
以下のページを参考にしました。https://www.javadrive.jp/start/method/index6.html
# 実装
以下のファイルを作成しました。
“`JSample6_1.java
class JSample6_1{
public static void main(String args[]){
int data[];data = init();
System.out.println(data[0]);
System.out.println(data[1]);
}private static int[] init(){
int data[] = new int[2];
data[0] = 10;
data[1] = 19;return data;
}
}
“`以下のコマンドを実行しました。
“`
$ javac JSample6_1.java
$ java JSample6_
Raspberry PiでMinecraft 1.21のサーバーを建てる
# 環境
– Raspberry Pi 4 8GB
– Raspberry Pi OS 64bit
– ストレージ:SSD(USB3.0接続) 128GB
# サーバーが起動できない
Minecraftの新バージョン(1.21)が出たので、ラズパイサーバーで起動しようとした。
しかし、エラーが発生し起動できない。
“`bash
$ java -Xmx4G -Xms4G -jar server.jar nogui
Error: LinkageError occurred while loading main class net.minecraft.bundler.Main
java.lang.UnsupportedClassVersionError: net/minecraft/bundler/Main has been compiled by a more recent version of the Java Runtime (class file version 65.0), this version of the Java Runtime only recogni
Thymeleafの設定(spring bootなし)
## はじめに
spring bootに頼らないspring MVCプロジェクトのThymeleafの設定方法の備忘録
プロジェクト自体の作成方法は下記を参考
[MavenによるSpringプロジェクトの作成 #Java – Qiita](https://qiita.com/shirobako2016/items/622e417bf35dd2be1e4d)## 設定方法
### pom.xml
pom.xmlには下記を追加してあげればよい
“`xml
・・・
org.thymeleaf
thymeleaf-spring6
3.1.2.RELEASE
・・・
“`## Java Config設定
Thymeleaf用のJava
MavenによるSpringプロジェクトの作成
## はじめに
spring frameworkの学習用にspring bootに頼らずspring MVCのプロジェクトを作成する方法の備忘録
Java17, spring framework6で構成しています
## 構築方法
– シンプルなプロジェクトの作成(アーキタイプ選択のスキップ)にチェック
![5037b3485edc45cfbfa2169e8d2cb660png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3635129/ee628181-93c0-9d13-c93c-7525508d0ffb.png)– グループID:ルートパッケージ名
– アーティファクトID:プロジェクト名
![4ba60c68c48f4a8c868f59fe5e45d5c0png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3635129/918a7dc5-2b39-3263-1792-9d6700981d60.png)
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 Exampl
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