- 1. RestTemplateクラスを使用してHTTPレスポンスの詳細を取得する
- 2. 初心者向け!MavenとJavaでデータURIスキームを簡単生成
- 3. Java 性能検証(簡易ETL編)
- 4. Spring Boot 依存関係の追加(プロジェクト作成後)
- 5. GCP Cloud Dataprep機能/実装
- 6. ABC338A~Fの解答[Java]
- 7. JUnit5のまとめ(基本的な使い方)
- 8. Java21のVirtualThreadsに対する自分の理解
- 9. [java備忘録]ラムダ式とStreamAPI
- 10. 高校の課題研究で素人4人がAndroidアプリ作ったので過程と反省をまとめる
- 11. java optional:1。エンジニア一生の課題「null」について
- 12. WindowsでKeycloakをつかう
- 13. Mavenで自分で作成したライブラリjar/JavaDocのjarを利用する方法
- 14. MavenでJavaDocのjarを作成する方法
- 15. Java学習 メソッド
- 16. 分散RedisロックとJedisクライアント
- 17. 【書籍・サイト紹介】Javaから始める 独学Spring Boot
- 18. 【Java】enumの使い方と簡単な使用例について(備忘録)
- 19. pleiades all in oneの解凍に苦戦した話
- 20. Pattern Matching パターンマッチング
RestTemplateクラスを使用してHTTPレスポンスの詳細を取得する
# 概要
SpringフレームワークのRestTemplateを使用してHTTPリクエストを送り、そのレスポンスの詳細を取得する方法をまとめた。# 環境
|項目|バージョン|
|—-|———|
|JDK|Oracle JDK 21.0.1|
|SpringBoot|3.0.1|
|SpringWeb|6.0.3|# RestTemplateクラスの主要なメソッド
下表の通り、HTTPメソッドに対応したメソッドが用意されている。|HTTPメソッド|RestTemplateクラスのメソッド|
|———–|—————————|
|GET|getForObject
getForEntity|
|PUT|put|
|POST|postForLocation
postForObject
postForEntity|
|DELETE|delete|
|汎用|exchange|# HTTPレスポンスの詳細をを取得する方法
HTTPレスポンスのステータスコードやヘッダーの内容を参照するには、レスポンスをR
初心者向け!MavenとJavaでデータURIスキームを簡単生成
# はじめに
JavaとMavenを使用して、ファイルをデータURIスキームに変換する方法を、初心者の方にも理解しやすく解説します。この技術は、Web開発において小規模なリソースを効率的に扱う際に役立ちます。# 解決したい問題
– ファイルをデータURIスキームに変換する基本的な方法を理解したい。
– Mavenプロジェクトでの依存関係の管理方法を学びたい。# 構成
1. Maven設定の基本
2. JavaでのデータURIスキームの生成方法
3. まとめ# 1. Maven設定の基本
Mavenはプロジェクトの依存関係を管理し、ビルドプロセスを簡略化します。`pom.xml`ファイルに必要なライブラリを記述することで、依存関係を簡単に管理できます。この例では、Apache Tikaライブラリを使用してファイルのMIMEタイプを検出します。“`xml:pom.xml
org.apache.tika
tika-core
Java 性能検証(簡易ETL編)
### 本記事の目的
[Amazon Athena性能検証(簡易ETL編)](https://qiita.com/thashi/items/cbbc33b03608be2da2d9)
[Amazon Redshift Serverless性能検証(簡易ETL編)](https://qiita.com/thashi/items/56f180b89c4a8afb8f37?fbclid=IwAR1Yv7qJbVwAfB2FouuJw10O24EKAyq-Uu0HUyCjpE5v62nNY-LuzMspVGk)の続編として仮に自作Javaアプリだとどれくらい性能がでるのかを試した。
自作Javaアプリは下記のとおり、AthenaやRedshiftの検証で利用したCSVファイルと同じファイルを読み込み、各カラムデータをtrimやlpadや日付変換やconcatでの列結合等を実装してCSVファイルを出力する。
※本当はこのCSVからS3へのデータコピーまでをトータル時間で評価するのが公正な評価だがここでは省略している。なのでこの結果は自作Javaアプリに有意な数値として理解するのが正しい。
Spring Boot 依存関係の追加(プロジェクト作成後)
# はじめに
Spring Bootプロジェクト作成後にdependencies(依存関係)を追加する方法を紹介します。# 前提条件
– ビルドツールにMavenまたはGradleを利用していること
– Spring Bootプロジェクトが作成済みであること
もしプロジェクト未作成であれば以下の記事を参考にしてください。※以下の記事はIDEにIntelliJを使用しています
https://qiita.com/high_high/items/263cfcbd712ada6cddd3# 対象者
– 開発を進める途中で依存関係を新しく追加したい方# 依存関係追加手順
※本記事では例としてPostgreSQLを使用するための依存関係を追加する手順となっております。
また、ビルドツールがMaven or Gradleの場合で手順が多少異なります1. [Spring Initializr](https://start.spring.io/)にアクセス
2. 「Maven」を選択(Gradleの場合は「Gradle – Groovy」を選択)
![スクリーンショット 2024-
GCP Cloud Dataprep機能/実装
# GCPのCloud Dataprepの概要と機能
## 目次
– [概要](#概要)
– [Cloud Dataprepとは](#Cloud-Dataprepとは)
– [主な特徴](#主な特徴)
– [機能/詳細](#機能/詳細)
– [データ準備と変換](#データ準備と変換)
– [視覚的なデータ探索とプロファイリング](#視覚的なデータ探索とプロファイリング)
– [データ品質の監視と洞察](#データ品質の監視と洞察)
– [簡単なデータのシェアとコラボレーション](#簡単なデータのシェアとコラボレーション)
– [まとめ](#まとめ)
– [サンプルコード](#サンプルコード)## 概要
### Cloud Dataprepとは
Cloud Dataprepは、Google Cloud Platform(GCP)のデータプレパレーション(データ準備)サービスです。データのクリーニング、変換、統合などを視覚的に行うことができます。クラウド上で簡単にデータの事前処理や前処理を行い、データ分析や機械学習モデルのトレーニングに使用することができます。
ABC338A~Fの解答[Java]
## はじめに
今回はコンテスト中にEまで、コンテスト後にFを解いたのでFまで載せようと思います。なお、僕のライブラリについては[提出結果](https://atcoder.jp/contests/abc338/submissions?f.Task=&f.LanguageName=Java&f.Status=AC&f.User=viral)をご確認ください。
では、見ていきましょう。## A – Capitalized?
問題文は[こちら](https://atcoder.jp/contests/abc338/tasks/abc338_a)char型では`’Z’<'a'`なので、一文字目はこの判定で、以降は`toLowerCase`メソッドを用いて比較しました。 ```A.java final class Main{ private static final boolean autoFlush = false; private static final SimpleScanner sc = new SimpleScanner(System.in); private s
JUnit5のまとめ(基本的な使い方)
## JUnit5概要
個人的にはテスティングフレームワークはSpockの方が好みですがJUnitについてもまとめようと思います。
java言語で書くことの出来る単体テストを行うためのテスティングフレームワークです。
Spockとは異なり、javaソースコードとほとんど一緒なのでjavaに触れてきた方はこちらの方が親しみがあり、ラムダ式の判定などもでき、springとの相性も良いみたいです。## JUnit5の基本的なルール
・戻り値はVoid(戻り値なし)とする
・引数は指定しない
JUnitは下記のようにアノテーションベースのテスティングフレームワーク
| アノテーション | 概要 |
|:-:|:-:|
| @Test |付与することでテストメソッドとして機能 |
|@DisplayName |テスト実行結果に表示される-結果が分かりやすくなる |
|@BeforeEach |テストメソッドとは別で作成しておくことで、各テストメソッドの実行後に毎回実行される |
|@AfterEach | テストメソッドとは別で作成しておくことで、各テストメソッ
Java21のVirtualThreadsに対する自分の理解
# VirtualThreadsとは
JVM内で生成される軽量なスレッド。そもそも、JavaはスレッドをOSで生成する。OSで生成されたスレッド(以下:OSスレッド)はJVMで生成されるスレッドより重い。だが、その分色んな処理を実行できる。
例えば、IO処理。(DBアクセス、ファイルアクセス、外部APIコール等)
WebアプリにIO処理はつきもの。
IO処理の厄介なところはIO待ちが発生すること。
OSスレッドはIO待ちが発生するとそれを待ち続けてしまう。
待ちが増えるということは、**スループットが落ちるということ。**
(スループット=単位時間あたりに実行された処理の数)これをなんとかするために導入されたのが、Virtual Threads.(仮想スレッド)
![vt.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159675/b203fe86-a960-21ff-b905-193fe9e31592.jpeg)
Virtual Threadsを理解する上で知っておくべき登場人物は↓の
[java備忘録]ラムダ式とStreamAPI
これまでなんとなくでラムダ式だったりStreamAPIをつかってきたので自分の再学習のため、この記事を作成しようと思いました。
間違っているところあるかもしれません、暖かく見守ってください。
# そもそもラムダ式ってなんのためにあるのか?
そうです、そのレベルからです。なので調べました。「ラムダ式のメリットは、**匿名クラス**(一度だけしか使わないようなクラス)を用いる場合よりも**関数型インターフェース**(抽象メソッドを1つだけ持つインターフェース)の記述が簡潔になることにあります。」
だそうです。
**匿名クラス**を用いた**関数型インターフェース**の記述よりも簡潔にするためのものなんですね。
### 関数型インターフェース
関数みたいなインターフェースで(そのまま)それぞれ一つずつ抽象メソッドを持っています。
関数合成という合体技もありますがここでは標準関数型のみ説明します。インターフェース | メソッド | 説明
—–|———-|—–
Function| R apply (T t) | T型の引数を受け取って、R型の結
高校の課題研究で素人4人がAndroidアプリ作ったので過程と反省をまとめる
Androidアプリを私含め4人で作った過程でいろいろあったのでまとめます。
問題続出だけど私は楽しかった。
これから似たようなことする人はぜひ生かしてね!# 課題研究とは
私の通う埼玉県立越谷総合技術高校では、3年4月から1月まで**課題研究**という
「学科で学んできたこと活かしてチーム組んでなんか作って発表してね」
という趣旨の課題が出されます。
私は情報技術科でしたので、PCやスマホ用のソフトウェアやゲーム、Webサイト、動画編集などをすることが多いようです。:::note warn
この記事は、越谷総合技術高等学校公式のものではありません。
:::# 作ったアプリ
Ewiseという、英単語学習を目的としたアプリになります。
java optional:1。エンジニア一生の課題「null」について# はじめに
今回のテーマはnullです。
エンジニアなら誰でも共感できるnullの怖さ。私たちの一生の課題「**null**」について調べていきます。そして、そのnullによっておこるエラーとその対象法も一緒に記述します。nullに関する記事は2つに分けて記述します。
### 目次
1) エンジニア一生の課題「null」について
2) optionalをoptionalらしく=> 作成中# 抜け出せない「nullチェック」の沼
## nullの歴史は?
まず、nullという概念はいつ、だれによって作られたのでしょうか?Nullという概念は1965年、Tony Hoareというイギリスのコンピューターサイエンスによって導入されました。当時、彼は「**存在しない値**」を表現する最も便利に方法がnull参照だと思ったそうです。
その後様々な言語でNullが導入されていますが、2009年のカンファレンス(QCon)でTony Hoare自身が「Nullは10億ドルに相当する誤りだった」という旨の発言をしています。## NP
WindowsでKeycloakをつかう
## 目的
Keycloakは認証認可のためのオープンソースソフトウェアです。KeycloakはJavaで実装されているので、OpenJDKなどのJava仮想マシンがインストールされていればどのOSでも実行可能です。「とりあえず触りたい」というときはなんだかんだで手元のWindowsPCで実行できると便利です。この記事ではWindowsPCへのインストールからKeycloakの初回起動までの手順をまとめます。WSLやDockerは使いません。
## 要件
– Windows 10 Pro 64bit
– OpenJDK 17
– Keycloak 23## OpenJDKのインストール
OpenJDKは各ベンダがビルドし提供しています。今回はMicrosoft Build of OpenJDKを利用します。### OpenJDKの入手
https://learn.microsoft.com/ja-jp/java/openjdk/download#openjdk-17上記リンクよりzipファイルをダウンロードします。解凍したら任意の位置にファイル一式を配置します。私はC
Mavenで自分で作成したライブラリjar/JavaDocのjarを利用する方法
ライブラリjarやJavaDocのjarファイルを作成する方法を別記事に掲載しているが、作ったjarファイルを使うにはどうしたらええの?? というやつ。
ちなみにWindows前提で記載しているので、Macの方は脳内変換して頂きたい。
※この手順はライブラリjarやJavaDocのjarファイルを使うほうのプロジェクトで実施する。
決してライブラリjarやJavaDocのjarファイルを作る方ではない。# ◆大まかな手順
1. cmdファイル(.cmd)を作成する
1. cmdファイルを実行しjarファイル/JavaDocのjarファイルをインストールする
1. エディタ(cursor/VScode)を再読み込みする# ◆詳細手順
## 1.cmdファイル(.cmd)を作成する
以下の内容にてcmdファイル(.cmd)を作成する。
“`
SET groupId=グループID
SET artifactId=アーティファクトID
SET jarVersion=JARのバージョンSET jarFile=フルパス指定のJARファイル名-%jarVersion%-librar
MavenでJavaDocのjarを作成する方法
ライブラリjarを作成し、他のプロジェクトに提供する場合JavaDocも提供すると色々と都合がよい。
Mavenでライブラリjarを作成するときに一緒にJavaDocのjarも作成してしまおう!## pom.xmlを編集する
pom.xmlにJavaDocのjarを作成する設定を追記する。
“`
・・・org.apache.maven.plugins
maven-javadoc-plugin
3.6.3
protected
Java学習 メソッド
# JavaとRubyのメソッドの違い
JavaとRubyで、メソッドの役割はほとんど変わらない。
記述方法は大きく変わる。
Javaには、mainメソッドという特別な意味を持つメソッドもある。# Javaのメソッド
## mainメソッドJavaでは、Rubyと同様に自由にメソッドを定義して使用することができる。
ただし、Javaには「mainメソッド」という特殊なメソッドがある。
mainメソッドには特別な役割があり、記述の仕方も決められている。## mainメソッドのルール
__1. ファイルを実行するとmainメソッドが実行される。__
__2. mainメソッドの引数などは、必ず決められた通りに記述する必要がある。__### 1. ファイルを実行するとmainメソッドが実行される。
ここまでの学習でreplitにコードを書く時、以下のように記述をしていた。
“`java
class Main {
public static void main(String[] args) {
// 処理の内容
{
}
“`2行目の `publ
分散RedisロックとJedisクライアント
# はじめに
以前、Redis上でセマフォを実装する必要がありました。驚いたことに、私たちが使用しているJedisクライアントとLettuceクライアントの両方には、それに対する良い準備ができた解決策がないことがわかりました(Redissonにはそのようなものがあります)。
そのため、私はその隙間を埋め、JedisとLettuceの両方のRedisクライアント向けの解決策を提供することにしました。# セマフォが使用したい理由は何ですか?
リソースの相互利用を制限する必要がある状況を想像してみてください。たとえば、バックグラウンドタスクで実行されている重いSQLクエリが全体のサービスパフォーマンスに悪影響を及ぼす可能性がある場合、許可された回数よりも同時にそのクエリが発行されないようにする必要があります。
セマフォを使用することで、共通リソースのクロスプロセス競合状態を解決し、共通リソースへのアクセスを特定の量に制限することができます。# 解決策はこちらです
[RedPulsar](https://github.com/himadieievsv/redpulsar) が、セマフォ
【書籍・サイト紹介】Javaから始める 独学Spring Boot
# はじめに
先日公開したポートフォリオ用の Web アプリケーションのバックエンドでは、フレームワークに Spring Boot、言語に Kotlin を利用しました。
基本的に独学で学習を進めてきたのですが、一番苦労したことと言えば、教材選びと学習順序です。
初学者向けではないと言われることが多いためか、学ぶための手引きとなるような記事が少なく、途方に暮れることもしばしばありました。そのため、これから学習を始めようと思っている方や行き詰っている方にとって少しでも参考になればと思い、この記事を書くことにしました。
この記事では Java の基本的な構文しか知らない状態から、Spring Boot を用いて Web アプリケーションを作成できる状態になるまでに特に欠かせなかったと感じる書籍とサイトを紹介したいと思います。
※ ポートフォリオは、服用したお薬の記録をサポートする Web アプリケーションです。
アプリケーションの概要や使用した技術を紹介する記事を投稿していますので、詳しくはそちらをご覧ください。https://qiita.com/hiroe-mkk/it
【Java】enumの使い方と簡単な使用例について(備忘録)
# ◆背景
Javaのコードを読むことがありましたが、
enumの使いかたが分からず、コードを読み切れない事がありました。。
知識不足を実感したので、この機会に基本的な使い方を調べました。
以下はenum使い方を調べた内容の紹介となります。# ◆対象
– enumの基本的な使い方を調べてる方
– タイトルに興味を持ってくれた方# ◆enumとは?
– 複数の定数を1つの方としてまとめて定義できるもの。
– enumは**列挙型**と呼ばれ、enumで定義した定数は**列挙子**と呼ばれる。# ◆構文
“`java
// enum 型を宣言
public enum HogeHoge {
// 列挙子を宣言
HOGE,
ORANGE,
PEACH;
}
“`# ◆使い方例(enumの定義&メソッドの呼び出し方)
以下の例ではEnumに`jpFruitsName`という追加のフィールドを持たせ、
その値を返す`fetchJpFruitsName`メソッドを定義しています。
Fruits型の変数にはorange、peach、grapeの
pleiades all in oneの解凍に苦戦した話
・問題
pleiades all in oneをダウンロードしたあと、解凍しようとしてもエラーになってしまう。ダウンロードしたのはWindows x64のUltimate。
・トライ
ダブルクリックやWinRARを利用して解凍したがチェックサムエラーが発生する。UltimateをやめてJavaのダウンロードファイルに変更。今回Javaを使いたかったので最悪Javaの環境が整えば良い。結果としてうまく解凍できた。
Pattern Matching パターンマッチング
## Pattern Matching パターンマッチング
パターン マッチングでは、オブジェクトが特定の構造を持っているかどうかをテストし、一致する場合はそのオブジェクトからデータを抽出します。Java ではすでにこれを行うことができます。ただし、パターン マッチングでは、より簡潔で堅牢なコードを使用してオブジェクトから条件付きでデータを抽出できるようにする新しい言語拡張機能が導入されています。
## Pattern Matching for the instanceof Operator
– The predicate is a Boolean-valued function with one argument; in this case, it’s the instanceof operator testing whether the Shape argument is a Rectangle or a Circle.
– The target is the argument of the predicate, which is the Shape value.
– The pa