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

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

Thymeleafの日付比較

#Thymeleafの日付比較が賢い!
と感動したので、簡潔ですが投稿させていただきます。

#コード例
ControllerからModelに値を渡し、Thymeleafで表示する例です。

“`java:○○Controller.java

@GetMapping(“/index”)
public String index(Model model) {
model.addattribute(“today”, “2021-8-18”);
model.addattribute(“tomorrow”, “2021-8-19”);
return “index.html”;


“`

“`html:index.html

falseなので表示されない
trueなので表示される


“`
比較演算子で「>」とか使いたくなりますが、
Thymeleafでは以下のように書き換える必要があります。

元記事を表示

Java入門[インターフェース]

前回は抽象クラスについてまとめました。

https://qiita.com/tomorun/items/8c210446b586d343ef53

階層の上には`Human`クラス
その下には具体化された`Teacher`や`Engineer`、`Unployed`などが生まれました。

しかし、`Human`クラスを更に抽象化することもできますね。
どんどん抽象化していくことで、抽象クラスのフィールドやメソッドが減っていきます。

抽象クラスの中でも、更に抽象化されたクラスを`インターフェース`として特別に扱うことが可能になります。

`インターフェース`の条件は以下の2つ
1 すべてのメソッドは抽象メソッドであること
2 基本的にフィールドを1つも持たない

では、作成してみましょう。

`アクセス修飾子 interface クラス名`

“`java:Animal.java
public interface Animal{
// public abstract void run();
// public abstract void eat();
// public

元記事を表示

全く役に立たない小ネタ(Java)

変数定義時に自身を参照できる

“`java
static String foo = foo = “ABCD”;
String bar = bar = “ABCD”;
void hoge() {
String baz = baz = “ABCD”;
}
“`

実行結果(IDEONE)
https://ideone.com/48OXMp

元記事を表示

【画像処理解説】ポスタリゼーション(Javaソース付き)

#はじめに
画像処理を簡単に解説していきます。
下部にはJavaでのソースコードも載せているのでぜひご参照ください。
不定期にはなりますが、随時更新していく予定です。

#ポスタリゼーションとは?
階調変更アルゴリズムであり、色の階調を変更する画像処理です。
一般的な画像は0から255の256階調で成立しています。
これをルックアップテーブル(LUT)を用いて、任意の階調数に変更します。

似たような処理として減色処理があります。
減色処理では、階調を減らすというよりも、画像情報を残しつつ情報量を減らすことが目的となります。
ポスタリゼーションは画像を加工してアートみたいにできるのが特徴ですね。

#LUTとは?
画素値変換用の参照テーブルのことです。
ポスタリゼーションの場合、階調数を$t$とするとLUTは以下の式で定義されます

“`math
lut(i) = \left[\left[\frac{i\times t}{256}\right]\times\frac{255}{t-1}\right]
“`

階調数が4の時、画素値100は85に、画素値200は255に変換されます。

元記事を表示

ただただ公式ドキュメントのリンクを並べただけ

タイトルの通り、ただ公式ドキュメントのリンクを並べました。
私が勉強した or 勉強に使いたいな、と思っている範囲のものです。
読んだ感想なども記しました。
適宜、更新するかもしれません。

# Java関係

### Java
|タイトル |リンク |その他 |
|—|—|—|
|ドキュメント |https://docs.oracle.com/javase/jp/11/ |Java 11 |

Javaに関しては、公式を見るよりも市販の本とかの方がいい気がしています。

### Spring Boot

|タイトル |リンク |その他 |
|—|—|—|
|チュートリアル |https://spring.io/guides |英語 |
|チュートリアル |https://spring.pleiades.io/spring-boot/docs/current/reference/html/getting-started.html |日本語|

日本語だと、最近こちらの本が出たようです。amazon prime会員だとタダで読めるようです。
https

元記事を表示

【画像処理解説】メディアンフィルタ(Javaソース付き)

#はじめに
画像処理を簡単に解説していきます。
下部にはJavaでのソースコードも載せているのでぜひご参照ください。
不定期にはなりますが、随時更新していく予定です。

#メディアンとは?
日本語では中間値といい、名前の通り数集合の中間に位置する数のことです。

簡単な例ですが、あるテストを受けた人が7人いて、点数分布は以下の通りでした。
$\begin{matrix}
34 & 36 & 39 & 42 & 44 & 48 & 100
\end{matrix}$

この例において平均点を計算すると、49点となります。
直感的には49点が真ん中というのは高いように感じませんか?
2位ですら平均点以下となってしまっています。
これは一人だけ100点という高得点を取っている人がいるため、平均点が高めに出ているのです。

次に、メディアンを計算してみましょう。
7人の中間なので、4位の点数である42点が採用されます。
この点は4位の点数そのままなので、1位の100点には引っ張られていません。
メディアンのほうが「真ん中」という感じがしますよね?

以上、説明した通りメディアンには外れ値(極端

元記事を表示

Jasper Report で帳票を縦横4分割で作成する。

# 初めに
Jasper Report で帳票をA4用紙4分割で作成する方法をまとめます。
印刷順序はZ順序で印刷されます。

# 前提条件・環境
・TIBCO Jaspersoft Studio-6.17.0

# 手順
1. PageFormat から Colums を 2 に、Print Order を Horizonal に設定します。
2. BandDetail の高さを PageFormat の高さの 1/2 で設定します。

## 1. PageFormat から Colums を 2 に、Print Order を Horizonal に設定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1864623/e2c8ccfb-8535-3a15-1cbc-5a77e3b4d3dd.png)

## 2. BandDetail の高さを PageFormat の高さの 1/2 で設定します。

![image.png](https://qiita-image-stor

元記事を表示

【java】ロト6で夢を買おう~申込番号を決めてみよう~

#1.きっかけ

ここ1年半話題といえば__「コロナ絶賛感染拡大中!一年半前の数人から今は5000人に伸びました!」__
という話でニュースがにぎわっている。
__`オリンピックで日本経済が盛り上がる予定だったけど、夢に終わってしまった。`__
さらに、と悪いことを挙げればきりがない。

そんな暗い空気を背負って、テレワークを終えて近所を歩いていた。
私と同じ暗い空気をまといながらも、やけに野望に燃えた目の人々が集まっている場所がある。
高額当選を叩き出した宝くじ売り場だ。
その集まりの先に「キャリーオーバー発生中!」「サマージャンボ」のポスターが見えた。
「では〇〇と〇〇で五万円になります。」と無機質な店員さんの声も聞こえる。
渋い顔をしたオジサンが、財布からお札を取り出している。
サマージャンボやロトの当選金額の大きさと、列に並ぶ人の熱気に呑まれてしまった。
__「これもし当たったら、どうしよう???」__と根拠のない自信が溢れ出してきた。
サマージャンボは、自分で番号を決められないけど、ロト6、ロト7は自分で番号を決められるということも分かった。
しかもキャリーオーバー発生中で、

元記事を表示

Java入門[抽象クラス]

#### 抽象クラスとは
その名の通り、抽象的なクラスです。
具体的な役割は子クラスに任せます。

抽象クラスを作成することで、予期せぬインスタンス化やオーバーライド忘れを防ぐことができます。(オーバーライドは後述)

抽象クラスの作成は以下の通りです

`アクセス修飾子 abstract class クラス名`

抽象メソッドはこのような形
`アクセス修飾子 abstract 戻り値 メソッド名();`

では、前回作成した`Human`クラスを抽象クラスにしてみましょう。

“`java:Human.java
public abstract class Human {
private String name;
private int money;

public String getName(){
return this.name;
}
public void setName(String name){
this.name = name;
}
public int getMoney(){
return this.money;

元記事を表示

[Java] Java Bronze SE の試験に合格した勉強方法

# はじめに

`Java Bronze SE 試験番号1Z0-818`の試験に約1ヶ月で合格したのでその勉強方法をまとめました。
目安としては、Java以外のプログラミング言語の基礎は理解している状態で1日1〜2時間ほど勉強しました。
勉強方法はたくさんあるので自分にあった方法で学ぶことが一番ですが、やる気はあるけど、どう勉強したら良いのか悩んでいる方の手助けになれたら幸いです。

# 合格のためのステップ
## ステップ1
まずは参考書を購入しましょう。
オラクル認定資格教科書と問題集を購入することをお勧めします。

[オラクル認定資格教科書 Javaプログラマ Bronze SE(試験番号1Z0-818) / 山本 道子(著)](https://www.amazon.co.jp/%E3%82%AA%E3%83%A9%E3%82%AF%E3%83%AB%E8%AA%8D%E5%AE%9A%E8%B3%87%E6%A0%BC%E6%95%99%E7%A7%91%E6%9B%B8-Java%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9E-Bro

元記事を表示

VSCodeにSpringBootの環境を構築しよう!!

#環境
* windows
* JDK11
* Maven3.8

# step1:必要な拡張機能のインストールをしよう
下記をインストールしよう!
![スクリーンショット (5).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/893794/9c7a64d6-49a5-0934-5e21-67167a778ca8.png)
![スクリーンショット (7).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/893794/0b575c69-183f-1546-7c8a-fc8d795dbbbb.png)
![スクリーンショット (6).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/893794/96f79f8d-88fa-46e5-9b57-357a24dd7851.png)

# step2:VSCodeにJavaとMavenの設定をしよう
1

元記事を表示

Javaについて、基本だけど意外と知らないこと(Java Silver 「データ型の操作」)

本年度中に、Java Silver及びJava Goldの資格取得を目指しています。
現在エンジニア3年目にも拘らず、今までの経験言語がJavaだったりC#だったりしてふらふらしていたので、ここらで一発、言語について基本的な知識を持っておこうと思ったのがきっかけです。

2年目までは言語知識を深く知らなくても、先輩の作った基盤の上でなんとなくプログラミングできていたように思えます。そのせいか、恥ずかしながら3年目になって(試験勉強を始めて)Javaの理解が進んだ点がいくつかあるので、備忘程度に記載します。

##出典
Java SE 8 Silver試験「Javaのデータ型の操作」単元より

###インスタンスとガベージコレクション

“`Java

Object a = new Object(); //【I】Objectインスタンスを生成し、Object型の変数aの参照先とする
Object b = new Object(); //【Ⅱ】Objectインスタンスを生成し、Object型の変数bの参照先とする
Object c = a; //【Ⅲ】Object型の変数cの参照先を、変

元記事を表示

Velocityで自動HTMLエスケープする

##問題

WEBアプリで、velocityを使用してHTMLテンプレートを記述する場合、[EscapeTool](https://velocity.apache.org/tools/1.4/generic/EscapeTool.html)を使用してエスケープ処理を行うのが普通だが、項目出力の都度エスケープ処理を記載しなければならず、記載忘れでクロスサイトスクリプティングなど重大な脆弱性を埋め込むおそれがある。

##解決方針

デフォルトでHTMLエスケープを行うようにして、コーディング時の負担を軽減する

##課題

全ての項目をエスケープすれば良いわけではない(出力項目の中にはHTMLタグを埋め込んでやる必要があることもある)。
[ココ](https://velocity.apache.org/engine/2.3/developer-guide.html#registering-event-handlers)に記載のあるように、VelocityプロジェクトでHTMLエスケープを自動で実施する仕組みを作っていたこともあるが、一律同じエスケープ処理を行うことは「実用的でない」として

元記事を表示

Lombok徹底解剖

Javaにおいて、フィールドへのアクセサ等の用意を、アノテーション付与によって肩代わりしてくれる便利なライブラリ、Lombok。

主なアノテーションについてまとめる。

###Getter/Setter

get○○、set○○メソッドを自動で用意してくれる。

“`Java:プログラマが書くソース
public class User {
@Getter
private userId;

@Setter
private userName;
}
“`

“`Java:コンパイルするとこうなる
public class User {
private userId;
private userName;

public String getUserId() {
return this.userId;
}

public String setUserName(final String userName) {
this.userName = userName;
}
}
“`

###EqualsAndHashCode

クラ

元記事を表示

[Java] FastDateFormatでParseする

# FastDateFormatとは

https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/time/FastDateFormat.html

> FastDateFormat is a fast and thread-safe version of SimpleDateFormat.

`FastDateFormat`は、 `SimpleDateFormat`の早くてスレッドセーフ版。

> This class can be used as a direct replacement to * {@code SimpleDateFormat} in most formatting and parsing situations. * This class is especially useful in multi-threaded server environments. * {@code SimpleDateFormat} is not thread-safe in any J

元記事を表示

【画像処理解説】ガウシアンフィルタ(Javaソース付き)

#はじめに
画像処理を簡単に解説していきます。
下部にはJavaでのソースコードも載せているのでぜひご参照ください。
不定期にはなりますが、随時更新していく予定です。

#ガウシアンフィルタとは?
ノイズ除去などでよく用いられるフィルタです。
ガウシアンフィルタで使われる関数は以下の式です。

“`math
k(x, y) = \frac{1}{2 \pi \sigma^2}
\exp{( -\frac{x^2 + y^2}{2\sigma^2})}
“`

$sigma=1.3$、カーネルサイズ3×3のガウシアンフィルタは以下のようになります。
なお、このフィルタでは全体の和が1になるように正規化がなされています。

“`math
k = \frac{1}{16}
\begin{bmatrix}
1 & 2 & 1 \\
2 & 4 & 2 \\
1 & 2 & 1
\end{bmatrix}
“`

画像にフィルタをかける際には「畳み込み演算」という処理を行います。
これについては次節で簡単に説明します。

#畳み込み演算とは?
簡単に言うと、画像上にフィルタを重ね

元記事を表示

Spring Batch で Tasklet を使用してジョブがリスタートする挙動を確認する

## 概要

– Spring Batch で Tasklet を使用してジョブが再実行 (リスタート) する挙動を確認する
– 1度目は必ず失敗し、2度目以降は必ず成功するステップを用意する
– 失敗したステップからジョブが再実行 (リスタート) されることを確認する

## 動作確認環境

– Java 11 (AdoptOpenJDK 11.0.11)
– Spring Batch 4.3.3
– Spring Boot 2.5.3
– Spring Framework 5.3.9
– Gradle 7.1.1
– macOS Big Sur 11.4

## ソースコード

### ファイル一覧

“`
├── build.gradle
└── src
└── main
├── java
│ └── com
│ └── example
│ └── steps
│ ├── MyApplication.java

元記事を表示

Visual Studio CodeでのJava開発環境の基本

# やりたいこと

– [x] JavaのVersion管理
– [x] チェックスタイル
– [x] TestをIDE上で実行
– [x] 環境変数の設定
– [x] BreakpointでのDebug

# Java Runtime

https://code.visualstudio.com/docs/java/java-tutorial#_using-java-runtime-configuration-wizard

`java.home` in `settings.json`

`Command + Shift + P`

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/7059/11938572-95ea-591f-71fe-f084351172a1.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/7059/8c48da84-7668-326a-a654-4da616

元記事を表示

Spring boot Thymeleafを使ったアレコレ。

## Thymeleaf

ここでは、事前に用意したデータを取得し、画面に表示する部分まで進めていきます。
構成は、以下の通りとします。
![snap3.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1383112/b6706aea-4982-302a-2b89-980766320adc.jpeg)

– controller から Service へロジックの導入。
– Service から Dao を経由して H2 Database からデータを取得します。
– 取得したデータは、オブジェクト型となるため、テーブル定義に合致するように Entity を作成し、変換した上で返却していきます。
– Contoroller では、受け取ったデータを Thymeleaf を利用して HTML を出力するという形です。

必要なもの Contorller からざっと作っていきます。

“`java
// src/demo/app/view
// ViewContoroller.java
package c

元記事を表示

Spring boot H2 の基礎のアレコレ。

## H2 Database

**必要な Spring Dependencies**

– H2 Database
– JDBC API
– Spring Web
– Spring Boot Devtools(you shoud install if you need.)

application.properties で以下のように書くより、yml で書く方が好きなので、ここでは yml ファイルで設定を書いていきます。

“`properties
// application.properties(個人的に嫌い。。。)
spring.datasource.url=~
spring.datasource.username=~
“`

“`yml
// mem(メモリ)=Springを起動するたびに初期化される。
spring:
datasource:
url: jdbc:h2:mem:test
driverClassName: org.h2.Driver
// 管理者権限
username: sa
password:
// Webブ

元記事を表示

OTHERカテゴリの最新記事