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

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

[Java]String型の配列をint型の配列に変換する

# はじめに
ネット上のスキルチェック問題などを解いていてよく出くわすのでメモがわりに。

# 問題
“`
“123456”
“`
という文字列型の数値の入力を
“`
[1, 2, 3, 4, 5, 6]
“`
と、数値型の配列に変換する。
# 解決方法
“`java
// 問題で与えられる入力
String input = “123456”;

// Stringの文字列で入力を受け取る
String[] strArr = input.split(“”);

// int型の配列に変換
int[] numArr = Stream.of(strArr).mapToInt(Integer::parseInt).toArray();

System.out.println(Arrays.toString(numArr)); // [1,2,3,4,5,6]

“`

# おわりに
streamは中間処理をよく忘れるのでメモメモ。

元記事を表示

H2コンソールでデータベースの新規作成ができなかった時

# H2コンソールで新規データベースの作成ができなかった時にやったこと

備忘録

Windows

データベースをjavaでいじる練習をするときに

H2 Consoleでいつものように
jdbc:h2:tcp://localhost/~/〇〇で接続を押して

新しいデータベースを作成しようとしたら
![タイトルなし.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3884251/a04747b2-474e-8dfb-5a3a-3aa5898498b2.jpeg)
警告文が出てきて作れなかった。

前は作れたのになぜなんだ・・・
とりあえずデータベースが作れないと進められない!

分からないなりに調べてみると黄色いアイコンの
H2 database Engine ってやつで新しくデータベースを作れるみたい
![イトルなし.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3884251/d6a60f30-6d76-fa5b-

元記事を表示

VScodeプラグイン 各言語おすすめ

VScodeの拡張機能について各言語ごとにまとめる

## 共通

### Japanese Language Pack
 日本語化するための言語化パック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3879789/dab28482-ae62-81f6-c8c9-d89dad705f12.png)

### Code Spell Checker
スペルチェック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3879789/b106fc87-20c2-9cf9-b235-b6c52f836d0e.png)

### vscode-icons
アイコン表示
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3879789/48d74c47-fa84-433c-461b-f448ab0c9157.p

元記事を表示

初めてのC++ ~JavaとC言語との違い~

## はじめに

この記事は、
**初めてC++を学ぶ方**や、**既にJavaやC言語を学び、次にC++を学ぶ方**
に向けて作成しました。

C++の基礎を学び、JavaやC言語と比較しながらその特徴を理解していきます。
JavaやC言語の基礎知識がある方は、**これらを比較しながら学ぶことで**、より分かりやすく理解できるでしょう。
まだC言語を学習していない方は、以前に書いた[JavaとC言語を比較した記事](https://qiita.com/jp_paypay/items/fe322db0b97ea5fc02c9)を参考にすると、理解が深まると思います。

この記事では、詳しいコードの説明には触れていませんので、興味がある方はぜひご自身でさらに調べてみてください。

## C++とは?
C++は、C言語を基盤にして開発された強力なプログラミング言語で、オブジェクト指向やジェネリックプログラミングの概念を取り入れた多重パラダイム言語です。
>マルチパラダイムプログラミング言語とは複数のプログラミングパラダイムに対応するプログラミング言語の総称です。
マルチパラダイムプロ

元記事を表示

Tomcatのデフォルトはリクエストパスに%2fを含むと400を返す

> encodedSolidusHandling
> When set to reject request paths containing a %2f sequence will be rejected with a 400 response.
>
> https://tomcat.apache.org/tomcat-10.0-doc/config/http.html より抜粋

よって、“`http://localhost:8080/hoge/%2F“` のようなURLにアクセスすると`@RestController`に辿り着かずTomcatが400を返す。

`http://localhost:8080/foo?hoge=%2F` とかクエリで渡す分にはOK。

元記事を表示

AndroidアプリにUnity as a Libraryを導入する

## きっかけ
弊社で運用中のアバターを介してビデオ通話ができるSNSアプリがすべてUnityで実装されており、UI/UXのカスタムが非常に難しい状況でした。
そこでUaalを導入し、ビデオ通話中のアバターの表示やプロフィールアバターの表示等はUnity、それ以外のSNS機能やサーバーとの通信はネイティブで行うことで役割分担を進めようと方針が決まりました。

## Unity as a Libraryとは
>Unity as a Libraryとは、ゲームエンジンUnityで開発した機能をAndroidやiOSのNativeアプリにモジュールとして組み込む技術です

利用用途として、例えば3D描画のあるSNSアプリを作りたいとなったとします。Unityは3D描画部分の開発に強いですが、SNS部分は弱いです。逆にNativeはSNS部分の開発に強いですが、3D部分はそこまで強くありません。そのようなときに、Unity as a Libraryを使うと、3D部分は3Dに強いUnityで作り、SNS部分はNativeで作ることが可能になります。

このように、Unityが強い部分はUnity

元記事を表示

Azure Functions を Azure Container Apps にデプロイする 2 種類の方法の比較について

昨日、「[Azure Container Apps に対して Java Azure Function on Linnux Container をデプロイ](https://qiita.com/yoshioterada/items/0ef6c1a0ffd65bf3cace)」というエントリを記載しました。

エントリ中に「統合された Azure の管理ポータルを使用」と記載しましたが、これが何を意味するのか、そして今までと何が違うのかを明確にするために、本エントリで今までとの違いとメリットについて記載したいと思います。

* 旧来の方法: `az containerapp create` で作成
* 新しい方法: `az functionapp create` で作成

## 旧来の方法: `az containerapp create` で作成

Azure Container Apps は Azure のコンテナ実行環境の一つとして提供されています。そこでコンテナ化されたサービスであれば任意のサービスを動作させる事ができます。

その意味で、今までも Azure Functions

元記事を表示

【Java & Spring】オリジナルのバリデーターを作成しよう

## 目標
ユーザーの入力した値が、電話番号かどうかを判断するバリデータ(@PhoneNumber)を作成する。
ここでは入力値が「0~9と-のみ」の場合、電話番号と判断する。

## 実装手順

  1. アノテーションクラスを作成する。
  2. バリデータークラスを作成する。
  3. バリデーションを使用する。

## 手順 1: アノテーションクラスの作成
まず、アノテーションを作成します。このアノテーションを利用して、入力値が電話番号かどうかを判定します。
“`java:
import jakarta.validation.Constraint;
import jakarta.validation.Payload;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java

元記事を表示

Java コードの基本

## Javaのコードの構成について
“`java
class Ex1_03_2 { //クラスブロック
public static void main (String[] args) { //メソッドブロック(命令文は基本ここに記述)

System.out.println(“Hello World!! Error is cleared!!” );

}
}
“`

## 変数と定数について
### 変数
変数は、値の型によって使い分ける必要がある。

“`
整数 (±128) 専用の変数には byte
整数 (±3万2千) 専用の変数には short
整数 (±21億) 専用の変数には int
整数 (±900京) 専用の変数には long

小数点(doubleより厳密さに欠ける)専用の変数には float
小数点専用の変数には double

1文字専用の変数には char
文字列専用の変数には String

論理値専用の変数には boolean
“`

※変数宣言と代入を同時に行うことを**初期化**という。
`int teika = 1000;`

元記事を表示

Javaの準備

## JDKのインストール(AdoptOpenJDK)
IDEであるeclipse(Pleiades All in One)を使用してダウンロード&インストールする。
※IDEとは統合開発環境という意味で、エディタや実行環境、その他機能が含まれている。VSCodeもそう。
※Pleiades All in Oneはeclipseの上位互換で「日本語設定」、「環境変数設定」、「その他設定」が組み込まれている。

## eclipseの準備
1. ビューをパッケージ・エクスプローラーだけにする
2. ビューでコンソールを追加
3. パッケージ・エクスプローラーで「Java プロジェクトの作成」を選択し、作成
4. srcでファイルをインポート > 一般 > ファイル・システム

## 実行方法
右クリックで以下を選択

元記事を表示

【Spring Data MongoDB】Document用のクラスにenumのプロパティを設定してみる

## 概要
Spring Data MongoDBでは、[MongoDBでデータアクセス](https://spring.pleiades.io/guides/gs/accessing-data-mongodb)のドキュメントで紹介されている通り、Documentの保存・取得用にPOJOのクラスを使用してRepositoryを通してDBの操作が行えます。ではこのクラスにenumのプロパティを設定した場合、どういう動作になるかというメモ書きです。

## 前提
* 今回使用したSpring Boot Starter Data MongoDBのバージョンは`3.3.3`です。

## 動作確認用のクラス(Java)

以下のようにenumのプロパティを設定したクラスを、Repository経由で保存・取得した場合の動作を確認しました。

“`java:UrlDocument.java
@Document(collection = “url”)
public record UrlDocument(
@Field(“url_id”)
String urlId,

元記事を表示

Azure Container Apps に対して Java Azure Function on Linnux Container をデプロイ

Azure Functions では、Azure Container Apps でコンテナー化した関数アプリを開発、デプロイ、管理するための統合サポートを提供しています。
これにより、Azure Kubernetes Service (AKS) などのコンテナー環境で Azure Functions を独自に実行するよりも、統合された Azure の管理ポータルを使用して、Azure Functions を簡単に実行・管理することができます。さらに Azure Container Apps が提供する機能を使用することで、Azure Functions に対して、KEDA、Dapr, Envoy、スケーリング、監視、セキュリティ、アクセス制御などの機能を簡単に利用することができます。

参照:
[Azure Functions の Azure Container Apps ホスティング](https://learn.microsoft.com/azure/azure-functions/functions-container-apps-hosting)
[Azure Container

元記事を表示

JAVAでRSA暗号化を使用する方法

# はじめに
業務をしながら暗号化を扱うことが多くてこの機会に整理しました。

### 1. **暗号化方式 一目で確認できる表**

| 暗号化方式 | タイプ | 鍵管理 | 主な特徴と利点 | 使用例 |
|————–|————|———————–|—————————————————–|—————————————-|
| **RSA** | 非対称鍵 | 公開鍵 & 秘密鍵 | 公開鍵で暗号化し、秘密鍵で復号化および署名検証 | サーバー認証、電子署名、SSL/TLS通信 |
| **AES** | 対称鍵 | 同じ秘密鍵を使用 | 高速で

元記事を表示

Java Gold 例題 ResourceBundle

次のコードのうち、非推奨とされる箇所があれば指摘してください。

“`java
try {
ResourceBundle bundle = ResourceBundle.getBundle(“MyResource”, Locale.US);
Properties props = new Properties();
bundle.keySet().stream()
.forEach(key -> props.put(key, bundle.getString(key)));
System.out.println(props.getProperty(“code”));

} catch(MissingResourceException e) {
System.out.println(“リソースが見つかりません” + e.getMessage());
}
“`

`MyResource_en_US`
“`
code=hundred
“`

解答
元記事を表示

Java Gold メソッド逆引き早見表 Stream型を返すメソッド 簡略版

### Stream型を返すメソッド

| メソッド名 | 宣言されたクラス・インターフェイス | 戻り値の型(Stream) |
|————|—————————–|———————-|
| `of(T… values)` | `Stream` | `Stream` |
| `stream(T[] array)` | `Arrays` | `Stream` |
| `stream(int[] array)` | `Arrays` | `IntStream` |
| `stream(double[])` | `Arrays` | `DoubleStream` |
| `stream(long[])` | `Arrays` | `LongStream` |
| `parallelStream()` | `Collection` | `Stream` |
| `generate(Supplier s)` | `Stream` | `Stream` |
| `iterate

元記事を表示

Java Gold 例題 アノテーション

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

“`java
@SafeVarargs
void method(List… str) {
System.out.println(str.length);
}
“`

1. このメソッドで可変長引数の警告が抑制される
1. このメソッド及び呼び出し先で警告が抑制される
1. このメソッドは引数なしで呼び出すことはできない
1. コンパイルエラー
1. 実行時例外
1. このアノテーションはメソッドのみ適用できる

解答

4. コンパイルエラー

– `@SafeVarargs`アノテーションは`private`, `final`, `static`のうち、1つ以上修飾されたメソッドにしか付与できません。
– コンストラクタとメソッドに使用できます。
– 引数が可変ではなく固定長引数の場合もコンパイルエラーです。
– 呼び出し元の警告も抑制されます
– 可変長引数は引数なしでも呼び出し可能です(例: `public static v

元記事を表示

#42 SOLID – Interface Segregation Principle

### Introduction

We have already introduced the first three principles of SOLID, and now let’s begin with the I – Interface Segregation Principle.

To revise the Liskov substitution principle, [go here](https://qiita.com/nxted_sapporo/items/b3282bd6473cb8925cfe).

### Interface Segregation Principle (ISP)

> No code should be forced to depend on methods it does not use

This principle is quite stright forward which means you should not put all the methods you need to a single interface. Splits

元記事を表示

Doma1からDoma2への移行: IterationCallbackの書き換え

# 概要

本記事は、Doma1 から Doma2 へ移行した際の調査メモである。

Doma2 で IterationCallback を用いた検索が禁止された。`java.util.stream.Stream` を用いた検索に書き換えるよう公式ドキュメントで指示があり、最低限の変更で対応する方法を調査したので、具体例を示す。

本記事が対象とするのは、検索結果に対して単純なループ処理を行うものである。IterationContext に対して何か操作をしているようなコードではない。

# 書き換え前: Doma1 でのコード

Doma1 でのコードは https://doma.seasar.org/reference/query/select.html より引用。

## DAO インターフェース

“`java
@Select(iterate = true)
Void selectByNameAndSalary(String name, BigDecimal salary, IterationCallback callback);
“`

#

元記事を表示

implementation ‘io.realm:android-adapters:4.0.0’ を削除

最近、MacBook を買い換えたので Git から新しい端末へ Android アプリのプロジェクトをクローンしてビルドしています。その時に古い Android アプリのビルドが失敗してしまいました。エラーを見ると ‘io.realm:android-adapters:4.0.0’ がダウンロードできないようでした。
>Caused by: org.gradle.internal.resolve.ModuleVersionNotFoundException: Could not find io.realm:android-adapters:4.0.0.

io.realm:android-adapters のために jcenter() を残していましたが、検索すると GitHub から Java ファイルをプロジェクトへ追加すればいいよ的なコメントを見つけました。

+++Webサイト抜粋+++
The Realm Adapters dependency is not moved to Maven yet. You can directly copy the RealmRecycle

元記事を表示

UnknownHostExceptionsを発生させる

# 初めに
この記事では、意図的に UnknownHostException を発生させる環境を作り出す方法について調査した結果を共有します。これにより、ネットワーク設定やDNSに関連する例外が発生する状況を再現できます。

# 手順
## 1. JavaでS3へのファイル配置プログラムの作成
以下は、S3バケットにファイルをアップロードするシンプルなJavaプログラムです。UnknownHostException を発生させる実験に使用します。
“` java
try {
var filename = //ファイル名
var region = //AWSのRegion
var bucket = //バケット名
S3Client s3 = S3Client.builder().region(region).build();
PutObjectRequest putOb = PutObjectRequest.builder().bucket(bucket).key(filename).build();

元記事を表示

OTHERカテゴリの最新記事