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

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

40代事務職Java面白い!?6週間勉強してオブジェクト指向とGithub便利だなって思った

公式ドキュメントを読め!おじさんに疲れたので、じゃあ英語で読めるようにアメリカのオンライン大学のコンピューターサイエンス学部に2023年9月に入学しました。現在社会人学生です。
11月からプログラミングのJavaコース入門で勉強してます。

1週間のカリキュラム
使用しているテキスト※公式サイトで公開されているシラバスより引用してます
Introduction to Programming Using Java Version 9.0, JavaFX Edition
https://math.hws.edu/javanotes/index.html

公式サイト掲載シラバスよりhttps://www.uopeople.edu/become-student/prepare-for-uopeople/prepare-college-courses/programming-1-cs-1102-learning-materials/

– その週のテーマのテキストを読む
– その週テキストで学んだことを英語のエッセイ形式で書く
– 毎週プログラミングのコードを書く課題

こんな感じです。

元記事を表示

【Eclipse + Git・GitHub + EGit】15分でできるJavaプロジェクトのバージョン管理

# はじめに
本記事ではEclipseを使って作成したプロジェクトとGit・GitHubを連携してバージョン管理を行う方法を解説します。Git・GitHubを使ってみたいけどどうすればいいのかわからないという人向けの記事となっておりますので、参考にしていただければ幸いです。

# 前提条件
– Eclipseを使ったプロジェクト作成の方法を理解している
– GitHubのアカウントが作成されており、最低限の使用方法を理解してる

# 目次

1. [EGitの導入](#egitの導入)
1. [Git・GitHubとの連携](#gitgithubとの連携)
1. [commitとpushを行う](#commitとpushを行う)
1. [参考文献](#参考文献)

# EGitの導入

Eclipseを開いて画面上部のヘルプ→Eclipseマーケットプレースをクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3287818/52024e69-9a2c-32bf-0a98-e5a3

元記事を表示

整数リテラルの各進数表記と接頭辞の由来

# 整数リテラル(Integer Literals)における接頭辞
### 【さっそく】
下記のコードについてのコンソール出力値がどうなるのか考えてみましょう。
“`Java
class Prefixes {
public static void main(String[] arg) {
int x1 = 10; // 10 in decimal
int x2 = 012; // 10 in octal
int x3 = 0xA; // 10 in hexdecimal

System.out.println(x1);
System.out.println(x2);
System.out.println(x3);
}
}
“`

コンソール出力:
“`java
10
10
10
“`
出力値を見ると、どの変数にも整数として10が格納されていることがわかります。
なぜ初期値の記述が違うにもかかわらず、どの変数も10を格納しているのかというと
変数”x2”、

元記事を表示

コンパイルエラーと例外スローの違い

java silverの問題を解いてて、コンパイルエラーと例外スローどちらになるかわからなかったのでまとめてみた。

コードがコンパイルエラーになるか、例外をスローするかの基準

1. **コンパイルエラー(静的エラー)**:
– **定義と一致しない使用法**:変数や関数の定義に反する使用(例:存在しないメソッドの呼び出し、データ型の不一致)。
– **構文エラー**:プログラムの構文が言語の規則に違反している場合(例:セミコロンの欠落、括弧の不一致)。
– **解決できない参照**:使用されているが定義されていない変数や関数への参照。
– **アクセスレベルの違反**:privateやprotectedなど、アクセスできないメンバへのアクセス。

2. **実行時例外(動的エラー)**:
– **外部要因**:外部リソースの問題、ネットワークエラーなど。
– **無効な入力**:ユーザー入力や外部データソースからの予期しないデータ。
– **リソースの問題**:メモリ不足、ファイルシステムの問題など。
– **プログラムの論理エラー*

元記事を表示

Scannerの作成

1日に二本出してますね
更新頻度が極端…

今回はScannerを作ります。Lexerで分割したやつをmapに直すやつですね。
名前Scannerで合ってるかわからない

そんじゃ早速。
“`java:Scanner.java
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Pattern;

public class Scanner {
public Map Scan(ArrayList list){
String functionName = list.get(0);
ArrayList args = new ArrayList<>();
boolean isString = false;
for(String element : list){
if(element.le

サンプル

# やることリスト
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」として「ファイルの種類」は
「すべてのファイル」を選択して保存する。)
:::
③ソースコードをコンパイルする