- 1. 1. プラットフォームの独立性
- 1.1. Spring Bootのschedulingで定期実行を変幻自在にしてみた
- 1.2. SpringのRestClientの利用と、MockRestServiceServerを利用したテスト
- 1.3. Intellij ホットキー【備忘録】
- 1.4. Java gold 例題 function
- 1.5. 未経験者向け!基礎から学ぶJavaプログラミング講座
- 1.6. Javaで「文字クラスを使って色々な文字にマッチするパターンを記述する」の動作を確認してみた
- 1.7. [備忘録 その12] Java Silver ~継承とポリモフィズム その1~
- 1.8. JavaでのStack, Queue, PriorityQueue, Map
- 1.9. JAVA リモートデバッグ
- 1.10. RestControllerのswagger-uiでの名称変更
- 1.11. Java gold 例題 匿名クラス
- 1.12. Javaで「Matcherオブジェクトをリセットして位置情報をゼロへ戻す(Matcher.reset)」の動作を確認してみた
- 1.13. 依存関係にあるJar内のパッケージ名を取得する
- 1.14. 続:.next()と.nextLine()の違いと、初心者向けのScannerの解説
[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()); // trueMatcher m2 = p.matcher(“Reduce speed”);
System.out.println(m2.find()); // trueMa
Spring Boot でマッピングされているURLの一覧を確認したい
対象環境:
– JAVA 11.0.24 (corretto-11)
– Spring Boot v2.3.12.RELEASEhttps://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
次のコードの出力結果を答えてください
“`javaimport 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()); // trueMatcher m2 = p.matcher(“Sunrise”);
System.out.println(m2.find()); // trueMa
[備忘録 その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
Dequestack = 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`:
RestControllerのswagger-uiでの名称変更
デフォルトだと`@RestController`のクラス名がそのまま表示されるため、それを変更するには`@Tag`を使用する。
“`java
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@Tag(name = “サンプルその1”)
@RestController
public class Tag1SampleRest {@GetMapping(“/foo/hoge”)
public String fooHoge() {
return null;
}@GetMapping(“/foo/hoge222”)
public String fooHoge222() {
return null;
}
}
“`使用例は以下の通り。
![swagger
Java gold 例題 匿名クラス
“`java
public class AnonymousClassTest {
public static void main(String[] args) {
Sample sample = new Sample() {
{
super.print();
}
Sample() {
System.out.println(“B”);
}
@Override
void print() {
System.out.println(“anonymous”);
}
};sample.print();
}
}class Sample {
Sample() {
System.out.println(“Sample”);
}void print() {
System.out.println(“print”);
}
}“`
コードを実行するとどうなりますか?
1.Sampleと表示される
2.printと表示される
3.Bと表示さ
Javaで「Matcherオブジェクトをリセットして位置情報をゼロへ戻す(Matcher.reset)」の動作を確認してみた
# 概要
Javaで「Matcherオブジェクトをリセットして位置情報をゼロへ戻す(Matcher.reset)」の動作を確認してみました。
以下のページを参考にしました。https://www.javadrive.jp/start/regex/index29.html
# 実装
以下のファイルを作成しました。
“`JSample29_1.java
import java.util.regex.*;class JSample29_1{
public static void main(String[] args){
String regex = “AA|BB|CC”;
Pattern p = Pattern.compile(regex);Matcher m = p.matcher(“AA BB CC”);
if (m.find()){
System.out.println(m.group());
}if (m.find()){
System.out.println(m.group());
依存関係にあるJar内のパッケージ名を取得する
# やりたいこと
あるプロジェクトが依存しているJarファイルは次のような構成をしていると仮定します。
“`
com ─ sample ┰ hoge
└ fuga
“`
hogeパッケージとfugaパッケージの配下にはいくつかクラスがあります。今回はクラスについては関係ないので省略します。いま、com.sampleという入力に対して配下にあるパッケージ名を全て取得するような処理を作成したいです。
つまり、例で言うならばcom.sample.hogeとcom.sample.fugaを`List`で返却するメソッド`collectPackageNameFromJar(String rootPackage)`というメソッドを実装したい場面がありました。 ## サンプルプログラム
“`java
public static ListcollectPackageNameFromJar(String rootPath) {
Listpackages = new ArrayL
続:.next()と.nextLine()の違いと、初心者向けのScannerの解説
## 前書き
超初心者向けのScannerの話です。
[.next()と.nextLine()の違いと、初心者向けのScannerの解説](https://qiita.com/hot-mock/items/08894e027cf0f8a0cb23)の記事の続きとなりますので、未読の方はこちらもご参考いただけると嬉しいです。それでは、前回コメントアウトしていた部分のコメントアウトを外し、実行してみましょう。
▼コード
“`
import java.util.Scanner;public class ScannerNextMethod {
public static void main(String[] args) {
Scanner scNext = new Scanner(System.in);
String a = scNext.next();
String c = scNext.next();
String d = scNext.nextLine();System.out.println(“a:” + a);
Sys