- 1. Javaの try-with-resources文の紹介
- 2. SevletとJSPで開発していた時に突然特定のページ全体が???になる
- 3. Javaで「2つの配列を連結して新しい配列を作成する」の動作を確認してみた
- 4. VSCodeのExtension作ってみた
- 5. ラムダ式について
- 6. Javaで学ぶ入出力入門
- 7. 2つのオブジェクトのフィールド値を全て比較する
- 8. Javaで「配列の指定範囲の要素から新しい配列を作成する(copyOfRange)」の動作を確認してみた
- 9. 【Java】ArrayListのメソッドを覚える
- 10. Javaの基礎的な備忘録1
- 11. Javaで「配列をコピーする(シャローコピーとディープコピー)」の動作を確認してみた
- 12. 【Java】ABC081B_ Shift Only #AtCoder
- 13. IBM MQ メッセージング・プロバイダー・アクティベーション・スペックとMQとの接続が切れた場合の再接続の動作
- 14. Spring BootでMyBatisログを出力する
- 15. Java アプリケーション2
- 16. Javaで「配列のすべての要素を指定した値で埋める(fill)」の動作を確認してみた
- 17. (調査中)Java 11のHttpClientを使用してAWS Cognitoのトークンエンドポイントからトークンを取得する例
- 18. (調査中)Javaの HttpClient を使用したKeycloakからBearerトークンを取得
- 19. メモ
- 20. アプリケーション
Javaの try-with-resources文の紹介
# 導入
今回はJava7以降で使用可能な`try-with-resources`文について紹介していきます。
これは以前のこちらの記事で触れた「入出力ストリーム」における課題を解決するのに向いているので、ぜひ参考にしてください。https://qiita.com/F-monsoon/items/cac08dc5475c8f4ee69e
# try-with-resources文の紹介
プログラムでファイルやネットワーク接続、データベースなどを利用する際、リソースの管理は非常に重要です。特に、リソースを使い終わった後の「クローズ処理」を忘れると、メモリリークや他の問題の原因になります。
従来の方法では、`finally`句で手動でリソースを閉じる必要がありましたが、Java 7から導入された`try-with-resources`文を使えば、リソースの自動解放が可能になります。これにより、コードが簡潔になり、クローズ処理の記述漏れを防ぐことができます。
## 1. 従来のtry-finallyによるリソース管理
従来のリソース管理では、次のように`try-finally`
SevletとJSPで開発していた時に突然特定のページ全体が???になる
## Eclipseを使うのはもう新卒だけかもしれないけど
Eclpse、Sevlet、jsp、Tomcatという古代のツールを使って開発していると様々なわけわからないエラーに遭遇します。
### 特定のページだけが文字化けする問題
ServletからJSPにフォワードする仕組みですが突然JSP全体が文字化けというかすべて「???」になりました。これはWindows XP時代に海外のPCを使って日本語を表示させたときに似ていました。
文字化けというか日本語全部が「???」と表示されていました。
ウェブには
**「文字エンコーディングが`UTF-8`になっていること」**
を確認しろとありましたが、その面は全く問題ありません。
### 原因はServletのミス
詳しいことは私の性格上忘れましたがSevletにミスがあったようです
Javaで「2つの配列を連結して新しい配列を作成する」の動作を確認してみた
# 概要
Javaで「2つの配列を連結して新しい配列を作成する」の動作を確認してみました。
以下のページを参考にしました。https://www.javadrive.jp/start/array/index17.html
# 実装
以下のファイルを作成しました。
“`JSample17_1.java
import java.util.Arrays;class JSample17_1{
public static void main(String[] args){
int[] src1 = {28, 14, 35, 19};
int[] src2 = {17, 40, 23};
int[] dst = new int[src1.length + src2.length];System.arraycopy(src1, 0, dst, 0, src1.length);
System.arraycopy(src2, 0, dst, src1.length, src2.length);System.out.prin
VSCodeのExtension作ってみた
# この記事の内容
– こんなものを作ったよーという共有
– 割と簡単にできたのでVSCodeのExtension作成楽しいよーという布教
– 実装について
– 詰まりポイントと解消法
– パッケージした各ファイルの情報がリリース情報のどこに反映されるのか?
– Marketplaceにpublishする時のアクセストークンの権限設定がややこしいExtensionを作成するために必要な環境準備はすでに分かりやすくまとまった記事がたくさんあったのでそちらを紹介するにとどめます。
# できたもの
https://marketplace.visualstudio.com/items?itemName=gengen0719.java-testingpair-opener
Javaクラスを開いた状態で `Ctrl + 9` を押すとテスティングペアのJavaクラスを開く(なければ作る)という超単純なExtensionです。
EclipseのQuick Junit Pluginのショートカットキーの一つとほぼ同じ動きをします。https://eclipse-cheat
ラムダ式について
# 導入
Javaにはラムダ式という便利な機能が備わっているので、その紹介をしていきます。
かなり便利なものなので、きちんと理解することをお勧めします。# ラムダ式とは
ラムダ式は、匿名関数を表現するための簡潔な記法です。
ラムダ式は、通常のメソッドとは異なり、名前を持たず、その場で定義される小さなコードブロックです。
Java 8以降で導入され、コードの簡潔化や関数型プログラミングのサポートに役立っています。# 仕組み
ラムダ式は、ローカルクラスと無名クラスの仕組みを利用しています。
なので、これらについてまず触れます。## ローカルクラス
ローカルクラスとは、メソッド内にクラスを定義して利用するものです。
以下に例を示します。“`java
public static void main(String[] args) {// ローカルクラスLocalTestの定義
class LocalTest {
public void sayHello() {
System.out.println(“Hello!!”
Javaで学ぶ入出力入門
# 導入
Javaでは、ファイルの読み書きやコンソール入力を簡単に行う方法が用意されています。本記事では、Javaを使ったデータ入出力について、基礎から具体的なコード例までをわかりやすく解説します。
# Javaのストリームについて
Javaでは、**ストリーム**を使ってデータを扱います。ストリームはデータの流れを抽象化したもので、大きく分けて以下の2種類があります:
– **文字ストリーム**: テキストデータの読み書きに使います。`Reader`と`Writer`クラスを使います。
– **バイトストリーム**: バイナリデータ(画像、音声など)の読み書きに使います。`InputStream`と`OutputStream`クラスを使います。文字ストリームはテキストデータに、バイトストリームはバイナリデータに適しています。
## コンソールでのデータ入出力
コンソール(画面)でのデータのやり取りには、標準入力(キーボード入力)、標準出力(画面表示)、標準エラー出力(エラー表示)があります。
### キーボードからの入力を読む
キーボードからの入力は、`Scann
2つのオブジェクトのフィールド値を全て比較する
備忘録です。
“`java:DeepComparator.java
import java.lang.reflect.Array;
import java.lang.reflect.Field;
import java.util.Arrays;
import java.util.IdentityHashMap;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.HashSet;
import java.util.stream.StreamSupport;public class DeepComparator {
public static boolean deepEquals(Object obj1, Object obj2) {
return deepEquals(obj1, obj2, “”, new IdentityHashMap<>());
}private static boolean deepE
Javaで「配列の指定範囲の要素から新しい配列を作成する(copyOfRange)」の動作を確認してみた
# 概要
Javaで「配列の指定範囲の要素から新しい配列を作成する(copyOfRange)」の動作を確認してみました。
以下のページを参考にしました。https://www.javadrive.jp/start/array/index13.html
# 実装
以下のファイルを作成しました。
“`JSample13_1.java
import java.util.Arrays;class JSample13_1{
public static void main(String[] args){
int[] src = {12, 24, 18, 35, 21};
int[] dst = Arrays.copyOfRange(src, 1, 4);System.out.println(Arrays.toString(src));
System.out.println(Arrays.toString(dst));
}
}
“`以下のコマンドを実行しました。
“`
$ javac JSample13_1.java
$ java
【Java】ArrayListのメソッドを覚える
ArrayListが通常の配列と比べて何が違うのか、覚えるための自分用メモです。
# ArrayListとは?
ArrayListは、“`java.util“`パッケージに含まれる“`List“`インタフェースを継承したクラスライブラリで、コレクションクラスの1つです。# サンプルプログラム
ArrayListを使うには、まず以下のように“`import“`文を記述します。
“`java:Main.java
import java.util.ArrayList;
“`
ArrayListをインスタンス化する際は、<>で格納する型を指定します(“`int“`などの基本データ型は不可、“`Integer“`などのラッパークラスは可)。
“`java:Main.java
import java.util.ArrayList;public class Main {
public static void main(String[] args) {
ArrayListnames = new ArrayList
Javaの基礎的な備忘録1
# メンバとは
クラスには属性を表す変数と、
操作を表すメソッドを定義します。
この`クラスに用意した変数やメソッドを総称してメンバと呼びます`。メンバ変数
メンバ変数とはクラス定義の中で下記の部分です。
クラス定義をしている”{“と”}”の中に記述され、そしてメソッドの外に記述されている変数のことです。
“`Java
class Television{
/**これ*/
int channelNo;
String name;
//クラスの中にあり、メソッドの外にあるvoid setChannel(int newChannelNo){
channelNo = newChannelNo;
}void dispChannel(){
System.out.println(“現在のチャンネルは ” + channelNo + ” です”);
}
}
“`では、メンバ変数に直接値を格納するのを禁止し、必ずメソッド経由でしかメンバ変数の値を格納したり参照したり出来ないようにするにはどうすればいいでしょうか。そういった場合はメン
Javaで「配列をコピーする(シャローコピーとディープコピー)」の動作を確認してみた
# 概要
Javaで「配列をコピーする(シャローコピーとディープコピー)」の動作を確認してみました。
以下のページを参考にしました。https://www.javadrive.jp/start/array/index10.html
# 実装
以下のファイルを作成しました。
“`JSample10_1.java
class JSample10_1{
public static void main(String[] args){MyTest[] src = {new MyTest(28), new MyTest(12)};
MyTest[] dst = new MyTest[2];for (int i = 0; i < src.length; i++){ dst[i] = new MyTest(src[i].num); } System.out.println("src[0] = " + src[0].num); // 28 System.out.println("dst[0] = " + dst[0]
【Java】ABC081B_ Shift Only #AtCoder
自分用にAtCoderの解答をまとめていきます。誤った情報があったら、申し訳ございません。
## 覚えること
– setメソッド
Listクラスのsetメソッドは、1つ目の引数は書き換えたいList内の位置を指定し、2つ目の引数は実際の変更の仕方を指定できる。## コード
“`java:ABC049C_Daydream
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;public class ABC081B_ShiftOnly {
public static void main(String[] args) {
try (Scanner sc = new Scanner(System.in)) {
int s = sc.nextInt();
int count = 0;
boolean judge = true;
Listarra
IBM MQ メッセージング・プロバイダー・アクティベーション・スペックとMQとの接続が切れた場合の再接続の動作
[tWAS 9.0 と MQ 9.2 でJMSを動かす #Java – Qiita]( https://qiita.com/keniooi/items/506c913a9d339a10e24e )の環境で実行しています。
### 1.MQを停止
“`
[root@c90105v1 ~]# date; podman stop mq
Tue Apr 30 09:23:30 PM PDT 2024
WARN[0010] StopSignal SIGTERM failed to stop container mq in 10 seconds, resorting to SIGKILL
mq
“`### 2.WASで警告 CWSJY0003W が発生
最大5回、300000ミリ秒おきに再接続が試行される。
秒数と回数は[IBM® MQ リソース・アダプターのプロパティーの構成 – IBM Documentation]( https://www.ibm.com/docs/ja/was/9.0.5?topic=provider-configuring-properties-mq-reso
Spring BootでMyBatisログを出力する
# はじめに
こんにちは、Gakken LEAP のバックエンドエンジニアの Matsuura です。
Spring(Java)でDB操作の処理を実装する際には、MyBatisを採用することが多いですね。
ただ、MyBatisの初期設定では、クエリの実行内容や実行結果が確認できず、正しい結果が得られているかすぐには分かりません。
そのため本記事では、クエリの実行結果をコンソールログとして出力する方法をご紹介します。# 方法
## ディレクトリ構成
ディレクトリ構成は以下の通りとします。
“`text
src/
├─ main/
│ ├─ java/
│ │ ├─ com/
│ │ │ ├─ example/
│ │ │ │ ├─ mapper/
│ │ │ │ │ ├─ HogeDao.java
│ │ │ │ │ ├─ HogeDao.xml
│ ├─ resources/
│ │ ├─ application.yml
“`## 設定内容
対象となる`@Mapper`インターフェイスが格納されているディレクトリに対
Java アプリケーション2
差分比較が遅い場合、いくつかの方法でパフォーマンスを向上させることができます。特に、以下の方法を試してみることをお勧めします:
1. インデックスの作成:
テーブルにインデックスを作成することで、検索と比較のパフォーマンスを大幅に向上させることができます。
2. 適切なデータ型の使用:
テーブルのカラムに適切なデータ型を使用することで、パフォーマンスを向上させることができます。
3. 一時テーブルの使用:
一時テーブルを使用して、データの読み込みや比較を効率的に行うことができます。以下のコード例では、上記の改善を適用しています。
改善したコード例
“`Java
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io
Javaで「配列のすべての要素を指定した値で埋める(fill)」の動作を確認してみた
# 概要
Javaで「配列のすべての要素を指定した値で埋める(fill)」の動作を確認してみました。
以下のページを参考にしました。https://www.javadrive.jp/start/array/index12.html
# 実装
以下のファイルを作成しました。
“`JSample12_1.java
import java.util.Arrays;class JSample12_1{
public static void main(String[] args){
int[] a = new int[3];
Arrays.fill(a, 10);System.out.println(a[0]);
System.out.println(a[1]);
System.out.println(a[2]);
}
}
“`以下のコマンドを実行しました。
“`
$ javac JSample12_1.java
$ java JSample12_1
10
10
10
“`# まとめ
何かの役に立てばと。
(調査中)Java 11のHttpClientを使用してAWS Cognitoのトークンエンドポイントからトークンを取得する例
## 必要な依存関係の追加
プロジェクトがMavenプロジェクトの場合、pom.xmlに以下の依存関係を追加します。
“`xml
com.fasterxml.jackson.core
jackson-databind
2.13.3
org.apache.httpcomponents
httpclient
4.5.13
“`
## Javaコード例
以下のコードは、Java 11のHttpClientを使用してAWS Cognitoのトークンエ
(調査中)Javaの HttpClient を使用したKeycloakからBearerトークンを取得
“`java
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;import java.net.URI;
import java.net.URLEncoder;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.nio.charset.StandardCharsets;
import java.util.Map;
import java.util.stream.Collectors;@Service
public class KeycloakService {public Res
メモ
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Arrays;
import com.opencsv.CSVReader;
import com.
アプリケーション
了解しました。以下は、比較元ディレクトリパスと比較先ディレクトリパスを選択し、それぞれを`before`テーブルと`after`テーブルに取り込み、差分を抽出してSJISエンコーディングで`差分.csv`として出力するJava Swingアプリケーションのコードです。
### コード例
“`java
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import ja