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

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

[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ブ

元記事を表示

Java入門[継承]

#### 継承とは
クラス定義の共通部分を別クラスにまとめることになります。

継承されるクラスを**「スーパークラス(親クラス)」**
継承した新しいクラスを**「サブクラス(子クラス)」**
と呼ばれます。

例えば**「人(Human)」**というスーパークラスがあるとします。
「人(Human)」にも、様々な職業に属したりもします。

**「教員(Teacher)」**
**「エンジニア(Engineer)」**
**「無職(Unemployed)」**

以上の3つはサブクラスとも言えますね。

では、Javaの継承を用いてコードを書いていきます。

##### Humanクラス

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

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

元記事を表示

その後のAtCoder(ABC-214終了時点でレート:214)

こんばんは。

ABCに参加するたびに記事を書いていたら大変&記事が大量生産されるので、サマリーして投稿をしていきたいと思います。

###直近の戦績

レートの変動はこんな感じでした。

ABC-212:205→201
ABC-213:201→194
ABC-214:194→214

200前後をうろうろする日々となっていますが、214ではようやくC問題を解くことができ、ひさびさのプラスです。

###ABC-212

####B問題

4桁の暗証番号X1 X2 X3 X4がある。パスワードとして強度は十分か?
以下のいずれかを満たすと弱い。

・4つとも同じ数字
・1~3の任意の数字iについて、X(i+1)がX(i)の次の数字である。

2点目の「任意」について、どれか一つでもそういう組み合わせがあるとだめかと理解して組んだところWAになりました。テストケースを見て理解を改め書き直し。

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

元記事を表示

【画像処理解説】Maxプーリング(Javaソース付き)

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

#Maxプーリングとは?
前回説明したモザイク処理の一種です。
具体的には、ブロックごとの代表値にブロックの最大値を採用する方法です。
詳しい説明は以下の記事を参照してください。

https://qiita.com/Sigmay/items/9cf8a73525ad2772159a

#アルゴリズム
1. 入力画像をラスタスキャンし、2から5の処理を行う。ただし、移動幅をブロックサイズとする。
2. 平均値計算用の変数を初期化する。
3. ブロックの中をラスタスキャンし、各画素に4の処理を行う。
4. 3のインデックスが画像からはみ出していない場合、画素値を取得し、2の最大値変数と比較して最大値を更新する。
5. ブロックの中をラスタスキャンし、各画素に5で取得した値をセットする。

#Maxプーリング処理結果の例
元画像(カラー画像)
![imori_256x256.png](https://qiita-image

元記事を表示

【画像処理解説】モザイク処理(Javaソース付き)

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

#モザイクとは?
現代社会においてモザイクを見たことのない人はいないと思いますが、一応説明します。
モザイクとはブロックごとに平坦化することで、元の画像を分かりにくくする処理です。
ブロックが大きければ大きいほど画像が荒くなります。

一般的なモザイク処理は非可逆変換となっています。
すなわち、一度モザイクをかけると元には戻せないということですね。
そのため、個人情報保護や検閲などで用いられています。

#処理方法は?
先述した通り、まず画像をブロック分けします。
そしてブロックごとに何らかの式を用いて代表値を計算し、ブロックすべてを塗りつぶします。
これだけで簡単にモザイクをかけることができます。

言葉で説明するのは非常に簡単なのですが、実際にプログラム化するのは意外と複雑だったりします。
特に初心者の方には少し難しいかもしれませんね。

なお、以下のプログラムでは計算式として平均値を用います。
この処理は平均プー

元記事を表示

CentOS7にJava11インストール

#java11のパッケージを検索
「yum search」 コマンドでパッケージを検索します。

“`:
sudo yum search java-11
(中略)
====================================== N/S matched: java-11 ===================
java-11-openjdk.i686 : OpenJDK Runtime Environment 11
java-11-openjdk.x86_64 : OpenJDK 11 Runtime Environment
java-11-openjdk-demo.i686 : OpenJDK Demos 11
java-11-openjdk-demo.x86_64 : OpenJDK 11 Demos
java-11-openjdk-devel.i686 : OpenJDK Development Environment 11
java-11-openjdk-devel.x86_64 : OpenJDK 11 Development Environment
java-

元記事を表示

Java版Minecraft 1.17.1のマルチサーバをGCPで建ててみた

## はじめに
今回`Minecraft`のJava版のマルチサーバをGCP上の`Google Compute Engine`に構築しました。
先人の記事があったものの、`1.17.1`を入れる上で少しハマりどころがあったので、備忘録として残しておきたいと思います。

いくつかGCPで記事を書いている方はいましたが、最小レベルでの記事はなかなか見つからなかったので、ここまでやれば取り敢えずバニラのMinecraftをみんなで遊べる!というところを目標とします。

GCPを使ったマイクラマルチサーバは、サーバ構築まで約30分ほどで完了しますので、非常に簡単にセットアップすることが可能です。

詳細な手順については、今回様々な記事を参照させていただいたため、そちらを参考に記述しておきます。

## 実行結果、料金
今回作成したGCEインスタンスに4人同時接続し、5〜6時間ほどプレイしてみましたが、ほとんどカクつくことはありませんでした。

発生した料金は以下のグラフのようになっており、日本円で約31円です。
![image.png](https://qiita-image-store.s3

元記事を表示

ツリー構造を可視化する

# DBに格納されている親子関係関係の情報からツリー構造で可視化する

– http://asistobe851.web.fc2.com/my-memo/traversal.html

大昔上記に書いていたものを転写した。しかもDBはMS ACCESS(笑)

“`
$ ./desc.sh node
1: nodeId COUNTER 0 10
2: isCategory BIT 0 1
3: parentNodeId INTEGER 0 10
4: title VARCHAR 0 50
5: URI VARCHAR 0 50
6: linkNodeId INTEGER

元記事を表示

Spring BootのjarをDocker上で動かすまで

# はじめに
Docker上でSpring Bootのjarを動かすための備忘録。[公式](https://spring.pleiades.io/guides/gs/spring-boot-docker/)にも書いてあるけど自分用に念のため検証した。

# 環境
– Docker 20.10.8, build 3967b7d
– Spring Boot 2.5.3
– Openjdk 11

# 内容
## アプリケーション側
検証用なので文字列返すだけ。 コマンドでもIDEでもいいからビルドしてjarを作っておく。

“` java
@Controller
@RequestMapping(“/demo”)
public class ContainerdemoController {

@GetMapping
@ResponseBody
public String demo() {
return “sample”;
}
}
“`

## Dockerfile
Openjdk11指定で `JAR_FILE` 相対パスのjarを `app

元記事を表示

Java から PostgreSQL JDBC Driver を使って PostgreSQL に接続してみる

Java から PostgreSQL JDBC Driver を使って PostgreSQL に接続するプログラムの作成方法について説明します。

環境は CentOS 7 または 8、PostgreSQL 9.6 以降を対象とし、PostgreSQL に接続できる状態になっていることを前提とします。PostgreSQL のインストールや設定がまだであれば、インストール方法は [こちらの記事](https://qiita.com/tom-sato/items/e1903cb974fb6c6d5664)、ローカルホスト以外からの接続受けつけに必要な設定方法は [こちらの記事](https://qiita.com/tom-sato/items/d5f722fd02ed76db5440) を参照してください。

1. Java、PostgreSQL JDBC Driver をインストールします。

“`ShellSession
$ sudo yum -y install java-1.8.0-openjdk-devel postgresql-jdbc
(省略)

元記事を表示

OTHERカテゴリの最新記事