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

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

Mockitoが難しいのでUdemyで勉強しました

# 概要
現在SpringBootのテストコードの勉強中です。
私の実力不足によりテストコードはとても難しく試行錯誤している状態です。

mockitoを使うのですが
mockitoについて公式ドキュメントを読んでも全く理解できませんでした…

この現状を打開すべく、Udemyで講座を受けました。

私は現状なんとなくしか理解してないです。大まかな感じが伝われば幸いです。
正確な情報は公式Documentと講座の方で確認お願い致します。

# 受けた講座について

**Testing Spring Boot: Beginner to Guru**

https://www.udemy.com/course/testing-spring-boot-beginner-to-guru

講師名:John Thompson氏
Section9:Getting Started with Mockito

音声、字幕共に英語です。理解に時間は掛かりますが情報量が多く満足しています。

SpringBootのテスト手法を幅広く扱っています。総再生時間は17時間です。
junit5を触ったこと

元記事を表示

「なぜ人は利益は確定しようとするのに損失は運に任せて回避しようとするのか」をシミュレーションで解明しようとした

# はじめに
行動経済学の知見の一つに「損失回避の法則([プロスペクト理論](https://ja.wikipedia.org/wiki/%E3%83%97%E3%83%AD%E3%82%B9%E3%83%9A%E3%82%AF%E3%83%88%E7%90%86%E8%AB%96))」というのがあります。例えば以下のような選択肢があったとします。

1: 選択肢A:100万円が無条件で手に入る。
2: 選択肢B:コインを投げ、表が出たら200万円が手に入るが、裏が出たら何も手に入らない。

この二つは手に入る金額の期待値は同じ100万円ですが、ほとんどの人は(おそらくあなたも)100万円が無条件で手に入る方を選びます。
一方で以下のような質問をされたとします。

1: 選択肢A:無条件で借金が100万円減額され、借金総額が100万円となる。
2: 選択肢B:コインを投げ、表が出たら借金が全額免除されるが、裏が出たら借金総額は変わらない。

この場合も期待値が-100万円で **同じ** であることは変わりません。しかしほとんどの人は前回と打って変わって2番目のギャンブル性のある選択肢

元記事を表示

Javaの学習まとめ①

### はじめに
Javaの学習はじめたので用語をまとめています。
理解のためにRailsでやった内容だとこういう意味かな?とリンクさせたりしていますが合っているのか自信はないです🙇‍♀️
(Rubyは学習できていないのでRailsで考えています)

なにやらメソッドやらクラスやらインスタンスやらの用語が結構出てきます。
モデルへのメソッドの定義方法を知れたことが結構でかく、言っていることが少しわかります。
↑これが出来るようになるまでは出てくる用語に対して全然理解できていなかったのでJavaの学習が進まなかったと思います。

#### 言語
Java:コンパイル言語
はじめにソースコードをパソコンが理解できるように置き換えてからプログラムを実行。
いちいちコンパイルしてから実行するので面倒だけど一度書いちゃえば環境問わず、高速に動作する。
Railsみたいにdebuggerを入れてデバッグは出来ないらしい

Rails:スクリプト言語
実行するたびに理解できるように書き換える。プログラムが途中でも実行が可能。

Javaの使いづらい部分を改善するために出来た言語が多いが、それでもJa

元記事を表示

[ JJUG CCC 2022 Spring ] AWS Batch × Spring Batch でクラウド最適なバッチを構築した話

こんにちは。[Red Frasco](https://www.red-frasco.com/) でインフラエンジニアをやっている[猪熊](https://twitter.com/sinocloudon)です。
[JJUG CCC 2022 Spring](https://ccc2022spring.java-users.jp/) にて、 [AWS Batch × Spring Batch でクラウド最適なバッチを構築した話](https://fortee.jp/jjug-ccc-2022-spring/proposal/fbb1e886-d51a-4052-b284-6e9c80f132ea) というタイトルで登壇させていただきました。

セッション内容の紹介と登壇のふりかえりをしようと思います。

# セッションの紹介

まずは、セッション内容について紹介します。

## 自己紹介

詳細は割愛します。
香川県出身で、うどんが好きなインフラエンジニアです。

## バッチ基盤を構築する背景

![image.png](https://qiita-image-store.s3.ap-n

元記事を表示

動画でJavaを学習したまとめ

### はじめに
下記のYouTubeがとてもわかり易かったので、自分なりにまとめました。(メモの様になってしまいすみません🙇‍♀️)

「Java基礎学習」再生リストの#1へ飛びます。
用語の解説やなぜその記述が必要なのか?など丁寧に解説されています。
Java学習してるけど曖昧なところが多い、という方はぜひ!

### メソッドの定義の書き方 

##### 基本構文

“`
修飾子 戻り型 メソッド名 (引数型 引数名) {}
“`
修飾子:よく分かっていません…
戻り型:メソッド実行時に最終的に**returnされる型**
メソッド名:一行が長いのでわかりにくいが戻り型の直後がメソッド名
引数:()内で変数の宣言ができる(直前に別途で宣言する必要はない)

##### void使うとき?

戻り値のないメソッドの場合はvoid(戻り値がないので型なんてものもない→なにもないよ:voidってこと)
例)表示さ

元記事を表示

Java開発未経験がJava Gold に合格できた勉強方法

# はじめに
私が**Java Gold**を合格した時の勉強時間と勉強方法をお話しします。
少しでも参考になればと思います。

# 受験時のスペック
## 1. 開発経験
+ Webアプリ開発:1年
+ **Javaの開発経験はなし**
## 2. 受験時の保有資格
+ Java Silver

# 勉強期間
**Java Silver**取得から半年ほどで取得。
途中勉強時間を取れてない期間もあったので、棍詰めれば3ヶ月ほどで合格することも可能かと思います。
# 勉強時間
だいたい100時間くらい勉強しました。
Javaの開発経験のない方は、このくらいの勉強時間は必要かと思います。

# 勉強方法
## 1. 黒本の問題を解いて解説を理解
黒本の問題を全て解けるようになるまで勉強しました。
また解説も徹底的に読み込み、処理のロジックを理解することを意識していました。
## 2. 紫本を読み込み
Java Goldの試験範囲についての知識(構文やメソッドなど)を理解するために使用しました。
紫本の問題は解いていません。

# 受験してみての感想
実務経験がない方が**Java Gol

元記事を表示

DTOについて

1.定義
DataTransferObject、データ転送オブジェクト)はプロセス間でデータを伝達するオブジェクト

2.なぜ使用しなければならないのか?

1)DTOを使わないと、通信の回数が増加するだけでなく、ロジックが非効率的になるからだ。

2)通信を通じて値がサーバーに伝達されるとしよう。
送信された値をサーバで使用する値に変えるために、我々は直列化(serialization)を経なければならない。
ところが、原始値の場合、直列化ロジックを内部に持ちにくいので、
通信を担当するコントローラレイヤーで直列化に対するコードを持たなければならない。
このコードはコントローラごとに必要なので管理することも難しく、
また、修正しようとする時、正確にどこを修正しなければならないのか知ることも難しい。
しかし、オブジェクトに整理されたDTOの場合、直列化ロジックを内部にカプセル化して持っていることができる。
この場合、責任も明確でコードを修正することも楽だろう。

3)EntityではなくDTOを伝達することで、各レイヤー間の役割を分離することができるため

元記事を表示

Docker未経験の素人がSpring + MySQLで開発環境を構築したら

# はじめに
 Dockerを用いてSpring BootとMySQLの開発環境を構築し、ごく簡単なTODOアプリを作成しました。自身で勉強しながらの環境構築なので、Dockerfileやdocker-compose.ymlといった設定ファイルは、必ずしも最適な記述方法ではないということをご了承ください。
 今回作成したプロジェクトはGitHub上に公開しております。

https://github.com/be834194/Container-Practice

# 前提
+ Mavenを用いたSpringプロジェクトが作成できる
+ gitインストール済みで、githubアカウントを持っている
+ VS Codeとjavaの拡張機能インストール済み
+ Dockerインストール済み

 各アプリのインストールや初期設定に関しましては、本記事の趣旨から外れてしまうため説明いたしません。ご了承ください。

# 筆者の環境
+ java 17
+ jdk 17
+ maven 3.8.3
+ VS Code 1.68.1
+ Docker 20.10.16

# Dockerとは
 コン

元記事を表示

Java使いからPHPerに転身した際にはまったこと

# 概略
業界に入ってから長らくJavaをメインで使っていたプログラマである筆者が、業務でPHPを使うようになった際にはまったことを思い出して列挙していく。
詰まった時しか公式リファレンスとか見ないから何となくでやるとびっくりしてしまう。

## マルチスレッド
Javaだとマルチスレッド当たり前なので、シングルトンだったりstaticな変数を更新していたりすると「そんなバカな、死にたいのか!?」と思ったりしたが、Webアプリケーションとして動くPHPでは通常リクエストごとに別プロセスが起動していてそんな問題になることはないようだった。

## arrayがプリミティブ風に動く
内部的にどういう扱いになっているのか具体的にわかっていないけれど、arrayを代入したら別の配列となる。
Java的な常識だと同じオブジェクトの参照となるイメージだったから衝撃だった。
javaだと
“`java:Main.java
public class Main {
public static void main(String[] args) {
int[] array1 = {10, 20

元記事を表示

java.util.Collectors vs. System.Linq.Enumerable

# 動機

C# には java の Stream API に相当する Linq があるが、いまひとつ使いこなせなかったため、
java で出来ていたこういう処理を C# で書くとどうなるのか? についてのメモを残そうと思い立った.

おそらく初めての言語として C# を選んだ人にとっては役に立たないだろう.

# 具体例

「java でこう書くとこのような結果が出る」というのを書き、その後ろに C# での書き方の一例を示していく.

## 例に使用するコード

“`java:java sample
public class Program {
public static void main(String[] args) {
List list = createDataList();

// T resultXX = list.stream().collect(Collectors.XXX());
// System.out.println(“resultXX=” + resultXX);
}

private static Li

元記事を表示

JavaのSocketでプロキシを使う

# はじめに
今時のプロキシはConnectすると生データがそのまま通せるので、普通のSocketでもプロキシが使える。

# プロキシサーバの設定
とりあえず普通に指定する場合、Proxyのコンストラクタでアドレスを指定すれば良い。

“`java
Proxy px = null;
try {
InetSocketAddress px_addr = new InetSocketAddress(“プロキシサーバのアドレス”, 3128);
px = new Proxy(Proxy.Type.HTTP, px_addr);
}
catch (Exception e) {
// エラー処理
}
“`

# Socket生成
SocketのコンストラクタでProxyが指定できるようになっている。作ったら普通にconnectすれば良い。

“`java
Socket sock = null;
try {
sock = new Socket(px);
InetSocketAddress con_addr = new InetSocketAddress

元記事を表示

いまさら聞けない「アノテーション」とは?

## はじめに
普段の業務でAndroid Java, C++ のソースコードをいじっているのですが、何となく見ている「アノテーション」。

そういやこれってどういう意味?っと思ったので調べてみました。

あと最近同期のエンジニアが、「アノテーション」を業務で作成したり、修正したりすることがあったらしく、めちゃくちゃ苦戦したらしいので調べてみよーっと思った経緯です。

アノテーションって、ただの「目印」「注釈」?くらいの認識です。
注釈つけておけば、他の人がソースを見たときに分かりやすくなるから、Javadocのような認識です。

それがどうやら違うらしいので、調べていきますー。

## あなたは誰?
失礼しましたw

お前は誰やねん!って思った方もいらっしゃる思うので簡単に自己紹介をさせていただきます。

> 現職:SESエンジニア(歴1年)
前職:営業
年齢:27歳
使用言語:Java, Android Java, C++
工程:テスト、実装(設計もやってみたい…)
好きなこと:サウナ/登山/ダーツ/酒/運動全般

## 結論

ただの「注釈」ではない。

Javaではアノテー

元記事を表示

その他の投稿

|[../](https://qiita.com/taconana/items/d382d08a83a2a67f3b6a) |
|—|

– [WindowsへのPostgreSQLのインストール手順](https://qiita.com/taconana/items/405678ccd1654985de9d)
– [PostgreSQLでのsequenceの使い方](https://qiita.com/taconana/items/cb6d3a49e3b6542b477e)
– [Java検定問題](https://qiita.com/taconana/items/5ae13e9d85135cf78333)

|[../](https://qiita.com/taconana/items/d382d08a83a2a67f3b6a) |
|—|

元記事を表示

【初心者】プログラムを作る材料5つ その1「コンピュータ」

# はじめに
IT歴2ヶ月の初心者プログラマー鹿太郎です。
初心者なりに感じた疑問や分からないことを発信していきたいと思います!

まずはこちら!
「プログラムってどうやって作るの?」です!
今回はその材料の一つである、「コンピュータ」についてまとめました!
早速いきましょう!

# コンピュータ
コンピュータとは、電子回路を用いて計算を実行する機械のことです。
・・・
そんなことは分かってるよ!って感じですね。
詳しく見ていきましょう。

コンピュータは以下の5つの要素で構成されています。
## ①演算装置
データに対して、四則演算や論理演算などの演算を行う役割を担う装置のことです。
後述する制御装置とともに、CPU(中央処理装置)に実装されています。

## ②制御装置
言葉通り、他の装置の制御を行う装置のことです。
他の4つの装置を制御する親分的な役割ですね。
上記の演算装置とともに、CPU(中央処理装置)に実装されています。

## ③入力装置
コンピュータに命令やデータを与える役割を担う装置のことです。
これはイメージがつきやすいのではないでしょうか。
マウスやキーボードなど

元記事を表示

間接的なメソッド呼び出し






やりたいこと

  1. Hello2.main(String[] args)から、Hello.hello()を経由してHello3.hello()を呼び出したい。同時に、実引数”5″を渡して、hello3.hello()のループ処理で、”hello!world!”を実引数の回数分、出力させたい。
  2. 戻り値を50で返してもらい、mainメソッドで出力したい。

コード

呼び出し元

“`java
//呼び出し元
public class Hello2 {
public static void main(String[] args) {
System.out.print(Hello.hello(5));
}
}
“`

経由

“`java
//呼び出し先①(経由)
public class Hello {
public static vo

元記事を表示

データの変換と検証(WebDataBinder)

WebDataBinder : データのタイプを変換し、検証もしてくれる。

1.データの変換
(1)PropertyEditor : 双方向タイプ変換 (タイプ↔String)。特定のタイプまたは名前のフィールドに
          適用可能。プログラム内で提供するDefault PEと、
          ユーザーが直接登録可能なCustom PEがある。
          種類(https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/beans/propertyeditors/package-summary.html)
(2)Converter : 単方向タイプ変換(タイプA→タイプB)。PEの欠点を改善することによって
        安全性が良くなった(stateful→stateless)。
(3)ConversionService 複数のConverterを登録しておいたもの。タイプ変換サービスを提供。
(4)Formatter : 双方向タイプ変換

元記事を表示

DispatcherServletの役割

DispatcherServlet

Webの処理ロジックの中、リクエスト、処理、レスポンスを1つのGroupにして処理するのをServeletという。複数のServeletで共通に処理できる部分だけを1つにして先に処理するようにしたのがDispatcherServlet。重複作業を1つにすることで処理に効率が高くなる。
関心の分離の1つの例である。関心の分離については以前投稿したので、Linkを貼っておきます。

https://qiita.com/KyungJoon960/items/6acdbf857789b22511d3

元記事を表示

GUIメニュープラグインを作る(Spigot/Java)

### 開発環境
・Windows11
・IntelliJ IDEA
・Spigot API ver:1.18.2
## GUIメニューとは
![2022-06-17_19.46.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2403016/d58790b2-c005-4bb7-fd51-005112fa3eb7.png)
こんなかんじ(↑)の直感的に操作できるメニューのことです。
大手から中小鯖まで様々なサーバーで独自のサーバーメニューが開発、運用されています。

## GUIメニューを作ってみよう
と言うわけで早速作ってみましょう!
面倒だなあと思ったらSkriptなどを導入することをお勧めします。
ここから先は自己満ですから!

それと今回は木の棒をクリックしたらメニューが開くタイプにします

### ステップ1
PlayerInteractEvent、InventoryClickEvent、InventoryCloseEventのクラスを作ってListenerで実装しましょう。
Playe

元記事を表示

SpringBootで処理速度改善のために意識したこと

# 概要
プログラムを書いていてものすごく処理が重くなったりすることがある。
この辺りを意識すると改善するかもしれないことをまとめる。
今後もいい感じのものがあれば追加していきたい。

# Tips
## 並列実行を採用する
Javaはスレッド処理ができるので並列処理ができるか検討してみる。

EX.
“`
final int threadSize = 3;
final ForkJoinPool pool = new ForkJoinPool(threadSize);
final List stringList = pool
.submit(() -> List.of(1, 2).parallelStream().map(Objects::toString))
.get().collect(
Collectors.toUnmodifiableList());
“`
このような形でsubmit内に並列処理をしたい処理を書くと並列で実行してくれた結果を取得できる。
並列実行数はForkJoinPoolの引数で指定す

元記事を表示

Java検定問題

|[../](https://qiita.com/taconana/items/55e4ea3283f2fa82a670) |
|—|

Java検定の問題を作ってみました。

問題1:
“`java
System.out.println(“すき家”.length()); // –> 3
System.out.println(“𠮷野家”.length()); // –> ???
“`

問題2:
“`java
System.out.println(Integer.MAX_VALUE + 1); // –> -2147483648
System.out.println(65536 * 65536); // –> ???
“`
問題3:
“`java
System.out.println( 1 % 2); // –> 1
System.out.println(-1 % 2); // –> -1
System.out.println( 1 % -2); // –> 1
System.out.println(-1 %

元記事を表示

OTHERカテゴリの最新記事