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

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

JavaFXのドロップボックスの更新遅延の問題

## 概要
JavaFXのChoiceBoxインスタンス(ComboBoxについても同様と予想します)
の選択肢リストを入れ替える際の
遅延とメモリ使用量が問題でした。

## 環境
Win10
Java8

##症状

1000個程度のStringリストをchoiceBox.getItems().addAll( items );
とかで渡すのですが
choiceBoxがすでにシーングラフ上に表示済みの場合にこの操作すると、
数10秒単位で固まるうえに 使用メモリ量が500MBとか数GBとかいう単位で増加します。
おそらくリスト中のアイテム一個足されるたびにリスナーが働いてシーングラフにアクセスするのだと思う。


choiceBoxが一度でも描画されたらそれまで。
setVisible(false);にしたり親ノードから外して非表示にしても症状は変わらない。

↑ これが納得いかないのですね。なんでグラフ更新を無効化できないの?

choiceBox.setItems();からObservableListをセットし直すという方法も試したが
このメソッドが有効なのは最初の

元記事を表示

MacでHomebrewを使えばEclipseがなくてもすぐTomcatを使える

#Tomcatの環境設定で困りませんか?
MacでTomcatの環境設定をする際、Tomcatのtar.gzまたはzipファイルを公式サイトからダウンロードしてjava_homeやcatalina_homeのパスを色々設定したりと色々めんどくさくて、嫌になりませんか?

私は一度嫌になって、Eclipseに頼りました。でもEclipseも不具合があったら、また問題を見つけるの大変そうだなと思いました。

そこで、今回一番シンプルなTomcat導入方法を見かけたので紹介します。

#ソース

Installing Apache Tomcat on MacOS Mojave using Homebrew(2019/8/29)
https://medium.com/@fahimhossain_16989/installing-apache-tomcat-on-macos-mojave-using-homebrew-28ce039b4b2e

#設定方法

「Installing and Running Apache Tomcat on Mac OS using Homebrew」の見出しから

元記事を表示

Java日記

⭕️Spring⭕️
今日勉強したことのまとめを少しだけ!

JSP(view)でよくあるフォームタグ!1行目のmodelAttributeとはなんぞやと。。。

“`
1 2
3

4

5
6
7
8

“`

□□□の部分には、3,4行目で送るid,nameがあるModel名(セッター、ゲッターがたくさんあるやつ)を指定!(頭文字は小文字にするのがらしいよ)

Q:頭文字を小文字にしたら、Modelの名前と違うのになっちゃうんじゃないの?

A:
例えば、上記のModel名をMemberModelだとして、
ControllerのdoGETメソッドで

“`
model.addAttribute(“memberModel”,new MemberModel());
“`

と記述。(上手く説明できな

元記事を表示

コーディング面接練習サイト「Pramp」を使ってGAFAの面接に挑む

# はじめに
**コーディング面接**というものをご存知でしょうか?

コーディング面接とはGAFAなどをはじめとする海外のTech系企業などで広く行われている面接で,データ構造やアルゴリズム,システムデザイン等の知識を問うものです.
[面接 – Google](https://careers.google.com/intl/ja_jp/how-we-hire/interview/#interviews-for-software-engineering-and-technical-roles)

Googleで行われるようなコーディング面接は,

– 45分程度の時間内に
– データ構造やアルゴリズムの基礎に関する問題を
– 面接官と話し合いながら(多くの場合英語で)
– ホワイトボードにコードを書いて解く

といった特徴

元記事を表示

Spring Bootで書籍管理Webアプリを作ろう part2

# はじめに

どうも、プログラミング勉強中の大学生、@Ikuto19です。今回は[前回の続き(part1)](https://qiita.com/Ikuto19/items/13e1c1966b0bd30f5a44)からやっていこうと思います。前回のおさらいを簡単に説明した後、作成手順を解説して実際にアプリを作っていきます。

# 前回のおさらいと解説
### 前回について
part1では、書籍管理アプリの作成のための準備と流れを掴んでもらうためにテストアプリの作成と公開をしました。具体的には、Spring Frameworkを使うためのツールのインストールやHerokuへのアカウント登録などを行いました。

### これ以降の注意点!!
このpartからコードやアノテーションの役割について説明していきますが、僕自身Spring Frameworkに触れるのが初めてです。要するに初心者なので、詳しい説明はできません。あくまで僕の解釈をざっくり説明することになるので、この記事を見てくださっている同じ初心者の方は鵜呑みにしないでください。大まかには合っているが、厳密には違うなんてことがあ

元記事を表示

PlantUML を Visual Studio Codeで使う

環境設定が重要
– JAVAのインストールと,PATHの設定
Oracle Java https://java.com/ja/download/win10.jsp のパスの設定(一応,Java SE Development Kit 14 もインストールした[2])

– Graphviz .msi をインストール先を変更せずに実行(https://www2.graphviz.org/Packages/stable/windows/10/ )それから,PATHの設定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/683564/19f061bc-1f96-9186-19c4-85819b7eb992.png)
GRAPHVIZ_DOTの変数名で,dot.exeまで値を設定

VSC Plugin PlantUML jebbs 2.13 のインストール
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazo

元記事を表示

[Java]STSの導入からローカルホストでの動的ページの確認までの流れ(3/3)

前回の続きです。

記事は3つに分割しています。
[1. MVCモデルの説明](https://qiita.com/aki0141/items/5337f16242a99a02810f)
[2. STSの導入からPleiadesによる日本語化まで](https://qiita.com/aki0141/items/26f780da65c26924e740)
**3. プロジェクトの作成からローカルホストでページを確認するまで ←今ここ**
となっています。

今回はプロジェクトの作成からローカルホストでページを確認するまでとなります。

#プロジェクトの作成
今回はSpring-Bootでプロジェクトを作成します。一からSpringアプリケーションを作成する場合、たくさんの設定や機能を自分で組み上げなければいけませんが、Spring-Bootではその辺りを自動で行ってくれます。

STSのメニューからファイル>新規>Springスターター・プロジェクトと進みます。
project01[Java]STSの導入からローカルホストでの動的ページの確認までの流れ(2/3)

前回のMVCモデルの説明からの続きです。

記事は3つに分割しています。
[1. MVCモデルの説明](https://qiita.com/aki0141/items/5337f16242a99a02810f)
**2. STSの導入からPleiadesによる日本語化まで ←今ここ**
[3. プロジェクトの作成からローカルホストでページを確認するまで](https://qiita.com/aki0141/items/5dc0c9378c545cbaad98)

今回はSTSの導入からPleiadesによる日本語化までです。

#使用ツール
– SpringToolSuite 4.7.0 (Eclipseのプラグインとして使用)
– Thymeleaf

STSはJavaのフレームワークの1つであるSpringを使うためのものです。そのSTSを導入するためにいくつかある統合開発環境(IDE)の中から今回はEclipseを選びました。
IDEというのはコードを書いたりコンパイルしたりデバッグしたりとった機能を提供します。Eclipse以外にもVSCodeやTheiaといったIDEにも導入

元記事を表示

[Java]STSの導入からローカルホストでの動的ページの確認までの流れ(1/3)

会社の研修ではだいたい2~3人ぐらいのグループで仮想プロジェクトを作成することになっています。
プロジェクトはSpringToolSuite(STS)を使うのですが、研修生向けマニュアルのようなものが今までなかったので、導入からローカルホストを立ててWebページを確認するまでをまとめました。
初めてプログラミングの仕事に就く人向けですので、初歩的なところも端折らず書いています。

記事は3つに分割しています。
**1. MVCモデルの説明 ←今ここ**
[2. STSの導入からPleiadesによる日本語化まで](https://qiita.com/aki0141/items/26f780da65c26924e740)
[3. プロジェクトの作成からローカルホストでページを確認するまで](https://qiita.com/aki0141/items/5dc0c9378c545cbaad98)

STSをダウンロードする前に、まずはWebアプリケーションの設計思想であるMVCモデルの説明から始めます。
最初から座学かよと思わず少しだけお付き合いください。

#MVCモデルとは
MVCモ

元記事を表示

IntelliJ IDEA + Codewind + Appsody でKabanero 入門

## TL;DR
巷で噂のKabanero にIntelliJ IDEA で入門してみました。
Codewind でプロジェクト作成 –> Appsody でKubernetes クラスタにデプロイまでの作業ログです。
それぞれv1.0 を迎えていないですが、普段`docker` / `kubectl` をバシバシ打っている人には、そこそこ便利に使えそうという感じです。

## 環境
– PC: Macbook Pro
– IDE: IntelliJ IDEA Ultimate 2020.1
– Appsody CLI: 0.6.4
– Codewind: 0.14.0

## Appsody とは
Appsody は、すぐにKubernetes にデプロイ可能なプロジェクトの雛形を提供するオープンソースプロジェクトです。
また、コンテナレジストリやGithubと組み合わせて独自の雛形を共有することも可能なようです。

公式? https://appsody.dev/

## Codewind とは
Codewind は、コンテナでの開発を支援するIDE 拡張です。
IDE から簡単

元記事を表示

【備忘】Amazon DynamoDBへのアクセスプログラム

Amazon DynamoDBにアクセスするための基本的なプログラムを記載

1.Entityの用意

“`
@DynamoDBTable(tableName = “テーブル名”)
public class SampleTableEntity {
// HashKey
@DynamoDBHashKey
private String hashKey;

// RangeKey
@DynamoDBRangeKey
private String rangeKey;

// 項目
@DynamoDBAttribute
private String item;
}
“`

2.接続

“`
// 指定リージョンのDynamoDBにアクセスするためのClient生成
AmazonDynamoDB amazonDynamoDB = AmazonDynamoDBClientBuilder.standard()
.withRegion(リージョン名)
.build();

// テーブルへのMapperを生成

元記事を表示

Java8以降のNullPointerException 対策例(Optional)

## 本稿について
Java8でNullPointerException の対策で新しいやり方が見つかっていますので自身の備忘的に書いておきます。

## 事象
早速ぬるぽ出してみます。

“`java:java

public class Test {
public static void main(String[] args) {
String str = null;
System.out.print(str.length());
}
}
“`

“`java:処理結果
Exception in thread “main” java.lang.NullPointerException
at Test.main(Test.java:6)
“`
NullPointerExceptionが出てしまいました。
java8より実装された対処法として、Optional をつけてあげることで
NullPointer対処することができます。
下記のイメージで変更します。

“`java:対処例
import java.util.Optional;

public cla

元記事を表示

int定数の代わりにenumを使用する

###int enumパターン
表現力が乏しい。
オレンジを期待しているメソッドにアップルを渡したり
アップルとオレンジを==演算子で比較してもコンパイラに怒られない。

““java
public static final int APPLE_FUJI = 0;
public static final int APPLE_PIPIN = 1;
public static final int APPLE_GRANNY_SMITH = 2;

public static final int ORANGE_NAVEL = 0;
public static final int ORANGE_TEMPLE = 1;
public static final int ORANGE_BLOOD = 2;

““

###enumを使用した場合

““java
public enum Apple {FUJI, PIPIN, GRANNY_SMITH}
public enum Orange {NAVEL, TEMPLE, BLOOD}
““

###値によって切り替えるenum型
以下の

元記事を表示

タグ付きクラスよりクラス階層を選ぶ

###タグ付きクラス

““java

public class Figure {

enum Shape {RECTANGLE, CIRCLE};

final Shape shape;

// shapeがRECTANGLEである場合にだけこれらのフィールドは使われる
double length;
double width;

// shapeがCIRCLEである場合にだけこのフィールドは使われる
double radius;

// 円のコンストラクタ
Figure(double radius) {
shape = Shape.CIRCLE;
this.radius = radius;
}

// 長方形のコンストラクタ
Figure(double length, double width) {
shape = Shape.RECTANGLE;
this.length = length;
this.width = width;
}

double area() {
switch (shape) {
case RECTAN

元記事を表示

【StreamAPIとラムダ式】何でもできるスーパーマン登場!!

java経験者のOさんはこう言った…
Streamとラムダ式でなんでも1行で書くことができる…と。

もちろん、**基礎ができた後にやるのを忘れずに**。

#【Streamとラムダ式】サンプルコード
“`java
public class TestStarter {

public static void main(String[] args){

String[] s = {“1″,”2″,”3”};
//中間操作はなんでもしてくれるスーパーマン かつ 1度に条件をなんでもかける
Arrays.asList(s).stream().filter(i -> i.equals(“1”)).forEach(System.out::println);

}
}
“`

これは、
>❶.fillerで「true,false」なら何でも条件を設定できる(メソッドも参照可)
❷.forEachはfor文をぶん回し全部出力してくれる
❸System.out::printlnってのもラムダ式の書き方

他にも.mapと

元記事を表示

【探索アルゴリズム】ハッシュ探索法

##【探索アルゴリズム】ハッシュ探索法
・ハッシュ探索法は、データを探す探索アルゴリズムの1つ
・探索しやすいようにあらかじめ関数を用いてデータを格納しておく
・格納するのに使った関数を用いて、一発でデータを探索する

##他の探索アルゴリズムとの違い
・これまでの線形探索法や二分探索法では、何のデータがどこの要素に入ってるかは全くわからない状態から探索を始める、というのが前提条件であった。
・ハッシュ探索法は、データの「中身」と格納先の「要素」をあらかじめ紐づけしておくおkとで、ごく短時間に探索できるように工夫したアルゴリズム。

“`java
import java.util.Arrays;

/**
* ハッシュ探索法のアルゴリズム
*/
public class Algorithm {
public static void main(String[] args) {
int[] arrayD = {12, 25, 36, 20, 30, 8, 42};
int[] arrayH = new int[11];
Arra

元記事を表示

*Android*ピンチイン・ピンチアウトを検知する

#はじめに
こんにちは.今回は,Androidでピンチ操作を検知しようと思います.ピンチイン・ピンチアウトを判別する方法について解説します.

#前提
開発環境は以下の通りです.
*Android Studio 4.0.1
*targetSdkVersion 28
*Google Nexus 5x

#ピンチイン・ピンチアウトの判別
ピンチ操作の検知には,“`ScaleGestureDetector“`を使用します.第一引数にContext,第二引数には,“`OnScaleGestureListener“`インタフェースを実装したクラスのオブジェクトを指定します.今回は,匿名クラスを使用して,インタフェースを実装します.

“`java
this.scaleGestureDetector = new ScaleGestureDetector(this, new ScaleGestureDetector.OnScaleGestureListener() {
// ピンチ操作中に繰り返し呼ばれる
@Override
public boolean onSca

元記事を表示

【総集編】7月ふりかえり

# はじめに

今月のふりかえりです。
月1で振り返り
今後は何を勉強するかを決めます。

——————————–
# 7月 1週目

2020/07/01 [【統計学】ふつうのエンジニアが統計学の勉強を始めてみた](https://qiita.com/ymd65536/items/dc0eff97e8fe86ac2c1d)

2020/07/05 [【統計学】ふつうのエンジニアが統計学の勉強を始めてみた- part2](https://qiita.com/ymd65536/items/9dc84ccef5138f64d129)

——————————–
# 7月 2週目

2020/07/08 [【キニナル話】jexcel使ってみた.xlsx](https://qiita.com/ymd65536/items/a05888bf563bf60ad161)

2020/07/12 [JavaとJavaScript 間違えられやすい問題](https://qiita.com/ymd65536/i

元記事を表示

【Java】スーパークラス/サブクラスのコンストラクタあれこれ

#目次
– はじめに
– 前提知識
– 継承クラスについて
– コンストラクタ
– 今回のキモ
– 暗黙的なコンストラクタ実行
– おわりに

##はじめに
どうも駆け出しエンジニアです。
先日会社でコーディングをしていた際に人の書いたコードの続きを書かなくちゃいけなくなったんですが、
その時にクラスの継承,コンストラクタでドツボにはまってしまいかなりの時間を使ってしまいまして….
もう一回頭から学習しなおした所、わからないことがボロボロ出てきてヒドかったので再度まとめることにしました。

なお、本記事は
 ・「現在Javaを触っている人」
 ・「もう一度内容を復習したい人」
向けとなっております。
各クラス名/変数名は適宜読み替えてください。

##前提知識
#####継承クラスについて
– 継承クラス=新しいクラスを作るとき、以前作った機能と共通する部分を引き継ぐクラス
– 継承元のクラスのことを「親クラス」、継承先のクラスのことを「子クラス」と呼ぶ。
– 同意義で「スーパークラス」「サブクラス」とも呼ぶ
※本記事ではスーパー/サブ

元記事を表示

Apache Camel のroute構築で用いる Java DSL の個人的なコーディング規約

Apache Camel では「route」を作成する際、用意されたメソッドをひたすら繋げるという[独自のDSL](https://camel.apache.org/manual/latest/java-dsl.html)で書く。このDSLは**条件分岐**や**ループ**などにも対応している。

ただ、Javaのスタイルガイドに従って書くと、条件分岐やループの内部処理を作るメソッドも同じインデントになってしまい、DSLとして非常に読みづらい。なので**自前でインデントを追加した方が良い**と考えられる。

* [公式ページのサンプル(choice)](https://camel.apache.org/components/latest/eips/choice-eip.html)
* [camel-idea-pluginのissue](https://github.com/camel-tooling/camel-idea-plugin/issues/309)
* [stack overflow](http://stackoverflow.com/questions/46572048)

元記事を表示

OTHERカテゴリの最新記事