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

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

GoFのデザインパターンを勉強する

# はじめに
[Java言語で学ぶデザインパターン入門](https://www.amazon.co.jp/%E5%A2%97%E8%A3%9C%E6%94%B9%E8%A8%82%E7%89%88Java%E8%A8%80%E8%AA%9E%E3%81%A7%E5%AD%A6%E3%81%B6%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3%E5%85%A5%E9%96%80-%E7%B5%90%E5%9F%8E-%E6%B5%A9/dp/4797327030)を読んでみたのですが、そのまま読んだだけだと内容が頭に入ってこなかったので、学習のコツだったり、勉強してまとめた結果だったりを記事にしてみました。

# 学習のコツ
[GoFの23のデザインパターンを,Javaで活用するための一覧表 (パターンごとの要約コメント付き)](https://language-and-engineering.hatenablog.jp/entry/20120330/p1)
↑こちらのサイトをかなり参考にさ

元記事を表示

【Java】 ArrayList→配列変換ではサイズを指定するべきなのか

##配列のサイズを指定する場合
“`java:ListToArray.java
ArrayList arrayList = new ArrayList();
for(int i=0; i < 10000000;i++) { // ← 1億 arrayList.add("A"); } long array1Start = System.currentTimeMillis(); arrayList.toArray(new String[arrayList.size()]); long array1End = System.currentTimeMillis(); System.out.println("処理時間:" + (array1End - array1Start) + " ms"); ``` ###結果 ``` 処理時間:3179 ms ``` ##配列のサイズを指定しない場合 ```java:ListToArray.java ArrayList arrayList = new ArrayList();
for(

元記事を表示

【Java】配列をArrayListに変換する ※注意あり

##配列をArrayListに変換する方法と注意点・落とし穴

配列をArrayListに変換する方法を紹介します。
絶対にハマる落とし穴があるので、最後まで読んでください!

“`java:ListToArray.java
String[] array ={“A”,”B”,”C”};
List list = Arrays.asList(array);
System.out.println(“配列 = ” + Arrays.toString(array));
System.out.println(“List = ” + list.toString());
“`
###結果
“`
配列 = [A, B, C]
List = [A, B, C]
“`

できた!簡単じゃん。

・・・でも

##要素を追加してみる
“`java:ListToArray.java
//中略
List list = Arrays.asList(array);
list.add(“D”); //Dを追加!
“`
###結果
“`
Exception in thre

元記事を表示

JavaでJSON形式のAPIを使ってみる

## はじめに
現在JavaでAPIを使って開発を始めました。
JavaでのAPI使用は初めてでググりまくってなんとか実装できたので備忘録的な意味で書いていきます。
まずはじめに一通りの実装からお見せします。
その後、以下のセクションに分けて解説をいたします。

– [APIのURLへ接続する](# APIのURLへ接続する)
– [APIからレスポンスをもらうにはBufferedReaderを使う](# APIからレスポンスをもらうにはBufferedReaderを使う)
– [ObjectMapperを使ってJSON文字列をJavaオブジェクトに変換する](# ObjectMapperを使ってJSON文字列をJavaオブジェクトに変換する)

その中で各セクションの実装部分とその解説を参考文献を見ながらしていきます。
### APIへのリクエストとレスポンス取得
“`useJson.java
public static JsonNode getResult(String urlString) {
String result = “”;
JsonNode root = null

元記事を表示

Ruby と Perl と Java と Python で解く AtCoder ABC 131 D

# はじめに
*[AtCoder Problems](https://kenkoooo.com/atcoder/#/)* の Recommendation を利用して、過去の問題を解いています。
AtCoder さん、AtCoder Problems さん、ありがとうございます。
# 今回のお題
*[AtCoder Beginner Contest 131 D – Megalomania](https://atcoder.jp/contests/abc131/tasks/abc131_d)*
Difficulty: 594

今回のテーマ、配列のソート
# Ruby
配列のソートですので、実装も簡単だと思います。~~初Pythonなので軽めの問題を選択しました。~~

“`ruby.rb
n = gets.to_i
a = Array.new(n).map{Array.new(2, 0)}
0.upto(n – 1) do |i|
a[i][0], a[i][1] = gets.split.map(&:to_i)
end
a.

元記事を表示

【わかりやすく解説‼】ArrayListの使い方【Java】

## 1.事前知識
– [【最新】UbuntuでJavaの環境を構築する方法](https://qiita.com/ryome/items/37c53e9638a9c6ea146a)

– [【初心者でもできる‼】Windows10にJava環境を作る方法(JDK14.0.1)](https://qiita.com/ryome/items/30135570954e36196821)

– [【わかりやすく解説‼】Javaのインスタンスの使い方](https://qiita.com/ryome/items/62ba0d8395af6698053a)

– [【初心者でもできる‼】Windows10にEclipseをインストールする方法(Java環境構築)](https://qiita.com/ryome/items/b47c5acdaa52cffbec58)

事前知識として、上記リンクの内容が必要です。

## 2.ArrayListとは

– `ArrayList` とは、 `Listインタフェース` を実装した `コレクションクラス` である。
– `ArrayList` は、

元記事を表示

【第1回】Linuxでマイクラサーバーを立てよう

#はじめに
この記事ではMinecraft JavaEditionでマルチプレイサーバーを立てる方法を解説する。
今回は第一回ということで基本となるMinecraftサーバーを構築するところまでを解説する。

#環境について
今回はCentOS7を使用してサーバーを構築する。
サーバーに使用するメモリは最低でも2GBは欲しい。
メモリの割り当て量は接続する人数に応じて後から変更することができる。
サーバーなのでGPUは必要ない。

#STEP1 準備
まずは必要なファイルのダウンロードから行う。

##1-1 Minecraft本体ダウンロード
まずはサーバーに配置する用のJarファイルをダウンロードする。公式バージョンとBukkitやSpigotなどの改造が施されたバージョンが存在するが、本記事ではSpigotを使用してサーバーを構築してみる。独自に用意したソフトウェアがあれば、そちらを使用しても構わない。
公式バージョンと改造バージョンの違いはプラグインが導入可能かどうかの違いである。当然、プラグインが使えた方が荒らし対策などが行えるため、改造バージョンの使用を推奨する。

元記事を表示

Spring Boot(Marven+テキストエディタ)でHello world!

##はじめに
[本家のドキュメント](https://spring.pleiades.io/spring-boot/docs/current/reference/html/getting-started.html#getting-started-first-application)を見ながらHello worldを試しました。

今後、本家のドキュメントは更新されていくと思うので、
魚拓として、java, marven, springのバージョンは下記の状態で行うとこうなりましたよ、という記録を残しておきます。

“`
$ java -version
java version “11.0.7” 2020-04-14 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.7+8-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.7+8-LTS, mixed mode)
“`

“`
$ mvn -v
Apache Maven 3.6.3 (cecedd34300269

元記事を表示

SpringのバリデーションはFormとBindingResultの順番が大事だった件

# はじめに
はじめまして、NekoSarada1101です。
Qiita初投稿です。
専門学校でJavaやサーブレットなどの勉強をしています。
現在、独学でSpringフレームワークの勉強をしているのですが、その中で解決に時間がかかってしまったエラーについての記事を投稿しようと思います。

# 本題
Springの勉強のために開発しているWebアプリのログイン画面の入力に対してバリデーションを行うために以下のようなコントローラーを定義しました。

“`
@PostMapping(“/auth”)
public String postLogin(@ModelAttribute @Validated LoginForm form, Model model, BindingResult result) {
if (result.hasErrors()) {
return “login”;
}
User user = userService.login(form.getId(), form.getPassword());
model.addA

元記事を表示

JavaアプリケーションにDialogflowを組み込む話

#はじめに
Dialogflowを組み込んだJavaアプリケーションを作成したので、
その手順を備忘録も兼ねて簡単にまとめました。
実際に使用する場合は、ここに記載したもの+Swing等を書くことになると思います。

##参考資料
* Dialogflow
* [Dialogflow 公式ドキュメント](https://cloud.google.com/dialogflow/docs “https://cloud.google.com/dialogflow/docs”)

* Maven
* [Dialogflow 公式ドキュメント](https://cloud.google.com/dialogflow/docs “https://cloud.google.com/dialogflow/docs”)
* [【超初心者向け】Maven超入門](https://qiita.com/tarosa0001/items/e5667cfa857529900216 ‘https://qiita.com/tarosa0001/items/e5667cfa857529900216’)
* [

元記事を表示

Tomcat + WebSocket で 1002 エラー

#結論

WebSocket で 1002エラーが発生するとサーバー側でエラーが発生している可能性が高い。

#経緯

JavaScript に限らないが、WebSocket プログラミングでサーバーから 1002 のエラーコードが返ることがある。

“`javascript

ws.onclose = function(event) {
if (event.wasClean) {
alert(“[close] Connection closed cleanly”);
} else {
console.log(“[close] Connection died ” + event.code + “,” + event.reason);
}
};

“`

“`
[close] Connection died 1002,An unrecoverable IOException occurred so the connection was closed
“`

しかしサーバー側(Tomcat 8.5) のコンソールを見ても何も表示され

元記事を表示

Spring Boot + Spring SecurityでRequestのBodyを複数回読み取る方法

# はじめに
Spring Securityの認可処理(投票クラスなど)において、
RequestのBodyを参照しなければならないケースが存在すると思います。
(例 POSTやPUTでDBを更新する場合など

しかし、HttpServletRequestクラスにおいて、
Bodyはストリームであり、読み取りは一度きりとなります。

そこで今回はBodyを複数回読み取る方法を紹介していきます。

## やりたいこと
①Bodyから読み取った情報を保持
②Bodyの取得元を①の情報へと差替え

## 差替え用クラスの準備
Streamクラス
HttpServletRequest.getInputStream()コール時の戻り値の型とし、
初期化にはbyte配列を使用

“`java:BufferedServletInputStream.java
public class BufferedServletInputStream extends ServletInputStream {

private ByteArrayInputStream inputStream;

// byte

元記事を表示

【Java】 ArrayListを配列に変換する

##ArrayListを配列に変換する方法と注意点

“`java:ListToArray.java
//ArrayList生成
ArrayList arrayList = new ArrayList();
arrayList.add(“A”);
arrayList.add(“B”);
arrayList.add(“C”);

String[] array = (String[])arrayList.toArray();

System.out.println(“ArrayList = ” + arrayList.toString());
System.out.println(“配列 = ” + Arrays.toString(array));
“`
###結果(NG)
“`
Exception in thread “main” java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;
“`
##なぜか
返すクラスを取得してみる

元記事を表示

【わかりやすく解説‼】Javaのポリモーフィズムの使い方

## 1.事前知識
– [【最新】UbuntuでJavaの環境を構築する方法](https://qiita.com/ryome/items/37c53e9638a9c6ea146a)

– [【初心者でもできる‼】Windows10にJava環境を作る方法(JDK14.0.1)](https://qiita.com/ryome/items/30135570954e36196821)

– [【わかりやすく解説‼】Javaのインスタンスの使い方](https://qiita.com/ryome/items/62ba0d8395af6698053a)

– [【初心者でもできる‼】Windows10にEclipseをインストールする方法(Java環境構築)](https://qiita.com/ryome/items/b47c5acdaa52cffbec58)

– [【わかりやすく解説‼】Javaのカプセル化の使い方](https://qiita.com/ryome/items/fc44dfad297b35bf7559)

– [【わかりやすく解説‼】Javaの継承の使い方【オーバーライ

元記事を表示

【JSP+Servlet入門】ちょっとアニメーション♬

今回は、「JSP+Servletでアニメーションしたい」を実現してみました。それなりですが、localで動かしているうちはpythonの方が簡単だし、そもそもjsで行けるじゃんが結論ですが、一応いろいろ遊んだので記録しておきます。
今回の参考は以下のとおりです。
【参考】
①[js_arrays@JS Tutorial@w3schools.com](https://www.w3schools.com/js/js_arrays.asp)
②[element.style.position – 表示位置設定@JavaScriptist](http://javascriptist.net/ref/element.style.position.html)
③[一定時間で画像を切り換える@JSすぐに使えるサンプル集](http://www.shurey.com/js/samples/3_img8.html)
④[JSPでの画像ファイル表示](https://oshiete.goo.ne.jp/qa/2419455.html)
###やったこと
・指定した画像を表示する
・アニメーション
###・指

元記事を表示

javaで他のクラスのメソッド呼び出すとis not visibleが出る原因

アクセス修飾子が

“`java

private
“`
になってるんジャマイカ?

元記事を表示

使用fernflower反编译JAR包

垃圾jd-gui,天天崩溃,不然就是反编译出错,找了下直接用fernflower。

从这里下载:http://files.minecraftforge.net/maven/net/minecraftforge/fernflower/

然后执行命令

“`bash
java -jar -dgs=1 fernflower-390.jar jdbc.jar ./src/
“`

反编译后的代码会在当前src目录下,重命名为zip解压就行了。

元記事を表示

JUnitで外部ライブラリを使用せずテストダブルを実装する

# テストダブルとは
演者の代役や影武者を意味する英単語 “double” から派生した言葉。
一般的にはモック、スタブと呼ばれる。

## なぜテストダブルを使用するのか

システムの単体テストにおいて、テスト対象が
他のクラスや外部要素に依存していないケースはほとんどない。
依存関係のあるテストは、対象だけでなく、その依存対象についてもテストしたことになる。

メリットとしては、よりシステム稼動時と同じ状態でテストが行われるため、
テスト結果が保証する内容の価値が上がるという側面がある。
一方のデメリットとしては、テスト失敗時に原因分析の範囲が広くなる、
依存対象の処理結果が予想できない場合は検証の精度が落ちるといった側面がある。

上記のデメリットに対する対策として、テストに対して影響を与える要素の代わりに
テストしやすい代役を立てて、テストの独立性を高めるという方法がある。
これらを実現するのが、スタブやモック(テストダブル)の使用である。

## スタブとモックの違い

両者とも、テスト対象が依存するクラスやモジュールの代用として使用する
クラスやモジュールという点では違いが

元記事を表示

Ruby と Perl と Java で解く AtCoder ABC 111 C

# はじめに
*[AtCoder Problems](https://kenkoooo.com/atcoder/#/)* の Recommendation を利用して、過去の問題を解いています。
AtCoder さん、AtCoder Problems さん、ありがとうございます。
# 今回のお題
*[AtCoder Beginner Contest 111 C – /\/\/\/](https://atcoder.jp/contests/abc111/tasks/arc103_a)*
Difficulty: 822

今回のテーマ、ハッシュのソート
# Ruby
重複した要素、とくればハッシュですよね。
解法は前回の、*[Ruby と Perl と Java で解く AtCoder ABC 113 C](https://qiita.com/superrino130/items/21111248bb21a4dac0b2)* に似た問題です。

“`ruby.rb
n = gets.to_i
v = gets.split.map(&:

元記事を表示

【Java】配列を宣言・初期化する

#配列を宣言する
・データ型を定義する
・変数名を定義する

“`java
//データ型=String、変数名=array
String[] array;
“`

#配列を初期化する
・要素数を定義する

“`java
//要素数=3
String[] array = new String[3];
“`

#配列を要素にデータを詰めて初期化する
・要素数の定義は不要
・データ型に一致する要素を定義する

“`java
//要素0=”a”、要素1=”b”、要素2=”c”
String[] array = {“a”,”b”,”c”};
“`

元記事を表示

OTHERカテゴリの最新記事