JAVA関連のことを調べてみた2021年06月22日

JAVA関連のことを調べてみた2021年06月22日

EclipseとSpringBootでHelloWorldと表示させてみた

#SpringBootを使ってみる

* 新規プロジェクト→Spring スタータープロジェクト
* 型をMaven,パッケージングをJar,Javaのバージョンを8,言語をJava,好きな名前を入力して[次へ]
* Springバージョン2.5.1であることを確認して,依存関係としてspring webとThymeleafを選択して[次へ]
* なんかよくわからないURLが出るがほっといて[完了]
* 作成されたSpringスタータープロジェクトにあるsrc/main/java→com.example.demo→プロジェクト名Applicationのファイルを以下の通り変更する

“`
package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.Get

元記事を表示

java 変数の型を取得

変数名.getClass().getSimpleName()

元記事を表示

Jasper帳票PDF出力備忘メモ ~ 複数のリストによる帳票出力 ~

https://qiita.com/yuuman/items/c2129e93202a49bd0287

上記記事の続き

前回の帳票PDF出力では、`JRBeanCollectionDataSource`を利用してListに格納された値をJasperテンプレートに埋め込んで帳票出力を行っていたが、今回は複数のListをテンプレートに埋め込む方法について検証したのでその時の内容を備忘メモとして残す。

基本的には[こちら](https://zetcode.com/jasperreports/multipledatasources/)に記載されている内容の通りである。

また、コードの実装例などは大幅に省略しているので細かいことは前回の記事を参照すること

# Jasper側の実装

## 1. データセット/パラメータの作成

`Outline`で右クリックを選択し、`Create Dataset`を選択すると下記画面が表示されるので必要事項を入力しデータセットを作成する。

![image.png](https://qiita-image-store.s3.ap-northeas

元記事を表示

一方通行(グラフ上の移動) Java編

https://paiza.jp/works/mondai/a_rank_level_up_problems/a_rank_graph_step5

 題意が上手くくみ取れずいったん放置。しかる後お手本を参考に。
 お手本では「幅優先探索の一種」ということでC++のQueueを使っていたが、どう見ても可変長な二重配列。

 Javaで再現するには……と悶々考えた結果、
「前の問題を活かそうぜ。そういう仕組みだろ」
 となり、隣接リストを利用する形になった。

「あ、グラフ理論ってそういうこと……」と漠然とした実用法が見えた気がする。するだけ。

###コード

“`java
import java.util.Scanner;
import java.util.ArrayList;

public class Main {
public static void main(String[] args) throws Exception {
Scanner sc = new Scanner(System.in);

int n = s

元記事を表示

Springbootで「HelloWorld」

# Springbootで「HelloWorld」を表示する

## 開発環境
* Windows 10 Home 64bit
* Eclipse Version: 2021-03 (4.19.0)
* Java 11

## Springbootでプロジェクトを追加する
**ファイル → 新規 → Springスターター・プロジェクト**

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1614172/dba1e794-f2be-ae04-6588-83f388f0354c.png)
プロジェクト名を決める
デフォルトロケーションを使用
* 型:Gradle
* Javaバージョン:11
* パッケージリング:Jar
* 言語:Java

で次へ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1614172/aeb7dd32-a898-2cef-0070-29cdfefe3fac.png

元記事を表示

VSCodeでserialVersionUIDを自動生成したい!【2021/04~】

# こんな人のための記事

Language Support for Java(TM) by Red Hat では `0.77.0 (April 15th, 2021)` 以降、
`Serializable`の実装クラスで `serialVersionUID`が未定義のクラスに対して
Warningが出ないようになりました。

え!? Warningが出なかったら、Quick fix から
`Add generated serial version ID` できないじゃん!!

# 見つけるのはWarningを消す記事ばかり

大体の「Warningを消したい」サイトには、アノテーションを追加するか

“` ..settings/org.eclipse.jdt.core.prefs
org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
“`
を追記しろという話でした。

逆手に取りましょう。
デフォルトが`ignore`になったなら、出すために`obey`を追記しよう!

“` ..settings/o

元記事を表示

【Java】Map+繰り返し+条件分岐をした際にうまくいかなかった原因

#起こった問題
Listの中に入っているMapを繰り返し処理で取り出して条件分岐させたのですが、うまくいきませんでした。

##問題のコード

“`java
List> list = new ArrayList>();
Map map = new HashMap();
map.put(“name”, “hello”);
map.put(“name2”, “hello2”);
list.add(map);
for(Map map2 : list) {
if(map2.get(“name”) == “hello”) {
System.out.println(“hi”);
}
}

// =>表示されない
“`

##原因
Javaの文字列比較で==演算子は使うことがNGだったようです。
簡単に紹介すると
比較している内容が
メモリ上のアドレスを比較するのか(==演算子)
メモリ上のアドレスに置いてあるデータ

元記事を表示

双方向性マップ

この記事では、Androidで双方向性マップを使う方法について記載しています。(Javaでも使えます)

### 双方向性マップ
双方向性マップは、「keyを指定してvalueを取得する」だけでなく、「valueを指定してkeyを取得する」ことが出来ます。

### 使い方
双方向性マップのライブラリはいくつかあるようですが、ここではcom.google.guavaのBiMapを使います。
ライブラリは、MavenまたはGradleで依存関係を指定することで使用できます。

“`
dependencies {
implementation(“com.google.guava:guava:30.1.1-android”)
// Javaの場合は 30.1.1-jre
}
“`

「valueを指定してkeyを取得する」場合は、inverseメソッドをコールすることで、keyとvalueが反転したMapが取得できます。

“`kotlin
val userId: BiMap = HashBiMap.create()
userId.pu

元記事を表示

[Web/まとめ] JUnit5 で Mockitoを利用する方法

### 背景
現在、担当中のjava moduleで Spring 2.3系から Spring2.5へmigrationを行なっている。
その際に、test周り、特にmockitoの移行で若干ハマったのでメモ。

特に、以下の英語LINKがよくまとまっていたので、この内容を元に要約してみる。
https://mincong.io/2020/04/19/mockito-junit5/

**なお、自分のMockito + Spring boot test frameworkの知識補充のために記載しているので、WEB Pageの丸翻訳というわけではなく、自分なりの理解や補足を加筆している。 なので、LINKの中で初めて知ること、わからないメソッドなどは適宜調べて自分なりのオリジナルまとめとなっている。**

### Junit5で Mockitoを利用する方法
以下の3つの方法があり、各方法での実装例や方法だけではなく、メリデメについてもリストしていく。

– `MockitoExtension`
– `MockitoAnnotat

元記事を表示

開発プロセスとSpringBootについて

#Java第3回
自分用のメモです。

##Webアプリケーションとは
* ブラウザ上で利用できるアプリケーション
* HTML/CSSやTCP/IPの基礎やブラウザの挙動なども理解する必要もある
* これら全てできるエンジニアのことをフルスタックエンジニアと呼ぶ

##Webアプリケーションでよく使う用語
クライアントとサーバー
* クラサバ構成はクライアントがブラウザからアプリケーションを起動し,サーバーが要求を受け付け,プログラムを起動し, その結果をクライアントに返す
* C#,VB.netがよく使われる

##リクエストとレスポンス
* クライアントからサーバへHTTPリクエストを送る
* サーバはそのリクエストに対して処理をした結果をレスポンスとしてクライアントへ送る
* API(WebAPI)があり,部品として使用することができる.これもリクエストを送るという意味で使うが「叩く」ともいう.
* アプリケーションサーバからブラウザに返すというのがレスポンスの仕組み

##通信
* Uniform Resource Identifier, Uniform Resource

元記事を表示

java用語集

①クラス プログラム実行に必要な処理をまとめた設計図

②メソッド いくつかの処理をひとまとめにしたもの
 インスタンスメソッド インスタンスに紐づけられたメソッド インスタンス固有の振る舞いを表す
 クラスメソッド クラスに紐づけられたメソッド クラス全体の固有の振る舞いを表す
 ※車クラスがあった場合に、インスタンスメソッドは1台の車インスタンスごとの振る舞いを表すのに対し、クラスメソッドは車全体の振る舞い。

③引数 メソッドに渡す値 入力値

④戻り値 返ってくる値 出力値
※和を計算するメソッドを作成した場合、数値が引数、和が戻り値

⑤変数 データを一時的に格納する箱
 
⑥データ型 取り扱うことができるデータのタイプ

⑦整数型 (byte型、short型、int型、long型)

⑧浮動小数点数型(double型、float型)

⑨文字型(char型)

⑩論理型(boolean型)

⑪インターフェース クラスに含まれるメソッドの具体的な処理内容を記述せず、変数とメソッドの型のみを定義したもの

⑫インスタンス クラスから作られるオブジェクト(実体)

⑬文字

元記事を表示

ラムダ式を使った配列の実験(Java編)

ラムダ式を使った配列の実験(Java編)です。

“`Java
package nogizaka
// ラムダ式の実験プログラム
// 2021/6/20 新規作成
// Author 乃木坂好きのITエンジニア

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

//ラムダ式実験プログラム
public class hairetsu_test {
public static void main(String[] args) {
//配列
List data = new ArrayList(Arrays.asList(1,2,3,4,5,6,7,8,9,10,11,12));
//ラムダ式で3で割り切れない数字を要素から削除する
data.removeIf( (Integer i) -> { return i % 3 !=0; } );
System.out.println(data);
}
}
“`

元記事を表示

SpringBoot のアノテーションについてのメモ

最近勉強を始めたフレームワークなので、お勉強がてら色々書いてみました。
そのうち何かこいつを使って試作してみたいですね。

# DI について

## @Autowired

一部の変数宣言に@Autowired を付与すると、DI の対象クラス(コンポーネントクラス)を探し、その変数にコンポーネントクラスのインスタンスを割り当ててくれます。

以下のクラスが対象です。

– @Component
– @Controller
– @Service
– @Repository
– @Configuration
– @RestController
– @ControllerAdvice
– @ManagedBean
– @Named
– @Mapper
– @Bean

DI の対象ではないクラス(上記アノテーションが割り当てられていないクラス)のメンバに対して@Autowired を指定すると実行時エラーが出ます。

## @Scope

このアノテーションに引数を指定してクラスに付与すると、そのクラスのライフサイクルを指定することができます。
指定できる引数は以下の通りです。

|

元記事を表示

【Java】AtCoderのABC-206に参加しました(レート:223→231)。

こんばんは。

2021/6/19に、AtCoderのABC-206に参加しました。
レートは以下の通りとなっています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/402487/6c76bf03-f145-c640-8417-203232a77109.png)

C問題まで突破し、順位は5887/9029でした。
レートは+8で231へ。久々にプラスで嬉しいけど、挽回までまだまだ時間がかかりそうです。
C問題で一度WAを出してしまっただけで、このレートかあ・・。

###A問題

定価206円のエナジードリンクを1本N円で販売。
消費税率1.08を乗じたうえで、定価206円を上回るかどうか?

“`java
import java.util.Scanner;

public class Main{
public static void main(String args[]){
Scanner sc = new Scanner(System.in);
long n =

元記事を表示

バッチアプリにおけるOpentelemetryでの分散トレーシング検証メモ

# はじめに
Opentlemetryの分散トレーシングについていろいろ調査したが基本的にWebアプリのトレーシングに関する内容がほとんどで、APIをコールするBatchアプリについてトレーシングしたい場合の方法がわからなかったので、BatchアプリにおけるOpentelemetryの検証を行った。
今回はその検証内容についてメモとしてまとめる。

実現したい分散トレーシングのイメージは下図のとおりで、Batchアプリの起動から終了までの間を1Traceとしてトレーシングするのが目標。

![分散トレーシング.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177076/1c888261-bec8-f6e5-b9af-27fa0ed01893.png)

利用するバージョンは下記の通り。

* opentelemetry:1.0.1
* Zipkin:2.23.2
* Java:OpenJDK 11.0.2

# 検証1:Webアプリ側のトレーシング検証
WebアプリのWebApp01に対してAPI Ca

元記事を表示

JavaのSSLSocketを使う

#はじめに
JavaのSSLSocketを使って暗号化通信してみる。ついでにクライアント証明書も。
まずはサーバ側。

#証明書の準備
サーバ側はWebサーバで使う証明書と同じく、サーバ証明書・秘密鍵・CA局証明書がまずは必要。
これをまとめてpkcs12形式にしておく。
クライアント証明書を使う場合はクライアント証明書のCA局証明書も使う。こちらは秘密鍵なしで使えるJKS形式で。

#サーバ側証明書の読み込み
サーバ証明書は秘密鍵・CA局証明書とセットにしたpkcs12ファイルを読み込む。
FileInputStreamで開いて、java.security.KeyStore の load で読み込む。
読み込んだら javax.net.ssl.KeyManagerFactory の init に指定する。

クライアント証明書用CA局証明書も KeyStore の load で読み込むが、KeyManagerFactory ではなく、javax.net.ssl.TrustManagerFactory の init に指定する。

コードとしては以下のようになる。

“`
impor

元記事を表示

Visual Studio Code で Java 8 の開発環境を構築する

Java の開発では、Eclipse や IntelliJ を利用される方やプロジェクトが多いかと思いますが、Visual Studio Code も使い勝手の良い IDE です。VSCode は他の IDE と比べて軽いというのが大きな利点かと思います。個人的には UI も好みです。今使っている IDE から VSCode に乗り換えてみたい方もいるでしょう。

ただ、Java 11 以降であれば環境構築はスムーズに行えるのですが、Java 8 の場合は少し工夫が必要です。

以降では VSCode で Java 8 を利用する開発環境の構築方法を紹介します。

# 開発環境の構築手順

## 1. Java 8 をインストール

ここではサンプルとして Red Hat の OpenJDK 8 のインストール手順を紹介していますが、他の JDK でも構いません。
既にインストール済みであれば、この章はスキップしてください。

まず https://developers.redhat.com/products/openjdk/download から OpenJDK 8 のインストーラを

元記事を表示

【Java】複数のreplace対象文字列を一度に置換する

## 概要
Javaで文字列の置換を行うときは、`replace`や`replaceAll`を使うと思います。 replace対象が一単語であったり、正規表現でカバーできるなら問題ないのですが、これが複数の単語の場合どうでしょうか。例えば以下のようなケース。

`文字列中の「”りんご”, “みかん”, “ぶどう”」を全て「”apple”, “orange”, “grape”」に置き換える`

例えば、置き換えの対象組みをMapなどで持っておいて、for文でreplaceAllを繰り返し行えば良いと言えば良いのですが、もう少し簡潔に実装するやり方がないかと思い少し調べてみました。

## 対応方法
[こちら](https://stackoverflow.com/questions/6745154/how-to-replace-multiple-words-in-a-single-string-in-java)のStackoverflowの記事にいくつか対応案がのせられています。個人的には、commons-langのライブラリの`StringUtils.replaceEach`を使う方法が

元記事を表示

【Java】アクセサーメソッドを用いて、三角形の面積を取得

#作りたいもの
アクセサーメソッドを用いて、三角形の面積を取得する。
条件:底辺、高さは実行時に自分で任意の値を入力する

#ソースコード(間違ってるかも)
“`TriangleArea.java
import java.util.Scanner;

public class TriangleArea{
public static void main(String[] args) {
@SuppressWarnings(“resource”)
Scanner scan = new Scanner(System.in);
System.out.print(“底辺は? >> ”);
double inputButtom = scan.nextDouble();
System.out.print(“高さは? >> ”);
double inputHeight = scan.nextDouble();

Triangle triangle = new Triangle();
triangle.setButtom(inputButtom);
trian

元記事を表示

Box Java SDKで、Box APIを試してみる

# 概要
BoxのWeb APIを使い、会社の業務システムからBoxのファイルを操作したいと思っています。
システム内で生成したファイルを、Boxにアップロードするイメージです。
調べてみると、[各種プログラム言語のSDKがある](https://ja.developer.box.com/sdks-and-tools/)ようなので、今回はJava SDKを使ってみようと思います。

# 認証をクリアする
APIを使うにはまずは認証をクリアしなければいけません。
BoxのAPIにはいくつかの認証方式が用意されていますが、今回のユースケースでは[JWT認証](https://ja.developer.box.com/guides/authentication/jwt/)が適切だと思います。
他の認証方式については、[公式ドキュメント](https://ja.developer.box.com/guides/authentication/select/)をチェックしてください。

プログラムを書く前に、まずは認証をクリアするためにアプリケーションをBoxに登録します。

## アプリケーショ

元記事を表示

OTHERカテゴリの最新記事