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

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

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 SE11を獲得するまでの日記【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とかコンテナに関連したやつってことだけは、なんとなく

元記事を表示

【Java】System.out.printlnを複数回呼び出した場合、AtCoderでTLEになってしまうので実際に実行時間を計測してみた

 AtCoderにて、System.out.printlnを複数回呼び出すと、[AtCoder228_C](https://atcoder.jp/contests/abc228/tasks/abc228_c)や[AtCoder231_C](https://atcoder.jp/contests/abc231/tasks/abc231_c)のように最悪$10^5$行くらいの文字列を出力する場合、TLEになる場合がありました。
 標準出力の複数回呼び出しによるオーバーヘッドの時間がかかりTLEになったものだと思います。本記事では同じ長さの文字列について、System.out.printlnを複数回呼び出して標準出力した場合の時間と、一度に標準出力した場合の時間を実際に比較しようと思います。
 計測するコードの実装内容は$0~10^5$をインクリメントした文字列を改行して出力する処理です。この処理を100回繰り返して各実行毎の実行時間を取得します。$10^5$にした理由はAtCoderで出力する行数として、よく見かけるからです。
 計測する手法は以下の三パターンです。
– 手法-1 Syst

元記事を表示

M1 MacでJavaの環境構築をする 2022年5月

## 環境

– macOS Monterey 12.3.1
– VSCode
– openjdk 18.0.1 2022-04-19
– javac 18.0.1

## 本記事で達成すること

1. 「M1 Mac」に
1. 「OpenJDK 18」を入れて
1. 「VSCode」で開発できるようにする

## 本記事の構成

1. Javaの環境構築を行う
1. VSCodeの設定を整える

## 1. M1 MacにJavaの環境を構築する

### 1-1 JDKインストール

– [azulのサイト](https://www.azul.com/downloads/?os=macos&architecture=arm-64-bit&package=jdk)からダウンロード
– 画面を下にスクロールしていくと、参照画像のボタンからインストールすることができる
![JDKインストール画面](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%

元記事を表示

ABC003の一部が解けたので書いた記事

## はじめに
前回に引き続き、ABC003を解いて見ました。ただ、D問題はちょっと解法が思いつかなかったので後日解いてみようと思います。

では、ACが取れたコードを解説していきます。

## A – AtCoder社の給料
問題文は[こちら](https://atcoder.jp/contests/abc003/tasks/abc003_1)

平均値を求める式を考えると、
“`math
\dfrac{1}{N}\times\sum_{i=1}^N(10000\times i)=\dfrac{10000}{N}\times\dfrac{1}{2}N(N+1)=10000\times\dfrac{N+1}{2}
“`
となりますから、最後の式をコードに落とし込みましょう。念のためキャスト演算子でlong型にしてはいますが、最大値はN=100なので、$10000\times101=1.01\times10^6$であることを考えるとint型のままでも良いです。
“`A.java
import java.util.*;
class Main{
public static void

元記事を表示

Java8初期で知識が止まってる化石プログラマーがJava17を触って得た知見

# はじめに
Java8初期で知識が止まっている化石プログラマーが書籍『[プロになるJava](https://www.amazon.co.jp/dp/B09VK3FTDM/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1)』を読んで、得た知見をメモ書き感覚であげていきます。

初歩的な内容も含まれてますが、温かい目で見守ってください。。

# JShell
CUI上でJavaコードを実行できる。Java9より導入された。
参考:https://qiita.com/nowokay/items/e0b9c676567134e4a622

tabで補完、ドキュメント表示なども可能。

/vで型を確認できる
“`shell
jshell> /v textBlock
| String textBlock = “改行あり\nの\n文字列です\n”
“`

# テキストブロック
Java15から。
`”””`で囲った文字列は複数行の文字列として宣言できる。

“`shell
jshell> var textBlock = “””

元記事を表示

Spring MVC

Web アプリケーションを MVC アーキテクチャーで開発する際に使用するフレームワークです。
フロントコントローラーパターンを採用しています。

Spring MVC の特徴
Controller や Model などのクラスは POJO として実装する
Servlet API 、フレームワーク独自のインターフェースを排除でき、ユニットテストがしやすい
Spring の DI や AOP の仕組みを活用でき、効率的に Web アプリケーションを開発できる
View の実装技術を抽象化できる。Controller では View 名だけ意識すればよく、View の実装 (JSP 、Tymeleaf など) を意識する必要がない
? POJO (Plain Old Java Object)
ごく普通の Java オブジェクトを指します。
継承や依存関係がないクラスとして作成します。
この名称が提唱される以前よりある Java Beans では Bean に次の条件があったため、それよりシンプルな設計となります。

public で引数なしのコンストラクタを作成する
メソッドはアクセサメソ

元記事を表示

AOP

AOP (アスペクト指向プログラミング Aspect Oriented Programming)
プログラミングをしていると、ログ出力や例外ハンドリングなどといった 複数の箇所にまたがって存在する処理 が出てきますが、これらの処理のことを 横断的関心事 (Cross-Cutting Concern) と呼んでいます。

また、プログラムからこの 横断的関心事 を分離することを 横断的関心事の分離 (Separation Of Cross-Cutting Concerns) と呼び、これを実現する手法は アスペクト指向プログラミング AOP と呼ばれています。

AOP を利用すれば、Java のソースコードから共通的な機能を分離することができます。

Spring Framework では AOP を実現するためのサブプロジェクトとして Spring AOP が用意されています。

Spring AOP では、広く使われている AOP フレームワークである AspectJ を利用しています

元記事を表示

Bean

Java のソースコード内で定義する
Bean 定義を行う コンフィグレーションクラス を用意します。
メソッドに @Bean アノテーションを付与し、Bean 定義を行います。
メソッド名が Bean 名、戻り値がその Bean のインスタンスとなります。

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class AppConfig {
@Bean
UserService userService() {
return new UserServiceImpl();
}
}

元記事を表示

コンポーネントスキャン

Bean 定義用のアノテーションが付与されたクラスをスキャンし、DI コンテナーに登録します。
この DI コンテナーによるスキャンを コンポーネントスキャン といいます。

@Autowired アノテーションを付けることで、オートワイヤリング (autowiring) という、DI コンテナーから型の一致する Bean を探し、見つかった場合に自動注入を行います。

?️ 構文

@Autowired

元記事を表示

Bean 定義

当初は Java ソースコードから分離した XML に定義する方法しかありませんでした。
複雑な設定を行う場合、XML の記述が大きく複雑になることが問題視されるようになりました。
後続で登場した Bean 定義は Java ソースコードのコンパイルが必要ですが、採用されるケースが増えてきました。
利用するコードに設定が近い方が管理しやすいと認識されたのが理由です。
Bean 定義の記述方法は次のようになります。

XML ファイルを使って定義する
?️ 構文



元記事を表示

前置・後置のインクリメント演算子を、式に含めた時の挙動について

### 最初に

`for(;;)`の中でよくお世話になる`i++`,すなわちインクリメント・デクリメント演算子について。
これを単独使いではなく、`8 + i++`のように式に含めてみるとどうなるのか。
自分で手を動かして勉強した結果をまとめてみました。

## まず、インクリメント・デクリメント演算子とは

コメントアウトがある行の、`//`の左がインクリメント・デクリメント演算子を利用した式。
右側が、類似内容を一般的(?)な記法で表した式。
“`java
int a = 1;
a++; //a = a + 1;
System.out.println(a);

int b = 1;
++b; //b = b + 1;
System.out.println(b);

int c = 1;
c–; //c = c – 1;
System.out.println(c);

int d = 1;
–d; //d = d – 1;
System.out.println(d);
“`
もちろん出力結果は、
“`
2
2
0
0
“`

## これを式に含めると挙動が変わ

元記事を表示

オブジェクト指向を超ザックリ説明してみた( ᐛ )

はじめに

備忘以外で投稿するのは初めてなので、お手柔らかに(´・ω・`)
プログラミングを勉強してまず最初に躓くのがオブジェクト指向だと思います。
そこまでは単純にコードを書いてコンソールで動かしてって感じだと思うんですが、
オブジェクト指向から急に
「えっ?はっ?どういう事??」ってなる人が多いと思います。
かくいう私も「オブジェクト指向の全容を完璧に理解しているのか?」って聞かれると、自身を持って「任せとき!」とは言い難いので、今回は自分の認識のズレを見つける目的もあって記事を書いています。
※筆者はJavaをメインにしているので、Java視点での記載をします。

オブジェクト指向ってなぁに?

まぁぶっちゃけて言ってしまうと、
オブジェクト指向なんてなくてもプログラムは書けますし動かせます( ゚Д゚)
「じゃあいらんやんw」って言われてしまうかもしれませ

元記事を表示

JavaによるK-Nearest Neighborアルゴリズム

# はじめに
K-nearest neighbors (KNN) は分類や回帰のタスクを実行するために用いられる教師あり機械学習アルゴリズムです。

KNNは、テストデータと学習点の距離を求めることで、テストデータに対して正しいクラスを予測します。このアルゴリズムでは、テストデータに最も近い点をK個選択します。そして、テストデータがK個のクラスに分類される確率を計算します。そして、最も高い確率を持つクラスが選択されます。

KNN アルゴリズムは、学習データから識別関数を学習するのではなく、学習データセットを記憶するため、遅延学習アルゴリズム と呼ばれます。

# データセット
未知のデータに対して予測を行うために、顧客データセットを使用します。使用するデータセットは、以下のように、顧客の年齢、収入、購入した商品などを示しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1739999/4bac5e85-f423-929b-3995-637982c55c0d.png)
年齢58歳

元記事を表示

OTHERカテゴリの最新記事