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

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

Javaで「最長一致数量子、最短一致数量子、強欲な数量子の違い」の動作を確認してみた

# 概要

Javaで「最長一致数量子、最短一致数量子、強欲な数量子の違い」の動作を確認してみました。
以下のページを参考にしました。

https://www.javadrive.jp/start/regex/index11.html

# 実装

以下のファイルを作成しました。
“`JSample11_1.java
import java.util.regex.*;

class JSample11_1{
public static void main(String[] args){
String regex = “AB+”;
Pattern p = Pattern.compile(regex);

Matcher m = p.matcher(“ABBBC”);
if (m.find()){
System.out.println(m.group()); // ABBB
}
}
}
“`

以下のコマンドを実行しました。
“`
$ javac JSample11_1.java
$ java JSample11_1

元記事を表示

Java gold 例題 Locale, DateTimeFormatter

次のコードで `/* insert code */`部分に入力すると下記の出力結果が得られるものはどれでしょうか

“`java
public class ParseTest {

public static void main(String[] args) {
Locale.setDefault(Locale.US);
var pattern = DateTimeFormatter.ofPattern(“yyyy MM dd”);
String Sdate = “2020 07 22”;
LocalDate date = LocalDate.parse(Sdate, pattern);

Locale[] locales = {
new Locale.Builder().setLanguage(“en”).setRegion(“US”).build(),
new Locale(“ja”, “JP”),
Locale.ITALY,
Locale.KOREA,
Locale.GERMANY
}

元記事を表示

【Python・Java】ABC365E の解説 PDF

# 問題文
https://atcoder.jp/contests/abc365/tasks/abc365_e

# 解説
こちらから解説 PDF をダウンロードできます。
https://github.com/NAVYSHUNTA/ABC365-E/blob/main/main.pdf

# 余談
当初は非公開でしたが、評判が良かったので公開しました。
理解を深める一助となれば幸いです。

元記事を表示

[備忘録 その13] Java Silver ~継承とポリモフィズム その2~

# 抽象クラス
オブジェクト指向プログラミングにおけるクラスの一種で、他のクラスが継承するための基盤を提供します。抽象クラスは、そのクラス自体では直接インスタンス化することはできませんが、サブクラスによって拡張され、具体的な実装が行われることを目的としています。

## 抽象クラスの特徴
1\. __インスタンス化できない__:抽象クラスは直接インスタンス化することができません。インスタンス化するには、そのクラスを継承した具体的なサブクラスを使う必要があります。
2\. __抽象メソッドを持つことができる__:抽象クラスは、抽象メソッドを含むことができます。抽象メソッドは、サブクラスで必ずオーバーライドしなければならないメソッドで、メソッド本体をもたず、宣言のみが行われます。
3\. __具体的なメソッドも持つことができる__:抽象クラスには、具体的な実装されたメソッドも含めることができます。サブクラスはこれらのメソッドをそのまま利用するか、必要に応じてオーバーライドすることができます。
4\. __ポリモーフィズムの基盤__:抽象クラスは、共通のインターフェースを提供することで、異な

元記事を表示

POIで作成するExcelが発生した不具合の調査記録

## 現象
最近javaシステムが作成したExcelを開くとエラーが発生すると報告されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3476221/2bd9420f-4bcc-af17-9528-5a2286ea5ae5.png)
「はい」で修復したらファイルが開けますが、修復ログ情報が出てきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3476221/9bbcc04d-5415-4652-feef-5f21d9b95123.png)

“`xml

error101160_01.

元記事を表示

[paiza]遅いけど動くよ(十億連勝 (paizaランク S 相当)

# 動くけどダメダメ
やっとSランクに来たわいいけど、やっぱり難しいものね。
マジで納得がいかない出来だけど、とりあえず動くものが出来たので晒し上げようかと。

https://paiza.jp/works/mondai/real_event/continuous_winning

# 今回は2つの言語で書いたよ
いつもはJavaScriptで書いていたけど、今回はJava版も書いてみたよ!
理由としてはJavaScript版だと【入力例3】を実行するとメモリエラーで落ちてしまうという問題があったため、急遽同じようなコードをJavaで書いてみて動かしてみたって感じです。

## プログラムの概要
・ステージ分ループしてステージ内で起こり得る結果を生成
“`text:
[
[ ‘1’, ’01’, ‘001’, ‘000’ ], // ステージ1:x(負け),ox(勝ち負け),oox(勝勝負),ooo(勝勝勝)
[ ‘1’, ’01’, ’00’ ], // ステージ2:x(負),ox(勝負),oo(勝勝)
[ ‘1’, ’01’, ‘001’, ‘000’

元記事を表示

ルールエンジンの実践(1)

## なぜルールエンジンが必要か

ルールエンジンが必要とされる理由は以下の通りです:

1. ビジネスの俊敏性:
– ビジネスルールの変更が頻繁に発生する環境で、迅速な対応が可能になります。
– コードの再コンパイルや再デプロイなしでルールを更新できます。

2. 複雑性の管理:
– 大規模で複雑なルールセットを効率的に管理し、メンテナンスを容易にします。
– ルール間の依存関係や優先順位を自動的に処理します。

3. 非技術者によるルール管理:
– ビジネスアナリストや領域専門家が直接ルールを定義・管理できるようになります。
– 技術者とビジネス部門のコラボレーションが促進されます。

4. スケーラビリティと再利用性:
– ルールを再利用することで、開発時間とコストを削減できます。
– ビジネスの成長に合わせて、ルールセットを容易に拡張できます。

## ルールエンジンが解決する問題

ルールエンジンは、以下のような問題を解決するのに役立ちます:

1. 複雑な意思決定ロジックの管理:
– 多数の条件や例外を含む複雑なビジネ

元記事を表示

Javaで「文字列の先頭や末尾などの位置にマッチするパターンを記述する」の動作を確認してみた

# 概要

Javaで「文字列の先頭や末尾などの位置にマッチするパターンを記述する」の動作を確認してみました。
以下のページを参考にしました。

https://www.javadrive.jp/start/regex/index9.html

# 実装

以下のファイルを作成しました。
“`JSample9_1.java
import java.util.regex.*;

class JSample9_1{
public static void main(String[] args){
String regex = “^Red”;
Pattern p = Pattern.compile(regex);

Matcher m1 = p.matcher(“Red Table”);
System.out.println(m1.find()); // true

Matcher m2 = p.matcher(“Reduce speed”);
System.out.println(m2.find()); // true

Ma

元記事を表示

Spring Boot でマッピングされているURLの一覧を確認したい

対象環境:
– JAVA 11.0.24 (corretto-11)
– Spring Boot v2.3.12.RELEASE

https://qiita.com/otsu-Miya/items/eac37b2720b67a58690b
を参考に、対象環境にてマッピングをlogに表示してみた。

“`
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet

元記事を表示

Java gold 例題 ストリームAPI

次のコードの出力結果を答えてください
“`java

import java.util.HashMap;
import java.util.Map;

public class ComputeTest {
public static void main(String[] args) {
String[] tokens = {
“B”, “5”,
“B”, “4”,
“C”, “10”,
“A”, “8”
};

Map voteCounts = new HashMap<>();

for(int i = 0; i < tokens.length; i += 2) { String name = tokens[i]; int votes = Integer.parseInt(tokens[i + 1]); voteCounts.compute(name, (key, ol

元記事を表示

ERP 開発における Java と他の言語の比較: Java が優れている理由

ERP (エンタープライズ リソース プランニング) ソフトウェア開発の分野では、スケーラブルで効率的、かつ信頼性の高いシステムを作成するために、適切なプログラミング言語を選択することが重要です。利用可能な多くの言語の中で、ERP 開発には Java が好まれることがよくあります。この記事では、ERP システムのコンテキストで Java と他のプログラミング言語を比較し、その長所と優れている理由について説明します。

1. プラットフォームの独立性

Java の最も重要な利点の 1 つは、プラットフォームの独立性です。Java アプリケーションは、Java 仮想マシン (JVM) 上で実行されるバイトコードにコンパイルされるため、JVM がインストールされている任意のプラットフォームで同じコードを実行できます。この機能は、さまざまな環境で動作する必要があることが多い ERP システムにとって特に有益です。対照的に、C++ や C# などの言語では、プラットフォーム固有の調整が必要になる場合があり、導入と保守が複雑になります。

2. 堅牢性

Spring Bootのschedulingで定期実行を変幻自在にしてみた

## はじめに

システム開発に関わっていると、定期実行しているバッチを目にすることが多いと思います。
JP1で定期実行の設定をしたり、ECSでコンテナ化して定期実行の設定を入れるなど、様々な方法があります。

今回は、私がSpring FrameworkのTaskScheduler機能を採用して定期実行を実現した方法について紹介します。

具体的には以下のポイントを取り上げます。

– TaskSchedulerを採用した理由
– java.util.concurrent.ScheduledExecutorServiceを使わなかった理由
– どのように実現したのか

これらのポイントを通して、TaskSchedulerを使うことでどのようなメリットがあるのか、具体的な実装方法について解説していきます。

## 開発環境

– 言語:Java21
– フレームワーク:Spring Boot v3.1.4, Spring v6.0.12
– ビルドツール:gradle 8.5
– IDE:IntelliJ IDEA 2024.1.2

## 問題

### 定期実行を停止・再開の操作

SpringのRestClientの利用と、MockRestServiceServerを利用したテスト

# やりたいこと
Spring 6.1(Spring Bootだと3.2)から導入された`RestClient`を使う、そしてそのテストを書きたいです。

公式ドキュメント -> https://docs.spring.io/spring-framework/reference/integration/rest-clients.html#rest-restclient

今回は以前の記事で`RestTemplate`で作成したもの([記事](https://qiita.com/suke_masa/items/c47bfaa20b39dcca30a4))を、`RestClient`に置き換えてみます。

# 環境
– JDK 21
– Spring Boot 3.3

サンプルコード -> https://github.com/MasatoshiTada/rest-client-sample

# `RestClient`の基本的な使い方
## インスタンス生成
`RestClient.Builder`から`RestClient`を生成できます。
Spring Boot利用時は`Rest

Intellij ホットキー【備忘録】

# Main Topic

| コマンド | 動作 |
| :————-: | :—————: |
| `Command ,` | 設定画面を表示 |
| `Command 1` | プロジェクトツールへカーソルを移動 |
| `esc` | エディタウィンドウへカーソルを移動 |
| `Command N` | 新規ファイル作成 |
| `Control R` | ファイルの実行 |
| `Control D` | デバッグ |
| `F8` | デバッグのステップ実行 |
| `Command F8` | ブレークポイントの設定 |
| `Option Return` | `!`を表示・実行 |
| `Command N` | コンストラクタなどをgenerate |

# その他記事

Java gold 例題 Function

“`java
public class ToDoubleFunctionTest {
public static void main(String[] args) {

1️⃣ ToDoubleFunction f = n -> n * 0.1;
2️⃣ double ans = f.applyAsDouble(20);
System.out.println(ans);
}
}
“`
出力結果はどれでしょうか
1. 20.0
1. 20
1. 1️⃣でコンパイルエラー
1. 2️⃣でコンパイルエラー
1. 実行時エラー

#### 3: 1️⃣でコンパイルエラー
`ToDoubleFunction`は引数の型をジェネリクスで指定する必要があります。
戻り値の方は`Double`型になります。
問題では、`ToDoubleFunction f = ・・・`とあり、引数の型を指定するジェネリクスがないためコンパイルエラーとなります。
以下のように修正すると

未経験者向け!基礎から学ぶJavaプログラミング講座

## 未経験でもJavaさえできれば働ける!それがIT業界!

こんにちは!プログラミングの世界へようこそ。この記事では、Javaの基礎を学ぶためのガイドを提供します。Javaは、オブジェクト指向プログラミング言語であり、Webアプリケーションからモバイルアプリまで幅広い用途で使用されています。ここでは、Javaの基本概念を理解し、実際にコードを書いてみることで、プログラミングの楽しさを体験していただければと思います。

## 第1章: Javaとは?

Javaは、1995年にサン・マイクロシステムズ(現在はオラクル)によって開発されたプログラミング言語です。プラットフォームに依存しない「Write Once, Run Anywhere(WORA)」の特性を持ち、どの環境でも動作することが可能です。Javaは、セキュリティ、パフォーマンス、移植性に優れており、多くの企業で採用されています。

## 第2章: Javaの開発環境を整える

Javaプログラミングを始めるためには、開発環境を整える必要があります。以下の手順でセットアップを行いましょう。

### 2.1 JDKのインスト

Javaで「文字クラスを使って色々な文字にマッチするパターンを記述する」の動作を確認してみた

# 概要

Javaで「文字クラスを使って色々な文字にマッチするパターンを記述する」の動作を確認してみました。
以下のページを参考にしました。

https://www.javadrive.jp/start/regex/index8.html

# 実装

以下のファイルを作成しました。
“`JSample8_1.java
import java.util.regex.*;

class JSample8_1{
public static void main(String[] args){
String regex = “Sun”;
Pattern p = Pattern.compile(regex);

Matcher m1 = p.matcher(“Today is Sunday”);
System.out.println(m1.find()); // true

Matcher m2 = p.matcher(“Sunrise”);
System.out.println(m2.find()); // true

Ma

[備忘録 その12] Java Silver ~継承とポリモフィズム その1~

# 継承
__継承__ はオブジェクト指向プログラミングの基本的な概念の一つで、既存のクラス(親クラスまたはスーパークラス)の特性を、新しいクラス(子クラスまたはサブクラス)が引き継ぐことを指します。これにより、コードの再利用性が向上し、システムの拡張性や保守性が高まります。
## 継承の基本概念
1 \.__親クラス(スーパークラス)__:継承されるクラス。共通の特性や機能を提供します。
2 \.__子クラス(サブクラス)__:親クラスから特性や機能を継承するクラス。親クラスの機能を引き継ぎ、さらに独自の機能を追加することができます。
“`java
// 親クラス
public class Animal {
void eat() {
System.out.println(“This animal eats food.”);
}
}

// 子クラス
public class Dog extends Animal {
void bark() {
System.out.println(“The dog barks.”);

JavaでのStack, Queue, PriorityQueue, Map

Javaのコレクションフレームワークで、

* Stack(スタック)
* Queue(キュー)
* PriorityQueue(優先度付きキュー)
* Map(連想配列)

を扱う時によく使うやつのメモ。
早見表的に各コレクションの主要な操作をまとめただけ。

## Stack

– **インスタンスの型**: `Deque`
– **実装クラス**: `ArrayDeque`
– **操作**:
– **追加**: `push(e)`
– **取得&削除**: `pop()`
– **参照**: `peek()`

**使用例**:

“`java
Deque stack = new ArrayDeque<>();
stack.push(“Hello”);
stack.push(“World”);
System.out.println(stack.peek()); // World
stack.pop();
System.out.println(stack.peek()); // Hello
“`

## Q

JAVA リモートデバッグ

## JDB (Java デバッガー)

**JDB (Java Debugger)** は、Java プログラムをデバッグするコマンドラインベースのツールです。Java Development Kit (JDK) に含まれており、Java Debug Interface (JDI) を介して動作します。

#### 主な機能とコマンド
1. **プログラムの実行と接続**
– `jdb `: クラスをロードしてデバッグを開始します。
– `jdb -attach :`: リモート JVM に接続してデバッグを行います。

2. **ブレークポイントの設定**
– `stop at :`: 特定の行にブレークポイントを設定します。
– `stop in .`: 特定のメソッドにブレークポイントを設定します。

3. **実行制御**
– `run`: プログラムの実行を開始します。
– `cont`: プログラムの実行を続行します。
– `step`: