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

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

Ruby と Perl と Java と Python で解く AtCoder ABC 047 C

# はじめに
*[AtCoder Problems](https://kenkoooo.com/atcoder/#/)* の Recommendation を利用して、過去の問題を解いています。
AtCoder さん、AtCoder Problems さん、ありがとうございます。
# 今回のお題
*[AtCoder Beginner Contest 047 C – 一次元リバーシ](https://atcoder.jp/contests/abc047/tasks/arc063_a)*
Difficulty: 650

今回のテーマ、正規表現
# Ruby
例えば、`WWWWBBWBBB` を W B でそれぞれまとめますと `WBWB` となり、3回で一色にできることが分かります。
こういう文字列の処理は正規表現を使用すると簡単に解けます。
*[AtCoder に登録したら次にやること ~ これだけ解けば十分闘える!過去問精選 10 問 ~](https://qiita.com/drken/items/fd4e5e3630d0f58

元記事を表示

Android – AsyncTaskの直列処理と並列処理の順番は保証されるのか??

Android開発において、AsyncTaskで直列処理と並列処理について、ほぼ同時に動いた時はどのような動きになるのか、実際に順番は保証されるのかわからなかったので、軽くコードを組んでみて確認してみましたので、メモとして残しておきたいと思います。

【参考URL】
[developer – AsyncTask](https://developer.android.com/reference/android/os/AsyncTask)
[Android – AsyncTaskの直列処理?並列処理?](https://qiita.com/marusa/items/e4c3b780f8926e6afc17)
[AsyncTaskの非同期処理はどのように実現しているのか](https://qiita.com/kazy/items/755e8d3e9e36f5730895)

#【試作1】タスク1:直列処理、タスク2:並列処理の場合
task1:execute()
task2:executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR)

“`
// 1

元記事を表示

実践プログラミング入門

## はじめに

これは、入門書などの無味乾燥な例題では納得して理解できない初学者のためのプログラミングチュートリアルである。

この記事では、プログラミングはプログラムを書くことによって学ぶという視点に立ち実践を重視する。楽器の演奏や車の運転のように本を読んだだけで出来るようにはならない。ここではオセロとカードゲームUNOの実装を通してプログラミングの重要な概念を伝える。オセロでは値と型、メソッドについて。UNOではオブジェクト指向を取り扱う。

## オセロ実装

1つ目の題材はオセロである。オセロはゲームの状態やプレイヤーの操作が少ないが、ひっくり返すという操作は複雑であり練習にちょうど良い。

オセロをプログラムするためには何が必要になるだろうか。十分な考察ののち、プログラマはその答えをネットの海に求める。検索の技術はプログラマにとって最も重要な技術の一つである。既存の技術を活用し時間や集中力といった資源をより重要な問題に充てることができるからである。検索の技術とは、検索によって得られた情報の中から必要なものを抽出し活用する技術のことである。

では最初の実践である。

実践1

元記事を表示

Ruby と Perl と Java と Python で解く AtCoder ATC 002 B

# はじめに
AtCoder Typical Contest(ATC) とは、競技プログラミングにおける、典型問題を出題するコンテストです。
AtCoder さん、ありがとうございます。

# 今回のお題
*[AtCoder Typical Contest 002 B – n^p mod m](https://atcoder.jp/contests/atc002/tasks/atc002_b)*

今回のテーマ、繰返し二乗法
# Ruby
例えば、2 の 64 乗を求める場合、単に 2 を掛けるのであれば 63 回掛け算が必要ですが、計算結果を利用することにより 6 回の掛け算で求めることができ、計算の高速化につながります。

“`2^64.rb
n = 2
63.times do
n *= 2
end
puts n # => 18446744073709551616

n = 2
6.times do
n *= n
end
puts n # => 18446744073709551616
“`
これを奇数乗や除数にも適応したのが、繰返し二乗法になります。

“`ruby

元記事を表示

GradleでJavaのマルチプロジェクト作成

Gradleでマルチプロジェクトを行う方法です。

## 単一プロジェクトでjarファイル作成

マルチプロジェクトの前に、まず単一のプロジェクトでjarファイルを作成して実行してみます。

### gradleプロジェクト作成

“`java:gradle初期化
$ gradle init

Select type of project to generate:
1: basic
2: application
3: library
4: Gradle plugin
Enter selection (default: basic) [1..4] 1

Select build script DSL:
1: Groovy
2: Kotlin
Enter selection (default: Groovy) [1..2] 1

Project name (default: JavaMultiProject):

> Task :init
Get more help with your project: https://guides.gradle.org/cr

元記事を表示

オンプレミス環境に Spring Framework 開発環境を構築するぞ

**このページは未完成人です** :cold_sweat:

# はじめに

Java ベースのアプリケーションフレームワークである [Spring Framework](https://spring.io/) の開発環境をインターネット接続ができないオンプレミス環境へ構築しようという話です。

大きく、以下のテーマを取り上げます。

– Maven リポジトリサーバーの構築
– [Spring Initializr](https://start.spring.io/) のミラーを構築

コマンドの例は、Linux を基準に書いていますのでパスデリミタの / は環境に合わせて適宜、読み替えてください。

## 必要な知識等

– Java
– Apache Maven
– Git
– diff 出力が理解できること
– シェルまたはコマンドプロンプト
– 英語が読めなくてもページをそっ閉じしない気概 :stuck_out_tongue_winking_eye:

# Maven リポジトリサーバーの構築

Spring Framework の依存ライブラリをキャッシュした Ma

元記事を表示

【Java】ArrayListの正体

#ArrayListの宣言・初期化方法

ArrayListは以下のように宣言する。
ArrayList<型> 変数名 = new ArrayList<型>(初期容量); ※初期容量は省略可

“`java:ArrayListSample.java
ArrayList arrayList = new ArrayList(); // 初期容量指定しない
ArrayList arrayList = new ArrayList(3); // 初期容量指定する
//ArrayList arrayList = new ArrayList(); // コンパイルエラー
“`

#なぜプリミティブ型はだめなのか
ArrayListの中身を見てみる

“`java:ArrayList.class
public class ArrayList extends AbstractList … {
private static final int DEFAULT_CAP

元記事を表示

Shiro RememberMe 1.2.4 反序列化分析

## 复现
“`bash
git clone https://github.com/apache/shiro.git
git checkout shiro-root-1.2.4
“`
然后导入maven项目之后,在`samples/web/pom.xml`配置jstl版本和反序列化用到的gadget链依赖。

“`xml 1.6
1.6

javax.servlet
jstl

1.2
runtime


元記事を表示

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 Arra

元記事を表示

【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

元記事を表示

OTHERカテゴリの最新記事