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

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

可変オブジェクト/不変オブジェクト

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

##可変オブジェクト/不変オブジェクト

・オブジェクトに一度セットしたフィールドの値を、後から変更できるオブジェクトを**可変(mutable)オブジェクト**、変更できないオブジェクトを**不変オブジェクト(immutable)**という

・**java.lang.Stringクラス**や**java.io.Fileクラス**のインスタンスは不変オブジェクトの代表例であり、
値を後から変更することはできない
新しい値を扱いたい場合は新しいインスタンスを作るしかないが、**「変数の値(オブジェクトに対する参照)を変更」**するのであって、**「オブジェクトの状態を変更」**するわけではないで、そこの違いをしっかり理解すべし

・不変なオブジェクトを定義するには以下のようにする
 ①オブジェクトの内部状態を変更可能なメソッドを提供しない(**setterメソッド**など)
 ②**クラスをfinalで宣言**し、どのメソッドもオーバーライドされないことを保証する(サブクラスからの状態の変更を防ぐ)
 ③**全てのフィールドを”priv

元記事を表示

Swift Network.framework Study 20191207「Server TCP」その3 receiveメソッド使用 改善

# 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);) {
for(int i = 0; i < 5; i++) {

元記事を表示

Azure の Team Explorer for Eclipse で Git Repository が表示できないときの対応

#現象

Azure の Team Explorer for Eclipse で Git Repository が表示できない

#対応

Language Pack をアンインストールする

[Help] – [About Eclipse IDE] – [Installation Details] からたどると Team Explorer Language Pack を削除できるので、削除して再起動

図の右のように英語表記になって Git Repository が表示される。

![Clipboard07b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110265/5b855d04-efe1-97f3-c84f-10fc64f2f4d1.png)

元記事を表示

[Java] Objects.equals()について、とString(文字列) 比較( == と equals )のおさらい

Javaエンジニアのアクマちゃん[@akumachanit](https://twitter.com/akumachanit)デモ!今日は文字列比較の話をするデモ!

#Java1.7がやってきた
**いつの話をしてるのか**ってデモ?
アクマちゃんは職場で**JDK1.6でアプリケーションを開発**していたんデモ(令和の時代に信じられるデモ?だけどバージョンアップってなかなか大変デモからね!)が、最近バージョンアップをして1.7の機能を使えるようになったデモ!

#Objects
1.7から追加されたクラスに[Objects](https://docs.oracle.com/en/java/javase/13/docs/api/java.base/java/util/Objects.html)があるデモ。1.7がリリースされたのは2011年らしいから、これを読んでる人の中にはその頃まだエンジニアになってなかった人もいっぱいいると思うデモ。いまさらこんな話をしてごめんデモ。(かくいうワガハイもそのころまだエンジニアではなかったデモ)。

で、その`Objects`のメソッド`Objec

元記事を表示

DDD自分用覚え書き

# はじめに

– DDD本を読んで噛み砕いた理解をメモで残します(随時更新)。
– 検証可能性から、なるべく意見は引用からにしています。
– 実装例は、DDDの概念とは別にJavaの言語仕様から決めている面もあるかと思います。
– コード例は、WunderlistのようなTodoアプリを想定しています。

# 途中雑感

– domain modelとdomain serviceの説明を読んでいると、ビジネスルールを熟知することが問題の切り分けにつながる事だと強く感じる。
– 銀行という施設が持つべき概念としての中枢処理(domain model, repository, factory)
– 口座残高以上に出金できないだとか
– 投資商品の金利がいくらだとか
– 銀行員の業務(domain service)
– 振替処理をするだとか、組戻処理をするだとか
– 銀行員の生産性を上げるアプリケーションユースケース(application service)
– 円や日本語でやり取りするとか、帳票をXM

元記事を表示

Swift Network.framework Study 20191206「Server TCP」その2 receiveメソッド使用

# 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”);
}

元記事を表示

Chiselトラブル集

## はじめに

めんたるしんでるのでまちがいがあったら優しく教えてください

## Javaのバージョン依存によるトラブル回避

ScalaはJavaの派生なのでJavaのバージョン次第では動かなくなることが多々あります
自分の場合はScalaバージョン2.11、Java-11の組み合わせで動かしたらめっさ怒られた…
Scala2.11はJava-8との組み合わせで元気になりました
余談ではありますが、Scala2.12とJava-11もとっても仲がよかったです
以下Javaのバージョン変更コマンド

“`
$ sudo update-alternatives –config java
$ sudo update-alternatives –config javac
“`

## おわり

何かあったらここに足していこうと思います

元記事を表示

[ Java ] enum(列挙型)

今回はjavaでenumを使う機会があったので調査してみた。

##宣言方法
enumはクラスと同じように定義する。

~~~java
enum Enum名 {
}
~~~

それを踏まえて果物を列挙してみる。すると以下のようになる。

~~~java
enum Fruit {
APPLE,
ORANGE,
BANANA,
GRAPE
}
~~~

##値の使い方
enumの値はstaticフィールドへのアクセスと同様に、enum名.値でアクセスできる。

~~~java
System.out.println(Fruit.APLLE);
~~~

もちろんenum名型の変数を作って代入することも可能である。

~~~java
Fruit apple = Fruit.APPLE;
~~~

##enumが持つメソッド
enumは様々なメソッドをもっている。以下に代表的なものを紹介する。

###name()
enumの値の名称を文字列として返す。

~~~java
System.out.println(Fruit.APLLE.name()); //”AP

元記事を表示

Java の Object のサイズを簡単に測定する

#コード

“`java
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectOutput;
import java.io.ObjectOutputStream;

public class ObjectUtils {
public static int getObjectSize(Object o) {
ObjectOutput out = null;
try (ByteArrayOutputStream bos = new ByteArrayOutputStream()) {
out = new ObjectOutputStream(bos);
out.writeObject(o);
out.flush();
byte[] b = bos.toByteArray();
return b.length;
} catch (IOException e) {
return -1;
}
}
}
“`
#使い方

元記事を表示

【Eclipse】環境設定まとめ ※随時更新

Java開発を始めてEclipseを使うようになったのですが、
設定項目が多くて迷うことがあるので備忘録として残しておきます。
※随時更新していきます。

# Java
`[ウィンドウ]`-`[設定]`の`[Java]`-`[インストール済みのJRE]`
`[ウィンドウ]`-`[設定]`の`[Java]`-`[コンパイラー]` 
※ワークスペース個別設定プロパティでは`[Javaコンパイラー]`

**新規プロジェクト作成時に設定する場合**
`[Java プロジェクトを作成します。]`画面の「JRE」欄で`[プロジェクト固有のJRE を使用]`にチェックを入力し、任意のJRE を選択する。

**既存プロジェクトのJavaを変更する場合**
プロジェクトを選択し、右クリックのメニューより`[プロパティ]`を選択する。
プロパティ画面の左ペインより`[Java のビルドパス]`を選択し、
`[ライブラリー]`タブの`[JRE システムライブラリー]`で任意のJRE に変更する。

# エディタ
 行番号の表示
`[ウィンドウ]`-`[設定]`の`[一般]`-`[エディタ-]`-`[

元記事を表示

JSP+JSTLからThymeleafへ乗り換える

[アソビュー Advent Calendar 2019](https://qiita.com/advent-calendar/2019/asoview)の7日目です。

バックエンド開発チームの茶色いネズミ、アズマです。
今回はJavaのWebアプリケーションで古くから使われていたJSP+JSTLの機能を、Thymeleafに置き換えるときの対応表をご紹介します。

# JSP+JSTLからThymeleafへ乗り換える

JavaのWebアプリケーションを作る手法としてかつてはデファクトだったJSPでしたが、現在はSpringBootがThymeleafを採択したことにより、既存アプリケーションのリプレースに伴いプレゼンテーションをJSPからThymeleafへ置き換える[^2]事例もあります。

今回は旧来のJavaWebアプリケーションで使われるJSP+タグライブラリのJSTLで使われている機能をThymeleafへ置き換える方法を、機能の対応表とともに紹介します。

[^2]: 元々がサーブレットでHTMLを文字列で出力していたのを、HTMLを1つのテンプレートと見立ててJav

元記事を表示

コンストラクタ

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

##コンストラクタ

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

####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に近いほど相

元記事を表示

OTHERカテゴリの最新記事