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

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

Java勉強メモ7_標準ライブラリ

# 標準ライブラリ
### Stringクラス
**String**クラスは、文字列を操作するためのメソッドを提供します。
#### 主要な特徴
文字列は不変であり、一度作成すると変更できません。
新しい文字列を作成すると、実際には新しい**String**オブジェクトが生成されます。
#### 主要なメソッド
1. length()
**説明**: 文字列の長さ(文字数)を返します。
**例:** str.length()
2. charAt(int index)
**説明:** 指定されたインデックス位置にある文字を返します。
**例:** str.charAt(0)
3. substring(int beginIndex, int endIndex)
**説明:** 文字列の指定された範囲のサブストリングを返します。
**例:** str.substring(1, 4)
4. equals(Object anotherString)
**説明:** 文字列が指定されたオブジェクトと等しいかどうかを比較します。
**例:** str.equals(“test”)
5. equals

元記事を表示

Java勉強メモ6_例外処理

# 例外処理
### Try-Catch ブロック
**概要:** **try**ブロック内でコードを実行し、例外が発生した場合は**catch**ブロックでそれを捕捉して処理します。
“` java
try {
// 例外が発生する可能性のあるコード
} catch (ExceptionType name) {
// 例外を処理するコード
}
“`
例:
“` java
try {
int division = 10 / 0;
} catch (ArithmeticException e) {
System.out.println(“算術例外が発生しました: ” + e.getMessage());
}
“`
### 例外の種類
Javaの例外には大きく分けて以下の三種類があります。

1. チェック例外(Checked Exceptions)
コンパイル時にチェックされる例外。
プログラマがこれらの例外に対処することが期待されます(例: IOException、SQLException)。

2. 実行時例外(Runtime Exceptio

元記事を表示

Java勉強メモ5_クラスとオブジェクト

# クラスとオブジェクト

### クラスの定義
クラスはオブジェクトの設計図です。クラスを定義することで、オブジェクトの属性(フィールド)と振る舞い(メソッド)を指定します。

#### 1.構造
**フィールド(Fields):** オブジェクトの特性を表します。例えば、車のクラスには色や速度などが含まれます。
**メソッド(Methods):** オブジェクトが実行できるアクションを定義します。例えば、車が加速する動作など。
**コンストラクタ(Constructors):** クラスからオブジェクトを作成するための特別なメソッドです。オブジェクトの初期化に使われます。
“` java
public class Car {
String color; // フィールド
int speed; // フィールド

// コンストラクタ
Car(String c, int s) {
color = c;
speed = s;
}

// メソッド
void accelerate(int

元記事を表示

SpringBootのWarパッケージをDockerコンテナ化してみる

目的

Springbootアプリケーションをコンテナ化したことがなく、SpringbootのDockerコンテナ化の記事は見るが、Warパッケージのコンテナ化の記事は見た記憶がないのでWarでも問題なくコンテナ化できるか確認と練習のため。自分用メモ

プロジェクトの用意

コンテナ化の確認のためだけなので依存関係は最小限(画像はGradleになっているがMaven選択)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/673518/edf0280f-b3a0-eb98-3fef-af7bbed5dc1c.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/673518/b0f3b083-d6f8-071c-e448-2b8bdf6128ba.png)

“`pom.xml

元記事を表示

可変長引数【Java】

### 可変長引数とは
Java言語における可変長引数は、メソッドに任意の数の引数を渡すことができる機能です。
メソッドの定義側では配列と同じように扱います。
また、呼び出し側で直接配列を指定することも可能です。

### 書き方
::: note
メソッド定義側
型と引数名の間に「…」を入れて書く。
“`
例)static void Sample(String… name) {}
“`

異なる型を引数に指定する場合は、以下のように**最後**に可変長引数を定義します。
“`
例)static void Test(int num, byte b, String… name) {}
“`
:::

::: note
メソッド呼び出し側
引数を通常通りカンマ区切りで定義します。
“`
例)Sample(“111”, “abc”, “aiueo”);
“`
:::

元記事を表示

FlinkとDroolsでストリーム処理

## はじめに

本記事ではApache FlinkとDroolsとを組み合わせ、ストリーム処理を行う方法について書いていきます。
ストリーム処理とは、システムにおいて継続的に発生するデータを、リアルタイムで収集・変換・解析することで、ビジネスにとって有用な結果を導きだすことを指します。

金融商品の価格データをもとにした自動売買の仕組みや、工場のセンサーデータをモニタリングすることによる異常検知など、様々なシーンで応用されています。

## Flink(Apache Flink)について

Javaで利用できるOSSで、ストリーム処理を実装するための豊富なAPIが提供されています。
データを受け取り、特定の操作をしたうえで後続の処理に流す事が可能です。
Flinkでは、下図のようにData Source・DataStream Transformation(Operator)・Data Sinkという3段階の手続きを記述することでストリーム処理を実装することができます。

“`mermaid
graph

1_[Data Source]
2_[Operator]
3_[Data S

元記事を表示

Spring Boot学習⑤~エラーメッセージをプロパティファイルで一元管理する~

前→https://qiita.com/19960417akiho/items/4f89cf51b69125c4cdc9

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

今回はPart11。

エラーメッセージをプロパティファイルで一元管理できるようにします。

まずは、src/main/resorces下に、エラーメッセージを管理するファイルを作ります。

ファイル名は必ず`messages.properties`でないといけません。

このファイルに、キーと値という形式でメッセージを管理していきます。

以下の通りです。

# messages.properties
“`
login.wrongInput = ログインIDとパスワードの組み合わせが間違っています。
“`

今回は、ログイン失敗時のメッセージをこのファイルから引っ張ってきて表示するような実装を行います。

ファイル作成の次は、`messages.properties`からロ

元記事を表示

Windows版 Cursorのターミナルで日本語の文字化けを解消する方法

WindowsのCursorでターミナルに出力する日本語がどうしても文字化けするときの解消方法。
最適解ではないかもしれないが、これも1つの方法という事で。

# ターミナルはPowerShell
設定を変更していなければターミナルはWindowsPowerShellが動作しているのでPowerShellに対して文字コードを指定してあげればよい。
要は文字コードをUTF-8にしてあげれば文字化けは解消する。

ちなみにWindowwsPowerShellではなくコマンドプロンプトに変更することもできる。

### PowerShellでの文字コード変更方法
ターミナルで以下のコマンドを入力する。
>“`
>$OutputEncoding = [System.Text.Encoding]::UTF8
>[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
>“`

まぁ毎回上記2行を入力するのは面倒なので「changeUTF8.ps1」といったテキストファイルを作成し上記コマンドを記載しておく。
(拡張子ps1はPowerS

元記事を表示

【初めてのJava】まずはコーディングしてみた(スレッド / その1)

## はじめに
スレッドの実装練習として、カウントダウンするタイマー機能を作ってみました。
タイマーは標準のものは使わず、自作します。

## 機能
指定した数値からスタートして、1秒ごとにカウントダウンするだけの機能です。

## ソースコード
“`java:App.java
/*
*/
import java.util.Scanner;
public class App{
public static void main(String[] args){
try(Scanner scanner = new Scanner(System.in)){

System.out.print(“カウントダウン値入力 “);
int num = scanner.nextInt();

CountDownThread countDownThread = new CountDownThread();
countDownThread.start();

元記事を表示

[androidアプリ]AWSのAPIgatewayを使用してみる

## はじめに
Cognito認証を使用した各種サービスへのアクセスに非常に困惑したので備忘録として情報を記載する
特にAWSMobileClientの仕様が理解できておらず困惑したので書き留めておく.

## 何をするか
android環境で,APIgatewayに3つの状況でリクエストを送信する.
– 1.認証・認可なしの場合
– 2.AWS cognito userpoolを使用する
– 3.AWS cognito userpool + idpoolを使用する

このページでは,1の認可・認証無しの場合について,解説する.
2: 追記予定
3: 追記予定

## 環境
S3や,UIはテスト目的以外に特に使用していないので無くても動作するはずである.また,後述するが,API gatewayのandroid SDKをビルドして使用する.

– minSdkVersion 28
– targetSdkVersion 34
– sourceCompatibility JavaVersion.VERSION_11
– targetCompatibility JavaVersion.VER

元記事を表示

【2024年】若手エンジニアにオススメする技術書20選

# [リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック](https://amzn.to/3NYrLaT)

[![画像タイトル](https://m.media-amazon.com/images/I/81+3DpjuMdL._SL1500_.jpg)](https://amzn.to/3NYrLaT)

**「美しいコードを見ると感動する。優れたコードは見た瞬間に何をしているかが伝わってくる。そういうコードは使うのが楽しいし、
自分のコードもそうあるべきだと思わせてくれる。本書の目的は、君のコードを良くすることだ」(本書「はじめに」より)。**

コードは理解しやすくなければならない。本書はこの原則を日々のコーディングの様々な場面に当てはめる方法を紹介します。
名前の付け方、コメントの書き方など表面上の改善について。コードを動かすための制御フロー、論理式、変数などループとロジックについて。
またコードを再構成するための方法。さらにテストの書き方などについて、楽しいイラストと共に説明しています。

日本語版ではRubyやgroongaのコミッタとしても著名な

元記事を表示

【Java】パスワードの複雑さの要件をチェックする

# はじめに

パスワードの複雑さの要件として、「8文字以上で半角英数字の全ての文字種が含まれていること」というような文言を見ることがあります。
このチェック処理が以前から気になっていたので、頭の体操がてらJavaを使って力技で実装してみました。

# 作成したコード

* 正規表現を使ってチェック項目を1つずつ処理するコードを作ってみました。
* あまりスマートな書き方ではありませんが、単体テストなどを考慮して粒度を小さくするとこんな感じになってしまうのでモヤモヤしますね…
* `String#matches()`や`Pattern.matches()`などを使った書き方もありますが、今回はパフォーマンスを重視してPatternオブジェクトを作ってマッチさせる方法を採用しました。
* 参考URL:[文字列のマッチング方法によるパフォーマンスの違い](https://hhelibex.hatenablog.jp/entry/2017/11/26/155849)

“`java:PasswordChecker.java
import java.util.regex.Matc

元記事を表示

GCP Data Catalog機能/実装

# GCPのData Catalogの概要と機能

## 目次
– [概要](#概要)
– [機能/詳細](#機能詳細)
– [まとめ](#まとめ)

## 概要
GCPのData Catalogは、データの探索、検索、モデリング、データガバナンスを容易にするためのメタデータ管理サービスです。Data Catalogを使用することで、組織内のデータリソースを中央集中的に管理し、データの可視性を向上させることができます。

Data Catalogは、データ資産に関連するメタデータ(データの特性や関連情報)を統合したデータカタログを提供し、以下のような機能を提供します。

## 機能/詳細

### メタデータ管理
Data Catalogは、データリソースのメタデータを一元管理します。メタデータには、データセット、テーブル、ビュー、ストアドプロシージャなどのデータリソースの情報が含まれます。メタデータは階層的に組織され、関連データリソースを簡単に見つけることができます。

以下は、Data Catalogのメタデータを管理する方法の一例です。

“`java
import com.g

元記事を表示

KotlinとThymeleaf 基本編(Dtoの値を出力)

以下の例では、架空のAnimalViewDtoクラスに保持した値をHTMLに出力させている。

“`:AnimalViewDtoクラス
package jp.type.user.controller.index.view.dto

/**
* 動物紹介ページ用ViewDto
*/
data class AnimalViewDto(
/** ID */
val id: Int,
/** 動物名 */
val name: String,
/** 性別*/
val sex: String,
)
“`

“`:文字列の出力方法

この動物の名前は、[[${animalViewDto.name}]]です。]]

“`

文字列の出力方法は上記の3つ。
状況に応じて使い分ける。

元記事を表示

エポックミリ秒ってなんだ。。

## 背景
現在担当している機能の中で、エポックミリ秒を扱っている処理があった。

## エポックミリ秒とは
UNIX時間(エポック秒)とは、1970年1月1日0時0分0秒(UTC)からの経過秒数を表す、コンピュータの時刻表現方法の一つです。 UNIX時間は、コンピュータの各種アプリケーションで時刻を扱う際に広く使われており、タイムスタンプやファイルの更新日時など、様々な場面で利用される。

ミリ秒単位で表すものを「エポックミリ秒」
秒単位は「エポック秒」と呼ばれる

## 参考サイト
以下のサイトで、指定した日付をエポックミリ秒、エポック秒に変換できる
https://yu-yum.net/epoch/

元記事を表示

Springで作るWebアプリ作成の流れ(2)バックエンドの概要

## はじめに
 この記事ではWebアプリでのバックエンドはどのような流れで動くのかについて書いていきます。

## MVCモデル
 (0)の前提知識でもお話しましたが、Webアプリのテンプレート、デザインパターンとしてMVCモデルが存在します。MVCモデルとはユーザからのリクエストをModel, View, Controllerの3つの処理層に分けて処理していくというデザインパターンです。
 Web開発においてはこのMVCモデルを基礎にして作成されます。

## 今回の概要
 今回作るアプリは簡単なTODOアプリで登録したTODOがページに反映されることを目標に作成していきます。今回のアプリの流れをMVCモデルに合わせて具体的に示すと、ユーザがTODOの作成をリクエストとして送り、そのリクエストをコントローラーが受け取り、モデルが処理をして、ビューを返し、ユーザに返すという流れで行います。

 ![無題のプレゼンテーション.png](https://

元記事を表示

ひとつのCSVファイルを指定したファイルサイズ以下になるように切り分ける

バッチからとあるAPIを叩く際にデータをCSVファイルで送るように要求された。
ファイルサイズの最大値をオーバーする場合は2つ (またはそれ以上) に分割する必要があるのでその処理を行う。

# 要件

– ファイルを指定サイズ以下になるように切り分ける
– (ヘッダがある場合) 切り分けたファイルそれぞれにヘッダを付ける
– 切り分けは行単位とする
– 1行 (+ヘッダ部分) で指定サイズをオーバーするような行がある場合はエラー
– ファイル名は元のファイルに “_1” といった連番を付けたものにする
– 既に同名のファイル名が存在する場合は連番を進めることで既存のファイルを上書きしないようにする

## 切り分け例

元のファイル `~/sample.txt`
“`
#col1,col2,col3
a,b,c
hoge,fuga,foo
1,2,3
4,5,6
“`

`~/sample_1.txt`
“`
#col1,col2,col3
a,b,c
hoge,fuga,foo
“`

`~/sample_2.txt`
“`
#col1,col2,col3
1,

元記事を表示

Spring Boot学習④~パスワードのハッシュ化(SpringSecurity)~

前→https://qiita.com/19960417akiho/items/2aa16ce876c4937b0cc3

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

今回はPart10。

パスワードのハッシュ化をSpringSecurityを用いて実装します。

まず、SpringSecurityを使うには、pom.xmlに情報を追加しなければなりません。

# pom.xml

“` pom.xml


org.springframework.security
spring-security-core

元記事を表示

Java学習 リスト ArrayList

# リスト
リストは、Rubyの配列と似たデータ管理の仕組みで、以下の特徴がある。

* 要素を順序づけて管理する
* 要素を事後的に追加したり削除できる

また、Javaのリストには、以下の2種類がある。

* ArrayList
* LinkedList

ArrayListの方が使用頻度が高い。

# ArrayList

ArraListは「可変長配列」を使用するための仕組み。
可変長配列とは、文字通り長さ(要素数)を変更できる配列のこと。

Rubyの配列は可変長なので、Javaの配列よりもArrayListの方が性質や使い方が近い。

## ArrayListの使い方

“`java
import java.util.ArrayList;

class Main {
public static void main(String[] args) {
ArrayList scores = new ArrayList();

scores.add(1);
scores.add(5);
scores.add(

元記事を表示

Java学習 配列

# Rubyの配列との違い
Rubyの配列は、格納する要素の数を最初に決める必要がない。
Javaの配列は、格納する要素の数を最初に決める必要がある。また、後で要素数を変更することができない。
要素を増やす場合、サイズの大きな配列を新たに作成して元データをコピーする、ArrayListというリストの一種を使用する2つの方法がある。
ArrayListとは、要素の数を変更できる配列のようなもの。そのため、ウェブアプリケーション開発ではよく使用される。

# Javaの配列
## 配列の使い方

“`java
class Main {
public static void main(String[] args) {
int[] scores;
scores = new int[3];

scores[0] = 1;
scores[1] = 5;
scores[2] = 10;

System.out.println(scores[0]);
System.out.println(scores[1]);
System.out

元記事を表示

OTHERカテゴリの最新記事