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

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

SpringAOPでログ出してみた

# Spring AOP
## 本ページについて
「Spring徹底入門」を読んでいるところで、
気になっていたコア機能の1つであるAOPを試してみた。

## 前提
AOPを実現するために依存性を追加する。
### pom.xml/dependency
“`xml

org.springframework
spring-context


org.springframework
spring-aop


org.aspectj
aspectjweaver

“`

## 実装
DIコンテナに格納されたBeanに対してProxyオブジェクトなるもので、Aopソース

元記事を表示

【 LeetCode : Java 】876. Middle of the Linked List

## 前提

エンジニア歴:3年
Java:1年
C#:2年
アルゴリズム、CSの専門知識無し
コーディングテストの為、学習中

## 問題
[876. Middle of the Linked List ](https://leetcode.com/problems/middle-of-the-linked-list/)

Given the head of a singly linked list, return the middle node of the linked list.
If there are two middle nodes, return the second middle node.

Example 1:

Input: head = [1,2,3,4,5]
Output: [3,4,5]
Explanation: The middle node of the list is node 3.
Example 2:

Input: head = [1,2,3,4,5,6]
Output: [4,5,6]
Explanation: Since the

元記事を表示

【JavaSilver SE11】ぽんこつエンジニアのJavaシルバー挑戦日記(リアルタイム更新中)

# 挑戦者
業界三年目のぽんこつエンジニア。所有資格はIパスのみ(!)
Javaは新人時代に研修込みで一年ほど触って『完全未経験よりはマシ』程度。
最近の仕事はAndroidJava用の要件定義-設計フェーズ。

概要レベルでは新技術を噛み砕いてつよつよエンジニアとそれっぽい会話を繰り広げるものの、コーディングレベルになると何もかもあやしい。
いい加減Javaシルバーでも取ってこの状況を脱さねばと一念発起した。

# 挑戦日記
**0日目**
– Javaシルバーの申し込み方法を調べる
>参考:[初めてでも大丈夫!JavaSilverの申し込み手順をわかりやすく解説](https://manabiya-sakura.com/information_technology/id=1554/)

– 学習計画を立てる
>参考:[【JavaSilver】Java SE8 Silverに合格した勉強法【合格体験記】](https://qiita.com/ebichan_88/items/8409c9b99bf5a2977cc7)

– [黒本 (「徹底攻略Java SE 11 Silver問題集

元記事を表示

自分の解説記事内で使用するテンプレートの紹介

## はじめに
コンテストに参加しているとわざわざ何回も書いたり長いコードを書いたりするのが面倒だなと感じるので、可能な限り簡略化すべく作ったテンプレートを紹介していきたいと思います。

非常に見辛かったりなんでそんなものを・・・?って感じるコードがあったりするかもしれませんが、自分的にこれはこう書きたいなってのを反映した結果だったりするので温かい目で見守っていただけると幸いです(ただ、計算量が大幅に変化するようでしたら指摘していただけると嬉しいです)。
では、見ていきましょう。
## インポート
正直テンプレートで書くならimportしなくても良いとは思いますが、まぁテンプレにないものを実装する必要があるときにimportしておいた方が楽なので必要最低限をimportしてあります。
“`Sample.java
import java.io.*;
import java.util.*;
import java.math.*;
“`

## フィールド
取得用としてBufferedReader、出力用としてPrintWriterを使いたいのでフィールドに記述してあります。
“`Sa

元記事を表示

コード値からEnum型へ変換するユーティリティクラス

JavaのEnum型はフィールドを定義することができて、コード値に変換したりするのに便利ですが、コード値からEnum型への変換は標準では用意されていないため、各Enum型に取得用のstaticメソッドが乱立しがちです。
“`java
import lombok.Getter;
import lombok.RequiredArgsConstructor;

@Getter
@RequiredArgsConstructor
public enum Pokemon {
PIKACHU(“025”, “ピカチュウ”),
RAICHU(“026”, “ライチュウ”),
PICHU(“172”, “ピチュー”),
;

private final String no;
private final String jName;

public static Pokemon getByNo(String no) {
Optional result = Stream.of(values())

元記事を表示

【Java/SpringBoot】messages.propertiesを参照して値を出力する

SpringBootの機能であるMessageSourceを利用してプロパティ値を参照する方法を記述します。

【view】

![【view】.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2665680/dd1593b3-090b-12f1-8caf-01cefe70d808.png)

【messages.propertiesの作成】

![【階層】.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2665680/e8d2d71a-aeec-3c59-7cd0-9975f39fd32c.png)
「resource」直下に「message.properties」を作成します。

![【property】コード.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2665680/736acf18-3966

元記事を表示

Kafka Javaチュートリアル -コンシューマー-

※Kafkaに関する情報は下記のURLから参照してください。
https://kafka.apache.org/intro

# 必要ライブラリ
– kafka-clients-3.2.0
– slf4j-api-1.7.36
– slf4j-simple-1.7.36

# 事前準備
– Kafkaの起動
下記のコマンドで立ち上げを行います。
`/bin/zookeeper-server-start.sh
/config/zookeeper.properties`
– Kafka brokcerの起動
下記のコマンドで立ち上げを行います。
`/bin/kafka-server-start.sh /config/server.properties`

# Coding

1. Kafkaのプロパティを定義します。

final Properties props = new Properties();
props.put(ConsumerConfig.BOOTSTRAP_SERVER

元記事を表示

Kafka Javaチュートリアル -プロデューサー-

※Kafkaに関する情報は下記のURLから参照してください。
https://kafka.apache.org/intro

# 必要ライブラリ
– kafka-clients-3.2.0
– slf4j-api-1.7.36
– slf4j-simple-1.7.36

# 事前準備
– Kafkaの起動
下記のコマンドで立ち上げを行います。
`/bin/zookeeper-server-start.sh /config/zookeeper.properties
`
– Kafka brokcerの起動
下記のコマンドで立ち上げを行います。
`/bin/kafka-server-start.sh /config/server.properties
`

# Coding
1. Kafkaのプロパティを定義します。

final Properties props = new Properties();
props.put(ProducerConfig.BOOTSTRAP_SERV

元記事を表示

ABC254A~Cの解答[Java]

## はじめに
これはコンテスト中に解いた解法なので少々煩雑だとは思いますが、ご理解いただけると嬉しいです。

では、コードを解説していきます。

## A – Last Two Digits
問題文は[こちら](https://atcoder.jp/contests/abc254/tasks/abc254_a)

下二桁を出力すれば良いんですが、int型で受け取っちゃうと01が1になっちゃったり、わざわざ長さを整えるためにString.formatみたいなの使ったりするのはめんどくさいのでString型のまま受け取ってやりましょう。
“`A.java
import java.io.*;
class Main{
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
static PrintWriter pw = new PrintWriter(System.out);

public static void main(String[] args)throws IOExce

元記事を表示

Spring BootでのAOPを利用したログ出力

# はじめに
 [以前作成したwebアプリ](https://qiita.com/be834194/items/241d4c5b16eaa326e3dc)で、ログをファイル出力できるように改良した際に学んだことをまとめました。

# 共通処理を意識していないコードの例
 例として、ユーザをデータベースに追加する処理を用意しました。データベースへの追加のほかに、ログを表示するコードが書かれています。
“`RegistrationService.java
@Service
public class RegistrationService {

private final RegistrationMapper registrationMapper;

private final PasswordEncoder passwordEncoder;

private static final Logger logger = LoggerFactory.getLogger(RegistrationService.class);

public RegistrationService

元記事を表示

研修で行ったグループ開発(9日)

## 初めに
新卒として入った会社にて、受けさせて頂いた二か月のJava研修のラスト9日で行った、グループ開発についてまとめた記事です。

### 成果物
`家庭教師と学生のマッチングを行うシステム`を作成しました。
![スクリーンショット 2022-06-05 003400.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/695130/74c48c15-0307-3dbf-c9c1-d8c730e573c7.png)

### グループについて
6人のグループでした、簡単に私の主観を交えて役割(グループリーダー、サブリーダー、テクニカルリーダー[フロント]、テクニカルリーダー[バック]、DB管理、品質管理)と共に紹介します。

Wさん(グループリーダー)
・研修中、プログラムの演習で後述する神に次いで優秀な成績を残していた方、コーディングはもちろん、リーダー適性もとてもあったため、グループ最初のミーティングで満場一致でリーダーに。

Kさん(サブリーダー)
・自頭と顔が良い、言語化が上手いためメンバー

元記事を表示

Java SE Bronze の勉強方法

# Java SE Bronze の勉強方法

## 目的
今回、[Java SE Bronze 1Z0-818](https://education.oracle.com/ja/java-se-bronze-available-only-in-japan/pexam_1Z0-818)に合格したので勉強方法をメモしておきたい

## 学習開始時スペック
* Javaは大学の授業で触ったことがある
* 細かい文法は忘れているが、型(int, float…)、For/While、Ifはわかっている
* オブジェクト指向の考え方はなんとなく知ってる

## 学習期間・時間
* 1ヶ月×1-2時間程度 ≒ 45時間ぐらい

## 学習教材
### オラクル認定資格教科書 Javaプログラマ Bronze SE(試験番号1Z0-818)
https://www.amazon.co.jp/%E3%82%AA%E3%83%A9%E3%82%AF%E3%83%AB%E8%AA%8D%E5%AE%9A%E8%B3%87%E6%A0%BC%E6%95%99%E7%A7%91%E6%9B%B8-Jav

元記事を表示

四捨五入、切り捨て、切り上げをしたい(Math)

## はじめに
現在、独学でJavaScriptを勉強中です。
`Mathオブジェクト`で躓いてしまったのでまとめてみました。

## よく使うMathオブジェクト
`Math.round` ・・・四捨五入する(戻り値 数値)
`Math.round()メソッド`は次のような挙動をする。
・小数点部分が0.5以上であれば、次に大きい整数へ切り上げ
・小数点部分が0.5以下であれば、次に小さい整数へ切り下げ
“`javascript
Math.round(5.34); //結果: 5
Math.round(6.8); //結果: 7
“`
`Math.floor` ・・・切り捨てる。数値以下の最大の整数を返す(戻り値 数値)
※少数の大小に関わらず切り捨てる。
“`javascript
Math.floor(5.34); //結果: 5
Math.floor(6.8); //結果: 6
“`
`Math.ceil` ・・・切り上げる。数値以上の最小の整数を返す(戻り値 数値)
※少数の大小に関わらず切り上げる。
“`javascript
Math.ceil(5.34); //結

元記事を表示

Javaを使用したスクレイピングでポケモンの名前と種族値を取得し、CSV出力してみた。

# 初めに
本記事は、以前Javaでスクレイピングを行う方法についての記事とOpenCSVについての記事を作成しました。
今回はそれを組み合わせて、ネットからポケモンの種族値を取得し、それをCSVファイルに出力するというのを行ってみました。

https://qiita.com/T-H9703EnAc/items/d4e887dadc63eeb25a8c

https://qiita.com/T-H9703EnAc/items/0cbb28935ca7a7e30d9c

開発環境の構築方法について

https://qiita.com/T-H9703EnAc/items/002538a2b040fc188705

# 実装の流れ
今回は以下のサイト(ポケモン徹底攻略)から取得していこうと思います。

https://yakkun.com/

図鑑No.1のフシギダネの情報を基本に取得していきます。

https://yakkun.com/swsh/zukan/n1

次の順番で実装していきます。
「1.URLの解析→2.名前の取得→3.種族値の取得→4.CSVの出力」

## 1.

元記事を表示

重複した値の二分探索

# はじめに

ソートされた配列からある値を検索するには、二分探索することで、計算量O(log n)となります。
検索範囲を2分の1に絞っていくので、1万件から検索する場合も、2^14=16384なので、十数回で見つかります。

ここで、配列内に同じ値を許している場合に、どこかヒットした位置を探すのは簡単ですが、同じ値の左端(添字が最も小さい)や右端(添字が最も大きい)の位置を探すにはどうすればよいか疑問に思いました。
数件重複しているだけなら、ヒットした位置から左へ右へ1つづつ境界を探すことを思いつきましたが、ここで、検索対象が性別で、値が男と女しかなかった場合、左端と右端を探すためのループが、初めから逐次検索するのと変わらないように見えます。

# Arrays.binarySearch

そのくらい標準ライブラリならやってくれるのかと思えば、『どれが検索されるかについての保証はありません。』。

> バイナリ・サーチ・アルゴリズムを使用して、指定されたint値の配列から指定された値を検索します。この呼出しの前に、sort(int[])メソッドで配列をソートする必要があります。リス

元記事を表示

OpenCSVの使用方法について

# 初めに
本記事は、JavaのOpenCSVの使用方法について記載しています。Gradleを使用したJavaの開発環境があれば問題ないと思います。わからない方は以下の参考にしてください。

https://qiita.com/T-H9703EnAc/items/002538a2b040fc188705

# OpenCSVを導入
以下からライブラリを追加してください。

http://opencsv.sourceforge.net/dependency-info.html

以下のようにbuild.gradleを記述してください。
“`:build.gradle
plugins {
id ‘application’
// 外部jarを読み込めるようにする
id ‘com.github.johnrengelman.shadow’ version ‘7.1.2’
}

repositories {
mavenCentral()
}

dependencies {
testImplementation ‘junit:junit:4.13.2’

元記事を表示

ダウンロードした複数銘柄のチャートデータに対応する

# はじめに

前記事
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のテスト用モック

元記事を表示

Gradleコマンド・build.gradle記述方法まとめ

# 初めに
本記事はJava使用時のGradleの使用を想定しています。ご注意ください。
[Gradleコマンド](#gradleコマンド)
[build.gradle記述方法](#buildgradle記述方法)
# Gradleコマンド
Gradleコマンドについてです。
## プロジェクトの作成
プロジェクトの作成方法
“`# プロジェクトの作成
gradle init
“`
## クリーン
クリーンの方法
“`:# クリーン
gradle build
“`
## ビルド
ビルドの方法
“`:# ビルド
gradle build
“`
## プログラムの実行
“`:# プログラムの実行
gradle run –args=”任意の引数1 任意の引数2…”
“`
以下例です。
“`:# 例
gradle run –args=”1 1″
“`
# build.gradle記述方法
build.gradleの記述方法についてです。
## Mainクラスを指定
“`:# Mainクラスを指定
application {
mainClass =

元記事を表示

「マイクロサービスパターン」の復習 13章 リファクタリング

## 13章 マイクロサービスのリファクタリング

– ついに最終章である13章
– モノリシックアーキテクチャをマイクロサービスアーキテクチャへとリファクタリングする方法について
– 著者の主張は、最初はモノリシックで動くものをサクッとつくってから、メンテナンス性向上のためにマイクロサービスに変えるのが良いとしています
– なので必然的に、モノリシックからマイクロサービスへのリファクタリングは必須となります。

## マイクロサービスへのリファクタリングの概要

– まず、システムを0から作り直す「ビッグバンリライト」は止めた方がいいとのこと
– これは元と同じ機能を再現するだけで数年かかってしまうのでビジネス的になりたたないから
– 私の実体験からいってもこれは確かにその通り。ビジネス的に新たな価値を提供することができないので、会社的にも見放されてしまうかもしれません。
– ストラングラーアプリケーション
– 元のシステムから少しずつ一部を切り出してサービス化していって、最後には全体がマイクロサービスになるというやり方。著者的にはこちらがおすすめ。
– この

元記事を表示

Robocode Tank Royale 盤面を動き回る

こちらの続き

https://qiita.com/JQinglong/items/7ec02a689f78abbd3324

## 動きを変える

近場をうろちょろせず、混戦は避けるために
・盤面を動き回る
・敵に衝突したらそこから離れる

止まっている敵にも、意外と弾が命中しない。
・せめて止まっている敵には確実に命中させる

これらをやっていきます。

## 盤面を動き回る

参考になるのは、Crazy ですね。

setForward(40000) で、とりあえず長距離動く「設定を」します。
set系を使うことで、複数の動作をパラレルにさせることができる、ということで、合わせて setTurnRight(90) も使用しています。set系のメソッドの説明を見ると、IBaseBot.go() を行うまでの設定が使われるということのようなので、下記のように書くと、ぐるぐる回り出します。左に角度を変えながら前に進むので、そんな感じになるわけです。

“`java
setForward(400);
setTurnLeft(90);

元記事を表示

OTHERカテゴリの最新記事