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

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

Java HTTP Client API のタイムアウト設定

## 概要

– Java 11 から正式導入された HTTP Client API (java.net.http パッケージ) のタイムアウト設定について接続時の動作を検証する
– HTTP Client API では設定できるタイムアウト値が2種類ある
– 接続タイムアウト: HttpClient.Builder.connectTimeout
– リクエストタイムアウト: HttpRequest.Builder.timeout

## 検証結果からの考察

– 接続タイムアウト HttpClient.Builder.connectTimeout には接続タイムアウトの許容時間を指定する
– リクエストタイムアウト HttpRequest.Builder.timeout にはリクエスト全体 (接続タイムアウトや読み取りタイムアウトを含めたもの) の許容時間を指定する

## 公式ドキュメントによる情報

### HttpClient.Builder.connectTimeout

[HttpClient\.Builder \(Java SE 14 & JDK 14\)](ht

元記事を表示

インスタンスメソッドの呼び出しについて

インスタンスメソッドの呼び出しの書式についての備忘録です。

# メソッド呼び出しの書式について
– 同じインスタンスに定義されているメソッドの場合は[メソッド名(引数)]
– インスタンスに定義されているメソッドの場合は[変数.メソッド名(引数)]
– staticなメソッドの場合は[クラス名.メソッド名(引数)]

# 同じインスタンスに定義されているメソッド

“`java:Test.java
public class Test {
public void SayHello() {
System.out.println(“Hello World”);
}
public void Display() {
SayHello();
}
}
“`
# 異なるインスタンスに定義されているメソッド

新しくインスタンスを作成して、変数が格納されている参照を使う(hello.SayHello();)。

“`java:Hello.java
public class Hello{
public void SayHello() {
System.

元記事を表示

【Java】parallelStreamでプログラムを10倍速にする

## 結論
`parallelStream()` によってJavaプログラムは10倍速くなる可能性がある

## 環境
* CPU:Intel(R) Core(TM) i7-8750H CPU @ 2.20GHz、2208 Mhz、6 個のコア、12 個のロジカル プロセッサ
* メモリ:16GB
* Java:Amazon Corretto-11.0.3.7.1

## 検証内容
### 検証用コード

“`Main.java
import java.util.List;
import java.util.ArrayList;

public class Main {
public static void main(String[] args) {
List n1 = new ArrayList<>();
List n2 = new ArrayList<>();

for(int i = 0; i < 500; i++) { n1.add(i); n2.add(i); } long s1 = System.cu

元記事を表示

Javaの5種類のstaticをさらっと説明する

# 概要

Javaの「static」には5つの種類がある。しかし、それぞれは似て非なるものである。
本記事では、それぞれのstaticについて、落とし穴にハマらないための要点を説明する。
もっと詳しく知りたい場合は、記事最後の参考資料などを参照されたい。

# 1. staticメソッド

メソッドにstatic修飾子が付与されていると、staticメソッドとなる。

“`java
public static boolean equals(Object a, Object b) {
return (a == b) || (a != null && a.equals(b));
}
“`

staticメソッドは、インスタンスをnewしなくても呼び出すことができるため、一見便利に思える(使いやすそうに見える)。
しかし、[単体テストを書きやすくするためには、「決まりきった処理」のみに利用すべき](https://qiita.com/flyaway/items/34069ca6ad9ada4c0fef#%E5%95%8F%E9%A1%8C%E3%82%92%E8%A7%A3%E

元記事を表示

モンテカルロ法による各言語の速度比較

#はじめに

[モンテカルロ法](https://ja.wikipedia.org/wiki/%E3%83%A2%E3%83%B3%E3%83%86%E3%82%AB%E3%83%AB%E3%83%AD%E6%B3%95)
モンテカルロ法を使用して各言語で円周率を求めることにより各言語の速度比較を行います。
モンテカルロ法とは、1.0>=x>=0, 1.0>=y>=0に任意の(乱数の)点を落とし、その落とされた点が原点(0,0)からの円内に落ちたものと、円外に落ちたものの比を求め、その比が円周率になるというものです。
もちろん、計算で求められた円周率に近似するものの、正確な値はでませんが、プログラミング言語で実装することには意味があると思っています。
理由としては、
・浮動小数点計算の速度が比較できる。
・Loop速度が比較できる。
・メモリの使用は少量であり、ページングは(おそらく)発生しない。
・DiskIOが発生しないため、外部記憶装置の影響を受けにくい。
・正解の円周率は既知の情報であり、デバッグが楽。
などがあります。

各言語ソース
#perl

perlは今まで試した中で

元記事を表示

Javaの繰り返し処理

##はじめに
正直クラスの書き方全然理解できない(本内容とは無関係)

###繰り返し処理
繰り返し処理とは、一定の処理を自動で繰り返し行う処理のこと**while**文と**for**文

“`kane.java
while(条件){
繰り返す処理;
}

for(条件){
繰り返す処理;
}
“`

“`kane.java
int = 1; //初期化

while(i <= 5){ //条件 System.out.println(i); //繰り返す処理 i++; //1を追加していく 変数の更新 } for(int i = 1; i <= 5; i++){ //初期化、条件、更新をまとめて書ける System.out.println(i); //繰り返す処理 } ``` 変数に**1を足し忘れる**と変数は**1のまま変わらず**、条件が**永遠にtrue**になるので、繰り返し処理が無限に行われる(無限ループ) ##break 繰り返しを終わらせるた

元記事を表示

Java 11 から正式導入された HTTP Client API で Yahoo!ショッピング商品検索(v3) の API をコールするサンプルコード

## 概要

– Java 11 から正式導入された HTTP Client API (java.net.http パッケージの HttpClient, HttpRequest, HttpResponse クラスなど) を使って、Yahoo!ショッピング商品検索(v3) の API をコールするサンプルプログラムを作る

## 今回の環境

– Java 11 (AdoptOpenJDK 11.0.7+10)
– Jackson Databind 2.11.0
– Gradle 6.5
– macOS Catalina

## ソースコード

### ソースコード一覧

“`
├── build.gradle
└── src
└── main
└── java
└── com
└── example
├── ErrorResponse.java
├── ItemSearch.java

元記事を表示

CameraXとOpenCVを使った画像処理Androidアプリのひな形

# はじめに
Androidでカメラ画像を入力して、何らかの画像処理を行うためのサンプルプロジェクトです。

以前別の記事( [Androidで OpenCV 4を使う方法とカメラライブビューの表示](https://qiita.com/iwatake2222/items/2642669419fdaa20a8a6) )で、カメラ読み込みもOpenCVを使った方法を記載しましたが、最新のAndroid SDKだと使えないようでした。

Camera APIが廃止され、Camera2 APIを使うことが推奨されていましたが非常に使いづらいです。より簡単にAndroid上でカメラを触れるCameraXというものが存在しました。今回はこれを使ってみます。
CameraXは使い方が簡単で、チュートリアルも充実しています (https://developer.android.com/training/camerax ) 。ネット上のほとんどのサンプルがKotolin向けだったので、ここではJavaで書いてみようと思います。

今回は、入力画像と前フレームの画像との差分を計算して、変化したところが

元記事を表示

Vue.jsで糖質制限の情報をまとめたサイトを作った

# はじめに
こんなサイトを作りました。
https://lowcarb-recommend.com/
![toppage.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/296013/4a23169c-4fd6-0a69-b3c6-38d7327b9c5b.png)

3月中旬くらいにそろそろ手を出すか~とVue.jsのお勉強を始め、ゴールデンウィーク終わりごろにそろそろ何か作りたいなーと思っていた時、ちょうど自粛生活で太り気味で糖質制限ダイエットを始めていたので、それに関する情報をまとめたサイトを作ろうと思い作成を始めました。

# どんな機能があるの?
機能としては下記3点です。

1. 糖質制限食をランキングで閲覧
2. 糖質制限レシピの閲覧
3. 糖質制限に関するニュースの閲覧

1.の糖質制限食に関しては楽天市場系APIより情報を取得し、ショップごと、もしくはジャンルごと(パンや麺類など)で検索をかけられるようにしました

2.の糖質制限レシピについては、これも楽天レシピ系APIより情報を取得

元記事を表示

Spring の RestTemplate で Yahoo!ショッピング商品検索(v3) の API をコールするサンプルコード

## 概要

– Spring が提供する HTTP クライアント RestTemplate を使って、Yahoo!ショッピング商品検索 (v3)の API をコールするサンプルプログラムを作る

## 今回の環境

– Java 11 (AdoptOpenJDK 11.0.7+10)
– Spring Web 5.2.7
– Jackson Databind 2.11.0
– Gradle 6.5
– macOS Catalina

## ソースコード

### ソースコード一覧

“`
├── build.gradle
└── src
└── main
└── java
└── com
└── example
├── ErrorResponse.java
├── ItemSearch.java
└── ResultSet.java
“`

### build.gradle

“`

元記事を表示

LINEBOTを使ってオーキド博士を作った話

# はじめに
LINEのMessagingAPIを使って何か作成したいなと考えていたところ、
友人がポケモンにハマっているという話を聞いて、ポケモンの検索やランダムでポケモンを取得し、種族値合計で他のユーザと対戦するようなものを作成しようと思いました。

作成したBOTは↓のURLから追加できます。ぜひお試しください!
[lin.ee/zmHQYl6](https://line.me/R/ti/p/%40655ntiqn)

# 環境

* サーバー(2台構成)
* APサーバー(Nginx)
* DBサーバー(PostgreSQL)
* 作成言語
* Java(Spring Boot)
* Messaging API(API)

# できること
* ポケモン検索
* 図鑑番号検索
* ポケモン名検索(LIKE検索)
* ランダム取得
* ランダム取得(1体)
* ランダム取得(6体)
* 種族値合計ランキング
* 歴代ランキング
* 月間ランキング
* すばやさ確認
* 作成中

# 完成形
*

元記事を表示

【AWS SDK for Java】S3クライアントにリトライポリシーを設定する

ジャストほしい情報が日本語でなかったのでドキュメンテーションする。
AWS SDK for Javaを利用してS3にファイルをアップロードする際に、やや詳細な設定を付加する。

# 目次
– リトライ周りのケース概略
– とりあえず実装してみる
– 関連クラスの整理
– その他
– 参考

# リトライ周りのケース概略
AWS SDK for Javaを使って、ローカルにあるS3にファイルをアップロードしたい。
そして、AWS側の都合で通信断となったり諸事情により正常稼働できないケースを見越して、AWSクライアントにリトライポリシーを仕込みたい。
今回は、AWS SDK for Javaに含まれる `AmazonS3` オブジェクトのシングルトンを返すユーティリティクラスを用意する。

なお、本記事では自分が特に困った「クライアント生成時のオプション設定」にフォーカスを置く。そのため、ファイルアップロード前後の処理関連の説明は省略する。

# とりあえず実装してみる
シンプルなクライアントオプションを詰めたクライアントを構築する。
流れとしては、リトライポリシーインスタンス、クライアン

元記事を表示

【Java】気付きにくいけど恐ろしく遅くなるコード

## 目的
レビューをしていてIntegerだったりintだったりが混ざったコードに出会いました。
オートボクシングで変換掛かるから問題ないかなと一瞬思ったけど、性能面はどうなんだろうと気になってしまったので検証してみたいと思います。

## 検証環境
– Eclipse Oxygen.3a Release (4.7.3a)
– Java8

## 検証用ソースコード
**1.参照型とプリミティブ型が混ざったパターン**

“`java:qiita.java
long begin = 0L;
long end = 0L;

begin = System.currentTimeMillis();

Integer sum = 0;

for(int i = 0; i < 1000000; i++) { sum += i; } end = System.currentTimeMillis(); System.out.println(end - begin + "ミリ秒"); ``` **2.プリミティブ型のみのパターン** ```java:qiita.java long be

元記事を表示

項目57 ローカル変数のスコープを最小限にする

### 前提
java開発歴1ヶ月程度の新人が、Effective Javaを読んで学習した内容をアウトプットするために書いています。自分の解釈を噛み砕いて解説し、初心者が読んでもできるだけ理解しやすい記事を目指しています。

###【ざっくり】
ローカル変数のスコープを最小限にすることで、コードの可読性と保守性が向上し、ミスが生まれる可能性を減らすことができる。

####【悪い例1】
“`java:badPractice1
String hoge = “hoge”;
int fuga;
double piyo = 0.1;

doSomething(hoge);

… //何らかの処理

doSomething(fuga); // fugaの型なんだっけ? 初期値なんだっけ?

… //何らかの処理

{
doSomething(piyo) // piyoの型なんだっけ? 初期値なんだっけ?
}

“`

– 読み手の注意を逸らしてしまう。
-> どのような処理を行っているかを理解しようとしているのに、変数の記憶に脳のリソースを使ってしまう。
– 読

元記事を表示

ゼロから始めるScala (環境構築 mac)

# Scala をはじめよう

## Scala とは?

プログラミング言語の1つ。

「オブジェクト指向」と「関数型プログラミング」の両方の性質を併せ持つ (両方できる二刀流)。

## Scala の「良さ」
* オブジェクト指向と関数型プログラミングの両方を表現できる。
* オブジェクトの「不変性」が意識された設計
* 高いモジュール性
* Java と互換性がある (Java のライブラリを使うことができる)
* 非同期の計算ができる `Future` ライブラリを標準装備
* 並列・分散プログラミングのためのライブラリ `Akka` がある

## インストール on Mac

`Homebrew` を使うのが簡単だと思う。

環境構築は全部こいつでなんとかなる(気がする)。

### 探す

“`console
# scala (本体, しかし前提として Java が動く環境が必要 – 後述)
$ brew search scala
==> Formulae
scala scala@2.11 scala@2.12 scalaenv sca

元記事を表示

ChromeDriver 通知バー消す方法 (Java)

# Selenium (ChromeDriver) での「自動テストソフトウェアによって制御されています]という通知バーを削除する方法

|![無題.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531595/0f385dee-a0d5-dd2b-7480-ca7250710894.png)|
|:–|
この表示邪魔ですよねー。

通知バーを消すと、デベロッパーモードを無効にしますか?とポップアップが出てしまい、
なかなか方法が見つかりませんでしたが、合わせ技で通知バーを消すことができたので記事に起こしておきます。

“`
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;

ChromeOptions options = new ChromeOptions();
options.setExperimentalOption(“excludeSwitches”

元記事を表示

[Java]メソッド

#メソッド定義
`public static void メソッド名(){処理;}`

“`java
public static void hello() {
System.out.println(“hello world”);
}
“`

#オーバーロード
`引数の型、個数を変えることで可能`
同じメソッド名で引数が違う

“`java
public static void hello() {
System.out.println(“hello world”);
}

public static void hello(String name) {
System.out.println(“こんにちは” + name + “さん”);
}
“`

元記事を表示

R50のリープフロッグ ~ 西暦2020年の今、偏差値50のプログラマを目指すお前が学ぶべきこと

#タイムスタンプ
初回投稿日:2020年6月26日
最終更新日:2020年6月28日

#対象読者

この投稿は、ちょうど20年ほど前にソフトウェアエンジニアとしてのピークを迎えていた当時30歳くらいの自分自身に宛てて書いた手紙です。

したがって、この内容は個人的なものであり、くたびれた老兵の戯言であり、ピントがずれ時代を捉えきれておらず、網羅的でもなければ他者には通じないアナロジーに溢れていて、多くの方にとって役に立たないばかりか、酷い勘違いや致命的な間違いを含んでいるかもしれません。

とは言うものの、現在の私のように、今もなお 20 年前の知見や思考パターンが生活のベースになっている方、新しい知識や用語は押さえているもののそれが今一つ自身の血肉になっていないと感じている方、最近の技術トレンドを押さえたいけれど情報の洪水に溺れそうになり何から手を付ければいいかわからないという方にとっては、あるいはこの記事が役に立つようなことがあるかもしれません。

[](////////////////////////////////////////////////////////////

元記事を表示

JConsoleでJMXに接続してもすぐ切断される(泣)

JMXにjconsoleを使って接続しても一瞬繋がるけどすぐ切れる現象に遭遇

openjdk14.0.1 のjconsoleから接続していたけれど
openjdk12.0.2 にしたら切れなくなりました。

ちなみに環境は
サーバー(JMX) CentOS7 + JDK1.8.0_211
クライアント(jconsole) ubuntu20.04

元記事を表示

【Android9.0 Pie Java】チャットアプリで横スワイプ→ダイアログ表示→削除を実装する

## 環境
Android9.0 Pie Java

## はじめに
最近Android Javaでチャットアプリを作成していまして、LINE風のチャット一覧削除を実装しました。
RecyclerViewのリスト表示と削除機能の記事は結構ありますが、

`横スワイプ→ダイアログ表示→削除
MainActivity + 複数のFragment構成`

の実装例は日本語の記事では見つからなかったので共有させて頂きます。
(ベストプラクティスかは怪しいので参考程度にお願いします。。ご指摘大歓迎です!)

こんな実装ができます
![243e5a5ccb079ad0d385004d69a930ba.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285286/3f39bf3a-7993-5e79-1c9c-6af03bf1d8f4.gif)

## 完成品URL
非常にコンテンツが長いので、完成品を取り合えず手に入れたい方はこちらからどうぞ。
https://github.com/yuta-matsumoto/

元記事を表示

OTHERカテゴリの最新記事