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

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

【JUnit】mockwebserverのtakeRequestでテストが止まる

# 概要
JUnitを書いていて、WebClientのUTを記載した際、takeRequestで実行内容を取得しようとするところでテストが止まる事象が起きた。同じとこで詰まってる人いたらのため記載。

以下のようにぐるぐるなって進まない。
![テストファイル.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153118/3b0fa0bc-e7e4-5514-981a-760712951847.png)

https://square.github.io/okhttp/3.x/mockwebserver/index.html?okhttp3/mockwebserver/MockWebServer.html

# 原因
原因説明のために以下にソースを記載する。
### テストソース
“`
MockWebServer mockServer = new MockWebServer();
mockServer.start();
baseUrl = String.format(“http:/

元記事を表示

74 解答

この問題はbinary searchの使用を目的としている。
# 参考
[Nick White](https://www.youtube.com/watch?v=eT0UqrYuqbg)
# n^2

“`Java

public boolean searchMatrix(int[][] matrix, int target) {
int m = matrix.length;
int n = matrix[0].length;

for(int i = 0; i < m; i++) { for(int j = 0; j < n; j++) { if(matrix[i][j] == target) { return true; } } } return false; } ``` # logn ```Java public boolean searchMatrix(int[][] matrix, int target) { int rows = matrix.length; int columns

元記事を表示

36 解答

# 参考
[Nick White](https://www.youtube.com/watch?v=Pl7mMcBm2b8) : LeetCode 36. Valid Sudoku (Algorithm Explained)
[GeeksforGeeks](https://www.geeksforgeeks.org/hashset-add-method-in-java/) : HashSet add() Method in Java
英語がわかる人は絶対こっちのほうがわかりやすいので、[Nick White]さんのYouTubeを見てね! (ステマではないです)

# 解答

“`Java
public boolean isValidSudoku(char[][] board) {
Set seen = new HashSet<>();
for (int i = 0; i < 9; i++) { for (int j = 0; j < 9; j++) { char current_val = board[i][j]; if (curre

元記事を表示

【Maven】Could not find artifact sun.jdk:tools:jar:1.8.0 at specified path

Mavenにて `clean package` を実行したときに以下のエラー
“`
Could not find artifact sun.jdk:tools:jar:1.8.0 at specified path
“`

# 環境
Windows
Maven v3.8.5
java v1.8.0
Jdk v1.8.0

# 結論
環境変数内のJAVA_HOMEがJREを向いていたため、JDKに修正すると実行された。
エラーの中でruntimeがJREになっていたら、JDKになおしましょう。

# 参考
https://www.eclipse.org/forums/index.php/t/1091063/

元記事を表示

AtCoderのコンテスト解法一覧

## 注意書き
ここにリンクしている解説記事はあくまで私が解いた、一つの解法でしかないので、もっと良い解き方や正当な解き方があるかと思います。その上で閲覧していただけると幸いです。

## Java
#### ABC
・[ABC004](https://qiita.com/viral_8/items/b94440d112f4dc80a05b)(D以外)
・[ABC003](https://qiita.com/viral_8/items/12bdf240e61b3891b71b)(D以外)
・[ABC002](https://qiita.com/viral_8/items/2fee8d217fa03132752e)
・[ABC001](https://qiita.com/viral_8/items/4dcd86dbfc1acc09c04f)

## Python
#### ABC
・[ABC001](https://qiita.com/viral_8/items/34884cba258807d07b18)

元記事を表示

Java17変更点メモ

## 前提
Java17は2021/9にLongTermSupportバージョンでリリース。
Java8のEOLがJava11より後ろ、身の回りはJava11よりJava8利用が多いため、Java8から変更有無に特化。

## モジュール管理
パッケージをまとめて管理⇛モジュール管理の導入。
とあるパッケージに含まれるライブラリが、とあるライブラリに依存して、更にそのライブラリが他のライブラリに依存するといった依存関係の解決が難しい。
そこでモジュール(module-info.java)を使用して、依存関係の定義を行えるようになった。

### module-info.java
例: aはcは利用不可、aはdを利用可
“`python
module module.a {
requires module.b;
}
module module.b {
requires module.c;
retuires transitive moduke.d;
}

module module.c {}
module module.d {}
“`

## HttpClient導入
Htt

元記事を表示

たんたいてすとのかんたんな勉強会資料(Service)

## これはなんですか

Java – Spring Boot の単体テストについて、勉強会の資料。しゃべることをまとめたもの。

## 世間一般で言うところの単体テスト

単体テスト(ユニットテスト、略してUTと呼ばれることもあります)は、プログラムを構成する比較的小さな単位(ユニット)が個々の機能を正しく果たしているかどうかを検証するテストです。 通常、関数やメソッドが単体テストの単位(ユニット)となります。

## なぜテストを書くのか&費用対効果の話
1. 主に反復型開発において、既存のメソッドの挙動を担保しつつ、新しい機能を盛り込んでいく過程でバグの発見することが容易になる
1. よく書かれたテストはそれだけでクラスの取り扱い説明書になる

事情は多々あると思いますが、ぱっと見で単体テストを書くコストが高くつくからです。(ついているように見えるだけですが)

このコストをどう捉えるか?単体テストにどのような意味をもたせるかは会社やプロジェクトの方針に依るところが大きいと思います。
私の私見では、部分的でも8割位のプロジェクトでは書いたほうがよいと思いますが、2割位は書いても意

元記事を表示

auカブコム証券のkabuステーションREST APIで自前のトレイル注文の改善(残高管理方法変更)

# はじめに

前記事
1. [auカブコム証券のkabuステーションREST APIをcurlで叩く](https://qiita.com/hiuchida/items/fcdd3d6ff921b386a37e)
2. [auカブコム証券のkabuステーションREST APIをjava(generated by the swagger code generator)で叩く](https://qiita.com/hiuchida/items/73b7fc846d4c9501ef2f)
3. [auカブコム証券のkabuステーションREST APIの残高照会をcurlとjavaで叩く](https://qiita.com/hiuchida/items/9eb5336755a3d1b1a3df)
4. [auカブコム証券のkabuステーションREST APIの残高照会から先物OPのdeltaを計算する](https://qiita.com/hiuchida/items/6e0d8d5114192bec1632)
5. [auカブコム証券のkabuステーションREST APIのテスト用モック

元記事を表示

118 解答

参考:
[ArrayList, LinkedList の違い](https://qiita.com/BumpeiShimada/items/522798a380dc26c50a50)
[Nick White](https://www.youtube.com/watch?v=icoql2WKmbA)
# 解答
“`Java
public List> generate(int numRows) {
List> ans = new ArrayList<>();

if(numRows == 0) return ans;

List first_row = new ArrayList<>();
first_row.add(1);
ans.add(first_row);//最初の要素は絶対1だから

for(int i = 1; i < numRows; i++) { List prev_row = ans.get(i-1);
List

元記事を表示

566 解答

参考:
[Nick White](https://www.youtube.com/watch?v=wCdNh9oThqk)
# 解答
“`Java
public int[][] matrixReshape(int[][] mat, int r, int c) {

int m = mat.length;
int n = mat[0].length;

if (m * n != r * c)
return mat;// もし引数のサイズと出力するサイズが合わないとき

int[][] ans = new int[r][c];
int row_ans = 0; // 出力用の行
int col_ans = 0; // 出力用の列
for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { ans[row_ans][col_ans] = mat[i][j]; col_ans++; if (col_ans == c) { //ココがやややこしい col

元記事を表示

1週目Java 基礎

第1週目
Java基礎文法
intを利用した変数指定入力
long、int、short、byteなどがあり、
float,double

boolean等の真の嘘のif文作成
文字は「」
文字列は”;

小さいタイプのキャスティングに大きいのを入れる時
inti=(int)30L;こんな風にしなければならない

\n=改行を入れること
フォーマットを作って使うともっと楽だ

mathクラスmax(10,30)=30
min等

文字列数字相互変換
int i = Integer.parseInt(str);

String str2 = String.valurOf(i);
このように相互変換可能

ランダム値を受け取る
Random random = new Randon();
int rand = random.nextInt(bound4) + 5 //5
4までは走る

Javaで文字列を入力される場合
Scanner scan = new Scanner(System.in);

String str = scanner.next();
int i = scanner.ne

元記事を表示

ABC004の一部が解けたので書いた記事[Java]

## はじめに
前回同様一筋縄では行かず、またD問題が解けませんでした。難しい・・・。

とりあえず、解けた問題のコードを説明していきます。

## A – 流行
問題文は[こちら](https://atcoder.jp/contests/abc004/tasks/abc004_1)

普通に二倍しましょう。
“`A.java
import java.util.*;
class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
//値の取得
int N = sc.nextInt();
//二倍した物を出力
System.out.println(N*2);
}
}
“`
いわゆる「やるだけ」。

## B – 回転
問題文は[こちら](https://atcoder.jp/contests/abc004/tasks/abc004_2)

4×4ということで二次元配列使っても良かったんですがなんとなく一次元配列にしました。

元記事を表示

auカブコム証券のkabuステーションREST APIで自前のトレイル注文の改善(前回実行時からの高値/安値)

# はじめに

前記事
1. [auカブコム証券のkabuステーションREST APIをcurlで叩く](https://qiita.com/hiuchida/items/fcdd3d6ff921b386a37e)
2. [auカブコム証券のkabuステーションREST APIをjava(generated by the swagger code generator)で叩く](https://qiita.com/hiuchida/items/73b7fc846d4c9501ef2f)
3. [auカブコム証券のkabuステーションREST APIの残高照会をcurlとjavaで叩く](https://qiita.com/hiuchida/items/9eb5336755a3d1b1a3df)
4. [auカブコム証券のkabuステーションREST APIの残高照会から先物OPのdeltaを計算する](https://qiita.com/hiuchida/items/6e0d8d5114192bec1632)
5. [auカブコム証券のkabuステーションREST APIのテスト用モック

元記事を表示

121 答え

まずは試しに単純な for loop のネスト。

# Brute Force
“`Java
public int maxProfit(int[] prices) {
int maxProfit = 0;

for(int i = 0; i < prices.length -1; i++) { for(int j = i + 1; j < prices.length; j++) { int tempProfit = prices[j] - prices[i]; maxProfit = Math.max(maxProfit, tempProfit); } } return maxProfit; } ``` 結果: TLE # 解答 ## Window Sliding Technique 次はWindow Sliding Technique をつかう。 参考: [GeeksForGeeks](https://www.geeksforgeeks.org/window-sliding-technique/) [Kindson The T

元記事を表示

【Java】Stream, Collectorsを使ってオブジェクトのListに対してsort, distinctを行う

# はじめに
`var hogeList = new ArrayList();`のようなオブジェクトのリストに対してソートや重複排除を行う際「どうやるんだっけ?」といつもググってしまうので、自分用にまとめてみる。

# ソート
結論:`Comparator.comparing().thenComparing()`を使え。

ググるとComparatorクラスを自前で作るだの、ラムダでどうだの出てくるがそれらはJava8くらいの昔話なのでスルーしてよい。
現代Java人はStream APIを使おう。
“`java:Item.java
@Builder
@Getter
@ToString
public class Item {
private int id;
private String name;
}
“`

“`java
var items = List.of(
Item.builder().id(5).name(“item5”).build(),
Item.builde

元記事を表示

Netkeiba模造アプリ作成まで①

今年4月より、エンジニアへ転職し、只今弊社ではプログラミング研修も終盤に差し掛かってきました。
Javaの基本的な文法の学習を終え、現在では、Spring bootでのアプリケーションの作成演習を繰り返し行なっていますが、そろそろ何か簡単なアプリケーションを自分の力で作ってみたいと考えるようになりました。

そこで、いつもお世話になっているNetKeibaさんの模造アプリケーションの作成に取り掛かってみようと思います。

## Netkeibaとは
知らない方も多いと思いますので、簡単に説明しますと、Netkeibaとは、株式会社ネットドリーマーズ様が提供している国内最大級の競馬情報サイトです。
![netkeiba-com-国内最大級の競馬情報サイト.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2630554/73523473-7951-e800-caa0-32085bd71683.png)
レース情報、競走馬検索システム、レース動画など様々な競馬に関する情報を見ることができるものすごく便利なサイト

元記事を表示

【Java】じゃんけんゲームを作ってみよう

Javaの勉強をしておりましたが、アウトプットと備忘録のために記事に起こしておきます。
なお、今回クラスの継承は一切しておらず、Mainクラスのみのとても簡易的なコードになります。

# 要件

・人間とコンピュータの10回勝負
・コンピュータはグー,チョキ,パーをランダムに選択する
・人間はグー,チョキ,パーの選択をそれぞれ0,1,2の数値を入力することで行う
・10回勝負後「あなたは,○勝○敗○引き分けでした」とメッセージを出す

### ソースコードはこちら

“`java:Main.java
import java.util.Random;
import java.util.Scanner;

public class Main {
public static void main(String[] args) {
// 標準入力
// Scannerクラス
Scanner scanner = new Scanner(System.in);

// じゃんけんの回数を格納する変数
int janken_num = 0;
// 勝数を格納する変数

元記事を表示

Java Silver SE 11を獲得するまでの日記【1章】

# はじめに

資格を取るまでJavaの勉強やその途中で思ったことを適当に殴り書いていく。

見返したときにさらっと復習ができる程度には書きたい…
なのでこれは個人的な記事です。

# パッケージとインポートについて

パッケージの目的は次の3つ

1. 名前空間を提供し、名前の衝突を避ける
2. アクセス修飾子と組み合わせてアクセス制御を提供する
3. クラスの分類を可能にする

世の中で提供されている部品を利用する際、その部品のクラス名がかぶってしまったらエラーが出まくってしまう。

そのためクラスは「**パッケージ名.クラス名**」の完全修飾クラス名で扱う。

パッケージは名前の重複を避けるために習慣として
“`
jp.co.xxx
“`
のようにドメイン名(xxx.co.jp)を逆にして記述する。
どんな習慣だ…

これでパッケージ単位でアクセス制御することができる。

ほかにもクラス単位でアクセス制御するため
「**public**」というものがある
“`Java:公開するクラス
package jp.co.xxx;
public class Sample
{

元記事を表示

SheetAPI v4とDriveAPIを使ってJavaでスプレッドシートを操作する

Javaのwebアプリからスプレッドシートを操作したいという要望があったのだが、SheetAPIのv3については記事がいっぱいあるのだけどv4については少なくて使い方を試すのに苦労したので備忘録として書いておく。

## 1. 事前準備

### 1.1. サービスアカウントの作成

サービスアカウントの認証情報を持ったjsonファイルを作成。
作成の手順はあちらこちらのネット上にあるが、例えば以下を参照
※SheetAPIだけでなくDriveAPIも有効にする必要あり
[サービスアカウントで認証してGoogleSpreadsheetからデータを取得](https://dream-yt.github.io/post/spreadsheet-via-service-account/)

### 1.2. ユーザ側の作業

ユーザは、アプリからのアクセスを許可するスプレッドシートやドライブのフォルダに対し、サービスアカウント作成時に生成されたメールアドレスを共有設定に追加する。

## 2. 環境構築

今回はJavaのSpringBootプロジェクトでWEBアプリを作る想定で構築

元記事を表示

Aamazon EC2にDockerコンテナを立ち上げてJavaプログラムをテストしたい

# はじめに
本内容は、成り立てエンジニアな私の個人メモとしての記録であり、超基礎的な内容となっております。初学者向けとして本記事を閲覧していただければと思います。また、自身の成長につながるため、何かアドバイス・ご指摘があればコメントしていただけると幸いです。

# やろうと思ったきっかけ
新卒エンジニアとしてこの春より働くことになり、研修を行いつつ配属先での業務に少しずつ触れさせてもらっています。
そんな日々の中、ある日の会議でこんな話がありました。

>「それじゃあ、まずはEC2立てて、Kubernetes使って簡単な検証から始めていこうか。」
>(初心者過ぎて正確な内容は理解が追いつかず、上記の内容はめちゃめちゃニュアンスです)

議事録を取りながら聞いていたのですが、専門用語の応酬でとてもビビり散らかしていたことは覚えています。
その時の自分の心境としては、

> (EC2?たしかAWSの仮想サーバーサービスだったかな?ローカルとかではやらないんだ。)
> (クーバネティス?聞いたことあるけど全然イメージつかねぇ。Dockerとかコンテナに関連したやつってことだけは、なんとなく

元記事を表示

OTHERカテゴリの最新記事