JAVA関連のことを調べてみた2022年04月21日

JAVA関連のことを調べてみた2022年04月21日

例外エラーハンドリングについての解釈まとめ【Java】【Spring Boot】

Java・SpringBootを用いたAPI開発をスタート。しかし例外処理の実装する中で、様々な疑問にぶつかる日々、、(元々独学エンジニアだったので例外処理の理解が浅すぎた)
その都度調べて解釈してを繰り返し、分かった気になってきたので、それをまとめてみます。
今回は例外処理の解釈に焦点を当てているため、実装方法については触れません。

## 例外処理をする意味
まずは大前提として、なぜ例外処理をするのかについて。
### 利用者視点
– 例外的状況が起きた時専用の処理を設けることで、プログラムが強制終了するのを避けられる
– 例えば、try-catch文を用いて、問題が起きている箇所だけプログラムを実行せずに飛ばしてあげる
– その上で、利用者に「ここの操作が間違っているよ!」と知らせてあげることができる
– 例えば、「送信するファイルの形式が間違っています!」と画面に表示させるなど
### 開発者視点
– どこで問題が発生したかを特定できる(=バグ修正が容易になる)
– メソッドに例外処理の記述があることで、

元記事を表示

【Java初心者】PDFをA4サイズで自動印刷する

# 紙への印刷はビジネスではよく使う

今どきのアプリが行う出力は、画面への表示や、PDF出力などが中心ですが、ビジネスの現場では、まだメール送信や紙への印刷が多くなっています。

しかし、PDFをJavaプログラムから印刷すると、なぜかLetterサイズ(letter 8×11)となり、プリンター側で「そんなサイズの紙はないよ」エラーになってしまいました。

Acrobatなどで開いてから、「用紙に合わせてリサイズ」して印刷すれば、問題ないのですが、できれば、自動でプリンターに出せるようにしたい。

それを実現するために試行錯誤しました。PDFBoxライブラリー( https://pdfbox.apache.org/ )に依存しています。

“`java
package pdfPrint;

import java.awt.print.Book;
import java.awt.print.PageFormat;
import java.awt.print.Paper;
import java.awt.print.PrinterException;
import java.awt.

元記事を表示

Dockerで動くLibertyでテストしながらEclipseで開発

# 目的

ローカルにいろいろなバージョンのLibertyを導入したくないので、LibertyはDockerで動かしながらEclipseで開発をしたい。その環境を作る方法を書きます。

# DockerでLibertyを起動

Dockerやgitのインストールは省略します。
PATHにdocker コマンドが含まれているかを確認します。EclipseからPATH指定なく使えるようにします。
“`cmd
C:\Users\k_oi>echo %PATH%
C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Program Files\Docker\Docker\resources\bin;C:\ProgramData\DockerDesktop\version-bin;

C:\Users\k_oi>dir “c:\Program Files\Docker\Docker\resources\bin\docker.exe
ドライブ

元記事を表示

SpringBootでRedisのクラスターに対応する

# TL;DR
– Redisへのセッション情報はapplication.yml に `spring.session.store-type: redis`、`spring.redis.cluster.node: 接続先`を設定するのみ
– 上記のみの場合、クラスターのスケールアップ・スケールアウトに対応できない
– スケールアップ・スケールアウトに対応するためにはapplication.ymlに`spring.redis.lettuce.cluster.refresh.apaptive: true` の設定が必要

# 背景・モチベーション
EC2 複数台で稼働しているSpringBootアプリケーションのセッションを各EC2上のTomcatで管理している。
各ユーザのセッション保持はALBのスティッキーセッションをONにして維持している。
頻回のデプロイのタイミングで各EC2がALBから切り離されるため、デプロイごとに全ユーザのセッションが途切れてしまう。
セッションを個別KVS(Redis)化することでユーザの利便性向上を図る

# アーキテクト
※ あとで図を書く
– AWS上

元記事を表示

【オラクルの西川です。第2報】GraalVM入門編(プレゼン資料32枚)資料を共有します。

こんばんは!

先程の第1報で、GraalVMの詳細資料をアップしたのですが、「細かい事を読む前に、ざっくり概略を知りたい。」というご要望を頂きました。
ありがとうございます。
下記に、私がお客様にいつもプレゼンしている、「GraalVM EE入門編」のパワポ資料を共有いたします。
ご不明な点がございましたら、お気軽にコンタクトください。

尚、この資料を使った、ライブストリーミングは、毎日、西川のLinkedInで30分で開催しております。
よろしかったら、そちらもご利用ください。
https://www.linkedin.com/in/yojiro-nishikawa-22a268141/

西川

![日本語_GraalVM資料_apr2022_page-0001.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2634867/9e6ba6b1-5064-5ba0-e420-8fb48d8391f4.jpeg)
![日本語_GraalVM資料_apr2022_page-0002.jpg](https

元記事を表示

EntityをDTOに変換する方法【Java】【Spring Boot】

実装メモです。参考になれば幸いです。
## EntityをDTOに変換
### DTOクラス
DTOクラス内にofメソッドを定義。
“`java:DTO.java
public static DTO of(Entity entity) {
DTO dto = new DTO();
dto.setId(entity.getId());
dto.setTitle(entity.getTitle());
dto.setDescription(entity.getDescription());
dto.setCreateTime(entity.getCreateTime());
dto.setUpdateTime(entity.getUpdateTime());
return dto;
}
“`
### Serviceクラス
あとはofメソッドの引数にEntityをセットすれば、DTOに変換できます。
※私はServiceクラスでDTO変換の処理をしていますが、Controllerクラスで実装していただいても構いません。(どこで処理するかは設計思想によるってやつ

元記事を表示

Effective Java 第3版まとめ(項目6)

# 項目6.不必要なオブジェクトの生成を避ける

## 書かれている内容

* “`String s = new String(“bikini”);“`ではなく、“`String s = “bikini”;“`
* 同じ文字列リテラルは同一仮想マシン上で再利用することが保証されている
* コンストラクタではなくstaticファクトリメソッドを使うことで、その両方を提供している不変クラスに対しては不必要なオブジェクトの生成をたいていは避けられる
* “`new Boolean(String)“`ではなく“`Boolean.valueOf(String)“`
* 生成が「高くつくオブジェクト」を繰り返し必要とするなら、再利用するためにキャッシュすることが勧められる
* “`String.matches“`は簡単な方法だが、パフォーマンスが重要な状況で繰り返し使うことには適していない
* “`Pattern.compile“`し、“`Pattern.matcher.matches“`することでパフォーマンスを改善できる
* 遅延初期化で不必要な初期化を取り除けるが

元記事を表示

【Oracleの西川です。第1報】GraalVMを御紹介します。

皆さま、

初めまして。
オラクルで、Javaの事業開発を担当している西川と申します。
Oracle Javaには多彩な機能がございますが、当面は、次世代Java開発基盤のGraal VMについて、Qiitaさんのプラットフォームで、ご紹介をさせて頂こうと思います。
よろしくお願いします。

本日は、初めてなので、下記にて、全体資料/技術資料/Use Case/ハンドオンセミナーのご案内等のリンク情報を共有しますね。

ご不明な点は、LinkedInのメッセージ機能でご照会ください。
https://www.linkedin.com/in/yojiro-nishikawa-22a268141/

西川

================
■ 全体資料
https://www.oracle.com/jp/java/graalvm/ (日本語)
https://www.oracle.com/java/graalvm/ (英語)

■ Technical Info.
Full Doc : https://docs.oracle.com/en/graalvm/enterprise/22/doc

元記事を表示

Java用語集

## この記事の目的

Javaを業務で使い始めた駆け出しエンジニアが、学習のアウトプットのために書きました。

勉強している際に、何かを調べても、その調べた際に出てくる用語がわからず、さらに調べていくと結局何を目的としていたのか忘れてしまうということが頻発したり、結局調べてもよくわからないという状況が続いたので、用語集があれば良いなと思い、書きました。

結構間違っている認識もあるかとは思うので、まさかりバンバン募集しているので、コメントで訂正や修正お待ちしております。

私の勉強にもなるので、ためになります。

## どんな人が書いたか
Javaを業務で使い始めて3ヶ月くらいの駆け出しエンジニアです。
Java Silverを取得するために現在勉強中。

# java用語集

# オペランド

a+b=cがあったとして、

この式をオペランドという

+,=を演算子という

# リテラル

オペランドの中でも具体的な値5,10とかをリテラルという。

# キャスト演算子

むりやり型返還すること(int)

“`java
int age = (int)3.2;
//3
“`

元記事を表示

JavaでHTTPリクエストのPOSTメソッドでAPI呼び出しサンプル

# HTTPリクエストにてAPI呼び出し
OAuth認証などで取得したアクセストークンを用いて、
外部APIに対してJSONパラメータをリクエストする処理のサンプル

### パラメータ説明
` setTimeout() :タイムアウト値をセットするメソッド`
` “api.endpoint.co.jp :外部連携APIのエンドポインt”`
` accessToken :アクセストークン`

### 処理
“`
// URLオブジェクト作成
URL url =new URL(API_PATH);
//httpsコネクターをオープン
HttpURLConnection con = (HttpURLConnection) url.openConnection();
// タイムアウト時間を設定
con.setConnectTimeout(setTimeout());
// メソッドをPOSTに設定
con.setDoOutput(true);
con.setDoInput(true);
con.setRequestMethod(“POST”);
// リクエストヘッダーの追加
con.s

元記事を表示

JavaでJSONをStringに変換

# JsonをStringに変換
“`
JSONObject json = new JSONObject(data);
jsonParam = json.toString();

“`

元記事を表示

JavaでString型の日付や日時の比較をする

# JavaでString型の日付や日時の比較をする

例えば以下のような2つのString型で表された日付を考える

“`
String date1 = “2022-1-1”;
String date2 = “2022-1-5”;
“`

## String型の日付の比較

### ①SimpleDateFormatのオブジェクトを生成
“`
SimpleDateFormat sdFormat = new SimpleDateFormat(“yyyy-MM-dd”);
“`
### ②比較する
“`
// date1がdate2よりまえの場合
sdFormat.parse(date1).compareTo(sdFormat.parse(date2)) == -1

// date1がdate2よりあとの場合
sdFormat.parse(date1).compareTo(sdFormat.parse(date2)) == 1

// date1がdate2と同じ日の場合
sdFormat.parse(date1).compareTo(sdFormat.parse(date2

元記事を表示

auカブコム証券のkabuステーションREST APIで自前のリピート注文を作ってみる(注文約定調査編)

# はじめに

前記事
1. [auカブコム証券のkabuステーションREST APIをcurlで叩く](https://qiita.com/hiuchida/items/fcdd3d6ff921b386a37e)
2. [auカブコム証券のkabuステーションREST APIをjava(generated by the swagger code generator)で叩く](https://qiita.com/hiuchida/items/73b7fc846d4c9501ef2f)
3. [auカブコム証券のkabuステーションREST APIの残高照会をcurlとjavaで叩く](https://qiita.com/hiuchida/items/9eb5336755a3d1b1a3df)
4. [auカブコム証券のkabuステーションREST APIの残高照会から先物OPのdeltaを計算する](https://qiita.com/hiuchida/items/6e0d8d5114192bec1632)
5. [auカブコム証券のkabuステーションREST APIのテスト用モック

元記事を表示

Java + Jetty + Maven で簡単に Web アプリケーションを開発する (2022)

# 概要

JavaでWebアプリケーションをちょっと作ってみたいというときに、サーバーのインストールや設定も不要な方法です。高度なWebアプリケーションフレームワークは利用せず、とりあえずJSPでの表示をするだけです。

# 前提

Maven 実行環境がセットアップされている。
IDEとしてEclipseを利用
Windows 環境

# Maven Project の作成

Eclipse の [File] – [New] – [Project] から [Maven Project] を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110265/e1965629-2ef0-0e1f-80b8-0f6c717894a1.png)

[Create a simple project] を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110265/eae

元記事を表示

Java: WebSphereトラブルシューティング三種の神器について(HeapAnalyzer, TMDA, PMAT)

IBM WebSphere(IBM Java)には、Javaのトラブルシューティングに利用できる、いくつかのツールがあります。本記事では、それらのツールを3つ紹介します。

# HeapAnalyzer

ヒープダンプを解析し、OutOfMemoryErrorなどのJavaメモリ上の問題を調査するためのツールです。ヒープダンプの解析結果をグラフィカルに表示することができ、ヒープを占めているオブジェクトを特定することなどができます。

https://www.ibm.com/support/pages/ibm-heapanalyzer

ただし、上記のURLに記載されている通り、現在は新機能の開発を終了してしまっているようです。このため、Java 8以降の実行環境では、現在も開発が続けられているEclipse Memory Analyzer Toolを利用していくべきかもしれません。

https://www.ibm.com/support/pages/eclipse-memory-analyzer-tool-dtfj-and-ibm-extensions

# Thread and M

元記事を表示

SpringBoot得意な方教えてください! BeanNotOfRequiredTypeExceptionが発生したときの原因と対処法。

SpringBootのJUnitで『BeanNotOfRequiredTypeException』が発生しました。
結果的にはテストクラスに@ContextConfigurationを追加したら発生しなくなったんですが・・・

“`
@ContextConfiguration
“`
詳しい経緯や僕が行なった対策は記事でまとめています。

真因が特定できていないので、SpringBootのDIにすごく詳しい方、ご教示頂けると嬉しいです!

## 記事はこちらに移管しました

【SpringBoot】BeanNotOfRequiredTypeExceptionが発生したときの原因と対処法!

元記事を表示

文字列の一致方法

文字列の一致方法をJavaで実装しました

“`Java
import java.util.Scanner

public class Mojikensaku1 {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println(“検索する文字を入力してください”);
String line1 = sc.nextLine();
System.out.println(“判定する文字を入力してください”);
String line2 = sc.nextLine();
//文字列検索結果フラグの定義
booloean flag1 = true;
//文字列検索チェック
flag1 = line2.contains(line1);
//文字列が含まれているかチェック ある場合は「DANGER」ない場合は

元記事を表示

インターフェースを実装するようにエンティティを修正したら動かなくなった話

# はじめに(と原因)

Play FrameworkとEbeanを使用している環境で、エンティティに対して、
setterを宣言しているインターフェースを実装するように修正したら、
意図しない動きになった。

原因は下記記事に記載されている。

https://qiita.com/fukushiw/items/64993db74e1454554b7c

> Play Framework のエンハンス
> (中略)
> エンティティに対して、getterとsetterがついていないものはそれをつけるようにします。
> その後で、エンティティのフィールド直接アクセスを、getter/setter経由になるように書き換えます。
>
> Ebean の エンハンス
> (中略)
> 遅延ローディングや楽観的ロックの制御等の目的で、getterやsetterソースコードが改変されます。

Lombokを疑っていたが、Play FrameworkとEbeanでエンハンスしているとは…

# 修正前のコード

* エンティティ

“`java
@Entity
@Table(name = “H

元記事を表示

コンピュータとオセロ対戦53 ~損失関数~

https://qiita.com/tt_and_tk/items/068f2afde6db637e189f

[前回](https://qiita.com/tt_and_tk/items/8bce5586efbf6a67f086)

# 今回の目標
損失関数を作成する。
# ここから本編
## Softmax
損失関数追加の前に、活性化関数としてソフトマックス関数を追加します。
その層のノード数をN、現在着目しているノード番号をiとおくと、

“`math
\begin{align}
f(x_i)&=\frac{e^{x_i}}{\sum\limits_{n=1}^Ne^{x_n}}\nonumber \\
f'(x_i)&=\left\{\begin{aligned}
&f(x_i)(1-f(x_j))\ &if\ i=j\\
&-f(x_i)f(x_j)\ &if\ i\ne j
\end{aligned}\right.\nonumber
\end{align}
“`

プログラム

“`Softmax.java
pa

元記事を表示

Centos8 LAMPPJ

sudo vi 0S8.sh
“`
#追加で HTTP(80/tcp) と HTTPS(443/tcp) を許可しておきます
firewall-cmd –permanent –zone=public –add-port=3389/tcp
firewall-cmd –add-port=80/tcp –permanent
firewall-cmd –add-port=443/tcp –permanent
firewall-cmd –reload
firewall-cmd –list-all

“`
sudo chmod u+x 0S8.sh
sudo ./0S8.sh

sudo vi 0S8LAMP.sh

“`
#apache:php:mysqlインストール
dnf remove -y php
dnf install -y https://rpms.remirepo.net/enterprise/remi-release-8.rpm
rpm –import http://rpms.remirepo.net/RPM-GPG-KEY-remi
dnf modul

元記事を表示

OTHERカテゴリの最新記事