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

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

ABC323A~Fの解答[Java]

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

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

## A – Weak Beats
問題文は[こちら](https://atcoder.jp/contests/abc323/tasks/abc323_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 SimpleWriter( System.out, aut

元記事を表示

Javaで「キーボードから入力された値を取得する」の動作を確認してみた

# 概要

Javaで「キーボードから入力された値を取得する」の動作を確認してみました。以下のページを参考にしました。

https://www.javadrive.jp/start/scanner/index1.html

# 実装

以下のファイルを作成しました。
“`JSample1_4.java
import java.util.Scanner;

class JSample1_4{
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);

System.out.println(“趣味を入力してください。”);

String hobby = scanner.nextLine();
String[] tokens = hobby.split(“\\s+”);
for (int i = 0 ; i < tokens.length; i++){ System.out.println("[" + i + "]" + to

元記事を表示

【実務未経験】入社5ヵ月でJavaSilverSE11合格した話

# はじめに
先日Java Silver SE11を受験し、無事合格することができました!(正答率82%)
今後、受験する方に少しでも役に立てればと思い、備忘録も兼ねて書きます。

# 合格するための結論(お急ぎの方向け)
筆者のことなんて興味ねえ!早く受かる秘訣を教えてくれ!という方へ・・・
JavaSilverに受かる方法は・・・

**黒本を85%以上取れるまでやり込むことです**

そして、右上の×ボタンを押して、PCを閉じて、「黒本、大事オブ大事」「黒本、大事オブ大事」「黒本、大事オブ大事」と唱えながら、近くの書店で黒本を購入して、黒本をやり込んでください!
合格を祈っています!

受験まで時間に余裕がありますという方は、そのままお読みください。

# 受験した目的
・未経験からエンジニアに転職し、IT関係の資格が何もなく、現場配属前に何らかの資格を取って、スキルを証明したいなと思ったから。
・会社の資格支援制度があり、合格すれば受験料が支給されるため。

# 学習開始時の筆者の状態
業界未経験からエンジニアになって3か

元記事を表示

Javaの型について

## はじめに
Javaの記事は普段書かないのですが、会社のメンバー育成用に簡単にまとめていたので、せっかくなので記事として共有させていただこうと思います。
あくまで概略的な説明です。

## プリミティブ型
値を保持するのみの型
メソッドはないです
メモリ上に直接その値が保持されます(ByValue:値渡し)
継承はできません
“`
int i = 10;
i.toString(); というものはない
“`

## オブジェクト型
java.lang.Objectを継承したクラス
メモリ上に直接その値が保持されるのではなく、値を保持したメモリアドレスへの参照値が格納されます(ByReference:参照渡し)
ただ他の言語とちょっと違いJavaは参照渡しではなく参照の値渡しと呼ばれるややこしい動作をします
そのためあまり複雑に考えると訳が分からなくなるので注意

“`java
/**
* intはプリミティブ型ですが
* Stringはオブジェクト型です
* ここをしっかりと分かっていれば大丈夫!!
*/
public class StringSamples {

元記事を表示

GradleビルドコマンドでJavaプロジェクトのビルドを効率化しよう

GradleはJavaおよび他の多くのプログラミング言語のプロジェクトのビルド、テスト、デプロイメントを自動化するためのパワフルなビルドツールです。この記事では、Gradleの主要なビルドコマンドについて解説します。

## 目次
1. [assemble](#assemble)
2. [bootBuildImage](#bootBuildImage)
3. [bootBuildInfo](#bootBuildInfo)
4. [bootjar](#bootjar)
5. [bootJarMainClassName](#bootJarMainClassName)
6. [bootRunMainClassName](#bootRunMainClassName)
7. [build](#build)
8. [buildDependents](#buildDependents)
9. [buildNeeded](#buildNeeded)
10. [classes](#classes)
11. [clean](#clean)
12. [jar](#jar)
13. [testClasses]

元記事を表示

EclipseのMavenプロジェクトで、Javaのバージョンを設定したい

EclipseのMavenプロジェクトを新規作成すると、Javaのバージョンが5になっています。これを任意のバージョンに設定するにはどうすればよいでしょうか?

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/105859/48539341-0930-2eab-86ff-59f8906da4d2.png)

① pom.xmlのmaven.compiler.sourceとmaven.compiler.sourceを設定します (以下はJava17を指定する例)

“`xml:pom.xml 17
17 UTF-8

元記事を表示

【make it easy】efwのwebアプリのログイン制御&権限制御

# はじまり
webアプリに、ログイン有無とユーザ権限で画面操作可否を制御するのはよくあります。社内のwebアプリの場合、ユーザはよい人ばかりですから、制御の厳密さにあまり気にしなくてよいですが、社外向けあるいはインタネット向けの場合、気を付けたほうがいいです。権限なしのweb画面をURL欄で直接打ち込むこと、または権限なしのイベントをデベロッパーツールで直接呼び出すことなど、軽いハッキングのリスクはインタネットにいつも存在しています。

efwは、プロパティ設定の方式で、上記リスクを防ぐこと実現しております。今回の記事をこれを紹介させていただきます。

# スケールトンサンプル
スケールトンサンプルは、ログイン画面・メニュー画面・マスタ管理画面で構成します。マスタ管理画面は、ログインユーザの権限により操作可否を制御したいです。

## 画面イメージ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3476221/8c4522a5-6725-3670-8b16-3235f4986dc2.p

元記事を表示

Javaで「StringBuilderオブジェクトを初期化する」の動作を確認してみた

# 概要

Javaで「StringBuilderオブジェクトを初期化する」の動作を確認してみました。以下のページを参考にしました。

https://www.javadrive.jp/start/stringbuilder/index10.html

# 実装

以下のファイルを作成しました。
“`JSample10_3.java
class JSample10_3{
public static void main(String[] args){
StringBuilder sb = new StringBuilder();

for (int i = 0; i < 5; i++){ for (int j = 0; j < 5; j++){ sb.append((int)Math.ceil(Math.random() * 9)); } System.out.println(sb.toString()); sb.delete(0, sb.length()); } } } ``` 以下の

元記事を表示

よく使う変数名まとめ

一般的な変数名

1. **i, j, k**: インデックス変数。通常、ループ内で使用されます。
例: `for (int i = 0; i < array.length; i++)` 2. **count, total**: カウンター変数や合計を格納する変数。 3. **result**: 関数の結果を格納する変数。 4. **value**: 値を一時的に格納する変数。通常、一時的な計算に使用されます。 5. **input, output**: 入力データと出力データを表す変数。 6. **message, text**: メッセージやテキストを格納する変数。 7. **error**: エラーメッセージやエラー情報を格納する変数。 8. **flag, isXXX**: ブール値を格納する変数。条件を表現するのに使用されます。 9. **min, max**: 最小値と最大値を格納する変数。 10. **user, username, password**: ユーザー情報を表す変数。 11. **file, filename**:

元記事を表示

Javaで「格納されている文字列の並びを逆にする」の動作を確認してみた

# 概要

Javaで「格納されている文字列の並びを逆にする」の動作を確認してみました。以下のページを参考にしました。

https://www.javadrive.jp/start/stringbuilder/index7.html

# 実装

以下のファイルを作成しました。
“`JSample7_1.java
class JSample7_1{
public static void main(String[] args){
StringBuilder sb = new StringBuilder();

sb.append(“ABCDEFG”);
System.out.println(sb.toString());

sb.reverse();
System.out.println(sb.toString());

sb.reverse();
System.out.println(sb.toString());
}
}
“`

以下のコマンドを実行しました。
“`
$ javac JSample7_1.java

元記事を表示

Python と Java と Go と Node.js と PHP と Ruby のサポート状況について (2023.10)

オープンソース系のプログラム言語のセキュリティサポートの期限をまとめました。他の方の参考になれば幸いです。

# Python のサポート状況

サポートが有効な Python のバージョンは **Python 3.8, 3.9, 3.10, 3.11, 3.12** です。
3.8 は1年以内にサポート終了の予定です。

|バージョン系列|最新バージョン|リリース日|バグ修正の対応期間|セキュリティ修正の対応期間|
|—|—|—|—|—|
|**Python 3.12**|3.12.0|[2023年10月2日](https://peps.python.org/pep-0693/)|[**サポート内**](https://peps.python.org/pep-0693/#bugfix-releases)|[**2028年10月**](https://peps.python.org/pep-0693/#lifespan)|
|**Python 3.11**|3.11.6|[2022年10月24日](https://peps.python.org/pep-0664/#

元記事を表示

【Mockito】モック対象にfinal修飾子があるとモックにならない場合がある

### 【概要】
モック対象にfinal修飾子があるとモックにならない場合があります。
具体的なコードで説明していきます。

### 【環境】
Java 11
JUnit 5.10.0
Mockito 5.5.0

### 【コード】

https://github.com/nobu12/mock-final-exception

下記コードは上記GitHubにアップロードしているコードと同じです。
本コードでのモック対象はHogeクラスのhugaフィールドとなります。

“`java:Hoge.java
package org.example;

public class Hoge {
private Huga huga;
// final修飾子を付けるとテスト失敗する
// private final Huga huga;
private final Piyo piyo;

public Hoge(final Huga huga, final Piyo piyo) {
this.huga = huga;
thi

元記事を表示

springでファイルをstringプロパティとして読み込む

プロパティじゃなくて単に変数読み込みだけな方法も混じってはいる。

“`@Value“`で“`file:..“`や“`classpath:..“`を指定し“`Resource“`としてinjectionしてあとは好みの方法で読み込む。以下では“`Files.readString“`を使用しているがここは状況に応じた方法で良い。

“`java
import java.io.IOException;
import java.nio.file.Files;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.Resource;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.GetMapping;

@Service
public class FileToStringService {
@

元記事を表示

Javaで「指定範囲の部分文字列を削除する」の動作を確認してみた

# 概要

Javaで「指定範囲の部分文字列を削除する」の動作を確認してみました。以下のページを参考にしました。

https://www.javadrive.jp/start/stringbuilder/index5.html

# 実装

以下のファイルを作成しました。
“`JSample5_1.java
class JSample5_1{
public static void main(String[] args){
StringBuilder sb = new StringBuilder();

sb.append(“ABCdefGHI”);
System.out.println(sb.toString());

sb.delete(3, 6);
System.out.println(sb.toString());

sb.delete(0, sb.length());
System.out.println(sb.toString());
}
}
“`

以下のコマンドを実行しました。
“`
$ javac

元記事を表示

[Azure] OpenAPI Serviceの機能/実装

# AzureのOpenAI Serviceについて

AzureのOpenAI Serviceは、Microsoft Azureクラウドプラットフォームの一部として提供されるAI(人工知能)モデルとサービスの統合である。OpenAI Serviceを使用することで、開発者は自然言語処理(NLP)や会話AIなど、さまざまなタスクを処理するための強力なツールとリソースにアクセスできます。以下では、OpenAI Serviceの概要と主な機能について詳細に説明する。

## 概要

AzureのOpenAI Serviceは、AIモデルやNLP機能を提供するためのクラウドベースのサービス。このサービスは、開発者が高度な自然言語処理タスクを簡単に実現できるように設計されており、スケーラビリティと柔軟性を備えている。また、OpenAI Serviceは、学習済みモデルを使用して、テキスト生成、文章分類、翻訳、質問応答、文章要約などのタスクを実行することができる。

## 機能

OpenAI Serviceには、以下の主な機能がある。

1. テキスト生成(Text Generation):

元記事を表示

デザインパターン Observerパターン

# Observerパターン
変化するデータや状態に関心を持つオブザーバ(観察者:**Observer**)と、その変化を通知するサブジェクト(観察対象:**Subject**)から構成される。

一対多の依存関係を定義し、あるオブジェクト(サブジェクト)の状態が変化すると、それに依存する複数の他のオブジェクト(オブザーバ)に自動的に通知される。

## サブジェクト(Subject)
観察(Observe)の対象となる情報。

**状態が変化する**。

観察対象となるデータの唯一の所持者であり、観察対象に何らかの変更があった場合、オブザーバに対してその変更を**通知する**。

また、オブザーバを管理する(オブザーバの新規登録や、オブザーバの解除)役割も併せ持つ。

サブジェクトがオブザーバについて知っているのは、`Observer`インターフェースを実装しているということだけ。通知した情報がどのように利用されるのかなどは一切知らない(**疎結合の関係**)。

<<学習memo:発行者(Publisher)が管理している対象をサブジェクト(Subject)と言っているのかと思っ

元記事を表示

スッキリわかるJava入門 実践編 第3版 まとめ – part9 -データベースアクセス

# はじめに

こんにちは ◤●ㅅ●◥ノ

今回はデータベースアクセスについて学びました!
## 第9章 データベースアクセス
### 1.データベースとは
本格的なプログラムの保存先
データベースの実体
→常時稼働してデータの格納や検索に関する要求を待ち受けるプログラム
 →このプログラムのことを __データベース管理システム__ と呼ばれている

特にデータを複数の表の形で整理して保存、管理する
→ __リレーショナルデータベース(RDB)__

JavaからRDBに対してデータの読み込みや書き込みを行うためには __SQL__ 
というデータベースを操作する専用の言語で書かれた命令をRDBに送る

:star: データベースを使うメリット
・データベースを使うと、複雑なデータ検索や書き込みも簡単に行える
・Javaプログラムの中で複雑なデータ処理を記述する必要がない

### 2.データベースの基本操作
データベースはデータを管理するために複数の表を内部に保持されている
表は列と行で構成され、1つの行が1件のデータに相当し、列はデータの要素に相当する

#### 4つの基本操作

元記事を表示

スッキリわかるJava入門 実践編 第3版 まとめ – part8 -ネットワークアクセス

# はじめに
こんにちは ◤●ㅅ●◥ノ

今回はネットワークアクセスについて学びました!
## 第8章 ネットワークアクセス
### 1.ネットワークAPIの全体像
Javaではネットワーク通信を簡単に実現するためのクラス群
→ __java.netパッケージ__

__低水準API__
細かい制御が可能だが、複雑で手間がかかる。本格的に利用
__高水準API__
簡単に使えるが細かいことができない。手軽に利用。

普段見ているWebページ
→ __HTML__ という専用の言葉で記述されたテキスト情報

java.net.URLクラスを使う
→Javaプログラムを介してインターネット上にあるHTMLや画像ファイルを簡単に取得できる

:star: java.net.URLクラスの利用
アクセスしたい情報のURLを元に、java.net.URLクラスを用いて、
インターネット上のWebサイトのデータを取得できる

### 2.Socketを用いた低水準アクセス
低水準APIの理解のためにはネトワークの基礎知識が必要

コンピュータの通信には定められた通信手順を踏む必要がある
あらか

元記事を表示

デザインパターン Singletonパターン

# Singletonパターン
インスタンスが1つしか存在しない唯一無二のオブジェクト。特定の条件下でインスタンス化が行われ、その後は再利用される。

クラス内にプライベートなコンストラクタを持ち、インスタンスを取得するための静的(static)メソッドを提供する。

アプリケーションの設定や、構造上複数存在してはいけない概念を扱う際に利用する。

## 基本型
“`java:Java
public class Singleton {
private static Singleton instance;

private Singleton() {}

public static Singleton getInstance(){
if (instance == null){
return new Singleton();
}

return instance;
}
}
“`

## 最適形
Javaのenum型の特性を利用してシングルトンを実現することができる。
“`java:

元記事を表示

java Apach AOI でExcelのシートを部分一致で取得する

“`java
import org.apache.poi.ss.usermodel.*;

public class PartialSheetDataExtractor {

public static void main(String[] args) {
// Excelファイルのパスを指定してワークブックを開く
try (Workbook workbook = WorkbookFactory.create(new FileInputStream(“example.xlsx”))) {
// 部分一致のシート名を探し、シートを取得
for (int i = 0; i < workbook.getNumberOfSheets(); i++) { Sheet sheet = workbook.getSheetAt(i); String sheetName = sheet.getSheetName();

元記事を表示

OTHERカテゴリの最新記事