JAVA関連のことを調べてみた

JAVA関連のことを調べてみた

IAM Roles for Service Accountsの認証情報をCamel Spring-bootで利用する方法

## 概要
Spring Boot 環境で、IAMRoles and Service Account (IRSA) を使用した認証情報で、s3やsqs などのAWS リソースにアクセスするのに、情報が少なかったので記載しておきます。

## 前提
必要なIAM ロールや、ポリシー、OIDCプロバイダの設定、k8s ServiceAccount リソースはすでに作成済みの前提で、Spring Boot 環境で実装する部分についてのみ記載します。
必要な IAM ロール、 ServiceAccount が設定され、Deployment と紐づけられた場合、Pod 内の環境変数として、AWS_ROLE_ARN, AWS_WEB_IDENTITY_TOKEN_FILE の環境変数が設定されます。
[参考](#参考) からの更新部分になりますので、アーキテクチャについては参照元をご確認ください。

## application.properties
2024/7/27 現在、デフォルトの認証プロバイダチェーンに WebIdentityTokenFileCredentialsProvider

元記事を表示

Springboot——インターセプター

### 1.インターセプターの用途
(1)未ログインのユーザーが特定のリンクに直接アクセスするのを防ぐ
(2)ログ情報をキャプチャする
(3)SQLインジェクションなどの不正攻撃を防ぐ

### 2.係わるjar、クラス
(1)spring-webmvc.jar
(2)**HandlerInterceptor**(org.springframework.web.servlet:インターフェース)、
**AsyncHandlerInterceptor**(org.springframework.web.servlet:インターフェース)、
**HandlerInterceptorAdapter**(org.springframework.web.servlet.handler.HandlerInterceptorAdapter:抽象クラス)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3809422/6c777d44-c1cc-b21c-8e8c-44ccb448ef20.png)

#

元記事を表示

Javaの例外処理をマスターする

## はじめに
この記事ではJavaの例外処理に関する基本的な内容について説明します!
私はエンジニアになる前も少しJavaに触れていましたが、その頃は例外処理について何も理解していませんでした…。
つい最近、ようやく例外処理の使い方や重要性について理解できたのでここにまとめてみようと思います!

## そもそもJavaの例外処理とは?
Javaの例外処理とは、プログラムの実行中に起こる予期せぬエラー(例外)に対処し、プログラムの正常な流れを維持するための仕組みです。これにより、エラーが発生したときにプログラムが順調に動作を続けられるようになります。
つまり、例外が起きたときはあらかじめ用意しておいた処理をやってね~と指定することでプログラミングが動き続けるというだけです。

## 例外処理の具体例
Javaでは主に以下の構文とキーワードを使って例外処理を実施します。

## 1: try-catch
この構造を使用して、例外が発生しうるコードを囲みます。tryブロックの中で例外が発生すると、プログラムの制御は対応するcatchブロックに移り、指定された例外を処理するコードが実行されま

元記事を表示

【Java】シールクラスとは

## はじめに

資格勉強を進める中で、シールクラスを学ぶ機会がありました。

新しく追加されたばかりの言語仕様らしく、キャッチアップも兼ねて投稿させていただきます。

※誤りありましたら、ご指摘いただけますと幸いです。

## 想定読者
初学者の方
普段Javaを使用している方

## シールクラスとは
シールクラスは、Java 17で正式に追加された新しいクラスの型です。

シールクラスを使用すると、**クラスの継承階層を制御する** ことができます。具体的には、クラスの継承先、またはインターフェースの継承、実装先を限定することができます。

簡単にまとめると、Aというクラスをシールクラスとした時に、AクラスはBクラス、Cクラス、Dクラスのみ継承を許可する、という指定ができるということになります。

## 実際の使い方
実際の使い方を見ていきましょう。

“`java
public sealed class Shape permits Circle, Rectangle, Triangle {
//ここでは実装内容は

元記事を表示

Javaで「必ず実行する処理の記述(try..catch..finally)」の動作を確認してみた

# 概要

Javaで「必ず実行する処理の記述(try..catch..finally)」の動作を確認してみました。
以下のページを参考にしました。

https://www.javadrive.jp/start/exception/index3.html

# 実装

以下のファイルを作成しました。
“`JSample3_1.java
class JSample3_1{
public static void main(String args[]){
disp(1);
disp(2);
disp(3);
}

private static void disp(int no){
int n[] = {18, 29, 36};

try{
System.out.println(n[no]);
}
catch(ArrayIndexOutOfBoundsException e){
System.out.println(“配列の範囲を超えています”);
return;
}
f

元記事を表示

Java Gold SE 11 合格体験記

# **はじめに**
Oracle Certified Java Programmer Gold SE 11に合格したので、私なりの学習方法をまとめました。少しでも参考になれば幸いです。

# **下調べ**
まず、どんな問題が出題されるかを他の方の合格体験記を参考にしながら調べました。以下がその内容です。
・ストリームAPIとラムダ式が絡む問題が、7割出題される。
・黒本の章末問題に似た問題が、5割出題される。

# **学習方法**
使用したものは以下です。
・黒本(徹底攻略Java SE 11 Silver問題集[1Z0-815]対応 )
・ChatGPT

基本的に黒本の各章を3周ずつ回し、13章の章末問題のみ4周しました。下調べで「ストリームAPIとラムダ式が絡む問題」が重要だと分かっていたので、この二つが絡む問題については、解説を見ても理解できないところがあればChatGPTで質問し、理解を深めていました。試験前日には悪あがきでJavaの公式ドキュメントを確認し、Stream APIの戻り値を頭に叩き込みました。

# **実際の試験問題の傾向**
下調べ通り、ストリー

元記事を表示

read file

### Mapに格納
“`
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

public class CsvToMap {
public Map readCsv(String filePath) {
Map dataMap = new HashMap<>();

try (BufferedReader br = new BufferedReader(new FileReader(filePath))) {
String line;
// ヘッダー行をスキップ
br.readLine();

while ((line = br.readLine()) != null) {

元記事を表示

オブジェクト指向3

## はじめに

__ 【オブジェクト指向】を__ __ 【Java = ジャバ】言語で考えてみました。__

##### 以下を参照。
https://qiita.com/nekoozi/items/d0e0cb616b45048143af

# クラス(スーパークラス:継承元のクラス )
“`java
public class Person {

private int age;
private String name;

public Person(int age, String name) {
this.age = age;
this.name = name;
}

public int getAge() {
return age;
}
public void setAge(int age) {
this.age =

元記事を表示

オブジェクト指向2

## はじめに

__ 【オブジェクト指向】を__ __ 【Java = ジャバ】言語で考えてみました。__

##### 以下を参照。
https://qiita.com/nekoozi/items/2cb1d0ed21fa8f12b652

# クラス
“`java
public class Person {

private int age;
private String name;

// コンストラクタの宣言
/* 引数はなし */
public Person() {
this.age = 11;
this.name = “仮太郎”;
}

// コンストラクタの宣言
public Person(int age, String name) {
this.age = age;
this.name = name;

元記事を表示

オブジェクト指向1

## はじめに

__ 【オブジェクト指向】を__ __ 【Java = ジャバ】言語で考えてみました。__

##### Javaの基本的な記載方法は以下を参照。
https://qiita.com/nekoozi/items/c9be16d9dd447e687c6c

# __クラス = 設計図__
「人」を表す Person クラス
“`java
// Person = クラス名
public class Person {

/* 属性(変数)の宣言
⇒ クラスが持つ情報(データを格納するための変数) */

// フィールドの宣言
private int age; //年齢を表す age フィールド
private String name; //名前を表す name フィールド

// コンストラクタの宣言

元記事を表示

桁数指定の数値項目

# 数値項目
データベースにしろ、javaにしろ、数値項目を扱う場合には通常int型にて処理する場合が多い。しかし、0始まりの項目に関しては0が消されてしまう可能性がある。特にIDなどの主キーを設定する場合によく用いられる。
また、主キーの場合には、0始まりでIDを降っていかずに、5桁の数字の場合には、00001などから採番を始める事もある。採番ルールを決めて確実にデータベースへの保管が必要となる。

# 桁数指定の項目に関しては
この桁数でデータベースとやりとりするなど指定されている桁数が決まっている場合には0埋めなどの処理をアプリ側で入れた上で、データベースに登録する必要がある。特にID等で0始まりのものがある場合には文字列型の文字数指定型を設定しておく必要がある。

元記事を表示

一番小さい値 (paizaランク D 相当) Java解答例

# 問題文
https://paiza.jp/works/mondai/d_rank_skillcheck_sample/min_num

# 解答例
“`java
import java.util.Scanner;

public class Main {
public static void main(String[] args) {
try (Scanner scanner = new Scanner(System.in)) {
int min = scanner.nextInt();
for (int i = 0; i < 4; i++) { min = Integer.min(min, scanner.nextInt()); } System.out.println(min); } } } ``` # 補足 JavaのStreamを利用してみた別解が以下。 ```java import java.util.ArrayList; import java.util.Comparator; import java.util.List;

元記事を表示

文字の一致 (paizaランク D 相当) Java解答例

# 問題文
https://paiza.jp/works/mondai/d_rank_skillcheck_sample/diff_str

# 解答例
“`java
import java.util.Scanner;

public class Main {
public static void main(String[] args) {
try (Scanner scanner = new Scanner(System.in)) {
String a = scanner.next();
String b = scanner.next();

if (a.equals(b)) {
System.out.println(“OK”);
} else {
System.out.println(“NG”);
}
}
}
}
“`

# 補足
ポイントはJavaで文字列を比較する際`==`を使わないこと。
説明は(ちょっと難しめだが)以下が詳しい。
https://developer.mamezou-tech.com/blogs/2

元記事を表示

Javaで「try文」の動作を確認してみた

# 概要

Javaで「try文」の動作を確認してみました。
以下のページを参考にしました。

https://www.javadrive.jp/start/exception/index2.html

# 実装

以下のファイルを作成しました。
“`JSample2_1.java
class JSample2_1{
public static void main(String args[]){
int n[] = {18, 29, 36};

System.out.println(“開始します”);

try{
for (int i = 0; i < 4; i++){ System.out.println(n[i]); } } catch(ArrayIndexOutOfBoundsException e){ System.out.println("配列の範囲を超えています"); } System.out.println("終了しました"); } } ``` 以下の

元記事を表示

外部エンティティを含むxmlファイルを読み込んだ際、ノードや要素がどの外部エンティティに記載されているかを取得したい

employee1.xmlは従業員情報を記録したファイルです。このemployee1.xmlは外部エンティティとしてemployee2.xmlとemployee3.xmlを参照しています。

“`employee1.xml



]>


佐藤一郎
鈴木一郎
&employee2;
&employee3;

“`

“`employee2.xml
高橋二郎
田中二郎
“`

“`employee3.xml
伊藤三郎

元記事を表示

ORACLE PL/SQLとは 〜例外処理・ORACLE関数・分岐処理等〜

#### 【背景】
ネット上でのPL/SQLについての文献が少ない為、現場で培ってきたPL/SQLについての知識をまとめようと思います。

前回の資料をご覧になって頂いている場合は既知情報になりますが、私はPL/SQLの現場経験がありますが1年と3ヶ月ほどなので作成資料について誤記等がございましたらご指導ご鞭撻のほど宜しく御願い致します。
 
前回の資料↓

https://qiita.com/yoshida_t/items/d4c0e3d8ed5fcac6bcec


### 目次
9.例外処理
10.使用可能なオラクル関数(ファンクション)
11.制御構造
12.資料2についてのまとめ

9.例外処理

PL/SQLでは例外処理というものが存在。
基本的なものとしては下記の2種類。
例外処理とはPL/SQLの処理の中でエラーが起きた際の処理内容を記載する処理部分になる。

|例外処理|内容 |
|—|—|
|事前定義例外 |ORACLEが事前に定義している一般的なエラー|
|ユーザー独自の定義例外 |開発者が独自に定義するエラー |

おさらいになります

元記事を表示

コールバック関数について

# コールバック関数とは
コールバック関数とは、引数として他の関数に渡され、外側の関数の中で呼び出されて、ルーチンやアクションを完了させる関数のことを指します。

# コールバック関数についてのサンプル
バッチで以下関数をコールバックで実行するサンプルとなります。
* 1加算した結果を返却する関数 : plusOne
* 1減算した結果を返却する関数 : minusOne
* 2倍した結果を返却する関数 : double
* 3倍した結果を返却する関数 : triple

## 関数の定義
引数で関数を受け取るコールバック関数を定義したクラスを作成します。
“`GenericFunction.java
public class GenericFunction implements Function {
public final String functionName;
private final Function function;

public GenericFunction(String functionName,

元記事を表示

Javaで簡単な数字ゲームを作ってみた。

javaを使って、簡単な数字ゲームを作ってみました。

ルールは単純です。
入力した数字が、コンピュータが出した数字より大きかったら、勝ち。
逆にコンピュータが出した数字より小さかったら、負け。
以下に自分が書いたコードを載せます。

“`java:GameSample
public class GameSample{
public static void main(String[] args){
//ここでまず、数字を入力できるように設定する
System.out.println(“数字を入力してください”);
int i = new java.util.Scanner(System.in).nextInt();

//数字の乱数生成
int j = new java.util.Random().nextInt(100);

//jに+1を加えて、1〜100に設定
j ++;
System.out.println(“

元記事を表示

[Java / docker] とりあえず Docker で Java を動かしたいときc(⌒(_*˘ㅿ˘)_スヤァ

# 1. 概要

– とりあえず**何でもいいから手軽に Java を実行したい**
– Docker、特に `docker-compose` が好き

そんな人のための記事。

# 2. 気を付けたこと

– 古過ぎる Docker イメージは使わない
– サイズがなるべく小さそうなイメージを使う
– ただし、`alpine` みたいなすっからかん過ぎるイメージは、後で困ることが多いので使わない

## Docker image についての補足
以下の記事によると、 **`OpenJDK` の Docker イメージは非推奨になってしまった**らしい。

https://zenn.dev/104/scraps/cc1542931b4ade

上記を踏まえて、最近も更新されていそうな、 `Eclipse temurin` という Docker イメージを使うことにした(\*˘︶˘\*)フフン

# 3. 前提条件

OSに、以下がインストールされていて、使用できる状態であること。

– docker
– docker-compose

使用した Docker image は以下の通

元記事を表示

ヌルポも怖くない、Javaでの比較について

## Javaで比較する術は?
業務で比較について勉強することがあったので、記事にまとめておくよ。
javaで比較するときによく使うものとして、
`equals()`、`==`、`Objects.equals`があるのでそれぞれ簡単に解説するよ。

### equalsメソッド(String.equals())
equalsメソッドは、Stringクラスの文字列を比較するときに利用されるものだよ。
ただし、nullと比較する場合にヌルポ(NullPointerException)が発生することもあるので、注意が必要だよ。基本的な使い方は以下の通り。
“`java
str1.equals(str2);
“`
具体的には、
“`java
public class Main {
public static void main(String[] args) {
String str1 = “Qiita”;
String str2 = “Qiita”;
String str3 = “qiita”;

System.ou

元記事を表示

OTHERカテゴリの最新記事