JAVA関連のことを調べてみた2021年11月09日

JAVA関連のことを調べてみた2021年11月09日

【AtCoder】JavaでABC226のA,B問題を解く!

ABC226のA,B問題をJavaで解きました。(C問題は難しくて解けませんでした)
備忘録としてまとめておきます。

#A問題『Round decimals』
問題ページ:[A – Round decimals](https://atcoder.jp/contests/abc226/tasks/abc226_a)

X:小数点第三位までの実数
X を小数第一位で四捨五入して得られる整数を出力する

小数点を持つ実数は、「Double型」で宣言します。
宣言(入力値を取得)した変数をroundメソッドを用いて、小数第一位で四捨五入します。

##コード
“`java
import java.util.*;
public class Main
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);

// 画面入力値を取得する
double scanD = sc.nextDouble();

//小

元記事を表示

Gradle test でOutOfMemoryError

SpringBootのテストをJenkinsで行っていたんですが、
ある日OutOfMemoryErrorで落ちて如何ともし難くなりました。かなしみ。

![OOM.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/38628/6a1ecbd2-edc8-84b9-d3b4-871979d0ca8d.png)

一応、何度かトライして復旧できたので、ログを残しておきます。

## 環境

– Java8
– CentOS7
– Jenkins
– JUnit5

## ①ヒープを増やす

“`
java.lang.OutOfMemoryError: GC overhead limit exceeded
“`
とあり、[Jenkins-SlaveでUnitTestがOutOfMemory](https://qiita.com/fake-deli-ca/items/b2cadce085595c57636d) (@fake-deli-ca) の記事によるとtestタスクはプロセスが別になって実行される(へー知

元記事を表示

Scalaの依存型制約を使って、優良顧客リストをクラスレベルの型安全性を担保して生成するコード

以下の2つのステップで、__課金額を格納する数値リスト__に、__「10,000円〜10,000,000円の範囲内の数値しか格納できない」という制約条件__を、データ型制約として付加してみます。

この記事の続編として、上記の条件に合致する顧客名だけを格納できる、タプル__(ユーザ名, 累積課金金額)__のListを作るコードを書く予定です。

##( 手順 )

__【 Step 1 】__
数値区間[10000, 10000000]の範囲内にある整数値を、データ型クラス__*HighLoyalityCustomerSalesCondition*__として定義する。

>“`Scala:sbtConsole
>scala> type HighLoyalityCustomerSalesCondition = Int Refined Interval.ClosedOpen[10000, 10000000]
type HighLoyalityCustomerSalesCondition
>“`

__【 Step 2 】__
データ型クラス__*HighLoyalityCustome

元記事を表示

Android Studioでビルドエラーと格闘する

# はじめに
2016年頃まで自作のAndroidアプリを作って、[Google Play](https://play.google.com/store/apps/developer?id=hamham)に公開していました。
2021年の某日。突然Googleから**「ご対応のお願い: Google Play のポリシーをアプリが遵守していません」**とのメールがきて、アプリがストアから削除されてしまいました。
最後のアプリのアップデートをしてから5年も経って、突然こうなったということは、**Google Play側のデベロッパープログラムポリシーの変更に追随できておらず放置していたということが原因**と考えられます。
幸い、ポリシーに違反していた部分は軽微だったので修正自体は難しくなさそうです。
ポリシー違反部分を修正して再アップすればよいのですが、なんせ5年も前なので、開発環境を整えていたPCは手放してしまったし、アプリのビルドやストアへの公開方法も忘れてしまっている状態です。
残っているのはzipで固められた当時のソースコードのみ。

ということで、開発環境を構築して、アプリをビ

元記事を表示

Scala:コンストラクタに「上限境界」制約をかけて、条件を充足しないインスタンスの生成を禁じる

###次のスクリプトファイルをコンパイルして実行する

####( クラス間の継承関係 )

HighLoyalityCustomerクラス –> NormalCustomerクラス –> Customerクラス –> Personクラス

####( 継承クラスのコンストラクタに付けた「上限境界」制約)

– CustomerContainerクラスのコンストラクタは、Customerクラスそれ自体か、Customerクラスのサブクラスのみ受け入れる。

>“`Scala:
>class CustomerContainer[C <: Customer](c: C) { ``` - GoodCustomerContainerクラスのコンストラクタは、HighLoyalityCustomerクラスそれ自体か、HighLoyalityCustomerクラスのサブクラスのみ受け入れる。 >“`Scala:
>class GoodCustomerContainer[H <: HighLoyalityCustomer](h: H) { >“`

“`Scala:bounde

元記事を表示

HelloWorldまでの流れ

初投稿です。似たような記事はたくさんありますが、学習したことを備忘録や日記のような形でアウトプットしていきます。
間違った内容があればご指摘して頂けると幸いです。

環境はオンラインIDE(openjdk version “16.0.2”)を使用しております。特に用意することもなくお手軽なので。

今日のところはタイトルにもある通り、Hello Worldを表示するだけです。

以下のコードで表示できました。

“`java
public class Main{

public static void main(String[] args) {
System.out.println(“Hello World!”);
}
}
“`

“`text:実行結果
Hello World!
“`

ここに至るまでに分かったことは、mainメソッドはJavaのエントリーポイント(処理の始まり)だということ。
mainメソッドには単語がズラリと並んでいて「なんだこれは」と思いネットで調べたところ、

・アクセス修飾子はpublic
・stat

元記事を表示

IntelliJ IDEA(日本語版)でserialVersionUIDを生成する方法

# はじめに
serialVersionUIDを生成する方法をまとめた。



# 発端
serialVersionUIDを生成するメッセージが表示されない
![スクリーンショット 2021-11-07 16.06.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/615760/9a7db949-60c9-7eeb-1604-b6d797aaf6fb.png)


# 解決策
Preference -> エディター -> インスペクションにある「’serialVersionUID’のないSerializableクラス」をチェックする。
![スクリーンショット 2021-11-07 16

元記事を表示

Sparkについて(Python,Java,JVM,RDD)

#Hadoop,Sparkの分散処理について
* 巨大データの取り扱いを目的とした分散処理のフレームワーク
* 分散処理によってビッグデータを高速に処理することが可能
* Hadoopの利用者は自作したデータ処理のプログラムや他者が開発したツールプログラムをHadoop内に組み込んでビッグデータ処理が可能

##Hadoop上で稼動するデータベースマネージメントシステム(DBMS)
* Hive
* Impala

##Hadoop上で稼動するスクリプト環境
* Pig

Hadoop連携ソフトウェアの存在がビックデータ処理環境をより便利にしている。
**SparkもHadoopと同じく分散処理のフレームワーク**
adoopがJava言語で作られているのに対してSparkはJavaの派生言語であるScalaで作られています。

###Sparkの内部処理方式
* データをメモリに保存することで入出力の高速化を図り処理全体の実行速度を向上させようとする取り組みがある。
* 利用可能メモリが枯渇した場合にはデータをストレージに保存するケースも勘案
* 機械学習の計算処理に効果を発揮する

元記事を表示

SpringBoot ✕ jQuery✕ DataTables・DataTables-pluginsの導入

#はじめに
SpringBootのRESTで検索機能を実装した際に、`Gradle`プロジェクトでの**DatTables**と**DataTables-plugins**の導入方法が見つからず、時間をロスしたので、同じように悩んでいる人などに向け備忘録として書いておきます。

#build.gradle
結論、参考文献に書いてあるようにすればいいだけですので、非常に簡単です。

“`java
dependencies {
implementation ‘org.webjars:datatables:1.10.21’
runtimeOnly ‘org.webjars:datatables-plugins:1.10.21’
}
“`

上記2行追加するだけでライブラリの導入は完了です。
お役経てば幸いです。

#参考文献
> [MavenRepository](https://mvnrepository.com/artifact/org.webjars/datatables-plugins/1.10.12)

元記事を表示

Eclipseでjavafxを導入するときに詰まったこと

#はじめに

Eclipseにjavafxを導入する記事を見ながら環境を作っていたところ,下のようなエラーに遭遇してかなり困ったので,私の場合の解決策をメモしておきます.Qiitaもjavaも初心者なので詳しい話はなにもできませんが,よろしくお願いします.
動作環境はIntel搭載のMacBook AirでOSは BigSurです.

いきなりですが,エラー文です.javafxの環境を整え終わって,試しにMainクラスを実行してみるかという矢先のことで,非常に辛かったです.
>Graphics Device initialization failed for : es2, sw
Error initializing QuantumRenderer: no suitable pipeline found
java.lang.RuntimeException: java.lang.RuntimeException: Error initializing QuantumRenderer: no suitable pipeline found
at javafx.graphics/com.

元記事を表示

動的計画法をJavaでメモ化再帰で記述してみた。

以下のナップザック問題をメモ化再帰で記述してみました。
https://atcoder.jp/contests/dp/tasks/dp_d

残念ながら、0_00, 0_01, 0_02, 1_00, 1_01, はACでしたが、他がTLEになってしまいました。

こちらの記事を見て今度はforループで解いてみたいと思います。
https://qiita.com/drken/items/dc53c683d6de8aeacf5a#e-%E5%95%8F%E9%A1%8C—knapsack-2

“`Java:Main.java
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Scanner;

public class Main {
public static void main(String[] args) {
try (S

元記事を表示

【2021年】Maven-Gradle【初心者メモ】

# 目次
– ビルドとは
– ビルドツールとは
– 依存関係とは
– ビルドの歴史
– Maven
– Gradle
– まとめ
– 参考

# Maven, Gradleとは
Maven, Gradleとはビルドツールである。

# ビルドとは
– 「要求された実行環境で動作できる形式にアプリケーションやライブラリを組み立てる」こと

– 本来ビルドには「決まりのある作業を行う」という意味があるが、エンジニア目線で言うと「要求された環境に合わせて適切に導入し動作を安定させる」という意味がある

– Javaの場合だと、「.java」→「.class」ファイルにコンパイル、「.jar」ファイルに固める+α、サーバーにデプロイする…など

# ビルドツールとは
– 要求された実行環境で動作できる形式にアプリケーションやライブラリを組み立てる(ビルド)するツール

– プロジェクトのビルド、テスト、ドキュメンテーション、成果物のデプロイなど、プロジェクトのライフサイクル全体を管理するもの

– プロジェクトの依存するライブラリの管理をする

# 依存関係とは
– ある要素が別の要素の存

元記事を表示

Apache Beamで実装したバッチ処理をAmazon EMRで実行する

## はじめに

以下の記事では、Beamを使用して実装した1つのコードを、ストリーム処理が可能なマネージドサービスであるGCPのDataflowとAWSのKinesisDataAnalyticsそれぞれで実行することを試しました。

https://qiita.com/ynstkt/items/50d551f025d8612d69e1

Beamはバッチ処理とストリーム処理の両方に対応したプログラミングモデルなので、今回は、バッチ処理をGCPとAWSそれぞれのマネージドサービス上で実行してみました。

GCPの場合、Dataflowでそのままバッチ処理も実行できるため、既に上記の記事でGCSをファイル入出力先としたバッチ処理をお試し済なので割愛します。

AWSの場合、ETLサービスまたはサーバレスなSpark実行環境としてDataflowと比較されることのあるサービスとして、AWS Glueが挙げられます。ただ、個人的にGlueについて勉強不足で、作成済のJARをデプロイして実行する方法がよくわからなかったので、まずはAmazon EMR上で実行してみることにしました。

なお、本

元記事を表示

JSF FaceletタグライブラリのXMLネームスペース一覧

JSF Faceletタグライブラリのxmlnm(XMLネームスペース)一覧

|Library|prefix|JSF2.1まで|JSF2.2以降|
|:-:|:-:|:-:|:-:|
|Composite Components|cc|http://java.sun.com/jsf/composite|http://xmlns.jcp.org/jsf/composite|
|Faces Core|f|http://java.sun.com/jsf/core|http://xmlns.jcp.org/jsf/core|
|HTML_BASIC|h|http://java.sun.com/jsf/html|http://xmlns.jcp.org/jsf/html|
|JSTL Core|c|http://java.sun.com/jsp/jstl/core|http://xmlns.jcp.org/jsp/jstl/core|
|JSTL Functions|fn|http://java.sun.com/jsp/jstl/functions|http://xmlns.jcp.org/js

元記事を表示

【Java】BigDecimal

# BigDecimalとは
– 誤差が出ないように正確に計算するためのクラス
– 四捨五入などの丸め処理ができる
– 桁数の指定ができる

## BigDecimalを使わない場合にどのような誤差が出るのか
“`.java
import java.math.BigDecimal;

public class Main {
public static void main(String[] args) {
// BigDecimalを使わない場合
System.out.println(1 – 0.9); // 0.09999999999999998

// BigDecimalを使う場合
BigDecimal number1 = BigDecimal.valueOf(1);
BigDecimal number2 = BigDecimal.valueOf(0.9);
System.out.println(number1.subtract(number2)); // 0.1
}
}
“`

元記事を表示

ドメイン駆動設計入門 Chapter 2 システム固有の値を表現する「値オブジェクト」のまとめと感想

[ドメイン駆動設計入門 ボトムアップでわかる!ドメイン駆動設計の基本](https://www.seshop.com/product/detail/20675)の輪読会に参加しています。筆者は「Chapter 2 システム固有の値を表現する『値オブジェクト』」の発表を担当することになったので、自分なりに解釈した内容と感想をまとめました。

https://www.seshop.com/product/detail/20675

本書で取り扱われているサンプルコードのプログラミング言語はすべてC#が採用されています。しかし、筆者はC#に触れた経験がないため、本記事内におけるソースコードはすべてJavaを採用しました。

# こんなコードはありませんか?

アプリケーションを開発していると、StringやList, Mapといった標準のクラスをそのままメソッドの返却値として利用してしまうことがあります。

“`java
public String getFullName();
“`

しかし、本章では、必要とされる処理にしたがって、そのシステムならではの値の表現があるはずだと説いてい

元記事を表示

javaでダウンロードzipファイルを一時保存せず処理

javaでネットワーク上のzipファイルを取得する場合はローカルの適当なディレクトリに一時保存してから解凍して処理が多いと思われる。内部実装はともかく、java上でzipファイルのダウンロードから処理までを完結する方法について。

# 環境
* java 17

# ソースコード
例として郵便番号(いわゆるken_all.csv)のzipファイルを読み込む。

“`java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;

public class ZipDownload {
public static void main(String[] args) throws IOException {
URL ur

元記事を表示

Spring-Retry 攻略記

#はじめに
とある既存システムの改修でDBコネクション切れを契機とするエラーに対し、Spring-Retryを利用したリトライ処理の実装を行った。
その際に得られた知見・対応策を今後の覚書として残そうと思います。

※既存システムに対する改修という性質故に、書き方としてはあまり良くないかもしれないのはご容赦を。。。

#Spring-Retry導入
build.gradleに下記の依存関係を追加でOK

“`build.gradle
compile(‘org.springframework.retry:spring-retry’)
compile(‘org.springframework.boot:spring-boot-starter-aop’)
“`

#実装
###1. EnableRetry
対象のSpringアプリケーションのエントリークラス(@SpringBootApplication)に@EnableRetryを追記

“`RetrySampleApplication.java
package retrysample.app

import org.springfr

元記事を表示

# JAVAカスタム暗号化アルゴリズム(1)

# JAVAカスタム暗号化アルゴリズム(1)
### 1.基本知  
>1. ビットとバイトの関係
> – 1)ビットは、メモリ内の最小のストレージユニットであり、0または1のいずれかです.
> – 2)1バイト= 8ビット
> – 3)バイトはJavaで最小のストレージユニットです.
>2. メモリ内のint型の格納方法[(サンプル)](#jump1):
> – Javaのint型の長さは32ビットです
> – 最上位ビットは符号ビットです.1は負の数を意味し、0は正の数を意味します.
> – したがって、Javaのint型の値の範囲は(- 2 ^ 31)〜(2 ^ 31)です.
> – 数値は2の補数の形でメモリに保存されます.
>3. バイナリの基本的な知識
> – 元の数の場合、最上位ビットは符号ビットであり、残りのビットは数値の絶対値の2進数です.
> – シフト操作「>>」、右シフト.
> – ビット単位のANDで「&」を計算します.2つのビットが同時に1の場合、結果は

元記事を表示

Java: Threadおさらい

## 基礎知識

### Thread2種類

“`SimpleThread.java
package playground;

public class SimpleThread extends Thread {
public void run() {
for (int i = 0; i < 10; i++) { try { Thread.sleep(10000L); // 10秒停止する System.out.println("スレッドで動いています:" + (i+1) +"回目"); } catch (InterruptedException e) { Thread.currentThread().interrupt(); } } } } ``` ```SimpleThread2.java package playground; public class Si

元記事を表示

OTHERカテゴリの最新記事