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

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

Java Silverに合格するのに必要な知識まとめ

#はじめに
仕事でJavaを使う必要があり、とりあえず体系的に学ぶためにJava Silverを取ろうと思ったので、そこで学んだことをキーワード的に簡単にまとめて行きます。

#Javaの基本
##クラス宣言
クラス宣言はフィールドとメソッドで構成される。コンストラクタはメソッドの一部

##パッケージの目的
+ 名前空間を提供し、名前の衝突を避ける
+ アクセス修飾子と組み合わせてアクセス制御機能を提供する
+ クラスの分類を可能とする

##パッケージ宣言
+ パッケージ宣言は、必ずソースコードの先頭行に記述する
+ パッケージ宣言よりも前に記述出来るのはコメントだけ

##クラスのインポート
+ java.langパッケージは基本的なクラスがまとめられたパッケージであり、インポート宣言省略可能
+ 指定したパッケージに属するクラスはインポートされるが、サブパッケージはインポートされない

##パッケージとアクセス制御
パッケージに属するクラスは、同じパッケージのクラスからしかアクセスできない。無名パッケージに属するクラスは同じ無名パッケージに属するクラスからしかアクセスできない

元記事を表示

SpringのFilterでHttpResponseのBody部を取得する

いい感じの凡例が見つからなかったので作ってみました。
STSのデバック環境下で動作確認済みです。

“`java:LoggingFilter.java
@Component
public class LoggingFilter implements Filter {
private static final Logger log = LoggerFactory.getLogger(LoggingFilter.class.getName());

@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {

HttpServletResponseWrapperEx httpResponseEx = new HttpServletResponseWrapperEx(httpResponse);
chain.doFilter(request, httpR

元記事を表示

Spring Cloud FunctionでAmazon API Gatewayのプロキシ統合なLambda関数をサクッと書いてみる

# はじめに
Lambda関数をJavaで実装するのは面倒くさい。
Spring Cloud Functionというのを使うと、その辺の煩雑さを良い感じにフレームワークが吸収してくれるらしい。
ということで、本当に良い感じに吸収されてサクッと書けるのかを試してみた。

ちなみに、Spring Cloud Functionはプロキシ統合していないサンプルは多くあれど、統合版はなかなか見つからなかったので、その検討の一助にもなれば。

# 構成
以下のようなMavenプロジェクトを作成する。

“`tree
SpringCloudFunctionTest
├── pom.xml
├── serverless.yml
└── src
   ├── main
   │   ├── java
   │   │   └── com
   │   │   └── springcloudfunctiontest
   │   │   ├── AWSLambdaHandler.java
   │   │   ├── Hello.java
   │ 

元記事を表示

JAVAオブジェクトマッピングライブラリ

#はじめに
Beanの変換に詰め替え作業は手動で実施するとコード量は増えてしまい、メンテナンス性は良くないです。
BeanUtils.copyPropertiesのような便利メソッドがありますが、ほかのマッピングライブラリをまとめてみます。

#FasterXML ObjectMapper
https://github.com/FasterXML/jackson-databind

JSON関連する処理はこれを使うと便利です。

##使い方
###build.gradleに追加
“`build.gradle
// https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind
compile group: ‘com.fasterxml.jackson.core’, name: ‘jackson-databind’, version: ‘2.9.8’
“`

###Beanクラス作成
“`java
package com.test.lombok;

import lombok.Getter

元記事を表示

【Java】enumを使ってDBのステータスコードをコード値変換する

DBに登録されたステータスコードをJava側でコード値に変換するサンプルです。
これにより、ステータスコードの意味を定義するマスタを作成する必要がなくなります。
フレームワークはSpring Boot。

## 環境
– OS:Windows10
– IDE:Eclipse2020-03
– Java:8
– MySQL:5.7
– Hibernate ORM:5.4
– Spring Boot:2.3.1

## 概要
生徒テーブルに登録された生徒ステータスコード(整数値)をJava側でenumを用いて対応するコード値に変換します。

### ER図
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/356958/d974ef0d-edb8-d49f-f1ec-8290e85d1db8.png)

## ステータスコードとコード値
|ステータスコード|コード値|
|—|—|
|1|在学中|
|2|休学中|
|3|卒業|

### パッケージ構成図
“`
enum-sample

元記事を表示

今更Spring framework+JettyでHelloWorld Webアプリを作る

タイトル通りですが、10年ぶりにJavaを仕事で触る機会ができたので、今のうちに自習します。
稼働中の既存システムの勉強なので、最新の技術スタックではなく、ちょっと古めの組み合わせです。

Webアプリはデプロイせず、ローカルで実行するだけ。

# 使うツールと筆者の知識レベル。
– Mac book Pro
– 使い始めて半年くらい。私生活はほぼWindows。
– Java
– 約10年ぶりに触る。3年くらい触ってた。当時はちょうどJava8が発表されたくらいか。
– Maven
– 大昔にちょっとだけ触ったことがある。当時のメインはAntだった。今はGradleの方が主流?
– Spring framework
– 名前は知ってる。当時はStrutsも多かったが、今はSpring bootなのだろう。
– IntelliJ IDEA Community
– 名前は知ってる。当時はEclipseしか使っていなかった。
– Jetty Server
– JavaはTomcat以外で使ったことがなかった

# 環境準備

Javaは以前に

元記事を表示

HerokuにBasic認証の導入【Spring Framework】

#成果物
スクリーンショット 2020-06-28 17.22.18.png

#準備

[Heroku公式ドキュメント](https://devcenter.heroku.com/articles/java-webapp-runner#deploy-your-application-to-heroku)

↑のHeroku公式ドキュメントにしたがって、Herokuデプロイの準備をすること。

“`xml:pom.xml
・・・ war ・・・

・・・


元記事を表示

DockerをインストールしてJava実行環境をつくる

新しいパソコンでJava実行環境を構築するにあたり、せっかくならDockerでやってみようと思った備忘録

## 環境
– Windows 10 Home (64bit)

##Dockerのインストール
1. VirtualBoxとかKitematicとか全部入りの [Docker Toolbox [link] ](https://github.com/docker/toolbox/releases)をダウンロード
2. Setup画面はデフォルト設定でOK、最後の画面で確認し[Install]をクリック
3. デスクトップに作成されたDocker Quickstart Terminalのショートカット(>🐋みたいなやつ)を起動させると色々表示されるので待つ
4. 画像のようにクジラの絵が出たら完了2020-06-27 (1).png【Android】DataBindingのvariableはcamelCaseで書くのが無難

“`xml

“`
より、

“`xml

“`
のが困らないと思うっすという話。プチハマったので。

## 具体例
「被``ファイルでsnake_caseのvariableを使おうとしたらアクセスできなかった」

#### 書いてみるxml

“`child.xml




元記事を表示

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が発生しないため、外部記憶装置の影響を受けにくい。
・正解の円周率は既知の情報であり、デバッグが楽。
などがあります。

2020年6月28日 rubyを追加しました。
202

元記事を表示

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体)
* 種族値合計ランキング
* 歴代ランキング
* 月間ランキング
* すばやさ確認
* 作成中

# 完成形
*

元記事を表示

OTHERカテゴリの最新記事