- 1. JavaでMQTT
- 2. SpringBootでのリクエストパラメータの受け取り方
- 3. 日本語プログラミング言語 Mind Java C# でHello World実行時間を仲良く競う(Mindミリ秒で再計測)
- 4. OpenJ9 JVM の heap dumpをMemory Analyzerで解析する
- 5. 抽象クラスのテストはモックを使うといいかも
- 6. JavaのGCに関するオプション
- 7. @Autowired、依存関係注入
- 8. 日本語プログラミング言語 Mind Java C# でHello World実行時間を仲良く競う
- 9. 【学習メモ】SQS拡張クライアントライブラリとは
- 10. javaのTLAB,jps,jstat,jinfoについて
- 11. 形式記述言語VDM++の制御構文(call文)をJava C# Re:Mind(自作言語)と比較
- 12. 形式記述言語VDM++の制御構文(代入文)をJava C# Re:Mind(自作言語)と比較
- 13. デザインパターン Proxyパターン
- 14. android studio 覚書 (お題 2:スレッド処理の実装)
- 15. AOJ ITP1 8-C Counting Characters
- 16. AOJ ITP1 8-B Sum of Numbers
- 17. android studio 覚書 (お題 1:ボタンを押してテキストを更新する)
- 18. 形式記述言語VDM++の制御構文(return文)をJava C# Re:Mind(自作言語)と比較
- 19. 形式記述言語VDM++の制御構文(cases文)をJava C# Re:Mindの(switch文)と比較
- 20. レコードとかswitch式とかパターンマッチとかテキストブロックとかその辺のまとめ
JavaでMQTT
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/763141/b875c545-3dea-b0db-0452-5993e3cacdb9.png)
**目次**
– [依存関係の追加](https://www.emqx.com/ja/blog/how-to-use-mqtt-in-java#依存関係の追加)
– [MQTT接続の作成](https://www.emqx.com/ja/blog/how-to-use-mqtt-in-java#mqtt接続の作成)
– [MQTTメッセージのパブリッシュ](https://www.emqx.com/ja/blog/how-to-use-mqtt-in-java#mqttメッセージのパブリッシュ)
– [購読](https://www.emqx.com/ja/blog/how-to-use-mqtt-in-java#購読)
– [テスト](https://www.emqx.com/ja/blog/how-to-use-mqtt-in-java#
SpringBootでのリクエストパラメータの受け取り方
リクエストパラメータを受け取る際の備忘録。
SpringBootでリクエストパラメータを受け取るには、以下の3つのアノテーションを使い分ける。
– パスパラメータ
– クエリパラメータ
– リクエストボディ
それぞれの使い方を以下にまとめる。パスパラメータ
[@PathVariable](https://qiita.com/naoki-shichida/private/8b17b76c0dcaddd49aca#pathvariable)クエリパラメータ
[@RequestParam](https://qiita.com/naoki-shichida/private/8b17b76c0dcaddd49aca#requestparam)リクエストボディ
[@RequestBody](https://qiita.com/naoki-shichida/private/8b17b76c0dcaddd49aca#requestbody)# Spring Boot Version
3.1.1# 用途、具体例
### @PathVariable
URLの一部をメソッ
日本語プログラミング言語 Mind Java C# でHello World実行時間を仲良く競う(Mindミリ秒で再計測)
# はじめに
日本語プログラミング言語 Mind とJava C# とで「Hello World」コンソール出力の反復実行時間を仲良く競い合わせてみます。前回の記事では筆者の知見不足によりMindは秒単位で計測していましたので、今回Mindだけミリ秒計測のやり直しです。## この記事内容の作業環境
Windows11 Pro 22H2
VSCode(Visual Studo Code) 1.78.2
java Eclipse Adoptium jdk-20.0.2.9-hotspot
C# 10 dotnet-sdk-6.0.404-win-x64
Mind Version 8.07 for Windows## この記事内容の保証
※この記事の実行結果は参考情報です。実行環境に大きく依存します。# お題のソースコード
#### Java
お手数ですが[前回記事](https://qiita.com/mylifewithviolin/items/6182b9822524dd0709db)をご参照ください。
#### C#
お手数ですが[前回記事](https://qiit
OpenJ9 JVM の heap dumpをMemory Analyzerで解析する
:::note info
2023/11/20
新規作成
:::#### 経緯・課題
・業務で java heap dump の仕様を調査する必要があり、memory analyzerをMacOSに導入したので備忘録として残しておきます。—
#### 前提・環境など
・MacOS Sonoma (14.1) Apple M1 Pro
・java jdk-17.0.8.1+1 (IBM OpenJ9)—
#### 参考知識・[IBM SDK, Java Technology Edition 8 – 診断ツールおよびデータ](https://www.ibm.com/docs/ja/sdk-java-technology/8?topic=component-diagnostic-tools-data)
—
#### 1.二種類のMATツール
Memory Analyzer tool (MAT)は2種類利用方法があります。
・Eclipse版
Eclipseを普段から利用している場合、Eclipseにプラグインとして追加することが可能です。・スタン
抽象クラスのテストはモックを使うといいかも
## 目次
– [1. TemplateMethod パターン](#1-templatemethod-パターン)
– [2. 環境情報](#2-環境情報)
– [3. 実装](#3-実装)
– [4. テスト](#4-テスト)
– [5. まとめ](#5-まとめ)
– [参考文献](#参考文献)## 1. TemplateMethod パターン
[Java 100 本ノック](https://github.com/JustSystems/java-100practices)を使わせていただき、Java の実装力を上げるべく取り組んでいます。[73 本目](https://github.com/JustSystems/java-100practices/tree/master/contents/073)では、クラス図を見て実装をする問題で、TemplateMethod パターンを使用していました。これまで抽象クラスを実装したことがなくいい練習になったのですが、テストをどう書くか悩みました。中朝クラスを継承するクラスのテストでまとめてテストすることも可能ですが、今回実装クラスが 2 つ
JavaのGCに関するオプション
## -XX:+PrintGCInitial -XX:+PrintFlagsFinal
すべてのGCのオプション設定を出力します。
## -XX:+PrintGCDetails
すべてのGCで詳細メッセージの出力を有効にします。
## 実装確認
サンプルコード
“`java
public class OOMTest {public static void main(String[] args) {
int i=0;
Listlist = new ArrayList<>();
String str = “OOM and GC”;
while(true) {
list.add(str);
str = str + str;
i = i++;
}
}
}
“`
実行オプション
“`
-Xms5m -Xmx5m -XX:+PrintFlagsInitial
“`
実行結果
“`
[Global flags]
intx ActiveProcessorCount
@Autowired、依存関係注入
– 様々な方法があるが、**生成子注入にするのが一番良い。**
– 生成者がたった1つだけあれば@Autowiredを省略しても自動注入される。## 使用方法
### 1. 生成子注入
“`java
@Component
public class OrderServiceImpl implements OrderService {private final MemberRepository memberRepository;
private final DiscountPolicy discountPolicy;@Autowired
public OrderServiceImpl(MemberRepository memberRepository, DiscountPolicy discountPolicy) {
this.memberRepository = memberRepository;
this.discountPolicy = discountPolicy;
}
}
“`
– **最も
日本語プログラミング言語 Mind Java C# でHello World実行時間を仲良く競う
# はじめに
日本語プログラミング言語 Mind とJava C# とで「Hello World」コンソール出力の反復実行時間を仲良く競い合わせてみます。## この記事内容の作業環境
Windows11 Pro 22H2
VSCode(Visual Studo Code) 1.78.2
java Eclipse Adoptium jdk-20.0.2.9-hotspot
C# 10 dotnet-sdk-6.0.404-win-x64
Mind Version 8.07 for Windows## この記事内容の保証
※この記事の実行結果は参考情報です。実行環境に大きく依存します。Mindは現状秒単位で計測していますので誤差があります。# お題のソースコード
#### Java
“`Java:main.java
import java.lang.System;
/**
* プログラム型
*/
class Program
{
/**
* メイン
* @param args 引数
*/
public static void main(
【学習メモ】SQS拡張クライアントライブラリとは
# SQS拡張クライアントライブラリとは
・通常のSQSキューのデータサーズ制限は**256KB**だが、運用上それを超えたい場合の対応法である・大量のAmazon SQSメッセージを管理するには、Amazon S3とJava 用SQS拡張クライアントライブラリを使用することで、**2GB**までのサイズのメッセージを保存および処理ができるようになる
→AWS Java SDKが必要(プログラミングを作る必要がある)・イメージとして、メッセージの保管場所を本来の狭いパイプ(SQSキュー)から広い貯水槽(S3)に変える
→常にS3に保存するか、サイズが256KBを超える場合のみ保存するかを指定できる# 参考サイト
https://docs.aws.amazon.com/ja_jp/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-s3-messages.htmlhttps://zenn.dev/hi_ka_ru/articles/a516af8bfc4457
javaのTLAB,jps,jstat,jinfoについて
## TLAB
Javaの小さなオブジェクトは、TLAB (Thread Local Area Buffer)に割り当てられます。TLABは、新しいオブジェクトが割り当てられている小さなメモリー領域です。TLABが一杯になると、スレッドが新しいものを取得します。
## jps
jps ツールは、ターゲットシステム上で計測された HotSpot Java 仮想マシン (JVM) を一覧表示します。このツールで表示できるレポート情報は、アクセス権を持った JVM に関するものに限定されます。
## jstat
jstatコマンドは、設置されているJava HotSpot VMのパフォーマンス統計情報を表示します。 ターゲットJVMは、仮想マシン識別子またはvmidオプションによって識別されます。
## jinfo
指定されたJavaプロセスに関するJava構成情報を出力します。 構成情報は、Javaシステム・プロパティとJVMコマンド行フラグで構成されます。
## 実装確認
サンプルコード
“`java
public class TLABTest {public static v
形式記述言語VDM++の制御構文(call文)をJava C# Re:Mind(自作言語)と比較
# はじめに
要求仕様記述段階での使用が主に想定されている数学的形式手法VDM(Vienna Development Method)[^1]のオブジェクト指向拡張言語VDM++ですが、ロジックの実装も記述できる構文が用意されています。本記事ではVDM++の制御構文(call文)をJavaとC#そして自作言語のRe:Mind[^2] と比較してみます。## この記事内容の作業目的
VDM++の下記の制御構文[^3][^4]についていくつかの記事に分割して比較検討します。クラスの定義構文についてはこちらの記事[^5]を参照することができます。・ブロック文
・コメント文
・代入文
・条件文
・ループ文
・**call文** ←本記事対象
・return文
・例外VDM++はオブジェクト指向言語的な言語要素を持ち、数学的形式手法言語の中では一般のプログラミング言語のオブジェクト指向言語に近い面があります。また、VDMのような数学的形式手法を使わない場合は、一般的に自然言語の日本語で要求仕様が記述されているものと推察されます。本記事では数学的形式手法と自然言語の日本語記述とのはざまで
形式記述言語VDM++の制御構文(代入文)をJava C# Re:Mind(自作言語)と比較
# はじめに
要求仕様記述段階での使用が主に想定されている数学的形式手法VDM(Vienna Development Method)[^1]のオブジェクト指向拡張言語VDM++ですが、ロジックの実装も記述できる構文が用意されています。本記事ではVDM++の制御構文(代入文)をJavaとC#そして自作言語のRe:Mind[^2] と比較してみます。## この記事内容の作業目的
VDM++の下記の制御構文[^3][^4]についていくつかの記事に分割して比較検討します。クラスの定義構文についてはこちらの記事[^5]を参照することができます。・ブロック文
・コメント文
・**代入文** ←本記事対象
・条件文
・ループ文
・call文
・return文
・例外VDM++はオブジェクト指向言語的な言語要素を持ち、数学的形式手法言語の中では一般のプログラミング言語のオブジェクト指向言語に近い面があります。また、VDMのような数学的形式手法を使わない場合は、一般的に自然言語の日本語で要求仕様が記述されているものと推察されます。本記事では数学的形式手法と自然言語の日本語記述とのはざまで、構
デザインパターン Proxyパターン
# Proxyパターン
特定のオブジェクトに対するアクセスや操作を、Proxy(代理)オブジェクトを介して行う方法。Decorator パターンに似ている。
Decorator パターンが、既存のオブジェクトに対して透過的に新たな振る舞い、責務を追加することを目的としているのに対して、Proxy パターンは**アクセス制御を主な目的としている**。
また、Decorartor パターンではオブジェクトが何重にもラップされることがあるのに対して、Proxy パターンでは通常オブジェクトが何重にも重ねてラップされることはない。
ただし、Proxy パターンは、アクセス制御以外にも様々な目的で利用できる。
## 利用場面
#### アクセス制御・保護プロキシ
アクセス制御や権限管理に利用される。
Proxy を介入させることで、特定のユーザーに対してのみアクセスを許可し、他のユーザーからのアクセスに制限をかけることができる。#### リモートアクセス制御・リモートプロキシ
Proxy が(リモート)サーバー上に存在するオブジェクトにアクセスするための手段として利用される。
android studio 覚書 (お題 2:スレッド処理の実装)
## お題 2:スレッド処理の実装
### 2-1. イメージ
下記のように、ボタンを押すと時刻が更新される画面を実装する。
この時、画面が操作不能にならないこと。
![Test.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1723869/f927f5e4-b38a-c48f-0fc0-584870248c00.gif)—
### 2-2. 実装
実装したコードは下記の通り。“`java:全容
package com.example.helloworld;import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.os.Looper;
import android.os.Handler;import android.view.View;
import android.widget.Button;
import android.widget.TextVie
AOJ ITP1 8-C Counting Characters
これは、文字列を受け取ろうとしたら複数行で来ることもあるといわれてわからず詰んだ。
終了条件がわからないと8-Bのように0の時breakするみたいなこともできない。
単体だったら、受け取った文字列を順番に確認していけばよさそう。…aからzの確認ってどうやるんだ。
これまでの感じだと、char型を利用するのかな。for文をint i=0で回して+97すればアルファベットになる?
でも、その前の受け取りがわからないので、すぐに回答を見た。# 回答
~~~java:Main.java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int[] alf = new int[26];
while (scan.hasNext()) {
String str = scan.next().toLowerCase();
for (int i=0;i
AOJ ITP1 8-B Sum of Numbers
8-Aで文字列をバラバラにした次は数値をバラバラにする問題だった。
バラバラにした各桁を足し合わせて表示する。
chatAtを使おうと思ったけど、数値型で受け取っているせいでうまくいかなかった。
回答を参考にして作り直した。
~~~java:Main.java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
while (true) {
int sum = 0;
String num = scan.nextLine();
if (num.equals(“0”)) break;
int numLen = String.valueOf(num).length();
for (int i=0;i
android studio 覚書 (お題 1:ボタンを押してテキストを更新する)
## お題 1:ボタンを押してテキストを更新する
### 1-1. イメージ
下記のような画面を実装する。
ボタン押下前
![スクリーンショット 2023-11-18 203537.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1723869/38afe4b7-8f35-a5a6-ba75-ab7c9a1c2a60.png)ボタン押下後
![スクリーンショット 2023-11-18 203600.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1723869/eaf14ee9-8385-2139-006e-af87f23dafb8.png)—
### 1-2. 実装
実装したコードは下記の通り。
MVC ModelのC(Controller)に該当する部分?
V(View)はxmlファイルの画面定義、M(Model)は…?“`java
package com.example.helloworl
形式記述言語VDM++の制御構文(return文)をJava C# Re:Mind(自作言語)と比較
# はじめに
要求仕様記述段階での使用が主に想定されている数学的形式手法VDM(Vienna Development Method)[^1]のオブジェクト指向拡張言語VDM++ですが、ロジックの実装も記述できる構文が用意されています。本記事ではVDM++の制御構文(return文)をJavaとC#そして自作言語のRe:Mind[^2] と比較してみます。## この記事内容の作業目的
VDM++の下記の制御構文[^3][^4]についていくつかの記事に分割して比較検討します。クラスの定義構文についてはこちらの記事[^5]を参照することができます。・ブロック文
・コメント文
・代入文
・条件文
・ループ文
・call文
・**return文** ←本記事対象
・例外VDM++はオブジェクト指向言語的な言語要素を持ち、数学的形式手法言語の中では一般のプログラミング言語のオブジェクト指向言語に近い面があります。
Re:MindはJavaやC#の経験者向けに設計された日本語プログラミング言語の一種で、ロジック仕様記述言語とトランスコンパイラ言語とで言語仕様を共有しています。
VDM
形式記述言語VDM++の制御構文(cases文)をJava C# Re:Mindの(switch文)と比較
# はじめに
要求仕様記述段階での使用が主に想定されている数学的形式手法VDM(Vienna Development Method)[^1]のオブジェクト指向拡張言語VDM++ですが、ロジックの実装も記述できる構文が用意されています。本記事ではVDM++の制御構文(cases文)をJavaとC#そして自作言語のRe:Mind[^2] (switch文)と比較してみます。## この記事内容の作業目的
VDM++の下記の制御構文[^3][^4]についていくつかの記事に分割して比較検討します。・ブロック文
・代入文
・**条件文** ←本記事対象
・ループ文
・call文
・return文
・コメント文
・例外VDM++はオブジェクト指向言語的な言語要素を持ち、数学的形式手法言語の中では一般のプログラミング言語のオブジェクト指向言語に近い面がありますが、かなり別物という面もあります。また、VDMのような数学的形式手法を使わない場合は、一般的に自然言語の日本語で要求仕様が記述されているものと推察されます。本記事では数学的形式手法と自然言語の日本語記述とのはざまで、構造化された日本語
レコードとかswitch式とかパターンマッチとかテキストブロックとかその辺のまとめ
Java 11 から Java 21 までの間に追加された以下の言語仕様について、一通り正式採用されたっぽくて LTS も出たので整理する。
– switch式
– テキストブロック
– Pattern Matching for instanceof
– レコードクラス
– シールクラス
– レコードパターン
– Pattern Matching for switch# 環境
“`text
> java –version
openjdk 21.0.1 2023-10-17 LTS
OpenJDK Runtime Environment Temurin-21.0.1+12 (build 21.0.1+12-LTS)
OpenJDK 64-Bit Server VM Temurin-21.0.1+12 (build 21.0.1+12-LTS, mixed mode, sharing)
“`# 各言語仕様の正式採用バージョン整理
|バージョン|正式採用された言語仕様|
|———|——-|
|11 | |
|12 | |
|13 | |
|14 |swi