JAVA関連のことを調べてみた2023年07月14日

JAVA関連のことを調べてみた2023年07月14日

【JavaGold】scheduleWithFixedDelayメソッド

## 概要
指定された初期遅延時間(最初の実行までの遅延時間)の後にタスクを実行し、前のタスクの終了から指定された遅延時間が経過するごとにタスクを繰り返し実行するためのメソッドである。

つまり、前のタスクの終了から次の処理の実行までの遅延時間を指定することで、次の処理との間隔を一定にすることができる。 

“`java
ScheduledFuture scheduleWithFixedDelay(Runnable command, long initialDelay, long delay, TimeUnit unit)
“`
##### 引数について
このメソッドは、`Runnable`オブジェクト(または`Callable`オブジェクト)を受け取る。

– `initialDelay`:初期遅延時間(最初の実行までの遅延時間)
– `delay`:前のタスクの終了から次のタスクの実行までの遅延時間
– `unit`:遅延時間の単位を表す`TimeUnit`列挙型

##### 例

“`java
import java.util.concurrent.Executor

元記事を表示

【JavaGold】scheduleAtFixedRateメソッド

## 概要
指定された初期遅延時間(最初の実行までの遅延時間)の後にタスクを実行し、その後一定の間隔でタスクを繰り返し実行するためのメソッド。

“`java
ScheduledFuture scheduleAtFixedRate(Runnable command, long initialDelay, long period, TimeUnit unit)
“`
##### 引数について
このメソッドは、`Runnable`オブジェクト(または`Callable`オブジェクト)を受け取る。
– `initialDelay`:初期遅延時間
– `period`:インターバル時間(タスクの繰り返し実行の間隔)
– `unit`:遅延時間と間隔の単位を表す`TimeUnit`列挙型

##### 例
“`java
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

p

元記事を表示

使用率表示

~~~Java
import org.springframework.boot.actuate.system.DiskSpaceHealthIndicator;
import org.springframework.boot.actuate.system.DiskSpaceHealthIndicatorProperties;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class DiskUsageController {

private final DiskSpaceHealthIndicator diskSpaceHealthIndicator;
private final DiskSpaceHealthIndicatorProperties properties;

public DiskUsageContro

元記事を表示

ドメイン駆動設計を参考にしながらJava×SpringBootで家計管理アプリを自作

# 1. はじめに
### 1-1. 簡単な自己紹介
事務系の仕事をしておりましたが、プログラミングに興味を持ち、在職中から独学でJavaを学習していました。
現在は退職し、IT業界への就職を目指して活動中です。
退職後の期間にSpringBootを使ってアプリケーションを作成したので、アプリの概要や作成しながら考えたことなどについてまとめました。

# 2. アプリの概要
簿記の考え方を取り入れた家計管理アプリです。
一般的な家計簿というよりは、個人向けのちょっとした会計アプリといったほうが適切な表現かもしれません。
日々のお金のやり取りを「仕訳」という形で記録し、それを元に月の収支や資産・負債の残高を把握します。

GitHubリポジトリ:https://github.com/wtbyt298/myaccountbook

![スクリーンショット 2023-07-13 165747](https://github.com/wtbyt298/myaccountbook/assets/126745395/6568919c-6b47-49de-a7d5-6fb5b544acf4)
![ス

元記事を表示

【JavaGold】Executnorsクラス②

①は[こちら](https://qiita.com/knmbpc/items/0d5214efa61df942b4fc)

## ScheduledExecutorServiceインタフェース
`ExecutorService`を拡張しており、メソッドを定期的に実行するためのインタフェースである。

#### 主なメソッド

– `schedule(Runnable task, long delay, TimeUnit unit)`:
指定された遅延時間の後にタスクを実行する。

– `schedule(Callable task, long delay, TimeUnit unit)`:
指定された遅延時間の後にタスクを実行し、結果を返す。

– [`scheduleAtFixedRate(Runnable task, long initialDelay, long period, TimeUnit unit)`](https://qiita.com/knmbpc/items/4845cd4320aa703f342f):
指定された初期遅延時間の後にタスクを実行し、一定の間隔で

元記事を表示

バージョン切り替えのコマンド絶対いつも忘れるので一覧化しとく

https://github.com/anyenv/anyenv
最近存在を知ったanyenvであれこれxxenv化したいなぁと思いつつも、すでに汚れてしまった私の環境を整理していくのは腰が重いので、最近よく使う言語のバージョン切り替えをコマンド一覧化しとく

# goenv
“`bash
# バージョン確認
go version
# インストールできる一覧
goenv install -l
# インストール
goenv install {バージョン}
# 設定
goenv global {バージョン}
# 指定のディレクトリにのみ設定する場合はこちら
goenv local {バージョン}
# .zshrcは読み直そう
source ~/.zshrc
“`

# nodebrew
インストールしてあれば `ls-remote` やら `install-binary` のくだりはいらない
“`bash
# インストールした一覧
nodebrew ls
# インストールできる一覧
nodebrew ls-remote
# インストール
nodebrew install-bina

元記事を表示

Spigot の NamespacedKey と PersistentDataContainer を解剖する

# NamespacedKey とは何か
NamespacedKey は以後 NK 、PersistentDataContainer は以後 PDC と表記する。
Spigot の JavaDoc から引用
> Represents a String based key which consists of two components – a namespace and a key. Namespaces may only contain lowercase alphanumeric characters, periods, underscores, and hyphens.
> Keys may only contain lowercase alphanumeric characters, periods, underscores, hyphens, and forward slashes.
> 意訳:文字列をキーとして紐づけられた情報を名前空間(namespace)に保存します。
> 名前空間には小文字のアルファベット、ピリオド、アンダースコア、とハイフンを使用することが出来ます。

元記事を表示

[Java] private package

# private package
> * アクセス修飾子をつけずにクラスやメソッド、変数を定義したときに動作する
> * 同じパッケージに属するクラスのみアクセスを許可する
> * 異なるパッケージからはアクセスできない
> “`java:private package
> class Main{
>
> }
> “`

# publicクラスと非publicクラスを同じファイル内に定義
> * 同時に定義できる
> * ソースファイル名は同じじゃないとだめ
> “`java:publicクラスと非publicクラス
> public class Main{
> }
>
> class Sub{
> }
> “`

# 複数のpublicクラスを同じファイル内に定義
> * 同じソースファイル内に複数のpublicクラスを定義することはできない
> “`java:複数のpublicクラス
> public class Main{
>
> }
>
> public class Sub{
>
> }
> “`

# 複数の非publicクラスを同じファイル内に定義
> *

元記事を表示

HackTheBox LogForge WriteUp

今回は、HackTheBoxのMediumマシン「LogForge」のWriteUpです!
名前がすでに、ある脆弱性を思い浮かべさせますが、どのようなマシンなのでしょうか。。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1664764/5c3f8ce6-9f11-ab1d-7da6-c9413000c04b.png)
グラフは、The Mediumといった感じのグラフですね。。
ルート目指して、攻略頑張ります!

HackTheBoxってなに?という方はこちらの記事を見てみてください!一緒にハッキングしましょう~。

https://qiita.com/WhizOwl/items/165783694cb4791cff34

また、HackTheBoxで学習する上で役にたつサイトやツールをまとめている記事もあるので、合わせてみてみてください!

https://qiita.com/Perplex/items/30f949fe261f56af7476

## LogForge

### 侵

元記事を表示

【JavaGold】Executorsクラス①

## 概要
`ExecutorService`インタフェースを実現したインスタンスへの参照を戻すファクトリメソッドを用途別に提供するクラスである。

## 主なメソッド
– `newSingleThreadExecutor()`メソッド
– `newFixedThreadPool()`メソッド
– `newCachedThreadPool()`メソッド

#### newSingleThreadExecutorメソッド
**単一**のスレッドプールを作成する。

##### 例

“`java
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class SingleThreadExecutorExample {

public static void main(String[] args) {
ExecutorService executorService = Executors.newSingleThreadExecutor

元記事を表示

【JavaGold】Executorフレームワーク

## 概要
スレッドプール[^1]を使用し、スレッドの作成や管理に関する詳細な実装を意識することなく、効率的なマルチスレッドの実行環境を構築することができる。
[^1]:スレッドの無駄遣いをなくすために、あらかじめスレッドを生成して保存しておき、使い回しをする仕組みのこと。

## 構成インタフェース
`Executor`フレームワークは、以下のインタフェースで構成されている。

#### 構成

`Executor`インタフェース
↑(汎化)
`ExecutorService`インタフェース
↑(汎化)
`ScheduledExecutorService`インタフェース

#### Executorインタフェース
`Executor`フレームワークの中心となるインタフェースである。
`execute(Runnable command)`メソッドを持ち、指定されたタスクを非同期に実行する。

#### ExecutorServiceインタフェース
`Executor`インタフェースを拡張したインタフェースであり、スレッドプールの管理やタスクのスケジューリング、タスクの終了待ちなど、より

元記事を表示

【Java】学習記録①

## 初めての投稿です!
4月からプログラミングの学習を本格的に始めました。

先日無事に転職活動を終え、入社先でJavaを本格的に学ぶことになりました。
その前にまず予習として学習していきたいと思います。

ProgateのJavaの無料範囲は学習した状態から始めていきます。

# 「はじめてのJavaプログラム:Javaプログラムの入門書」

こちらを拝読しました。(丁度Kindle Unlimited3ヶ月無料…!)

ほとんどの内容はProgateで学んだことだったので、サラサラと読み進めました。

この本から新しく学んだことをまとめたいと思います。

## 文字列操作
文字列操作とは、文字列が持っている『機能』を利用して文字列に対して処理を行うこと

**機能の一例**
– length(): 文字列の長さを取得
– substring(a,b): 文字列をaからbまで切り取り
– replace(a,b): 文字列のaをbに置き換え
– indexOf(a): 文字列にaという文字が何番目にあるか取得
– split(a): 文字列をaという文字で分割
– e

元記事を表示

Java -StreamAPI-

## 〇前置き
今回からただ書くだけでなく、心の声も入れて記事書いてみます。
Java Gold取得に向け勉強中ですので同じく勉強している人に共感してもらえたらうれしいな…
※主は愛知県三河出身

## 「StreamAPI?なんじゃそりゃ」
StreamAPIが唐突に表れた!
黒本しか持ってない勢としては、「いきなり出てきてごっめーん!まことにすいまめーん!(ジョイマン)」って感じ
なにやらJava Goldでは頻出の問題らしい…

「第一問 Optionalクラスについて…(え、StreamAPIじゃないじゃん!)」
「StreamAPIのメソッドの使い方覚えればいいんだら?」と思っていたのになんだよOptionalって…
とりあえず、調べたことと黒本の内容を確認します。

## Optionalクラス
>Java SE 8で導入されたjava.util.Optionalはメソッドの処理結果を扱うためのクラスで処理結果の正常・以上に関わらず同じ型で扱うことができます。このクラスを利用することにより、例外処理に関するコードを減らすことができ、その結果、コードの可読性を

元記事を表示

androidアプリをつくろう001

はじめまして、「おかす」です。
普段はバックエンドのエンジニアとして働いています。
神が突然「アンドロイドアプリを作れるようになりなさい」と言ってきたので
完全に0の状態からある程度さわれるようになるまで頑張ろうと思います。
このqiitaでは学んだことや経過を記録していきます。

目標はアプリを20個作成したのち、ラインのように
メッセージやスタンプを送受信できるようなアプリを作成することです。
アイデアをひねる頭がないため、このアプリ20個は以下を参考にします。
【実践で身につけるiOSアプリ開発】 10日で21個アプリを作った話
https://www.yukisako.xyz/entry/swift-kusoapps-summery

期限は自分に激甘のため、100年以内とします。

ではいきなりですが、環境構築からはじめましょう。

環境はWindows10です。
まずはソースコードを書いたりなんやらできる総合開発環境をインストールします。
なにやら「Android Studio」がよさそうなのでこれを使いましょう。
言語は特にこだわりがないため「java」で開

元記事を表示

スーパークラスの乱用:Javaにおける密結合とその解消方法

## はじめに
Javaプログラミングでは、よく継承を使用してコードの再利用を促進し、保守性と可読性を向上させるためにクラス間の関連性を表現します。しかし、適切に管理されていない継承は、システム全体を「密結合(Tight Coupling)」状態に陥れる可能性があります。この記事では、無闇にスーパークラスを使用した継承がどのように問題を引き起こすのか、そしてその解消方法について考察します。

## 密結合とは
密結合は、一部の変更がシステム全体に広範囲な影響を及ぼす状態を指します。密結合のシステムでは、単一のモジュールの変更が他のモジュールに直接影響を及ぼし、予想外のエラーやバグを引き起こす可能性があります。

## スーパークラスの乱用と密結合
スーパークラスの乱用は一般的に二つの形で発生します:過度な継承と不適切な継承です。

**過度な継承:** スーパークラスからあまりにも多くの機能を継承すると、サブクラスは過剰な責任を負うことになり、その結果、スーパークラスに変更があるたびにサブクラスも修正する必要が出てきます。

“`java
class Animal {
voi

元記事を表示

【make it easy】efwの多国語対応

i18nというキーワードの意味はご存知ですか。自分が結構長い年数で18国と思い込みました。実は、internationalizationの略称で、i + ランダム18英字 + n ということですね。

efwはフレーワークですから、内部のメッセージ数は460でそれほど多くないです。中国語、日本語、英語(自分のパスポートの出発地・渡航先の記録順)、3種類の言語ファイルはデフォルトとして提供します。韓国に行ったことがあるが、言葉をわからないから翻訳できません、残念。

今回のサンプルは、多国語関連のものを試します。

# 多国語定義ファイル
多国語定義ファイルはxmlプロパティファイルで、ファイル名は国の略称です。日本語の場合 jp.xml です。このファイルは、WEB-INF/lib/efw/i18nフォルダに格納します。以下は一部の情報です。
“`xml

元記事を表示

Java 基礎の基礎2

# はじめに
– Javaの学習を始めたので、備忘録その2
– 基礎の基礎からしっかりと

[基礎の基礎1](https://qiita.com/takayuki91/items/be28a8da35c7a8a4d0c3)

# 学んだこと
– インクリメント・デクリメント演算子
– 比較演算子
– 論理演算子
– 反転

# インクリメント・デクリメント演算子
“`java
//X+1をしてから、YにXを代入
Y = ++X
//YにXを代入してから、X+1
Y = X++
//X-1をしてから、YにXを代入
Y = –X
//YにXを代入してから、X-1
Y = X–
“`

# 比較演算子
“`java
//X=Y
X == Y
//X≠Y
X != Y
//XがYより大きい
X > Y
//XがYより大きいか同じ
X >= Y
//XがYより小さい
X < Y //XがYより小さいか同じ X <= Y ``` # 論理演算子 ### 論理積 ```Java //XかつY X && Y ``` ### 論理和 ```Java //XもYも評価 X | Y //Xがtr

元記事を表示

インポートにおける”パッケージJava.hogeが存在しません”の対処法

# インポートにおける”パッケージJava.hogeが存在しません”の対処法

Visual Studio CodeでJavaのプログラムを作成している際に、以下のようなエラーが発生した。ただし、このエラーが発生しても実行することはできた。
その際の対処法についてまとめる。

対処法のみを知りたい方は、下まで飛ばしてください。
![java存在しません.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3509684/b805a0ac-4f29-9a79-f233-87774a8be02c.png)
## 目次
[1. 実行環境](#実行環境)
[2. やってみたこと](#やってみたこと)
[3. 実際に有効だった対処法](#実際に有効だった対処法)
[4. 終わりに](#終わりに)
[5. 参考資料](#参考資料)

## 実行環境
– MacOS Monterey 12.4
– Mac book Air 2022 m1
– Visual Studio Code 1.79.2
– java version

元記事を表示

SVFでPDFを出力する

## 概要

ウィングアーク社のSVFを使って、PDFの出力ができる。
簡単に説明すると、帳票サーバにCSVデータを送信すると、これをもとにPDFが作成されて実行したマシンに返ってくるというものである。
WEBサーバとして利用している場合などは、これをレスポンスとしてクライアントPCに返す形となる。
帳票サーバには、SVFデザイナーで作成したPDFの雛形となるxmlファイルを置いておく。
詳細は以下を参照してください。

https://cs.wingarc.com/manual/svf/svf10/ja/overview-of-universal-connect-x.html

## サンプルプログラム補足

https://repo.svfcloud.com/manual/release/ja/ucx/ucx92/ja/2814291.html

サンプルプログラムに記載の「生成される出力ファイル名」、「データファイル名」というのは、ファイル名と書いてあるが、実際には実行するクライアント(WEBサーバなど)のファイルパスを指定する必要があるので要注意。ここで少し迷った。

“`J

元記事を表示

【JavaGold】Threadクラス

## 概要
Javaプログラム内でスレッド[^1]を作成および制御するために使用されるクラスである。
[^1]:メソッドがスタック領域(メモリ領域)の出入りを何度も繰り返す一連の流れのこと。

`Thread`クラスを使用することで、以下のような操作が可能となる。 

1. スレッドの作成
2. スレッドの開始
3. スレッドの制御

#### スレッドの作成
`Thread`クラスを継承したクラスを定義することで、新しいスレッドを作成できる。スレッドを作成するには、継承したクラスで **`run`メソッド**をオーバーライドし、スレッドが実行する処理を記述する。

#### スレッドの開始
スレッドを開始するには、`Thread`クラスのインスタンスを作成し、**`start`メソッド**を呼び出す。
`start`メソッドは、スレッドを実行可能状態にし、`run`メソッドを実行する。

#### スレッドの制御
`Thread`クラスには、スレッドの実行を制御するためのメソッドが用意されている。
– `sleep`メソッド:スレッドを一定時間停止させることができる。
– `join

元記事を表示

OTHERカテゴリの最新記事