- 1. 案件準備 2023
- 2. Non-Decreasing Digits
- 3. Leetcode 1470. Shuffle the Array
- 4. Files.walkTree()
- 5. Files.newBufferedReader
- 6. Files#walk(), find(), list(), DirectoryStream
- 7. 【Eclipse】よく使うショートカットキー10選
- 8. Files class createDirectories method
- 9. Files class
- 10. Path interface
- 11. 【google-java-format】すべてのファイルを一発でフォーマットする方法
- 12. Valueを付与した変数にJUnitでモックする
- 13. 8.2 finalと定数(Java Basic編)
- 14. Instant.toString() を JST で表示する
- 15. [Java] Collectionクラスまとめ ~List, Set, Mapの実装と使い方~
- 16. Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile
- 17. [Java] length, length(), size()の違い
- 18. SpringBoot ContextListenerクラス内でなぜかAutorewiredが機能しない時に実施した対処
- 19. Tomcat構築やってみる
- 20. ファイルをバックアップ
案件準備 2023
# 案件準備
## サクってやるところはサクってやってしっかりやるところはしっかりやろう。
## Docker
◾︎ ドットインストール
https://dotinstall.com/lessons/basic_docker
◼︎Dockerのとこを読む。
さわって学ぶクラウドインフラ docker基礎からのコンテナ構築 Tankobon Hardcover – June 11, 2020
by 大澤 文孝 (著), 浅居 尚 (著)
www.amazon.co.jp/dp/4296106422
◼︎必要そうなコマンド
docker version
docker-compose up -d## CSS
◼︎急にちょっと使いたい時があるのでその時のための コードと参考にしたリンク“`
HTMLHTML内に直書
“`
◼︎Progateで学んでおく。デバックモードの練習はやっておいたほうが良い。
道場以外上級までやる。
https
Non-Decreasing Digits
http://acmgnyr.org/year2010/e.pdf
## 難易度
### Midium## アプローチ
### DP“`java
import java.io.*;
import java.math.BigDecimal;public class Main {
public static void main(String[] args) throws IOException {
BigDecimal[][] temp = new BigDecimal[65][10];temp[0][0] = BigDecimal.ONE;
temp[0][1] = BigDecimal.ONE;
temp[0][2] = BigDecimal.ONE;
temp[0][3] = BigDecimal.ONE;
temp[0][4] = BigDecimal.ONE;
temp[0][5] = BigDecimal.ONE;
temp
Leetcode 1470. Shuffle the Array
https://leetcode.com/problems/shuffle-the-array/description/
## アプローチ
### Brute-force“`java
class Solution {
public int[] shuffle(int[] nums, int n) {
int[] result = new int[nums.length];
int start = 0;
for (int i = 0; i < nums.length; i++) { if (i % 2 == 0) { result[i] = nums[start]; start++; } else { result[i] = nums[n]; n++; } } return result;
Files.walkTree()
FileVisitorに定義した以下の4つのメソッド通りにディレクトリをwalk through
preVisitDirectory
visitFile
postVisitDirectory
visitFileFailed“`java
public class Outer {
public static void main(String[] args) throws Exception{
Path p = Paths.get(“c:\\dirtest”);
FileVisitorfv = new FileVisitor () {
@Override
public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException {
System.out.println(“previsitdirectory : ” + dir)
Files.newBufferedReader
“`java
public class Outer {
public static void main(String[] args) throws Exception{Path p = Paths.get(“C:\\dirtest\\testfile.txt”);
Path p2 = Paths.get(“C:\\dirtest”);
File f = p2.toFile();
if(!Files.exists(p)) {
Files.createFile(p);
}
BufferedWriter bw = Files.newBufferedWriter(p,StandardOpenOption.APPEND);
Scanner sc = new Scanner(System.in);
try(bw) {
String str = sc.nextLine();
Files#walk(), find(), list(), DirectoryStream
Files.walk()は該当ディレクトリのサブディレクトリすべてを探索
Files.find()は該当ディレクトリのサブディレクトリすべてを探索、BiPredicateのフィルタ付き
Files.list()は該当ディレクトリの一覧
Files.newDirectoryStream()は該当ディレクトリの一覧“`java
public class Outer {
public static void main(String[] args) throws Exception{
Path p = Paths.get(“C:\\dirtest”);
BiPredicatebp = (p1,bfa) -> {
return p1.toFile().getAbsolutePath().endsWith(“.java”);
};
Streams = Files.find(p,3,bp);
s.forEach(Sy
【Eclipse】よく使うショートカットキー10選
ショートカットキー大好き、時短大好きな私が、Eclipseでよく使うショートカットキーをまとめました:relaxed:
最近Eclipseを使い始めた人は、ぜひこのショートカットキーを使ってみて下さい!## コンテンツ・アシスト(Ctrl + Space)
入力補完です。
変数名やクラス名を途中まで入力してこのキーを押すと、入力を補完してくれます。
mainメソッドは「main」、System.out.println()は「sysout」と入力してこのキーを押すことで、一瞬でコードを書くことができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/699644/b153a372-7b46-e5a2-08eb-047f8f6593f6.png)
素早くソースコードを書くためには、かなり大事です。## フォーマット(Ctrl + Shift + F)
コードのフォーマットを整えます。
![image.png](https://qiita-image-store.s3.ap-nort
Files class createDirectories method
Path(directory).resolve(Path(file/directory))で
特定のdirectoryのfile/directoryを参照することができる
createDirectoriesは、parent directoryがない場合にmkdirしてsubdirをmkdir
createDirectoryは、parent directoryがない場合 NoSuchFileException
Files.copy, Files.moveで、copy /moveができる
“`java
public class Outer {
public static void main(String[] args) throws Exception{
String dir = “C:\\dirtest”;
File f = new File(dir);
Path p = Paths.get(dir, “subDir”, “sub2Dir”);
Path parentDir = Paths.get(dir);
Files class
“`java
public class Outer {
public static void main(String[] args) throws Exception{
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
System.out.println(str);
Path p = Paths.get(“c:\\dirtest\\” + str);
File f = p.getParent().toFile();
System.out.println(f);
method(f);
if(!Files.exists(p)) {
Files.createFile(p);
}
method(f);
System.out.println(Files.getLastModifiedTime(p));
//
Path interface
File classとほぼ同様の機能を持つ
Paths.getでインスタンス化する。get(“C:”,”dirtest”,”test.txt”)のような
書き方が可能。それ以外の違いが?
toFile()でfileを生成することができる“`java
public class Outer {
public static void main(String[] args) {
Path p = Paths.get(“C:\\dirtest\\test.txt”);
System.out.println(p);
System.out.println(p.getParent());
System.out.println(p);
System.out.println(p.getRoot());
p = Paths.get(“C:”,”dirtest”,”test.txt”);
System.out.println(p);
p = Paths.get(“C:/
【google-java-format】すべてのファイルを一発でフォーマットする方法
# はじめに
[google-java-format](https://github.com/google/google-java-format)は、Javaのソースコードをフォーマットするプログラムです。
[Google Java Style](https://google.github.io/styleguide/javaguide.html)に基づいて、フォーマットします。IntelliJやEclipseなどのプラグインもありますが、ここではコマンドラインツールを利用します。
google-java-formatには、さまざまなオプションがありますが、
「すべてのファイルを一発でフォーマットする」ためのオプションはありません。オプションの一覧
“`:オプションの一覧
Usage: google-java-format [options] file(s)Options:
-i, -r, -replace, –replace
Send formatted output back to files
Valueを付与した変数にJUnitでモックする
# Valueを付与した変数にJUnitでモックする方法
## 概要
– `@Value`を付与した変数を扱うクラスのテストを実施した際、`@Value`の変数の値がテスト時のみnullとなってしまう事象が発生– 以下テスト対象のクラス
“`java
@Component
public class HogeService {@Value(“${sample.variable}”)
private String sampleVariable; ← ここの変数がテストでnullで返ってくる
…
“`↑の件、少し解決につまづいたので、解決方法を記載
## 結論
– `org.springframework.test.util.ReflectionTestUtils`を利用することでmockできる
“`java
ReflectionTestUtils.setField(instance, “name”, “value”, String.class);
“`### サンプル
– `@Value`を利用しているクラス
“`java
@Compone
8.2 finalと定数(Java Basic編)
### はじめに
#### 自己紹介
皆さん、こんにちは、斉藤賢哉と申します。私はこれまで、25年以上に渡って企業システムの開発に携わってきました。特にアーキテクトとして、ミッションクリティカルなシステムの技術設計や、Javaフレームワーク開発などの豊富な経験を有しています。
様々なセミナーでの登壇や雑誌への技術記事寄稿の実績があり、また以下のような書籍も執筆しています。
* [「マスタリング Java EE 5」(2007年)](https://amzn.asia/d/j0txqK5)
* [「アプリケーションアーキテクチャ設計パターン」(2017年)](https://amzn.asia/d/9avaCyF)いずれも**Java EE**(**Jakarta EE**)を中心にした企業システム開発のための書籍です。中でも [「アプリケーションアーキテクチャ設計パターン」](https://amzn.asia/d/9avaCyF)は、(Javaに限定されない)比較的普遍的なテーマを扱っており、内容的にはまだまだ陳腐化していないため、興味のある方は是非手に取っていただけると幸い
Instant.toString() を JST で表示する
~~そんなオプションが、、、無い~~
ByteBuddy を利用した方法
===* ByteBuddy を使うと Class の Method 内を書き換える事ができる。
* Class が既に Load されている場合を考えると / Boostrap class loader で読み込まれる class を読み替えるには Java Agent が必要。
* 2 秒ぐらいかかる。。。もっさりしてる。“`kotlin
object InstantsToStringFormatUpdate {
/**
* This byte code is equal to following code:
*
* “`java
* class Instant {
* public String toString() {
* return DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(
* OffsetDateTime.ofIn
[Java] Collectionクラスまとめ ~List, Set, Mapの実装と使い方~
## 要約
Collectionクラスには主に3つのインターフェイスが用意されています。* **[List](#list)** : 順番通りに格納 (ex. [ArrayList](#arraylist), [LinkedList](#linkedlist))
* **[Set](#set)** : バラバラに格納 (ex. [HashSet](#hashset), [TreeSet](#treeset))
* **[Map](#map)** :Keyに対応づけて格納 (ex. [HashMap](#hashmap), [TreeMap](#treemap))## List
Listは**インターフェース**と呼ばれる抽象メソッドのみをもったものです。
Listはあくまでもインタフェースであるため、インスタンスの生成ができません。よって、以下のようには書けません。
“`Java
//間違い
Listlist = new List ();
“`
Listインターフェイスを実装したクラスは[ArrayList](#arraylist)
Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile
Spring BootのプロジェクトをMacで起動しようとした時のメモ
“`
Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile
“``./mvnw spring-boot:run`とするとエラーになった。
### 原因
pomに書かれているjavaのバージョンと実際に実行する時に使われているjavaのバージョンが一致しないため。### 解決策
pomに書かれているバージョンのjavaをインストールしてパスを通す!!
[Java] length, length(), size()の違い
## 要約
| | 種類 | 対象 | 対象の例 |
|———-|—|—|—|
| [length](#length) | フィールド | 配列 |int[], double[], String[]|
| [length()](#length) | メソッド | 文字列 | String, StringBuilder|
| [size()](#size) | メソッド | コレクション |List, ArrayList, Set|[フィールドvsメソッド](#フィールドvsメソッド)
## length
`.length`は配列のフィールド(情報)に直接アクセスします
“`java
//配列の長さ
int[] nums = {4, 10, 7};
nums.length; // 3
“`## length()
`.length()`はメソッドを呼び出すことで、文字列オブジェクトのフィールドメンバーにアクセスします
“`java
//文字列の長さ
String str = “abcde”
str.length(
SpringBoot ContextListenerクラス内でなぜかAutorewiredが機能しない時に実施した対処
SpringBootでAutowiredがうまく機能せずとても困たので忘備録としてメモ。
@Autowiredで生成されるはずのBean(インスタンス)にアクセスすると何故かnullPointerExceptionが発生。
ContextListenerクラスのcontextInitializedメソッドの中でのみ発生した。他のクラスでは問題なくAutowiredを利用してBeanが生成されている状態。原因は未だに分からないのだが、以下のようにServletContextクラスや、WebApplicationContextクラスを利用することでBeanを取得することができた。
“`java
…
import jp.co.com.sampleApplication.SampleField;
…@WebListener
public class SampleApplicationContextListener implements ServletContextListener {//前提としてSampleFieldには@Componentを付与しているが以下
Tomcat構築やってみる
# 〜初心者の備忘録〜
## 情報
・Eclipse : Version 2022-12 (4.26.0)
・Java : Version 18## 構築フロー
**①「動的Webプロジェクトを作成します」をクリック**
![スクリーンショット 2023-02-05 15.32.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1886978/b1dd2975-8f88-8810-20b3-d4961ca75564.png)**②「プロジェクト名」に任意の名前を入力し「完了」をクリック**
![スクリーンショット 2023-02-05 15.32.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1886978/e4f82d4a-8ca0-33ef-ff06-28733c361b66.png)**③プロジェクトを右クリックし、「新規」 > 「HTMLファイル」を選択し、htmlファイルを作成**
ファイルをバックアップ
FileBack
“`
package jp.co.main;import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
import java.text.SimpleDateFormat;
import java.util.Calendar;import org.apache.commons.io.FilenameUtils;
public class FileBack {
public static void main(String[] args) {
String filepath = null;
for (String string : args) {
File file = new File(string);if (filepath == n