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

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

Javaの勉強備忘録

# Javaの勉強始めたので備忘録
Rubyと違って変数使うときには型を宣言してあげないといけないとか
修飾子とか覚えることが沢山あったので自身で見返せるようにしよう、
と思い至った。
 のと、マークダウン記法の学習も兼ねて…
 ※箇条書きスタイルに近い

# 型の種類
**プリミティブ型**か**参照型**に分かれる。
その中でもプリミティブ型は整数型や浮動少数型等々に分類される。
参照型はラッパークラスや文字列クラスに分けられる。

## プリミティブ型
| 型名 | 型分類 | サイズ(bit) | 初期値 | 値 |
|:-:|:-:|:-:|:-:|:-:|
| long | 整数 | 64 | 0L | -9223372036854775808 ~ 9223372036854775807 |
| int | 整数 | 32 | 0 | -2147483648 ~ 2147483647 |
| short | 整数 | 16 | 0 | -32768 ~ 32767 |
| byte | 整数 | 8 | 0 | -128 ~ 1

元記事を表示

Java#1:覚えた技術を日々書き留める

# 久しぶりのJavaでした恥ずかしい失敗

数年ぶりに、業務でJavaをやっているので
家でも勉強しています。
つまらないミスをして詰まってしまったので、内容と原因をメモします。

## HashMapがImportできない。。

やろうとしたのはこれだけ。

“`
public class HashMap {
public static void main(String[] args) {
//Mapの宣言
HashMap hashmap = new HashMap<>();
}
}
“`
クラス名をHashMapにしてはいけなかったようで、クラス名を変更すると直りました。
予約語とかいうものですね。

元記事を表示

Javaの開発環境(Mac, Eclipse)

## はじめに

Macにて、Eclipseで
Javaの開発を行いたいという方に向けての記事となります。

EclipseではなくVsCode(Visual Studio Code)で開発したい方は
Qiitaに「[Javaの開発環境(Mac, Vs Code)](https://qiita.com/aoyaman/items/cd3ed987b8b704778144)」をあげてますので、そちらを参照ください。

Eclipseとは統合開発環境といって
プログラムの開発環境をこれ1つで揃えてくれるツールです。

Javaの開発環境として、このEclipseを使われている方も多いのではないでしょうか。

Javaのインストールがまだの方は
「[Javaのインストール(Mac, Homebrew, 複数バージョン管理)](https://qiita.com/aoyaman/items/fdbc1b35ce841f730afc)」
を参考にインストールを先にすませておいてください。

動作確認した私の環境は以下の通りです。

“`
OS: macOS Catalina(バージョン 10.

元記事を表示

Spring Boot + Spring Data JPA でエンティティ更新の挙動を見る

## 概要

– Spring Boot + Spring Data JPA でエンティティを更新する際にどのように SQL 文を発行しているかログ出力して挙動を見る

## 環境

– macOS Catalina
– Java 11 (AdoptOpenJDK build 11.0.7+10)
– Gradle 6.4
– Spring Boot 2.2.6
– H2 Database 1.4.200

## サンプルコード

### ファイル一覧

“`
├── build.gradle
├── settings.gradle
└── src
└── main
├── java
│   └── com
│   └── example
│   ├── Counter.java
│   ├── CounterController.java
│   ├── CounterRepository.java
│  

元記事を表示

javaでアルゴリズム入門 – 探索編(全探索、二分探索)

# 概要
競技プログラミングを解いていてよく出てくる単語「全探索」についてまとめています。自分のメモ程度ですが、参考になれば幸いです。
これから、アルゴリズム入門に動的計画法とかダイクストラ法とかも乗っけていきます。コード例も書いていって書いていくうちにAtCoderのレートも上がっていくという好循環。基本的にネットやQiitaで得た知識をまとめていくだけのものです。

言語は慣れているjavaを使いますがまぁなんでも良いです。

# 全探索とは
名前でわかると思いますが、「考えうる全ての可能性」を考えるのが全探索だと思っています。なかにはいろいろ種類があるみたいで、その種類ごとに問題とコード例を考えてみましょう。
全探索の種類は以下のとおりっぽいです。

– 全探索
– 二分探索(バイナリサーチとも)
– 深さ優先探索(DFSとも)
– 幅優先探索(BFSとも)
– bit全探索

とりあえずこれだけわかれば良さそう。
一つ一つ例題とともに見ていこうと思います。

# 探索アルゴリズムの説明とコード例
ひとつひとつ解説していきます。
## 全探索
ありうる回答をすべてfor文のネ

元記事を表示

PostgreSQLの配列をJDBCで操作してみる

## 配列

PostgreSQLには配列型がある。
* [配列]()https://www.postgresql.jp/document/11/html/arrays.html

JDBCにも配列型がある。
* [java.sql.Array](https://docs.oracle.com/javase/jp/8/docs/api/java/sql/Array.html)

DB構成を考えるとき、配列が欲しくなったら負けたような気分になるので、
いままで配列型を使おうとおもったことはなかった。けれど、最近の案件でもしかしたら負けた気分にならずに配列を使う場面がありそうなので、ちょっと調べてみた。そのメモ。

## テスト用のdata classとテストのメイン

“`kotlin

/**
*/
data class HogeData(
val id: Int = Int.MIN_VALUE,
val name: String = “”,
val items: List = listOf(),
val

元記事を表示

FirestoreのデータをRecyclerViewで表示する[Java]

Firestoreのデータが更新されるたびにRecyclerViewの表示も更新されるようなことをやりたかったのですが、日本語で書かれた記事が全然なくて苦戦しました。

この記事では[FirebaseUI for Cloud Firestore](https://github.com/firebase/FirebaseUI-Android/tree/master/firestore#using-the-firestorepagingadapter)を参考に**FirestoreRecyclerAdapter**を使ってチャットアプリを作ってみます。

Firestoreでのデータベース作成がまだの人は[Cloud Firestore を使ってみる](https://firebase.google.com/docs/firestore/quickstart?hl=ja)を参照してみてください。

#表示するデータのモデル
チャットアプリをイメージしてください。

“`java:Chat.java
public class Chat {
private String mNa

元記事を表示

Ruby と Perl と Java と Python で解く AtCoder ABC 065 C 階乗

# はじめに
*[AtCoder Problems](https://kenkoooo.com/atcoder/#/)* の Recommendation を利用して、過去の問題を解いています。
AtCoder さん、AtCoder Problems さん、ありがとうございます。
# 今回のお題
*[AtCoder beginner Contets C – Reconciled?](https://atcoder.jp/contests/abc065/tasks/arc076_a)*
Difficulty: 647

今回のテーマ、階乗
# Ruby
犬`N匹`の階乗と猿`M匹`の階乗の掛け算になります。
階乗を関数化しておけば後々のコンテストに使用できます。

“`ruby.rb
n, m = gets.split.map(&:to_i)
MOD = 1_000_000_007
def nPk(n, k)
r = 1
while k > 0
r *= n
r %= MOD
n -= 1
k

元記事を表示

Spring Data JPA で hibernateLazyInitializer を Jackson が JSON シリアライズできなくてエラーになる

## 概要

– Spring Data JPA 使用時に Hibernate がエンティティのプロキシオブジェクトに hibernateLazyInitializer というフィールドを追加してしまう
– Jackson が hibernateLazyInitializer を JSON シリアライズできずにエラーになってしまう
– いくつかの対策方法を示す

## エラーメッセージ例

環境: Java 11 + Spring Boot 2.2.6 + Spring Data JPA 2.2.6 + Hibernate ORM 5.4.12.Final

Jackson が hibernateLazyInitializer を JSON にシリアライズできなくてエラーになっている。

> Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springf

元記事を表示

VScodeでSpring Bootプロジェクトを作成したらBuild path specifies execution environment JavaSE-1.8. There are no JREs installed in the workspace that are strictly compatible with this environment. と表示された

##開発環境

・ホストOS: Windows10 Home ビルド19619
・ゲストOS: WSL2 Ubuntu20.04 LTS
・VScode ver 1.45.0
・openJDK 11.0.7
・Spring 2.2.7
・Maven 3.6.3

##発生したエラー

・VScodeでSpringプロジェクトを作成したところ、以下のエラー(警告)が発生した

“`
Build path specifies execution environment JavaSE-1.8. There are no JREs installed in the workspace that are strictly compatible with this environment.
“`

“`
The compiler compliance specified is 1.8 but a JRE 11 is used
“`

どうやら本来はJavaSE-1.8であるべきなのに11を使っているのが原因のよう。

##解決法

pom.xmlを編集してJavaのバージョンを変更する

元記事を表示

(備忘録)Spring Bootと機械学習(SVM)を使って質問応答システムを作った話

## はじめに
今更ながらSpring Bootと機械学習(SVM)を使って質問応答システムを作った話です。
大分昔(2018中旬頃)に独りで作り、放置してました。勿体ないので自分用に整理した記事です(備忘録)。
自分用に作った記事なので、分かりにくい点や情報、技術が古いかもしれませんが、ご了承ください:bow:
また何かしらのWebアプリを独りで作りたい方のご参考になれば嬉しいです。
質問応答システムについては、@VegaSato さんの記事がとても詳しいのでご存知ない方は
こちらをお読み頂ければと思います。
$\tiny{※参考にさせて頂きました。ありがとうございました}$:bow_tone1:
[BluemixのWatson APIを駆使して日本語質問応答システムを作る](https://qiita.com/VegaSato/items/5f98831457f22b5ffced)
簡単に言いますと、
>ユーザーが質問を入力するとシステムが最適な答えを探して回答してくれるシステムのことである。

Qiitaにて質問応答システム関連の記事を見てみると、コア部分をIBM Watoson

元記事を表示

【Java 初心者】「newするタイミングは使う時だよ」の理解が少し深まったのでメモ

Javaのソースを読んでいると
`User user = new User();`
という記述を誰でも見る事がある。そう、インスタンスの生成である。

これ自体は理解出来るようになったが、実際にプログラムに触れていくと、下記の様な記述に出会い混乱してしまった。

“`check.java

public boolean userExists(String userId) {

//User型変数を使用
User user = select.selectOne(userId);

if (user == null) {
return false;
}

return true;
}
“`

なんとそこには、newもせずに`User user`といきなり記述されていた。
「他のクラスを使用する時はnewするんだ」と漠然と思い込んでいた私からすると、訳が分からなくなってしまった。

だがそれは、単純に私の勘違いであった。

上記の`select.selectOne(userId);`というメソッドの中身を見てみると

“`select.java
public User s

元記事を表示

Javaの開発環境(Mac, VS Code)

## はじめに

Macにて、EclipseじゃなくてVsCode(Visual Studio Code)で
Javaの開発を行いたいという方に向けての記事となります。

VsCodeではなくEclipseで開発したい方は
Qiitaに「[Javaの開発環境(Mac, Eclipse)](https://qiita.com/aoyaman/items/9484163459d974b79f68)」をあげてますので、そちらを参照ください。

Javaのインストールがまだの方は
「[Javaのインストール(Mac, Homebrew, 複数バージョン管理)](https://qiita.com/aoyaman/items/fdbc1b35ce841f730afc)」
を参考にインストールを先にすませておいてください。

動作確認した私の環境は以下の通りです。

“`
OS: macOS Catalina(バージョン 10.15.4)
Java: 11.0.2
“`

## VsCodeのインストール

既にインストール済みの方は読み飛ばしてください

公式サイトの[ダウンロードページ](

元記事を表示

Java 複数バージョン切り替え方法

# 複数バージョンのJavaの切り替え方法
複数バージョンのJavaを混在させて切り替えようとした際に手間取ったので備忘録として記録しておきます。
最初に環境変数を設定する所から記載しています。
本環境はWindows10 64bitです。

##環境変数設定画面を開く
①Windowsスタートメニューをクリックし、表示されたアプリ一覧から「Windowsシステムツール」をクリックして下さい。
そして展開されたメニューの中から「コントロールパネル」をクリックして開きます。
![windows10システムメニュー.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/507713/90fd2fe9-1d00-8333-1d06-673923ddf251.jpeg)
![システムツールからコントロールパネル.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/507713/3701b13b-dfa8-595c-1e22-77dbe4027

元記事を表示

勉強の方針

「みずほ銀行システム統合、苦闘の19年史」を読んだ。

とりあえずここからヒントを探して学んでいこうと思う。

タグ通り、java, Justware, RHEL, HiRDB の勉強を進めていこうと思う。

java はノートPC でも動作可能なのでサンプルの実装やらなんやらは問題ない。

データベース系のものはAWS を借りてやってみようかな。あんまりデータはたくさん入れたくないし、動作が重くなると困る。諸事情でファンが異常回転しっぱなしなので、あんまり負荷をかけたくない。

Justware はチャンスがあれば見て盗む方針でいこう。教えてもらうことを期待しちゃダメだ。そーかぁ。指示待ち人間じゃダメって、そういうことか。

RHEL はどうしようか。このノートPCも、Macが水気でやられたからubuntuをねじ込んで動作してるわけだし、ブートは可能だと思うけど、在宅ワーク中だしなあ。連絡手段や開発環境がなくなるのは困る。機を待とう。コロナが収まったら中古のノートPCでも見に行こうかな。つか無料なの?有料ならどうしようかな。会社のやつがあれば使ってみたいけど。無料ならiso ファイル

元記事を表示

macOSにHomebrewでOpenJDK 11(Java 11)をインストールする【Java開発環境構築】

#目的

Javaの学習を始めたばかりで概要を理解したい、ローカル開発環境を構築したい。

OS:macOS Mojave バージョン10.14.6
テキストエディタ:Visual Studio Code(以下VSCode)

#Javaの概要

大規模なシステム(金融機関の会計システムなど)や携帯端末向けアプリケーションなど、様々な開発に利用されている言語。

##①Write Once, Run Anywhere(一度書けばどこでも動く)
JavaのプログラムはOS上で直接動くのではなく、`JVM(Java Virtual Machine:Java仮想マシン)と呼ばれる実行環境上で動く。`
だから、`OSとの間に依存関係がなく`、プログラムを作る時にWindowsやMacといったOSの違いを気にする必要がない。

Java言語を使用したプログラム作成、実行の流れは以下になる。

>1.Java言語で決められたルールに従って書かれたソースファイルを作成。
> ↓ コンパイル(javacコマンド = javaのcompiler)
>2.クラスファイルになる。(JVMが解釈出来るファイル

元記事を表示

Javaのインストール(Mac, Homebrew, 複数バージョン管理)

## はじめに

Macで**Javaのインストール方法**、**インストールするバージョン**で悩んでる方向けの記事です。

Javaってバージョンが8と11と14の3つありますよね。

「今は8でいいけど将来14にしたくなるかも〜」

って思うと、どのバージョンをインストールすれば良いか悩みますよね。

調べてみると、[homebrew-cask-versions](https://github.com/Homebrew/homebrew-cask-versions)を使うと複数バージョン管理出来ることが分かりました。

## 私の試した環境
OS: macOS Catalina(バージョン 10.15.4)
ターミナル: [iTerm2](https://www.iterm2.com/)

## Homebrewのインストール

#### Homebrewが入ってるか調べる
“`
$ brew -v
“`
バージョンが表示されなかったらインストールされています。

#### インストールされてたらHomebrewをアップデートする

“`
$ brew update

元記事を表示

Ruby と Perl と Java と Python で解く AtCoder ARC 098 C 累積和

# はじめに
*[AtCoder Problems](https://kenkoooo.com/atcoder/#/)* の Recommendation を利用して、過去の問題を解いています。
AtCoder さん、AtCoder Problems さん、ありがとうございます。
# 今回のお題
*[AtCoder Regular Contets C – Attention](https://atcoder.jp/contests/arc098/tasks/arc098_a)*
Difficulty: 641

今回のテーマ、累積和
# Ruby
入力例 2 の`WEWEWEEEWWWE`を考察しますと、`WEWEWEEiWWWE`となり`i`の左側の`W`の個数と右側の`E`の個数の合計が求める人数となります。
文字列の左`0`から右`n-1`に向かって、`E`は単調減少、`W`は単調増加ですので、計算量を抑える手法として**累積和**を使用します。

“`ruby.rb
n = gets.to_i
s = gets.chomp

元記事を表示

【サンプルコード付き】Blogアプリで覚えるSpringJDBCの基本

書籍のサンプルコードを真似てコードを書いても、JDBCを理解したかどうかがわからなかったため、SpringJDBCを使って実際に超簡単なブログアプリを制作しました。(セキュリティーやトランザクションは実装していません。あくまでもCRUD操作の確認です)

GitHubにリポジトリを公開しています。
[Spring-BlogAppのリポジトリはこちら](https://github.com/megumi-622/Spring-BlogApp)

## 開発環境
– PC: macOS Catalina 10.15.4
– IDE: Eclipse 2020-03(4.15.0)
– SQL: PostgreSQL 12.2
– SQLツール: DBeaver 7.0.3.202004191823

ツールは全て無料で使えます。
ターミナルでSQLを操作できるのであれば、SQLツールはなくても大丈夫です。

## 1.必要なクラスについて
### A.ドメインクラスとは
リポジトリークラスとサービスクラスの間で渡されるオブジェクト
※モデルクラス、DTO(Data Transger Obj

元記事を表示

java(配列)

#配列作業手順
“`java
int[] scores; //①
scores = new int[5]; //②
“`
[5] = 0,1,2,3,4 中身ゼロから数えて[5]

####①と②同時に行う

“`java
int[] scores = new int[5]; //①②
“`

####配列作成省略記法

“`java
int[] scores1 = new int[] {10, 20, 30, 40, 50};
“`
“`java
int[] scores2 = {10, 20, 30, 40, 50};
“`
上下同じ意味

###forループで配列を回す
“`java
int[] scores = {10, 20, 30, 40, 50};
for (int i = 0; i < scores.length; i++) { System.out.println(scores[i]); ``` ループ変数名は任意で指定可能 ###拡張 for 文で配列を回す ```java int[] score

元記事を表示

OTHERカテゴリの最新記事