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

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

Leetcode 222. Count Complete Tree Nodes

# 222. Count Complete Tree Nodes

https://leetcode.com/problems/count-complete-tree-nodes/description/

## アプローチ
### DFS

“`java
class Solution {
public int countNodes(TreeNode root) {
int size = 1;
if(root == null){
return 0;
}

if(root.left != null){
size += countNodes(root.left) ;
}
if(root.right != null){
size += countNodes(root.right) ;
}
return size ;
}
}

“`

元記事を表示

テストスライスアノテーションを使う場合 @SpringBootApplication 付与クラスに直接DIしない方が良い

# 概要

`@SpringBootApplication`を付与したクラスに直接DIをした場合、`@DataJpaTest`や`@WebMvcTest`といったテストスライスアノテーションを利用したテストの実施時に、`NoSuchBeanDefinitionException`が出て失敗することがある。
なぜそうなるのか調査したので、そのメモを残す。

# どういう事象なの?

下記のような`@SpringBootApplication`を付与したクラスがあるとする。

“`java
@SpringBootApplication
public class SlicetestApplication {

private final HelloService helloService;

public SlicetestApplication(HelloService helloService) {
this.helloService = helloService;
}

public static void main(String[] args) {
SpringA

元記事を表示

Javaで何か作ってみる(2022/11/14 Day25)

## 今日やった事
– Javaの動画教材の演習問題である、Jihanプログラムの作成を行った。
→コミットした内容は[こちら](https://github.com/takamatsuryota3/Java/commit/2ead947186b9f5a81c699bc1246d17898448e6cc)
## 参考にしたもの
– [【超絶丁寧解説】Javaプログラミングをゼロから学ぶ!絶対挫折させない「基礎入門」講座【講師評価4.3】](https://www.udemy.com/course/uz-java-kiso/)
→今回取り組んだのは、この動画教材の中の、**J1-EX1_総合演習(アルゴリズム)** の**総合演習(Jihanプログラムの作成)** になる。
– [[Java]Integer.parseIntメソッドの使い方とは?parseIntメソッドやparseUnsignedIntメソッドの使い方・例外の発生するケース・配列の変換Javaコラム](https://www.fenet.jp/java/column/java_tips/664

元記事を表示

【Android_java】AndroidStdioでアクションボタンを追加する方法

– 基本的にスクリーンショットが多い記事になりますのであらかじめご了承ください。
※この記事はあくまでも勉強を始めたばかりの自分メモになります。

# アクションボタンの追加方法

Androidアプリでよく使用される右上のボタン(**アクションボタン**)の実装方法になります。
![3.アクションボタン.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2962146/01fc4e16-da2e-b637-b526-a652b6a9b005.png)

## xmlファイルの準備
### メニューxmlファイルを用意する

1. プロジェクトを立ち上げる。
2. オレンジ枠で囲まれている`res`フォルダの中に`新規`で`Androidリソース・ファイル`を選択。
![1.新規メニューxmlを作成.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2962146/7ef305c8-6f87-88e3-9d66-3823b

元記事を表示

【Android_java】関連まとめ記事

# 【Android_java】関連まとめ記事
– アンドロイド開発の勉強として自分メモの代わりに作成した記事のまとめになります。
– 順不同で掲載していきますので、記事を探さす際は`Ctrl+F`で検索することをお勧めします。

## 記事
– 【Android_java】AndroidStdioでアクションボタンを追加する方法
https://qiita.com/PONchan9848/items/6a2dec1b3173659dc123

元記事を表示

Leetcode 200. Number of Islands

# 200. Number of Islands

https://leetcode.com/problems/number-of-islands/

## アプローチ
– BFS

“`java
class Solution {
public int numIslands(char[][] grid) {
int height = grid.length;
int width = grid[0].length;
boolean[][] isVisited = new boolean[height][width];
int[] dx = new int[]{1, 0, -1, 0};
int[] dy = new int[]{0, 1, 0, -1};

int result = 0;

for (int i = 0; i < height; i++) { for (int j = 0; j < width; j++) {

元記事を表示

Javaで何か作ってみる(2022/11/13 Day24)

## 今日やった事
– Mac環境で、VSCodeでJavaプログラムが実行出来るように開発環境を構築した。
## 参考にしたもの
– [Visual Studio CodeでJavaプログラム開発環境構築 – Qiita](https://qiita.com/jsj05543/items/da54e5db258bc9d2538a)
– [Java環境構築(Adoptium(旧:AdoptOpenJDK))](https://zenn.dev/sasakiki/articles/54f68ee1576380)
– [Javaの開発環境(Mac, VS Code) – Qiita](https://qiita.com/aoyaman/items/cd3ed987b8b704778144)
## 所感
– VSCodeの**Extension Pack for Java**の再インストールと、VSCodeの更新をしたら、設定出来た。更新出来てなかっただけだったのか。。。
## 明日の予定
– 明日からは、勉強がてら、Javaでサンプルプログラムを作成していく。

元記事を表示

Leetcode 1870. Minimum Speed to Arrive on Time

# 1870. Minimum Speed to Arrive on Time

https://leetcode.com/problems/minimum-speed-to-arrive-on-time/description/

## アプローチ
* 二分探索を活用

“`java
class Solution {
public int minSpeedOnTime(int[] dist, double hour) {
int start = 1;
int end = 1000000000;
int result = -1;

while (start <= end) { int midSpeed = start + (end - start) / 2; double keisan = 0.0; for (int i = 0; i < dist.length; i++) { keisan = Math.ce

元記事を表示

【java】基本構文(型編)

# ・はじめに
Java一年未満の方へ研修用
型、変数に関して少し掘り下げて紹介

# ・対象
・Java一年未満

# ・型
#### ◆型とは
 ・データを扱うためにその種類に応じた型が決まっている。
  その種類は、大きく分けてふたつある。プリミティブ型と参照型。

#### ◆プリミティブ型
 <特徴>
  全て変数のサイズ(bit)が決まっている。
  規定のサイズを超える値を格納することはできない。
  メモリのスタック領域に値が入っている

 <種類>
  short、byte、long、int、double、float、char、boolean

ABC277A~Eの解答[Java]

## はじめに
今回はC、Eはコンテスト後のもの、他はコンテスト中のものを載せようと思います。

では、見ていきましょう。

## A – ^{-1}
問題文は[こちら](https://atcoder.jp/contests/abc277/tasks/abc277_a)

$P_i$に重複はないので普通に先頭から見ていけば良いです。
“`A.java
class Main{

static final boolean autoFlush = false;
static final Library System = new Library(java.lang.System.in,java.lang.System.out,java.lang.System.err,autoFlush);

public static void main(String[] args){

//N、Xの受け取り
int N = System.in.nextInt();
int X = System.in.nextInt();

//indexを入れる変数
int ans =

SpringBootのテストスライスアノテーションについて

# 概要

SpringBootのテストスライスアノテーションについて、どのような実装になっているのか探ってみた。

# テストスライスアノテーションとは?

まず、ここでのテストスライスアノテーションは、アプリケーションの全量ではなく一部だけをテストしたい、といった場合に利用するアノテーションのことを指す。([このページ](https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#appendix.test-auto-configuration.slices)にSpringBoot公式で提供されている全量が記載されている)

テストスライスアノテーションを利用する動機としては、ユニットテスト実行時間は最小限に抑えつつ、意味のあるユニットテストをしたい、という希望を叶えることにある。
SpringBootで作成するWebアプリケーションであれば、リクエスト・レスポンスのバリデーションや変換を受け持つController層、ビジネスロジックを持つService層、DB等へのアクセスを受け持つReposito

SpringのCache機能をサクッと利用する

Spring(Spring Boot)のCache機能を使ってメソッドの呼び出し結果をキャッシュしておくサンプルです。

# 動作確認バージョン

* Spring Boot 2.7.5
* Spring Framework 5.3.23

# Cache機能の有効化

`@EnableCaching` を付与するとSpring Bootさんの自動コンフィギュレーション機能によってSpringのCache機能が利用できるようになります。

“`java
package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cache.annotation.EnableCaching;

@SpringBootApplication
@EnableCaching // ★★★アノテーションを追加
public c

【selenium】seleniumの設定~IEモードで実行をやってみた

# 概要
当記事では
  ・Seleniumの実行環境設定
  ・IEモードの実行
の方法について説明します。

# Seleniumの実行環境設定
## jarファイルなど準備
下記のサイトからzipをダウンロードし解凍。
https://selenium.dev/downloads/

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/33640/f728db4d-0165-1d93-0169-0fc2f7297596.png)

## eclipseのビルドパス設定
プロジェクトのコンテキストメニューから
  ビルド・パス > ビルド・パスの構成
を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/33640/644ce540-0aac-56e5-f1b5-47f6aca0fd88.png)

ライブラリータブを表示後、「外部JARの追加」をクリックするとファイル選択を求められるので、

#6 SpringでOracleデータベースに接続する

# 前提条件

1\. 必要インストール
 (1) [Eclipse 2022](https://mergedoc.osdn.jp/)
 (2) [Oracle SQL Developer 21.2.1](https://www.oracle.com/jp/database/sqldeveloper/technologies/download/)
 (3) [Oracle Database 21c Express Edition](https://www.oracle.com/jp/database/technologies/xe-downloads.html)
 (4) [Oracle Database JDBC driver](https://www.oracle.com/database/technologies/appdev/jdbc-downloads.html)

2\. プロジェクトの設定内容
 (1) Eclipseでプロジェクトを立ち上げる(ファイル > 新規 > Spring スターター・プロジェクト)
![image.png](https://qiita-im

【Java】toCharArrayメソッドで2バイト文字が渡ったときの扱い

# はじめに
Java問題集を解いていて、疑問に思ったことを調べたメモ書き
基本情報技術者試験H27年度春期午後問11「セキュアプログラミング」の設問1,dについて

## 1. char型からint型へのキャスト
この問いでは、char型からint型へのキャストも気になったので触れる。
### 1. 以下の記事を参考にした
https://qiita.com/nkojima/items/d358f99efa71655911ea

char型は1バイト文字を扱うための型で、intは通常2バイト以上らしい。
小さいほうから大きい方へキャストするだけなので、可能とのこと。(符号ありの場合など例外あり)

## 2. toCharArrayメソッド
String型の変数でtoCharArray()メソッドを使用し、
`char[] chars = s.toCharArray();`

のように使用して、文字列を文字配列に置き換えたあと、1文字ずつに対して何らかの処理を行う際に用いる。
この時に、String型の変数の中に漢字などの2バイト文字が入っていたらどうなるか?と迷ってしまった。

java まとめ

marp: true

# int
## 2title
### 3title
Shift 押しながら @

“`java


marp: true

例)int a=1;
“`

“`java

“`
## cher String int double boolen
##
## char
#### char型は一文字
#### 文字番号(Unicode)でも出力できる。
#### 「’’」で囲む
“`java

char a=’あ’;
char a= 0x3042;

char a= 0x3043; //a=ぃ 
“`

## string
“`java
String a =”あ”;
“`
## int
“`java
int a=1;
“`
## double
“`java
double b=0.3;
“`
## boolean
true or false
“`java
//初期値を決める場

Javaで何か作ってみる(2022/11/11 Day22)

## 今日やった事
– Mac環境で、VSCodeでJavaプログラムが実行出来るように開発環境を構築した。
## 参考にしたもの
– [Visual Studio CodeでJavaプログラム開発環境構築](https://qiita.com/jsj05543/items/da54e5db258bc9d2538a)
– [Java環境構築(Adoptium(旧:AdoptOpenJDK))](https://zenn.dev/sasakiki/articles/54f68ee1576380)
## 所感
– やり方は、Windows環境と同じように、JDKインストール、VSCodeの拡張機能の追加、PATHの追加で出来ると思ったが、PATHの追加がうまくいかなかった。
## 明日の予定
– 明日以降も、Mac環境でのJava開発環境構築を進めて行こうと思う。

minikube(kubernetes) でコンテナを動かしてみる

# はじめに

記載情報は CI/CD に関連します。
実務上関わった環境・機能を身近な情報としてお届けしたく、投稿をはじめました。
各学習上、お金のかからない方法を選択していきます。

以下の手順を実施することで、アプリケーション開発者が minikube(kubernetes) でコンテナを動かしてみる工程を模倣します。

## 対象者と関連環境・機能

この記事は下記のような人を対象にしています。

– CI/CD 初学者
– プログラミング初学者
– 駆け出しエンジニア

記載している環境・機能は以下です。

– Java
– Spring Boot
– Spring Web
– minikube(kubernetes)

## リリース環境の検討

ここまでは Azure Devops の利用にて無料で繰り返し利用可能な内容でこれたのですが、コンテナレジストリに登録したイメージをもって kubernetes 環境へリリースしていく上では方法が限定的となってきます。
ここでは無償で利用可能な minikube を活用することとし、また実際のところ実務で困り次第、家で

Azure Devops (Pipelines) でテスト、ビルド、イメージプッシュをする

# はじめに

記載情報は CI/CD に関連します。
実務上関わった環境・機能を身近な情報としてお届けしたく、投稿をはじめました。
各学習上、お金のかからない方法を選択していきます。

以下の手順を実施することで、パイプラインからのテスト、ビルド、イメージプッシュをできるようにします。

## 対象者と関連環境・機能

この記事は下記のような人を対象にしています。

– CI/CD 初学者
– プログラミング初学者
– 駆け出しエンジニア

記載している環境・機能は以下です。

– Azure Devops
– Azure Pipelines
– Java
– Gradle
– Docker

## 本記事の趣旨

必要処理をべた書きしているのみにつき、あくまでも動かす過程の参考程度の情報です。
本記事では「こんなこといちいち手順みながらサーバ上でシェル叩くのか?」といったあたりについての解消の一助になれば、といった意図でのご紹介とさせていただきます。
最終的に「Azure-Pipelines がベストな方法か?」といえば、必ずしもそうではないです。
利用までのハ

LocalDateを使用した経過日数の求め方

経過日数を計算するためのコードを勉強していたのですが、
GitHubに上げるほどではないなと思ったので、こちらにメモ書きします。

# 指定した日までの日数を計算するコード
`.plusDays(1)`の部分で今日から〇日後の指定ができるみたいですね。
経過日数は`ChronoUnit`で計算してます。

“`Java
import java.time.LocalDate;
import java.time.temporal.ChronoUnit;

public class today {

public static void main(String[] args) throws Exception {

//現在の日付を取得
LocalDate now1 = LocalDate.now();
LocalDate now2 = now1.plusDays(1);
System.out.println(“今日の日付は”+now1);

データ型 表現できる値や範囲 ビット
boolean true,false 1
byte -128 ~ 127 の整数 8