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

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

アルゴリズム 体操15

#Merge Two Sorted Linked Lists (Easy)

##説明
2つの昇順にソートされたSingly Linked Listが引数として渡されます。
それら二つをマージして、昇順にソートされたLinked Listのheadを返り値として返すアルゴリズム。

##例
以下のような二つのLinked Listがあります。
![Screen Shot 2020-01-11 at 13.08.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405022/9a577c48-4e70-acac-9ad6-434293117f6b.png)
この二つのLinked List をソートを維持してマージすると以下のような単一のLinked Listにする。
![Screen Shot 2020-01-11 at 13.10.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405022/67c4dce5-8

元記事を表示

MacでAzure Service Fabric(Java)を試す – ローカル環境

#はじめに

# 動作確認環境
OS:
macOS Mojave Version 10.14.6 (18G84)

STS:
Spring Tool Suite 4
Version: 4.5.0.RELEASE
Build Id: 201912171052

Eclise:
Eclipse IDE for Java Developers
Version: 2019-12 (4.14.0)
Build id: 20191212-1212

#1. 準備
#1.1 CLI
[Azure Service Fabric CLI](https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-cli#cli-mac)
#1.2 ローカル開発環境
[Set up your development environment on Mac OS X](https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-get-started-mac)

#1

元記事を表示

“hoge hoge”.equals(“hoge hoge”) // false

# この間起こったこと
先日、HTMLファイルを取り込んで文字を色々するみたいなことをやっていた時のこと。

“` java
String str1 = “hoge hoge”;
String str2 = anyElement; // HTMLファイルから取り込んだ”hoge hoge”

System.out.println(str1.equals(str2));
// false
“`

なんとfalseが出力されました。え、false…?
初めはString#equalsのバグか?と思ったのですが、まあそんな訳ないと思うので
色々調べてみました。

# 試しにcharで見てみる

ということで先ほどの二つの文字列をString#getBytesしたら以下のようになりました。

**str1 : [104, 111, 103, 101, 32, 104, 111, 103, 101]**
**str2 : [104, 111, 103, 101, -62, -96, 104, 111, 103, 101]**

ん?

***-62, -96*** …!?

***

元記事を表示

ドラゴンボールから学ぶオブジェクト指向プログラミング

#1.目的
+ オブジェクト指向の備忘録
+ UML設計の備忘録

#2.概要
ドラゴンボールの世界は悟空・人造人間セル・魔人ブウなどの様々な戦士によって構成されている
今回は一般人と異なる彼らに焦点を置きながらスモールケースの設計・実装を行う

※具体的な実装に関しては都度行っていく
#3.UML設計
####UML図(クラス図)
よく使うものまとめ

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/497973/30cc9d44-81b3-e6ad-1979-be09a379fe7d.png)

####アクセス修飾子(UML図)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/497973/ed25f1a3-ec6a-d801-c7f1-26761bcd513e.png)

#4.設計 ~ 実装

戦士の特徴:戦う機能 → インターフェースとして扱う

![uploading-0](

元記事を表示

【Java8】UTC時刻をDate型で返す関数(OffsetZoneを用いて計算)

UTC時刻で
UTCに設定したZonedDateTimeをDate.from(***.toInstant())しても現地時間しかしか返してくれなかったので、
なんでやねんとキレながらOffsetDateTimeからOffsetZone取得してminusSeconds(時間をずらす)することで回避したよという話。
#####問題のコード

“`Java:example.java
ZonedDateTime zonedDateTime = ZonedDateTime.now(ZoneId.of(“UTC”));
Instant instant = zonedDateTime.toInstant();
return Date.fron(Instant);
//”Asisa/Tokyo”時間が返ってくる なんでやねん
“`
↑(よくわからんけどJavaの環境のせい…??)

#####解決したコード
“`Java:myexample.java

public static Date getUTCDate() {
OffsetDateTime offsetDateTime

元記事を表示

Javaの環境変数設定(Windows, AdoptOpenJDK11)

# はじめに
この手順はJDKをzip形式でダウンロードしてきて、JAVA_HOMEとPATHの設定を行うものです。
また、学生さん向けにJavaの環境設定を書こうとしていたものですが、実際に学生さん向けに案内する際には使わなかった手順です。
プログラミング不慣れな学生さんが元々書いてあったPATHを誤って消してしまうという事故を防ぐため、MSI形式ダウンロードを案内することにしました。

没案ですがもったいないので、公開しておきます。

# JDKって?
以下のサイトを参照
[JDK (「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典 より)](https://wa3.i-3-i.info/word15006.html)

この記事では、Javaをプログラミングするのに必要なJDKをWindowsにセットアップし、Javaを使えるようにします。

# まずはJDK11をダウンロード
https://adoptopenjdk.net/releases.html?variant=openjdk11&jvmVariant=hotspot

JDK11で一番最新の「jdk

元記事を表示

さくっとJAVAのWEBアプリを作成してOMC APMを試す

Oracle Management CloudのApplication Performance Monitoringをちょっと試してみたいと思っても、実際にWEBアプリケーションの動作する環境を準備しなければいけないのでなかなか面倒です。
ここではJAVAのWEBアプリケーションと必要な環境の構築をDockerを使い、誰でも簡単にAPMを試せる環境を極力簡単に構築する方法をご紹介します。

## 作成するWebアプリケーション
MySQLにJDBCアクセスするダミーのWEBサンプルアプリケーション。レスポンスが遅くなるような仕掛けあり。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562423/426acf5b-4fa3-be0a-bd87-0115eca345ba.png)

## Dockerでの構築イメージ
ここではOracle CloudのAlways FreeにDockerをインストールして、ApacheとMySQLのコンテナを起動します。そしてサンプルのWEBアプリケーショ

元記事を表示

なんで 「メソッド」や「オブジェクト」ってやらないといけないの? ~「mainだけ」ならうまくいってたのに~

#問題点
mainメソッドまでは上手くいってました。
だけど、「メソッド」や「オブジェクト」が登場してから急に難しくなりました。

![スクリーンショット 2020-01-11 13.30.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354233/088324e3-f3ff-0408-a976-c029e4a786fa.png)

#結論
「好きなタイミングでできる」という事に気づけました。
どういう事か説明します。

#問題発生の範囲
#####1.「Main1」ファイルから「Human」ファイルを呼びます。

“`Java:Main1.java
public class Main1 {
public static void main(String[] args) {

Human human = new Human();
human.name = “あいだ”;
human.hello();

}
}
“`

####2.「Human」ファイルの中身です。

“`Ja

元記事を表示

Jupyter学習ノート_002

## Google colabにJavaをコンパイルや実行する方法

下記の手順で実現できます。

– Google colabへ接続して、Google driveにも接続する

“`test1.py
#google driveをマウントする
from google.colab import drive
drive.mount(‘/content/drive’)
“`
– サンプルソース実行までの処理

“`test2.py
#カレントディレクトリを設定する
import os
import shutil
os.chdir(‘/content/drive/My Drive/Java_sample’)
path_name = os.getcwd()

#ソースをアップロードして、指定フォルダーへコピーする
file_name = ‘/HelloWorld.java’
path_all = path_name + file_name
print(path_all)
shutil.copy(file_name, path_name)

#コマンドでJavaソースをコンパイル&実行す

元記事を表示

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-e6dded0b9f

元記事を表示

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

元記事を表示

OTHERカテゴリの最新記事