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

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

【JavaGold】synchronizedキーワード

## 概要
複数のスレッドで1つのインスタンスを共有することで発生する競合[^1]を解決(排他制御)するためのもの。
[^1]:ここでの「競合」は、あるスレッドが共有されているインスタンスのフィールドの値を読み出してから変化するまでの間に、別のスレッドが変更してしまうことをいう。

このキーワードは以下の2通りの使い方がある。
– メソッド宣言に使う場合
– メソッド内の一部の処理だけを対象に使う場合

#### メソッド宣言に使う場合
`synchronized`をメソッド宣言に使うと、そのメソッドは「`synchronized`メソッド」と呼ばれる。

##### 例
“`java
public class SynchronizedExample {
private int count = 0;

public synchronized void increment() {
count++;
}

public synchronized int getCount() {
return count;
}
}

元記事を表示

Javaでcsvファイルを読む

## 前置き
「最近暑すぎる…」

自宅で勉強しようとしても
(母)「電気代がもったいないっでしょ!」
と言われ、汗だらだらで勉強しる田舎者SEです。

今日はJava Goldの資格勉強もかねて
「csvファイルからデータを読みこんでコンソールに出力する」というのをやってみたいと思います。
使用するCSVデータは気象庁の過去の気象データです。
データを取得する部分から一緒にやってみりん!

##1 ①「気象庁のサイトでデータを取得するぞー!」
まずは、下記のリンクから気象庁のサイトに入ってください。

https://www.data.jma.go.jp/gmd/risk/obsdl/

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3484672/559e5740-b6ff-cda8-8aa5-80869b3ff018.png)

この画面で自分のお好みの条件を指定して「CSVファイルをダウンロード」ボタンを押したらCSVがダウンロードできます。

今回私は以下のように設定してみ

元記事を表示

【Java,SpringBoot】データの出力からデータベースへの格納まで

使用ツール
SpringBoot

codeダウンロード
https://drive.google.com/drive/folders/1h4nyNx4SeFfiDmiSB5xPv1Y1aTSYycML?usp=sharing

Page1
登録情報入力
![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2220659/ce6c0291-ca65-ade2-f139-e2c3c35bcfa0.png)

Page2
登録情報の登録
![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2220659/a033d3b9-cb5e-7887-c6e2-dd0deac72ac5.png)

Page3
データベースに出力
![5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2220659/559644cd-9a3c-a03b-87f1-2

元記事を表示

Javaのエンコーディングに関する設定について動作を確認してみた

# 概要
Javaのエンコーディングに関する設定について動作を確認してみました。以下のページを参考にしました。

Javaのエンコーディングに関する設定

https://www.javadrive.jp/start/encoding/

デフォルトエンコーディングを確認する

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

ソースファイルのエンコーディングを指定してコンパイルする

https://www.javadrive.jp/start/encoding/index2.html

実行環境のエンコーディングに合わせてプログラムを実行する

https://www.javadrive.jp/start/encoding/index4.html

# エンコーディングを確認
以下のファイルを作成しました。
“`JSample1_1.java
class JSample1_1{
public static void main(String[] args){
System.out.println(System.ge

元記事を表示

【JavaGold】CyclicBarrierクラス

## 概要
複数のスレッドが特定のポイントまで到達するのを待機できるようにする同期化支援機能を提供するクラスである。

スレッド間の同期を実現するための仕組みであり、主にマルチスレッドプログラミングで使用される。
バリアー[^1]に全てのスレッドが到達するとバリアーアクションと呼ばれる処理を実行する。
[^1]:複数のスレッドが待ち合わせる待機ポイントのこと。

`CyclicBarrier`は以下のように定義されている。

“`java
public CyclicBarrier(int parties, Runnable barrierAction)
“`

##### 引数について
– `parties`:バリアーで待機するスレッドの数(到達する必要があるスレッドの数)を指定する。
– `barrierAction`:全てのスレッドがバリアーに到達した時に実行されるタスク(`Runnable`)を指定する。この引数はオプションであり、必要な場合は`null`を指定することもできる。

## 使い方

1. `CyclicBarrier`オブジェクトを作成し、待機するスレッドの数

元記事を表示

【JavaGold】Callableインタフェース

## 概要
処理結果を戻したり必要に応じて例外をスローするマルチスレッドのタスクを定義するためのインタフェースである。

`Callable`インタフェースは以下のように定義されている。

“`java
@FunctionalInterface
public interface Callable {
V call() throws Exception;
}
“`

`Callable`インタフェースは`V`というジェネリック型を持つ`call()`メソッドのみ定義されている。
戻り値型は`Callable`のインスタンスを取得する際に指定する型パラメータとなる。

##### 例①:処理結果を取得

“`java
import java.util.concurrent.*;

public class CallableExample {

public static void main(String[] args) throws InterruptedException, ExecutionException {
ExecutorServic

元記事を表示

JavaでPDF を画像に変換する

## はじめに
PDFを画像に変換することにはいくつかの利点があります。まず、この変換によりPDFファイルの内容を異なるデバイスで表示することができます。また、変換された画像ファイルはウェブページに簡単に埋め込むことができ、インターネット上での表示や共有が容易です。さらに、画像ファイルを印刷したりアーカイブに保存したりすることで、ドキュメントを簡単に共有することができます。PDFリーダーに依存せずに利用できるのも大きなメリットです。重要なのは、PDFを画像に変換することで、コンテンツの完全性を保護する方法も提供されることです。次は変換のチュートリアルです。
## ツール
* IntelliJ IDEA 2018 (jdk 1.8.0)
* [Free Spire.PDF for Java](https://www.e-iceblue.com/Introduce/free-pdf-for-java.html)
ご注意ください。この無料版は最初の3ページのみの変換に対応しています。さらに多くのページを変換したい場合は、[商用版](https://www.e-iceblue.com/Intr

元記事を表示

java練習 単回帰分析

~~~ java
import java.util.List;
import java.util.ArrayList;
import java.lang.Math;

public class stats {
public static double sum(double[] x){
double sum = 0;
for(int i=0; i

元記事を表示

【make it easy】Rest API サービスを作りましょう

Rest APIを言われると大抵どう接続するかどう利用するかの話です。今回サービスを作ってみましょう。

# Restイベント
efwのrestイベントはwebイベントと同じくtomcat/WEB-INF/efw/eventフォルダに格納します。相違点は書き方が違うことです。
https://github.com/efwGrp/efw4.X/blob/master/help/api_restevent.md

# テストのイメージ
jspからサーバに送信します。jsイベントからRestAPIのイベントに転送して、RestAPIをDB処理して結果を戻します。token正しいかどうかの軽いセキュリティチェックを設けます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3476221/8429a5b1-0bbf-c6cd-a613-bf84dae6e967.png)

# JSP
“`jsp
<%@ page language="java" contentType="text/html; c

元記事を表示

【Java】ログイン画面を作りたい

# はじめに
JavaにはphpのLaravelのようにコマンドひとつでログイン機能のテンプレートを作成する機能はありません。ログイン機能を実装するだけならば、SpringBootのSpring Securityを作成するプロジェクトに導入することで、固定されたユーザー名とパスワードでのログイン機能が付与されますが、データベースと連携させるためにはいくつかの知識が必要になったので、chatGPT(GPT4)を活用してログイン機能を作成した際の記録を備忘録としてこの記事を残します

## 環境について
– Javaのバージョン: 17
– Spring Bootのバージョン: 2.5.4
– MacOS
– Eclipse(IDE)

chatGPTの知識は2021年9月までの情報に基づいているためその時点で最新のバージョン情報で作業を実行しております。

## Javaでログイン機能を実装する方法について
Javaのフレームワーク(Spring Boot)にはプロジェクトに導入するだけでプロジェクトにログイン機能を付与する`Spring Security`という機能が存在します。

元記事を表示

[Java] toString()

# toString()とは
* Javaのすべてのクラスが持っているメソッド
* 文字列表現を返すメソッド
* valueOf()とは違いnull値を返さない
* 参考 : [文字列と数値の交換](https://qiita.com/smartPG/items/40a2bdca0e1a2e294404)

# toString()メソッドの使い方
* 例として整数を文字列に変換
“`java:Integer.toString()
int num1 = 1010;
int num2 = 1111;
String str1 = Integer.toString(num1);
String str2 = Integer.toString(num2);
System.out.println(str1 + str2);
“`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2726212/cd9e5911-35f3-c1b0-9fb2-8ad370cf63bf.png)

# toString

元記事を表示

【自主制作】第一回Webアプリケーション開発日記

# はじめに

初めまして。takunと申します。
この記事では個人的なWebアプリケーションを開発したプロセスと困難だった点についてまとめていく内容となっております。

私は4月から某SES企業にIT未経験での転職をした初心者エンジニアです。間違ったことや不適切な内容となってしまう可能性もあることをご承知ください。また、助言など頂けると嬉しいです。
また、心の声ダダ漏れな日記となっていますので苦手な方はご注意ください。

# 目次

① Webアプリケーション制作に至った経緯
② 概要・設計について
③ 今後の必要な機能、知識について

# ①Webアプリケーション制作に至った経緯

2つ理由があります。
 
1つ目は研修中に制作したものとは全く違うWebアプリを作りたかった。

> 私:入力フォーム、ショッピングサイト、クイズゲームを作るのもいいけど似たようなものばっかりでなんかなあー。オリジナリティのあるアプリ作ってみたいな。
> 私:エンジニアとして人の役に立つものを作れないかな。何か困ってることある?
> 隊長(彼女):あーそれなら作ってほしいのあるよ!

2つ目は案

元記事を表示

【JavaGold】Futureインタフェース

## 概要
新しく生成したスレッドの外部操作を可能とするインタフェースである。
非同期のタスクを実行し、その結果を取得やキャンセルするための機能を提供する。

#### 主なメソッド

– `V get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException`
:タスクの実行結果を取得する。

:::note warn
指定されたタイムアウト時間内に結果が利用できない場合は`TimeoutException`がスローされる。
:::

##### 例

“`java
import java.util.concurrent.*;

public class FutureExample {

public static void main(String[] args) throws InterruptedException, ExecutionException {
ExecutorService executorService =

元記事を表示

[Spring Data JPA] Specificationを利用して動的なクエリ生成を実現する

# はじめに

Spring Data JPAのSpecificationを利用した実装例を作りました。どのように利用するか、どのあたりが便利かなどを整理したいと思います。結論としては、他のクエリの表現方法に対して柔軟性が高い点やプログラマティックに書ける点がSpecificationの特徴だと考えています。この特徴は検索条件が複雑になりがちな画面に応えるAPIを作る際に有用だと考えています。

なお、頭からリファレンスを読んで理解しているというよりプロジェクトで使いながら使い方を覚えているところもあり、誤った理解をしている箇所などあるかもしれません。

# 作ったもの

https://github.com/Showichiro/jpa-specification-example

# Spring Data JPAにおいてよく見るクエリの実装

– CrudRepository/ListCrudRepository経由での実装
単純なCRUD操作であれば、これらのインターフェースを継承することでCRUD機能を実現できます。Qiitaの記事などではJpaRepositoryを継承

元記事を表示

軽い気持ちでJavaが触れる環境を提供したい

## この記事を読んで得られるもの
VScodeのエディタを使って、とりあえず動くJavaのDocker環境

## 対象者
– Java触ってみたいけど、環境構築めんどくさいなって人
– ローカル環境を汚したくない人
– IDEを入れるのが嫌な人

## ディレクトリ構成
“`
– java
|- Dockerfile
|- HelloWorld.java

“`

## 環境構築

1. Dockerfileを作成
“`Dockerfile
FROM openjdk:11-jdk
WORKDIR /workspace
“`
1. javaのファイルを作成
“`HelloWorld.java
public class HelloWorld {
public static void main(String[] args) {
System.out.println(“Hello, World!”);
}
}
“`
1. イメージをビルド
“`b

元記事を表示

SQL取得時にネスト化されたリストオブジェクトに同時にマッピングする方法

# 0.はじめに
ORマッパーとしてMybatisはメジャーと思いますが、これまであまり有効な使い方をしてこなかった方もいるかもしれません。
Java側から変数をバインドさせるとか、受け取ったDB取得結果をオブジェクトにマッピングするとか、if文で条件を可変にするとか。(私はその程度でした。。)
実は、ORマッパーはもっと複雑なこともマッピングしてくれて、その分楽になるんだよというような内容のご紹介になります。

## 1.概要
Model型のListかつ、Modelの中にもList型が内包されているようなリストの中にリストがネストされているオブジェクトの場合にDBから取得したデータを設定していく際には取得結果のForループに加えて、内包されているList型も設定していくためのForループが必要になる為、二重ループさせる必要があります。

もちろんこの実装でも誤りではありませんが、実装が増えることで可読性が下がったり、テストする際の確認ケースが増えたりコードが増えることによるバグのリスクがあがる可能性があるため、減らせるならば極力実装をシンプルにするほうが好ましいと思われます。

My

元記事を表示

【自作アプリ 第三期】

今回も前回の 【自作アプリ 第二期】 に引き続き画面のキャプチャを元に実装機能の解説をしていこうと思います。加えてこれからの方針も説明できればと思います。

#### 集計画面
【収支管理画面からの遷移を踏まえて説明】
![収支確認画面➀ 第三期.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2918178/29186660-ce08-6ac5-1d5a-ba2d0691cf8d.png)

![収支確認画面➁ 第三期.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2918178/70a47f92-6e74-667a-8ae1-117e7610bcef.png)
↑「ボタン」列の「集計」ボタンを押下する

##### ➀不動産の「集計」ボタンを押下した場合
![集計画面「不動産」 第三期.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29

元記事を表示

JavaでWord文書を画像に変換

Word文書を画像に変換すると、Word文書の書式やレイアウトが保持されるため、さまざまなデバイスで表示でき、文書の体裁も変わりません。 これにより、Word文書の閲覧や共有が容易になるほか、ポスターの作成、販促資料の作成、スライドショーの作成など、より多くのシーンで文書を活用できるようになります。 また、Word文書を画像に変換すると編集が困難になるため、文書の内容をある程度保護することもできます。 今回は、無料の[Free Spire.Doc for Java](https://jp.e-iceblue.com/introduce/free-spire-doc-for-java.html)を使って、**Word文書の各ページを画像に変換**する方法を紹介します。

– **[Word文書をPNG画像に変換する](#word文書をpng画像に変換する)**

### 【依存関係の追加】
この記事の方法は、無料のWord文書処理Java API Free Spire.Doc for Javaが必要です。このAPIは、[公式サイト](https://jp.e-iceblue.com/do

元記事を表示

日本語トランスコンパイラ言語 Re:Mind(リマインド)の試作バージョンを日本語ロジック仕様記述言語 Re:Mindで内部設計する(ターゲット言語Java)

# はじめに
2023年の1月下旬よりQitta様へ参加させていただき、[自作言語 Re:Mind(リマインド)の企画趣旨をQitta内の記事](https://qiita.com/mylifewithviolin/items/9d58db8a101807c19bde)でご説明させていただいております。まだ実装がなにもないので、そろそろ試作に着手しようかと考えております。本記事はその試作品の内部設計情報で、ターゲット言語をJavaとしています。

## この記事内容の作業目的
試作にあたって内部構想を、[日本語ロジック仕様記述言語 Re:Mind](https://qiita.com/mylifewithviolin/items/52f806777e6ea031de94)で記述しておきます。本試作範囲は策定仕様のごくごく一部です。ターゲット言語は一部のみ対応、言語の対応ソース構文も超限定的です。

## この記事内容の保証
※この記事には仕様的な情報が含まれます。自作言語はまだ設計開発中のため、発案者による実装は存在しません。本記事に開示された仕様は次バージョンの仕様においては予告な

元記事を表示

Java-StreamAPI-黒本で間違えた問題を理解する

### 前置き
JavaGold資格取得のため、黒本4章でStreamAPIで主が間違えた問題を勉強していきます。
今回は自分のためのほぼメモなので読めたもんじゃないです。

> 問 OptionalクラスのifPresentOrElseTestメソッドに渡す引数の型の組み合わせとして正しいものを選べ

「型の組み合わせ?知るか!」
「ifPresentOrElseメソッドじゃなくて?ifPresentOrElse”Test”メソッド!?」

…解説見たら一応納得できた
以下サンプルコード。

“`java
import java.util.Optional;

public class ifPresentOrElseTest {
public static void main(String[] args) {
Optional sample = Optional.empty();
sample.ifPresentOrElse(
(str) -> System.out.println(str), //

元記事を表示

OTHERカテゴリの最新記事