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

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

java配列

### 宣言
長さ指定は必須

“`java
int[] a; // 初期化しない
int[] a = new int[5]; // 0で初期化
int[][] a = new int[2][3]; // 二次元配列
“`

### 初期化
初期化しない時、初期値0

“`java
int[] a = {1, 2, 3}; // 長さ3
int[][] a = {{1,2},{3,4}}; // 二次元の初期化
“`

この書き方は初期化時のみ利用化、以下はダメの例

“`
void f(int[] a){
// 配列を引数受ける関数
}
f({1, 2, 3}); // この呼び出し方はダメ
“`

### 長さ
– 属性。関数ではない。
– 長さは変更不可。

“`java
a.length
a[0].length // 二次元の場合
“`

### 代入
– 添え字 0 始まり
– 最大添え字は length – 1
– 超えると「java.lang.ArrayIndexOutOfBoundsException」例外投げられる
– java.util.A

元記事を表示

AzurePipelinesでMavenプロジェクトのCI

以下の記事の続きで、今回はAzurePipelinesを使ってみます。
https://qiita.com/kasa_le/items/b152f91a61315a2b12b2

# Azure Pipelines
言わずとしれた、MicrosoftのクラウドサービスAzureの中の、Azure DevOpsに含まれるCIになります。
https://azure.microsoft.com/ja-jp/services/devops/

## 特徴
Azure Repos(AzureのGitリポジトリサービス)だけでなく、Githubや汎用Gitとも接続できます(※)。
当然、.NETやC#のプロジェクトのビルド環境が充実していて、Windows開発者は、実質AppVeyorかこちらかの二者択一でしょうね。もっとも、少し前まではAppVeyorしかなかったので、選択肢ができたことは良いことではないでしょうか。
Visual StudioやVisual Studio Codeとの連携やExtensionが充実しているのも流石です。

※ただし、SSH公開鍵方式での接続には非対応で、かつ、

元記事を表示

Springのapplication.propertiesでシステム環境変数を扱う

# はじめに
Spring(Boot)でアプリを作成する際にシステム環境変数から値を取得したい場合がある。
メモ書きも兼ねて取得方法を紹介する。

# どんな時にシステム環境変数を使うか

例えばDBに接続したい場合、`application.properties`には以下のような設定をする必要がある。

“`application.properties
### DB接続設定値 ###
spring.datasource.url=<データベースのURL>
spring.datasource.username=<ユーザー名>
spring.datasource.password=<パスワード>
“`

こういった場合、各設定値をシステム環境変数から取得するようにしておけば、以下のようなメリットが考えられる。

①__環境ごとに設定ファイルを作成する必要が無くなる。__
環境変数を前もって設定しておくか、実行時に設定するようにすれば、同じ設定ファイルを他の環境でも利用することが出来る。
各環境ごとの設定ファイル(例えば、`application-devXX.properties`)を複

元記事を表示

AWS Lambda で Javaを使う ー実装編 – EC2を止める/立ち上げる

##やりたいこと
Lambdaで実行するJavaでEC2を起動・停止する
(↓をJavaで書いてみて、ちょっとだけカスタマイズする。
https://aws.amazon.com/jp/premiumsupport/knowledge-center/start-stop-lambda-cloudwatch/)

##目次
・[Eclipse準備編](https://qiita.com/t_ookubo/items/a71a9bd05282bf20e023)
・登録実行編(次回以降)
・実装編 – EC2を止める/立ち上げる(今回)
・実装編 – CloudWatchの引数を確認する

## とりあえずクラス作成
前回Eclipseでサンプルクラスを作成できるようにしたので、
それを使って、入力タイプ「Custom」のLambdaプロジェクトを作る。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/559813/eb8e09b1-5ac5-5d43-68eb-4c694cff8ea3.png

元記事を表示

JavaアプリをDockerイメージにするならjibを使うと便利だよ

##メリットの多いDocker
コンテナ化技術の一つであるDockerですが、使ってみると数多くのメリットがあります。
実際のメリットについてはネットで検索すると色々出てくるので、この記事ではDockerそのものに関する解説はいたしません。
ただ個人的に強調しておきたいのは、本番環境などへ直接Javaのモジュールやアーカイブなどを配置するようなデプロイしている場合、Dockerイメージをリポジトリにpushするという作業に変えることでたくさんの恩恵を得ることができると思います。

##Dockerの面倒さ
メリットの多いDockerですが面倒な面もあります。
Dockerfileを書かないといけない。書くためのコマンドやベストプラクティスも学習するとなるとそれなりに面倒です。
ローカル開発環境がWindowsの場合にDocker環境を構築するのも面倒です。

##jibが解決
もしDockerコンテナ上で動くアプリケーションがJavaで開発されている場合、Googleが提供している[jib](https://github.com/GoogleContainerTools/jib)を利用

元記事を表示

【Java】日付から差分を算出したい

開始日付、終了日付をもとに処理時間を算出したかった。

“`java:date.java
import java.text.SimpleDateFormat;
import java.util.Date;

public class date {

public static void main(String[] args) {

SimpleDateFormat sdf = new SimpleDateFormat(“yyyy/MM/dd HH:mm:ss”);
Date start = null;
Date end = null;

// Date型に変換
try {
start = sdf.parse(“2020/03/23 12:30:12”);
end = sdf.parse(“2020/03/23 12:31:12”);
} catch (java.text.ParseException e) {
e.printStackTrace();
}

long timeStart = start.getTime();
lo

元記事を表示

spring-batchでメタデータとstepで異なるTransactionManagerを使う

spring-batchで2つ以上のデータソースを使う場合、step定義作成時に“`StepBuilderHelper#transactionManager“`でトランザクションマネージャを指定する。

以下は設定例。

“`java
import java.util.stream.Collectors;
import java.util.stream.IntStream;

import javax.sql.DataSource;

import org.springframework.batch.core.Job;
import org.springframework.batch.core.Step;
import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing;
import org.springframework.batch.core.configuration.annotation.JobBuilderFactory;
import org.springframe

元記事を表示

【Android】 Broadcast Recieverでintentを受け取る

# Broadcast Recieverとは?
– BroadcastReceiver(ブロードキャストレシーバー)とは、ブロードキャストしたインテントを受け取る仕組みのこと
– OSのAndroidシステム側でブロードキャストされるイベント(スクリーンのON/OFFなど)以外でも、自分で作成したアプリでも独自のインテントを生成してブロードキャストできる

# intentとは?
– intentとは、アプリケーションの中の1つ1つの機能のこと。たとえばアプリケーション同士や、アプリケーションとウィジェット、アプリケーションとシステムを橋渡しする仕組みのこと
– BroadcastRecieverを使わずとも、intentだけでも利用が可能で、例えば電話をかけたりカメラを起動することもできる
– BroadcastRecieverでは、例えばアプリをインストールした際などに発生するintentを検知することができます。例えば…
– スクリーンのON/OFFを検知する
– 電池の状態を検知する
– アプリのインストールを検知する
– 振動を検知する 等

#

元記事を表示

【AtCoder Beginner Contest 152 C問題】TLEについてと、printデバッグ位置のコツ

# printデバッグを入れる位置で混乱していませんか?

お久しぶりです。宇宙意志です。

今回はいつものように書き捨てのSeleniumではなく、[ABC152-C](https://atcoder.jp/contests/abc152/tasks/abc152_c)問題を見ていきたいと思います。__別にリングフィット購入の自動転売で大儲けしようとしたのにLambdaが動かなくてキレていた訳ではないです。__

今回の趣旨ですが__考え方とデバッグの位置を說明__です、まだTLE(時間切れ)で解けていません。

#問題の概要

1.N個の順列がバラバラに並んでいます
2.前からiを走査させます
3.走査中のiよりも手前にある順列全て(ここではjと定義されてます)と比較して、~~j!>=i!~~ j>=iが常に成立するならi 1つに付き1カウント
4.条件が成立するiの合計カウントを求める

という問題です。

#解法の考え方

1.まずこの問題を聞いた時に、__2重for文を使って配列のiの位置を記憶させて、
 jを配列として左端からiの位置まで走査すれば良いな__、というのはす

元記事を表示

java bronze silver合格

大分前ですがOracle認定のJava bronzeとsilverのSE8合格しました。
bronzeもsilverも対策は一緒なのでひとまとめに。

# 勉強時間の目安(bronze)
1. プログラミング未経験:50h
1. 何らかのプログラミング言語を習得している:30h
1. java経験者:10h

いきなりsilverを受験する場合は+10h程度

# 参考資料
[黒本](https://www.amazon.co.jp/%E5%BE%B9%E5%BA%95%E6%94%BB%E7%95%A5-Java-Silver-%E5%95%8F%E9%A1%8C%E9%9B%86-1Z0-808/dp/4844339931/ref=sr_1_1?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&keywords=%E5%BE%B9%E5%BA%95%E6%94%BB%E7%95%A5+Java+SE+8+Silver+%E5%95%8F%E9%A1%8C%E9%9B%86&qid=1584927815&sr=8-1)と[白本](htt

元記事を表示

GCPでJava版Minecraftサーバを建てた話(ついでにホワイトリストも設定)

# はじめに
前回建てた ubuntu のサーバにそのまま Java 版 Minecraft サーバを建てたときのメモです。
Java のチューニングについては書かないので別途調べてください┏(<:) AlwaysFree(一生無料)の「f1-micro」だとメモリサイズが小さすぎるので、事前に「n1-standard-1」に拡張しておきました。 # 1. Java 版 Minecraft サーバの構築 ## 1.1. Java のインストール サーバに SSH で接続して、root ユーザにスイッチしておきます。 ```shell su ``` root ユーザでログインしたら mkdir コマンドでサーバをインストールするディレクトリを作ります。 作ったら cd コマンドで移動します。 ```shell mkdir /mcjava cd /mcjava ``` Minecraft サーバをインストールしようと思いましたが、Java が入ってなさそうなので先に Java を入れましょう。 ```shell apt install default-jre ``` ディス

元記事を表示

AtCoderの挑戦環境構築(Java8)

# はじめに
AtCoderの挑戦環境が自分として満足できるところまで構築できたので
皆様のお役に立てるかはわかりませんが情報共有を兼ねて記事にまとめさせていただきました。

# モチベーション
– 自社風潮よりJavaを学習しておいたほうが良さそうに感じだしていた
– 3/1より本格的にJava学習を開始
– 習うより慣れよということで[CodingBat](https://codingbat.com/java)にて問題を解きまくり
– 問題の易しさもあり飽きが来ていたので情報収集から[AtCoder](https://atcoder.jp/?lang=ja)に到達
– 2020/3/14(土)開催の[パナソニックプログラミングコンテスト2020](https://atcoder.jp/contests/panasonic2020)にて初参加。
平方根の誤差調整ができずA,B2問のみという惨敗を喫した。
– その後過去問題の演習に励むが、はじめに利用していたCodingBatとは違い、
テストケースの容易や提出が徐々に手間と感じるようになる。
(問題選択ミスや言語選

元記事を表示

Java(jdk1.8以降)のファイル入出力のサンプルプログラム

Javaの(jdk1.8以降)のファイル入出力のサンプルプログラムのメモです。

# 1. バイナリファイルの読み込み

### 1.1. 一括読み込み

`C:/dk/input.xlsx`を一括で読み込み、16進数で標準出力に出力するサンプルプログラムです。
一括で読み込む場合、Outofmemoryにならないようサイズに注意する必要があります。

“`java:BinaryFileInputNio.java
package test.nio;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

/**
* バイナリーファイルを読み込む
*/
public class BinaryFileInputNio {

/**
* @param args
*/
public static void main(String[] args) {

// 読み込みファイルの名前
Path path

元記事を表示

spring-batchで複数DataSource定義時に使用する@BatchDataSource

spring-batchで複数のDataSourceを定義する場合、“`@BatchDataSource“`でspring-batchのauto-configurationで使用する方を指定できる。“`@BatchDataSource“`のjavadocによると“`2.2.0“`で追加されたものらしい。

その定義は以下のようになっており、実態は単なる“`@Qualifier“`。javadocによると典型的な使い方としては、“`@Primary“`を付与するメインのDataSourceと、このアノテーションを付与するspring-batch用のセカンドDataSource、というもの。メインとなるDBと、メタデータ格納先DBが分かれてる場合にこれを使う、といった感じだろう。

“`java
/**
* Qualifier annotation for a DataSource to be injected into Batch auto-configuration. Can
* be used on a secondary data source, if t

元記事を表示

【Java】JavaでMethod/ConstructorからKFunctionを取得する【Kotlin】

# やること
`Java`の`Method`/`Constructor`から`KFunction`を取り出します。

# やり方
下記の`Method.kotlinFunction`/`Constructor.kotlinFunction`を`Java`から呼び出せばできます。

– [kotlin/ReflectJvmMapping\.kt at master · JetBrains/kotlin](https://github.com/JetBrains/kotlin/blob/master/core/reflection.jvm/src/kotlin/reflect/jvm/ReflectJvmMapping.kt)

具体的には以下のようになります。

“`java
KFunction function = ReflectJvmMapping.getKotlinFunction(Foo.class.getConstructors()[0]);
“`

## 注意点
`Class`からの`Method`/`Constructor`取得にはジェネリクスの型パラメータ

元記事を表示

[Java] UbuntuにJavaの開発環境を構築&実行確認

# 環境
Ubuntu
VSCode

# やること
– Java, Maven, Intellij インストール
– vscodeの設定
– 実行確認
– エラー対処法

# インストール
以下、aptアップデートとjavaインストールとjavaバージョン確認をまとめて行うので注意です。

## Java

### インストール
“`
sudo apt update && sudo apt install default-jdk && java -version
“`
“`
openjdk version “11.0.6” 2020-01-14
OpenJDK Runtime Environment (build 11.0.6+10-post-Ubuntu-1ubuntu118.04.1)
OpenJDK 64-Bit Server VM (build 11.0.6+10-post-Ubuntu-1ubuntu118.04.1, mixed mode)
“`

### JAVA_HOME 設定

jdkのインストール場所は/usr/lib/jvm/にあるのでこちらのパスを〇〇

元記事を表示

gh-ost実行履歴をflywayのバージョン管理下に置くにはどうするか

## gh-ostとflywayについて
– [gh-ost](https://github.com/github/gh-ost) : オンラインスキーマ変更ツール
– [flyway](https://flywaydb.org/) : DBマイグレーションツール

なぜgh-ostを使うのか/なぜflywayを使うのかは公式に任せる

## 解決したい問題
flywayでバージョン管理したいが、gh-ostを直接実行してスキーマ変更すると、その変更はflyway管理下に置けない
`flyway migrate` したときにgh-ostコマンドが実行されて、成功/失敗がマークされるようにしたい

## どうするのか
flywayの [Custom Migration resolvers & executors](https://flywaydb.org/documentation/api/hooks#custom-migration-resolvers–executors) を使って `gh-ost` コマンドを実行できるようにする
公式は使い方が全く書いてないので、以下使い方を解

元記事を表示

分子系統学演習をdockerで(作業中)

分子系統学演習 データセットの作成から仮説検定まで 田辺晶史 2015/10/20
https://www.fifthdimension.jp/documents/molphytextbook/molphytextbook.ja.html

をdockerで動かそうと悪戦苦闘中(作業中)

# java

最適な Java の Docker イメージを選びたい
https://k11i.biz/blog/2018/05/17/base-docker-images-for-java/

Java 11 リリース後のオススメ Docker イメージを考える
https://k11i.biz/blog/2018/10/29/base-docker-images-for-java11/

Javaのサポートについてのまとめ2018
https://qiita.com/nowokay/items/edb5c5df4dbfc4a99ffb

JDKの公式Dockerイメージを使って手っ取り早くjshellを使うメモ
https://qiita.com/hi5san/items/d2f2fc7768

元記事を表示

Effective Java 第3版 「ほぼ全章」を「読みやすい日本語」で説明してみました。

Effective Javaは「一人前」のJavaエンジニアになるために避けては通れない書籍だと思います。特に公開APIを作るような立場にいるエンジニアは、この書籍に書かれてあることを把握していないと、まともなものを作れません。

素晴らしい書籍だということは言うまでもありませんが、一方で「要するにこういうことだよね」という理解をしづらい書籍であるとも感じます。

その原因は、おそらく以下のとおりでしょう。

* 表現が回りくどいです。
* 全部で90の項目がありますが、項目内の構造が分かりづらいです。
* コード例が必要以上に複雑な場合があります。

内容の本質そのものはあまり難しくないのに、こういった理由でこの書籍の敷居が上がるのは、何と言うかもったいないと思います。

そこで、本記事では(ほぼ)全項目について、できるだけ「読みやすい日本語」で内容を説明してみたいと思います。

ただし、あまりにも当たり前の話だったり、読むのが簡単な項目などについては、解説を省略しました。また、私見も混ざっています。そういった前提でご覧いただければと思います。

なお、Effective Java

元記事を表示

Java 14で最低限押さえておきたい新機能をEclipseで使ってみた

# はじめに
2020/3/17にJava 14がリリースされました。
以下の機能が追加されたようです。
下の表の「本記事の対象」列に〇がついているものを少し触ってみたので後で紹介します。

|JEP(※1) | 概要|本記事の対象|
|—|—|—|
|305 | [Pattern Matching for instanceof (Preview)](https://openjdk.java.net/jeps/305)(※2)|〇|
|343 | [Packaging Tool (Incubator)](https://openjdk.java.net/jeps/343)(※3)|×|
|345 | [NUMA-Aware Memory Allocation for G1](https://openjdk.java.net/jeps/345)|×|
|349 | [JFR Event Streaming](https://openjdk.java.net/jeps/349)|×|
|352 | [Non-Volatile Mapped Byte Buffers](https

元記事を表示

OTHERカテゴリの最新記事