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

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

読書計画

#背景
あるレビューアーさんを余所目で見ていて、この人ちゃんときちんとした本を読んでないな
って思ったことから・・・そんなに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で作っているアプリを完成させることです。アプリはほぼ自分用で公開目的ではありま

元記事を表示

ライガーゼロで関数型インタフェースの学習(java)

#はじめに
関数型インタフェースの学習のために作成しました。
関数型インタフェースはインタフェースの中に関数型インタフェースの処理を事前に作成しておくことで、利用したいときに利用できるライブラリのように使用できるそうです。
そうすることで、システムやプロジェクトに捕われない汎用的なプログラムを、次のシステム開発で持ち込むことが可能になるそうです。
#手順
以下の手順で作成しました。
1. インタフェースの作成
 →ライガーゼロの各種装備を関数型インタフェースを用いて記述します。
2. スーパークラスの作成
 →素体ゼロが持っている固定装備を記述します。
3. サブクラスの作成
 →各種アーマーを装備したことを想定して記述します。
  全て記述すると長くなるので、ライガーゼロとライガーゼロイエーガーのみを記述します。
#インタフェースの作成
各種装備の出力には、Consumer<T>を使用、
型式番号の取得には、UnaryOperator<T>を使用、
最高速度の取得には、ToDoubleFunction<T>を使用、
定員の判定には、Predicate<T>を使用しました。

“`A

元記事を表示

HttpServletでInputStreamを複数回読めるようにしつつmultipart/form-dataのパラメータを取得する

# 対応したい内容

servletにmultipart/form-data形式でPOSTされてきたパラメータを読み取るには`HttpServletRequest.getParts()`を用いる方法[^1]や、下記のように`HttpServletRequest.getParameter()`を用いる方法がある。

“`java:TestServlet.java
package test;

import java.io.IOException;
import java.util.Enumeration;

import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@SuppressWarnings

元記事を表示

【Java】メソッド参照とコンストラクタ参照

# メソッド参照とは

すでに定義済みのメソッドを、引数なしで呼び出せるのがメソッド参照です。
これを使うと、ラムダ式を書かずに直接メソッドを実行できる、などのメリットがあります。

“`java
class Person {
private final String firstName;
private final String lastName;

public Person(String firstName, String lastName){
this.name = firstName;
this.surname = lastName;
}

public String getName(){ return firstName; }
public String getSurname(){ return lastName; }
}

List people = getSomePeople();
“`

# メソッド参照

“`java
people.stream().map(Per

元記事を表示

これは Java スクリプトですか?

JavaScript の記事をお探しの皆様におかれましては、お役に立つような内容ではございませんので、ブラウザの戻るをお願いいたします。

また、かなり濃いめの Java ジョークとなっておりますので、Java 初心者の皆様におかれましては、真に受けないようにお願いいたします。

# OpenJDK 11 からは Java ファイルを直接実行できる

つい最近知ったのですが、OpenJDK 11 で [JEP 330: Launch Single-File Source-Code Programs](https://openjdk.java.net/jeps/330) が導入され、単一ファイルの Java プログラムならば、javac などでコンパイルしなくても実行できるようになっています。

* [ソース・ファイル・モードで単一ファイルのソース・コードのプログラムを起動する方法](https://docs.oracle.com/javase/jp/15/docs/specs/man/java.html#using-source-file-mode-to-launch-single-

元記事を表示

【Java】enumでpropertiesファイル読み込みユーティリティを作る

# 0. INDEX
– 概要と目的
– enumでユーティリティを作る
– あとがき

# 1. 概要と目的
いつものコピペ用。
設定ファイルから値を取得する時に、使う度に文字リテラル指定にするとtypoるのでその対策。
Eclipse等のコードアシスト環境があれば多分事故る確率は減るハズ!

という事で、今回の目的はこんなプロパティファイルがある時に

“`properties
HOGE=hoge
“`

こういう風にコードアシストを使ってtypoしない様に実装したい!

“`Java
String value = Config.HOGE.get();
System.out.println(value); // “hoge”と出力
“`

だって、↓こう書いておいてtypoに気づかずに
「先輩、ここでなぜかぬるぽが出ちゃうんです…」
とか、あ゛ぅ゛ん゛![^1] もうっ!ってなるじゃないですか!!1

“`Java
String value = Config.get(“H0GE”);
if (value.length) { // ここでドーンだYO!!
// 処理

元記事を表示

Javaと比較したC#の予約語

#はじめに
Javaプログラマーでしたが、仕事でC#を使うようになったので今回の記事を作成するに至りました。

#予約語
|Java |C# |説明 |
|—|—|—|
|abstract |abstract |抽象クラスの宣言で使用 |
|assert|なし|プログラムの動作検証に使用|
|break |break |処理を中断させる命令|
|case |case |switch文の条件ラベルで使用|
|catch |catch |例外処理で使用(try-catch-finally)|
|class |class |クラス宣言で使用|
|continue |continue |以降の処理をスキップして処理を継続させる命令|
|default |default |switch文で使用|
|do |do |繰り返し処理で使用(do-while)|
|else |else |条件式で使用(if-else)|
|enum |enum |複数の定数を列挙型で保持する|
|extends |: |継承するクラスを指定する|
|false

元記事を表示

JavaFXでジェネリック使って入力ダイアログ作成してみる

# この記事について

将来的に書く予定の「JavaFX で DynamoDB Viewer作ってみた」記事の1ステップ。
結構大きな話になると思うので、少しずつ技術ポイント毎に記事を書いて、ある一定程度の要件を満たせた段階で前述まとめ記事書く予定。

第一回記事:[DynamoDBの情報を読み込んでJavaFXで表示してみる](https://qiita.com/silverbox/items/eba824a9f003df67181e)
第二回記事:[JavaFXで動的にテーブル列を設定する](https://qiita.com/silverbox/items/904a01d561014d800696)
第三回記事:[AWS java SDKでDynamoDBテーブル情報を取得してみる](https://qiita.com/silverbox/items/3caefb782f1bb269490f)
第四回記事:[JavaFX の TableView の選択範囲をクリップボードにコピーする。](https://qiita.com/silverbox/items/19e131bd3da0

元記事を表示

Raspbian GNU/Linux 10 (buster)のJavaをJava 8に入れ替えてRaspberry Pi Zero WをJenkinsのエージェントとして利用する

##1. はじめに
Raspberry Pi Zero WをJenkins[^1]のエージェントとして利用しようとしたところ以下のようなメッセージが出力され、ノードの起動ができませんでした。

>[02/18/21 22:48:37] [SSH] /usr/bin/javaのJavaバージョンをチェック
/usr/bin/java のJavaバージョンが不明です。
Error occurred during initialization of VM
Server VM is only supported on ARMv7+ VFP

Raspberry Pi Zero WのCPUはARMv6でプリインストールされているJavaが対応していないためとわかりました。そこでRaspberry Pi Zero Wで利用可能なJavaに入れ替えました。

##2. 環境
筆者が使用しているRaspberry Pi Zero WやRaspbianの諸元を以下に示します。

“`
$ uname -a
Linux raspberrypi 5.4.51+ #1333 Mon Aug 10 16:38

元記事を表示

SpringBootでToDoアプリを作ってみよう【+jQuery】

#はじめに
SpringBootを使ってTodoアプリを作っていきます。

↓以下の記事の続きです。ここに加えていくので、先に作ってみてください。
[SpringBootでToDoアプリを作ってみよう【誰でも作れます・初心者向け】](https://qiita.com/toki_k/items/f9fcdf7d65f3a8ab0f23)

前回分のソースファイル
https://github.com/tokio-k/TodoApp-springboot/tree/intermediate

前回まででこんな状態です。
![無題.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/506867/d426cbc3-ef04-0d26-a899-03cefc9028e6.png)

これから、SpringBootの勉強を始めるという人の役に立てれば、いいなと思っています。
基本的にコードはファイル全部を載せるようにします。自分が勉強している時に、書く場所がわからないことがあったので。
既存のものを少し編集するだけの

元記事を表示

java オブジェクト指向についての備忘録

###オブジェクト指向型プログラミングとは 

= 現実世界を真似て登場人物の単位でプログラムをクラス単位で分割すること

####オブジェクト型プログラミングの全体的なイメージ

    生成 ⇦  ⇦      神様      →   → 命令
    ⇩       (mainメソッドを含むクラス)      ↓
 
・型(クラス)を元に         ・操作の呼び出し
 インスタンスを生成         ・該当インスタンスの属性の書き換え

####インスタンス生成のイメージ

         勇者Aの生成をしなさい。
   神様    →  →  → 勇者A    
勇者の型(クラス)  ⇨  ⇨   ⇧             
属性(・HP・名前)    
操作(・攻撃 etc)

   

                    
                             

元記事を表示

OTHERカテゴリの最新記事