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

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

Javaで学ぶアルゴリズム 第7弾:乱数

# #Javaで学ぶアルゴリズム < 乱数 >

##はじめに
Javaは授業で触れただけで全くの初心者であり,何もわかっていない.なので,基本的なアルゴリズムをJavaで実装し,アルゴリズムの理解を深めるとともに,Javaにも慣れていきたい.
その第7弾として乱数を扱う.

##乱数
意味としては無作為に得られるランダムな数値であるが,コンピュータ言語にある乱数発生ライブラリはすべて**擬似乱数**と呼ばれる計算によって求められる乱数である.ここでは,その発生方法の仕組みや,評価も実装を通して学ぶ.なお,その2つは**一様乱数(線形合同法)**と**ボックス・ミュラー法**である.

##一様乱数(線形合同法)
一様乱数の説明を示した後,実装を行う.
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/951300/07267cdc-100d-ac9a-0ff8-4a8131695a1b.png)

####実装
以下にソースコードとそのときの出力を示す.
#####ソースコード: 一様

元記事を表示

Javaで String (文字列) を昇順 (asc)・降順 (desc) にソートする

#はじめに:

##やりたいこと
文字列 (String) をソートしたい。
・ “627118” -> (昇順) -> “112678”
・ “627118” -> (降順) -> “876211”
・ “Hello, World” -> (昇順) -> “,HWdellloor”
・ “Hello, World” -> (降順) -> “roollledWH,”

#考察

## 昇順ソート
・これはすんなりいった。「やったこと」 の”StringSorterAsc”を参照ください。
 String => char[] => Arrays.sort() => New String()

## 降順ソート
・一旦 String を char [] にして

“`
// char 配列に変換
char[] charArr = str.toCharArray();
“`

・Arrays.sort の第2引数に Collections.reverseOrder() を渡す

“`
import java.util.Collections;

Arrays.sort(c

元記事を表示

intellijでdoma2の実装クラスが自動生成されない場合の解決法

## 概要
通常doma2ではinterfaceを実装してbuildするとその実装クラスが自動で生成される。
しかしintellijのbuildボタン(緑のボタン)でbuildを行う場合、この自動生成が行われず、DBからのデータ取得に失敗する場合がある。

自分含めまわりで何人かハマっている人がいたのでその際の解決法を記載

## 原因と解決法
preference/Build,Execution,Deployment/Build tools/Gradle
でintellijのbuildボタンで行う処理が設定できる。
ここの
“`Build and run using: “`

がデフォルトではGradleになっているが、既存ファイルを開いた時にIntellij IDEAになっている事があり、その場合はdomaクラスが自動生成されない。

その場合は画像のようにデフォルトのgradleに戻してから再起動すればdoma実装クラスが自動生成できる様になっているはず
![スクリーンショット 2021-01-15 17.45.36.png](https://qiita-image-sto

元記事を表示

【エラー】tomcat8080は使用されています

## tomcatでやらかした話
tomcatを初めて触ったとき、コンソールで起動して、eclipseでも起動して、このエラー出しました。

それまでRailsをやってたので、localhostはコンソールで起動するものって思い込んでた:baby_tone1:

テキストエディタから起動できるなんて発想がなかったし、他の言語やってるとそれに囚われがちって気づきました。

## 解消方法
####①コンソールで起動していたtomcatを停止させる

– macのコマンドは[こちら](https://qiita.com/okapie/items/f3d66552bc1533e7af44)から

→eclipseでサーバーを実行出来たらよし:thumbsup:

#### ②裏で動いてるtomcatを停止させる
1.Macのターミナルから「lsof -i:8080」と入力する

2.PIDに記載されている数字を確認する
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
      ****     
     ココ!

3.ターミナルに「

元記事を表示

DatePickerDialogとSQLite

DatePickerDialogを用いた日付取得とSQLiteへの連携について

GitHubを見にきてください。

元記事を表示

【エラー】unknown column ‘~’ in ‘field ~’

## エラー
DBにデータを保存したいのに出来ない…
コンソールを確認したところ下記のエラー:eyes:

“`
unknown column ‘question_id’ in ‘field list’
“`

## 原因
question_idは、questionsテーブルの中にあるのに、correct_answersって書いてた…:baby_tone1:

“`
String sql = “INSERT INTO correct_answers (question_id, answer, created_at, updated_at) values (?,?,current_timestamp(),current_timestamp())”;
“`

## まとめ
記事少ないと思ったらこんなヘナチョコミスかよ。
もうこんなミスしたくない:hugging:
今後同じエラーがでた時のためにも備忘録。

①データベースエラーだったらまずDBに関わる部分全部確認すること
・DAOのSQL文、Beanのカラム名、DBのカラム名が同じか
・DAOのSQL文のテーブル名間違ってないか

元記事を表示

FileMaker ServerからJDBCで検索する

ある案件でFileMaker Server上のデータを検索するプログラムを開発する機会があり、その備忘録として以下に記します。

## FileMaker Serverの構築
環境を汚したくないので、Vagrant+VirtualBoxでゲストマシンを作成し、バージョン19で新登場したLinux版をインストールします。

|ソフト|バージョン|
|—|—|
|FileMaker Server|19.2.1.23|
|Vagrant|2.2.14|
|vagrant-hostmanager|1.8.9|
|VirtualBox|6.1.18|
|CentOSイメージ|centos/7 (virtualbox, 2004.01)|

### ゲストマシンの作成

“`ruby:Vagrantfile
def read_ip_address(machine)
command = “ip a | grep ‘inet’ | grep -v ‘127.0.0.1’ | cut -d: -f2 | awk ‘{ print $2 }’ | cut -f1 -d /”
resul

元記事を表示

Java PDF をTIFFに変換

Spire.PDF for Javaを使ってPDF をTIFFに変換することができます。そして、文書のページと指定するページだけをTIFFで保存することができます。

下準備

1.E-iceblueの公式サイトからFree Spire.PDF for Java無料版をダウンロードしてください。

f:id:lendoris:20210224144116p:plain

Java PDF をイメージで保存

      

今回はJavaでPDF をイメージで保存する方法を紹介します。Spire.PDF for Javaを使ってJpeg, Jpg, Png, Bmp, Tiff, Gif, EMFといった形式に変換することができます。今日はPNGを例にあげて説明しましょう。

下準備

1.E-iceblueの公式サイトからFree Spire.PDF for Java無料版をダウンロードしてください。

f:id:lendoris:20210224144116p:p</p></blockquote>
</blockquote>
<aside class='widget widget-post'>
<div class='tag-cloud-link'>Java</div>
<div class='tag-cloud-link'>PDF</div>
<div class='tag-cloud-link'>イメージ保存</div>
</aside>
<div><a style='width:100%;' class='btn__link' href='https://qiita.com/iceblue/items/ad9b2598f7bd91250c13'>元記事を表示</a></div>
<h3 id=【エラー】Parameter index out of range

## エラー
DAO,Beans,Servletを作成し、JSPを表示しようとしたところ、JSPが表示されなかった。コンソールを確認したところ下記のエラーを発見:eyes:

“`
Parameter index out of range (4 > number of parameters, which is 3).
“`

## 原因
パラメーターが4つあるのに、`?`が3つしかなかった:sweat_drops:

“`
String sql = “INSERT INTO questions (question_id, answer, created_at, updated_at) values (?,?,?)”;
“`

## まとめ
パラメーターと`?`は同じ数用意しよう:point_up:

記事が少なくて時間を浪費してしまったので備忘録。こんなミスするの私くらいだろう。

## 引用
[java.sql.SQLException: Parameter index out of range (2 > number of parameters, which is 0)
]

読書計画

#背景
あるレビューアーさんを余所目で見ていて、この人ちゃんときちんとした本を読んでないな
って思ったことから・・・そんなにJavaの本て名著はいくつもないので・・・
読んでおくに越したことはないなと思って・・・・私の本当に主観ですが・・・
私も読んでないです。理由は読んでも吸収できなかったので・・・
この人、ここから来てるなっていうのは別にいいかなと思います。
アジャイル本読んでても所詮っていうのは、別にいいかなって読まないよりはいいような気がする。
#読書計画
##基本
【電子合本版】Code Complete 第2版 完全なプログラミングを目指して
→ 上巻だけでもね。
リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック
Effective Java 第3版
##実力
JUnit実践入門 ── 体系的に学ぶユニットテストの技法 WEB+DB PRESS plus
##案件用
JavaによるRESTfulシステム構築
Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)
##教養
人月の神話

SpringBootで一括更新を実現する

## 概要
* 以下動画の機能を実現する

![2.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/148710/0fbf7a78-fca2-6a96-6a2b-2e264b3ad880.gif)

## 機能説明
* 同じ画面の中でボタンをクリックすると閲覧モードと編集モードが切り替える
* 更新ボタンを押下すると複数件のデータを同時に更新する

## 開発環境
* Windows 10
* Spring Tool Suite 4 Version: 4.8.1.RELEASE
* JavaSE-11
* MySql 5.8
* Thymeleaf 3.0.12

## 事前準備
Mysqlにcountryテーブルを作成する

“`sql:country
CREATE TABLE `country` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`countryKbn` varchar(10) NOT NULL,
`countryName` varc

SpringBootで二つの 2つのドロップダウンリストを連動させる方法

## 概要
* SpringBoot + thymeleaf + mysqlでWebアプリケーション開発時、二つの 2つのselectBoxを連動させる方法を紹介します。

## 機能
* ひとつ目のドロップダウンリストの都道府県により、2つのドロップダウンリストの値は該当県の市区町に変わる。

## 開発環境
* Windows 10
* Spring Tool Suite 4 Version: 4.8.1.RELEASE
* JavaSE-11
* MySql 5.8
* Thymeleaf 3.0.12

## 事前準備
Mysqlに都道府県と市区町のテーブルを作ってデータを登録する

都道府県テーブルを作成する

“`sql:create_pref
CREATE TABLE `pref` (
`prefCode` int(11) NOT NULL,
`prefName` varchar(50) NOT NULL,
`disFlag` int(11) DEFAULT ‘1’,
PRIMARY KEY (`prefCode`)
) ENGINE=InnoDB

あらためてJavaを学習する(その0)

1〜2年前にJavaを学習してから、最近はJavaScript(Node.js)やAWSといった学習がメインでJavaからは久しく離れてました。
最近Java知識が必要になる可能性が出たので、簡単に復習がてら学習を行おう!と思った次第。その備忘録として記事にしています。Qiita初投稿です。

その0では主にJava言語についてと環境構築、Hello Worldをコンソールに表示するまでの内容がメインです。

## Javaの特徴
* OSに依存しない(OS非依存)
* オブジェクト指向
* 静的型付け言語
* JVMによるメモリ管理

※C言語(1972年) → C++(1983年) → Java(1996年) の順番で登場している

## Java実行までの流れ
OS非依存を実現しているのがJava Virtual Machine(`JVM`)
人間が書いたり読んだりできるコード(`高級言語`)は機械側では理解できない。
(機械が理解できるのは0と1の羅列で構成された機械語)

C言語やJava言語といった高級言語を機械語に翻訳することを`コンパイル`と呼ぶ。
また、上記のコンパイ

Ehcache(3系)のメモ

# Ehcaheとは
* Javaにおける定番のキャッシュライブラリ
* key-value型のデータ構造
* データの持ち先としてメモリ(ヒープ、ヒープ外)やファイルを選ぶことができる
* この記事の執筆時点の最新版は3.9.1
* 「Ehcache」でググって上位に出てくる日本語の記事はメジャーバージョンが古いことが多い…(APIは大きく変わっている)

# 使い方
## インストール
MavenなりGradleなり、お好きなビルドツールで依存を設定しましょう。
https://mvnrepository.com/artifact/org.ehcache/ehcache/3.9.1

## 基本的な使い方
とりあえず公式ドキュメントをもとに適当に書いたソースをペタリ。

“`java
import org.ehcache.Cache;
import org.ehcache.CacheManager;

import static org.ehcache.config.builders.CacheConfigurationBuilder.newCacheConfiguratio

CentOS8 に OpenJDK15 をインストールしたときのメモ

CentOS8 に OpenJDK15 をインストールしようとしたとき、yum では LTS Version しかインストール出来ませんでした。(2021/02/23 時点)
インストール方法をググってもパッと出てこなかったので、手順をメモしておきます。

rpm をダウンロードしてインストールするのが簡単そうでした。
CentOS8 の rpm は pkgs.org よりダウンロード出来ます。

OpenJDK の rpm は下記からとってこれます。
https://pkgs.org/download/java-latest-openjdk

OpenJDK をインストールする前に依存ライブラリが必要そうで、下記から取得します。
https://pkgs.org/download/java-latest-openjdk-headless

wget で ダウンロードして dnf でインストールします。(2021/02/23 時点)
(URLは変更になるので、上記ページの Binary Package のURLから最新を落としてください)

“`
wget https://dow

【Javaについてまとめてみたオブジェクト編】抽象クラスについて

#はじめに
今回はJavaの抽象クラスについて書いていきたいと思います。
そんなに難しくはないのでサラッと理解しましょう!

##抽象クラスとは
抽象クラスは継承されることを前提としたクラスでスーパークラスとなる為に生まれた存在です。
特徴としては、

– クラス宣言時にabstractを付ける
– newをしてインスタンスを作成することが出来ない
– 抽象メソッドを作成することが出来る。

といったものがあげられます。

###抽象クラスの宣言
“`java:抽象クラスの宣言
//下記のどっちかの宣言
abstract public Class Member{};
public abstract Class Member{};
“`
宣言する時はこのようにアクセス修飾子の前後どちらかにabstractを付けます。

##抽象メソッドとは
抽象メソッドはスーパークラスでは処理内容は書かずにサブクラスで必ずオーバーライドしないといけないメソッドになります。
逆に言うと、**必ずオーバーライドして欲しいメソッドを書きたい時**に使います。
###抽象メソッドの宣言
“`java:抽象

Javaで学ぶアルゴリズム 第6弾:ユークリッドの互除法

# #Javaで学ぶアルゴリズム < ユークリッドの互除法 >

##はじめに
Javaは授業で触れただけで全くの初心者であり,何もわかっていない.なので,基本的なアルゴリズムをJavaで実装し,アルゴリズムの理解を深めるとともに,Javaにも慣れていきたい.
その第6弾としてユークリッドの互除法を扱う.

##ユークリッドの互除法
Pythonでもユークリッドの互除法を扱った.(https://qiita.com/Yuya-Shimizu/items/d82bbdf15d31e25cf544 )
そのときにも示したようにユークリッドの互除法は1つではない.

ここで,2つ定理とそれを利用したときの互除法の手順を示す.
####定理①:余りを利用
**「2つの自然数m, nについて,mをnで割ったときの商をq,あまりをkとすると,「mとnの最大公約数」は「nとkの最大公約数」に等しい.」**
【step1】: mをnで割り,あまりkを求める
【step2】: m, nをn, kでそれぞれ置き換える
【step3】: あまりkが0なら,その時の割る数nが最大公約数で,そうでなければste

Azure FunctionsのログをApplication Insightsで確認する方法

# 概要
Azure Functionsで、プログラム中で仕込んだログを参照するのに手こずってしまったので、自分のメモがてら共有します。
Azure Portalからは、直近20件の実行分までは簡単に参照できるのですが、それより古い分はApplication Insightsを利用する必要があったのです。KQLとか、書き方がわからず困惑しました:confounded:

# ログを仕込む方法
(私はJavaでAzure Functionsを書く事が多いので、Javaの例のみとさせてください)
Functionsの入り口となるメソッドでは、`ExecutionContext`というクラスの引数を受け取れるようになっているので、ここからLoggerを取得する事ができます。
↓メソッド引数で`ExecutionContext`を受け取る

“`java
@FunctionName(“HttpTrigger-Java”)
public HttpResponseMessage run(
@HttpTrigger(name = “req”, methods

マークダウンの練習と、初めまして。

#こんにちは
こんにちは。マークダウン式というのを初めて本格的に使ってみました。hackmdなどのサイトでほかの方の見様見真似で多少やったことはあるのですが、これはなかなか面白いですね!

[こちら](https://qiita.com/Qiita/items/c686397e4a0f4f11683d#code—%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AE%E6%8C%BF%E5%85%A5 “Markdown Qiita”)の記事を見ながら練習しています。

## これがH2タグ
Hello everyone!!

コードを挿入してみます。

“`Java:practice.java
System.out.println(“Hello, world!”)
“`

ここで少し自己紹介をすると、私はJavaを勉強しています。大学の授業で少しPythonを学んだので、Pythonの基礎的なところもわかりますが、基本はJava使いです。
現在の目標はAndroid Studioで作っているアプリを完成させることです。アプリはほぼ自分用で公開目的ではありま