JAVA関連のことを調べてみた2019年12月06日

JAVA関連のことを調べてみた2019年12月06日

コンストラクタ

初学者ですが、個人的な勉強のためにまとめてみました

##コンストラクタ

・コンストラクタは、生成されたインスタンスがほかのインスタンスから使われる前に、事前準備を整える「前処理」をするためのメソッドの一種

####3つのルール

①メソッド名を**クラス名**と同じにすること
②**戻り値型**は記述できない
③**new**と一緒にしか使えない(インスタンス生成時以外は呼び出しができない)

####非公開なコンストラクタ

・privateを使うことで、コンストラクタを非公開にすることができる(ほかのクラスがnewを使いインスタンス化できない)

(例)非公開なコンストラクタを使ったクラス定義

“`Sample.java

public class Sample {
private Sample() {
}

public static Sample getInstance() {
return new Sample();
}
}

“`

・非公開なコンストラクタは外部のクラスでインスタンスを作成させないようにしているが、インスタンスを取得する方法が2つあ

元記事を表示

Lombokの@Getter @Setterの動作メモ

## はじめに
ここではLombokの`@Getter`, `@Setter`に絞った動作の確認を行っていきます。
Lombokの導入の仕方や`@Getter`や`@Setter`以外のアノテーションの使い方は、他の人がよくまとめてくれているのでそちらを参照してください。

* [Lombok](https://qiita.com/yyoshikaw/items/32a96332cc12854ca7a3)
* [Lombok 使い方メモ](https://qiita.com/opengl-8080/items/671ffd4bf84fe5e32557)

## Lombokについて
本題に入る前に簡単にLombokの説明を。
Lombokとは特定のアノテーションを利用することで`getter`や`setter`、`toString`などのメソッドを自動で生成してくれるライブラリです。

開発の段階でPOJOオブジェクトなどの記述量を減らすことができます。
今どきgetter、setterを自前で書いている人は少ないかもしれませんが、自動生成のため**スペルミス**なども無くせます。

元記事を表示

オーバーロード

初学者ですが、個人的な勉強のためまとめました

##オーバーロード

・オーバーロードは「メソッドの多重継承」とも呼ばれ、同名のメソッドを複数宣言できる機能のこと
・**名前が同じかつ引数(引数の数、型、順番)が異ならないと使えない**
・JVMは、実行するメソッドをを読み込むとき、メソッドだけで判断するのではなく、**シグニチャ(メソッド名と引数のセット)**で見分けるので、同名のメソッドを複数宣言できる

元記事を表示

static

初学者ですが、個人的な勉強のためにまとめてみました

##static

###**静的である**
・**ロード後**、クラスファイルの内容はstaticなものは**static領域**というメモリ領域に、それ以外は**ヒープ領域**に配置される
static領域に配置された**クラス変数**、**クラスメソッド**はそのクラス内で1つという位置付け。そのクラスからいくつインスタンスを生成してもインスタンスごとにメンバ変数、メソッドが割り当てられることはなく、一つのデータしか作成されない。したがって、**すべてのインスタンスで同じ値を共有**するので**インスタンスを作らなくても使える**

**※ロード**・・・クラスファイルを読み込むこと

**※クラス変数、クラスメソッド**・・・static修飾子が付与されたものを**クラス変数**、**クラスメソッド**、static修飾子が付与されていないものを**インスタンス変数**、**インスタンスメソッド**と呼ぶ

###staticフィールド

・アクセスする方法は以下の2つ
 ①**クラス名.フィールド名**
 ②インスタンス作

元記事を表示

Swift Network.framework Study 20191205「Server TCP」

# Study

Network.framework
Study:Server側

## 環境

Client:Java、NetBeans
Server:Swift、Xcode

#Client Source Java

“`java
package example.java.network;

import java.io.PrintWriter;
import java.net.Socket;

public class ExampleClientSocket {
public static void main(String[] args) {
try(Socket socket = new Socket(“localhost”, 7777);
PrintWriter printWriter = new PrintWriter(socket.getOutputStream(), true);) {
printWriter.println(“Example Send Data”);
}

元記事を表示

見せて貰おうか、Amazon新サービス「CodeGuru Reviewer」の性能とやらを

# はじめに

これは、NTTコミュニケーションズ Advent Calendar 2019 5日目の記事です.関連記事は[目次](https://qiita.com/advent-calendar/2019/nttcom)にまとめられています。前日は[@TAR_O_RIN](https://qiita.com/TAR_O_RIN)さんによる[TektonでCI/CDパイプラインを手の内化しよう – Qiita](https://qiita.com/TAR_O_RIN/items/81a6abf947aea0a8deee)でしたね!

## あなたはだ〜れ?!
昨年書いた[深層学習を利用した食事画像変換で飯テロ – Qiita](https://qiita.com/negi111111/items/6d6f19edc060a91662ec)に既に書いてあるので省略します。好きな言語はObjective-Cです。お世話になった言語もObjective-Cです。嫌いな言語もObjective-Cです。最近はPythonしか書いてないのでマンネリ化が激しいです。最近のマイブームは**夜な夜な

元記事を表示

JavaFXでHelloFX

# はじめに
はじめまして。
この記事は[ITRC Advent Calendar 2019](https://adventar.org/calendars/4759)の5日目の記事になります。
今回はJavaFXでHelloWorldの様に「Hello,JavaFX」を表示させるところまでやりたいと思います。

# 環境
– ArchLinux
– Java11
– Eclipse

# HelloJavaFX
では、HelloJavaFXを表示してみましょう。

## JavaFXのダウンロード
[こちら](https://gluonhq.com/products/javafx/)からJavaFXを任意の場所にダウンロードしてきます。
今回はVersion11.0.2をダウンロードしました。
![2019-12-05-171217_1366x768_scrot.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/543602/ba409d5d-b22e-3514-688d-fd54744fdb03.png

元記事を表示

意外と知らないMapの便利な使い方

# コレクションの利用
Javaでプログラミングを行う際には List, Map, Set などのコレクションを利用するのはほぼ必須といっても過言ではないかと思います。
その中でもMap はキー・バリュー形式でデータ管理を行えるため、データを事前に取得してMapに詰め込んでおき再利用するといったシーンで多く使われます。

特にJava8 から Stream API や ラムダ式、Optional 等が追加されコレクションがより使いやすくなりました。
ただこれらの追加機能の陰に隠れて実は便利なメソッドがたくさん追加されているのはご存知でしょうか。
今回はそんな便利なメソッドをいくつか紹介します。

## データが取得できない時に初期値をゲット! (getOrDefaut)

会員コード毎にお店で使えるポイントを保持するMapがあったとします。

“`java
Map pointMap = new HashMap<>();
“`

ある会員がポイントを保持していない場合0ポイントを返したいといったロジックの場合以下のように記述し取得することができます。

元記事を表示

QuantAnalyzerでEAの安定性を判定する

#理屈
安定したEA = 固定ロットでバックテストした際の損益曲線がほぼ直線。凸凹していない。

∴近似直線との相関係数を求めればよくね?

#やること

**C:\QuantAnalyzer4\extend\Snippets\com\strategyquant\extend\OverviewTab.SQDefault.java**
をVSCodeで編集。以下のように書き換え。Java用の拡張機能がインストールされていれば勝手にビルドされるはず。
上書き保存した後、QuantAnalyzerを起動。何かを読み込む。

“`java:SQDefault.javaの179行目
replace(“S4_3”, “Correlation Factor”, stats == null ? NA : d2(stats.getDouble(StatsConst.STABILITY)))
“`

#結果(右下のCorrelation Factorに注目)
この数値は、最初のトレードと最後のトレードを結んだ直線との相関係数です。
取引回数ベースではなく、時間ベースでの計算のようです。
1に近いほど相

元記事を表示

【JPA】一対多のリレーションシップがあるEntityをmany側ごとCreateができない

# 事象
`@OneToMany` + `@JoinColumn`で定義したEntityをmany側のEntityごとCreateしたい。

→エラーが発生してしまう。

# 原因
以下記事にて解説されていました。

[JPA マッピングカタログ – Qiita](https://qiita.com/opengl-8080/items/5190ee953cfbab5ce3e9#%E7%B5%90%E5%90%88%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%AA%E3%81%84)
>- 自分が確かめた限りでは、これが確実に動くのは**検索のみ**
– `table_beta.alpha_id` が NULL 不可の場合、上記実装だと INSERT 時にエラーになる(`table_beta.alpha_id` に NULL をセットしようとしてエラーになる)。
– Hibernate であれば、 `@JoinColu

元記事を表示

Spring SecurityのPreAuthorizeで独自メソッドを呼び出す

Spring Securityのメソッド認可でちょっと複雑なロジックで認可したい場合、任意のbeanのメソッドを呼び出すことが出来ます。

ちなみにカスタム認証を正しく追加したい場合は PermissionEvaluator を実装するのが恐らく正当なアプローチです。
PermissionEvaluatorの実装についてはこちらの記事が分かりやすく詳しかったです。
拡張フレームワーク開発などで汎用的なEvaluatorを追加したい場合はこちらがよいでしょう。
https://www.codeflow.site/ja/article/spring-security-create-new-custom-security-expression

今回はもうちょっとお手軽な方法でも書けるよという手順です。

## Controller側のPreAuthorize定義

“`Controller.java
@PreAuthorize(“@customPreAuthorizer.belongGroup(#groupId, authentication.principal)”)
@

元記事を表示

未経験からIT企業に就職した勉強メモ

29歳IT業界未経験で
某無料プログラミングスクールで1.5か月学んで就職しました
年明け入場予定。(大手)

勉強前のスペック
・文系私大卒
・macユーザ winいじれるけど苦手
・HTMLは分かる
・ワードプレスでホームページ公開したがことある(ロリポップ使って)
・プログラミングは一切触ったことがない。
・エクセルとワードMOS2003エキスパート所持
 でもマクロとか全然忘れてる

#自分的勉強まとめ(Java)

■就職するまでの勉強
・スクールの勉強 基礎構文→SQL→バグ改修→個人開発
・ドットインストール有料登録
 寝る前とかに15分くらいドットインストールを見ていた。
・個人開発では、在庫管理システムを作る
 mySQLで登録、削除、追加、更新、画像の登録削除更新、キーワード検索、ソート機能など
[→自習が苦手ですぐ人を頼る自分の打開策](https://qiita.com/nekomaru991/items/23431f091f8bf3b47971)

■SES会社に入ってからjavaに関してやった勉強一覧(現在も)
(資格を取ったわけではない)

・Java

元記事を表示

なんだかんだ使うUtil

##ライブラリ自作

備忘録です
コメントとか適当なのであしからず

“`Utils.java
package util;

import java.util.function.Function;
import java.util.function.Predicate;
import java.util.Arrays;

public class Utils {

/** ————— Object ————— */

/** nullでなけれは真 */
public static final Predicate nonNull = v -> v != null;

/** nullなら空文字に変換 */
public static final Function nullToEmpty = v -> v == null ? “” : v.toString();

/** nullと数値でないものなら0に変換 */
public static final Function

Javaで作る自動販売機のサンプル

#目的
Javaを使ってプログラミングの経験を積むこと

#対象者
Javaの基本を学んだ初学者

#達成目標
フローチャートと機能詳細を元にプログラミングができる。

#フローチャート
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190809/e8be6c8c-a893-80d2-f230-147a33a3327e.png)

#機能詳細
・商品リスト初期化
商品は以下の3つ固定とする。
コーラ100円
オレンジジュース120円
水80円

・入金
1円単位で入金可能とする。
購入可能な最低金額が入金されるまで入金を促す。
(今回の場合、水の80円以上)

・商品選択
入金額の範囲で商品を表示する。
商品名で選択する。

・販売
選択した商品を提供する。

・課金
入金額から購入金額を引く。
釣銭を返す。

#サンプルコード
“`
package vm;

import java.util.HashMap;
import java.util.Map;
import java.ut

授業で習ったJavaの復習をつらつらと part2

# はじめに

[part1](https://qiita.com/arch-yzk/items/a8b49c905779cf49b708)を読んでから、もしくはJavaでif文が取り敢えずわかったら読んでね。

今回はpartを前提に、for文や文字入力等、オブジェクト指向ではない部分を取り扱う予定。

# ループ文

Javaにはforとwhileがある。例文を使い分けができればなお良い。

まずはfor文から。

“`java/for.java
public class for
{
public static void main(String[] args)
{
System.out.println(“terminalに1~5を出力”);

//for文で使えるint型のiを定義、制御に使っている
for(int i = 1; i <= 5; i++) //i++ でループする時にiに1を足して再実行できる { System.out.println(i);

プロキシ祭りだ☆ワッショイ!

## プロローグ

デバッグをしていると PKIX path building failed ~
あり~?
昨日まで普通に動いていたのに。
しかし、これは前にも起きたことがあるのでサクっと解決できる。
いま思えば、これが不幸の始まりでした。(所要時間12時間)

## 1.証明書エラーの解決(プロキシなし)

![aws.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63018/e2937731-31f4-497e-48c5-1a5387570613.png)

AWS環境では、EC2 with 似非SSLからインターネットに接続しようとして、 PKIX path building failed ~ が発生していたので、javaに似非SSL証明書を登録して解決。

[PKIX path building failed:javaにSSL証明書を追加する](https://qiita.com/ckoshien/items/6072e01760e8e2a0d21c)

## 2.証明書エラーの解決(プロキ

Java(Eclipse)でAWSBatchにジョブ送信

Java(Eclipse)でAWSBatchにジョブ送信を試してみたので共有します。

#前提
AWSBatchで以下が設定されている。
・ジョブ定義名:sample-job-definition
・キュー名:sample-job-queue
・コンピューティング環境名:sample-compute-environment

Eclipseで以下を実施している。
・AWS Toolkit for Eclipseをインストール。
・AWS Toolkit for EclipseにIAMユーザのアクセスキー、シークレットアクセスキーを設定。
・Gradleプロジェクト作成。

#build.gradleの編集、SDKをインストール
`dependencies`に`aws-java-sdk-batch`を追加して、プロジェクトにインストールします。
(プロジェクトを右クリックして Gradleプロジェクトのリフレッシュなどすると処理が開始されます)

“`gradle:dependenciesに追加
dependencies {
…略
compile(‘com.amazon

Java で DataFrame を使う

### DataFrame ご存知ですか?

DataFrame は Python や R言語でデータを扱ったり、機械学習したいときによく使われるとても便利なライブラリ・オブジェクトです。表形式のデータや2次元の配列のデータを扱うための様々な機能が揃っています。

どのくらい便利かというと、Excel や CSV から一気にデータを読み込んだり、2次元配列の任意の行列を抽出したり、表同士を SQL 操作のごとく join したりと、とにかく 2次元データを使う際には欠かせないというレベルです。

でも Java だとこれという DataFrame 相当の実装が無くて、ありがたい DataFrame の恩恵を受けられない、データ処理に時間がかかる、なんで Python じゃないんですかと暴言(?)を吐かれるなどの悲しい目に合うわけです。

### Morpheus data science framework

しかし、そこに一筋の光が。
Morpheus data science f

アップキャスト/ダウンキャスト

初学者ですが、個人的な勉強のため書きました

##アップキャスト

・サブクラスのインスタンスをスーパークラスのオブジェクトに格納することを**アップキャスト**という
・コンパイラは互換性をチェックできればキャストを自動的に行ってくれるので、継承関係であるサブクラスはスーパークラスのすべてのメンバーを保証できるためアップキャストは**暗黙的**に行われる
・スーパークラスとサブクラスに、同じ名前のフィールド変数やメソッドがある場合には、**フィールド変数はスーパークラス、メソッドはサブクラスが優先**される

##ダウンキャスト

・アップキャストとは逆に、サブクラスのオブジェクトにスーパークラスのオブジェクトを格納することを**ダウンキャスト**という
・スーパークラスはサブクラスのすべてのメンバーを保証できないため、スーパークラスからサブクラスにダウンキャストする場合は**明示的に**ダウンキャストを行う必要がある
・アップキャストされていないオブジェクトをダウンキャストすると、ClassCastExceptionの例外が発生するので、**一度アップキャストしてからダウンキャスト

エラーメッセージ出す処理

##エラーメッセージ出す処理

なんか便利そうなの思いついたので備忘録に

“`ErrorMessage.java
package listTest;

import java.util.ArrayList;
import java.util.Collection;
import java.util.LinkedList;
import java.util.List;
import java.util.stream.Collectors;

public class ErrorMessage {

public static void main(String[] args) {

// モデルのリストが入力とかされたとする
List models = new ArrayList<>();

// 検知されたエラーメッセージを全種類取得
List eMsgCodes = models.stream()
.map(ErrorMessage::validationLogic)
.flatMap(Collection: