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

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

JavaGold Collection,Map返し値 メソッド逆引き早見表

# 主要メソッド

| メソッド名 | 宣言されたインターフェイスおよびクラス名 | 引数の型 | 戻り値の型 | 要素が空の場合の動作 |
|—————————|——————————————|————————–|———————–|————————————–|
| `add(E e)` | `Collection` | `E` | `boolean` | `false`を返す(失敗時)、例外を投げる可能性あり |
| `remove(Object o)` | `Collection`

元記事を表示

Java Gold 例題集 ローカライズとフォーマット

次の問題の出力結果を答えてください

# 問題 Locale設定

“`java
import java.util.Locale;

public class Main {
public static void main(String[] args) {
Locale locale = new Locale(“ja”, “JP”);
System.out.println(locale.getDisplayCountry(Locale.US));
}
}
“`

解答
Japan

このコードは、`Locale`オブジェクトを使用して日本の国名を英語で表示します。`Locale.US`を指定することで、表示が英語になります。

# 問題 数値のフォーマット

“`java
import java.text.NumberFormat;
import java.util.Locale;

publ

元記事を表示

(調査中)Java。keytoolコマンド

#### キーストアの内容を確認

“`bash
keytool -list -v -keystore <キーストアファイル名>
““

#### -rfc オプションを使用する

“`bash
keytool -list -rfc -keystore <キーストアファイル名> -alias <エイリアス名>
“`

元記事を表示

Javaのstrutsメモ

## はじめに
Javaでの実装経験はありませんが、Javaの案件に入るとstrutsばかりに出くわします。
いいかげんにして欲しいのですが、メモとして記載します。

## jspでhtmlタグやlogicタグ、name、property
StrutsのJSPで使用される`html`タグや`logic`タグ、`name`や`property`属性は、Strutsフレームワークのタグライブラリを用いて、JSPで効率的にデータを扱うためのものです。これにより、JSPでビジネスロジックを直接書くのではなく、MVC(Model-View-Controller)の設計パターンに従って、コードを整理して記述することができます。

### 1. `html`タグ
`html`タグライブラリは、HTMLフォーム要素を簡単に生成するために使用されます。例えば、フォーム、テキストボックス、ラジオボタン、チェックボックスなどのフォーム入力要素を作成するのに使用されます。

– **例:**
“`jsp

元記事を表示

Java Gold 例題 ジェネリクス

次のコードについて、正しい選択肢を選んでください

“`java
HashSet set = new HashSet<>() {{
add((short)0);
add((short)1);
add((short)2);
}};

for(short i = 1; i <= 3; i++) { set.remove(i - 1); } System.out.println(set); ``` 1. [0, 1, 2]が出力される 1. 何も出力されない 1. []が出力される 1. コンパイルエラー 1. 実行時エラー

解答

正解: 1
“`
[0, 1, 2]
“`

{}の中はインスタンス初期化ブロックで、このブロック内でaddメソッドを使ってセットに要素を追加しています。
この時点で、setには`Short`型の0, 1, 2の3つの要素が含まれています。
`remove(i – 1)`では`short`と`int`の式なので`Intege

元記事を表示

SpringBoot 3.x 循環依存関係問題の概要と解決策

### 問題の説明
——————————
**SpringBoot** 3.x バージョンでは、**SpringBoot 2.6.x** 以降、数多くの変更が行われました。

**SpringBoot 2.7.5~x** バージョンを使用したことがある開発者は、**SpringBoot** プロジェクトに循環依存関係が存在すると、プロジェクト起動時に例外エラーが発生することに気付くでしょう。エラーメッセージの内容は、おおよそ「プロジェクトに循環依存関係があり、プロジェクトが正常に起動できない」といったものです。

**SpringBoot 2.7.5~x** バージョン以降から **SpringBoot 3.x** では、この問題が存在しています。Springは循環依存関係の問題を扱わなくなり、開発者が自分で解決するか、開発中に循環依存関係を避ける必要があります。

古いバージョンのプロジェクトをアップグレードする場合、循環依存関係のコードをすべて調整しなければならず、注意しないとコードが崩壊して動作しなくなる可能性があります。

### 循環依

元記事を表示

【Spring Boot】REST APIにおける例外ハンドリング

# これまでの記事紹介
| | URL |
|:———–|:————|
| 第1回 | [【Spring Boot】個人的に推奨するディレクトリ/ファイル構成](https://qiita.com/rpc_tk/items/b60adb5e55206585d98a “【Spring Boot】個人的に推奨するディレクトリ/ファイル構成”) |
| 第2回 | [【Spring Boot】【Java】定数宣言はfinal staticが良いのか、enumが良いのか](https://qiita.com/rpc_tk/items/b60adb5e55206585d98a “【Spring Boot】個人的に推奨するディレクトリ/ファイル構成”) |

# はじめに
皆さん例外ハンドリングに悩んだことはありませんか。
アプリケーションに例外はつきものなので、対処する必要があります。

適切に例外を拾って、適切な対処を行っていますか。
発生する可能性のある例外を放置していませんか。
無作為にtry-catchを

元記事を表示

【Java】Mapの概要及び使い方について

# はじめに
現場で新規参画者に対してMapの説明をする機会が度々あるため、
自身の説明用のレジュメも兼ねて記事として投稿しようと思いました。
# Mapとは
Mapは、Javaの標準APIであるコレクションフレームワークのインタフェースの一種です。
ListやSetといった、Collectionインタフェースとの違いとしては、キーと値をペアとして管理するデータ構造であることが挙げられます。
Mapは一意のキーに対して一つの値を関連付けることができるため、キーを使って効率的にデータを管理できます。
上述の通り、Mapはインタフェースのため、
一般的にプログラム上で扱う際にはMapの各クラスをインポートして使用します。

# Mapの種類
Javaでよく使われるMapの実装には、以下の3つがあります。
* HashMap:
最も一般的なMapの実装で、キーのハッシュコードを使って高速な検索と格納を行います。注意点として、要素の順序は保証されません。
* TreeMap
キーを順序通りに自動でソートするMapです。ここでいう順序とは、自然順序を基本としますが、指定したコンパレータ

元記事を表示

JavaGold 例題 乱数

以下のコードについて適切な選択肢を選んでください

“`java
import java.util.Random;

public class Example {
public static void main(String[] args) {
Random random = new Random();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 10; i++) { sb.append(random.nextInt(10)); } System.out.println("Generated password: " + sb.toString()); } } ``` 1. コンパイルエラー 1. 実行時エラー 1. ランダムな出力結果が出るが、問題がある 1. ランダムな出力結果が出る、特に問題はない

解答

3:
このコー

元記事を表示

AWS LambdaとSnapStart

# はじめに
AWS Lambdaは、開発の面ではプログラミングが簡単で、運用の面では変化する使用パターンに迅速に対応できるアプリケーションです。Lambdaの特徴は、**関数が安全で、隔離された環境**で実行される点です。各環境のライフサイクルは、**Init**、**Invoke**、**Shutdown**という3つの段階で構成されます。

## AWS Lambdaのライフサイクルごとの特徴

| Category | Desciption |
|————|——————————————————————————|
| Init | 関数のランタイムをブートストラップし、静的コードを実行 (INIT_REPORT) |
| Invoke | APIリクエストに応答してLamb

元記事を表示

Java 8のPeriodとDurationメモ

2つの日時の間隔を求めたい場合に思いつく、なんとなく似ている響きの `java.time.Period` と `java.time.Duration` を比較してみました。

# `java.time.Period`

こちらは「年月日」単位での間隔を表現できます。
例えば、2024-08-01 〜 2024-08-10の間であれば

“`kotlin
import java.time.LocalDate
import java.time.Period

fun main() {
val start = LocalDate.of(2024, 8, 1)
val end = LocalDate.of(2024, 8, 10)

Period.between(start, end)
// P9D (9 days)
}
“`

終了日 `end` は含まれないので、1,2,3 … 9 と数えていき、答えは9日間となります。

## Periodの生成方法

### `between`

2つの `LocalDate` の差分から生成します。

元記事を表示

PostgreSQL+MyBatis Generator+EclipseでエンティティやSQLの自動生成

# はじめに
MyBatis Generatorではエンティティー、Mapper、SQLを自動生成してくれます。
それにより、テーブルと1対1のエンティティーを自前で生成する必要がなく、とても開発効率があがります。
また、INSERT文、PKをキーとしたUPDATE文、SELECT文も自動で生成してくれます。

テーブルの仕様変更が起こった場合も、カスタマイズ部分には手を加えずに変更部分を反映してくれますので、非常に便利です。

ここでは、PostgreSQL利用時の設定内容についての例を紹介したいと思います。

# 開発環境
* JDK 21
* Eclipse 2024
* PostgreSQL 16
* クラスパスにPostgreSQLのJDBCのjarがあること

# 導入方法
* メニューの「ヘルプ」→「Eclipse マーケットプレイス」を選択
* Eclipse マーケットプレイスのダイアログで、検索欄に「mybatis」を入力して「Enter」キーを押下
* 「MyBatis Generator x.x.x」の「インストール」を押下
![マーケットプレイス.png](h

元記事を表示

EfwフレーワークのTomcat10対応のメモ

## 背景
Efwがいままではtomcat7・8・9対応ですが、最近tomcat10も対応するようにしました。

Githubには、従来とjakarta対応2つフォルダに分けてソースを格納するようにしました。
https://github.com/efwGrp/efw4.X/tree/master/src
https://github.com/efwGrp/efw4.X/tree/master/src4jakarta

リリースのjarファイルも従来とjakarta対応を2つjarにしました。
“`xml
io.github.efwgrpefw4.07.019
io.github.efwgrpefw4.07.019jakarta
“`

元記事を表示

SQLとデータベースの連携 

自分なりのまとめ
★☆MySQLを使用してます☆★

## JDBC
Java Datebase Connectivityの略
Javaプログラムとデータベースを接続するためのAPI。Javaプログラムからデータベースに対してSQLクリエを実行したり、データを操作ができる。

## 主な機能
**①データベース接続**
Javaプログラムからデータベースに接続し、操作を行う為の接続オブジェクト(`Connection`)を作成

**②SQLクリエの実行**
SQLクリエ(`SELECT`,`INSERT`,`UPDATE`,`DELETE`など)を実行するための  `Statement`,`PreparedStatement`,`CallableStatement` オブジェクトを提供

**③結果セットの処理**
`SELECT`クリエの結果として得られるデータを処理するための`ResultSet`オブジェクトを提供

**④トランザクション管理**
データベース内でのトランザクション(複数のSQL操作を1つの単位として扱う)の制御を行う。`commit()`や`rollback(

元記事を表示

Jackson CSVを利用してCSVファイルを読み書きする

# はじめに
CSVファイルの読み書きライブラリと言えば、以前は“OrangeSignal CSV“を使用していたのですが、2014年で開発が止まってしまっています。
とは言え、上記ライブラリでも今でも十分だったりはするのですが、Javaのバージョンが上がって利用できなくなってしまうことがなくはないので、出来れば現在進行形でアクティブなライブラリを使用したいと思っていました。
“Open CSV“は今なおアクティブなのですが、Mapのサポートがない、ということで、何か良いライブラリがないか探していたところ、Jackson CSVを見つけました。

# 前提条件
* Excelで出力したCSVファイルが読めること
* 出力したCSVファイルをExcelで読めること
* UTF-8に対応していること

上記条件を満たすためには、以下の必要があります。
* BOM付きファイルを読めること
* 出力ファイルはBOM付きであること
* 区切り文字は”,”、改行はCRLF
* 項目中に、”,”、改行(CRLF,LF,CR)、”(ダブルクォーテーション)を含む場合は、項目はダブルクォーテーシ

元記事を表示

[Java]コンストラクタ引数が増えたらBuilderパターンを採用しよう

# 導入
ソフトウェア開発を進める中で、クラスのコンストラクタに渡す引数が増えてくることはよくあります。
特に、**複雑なオブジェクト**を生成する必要がある場合、その引数の数はどんどん増えてしまい、コードの可読性やメンテナンス性に悪影響を及ぼすことがあります。私自身、最近、新しい機能を実装しようとした際、コンストラクタ引数が多くなりすぎて、困っていました。

ちょうどそのときに本棚に眠っていた[Effective Java](https://www.amazon.co.jp/Effective-Java-%E7%AC%AC3%E7%89%88-Joshua-Bloch/dp/4621303252)を読んでみると、Builderパターンを利用して問題を解決する手法が載っていたので、自分の理解を深めるためにも記事を書いてみました。

# Builder以外のパターン
まずは自分が行っていたパターンであり、Effctive Javaにもアンチパターンとして紹介されているパターンについて解説していきます。

## JavaBeansを利用するパターン
これまでの開発では、このパターンを採用し

元記事を表示

Apache CXFプラグインを用いて、WSDLファイルからコード生成する

# はじめに
Apache CXFに含まれるWSDLファイルからJavaコードを生成するMavenプラグインの使用方法を記す。

# 実行環境

– Eclipse (4.32.0)
– Maven (3.9.7)

# POMの設定

~~~~XML
4.0.0
java.camel.soap.example
java.camel.wsdl2java.example
0.0.1-SNAPSHOT

元記事を表示

Javaあれこれ

1. Javaのバージョンを取得

“`
System.getProperty(“java.version”);
“`

2. OSの種類を取得

“`
System.getProperty(“os.name”);
“`

3. データ型を取得

“`
オブジェクト.getClass();
オブジェクト.getClass().getSimpleName();

“`

4. ヒープサイズ

“`
Runtime.getRuntime().totalMemory();
Runtime.getRuntime().freeMemory();
Runtime.getRuntime().maxMemory();

java -Xms1m -Xmx3m クラス名 // 実行時にヒープサイズを指定

“`

元記事を表示

DB Index 最適化方法

# はじめに
データベースには大量のデータが蓄積されていきます。データが増加するにつれて自然に発生する問題の一つは、検索速度に関する課題です。インデックスは、テーブルの操作速度を向上させる重要なデータ構造であり、DBメモリ内に一定のスペースを使用して保存されます。効果的なインデックス管理は、データベースのパフォーマンスを最適化するために不可欠です。

# インデックスの特徴
– **WHERE句に使用するカラムの効率化**: インデックスは、主に検索条件に頻繁に使用されるカラムに設定されます。
– **単一および複合インデックス**: インデックスは、1つのカラムまたは複数のカラムを組み合わせて設定できます。単一インデックスを複数設定したり、複数のカラムを組み合わせて複合インデックスを設定することができます。
– **過剰なインデックスは非効率的**: インデックスを多く設定したからといって常に検索速度が向上するわけではありません。インデックスは追加のストレージを必要とし、データの更新時にインデックスも同時に更新されるため、パフォーマンスに悪影響を与える可能性があります。
> 検索

元記事を表示

初学者のためのJavaの学習方法/内容に関して

# Qiitaに書く内容を尽きたところで
隔週更新していくとなると、ネタも尽きてくる。そのため、少人数ではあるものの、議論する機会があったので、今一度Javaを学ぶにあたってどんな感じで学んでいけばいいのかを考えてみた。

# 学ぶ内容
最初、自分が発表するにあたり、以下の項目に関して紹介すれば、初心者(初学者)がJavaをわかるようになるのではないかと思っていた。
1. 変数/class/intefrface
1. 配列/List/Map
1. for文/拡張for文
1. if文

これに加えて、enumやstream、三項演算子を加えておいた。ただし、番号が附番していない項目に関しては補助的な項目として必須の学習項目から外した。

# 実際に議論してわかったこと

実際に話してみて、足りないといわれた項目は以下。

1. getter/setter
1. アノテーション

上記の2つに関しては追加しておいたほうがよいのではないかと言われた。確かにわかっておいたほうがいいかもなって思う項目ではあるが。

# 今週から書く記事として

以下の項目に関して記載をしていこうと思う。

1

元記事を表示

OTHERカテゴリの最新記事