JAVA関連のことを調べてみた2020年01月11日

JAVA関連のことを調べてみた2020年01月11日

CheckStyleのパラメータ

# はじめに
業務でCheckStyleの設定ファイルを見直す機会があり、今まで、先輩が作成した設定ファイルを何も考えずに使用していたので改めてパラメータを調べたので備忘録的に一覧にしようと思います。

# パラメータ一覧

| 名称 | 説明 |
|——|——|
| Checker | 設定ファイルのルートタグ|
| TreeWalker | 様々なパラメータの親になるタグ |
| JavadocType | クラスとインターフェースの宣言にJavadocコメントが入っていない場合に警告する |
| JavadocVariable | メンバ変数にJavadocコメントが入っていない場合に警告する |
| JavadocMethod | メソッドの宣言にJavadocコメントが入っていない場合に警告する |
| Indentation | インデントを確認する。baseOffsetに設定されている値(スペースの数)があっていない場合に警告する |
| LineLength | 1行に記述されている文字数を確認する。maxに設定されている値を超えている場合に警告する |

元記事を表示

アルゴリズム体操14

#Swap Nth Node with Head (Easy)

#説明
Singly Linked Listの head と 整数「N」が引数として渡されます。
head と head からN番目のノードと交換します。返り値は新しいLinked listのheadです。
##例
N = 4の例を見てみましょう。
![Screen Shot 2020-01-10 at 16.35.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405022/07f034c3-04a6-bdce-f4c2-d605e10adf09.png)
head を一番目として4番目のノードの28とheadの7を交換するので以下の様になります。
![Screen Shot 2020-01-10 at 16.35.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405022/7ba0b269-3805-ed4c-482f-e6dded0b9f0

元記事を表示

javaでAtCoder Beginner Contest 150を解く

AtCoder Beginner Contest 150お疲れ様でした!
[公式ページ](https://atcoder.jp/contests/abc150)

残念ながらまたUnratedですね・・・

GitHub.comのアカウントを作った記念に、ちょっと前にはじめたAtCoderのコードもコンテストが終わった後にコミットしてみました。[こちら](https://github.com/ko-flavor/atcoder-java/tree/master/atcoder/src/abc/abc150)
さらに、解説記事も書いてみます。

競技プログラミングは最近はじめて言語も基本的にjavaくらいしか書けないのでjava使ってやってます。
(競プロでPythonとかC使ってる人多いのはなぜなのでしょうか・・・)

##[問題A](https://atcoder.jp/contests/abc150/tasks/abc150_a)

掛け算して比較する問題。
特に解説は不要かと思います。

##[問題B](https://atcoder.jp/contests/abc150/tas

元記事を表示

JavaでJSON文字列をエスケープするコード

# Javaで未だに公式サポートされないJSON
大きなデータの作成は、JacksonやGsonを使う選択肢が普通と思いますが、
小さなデータを作成は、リッチなライブラリに頼らず、簡単な関数で済ませたい。
このような時の悩みの種は文字列のエスケープ処理です。

# エスケープ対象は、

|対象文字 |Byteコード |エスケープ表記 |
|—|—|—|
|BS |0x08 |\b |
|HT |0x09 |\t |
|LF |0x0A |\n |
|FF |0x0C |\f |
|CR |0x0D |\r |
|” |0x22 |\” |
|/ |0x2F |\/ |
|\ |0x5C |\\ \
|[4 byte Unicode] |先頭バイトが
0xF0 〜 0xF7|\u[4 byte Unicode] |

# コード
文字列を1バイトずつ置換する方式です。

“`
private static String escapeJsonString(CharSequence cs) {

final byte BACKSLASH = 0x5C;
fina

元記事を表示

「Java8からJava11」で何が起きたのか、どう環境構築すればいいのか

# この記事の目的

– 「Javaの環境構築」で絶対にハマったり、錯綜する情報にいつも惑わされる人に向けた記事です。
– 2017年以降のJavaは、移り変わりが激しい世界になりました。このことを認識し、「軸となる考え方」や「重要な動向」を把握できるように、調べた情報をまとめました。
– **「5年ぶりに(Java|JVM言語)触るんだけど環境周りが全然わからん」**とか、**「correttoとかAdoptOpenJDKとか、みんな何を言っているんだ」**という人(つまりちょっと前の筆者)が、「今後に渡って2度とハマらないための基礎知識を得られること」を目的にしています。以下の3本立てです:
– ざっくりとした歴史
– 2020年におけるローカル開発環境構築
– 情報源と参考URL
– APIや言語仕様の変更点には触れません(他の[良い記事](https://qiita.com/nowokay/items/1ce24079f4daafc73b4a)があります)。

———

# I. ざっくりとした歴史

– 2017年9月、OracleはJavaのリリース

元記事を表示

Javaのsynchronizedの解説と典型的誤り集(記事の誤りや意見等あれば是非教えてください)

# synchronizedの基本
プログラムにてスレッドを分けて処理しているけれど、複数スレッドに同時に処理を行わせてはいけない箇所(**クリティカルセクション**)があり、そこでは処理実行可能なスレッドを制限したいときなどに使う。
synchronizedと書けばいつも内部がシングルスレッド処理になるというものではないので、**何のインスタンスを使って領域を守っているか**をしっかり意識すること。

## synchronizedメソッド
synchronizedメソッドは、そのインスタンスにおいてsynchronized記述されているメソッドを実行できるスレッドを1つだけに制限するためのもの。
以下のクラスにおいて、`someMethod()`および`anotherMethod()`はsynchronizedメソッドであり、このsomeClassインスタンスに対して複数のスレッドが`someMethod()`や`anotherMethod()`を呼び出しても、一度に処理を行えるのは1スレッドだけである。

“`java
class SomeClass {
synchroni

元記事を表示

Java SE 7/8 Bronzeに学生がノー勉でチャレンジした。

#初めに
この記事では

– ノー勉でチャレンジしてみた結果
– 取る意義
– 難易度

などを載せたいと思います。

現在自分は、専門学校1年生です。
Javaの経験は,3年間ぐらい独学でSwingなどでGUI系のソフトを作って遊んでいた + 1年の専門学校生活で学んだこと。
Javaの入門書の知識はほぼ全て理解(Java Silverなどで出題される標準APIなどは覚えてない)しているぐらいの知識はあります。
bronzeは入門書を理解できれば対策本はいらないことを証明するために**ノー勉で挑みました。**

#結果
見事受かりました。**(合格ライン60点、点数65点)**
危なすぎますね。
僕はSilverの練習問題をやってみて「余裕じゃん!」
とか言って自信満々だったのにこの点数です。
自信がない人は絶対対策本かったほうがいいです。

#取る意義
就活で役に立つかといわれると微妙ですね。
役立つのはSilverからでしょう。

じゃあとる意味ないのかといわれると、僕はそうは思いません。
Bronzeを受けてみてほとんどの問題の意図を理解できた
(ただし意地悪な問題が多いので

元記事を表示

Ubuntu18.04 LTSでminecraft server java edition構築備忘録

驚くほど簡単だったのでメモ

# javaの確認

おそらくデフォルトで入っていると思うんですが、一応確認。入っていない場合は`sudo apt search openjdk-11-jre`とかで検索して新しめのを入れておきましょう。

“`bash
which java
# /usr/bin/java

jave –version
# openjdk 11.0.5 2019-10-15
# OpenJDK Runtime Environment (build 11.0.5+10-post-Ubuntu-0ubuntu1.118.04)
# OpenJDK 64-Bit Server VM (build 11.0.5+10-post-Ubuntu-0ubuntu1.118.04, mixed mode, sharing)
“`

# minecraft-serverをダウンロードする

[MINECRAFT: JAVA EDITIONのサーバーをダウンロードします](https://www.minecraft.net/ja-jp/download/server/)
上から最新版の

元記事を表示

[備忘録]dockerでjava環境を一から作る

DockerHubにあるjava環境イメージをpullしたら早いのに、一から作らないと落ち着かない損な性格なので作ってみた備忘録です。

##環境
– macOS Catalina
– Docker Desktop for Mac (インストール済)

##手順
#### 1. ubuntuイメージ取得
“`
$ docker pull ubuntu
“`
#### 2. ubuntuコンテナ起動
“`
$ docker run -it ubuntu bash
“`
以降はubuntuでの作業
#### 3. apt-getコマンドの更新
“`
$ apt-get update
“`
#### 4. 最低限必要なコマンドをインストール
curlコマンド

“`
$ apt-get install curl
“`
unzipコマンド

“`
$ apt-get install unzip
“`
zipコマンド

“`
$ apt-get install zip
“`
####5. sdkmanのインストール
“`
$ curl -s “https://get.s

元記事を表示

Java で JSON の Create

Jackson を使って JSON ファイルを作成します。

“`java:json_create.java
// ———————————————————————–
/*
json_create.java

Jan/10/2020
*/
// ———————————————————————–
import java.util.HashMap;
import java.io.File;
import java.io.FileWriter;
import java.io.BufferedWriter;
import java.io.PrintWriter;

// ——————————————————————–

元記事を表示

【Java】DIを使用したAbstractクラスのメソッドを子クラスから呼び出す処理作成時の注意点

DIを使用したAbstractクラスのメソッドを子クラスから呼び出す処理を作成する際のの注意点です。

## 問題のあるコード

“`java:Abstractクラス
public class AbstractFoo {
// DI
public Bar bar;

protected void update() {
bar.update();
}

}
“`

“`java:子クラス
public class ChildFoo extends AbstractFoo {
// DI
public Bar bar;

public void updateChild() {
// Abstractクラスのupdateメソッドを実行
update();
}

}
“`
## 実行結果
子クラスのupdateChildメソッドを実行すると、呼び出し先の親クラスのupdateメソッドでNullPointerExceptionで落ちる

## 対処方法
子クラスのDI

元記事を表示

アルゴリズム体操13

#Nth from the Last Node (Easy)

##説明
Singly Linked Listの headノードと、整数nが渡されるので、
**最後から**n番目のノードを返すアルゴリズムを実装してみましょう(nが範囲外の場合はnullを返します)。

##Solution
考え方は、nノード離れた2つのポインター使っていきます。
1つ目のポインタはheadを指し、二つ目はn番目のノードを指すように最初に設定します(初期設定)。
もし二つ目のノードが初期設定の際に、リストの最終地点であるnullに達した場合はnullを返します(out-of-bounds)。
次に、ループで2つ目のポインターが最終地点に到達するまで、両方のポインターを前方に移動させていきます。
ループ終了後は、最初のポインターは最後からn番目のノードを指すことになるので、そのポインタを返します。
###Runtime Complexity O(n)
Singley Linked List に対して線形走査するので実行時間はO(n)となります。
###Space Complexity O(1)
二つのポ

元記事を表示

Java で JSON の Read

Jackson を使って 次のJSONファイルを読みます。

“`json:tochigi.json
{
“t2381”: {
“name”: “名古屋”,
“population”: “74125”,
“date_mod”: “2009-1-7”
},
“t0922”: {
“name”: “小山”,
“population”: “17982”,
“date_mod”: “2009-5-19”
},
“t0923”: {
“name”: “佐野”,
“population”: “46819”,
“date_mod”: “2009-3-28″
}
}
“`

Jackson の jar ファイルのダウンロード

“`bash
SRC=”http://repo1.maven.org/maven2/com/fasterxml/jackson/core”
#
wget $SRC/jackson-annotations/2.9.9/jackson-annotations-2.9.9.jar

元記事を表示

【自分用】Java メモ (随時更新)

#メソッド
## add(“追加したい要素”);
Listに要素を追加する。

## contains(“検証したい要素”)
Listの要素の中で重複するものがあるかどうかを判定するメソッド。

## remove(“削除したい要素のインデックス”);
Listの要素を削除する。引数はインデックス。

## indexOf(“インデックスを取得したい要素”);
引数の要素のインデックスを取得する。
removeメソッドと一緒に使用できる。
`Array.remove(Array.indexOf(element));`

## Collections.reverse(“リスト名”);
リストの要素をreverseさせる。破壊的メソッド。

## Collections.shuffle(“リスト名”);
リストの要素をshuffleさせる。破壊的メソッド。

## Collections.sort(“リスト名”);
リストの要素をsortさせる。破壊的メソッド。

## Integer.perseInt(“int型に変換したいString型のデータ”);
String -> Integer

元記事を表示

【2020年1月版】世のチュートリアルは実装先行でイラッとする。もしくは Concordion で BDDに入門する。

# 例えば Quarkus のテストのチュートリアル

Quarkus のテストフレームワークの解説が以下のページにありますが・・・

– [QUARKUS – TESTING YOUR APPLICATION](https://quarkus.io/guides/getting-started-testing)

このチュートリアル、テストの仕方の説明なのに**実装ありき**なのでイラッときますね。ビヘイビア駆動開発にとって、”実装ありきのテスト”なんてありえないのです。
またBDDやTDDに当たってテストケースを記述する上での問題の一つである**”Mock”する/しない**(卵が先か鶏が先か)という悩みはどういったタイミングで解決していけば良いのでしょうか。

ここではQuarkusのチュートリアルを題材に、”Concordion使ってBDDでやるとどうなるのか?”をシミュレートしてみたいと思います。

## Concordion とは?

まず今回ご紹介するConcordionについてですが、Markdown, HTML, Excel などで “仕様” を記述し、その”仕様”の記

元記事を表示

Javaテクノロジー軽くまとめ

パブリックAPIの使用やサーブレットからの書き込みなどのメソッドがありますが、ここではjspにJavaコードを埋め込むためのテクノロジーについて説明します。

タグを列挙するためのクラス。

JavaでHTMLを操作する方法はいくつかあります。

Javaテクノロジーは3つのグループに編成されています。

オンラインプログラミングスクールであるTechAcademyは、Javaクラスを提供しています。

Javaおよびサーブレット技術を使用してWebアプリケーションを開発する方法を学びます。

呼び出し元の詳細なリファレンスとプロデューサー向けのドキュメントについては、JavaSEのドキュメントを参照してください。

アクティブなエンジニアが各学生にパーソナルメンターとして割り当てられ、アフターケアトレーニングと1対1のメンタリングが提供されるため、学生はわずか4週間で学習できます。名古屋骨董売りたい鑑定

元記事を表示

Java 暦週の基準年にやられた

# きっかけ
自分が開発した`java`のアプリがある。
その中にはアイテムを登録する機能があり、そこでは登録した日付もDBに登録している。
2019/12/29に登録したのだが、DBに登録したデータを見ると登録した日付が2020/12/29となっていた。
なんでやねんと思い調査し原因が判明したのでここに備忘としてまとめる。

# 結果
いきなり結果であるが、登録した日付は`yyyy/MM/dd`形式の文字列型で登録している。
そのため`Java`で日付型を`yyyy/MM/dd`形式の文字列型に変換していた。
変換には`Java`の`SimpleDateFormat`を使用。年の部分を`YYYY`で定義したことにより年が暦週の基準年として扱われ2019/12/29は2020/12/29と変換されDBに登録された。

## 暦週の基準年とは
暦週の基準年とはなんぞというと、「1/1が属する週は12月であっても翌年として扱われる。」という考え方です。
表現が下手でわかりづらいですね。すいません。

カレンダーで表すとこんな感じ
![sdf_001.png](https:

元記事を表示

OMC APM Agentのインストール – JAVA編 –

Oracle Management CloudのApplication Performance Monitoringは、JAVA Application Server、.NET、Node.js上で動作するアプリケーションの性能監視のためのクラウドサービスです。クライアント側、アプリケーションサーバー側の情報を分析することでどこにパフォーマンスの問題があるのかを特定するのに役立ちます。

ここでは、Application Performance Monitoringの設定手順についてご紹介します。対象のAPサーバはApache Tomcatです。

– OMCのコンソールからエージェントをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562423/a7e95d9e-db93-baf8-85a4-240108bf8b47.png)

– 右上のアイコンのエージェントのダウンロードをクリック
![image.png](https://qiita-image-store.s3.ap-

元記事を表示

SpringBootで定期実行で非同期処理

## 概要
Spring Bootで定期実行と非同期処理をやってみたので備忘録です。

## 環境
OpenJDK 11
Spring Boot 2.2.1

## 定期実行
こちらを参考にしました。[Spring Bootでtaskを定期実行する方法](https://qiita.com/rubytomato@github/items/4f0c64eb9a24eaceaa6e)

“`java
@EnableScheduling
@SpringBootApplication
public class DemoApplication {

public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}

“`
“`java
@Scheduled(fixedRate = 10000)
public void scheduledTask() {
this.doTask();
}
“`

Scheduledアノテーションを使います。

#

元記事を表示

macOS 10.15 Catalina に古い Java(8系) を入れる方法

# はじめに

Java のバージョンが 12 だと動かないツールがあり、古い Java を入れようとして Google検索しても役立つ情報がトップの方に表示されなくて面倒だったので、ここにメモ書きします。

# 自分の環境

macOS 10.15 catalina
Java は 12.0.2

“`
% /usr/libexec/java_home
/Library/Java/JavaVirtualMachines/openjdk-12.0.2.jdk/Contents/Home
“`

# やりたい事

Java 8 系を入れたい。

# 古い Java のインストール。

こちらが参考になりました。

– macOS に Oracle Java 8 (JDK) をインストールする手順
– https://weblabo.oscasierra.net/java-install-oracle-jdk8-macosx/

Oracle のサイトから JDK を D/L します。
「Java SE Development Kit 8u202」 – 「Mac OS X x64」

元記事を表示

OTHERカテゴリの最新記事