- 1. Javaサンプルコード
- 2. 時刻変換そのに
- 3. ISO時刻基準変換例
- 4. isoの多様な形式
- 5. JavaでISO日時をフォーマットする方法
- 6. ABC339の解答[Java]
- 7. JavaでISO 8601日時形式を統一する方法
- 8. 【Java】備忘録:KeyListener
- 9. java でローカル変数に値を代入しているのに、使用されていないと怒られる
- 10. Windows11でJavaのバージョンを確認するには
- 11. JavaSilver勉強法「実務未経験」
- 12. xampp Tomcat 動ているよな。
- 13. 724. Find Pivot Index -LeetCode 解答メモ
- 14. Java CLIアプリケーションからAzure ADB2Cにアクセスして認証する
- 15. 【ハマったので備忘録】Eclipse2022にTomcat10をインストールする手順
- 16. Java21で正式リリースの Virtual Thread を使ってみた(その2)
- 17. AWS Cognitoで認証したJWT(トークン)の有効性チェック
- 18. 【java+spring boot】ローカルでファイル添付処理を実装してみた:読み解き(1)
- 19. 【java + spring boot】ローカルでファイル添付処理を実装してみた
- 20. Java21で正式リリースの Virtual Thread を使ってみた(その1)
Javaサンプルコード
“`
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.Scanner;public class GroupingProgram {
public static void main(String[] args) {
Listpeople = readNames();
List> groups = groupNames(people, 4);
printGroups(groups);
}public static List
readNames() {
Listpeople = new ArrayList<>();
Scanner scanner = new Scanner(System.in);
System.out.println(“人の名前を入力
時刻変換そのに
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;private static String convertToCustomFormat(String inputIsoDateTime) {
try {
// カスタムフォーマッターを定義
DateTimeFormatter customParser = new DateTimeFormatterBuilder()
.appendPattern(“yyyy-MM-dd’T’HH:mm:ss.SSS”)
.optionalStart().appendPattern(“XXX”).optionalEnd() // “+09:00”
ISO時刻基準変換例
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
import java.util.Arrays;
import java.util.List;public class DateTimeConversionTest {
public static void main(String[] args) {
ListsampleIsoDateTimes = getIsoDateTimeSamples(); for (String inputIsoDateTime : sampleIsoDateTimes) {
try {
String formattedDateTime
isoの多様な形式
ISO 8601形式で表される日時データは、非常に多様なパターンを持っています。これは、日時の表現が幅広い精度と様々な要素(年、月、日、時、分、秒、タイムゾーン)を含むことができるためです。ISO 8601は、単純な年月日から、時間を含むもの、さらにはタイムゾーン情報を含むものまで、多岐にわたる日時情報の表現をサポートしています。
### 主なISO 8601日時形式のパターン
1. **完全な日付**: `YYYY-MM-DD`(例: `2021-11-11`)
2. **年と週**: `YYYY-Www`または`YYYY-Www-D`(例: `2021-W45`、`2021-W45-4`)
3. **年と日**: `YYYY-DDD`(例: `2021-315`)
4. **完全な日時**: `YYYY-MM-DDTHH:mm:ss`(例: `2021-11-11T13:23:45`)
5. **秒の小数部分を含む日時**: `YYYY-MM-DDTHH:mm:ss.sss`(例: `2021-11-11T13:23:45.123`)
6. **タイムゾーン情報を含む
JavaでISO日時をフォーマットする方法
ISO 8601は国際標準化機構(ISO)によって定められた日時の表記方法であり、国際的なデータ交換において広く利用されています。JavaでISO 8601形式の日時を扱う際、java.timeパッケージは強力なツールセットを提供します。この記事では、任意の形式のISO日時文字列を特定の形式(2021-11-11T13:23:45,123456+09:00)に変換する方法を紹介します。
日時のパース: 最初のステップは、入力されたISO日時文字列をLocalDateTime、ZonedDateTime、またはOffsetDateTimeオブジェクトにパースすることです。入力形式が事前にわかっていない場合は、DateTimeFormatterを使って柔軟に対応することが可能です。
2. 日時の変換: 日時オブジェクトを目的の形式に変換します。このプロセスでは、DateTimeFormatterをカスタマイズして使用します。
3. 結果の出力: 最終的に、変換された日時を文字列として出力します。Javaコード
import java.time.ZonedDateTime;
im
ABC339の解答[Java]
## はじめに
今回はコンテスト中にFまで、コンテスト後にGを解いたのでそれらを載せようと思います。なお、僕のライブラリは[提出結果](https://atcoder.jp/contests/abc339/submissions?f.Task=&f.LanguageName=Java&f.Status=AC&f.User=viral)をご参照ください。
では、見ていきましょう。## A – TLD
問題文は[こちら](https://atcoder.jp/contests/abc339/tasks/abc339_a)splitメソッドは正規表現として処理されてしまうので、エスケープさせる必要があります。
“`A.java
final class Main{
private static final boolean autoFlush = false;
private static final SimpleScanner sc = new SimpleScanner(System.in);
private static final SimpleWriter out =
JavaでISO 8601日時形式を統一する方法
日時の取り扱いはプログラミングにおいてよく直面する課題の一つです。特に、異なるISO 8601形式の日時データを一つの標準形式に統一する必要がある場合、この処理はより複雑になりがちです。ISO 8601は国際的な日付および時間の表記標準であり、さまざまな形式(例えば、“2023-04-01T12:45:30Z”、“2023-04-01T12:45:30+02:00”など)を取ります。この記事では、Javaのjava.timeパッケージを使って、これらの異なる形式をUTCを基準とした一つの形式に統一する方法を紹介します。これにより、アプリケーション内での日時の扱いが簡単になり、バグの発生リスクを減らすことができます。
参考コードimport java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;public class IsoDateTimeConverter {
public static void main(String[] args) {
// ISO 8601形式の日
【Java】備忘録:KeyListener
キーボード入力を受け続けるときのテンプレート。
あってるのかしら?※JFrame は全く機能してない。。。
“` Java
// App.javaimport javax.swing.JFrame;
public class App {
public static void main( String[] args ) {
JFrame f = new JFrame( “test : KeyListener” );
f.setSize( 200, 200 );
f.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
f.setVisible(true);
f.addKeyListener( new KeyListenerTest() );
}}
“`“` Java
// KeyLisenerTest.java// action timing
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
java でローカル変数に値を代入しているのに、使用されていないと怒られる
# 現象
こんな感じ(testに値を入れているし、使用してるやん…)
※ワーニングは出るけど、代入された値そのものは認識する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3658170/4392d8b1-c3f2-f4a8-91ab-600c8f6543b0.png)# 原因(解決)
代入だけだと使ったうちに入らないらしい
変数を何かしら使うことで、エラーは消える
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3658170/d8e26409-77ef-2053-22f8-48dc91e80882.png)
Windows11でJavaのバージョンを確認するには
# 始めに
Javaのダウンロードが出来るサイトでの説明によると…https://www.java.com/ja/download/help/version_manual.html
こちらのサイトでは、Windows10までの確認方法しか無く、Windows11でのJavaバージョンの確認方法は発見できませんでした。
# そもそもコントロールパネル…どこ?
上記のサイトではコントロールパネルからの確認が可能であると記述されていますが、Windows11ではコントロールパネルが探しにくくなっています。アプリ検索を行うとコントロールパネルを発見する事が出来ます。
しかし、Windowsのスタートメニューからすべてのアプリを調べてもコントロールパネルを発見する事が出来ませんでした。また、コントロールパネルからJavaのバージョンを確認する事はできませんでした。
(コントロールパネルでの検索でJavaのファイルを確認できませんでした。)
※私の実行環境の問題もあるかもしれません。# 結論
コマンドプロンプトやターミナルにて”java -version”と入力する
JavaSilver勉強法「実務未経験」
Java Silver SE11に合格したので、勉強法の忘備録
# 勉強期間と勉強時間
2か月
100時間くらい(土日はやってない)# プログラミング歴
java 半年# 勉強法
黒本をひたすら解き続ける(**特に12章、13章**)
わからない問題はすぐ答えをみる
多次元配列の問題はコードを書いてデバックする
コンパイルエラー、例外発生の問題は自分でコードを書いて
直してみる例外の種類を全部覚える(検査例外と非検査例外)
interface,継承,ポリモフィズム,static修飾へのアクセスは
コードを書いて理解する(**超超超頻出問題**)# 使った参考書等
黒本
すっきりわかるJava(文法の確認くらいでしか使っていない)
Udemiy 【Java-基礎】完全未経験からの基礎入門講座(丁寧解説/豊富な図解/ハンズオン/Java Silver試験対応)
https://www.udemy.com/course/uz-java-kiso/
黒本で弱点の部分をすっきりわかるJavaやUdemyの動画教材で勉強した
# まとめ
xampp Tomcat 動ているよな。
ちょっと苦労したけど、ランニングだけは、行います。
![2024-02-05 (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3625232/1cc6eb13-6ac4-f75c-2456-d928417d5052.png)tomcat の場合javaからすべての権限を自分の物にしなければなりませんが。
ただし、使うことを知りません。
724. Find Pivot Index -LeetCode 解答メモ
## Find Pivot Index
### 問題文
整数 num の配列を指定して、この配列のピボット インデックスを計算します。ピボット インデックスは、インデックスの厳密に左側にあるすべての数値の合計が、インデックスの厳密に右側にあるすべての数値の合計と等しいインデックスです。
インデックスが配列の左端にある場合、左側には要素がないため、左側の合計は 0 になります。これは配列の右端にも当てはまります。
一番左のピボットインデックスを返します。そのようなインデックスが存在しない場合は、-1 を返します。
### コード
“`java
class Solution {
public int pivotIndex(int[] nums) {
//①
int leftSum =0, rightSum=0;
for (int n : nums){
rightSum += n;
}
//②
int i=-1;
//③
Java CLIアプリケーションからAzure ADB2Cにアクセスして認証する
Java CLIアプリケーション(not Webアプリケーション)からADB2Cにアクセスして認証する方法 3つ。
実装には[MSAL for Java](https://github.com/AzureAD/microsoft-authentication-library-for-java/)を使う。
[MSAL for .NET](https://github.com/AzureAD/microsoft-authentication-library-for-dotnet) を使えば.NETアプリやUnityからも同様に認証できるはず。
—-
## 1. インタラクティブなトークン取得
認証には「OAuth 2.0 認可コード フロー + PKCE」が使用される。
MSAL4JがローカルホストでWebサーバーを動かして、それがADB2Cが連携することで、ブラウザーベースの認証が行われる。
認証するときにブラウザーが開かれ、ADB2Cのログイン画面が表示される。
ユーザーIDとパスワードを入力すると、ローカルホストのWebサーバーに認可コードが渡されるので、MSAL
【ハマったので備忘録】Eclipse2022にTomcat10をインストールする手順
Eclipse2022にTomcat10が入っていなかったので、インストールする手順をまとめました。
いろいろ手こずったので、備忘録として残します。# ローカル環境
OS:Windows11
Eclipse 2022# EclipseにTomcat10.0.x系を入れておかないと、以降のバージョン10.1.x系がインストールできない
2024年2月4日時点では、Tomcat10のバージョンは、10.1.x系になっています。
私のローカル環境には。Tomcat9までしか入っておらず、最新バージョンのTomcatであるver10.1.xを入れようとするとエラーになりました💦![10.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1169664/cb97446b-85ee-3945-a367-b35554c4d393.jpeg)
エラーの理由は、Tomcatのバージョン10.0.x系をEclipseに入れていないからですね。
![11.jpg](https://qiita-ima
Java21で正式リリースの Virtual Thread を使ってみた(その2)
Java19でプレビュー、Java21で正式リリースとなった Virtual Thread(仮想スレッド)を使ってみた。続編。
JNIに追加された関数を使ってみた。“`java: ThreadExecutor.java
package pkg;public class ThreadExecutor {
/*
* JNI C言語ライブラリのロード
*/
static {
System.loadLibrary(“JNIVThread”);
}public static void main(String[] args) throws InterruptedException {
MyRunnable runnable = new MyRunnable();
// プラットフォームスレッドとして実行する場合
Thread pthread = Thread.ofPlatform().start(runnable);
System.out.println(“pthread is Virtual ? : ” + pthread.isV
AWS Cognitoで認証したJWT(トークン)の有効性チェック
クライアントサイドで認証したトークンをサーバーサイドでもチェックする場合のチェック処理です。
# 初歩的なチェック処理。
“`java:ValidationUtil.Java
package com.yksc.lambda.util;import java.net.URL;
import java.security.interfaces.RSAPublicKey;import com.auth0.jwt.JWT;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.interfaces.DecodedJWT;
import com.nimbusds.jose.jwk.JWK;
import com.nimbusds.jose.jwk.JWKSet;public class ValidationUtil {
public static void main( String[] args ) throws Exception {
String region = “us-east-1”;
St
【java+spring boot】ローカルでファイル添付処理を実装してみた:読み解き(1)
## こちらの続き
[【java+spring boot】ローカルでファイル添付処理を実装してみた](https://qiita.com/macha_7/items/4f9d613e913b6bd95a30)### 【読み解き】実装を調べてみた
主には参考にしたページで解説されているがちょっと難しい。
実装みながら自分なりにまとめてみる。## 実装箇所の概要
#### メイン
– Controller
– StorageService(interface)
– FileSystemStorageService (implements StorageService)
– StorageProperties
– MainApplication#### 例外
– StorageException extends RuntimeException
– StorageFileNotFoundException extends StorageException#### その他
– html(template)
– application.properties→ それぞれの役割
【java + spring boot】ローカルでファイル添付処理を実装してみた
## 開発環境
– java 17
– springboot
– thymeleaf## やりたいこと
– ファイル添付を実装(しながら仕組みを学ぶ)
– ファイル保管場所:ローカル### 手順
1. バックグラウンド側の各ファイル操作処理を実装
1. フロント側に添付ファイルのインターフェースになるフォームを実装**こちら参考に実装:[ファイルのアップロード](https://spring.pleiades.io/guides/gs/uploading-files/)**
※私は適当なjavaアプリがあったため、**「アプリケーションクラスを作成する」** から部分的に移植する形で実装。Exceptionなど大体の追加ファイルはとりあえずcommonディレクトリにぶちこみ。
#### そのまま実装するとエラーになったので補足
ビルドは通るが実行すると失敗
“`
***************************
APPLICATION FAILED TO START
***************************Description:
Param
Java21で正式リリースの Virtual Thread を使ってみた(その1)
Java19でプレビュー、Java21で正式リリースとなった Virtual Thread(仮想スレッド)を使ってみた。ラムダ式とやらは使ったことないので、理解の複雑化回避のためあえて使わずに。
“`java: ThreadExecutor.java
package pkg;public class ThreadExecutor {
public static void main(String[] args) throws InterruptedException {
MyRunnable runnable = new MyRunnable();
// プラットフォームスレッドとして実行する場合(従来からのスレッド)
Thread pthread = Thread.ofPlatform().start(runnable);
System.out.println(“pthread is Virtual ? : ” + pthread.isVirtual());
// なんとなく、スレッドが終了するまで待つ
pthread.join();