JAVA関連のことを調べてみた

JAVA関連のことを調べてみた

サンプル

# やることリスト
1. 挨拶
1. ほほおほ
1. 穂はおフォアhフォアhf
1. hふぁおwf

### コードブロック
“`java
//void method
public class Sample {
private String value;
public void setValue(String value) {
this.value = value;
}
}
“`

元記事を表示

構文解析のやつ

みなさまお久しぶりでございます。
アドオンシリーズは更新していません()
また機会があれば更新しようかと思います(投げやり)

とりあえず自分用メモ
“`java:Lexer.java
public class Lexer {
private static final ArrayList list = new ArrayList<>(); // 結果
// 検知する文字とか
private static final List brackets = Arrays.asList(‘(‘,’)’,'{‘,’}’,'[‘,’]’);
private static final List operators = Arrays.asList(‘=’,’+’,’-‘,’*’,’/’);
private static final List strings = Arrays.asList(‘\”,'”‘);
private static final List

元記事を表示

Spring Boot学習②~ログイン成功時・失敗時の処理~

前→https://qiita.com/19960417akiho/items/3fa636e6a26c371bcaa8

以下の動画を参考に、ハンズオン形式でSpring BootでWebアプリを制作していきます。

今回はPart6。
正しいペアのIDとパスワードを入力した際にはトップメニュー画面に遷移し、
誤ったペアのIDとパスワードを入力した際は、ログイン画面にその旨をテキストで表示します。

まずはトップメニュー画面のhtmlとコントローラーを用意します。

# menu.html&MenuControler.java

“`menu.html




トップメニュー


トップメニューだよ


“`

“`

元記事を表示

Spring Boot on Embedded Tomcatでリダイレクト時のLocationヘッダーの値を相対パスに変更する

# バージョン
– Spring Boot 3.2
– Embedded Tomcat 10.1

> – 3.2以前のバージョンでもできる可能性があります。
> – JettyやUndertowでのやり方は検証していません。

# やりたいこと
デフォルトの状態では、リダイレクト時のLocationヘッダーは絶対パスになります(例: `https://a.example.com/dest`)。これは[Jakarta Servletの仕様](https://jakarta.ee/specifications/servlet/6.0/jakarta-servlet-spec-6.0#convenience-methods)らしいです。
しかし、クライアントとSpring Bootサーバーの間に複数ロードバランサーがあった場合、この挙動だとクライアントがうまくリダイレクトできない可能性があります。
なので、Locationヘッダーを相対パスにしたいです。

# 結論
“`application.properties
server.tomcat.use-relative-redirects

元記事を表示

JdbcTemplateからJdbcClientに移行して嬉しかったこと2つ

# バージョン
– Spring Framework 6.1
– Spring Boot 3.2

# JdbcClientって?
Spring Framework 6.1(対応するSpring Bootは3.2)から`JdbcClient`インタフェースが導入されました。
内部的には`JdbcTemplate`および`NamedParameterJdbcTemplate`のラッパーです。
流れるようなインタフェース(Fluent API)が特徴です。

# Optionalが使いやすい
`JdbcTemplate`で主キー検索してその結果を何かのクラスの`Optional`にしたい場合、👇のようにちょっと面倒でした。

“`java:JdbcTemplateでOptionalを返す例
public Optional selectById(Integer id) {
try {
Hoge hoge = jdbcTemplate.queryForObject(“””
SELECT id, name

元記事を表示

ポリモーフィズムが理解できてなかったのでまとめ

ポリモーフィズムは、異なるクラス(サブクラス)が共通のインターフェース(スーパークラスで定義されたメソッド)を持ちながら、それぞれ異なる振る舞いを実装することを指す。

例として、図形というスーパークラスがあり、四角形、円といったサブクラスがある場合を考える。これらのサブクラスは、図形クラスから継承され、面積を計算するという共通のメソッドを持つが、その計算方法はクラスによって異なる。

“`java
class 図形 {
double 面積を計算する() {
return 0;
}
}

class 四角形 extends 図形 {
double 幅;
double 高さ;

四角形(double 幅, double 高さ) {
this.幅 = 幅;
this.高さ = 高さ;
}

@Override
double 面積を計算する() {
return 幅 * 高さ;
}
}

class 円 extends 図形 {
double 半径

元記事を表示

【Java】ConcurrentModificationExceptionから学ぶListと拡張for文の仕組み

## 始めに
業務中にConcurrentModificationExceptionが発生するケースに出会い、エラーについて調べていく中で勉強になったことがあったのでまとめてみました。

### この記事の対象者
・Javaの勉強をしている方
・ConcurrentModificationExceptionって何?と思っている方

## ConcurrentModificationExceptionとは
Java SE 11 & JDK11 Documentには以下のように定義されています。
>この例外は、オブジェクトの並行変更を検出したメソッドによって、そのような変更が許可されていない場合にスローされます。
たとえば、あるスレッドがCollectionで反復処理を行っている間に、別のスレッドがそのCollectionを変更することは一般に許可されません。 通常、そのような環境では、反復処理の結果は保証されません。
この例外は、オブジェクトが別のスレッドによって並行して更新されていないことを必ずしも示しているわけではありません。 単一のスレッドが、オブジェクトの規約に違反する一連のメソ

元記事を表示

SpringBootでプロジェクト名変更

# この記事はこれの続き

https://qiita.com/waokitsune/items/83febc4a0518d7d346aa

# リファクタリング機能でリネーム

プロジェクト上で右クリック → 『Refactor』 → 『Rename』。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/706116/893a52a3-845f-1997-6818-751e140a37f8.png)

demo → nekoに変えます。
『Update references』にチェック入れます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/706116/7dbf009b-2a71-9c8a-a7a4-8e21b1f91088.png)

# ビルドエラーへの対応

リファクタリング機能でリネームしても下記のようなエラーになります。

> Project neko cannot be ren

元記事を表示

【Java】プロパティの値が画面に表示されない(JSF)

# はじめに
JSFで初歩的な動きを確認しようとしたところ、`Managed Bean`のプロパティをバインドして表示してくれない事象が発生。解決方法をメモ。

:arrow_down: 要は`#{}`を使って画面に「Hello!」と表示したいのに、表示されない。

“`index.xhtml




FirstPage

元記事を表示

Java log ログ ライブラリ

java.util.loggin

Log4j

Log4j2
https://logging.apache.org/log4j/2.x/

Logback (SLF4Jと組み合わせた利用を前提)
https://logback.qos.ch/

利用法
https://sukkiri.jp/loggers?via=devnote

元記事を表示

Java 簡単なまとめ

Java

元記事を表示

ProcessingでChatGPTを動かす

# はじめに
本記事は、[Processing Advent Calendar 2023](https://adventar.org/calendars/8532)参加記事です。
この記事では、Processing(Java)でChatGPT(GPTのAPI)を使ったコードを紹介します!
![sketch.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/929801/fdb20234-bf61-742f-1466-4199525e71da.gif)

# 必要な準備
## OpenAI APIキーの取得
GPT(ChatGPT)のAPIを利用するためには、APIキーを作る必要があります。
作り方は↓のサイトを参考にしてください。

参照:

https://notai.jp/openai-get-api-key/

> APIの使用は従量課金制です。利用料金等をよく確認してから使用しましょう。また、2023年12月現在は、最初の3ヶ月間にのみ使える無料利用枠が存在します。

## ライブラリのインポート

元記事を表示

ABC334の解答[Java]

## はじめに
今回はコンテスト中にEまで、コンテスト後にFを解いたのでFまで載せようと思います。

なお、僕のライブラリは[提出結果](https://atcoder.jp/contests/abc334/submissions?f.Task=&f.LanguageName=Java&f.Status=AC&f.User=viral)をご確認ください。
では、見ていきましょう。

## A – Christmas Present
問題文は[こちら](https://atcoder.jp/contests/abc334/tasks/abc334_a)

単に比較して答えを出力しました。
“`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 = new SimpleWrit

元記事を表示

OpenTelemetry 調査

# OpenTelemetryについて

## 目次
1. [概要](#概要)
2. [機能/詳細](#機能詳細)
3. [なぜ必要か](#なぜ必要か)
4. [サンプルコード](#サンプルコード)
5. [まとめ](#まとめ)

## 概要
OpenTelemetryは分散トレーシングとメトリクスの観測性データを収集し、分析・監視・トラブルシューティングを行うためのオープンソースのツールキットです。分散システムのコンテキストをキャプチャし、リクエストの経路やパフォーマンスの問題を追跡するための一貫した手法を提供します。

## 機能/詳細
OpenTelemetryには以下の主な機能があります:

### トレーシング
分散トレーシングを使用して、リクエストの経路やリクエスト間のタイミング情報を収集します。これにより、アプリケーションのコンポーネント間の相互作用の可視化とトラブルシューティングが容易になります。

### メトリクス
アプリケーションのパフォーマンスやリソース利用率を測定し、カスタムメトリクスを作

元記事を表示

javaのコンパイルと実行方法

# Javaのコンパイルと実行
これから、Javaのソースコードを作成~実行までの流れを紹介します。
(JDKインストール済みでコンソールでJavaが使えるようになっている
こと前提で話します。)

①ソースファイルの作成
・以下のソースコードをメモ帳(サクラエディタなどのテキストエディタ)を開いて、
 記述する。
~~~
public class Test {
public static void main (String[] args){
System.out.print(“Hello”);
}
}
~~~
②ファイルを保存する
・ソースコードが書けたら、ファイルを保存しますが、
 この時に拡張子は(.java)にすること!また、今回はわかりやすいように
 デスクトップに保存しよう。

:::note info
(保存する時、「ファイル名」と「ファイルの種類」を決められるので、
ここで「ファイル名」は「Test.java」として「ファイルの種類」は
「すべてのファイル」を選択して保存する。)
:::
③ソースコードをコンパイルする

元記事を表示

Job Interview Questions Java 3

How do you reverse a string in Java?

How do you swap two numbers without using a third variable in Java?

Write a Java program to check if a vowel is present in a string.

Write a Java program to check if the given number is a prime number.

Write a Java program to print a Fibonacci sequence using recursion.

How do you check if a list of integers contains only odd numbers in Java?

How do you check whether a string is a palindrome in Java?

How do you remove spaces from a string in Java?

Ho

元記事を表示

Job Interview Questions Java 2

1. What is the difference between JDK, JRE, and JVM?
2. What is the difference between an abstract class and an interface?
3. What are the different access modifiers in Java?
4. What is the difference between a checked and an unchecked exception?
5. What is the difference between a HashMap and a TreeMap?
6. What is the difference between a static and non-static method?
7. What is the difference between a stack and a queue?
8. What is the difference between overloading and overriding?
9. What is

元記事を表示

Job Interview Questions Java 1

How do you handle exceptions in Java?

What is the difference between an interface and an abstract class in Java?

How do you implement polymorphism in Java?

How do you implement a linked list in Java?

How do you implement a stack in Java using an array?

How do you implement a binary search tree in Java?

How do you implement a bubble sort algorithm in Java?

How do you implement a merge sort algorithm in Java?

What is the Java Virtual Machine (JVM)?

What is the difference between static a

元記事を表示

Spring Boot学習①~ログイン画面の入力値を受け取る~

以下の動画を参考に、ハンズオン形式でSpring BootでWebアプリを制作していきます。

今回はPart5、ログイン画面に入力された値(ユーザー名とパスワード)をコンソールに出力するところまでを実装します。

分からない部分はChatGPTに聞きながら進めていきます。
あくまで、躓いた部分等を個人的な備忘録として記録するための記事です。

# login.html
ログイン画面のhtml部分は以下です。
本記事に必要な部分だけを抜粋しています。

“`login.html


元記事を表示

PlantUMLを用いた簡単なシーケンス図の作成方法

## 概要
* VScodeにてPlantUMLをプラグインし、シーケンス図を作成する方法を記載。
* 使用環境(2023/12/25現時点):Windows 11 Pro、JDK21、VScode
* [JAVAのダウンロードはこちらから – ORACLE](https://www.oracle.com/jp/java/technologies/downloads/)

# 環境変数とJAVA_HOME
> JAVA_HOMEは、Javaの環境変数の1つです。
環境変数はOSが持つ情報を共有するための仕組みのことです。

[環境変数JAVA_HOMEの確認と設定方法を現役エンジニアが解説【初心者向け】 – TechAcademyマガジン](https://magazine.techacademy.jp/magazine/24230)

:::note
JAVA_HOMEが設定されていないとPlantUMLのプレビューが表示されないため、設定していない場合は先に設定する。JAVA_HOMEの設定はPlantUML以外の場合においても使用する。
:::

# UML
>UMLとはUnif

元記事を表示

OTHERカテゴリの最新記事