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

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

「マイクロサービスパターン」の復習 5章

## 概要

– Java読書会でせっかく勉強したのにつぎつぎと忘れていくので、印象に残ったところを記録していく

http://www.javareading.com/bof/

## 5章 マイクロサービスアーキテクチャにおけるビジネスロジックの設計

ビジネスロジックを設計上、どのように構築していくか

## Transaction scriptパターン

– もっともシンプルな形態
– ビジネスロジックはサービスクラスに持たせて、エンティティクラスはデータだけ
– エンンティティの方はORマッパーでマッピングする
– 利点
– 設計が簡単
– エンティティ側がデータだけなので、責務について悩むこともない
– ロジックとデータが分離されている
– ビジネスロジックとデータ(データベースのスキーマ)の変更頻度・ライフサイクルは違うので別れている方が良いという考え方もある
– 欠点
– ビジネスロジックの重複
– ビジネスロジック間の共通ロジックについて、共通化がきれいにできない
– ロジックは全

元記事を表示

OCJPをSE7からSE11にアップグレードしたときの勉強記録

## この記事について
2016.10に取得した「Oracle Certified Java Programmer, Gold SE 7」をそろそろアップデートしようかなと思い、2022.02に「Upgrade OCJP Java 6, 7 & 8 to Java SE 11 Developer」を受験した時の勉強内容を記録。

## この資格について

Oracleの認定資格のうち、Javaに関する資格「Oracle Certified Java Programmer」は

– Gold(Professional)
– Silver(Associate)
– Bronze

の3段階に分かれている。
海外ではBronzeは存在せず「Silver」「Gold」はそれぞれ「Associate」「Professional」と呼ばれている、そのためBronzeは国際資格ではない。
![javase11_ja.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/140013/6ef3f7c8-8a78-7e6c

元記事を表示

Javaの同値性と同一性についてまとめてみた

Javaで同一性と同値性について調べてみたのでまとめてみました。

# 同値性と同一性の違い

配列、もしくは変数に同じ値かどうかを調べるのか、同じインスタンスで生成されたかどうかを調べるのか
が違います。

配列、もしくは変数に同じ値が入るかどうかを調べるのが同値性

同じインスタンスで生成されたかどうかを判定するのが同一性です。

ここでポイントになるのは、同値性は同じインスタンスで生成されているかいないかは関係ありません。インスタンスを仮にまたいだとしても、同じ値が格納されているのかどうかで判定します。

# 同値性と同一性はどうやって判定するのか

同値性は`equals`

同一性は`==`で判定します。

# サンプルコード

試しに同値性と同一性を判定してみましょう。

“`Main.java
class Main {
public static void main(String args[]){
Integer a = 127;
Integer b = 127;
//変数aと変数bの同一性の判定をする

元記事を表示

ひと言学習メモ1:printとprintlnの活用(P.S.return文についても)

ひと言:
print()は改行なし、println()は改行付き。
returnは結果を戻す、上記2種は出力するのみ。

自己流解釈:
〇print:
コンソールに一行で連続出力したい時に使う。

〇println;
改行したい時に使う。

〇return:
return(a)はSystem.out.println(a)は、コンソールでの出力結果が同じように見える時もあるが、本質的に違う。
voidメソッドで簡単判断するのもあり。

ここ最近経験した標準入出力問題について、自分のコードをメモします。

Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
for (int i = 0; i < N; i++) { String token1 = sc.next(); System.out.print(token1+" "); int token2 = sc.nextInt(); S

元記事を表示

【 Javaの条件式について 】

現在Javaを独学で学習中のため、自分への刷り込みを目的としての投稿になります。

## 条件式では「 = 」ではなく「 == 」
初心者が陥りやすいところで、条件式を書くときは「 == 」を使用する。
例:
“`java
○ initial == “田中”
✖️ initial = “田中”
“`

## 文字列を比較する時の書き方
Javaでは、条件式のなかでString型の変数や文字列を比較する場合特別な書き方をする。
“`java
○ if (str.equals(“夕日”)){….}
✖️ if ( str == “夕日”){….}
“`

⚠︎仮に == を使用してもコンパイルエラーにはならず、時々変な動きをするというタチの悪い動きをする。

## Javaの賢い話(短絡評価)
“`java
if (age >= 18 && age == 5){…}
“`
という条件式があり、ageの内容が1の場合、
上の条件式の左辺のみ評価した時点でfalseが確定するので、右辺は無視する。
このようなJavaのふるまいを`短絡評価`という。

以上本日の刷

元記事を表示

MyBatis Generatorの導入手順

# はじめに
Spring Bootの勉強過程でMyBatisを用いてデータベース接続を行おうとしているのだが、
テーブル定義に則ったentityクラスを作る際、1つ1つ手作業で全カラムのフィールドを作成するのは骨が折れる。

以下のようなテーブルが複数あった場合、テーブルごとにentityクラスを作成する必要があるが…

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/503230/e0a71a20-c689-7f07-d2d9-bbc985f8fd43.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/503230/ccc0718e-136e-c716-8bf4-eb91c5572413.png)

1つ1つカラム名見て、データ型見て…と、勉強用の開発ならチマチマ手作業で行ってもいいのだが、業務で開発を行う際はテーブル・カラムの量が個人でやる比じゃないため、さすがに面倒く

元記事を表示

Amazon API Gateway + Lambda統合をJavaで実装するメモ

## 対象読者
– 自分
– JavaでLambdaを実装する人
## API Gateway
REST APIで定義する。
メソッドの作成時、統合タイプが選択できる。この時Lambda関数が選択できるが、
– 「Lambda プロキシ統合の使用」にチェックを入れるとLambdaプロキシ統合のリクエスト・レスポンス形式に沿ってLambda(Java)の実装が必要
– Lambda プロキシ統合
– チェックを入れないとAPI Gateway側の「統合リクエスト – マッピングテンプレート」での定義が必要となる。
– API Gateway 内でリクエスト変換をするということ
– Lambda 非プロキシ統合

マッピングテンプレートの例:
“`text:マッピングテンプレート
#set($inputRoot = $input.path(‘$’))
{
“title” : $input.json(‘$.title’),
“body” : $input.json(‘$.body’),
“coverImageUrl” : $input.json

元記事を表示

Java Silver SE11 11章

# Java Silver SE11 11章
[黒本](https://www.amazon.co.jp/gp/product/4295007625/ref=ppx_yo_dt_b_asin_title_o00_s00?ie=UTF8&psc=1)をもとに学んだことをアウトプットしていきます。
主に問題を解いていて、間違えた箇所もしくは知らなかった内容になります。

## モジュール
複数のパッケージをまとめて管理する単位のこと。
モジュール内のパッケージは、明示しなければ非公開パッケージとなり、パッケージに含まれるクラスがpublicであったとしても、外部のモジュールからアクセスできなくなる。

### プラットフォームモジュール
標準クラスライブラリなど、あらかじめ用意されているライブラリを提供しているモジュールのこと。
例として、java.langやjava.util, java.ioパッケージなどをまとめているのが、“`java.baseモジュール“`である。このモジュールは自動的に読み込まれる。

### module-info.java
対象のモジュールの設定内容を

元記事を表示

ラムダ式でtry-with-resources文にクローズ処理以外の後片付けをさせる方法

# 概要
try-with-resources文の自動クローズを利用するにはリソースにAutoCloseableインターフェースが実装されている必要があるが、このインターフェースを持たないクラスに対してもラムダ式を使って自動クローズするさせる方法についてメモ

# try-with-resources文で自動クローズされる仕組み
ドキュメントを確認してみたところ、try-with-resources文の中でオープンされたリソースのAutoCloseabelインターフェースがtry文を抜ける際に呼び出されてクローズ処理が行われるからという理解でよさそう

https://docs.oracle.com/javase/jp/7/technotes/guides/language/try-with-resources.html

# `HttpURLConnection`と自動クローズ
AutoCloseableインターフェースを持っているリソースの自動クローズをしてくれるtry-with-resources文だが、例えばHttpURLConnectionのようなclose処理があるがこの

元記事を表示

【 Javaの条件式 】

現在Javaを独学で学習中です。
この投稿はその備忘録になります。

## 制御構造
変数や型・リテラル・演算子などを利用した文を実行させる順番のことを`制御構造`とよびます。
制御構造の代表的なものとして、

①順次
②分岐
③繰り返し

があります。

### ①順次
「単純に次の文を実行する。」
下図のように上からした下にソースコードを実行します。
“`java
public class Main{
public static void main(String[] args){
int age = 23;
System.out.println(age);
}
}
“`

### ②繰り返し
「条件によって違う文を実行する。」
下図のように、条件によって実行する内容が異なります。
“`java
public class Main{
public static void main(String[] args){

}
}
“`

元記事を表示

conda環境で作成したSpleeterをJavaから無理やり呼びだして処理した

## 事の発端
Javaのプロジェクトで作業をしているときに音と声を分けたい処理が出てきた。
調べてみるとSpleeterがいいらしく、言語はPythonだった。
今更JavaからPythonに書き換えるのは辛いため、どうにかならないか?
そうだ、無理やり呼びだしてみよう。

## 環境
Amazon Corretto 17.0.2
conda 4.11.0 (Python 3.7)
Windows 10 Home 64bit

## Anaconda + Spleeterの構築ファイル
こちらの記事を参考に作成。
[Qiita: 一番簡単なWindowsによるSpleeter使用環境構築](https://qiita.com/east_1106/items/7281c4cb83c9c2be0d86)

“`yaml:spleeter-cpu.yaml
name: spleeter-cpu

channels:
– conda-forge
– anaconda

dependencies:
– python=3.7
– tensorflow=1.14.0
– ff

元記事を表示

自分用Javaコーディング規約

## はじめに
自分用のJavaコーディング規約です。
自身で普段気を付けていること、書籍やネットでためになったこと、を忘れないようにまとめます。

## 一般

### インポートに「“`*“`」は使わない
そのクラスがどのパッケージのものなのか分かりやすくするため。
ただしimport文が大量になって逆に可読性が下がる場合は利用も考える。
ちなみにJavaでは「“`*“`」を指定してもパフォーマンスに影響したり、クラスファイルのサイズが大きくなったりすることはない。

### booleanメソッド名はどちらを返すのかわかるようにする

“`:
OK exists(), hasData() //存在してればtrueが返るのが明白
NG check() //どういう条件でtrueが返るのかわからない
“`

### equals()とhashCode()はセットでオーバーライドする
基本的なことだが、hashCode()もオーバーライドし忘れるとHashMapなどHashXXXでそのクラスのインスタンスが使えなくなるためオーバーライドする。

### ラッパークラスを乱

元記事を表示

【Java】コレクションを扱う上で覚えておきたいStream API

## ストリームAPIとは
コレクション(集合体)をより扱いやすくするためのものです。使用する流れとして以下の通りです。

1. コレクションからstreamを取得
2. streamに対して「中間操作」を実行。コレクションの中身を都合よく変換
3. 「終端操作」で変換したコレクションの中身に対して処理を適用する

:::note warn
ラムダ式を使用していくのでラムダ式の使い方がわからない方は以下の記事でラムダ式について学ぶことをお勧めします。
:::

https://qiita.com/110shun/items/07f96b571532c18d97c0

## ストリームを取得するためメソッド
#### Collectionインターフェースのstreamメソッド
デフォルトメソッドとして実装されており、ListやSetといったCollectionのサブインターフェースでも利用できます。

“`Sample.java
import java.util.List;

public class Sample {
public static void main(String[

元記事を表示

Java Silver SE11 10章

# Java Silver SE11 10章
[黒本](https://www.amazon.co.jp/gp/product/4295007625/ref=ppx_yo_dt_b_asin_title_o00_s00?ie=UTF8&psc=1)をもとに学んだことをアウトプットしていきます。
主に問題を解いていて、間違えた箇所もしくは知らなかった内容になります。

## 例外処理
例外が発生したときに、「どのように対処するか」を記述した処理のこと。
Javaでは“`try-catch(-finally)“`構文で記述する。
“`tryブロック“`:例外が発生する可能性のある処理
“`catchブロック“`:例外が発生した時の処理
“`finallyブロック“`:例外発生の有無に関わらず実行したい処理(省略可能)
例外が発生した時、tryブロックの以降の処理を実行せず、catchブロックに移行される。

### ルール

* try-catch-fianllyの順番は変更できない、変更した場合コンパイルエラーになる
* tryブロックとfinallyブロックは1つのみ、

元記事を表示

Javaを使用してExcelの図形を追加、読み取り、削除する方法

この記事では、次のようなJavaプログラムを使用してExcelで図形(グラフィックス)を操作する方法を紹介します。

1.図形を追加します(図形の種類/位置/サイズの設定、図形の塗りつぶし(単色/グラデーションの色/テクスチャ/画像の塗りつぶし)、図形の表示または非表示、図形の傾斜角度、図形へのテキストの追加、図形の影など)

2.図形からテキストと画像を抽出します

3.図形を削除します(指定された図形またはすべての図形を削除します)

ツール:Spire.XLS for Java

Jarファイルの取得とインポート:[公式Webサイト](https://www.e-iceblue.com/Download/xls-for-java.html)またはMavenからダウンロードしてインポートします。インポート効果は次のとおりです。
![01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/56a15d66-377e-e3c9-71d8-8e629450aa64.png)

## Javaコー

元記事を表示

JNAでショートカットを作ってみた

## これまでのあらすじ

いまさらJavaでGUIやっているのだけれど、アプリ上からショートカットを作れっていわれた。ぐぐるさんに聞いてもあまり参考になる情報がない。まじかめんどいぞ。

:::note
ご注意
以下のコードはJNA Version 5.10.0 を利用したものとなっています。
以下のテキストは9割がた与太なので、方法だけ知りたい場合にはページの最後までスクロールしてください。
:::

## Javaじゃなかったらどうやって作るのん?

どうやらプログラム上からショートカットを作るには Windows Script Host なるものを使うらしい。

“`vb:shortcut.vbs
‘ シェルオブジェクトを取得して
Set shell = WScript.CreateObject(“WScript.Shell”)
‘ ファイルの場所指定してショートカットオブジェクト生成して
Set shortCut = shell.CreateShortcut(shell.SpecialFolders(“Desktop”) + “\cmd.lnk”)
‘ リンク先(今回はコマ

元記事を表示

Javaのクラスパス(classpath)の設定方法

クラスパスを設定する方法は下記の3つあります。
## 1 コマンドラインで指定する
“`java
java -classpath C:\program
“`
‘;'(セミコロン)区切りで複数のクラスパスを設定できます。
javaコマンドでは’*-classpath*’を’*-cp*’に省略可能です。
“`java
java -cp C:\program1;C:\program2
“`
## 2 OSの環境変数に設定する
“`powershell:Windows
set CLASSPATH=C:\program1;C:\program2
“`
“`zsh:macOS
export CLASSPATH=~/program1;~/program2
“`
“`:linux
setenv CLASSPATH=/home/program
“`
## 3 デフォルト(指定しない場合)
カレントディレクトリになります。
‘*C:\program\sample*’で実行した場合は’*C:\program\sample*’がクラスパスになります。

### 参考文献
– https:/

元記事を表示

クラス変数の持ち主

# これは何?

クラス変数の持ち主が、 python と ruby で違うことに気がついたので、他の言語どうなってるんだろと思って調査したのでその記録。ジェネリクスとテンプレートを交えながら。

# ruby の場合

“`ruby:ruby
class B
def set_v(x); @@v=x; end
def v(); @@v; end
end

class C < B;end class D < B;end c = C.new.set_v("C#set_v") d = D.new.set_v("D#set_v") p [ C.new.v, D.new.v ] #=> [“D#set_v”, “D#set_v”]
“`

クラス変数 `@@v` の持ち主は、 `class B` 。

`C` 経由で変更しても、 `D` から見た `@@v` の値が変わる。

# Python3 の場合

“`python:python3
class B:
v = “in-class-def”
@classmethod
def setV(cls,

元記事を表示

コンピュータとオセロ対戦45 ~最適化関数~

https://qiita.com/tt_and_tk/items/068f2afde6db637e189f

[前回](https://qiita.com/tt_and_tk/items/5b6f755a115af6eac620)

# 今回の目標
勾配降下法以外の最適化関数も実装していきます。
# ここから本編
本編に入る前に、[前回](https://qiita.com/tt_and_tk/items/5b6f755a115af6eac620)、実際にテストとして作成した足し算人工知能について追記。
あれから精度を上げるべくいろいろ試したところ、誤差0のネットワークが作れてしまいました。

“`test.java
import optimizer.*;
import network.*;
import layer.*;
import nodes.activationFunction.*;
import costFunction.*;
import matrix.*;

public class test {
public static void main(String[

元記事を表示

Discord Game SDKを使用してDiscordのRich Presenceを実装する

# 前置き

私は個人でゲームを開発している~~暇~~人です。
とある日、Discordで自分のゲームを遊んでいる人が見えたらうれしいなと思い、Discord RichPresenceを実装しようと思いました。

そこで、[Discord-RPC](https://github.com/Vatuu/discord-rpc)というラッパーライブラリを使用しようと思いましたが、どうやらこのDiscord-RPCというプロジェクト、ラップされている側のDiscord-RPC(dll的な奴)がすでにメンテナンスされていないようです。

どうしようかなとDiscordの[Developer Guide](https://discord.com/developers/docs/game-sdk/sdk-starter-guide)を眺めていたら**Discord Game SDK**というものが存在することを知りました。
**「絶対これはいける!!」**
そう確信した私は[Discord-Game-SDK4J](https://github.com/JnCrMx/discord-game-sdk4

元記事を表示

OTHERカテゴリの最新記事