JAVA関連のことを調べてみた2021年02月14日

JAVA関連のことを調べてみた2021年02月14日

Java + Jackson Databind で JSON 日時文字列とオブジェクトを相互変換する

## 概要

– Java + Jackson Databind で JSON の日付・時刻を表す文字列と Java オブジェクトを相互変換するサンプルコードを示す
– 環境: Java 15 (AdoptOpenJDK 15.0.2+7) + Jackson Databind 2.12.1 + Jackson datatype: JSR310 2.12.1 + Gradle 6.8.2 + macOS Catalina

## サンプルコード

### ファイル一覧

“`
├── build.gradle
└── src
└── main
└── java
├── Sample.java
└── SampleData.java
“`

### build.gradle

“`groovy
plugins {
id ‘application’
id ‘java’
}

sourceCompatibility = JavaVersion.VERSION_15

application {
main

元記事を表示

JAVAのデータ型や変数について

#はじめに
今回はJAVAのデータ型や変数について書いていきたいと思います。
##変数
変数はデータを入れる箱になります。データを入れたり、出したりできます。
変数名をつけて、データ型を定義する必要があります。
クラス変数とかインスタンス変数とかあったりするのですが、今回は割愛します。

“`java:定義の仕方
// 基本型
int num = 0;
char character = ‘a’;
// 参照型
String hello = “helloWorld”;
int[] numList = {1,2,3};
“`

##【データ型】基本型(プリミティブ型)と参照型

###基本型(プリミティブ型)
| データ型名| 入る値 |
|:-:|:-:|
| byte | 8ビット整数 |
| short | 16ビット整数 |
| int | 32ビット整数 |
| long | 64ビット整数 |
| float | 32ビット単精度浮動小数点数 |
| double | 64ビット倍精度浮動小数点数  |
| boolean | true か

元記事を表示

eclipseを使ってSpringBootでHello World

##流れ##

* eclipseのインストール
* SpringBootプロジェクトの作成
* Hello Worldを表示

##eclipseのインストール##
eclipseをここからインストールします
→https://mergedoc.osdn.jp/
リンクを開いたら、バージョンやOSなどを選択して、インストールします。
今回は、Eclipse2020 → Java Windows64bit Full Editionを選択し、Downloadをクリックしました。

ダウンロードが完了したら、解凍します。
zipファイルの解凍には、7-Zipを使用してください。
今回は、Cドライブ直下に解答しました。

pleiadesというフォルダが作成されます。
これでeclipseのインストールは完了です。

eclipseを起動してみます。
pleiades\eclipse\eclipse.exeを起動します。
(ショートカットをデスクトップ等に作成しておくと便利です)
起動すると、ワークスペースのディレクトリ—選択という画面が表示されます。
このワークスペースの中に、ソースフ

元記事を表示

Circle CIでの自動デプロイ(SpringBootアプリケーション)のためのconfig.yml

“`yml
version: 2 # バージョンは「2」とする
jobs: # 実行するタスクの定義
build: # ビルドする内容をいかに記述
working_directory: <アプリケーションのルートディレクトリ>

docker: # Dockerの設定
– image: circleci/openjdk:11-stretch # Dockerfileの「From」に記述したベースイメージ

steps: # 実行するコマンドを以下に記述

– checkout:
path:

– restore_cache: pom.xmlが変わった時の差分を取得
key: portfolio-{{ checksum “pom.xml” }}

– run: mvn dependency:go-offline # プロジェクトのdependencyを取得する

– save_cache: # プロジェクトのdepende

元記事を表示

Javaで学ぶアルゴリズム 第4弾:ランダムな順列

# #Javaで学ぶアルゴリズム < ランダムな順列 >

##はじめに
Javaは授業で触れただけで全くの初心者であり,何もわかっていない.なので,基本的なアルゴリズムをJavaで実装し,アルゴリズムの理解を深めるとともに,Javaにも慣れていきたい.
その第4弾としてランダムな順列を扱う.

##ランダムな順列
順列とは並びである.ここでは,$1$~$N$までの値をランダムに並べた順列を生成するアルゴリズムについて,最悪のアルゴリズムとそれの改良版を学び,最適な順列生成についての理解を深める.

##最悪のアルゴリズム
以下に方法を示す.これは,$N^2$オーダーの繰り返しを行う効率の悪い方法である.ここでは,$1$~$6$の値を例に扱う.
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/951300/0483d264-abbe-3368-84b8-f41194184995.png)
この方法では,範囲内の乱数を得て,リストにないものを取り入れていくという**無作為な抽出**のような方

元記事を表示

Spring Boot Actuatorで開発の効率化を図ってみた

Springで開発していると裏側で登録されている情報を確認したくなることが多々あります。
ちゃんと意図通りにコンポーネントスキャンされてBeanが登録されているか、プロパティの設定値が登録されているか…などなど知りたいことがたくさんです。
デバッグ用にログ出力させる、なども一つの手ですがなかなか面倒に感じてしまうと思います。

そんなときにオススメなのが**Spring Boot Actuator**です。
今回はじめて使ってみて便利だと思ったので、備忘録として投稿しました。

## Spring Boot Actuatorとは?

Spring Bootで提供されている監視や管理、また開発時にも役立つ情報を取得することができます。
アプリケーションに組み込むことでHTTP/JMXから取得が可能です。
情報を取得するためのエンドポイントや細かな設定は[リファレンス](https://docs.spring.io/spring-boot/docs/current/reference/html/production-ready-features.html)にズラッと記載されています。

#

元記事を表示

Effective Java(第3版)の個人的なまとめ【項目1】 コンストラクタの代わりにstaticメソッドを検討する

Effective Javaを学んだ個人的なまとめです。

#### 結論
インスタンスの生成や利用を考えるときに、コンストラクタの利用を無意識に考えるのではなく、staticファクトリメソッドも検討に入れよう。

コンストラクタを利用する場合と比較してどのようなメリットとデメリットがあるのか。

#### ? メリット
#####1.名前を持つことができる
コンストラクタはクラス名と同じであるため、任意の名前を持つことができない。staticメソッドの場合は、メソッドなのでその動作にあった名前をつけることができるためわかりやすい
#####2. インスタンスを生成する必要がない
キャッシュしているインスタンスの再利用をすることで不用意なインスタンスの生成を防ぎ、計算量、処理量を減らすことができる。(GoFデザインパターンのシングルトン)
#####3.任意のサブタイプのオブジェクトを返すことができる
#####4.返却するオブジェクトを入力によって変えることができる
コンストラクタと異なり、戻り値を任意に定められるため、型にあった任意のオブジェクトを返却することができる。
####

元記事を表示

Javaでファイルやディレクトリのタイムスタンプを変更したい。

Javaでファイルやディレクトリのタイムスタンプを変更したい場合`Files.setLastModifiedTime`を利用すると便利です。たとえば指定のファイルのタイムスタンプを現在時刻にしたい場合は以下のようなコードになります。

“`java
FileTime now = FileTime.from(Instant.now());
Path file = Paths.get(“/path/to/file”);
Files.setLastModifiedTime(file, now);
“`

`Files.setLastModifiedTime`の第2引数には時刻を指定します。Javaで時間や日付というと`Date`や`Calendar`や`LocalDateTime`あたりをよく利用しますが、ここでは`FileTime`というあまりなじみのないものを利用することに注意する必要があります。

__環境情報__

“`
$ java -version
openjdk version “11.0.3” 2019-04-16
OpenJDK Runtime Environment

元記事を表示

【Java】MapをListに変換する方法

#はじめに

本記事ではMapをListに変換する2通りの方法をアウトプットします。

#Listを直接生成する方法

“`java
Map TopBillionaires = new LinkedHashMap<>();
TopBillionaires.put(“$195bn”, “Elon Musk”);
TopBillionaires.put(“$185bn”, “Jeff Bezos”);
TopBillionaires.put(“$134bn”, “Bill Gates”);
TopBillionaires.put(“$102bn”, “Mark Zuckerberg”);
TopBillionaires.put(“$88.2bn”, “Warren Buffett”);
TopBillionaires.put(“$81bn”, “Sergey Brin”);

List keyList = new ArrayList<>(TopBillionaires.keySet());
List

元記事を表示

AutoCompleteTextViewにフォーカスを当てたままキーボードを非表示にする

## AutoCompleteTextViewとは

キーボードによるインプットに対して、自動で文字を補完してくれる機能を備えもったEditTextのことです。

通常、Googleの[マテリアルデザインガイドライン](https://material.io/develop/android/components/menu)に則ったドロップダウンメニューを作成する場合は以下のような実装をします。

***res/layout/dropdown_menu.xml***

“`xml
Javaでビンゴマシーン作ってみた

目的

 本記事の目的はビンゴマシーンの作成です。
数の出る規則性はJava.util.Randomをそのまま使います。
しかし、これだけでは同じ数が数回表示されてしまうのでそういった点を工夫しました。

下記にソースコードがあります。
https://github.com/T1210Taichi/BingoMachine.git

元記事を表示

JDK 1.0 (Java 1.0.2) を入手したので、GitHub に置いておきました。

(この記事は [地平線に行く](https://yujisoftware.hatenablog.com/entry/2021/02/12/225501) とのマルチポストです)

JDK 1.0 (Java 1.0.2) を入手したので、GitHub に置いておきました。
https://github.com/YujiSoftware/JDK1.0

なんと、Windows 10 上でも動きます。
あと、[src.zip も展開して置いた](https://github.com/YujiSoftware/JDK1.0/tree/master/src) ので、GitHub 上で読めます。

Java 考古学者のみなさま、ぜひご活用ください!

# 入手の経緯

前々から Java 1.0 を触ってみたいなーと思っていたのですが、Oracle の [Java Archive](https://www.oracle.com/jp/java/technologies/oracle-java-archive-downloads.html) にはなぜか Java 1.1 以降しか置いてありませんで

元記事を表示

JAVAの条件分岐についてまとめてみた

#JAVAの条件分岐についてまとめてみた
今回はJAVAの条件分岐についてまとめてみました。
##1.IF文
“`if..文
if(条件式){
 実行処理
}
“`
一番シンプルなやつです!
条件式に「num > 1」みたいな式を書いて、「true」だったら処理を実行します。

“`if..else文
if(条件式){
 実行処理1
}else{
実行処理2
}
“`
elseが増えましたね。
条件式が「false」だった場合は、実行処理2の方が実行されます。

“`if..else.if文
if(条件式){
 実行処理1
}else if(条件式2) {
実行処理2
}else{
実行処理3
}
“`
また、一つ増えました。
一つ目の条件式が「false」だったら、二つ目の条件式で判定し「true」だった場合に実行処理2が実行されます。
全部「false」だった場合に、else内の実行処理3が実行されます。
elseはあってもなくてもいいです。

“`:三項式
(条件式)?trueの場合の処理:falseの場合の処理;
例:
 num = (num ==

元記事を表示

【Java】Queue、Deque、Stackの関係

Deque(デック)は「double ended queue」(両端キュー)の略。
Queue、Deque、Stackのメソッドを比較できる図を作りました。(この図が意外と見つからなかった。)

挿入(要素を挿入する)
削除(要素を取得し削除する)
検査(要素を取得するが削除しない)

メソッドにはそれぞれ、2つの形式があります。
1つは操作が失敗したときに例外をスローし、もう1つは特殊な値(操作に応じてnullまたはfalseのいずれか)を返します。

## Queue
[Queue](https://docs.oracle.com/javase/jp/

元記事を表示

文系大学2年生が1年間で取得した資格5つ紹介

大学2年生(この1年間)で取得した資格について書いていきます。
勉強した方法や期間など、参考にしてみてください。
##大学2年生初期の自分の状況##
* ITパスポート取得済み(1年生の最初)
* 私立の文系学部生、情報系科目の勉強ほとんど無し
* 1年生の春休みに、本格的にプログラミング学習(独学)を開始
* 2生になる頃から業務開発系企業でエンジニアインターン開始

##取得した理由##

* 情報系科目を学んでおらず、幅広く学びたいと思ったため。
* 勉強継続できる事を証明するため。
* インターンに参加しており、体系的に学びたいと思う事が多々あったため。

##取得した資格5つ##

* Java Silver
* LPIC L2(L1も)
* 基本情報技術者試験
* Oracle Master Silver(新資格体系)
* UMTP L1

##Java Silver##
**対策期間:~1週間**
**使用した学習教材**

* [徹底攻略Java SE 11 Silver問題集](https://www.amazon.co.jp/%E5%BE%B9%E5%BA%95%E

元記事を表示

YAMAHA アカデミックパック Processingでシリアル通信する(Java)

ポート名の調べ方

“`java:serial_list

import processing.serial.*;

println(Serial.list());

“`

1:調べたポート名を”hogehoge”に入力
2:グローバル変数の「linear」「angular」に好きな値を入力
3:「a」を押すとRequestCommand
4:「b」を押すとWriteReadCommand=動き出す
5:「c」を押すと停止する

“`java:YAMAHA_AcademicPack

import processing.serial.*;

Serial Port;

//電動車椅子の速度・角速度
float linear = 0.2; //速度[km/h](-5.6~5.6)
float angular; //角速度[km/h]

//配列の宣言
byte[] data1; //RequestCommand
byte[] data2; //WriteReadCommand

//その他
int CheckSum1; //RequestCommand
int Che

元記事を表示

[Java16]instanceofの型指定に追加される制約

## 新しい構文

Java16(2021/3/16 GA予定) から正式導入される「`instanceof`のパターンマッチング」([JEP 394](https://openjdk.java.net/jeps/394)),便利そうですよね! よく知らない方のために簡単に紹介しますと,

“`java
if (a instanceof Point p) {
// p を Point 型変数として使える

}
“`

のように書けます.他にもスコープ関係など細かい仕様があるのですが,詳しい説明は他の記事に譲ることにします(~~気が向いたら自分で書くかも~~).

今回は,この記法に関連して気が付いた制約があるので紹介します.

## 型の制約

“`java
if(“text” instanceof String) {
System.out.println(“ok”);
}
“`

これは以前からコンパイルできますし,予想通りに実行されます.ところが,

“`java
if(“text” instanceof String s) {
S

元記事を表示

Javaで学ぶアルゴリズム 第3弾:順位付け

# #Javaで学ぶアルゴリズム < 順位付け >

##はじめに
Javaは授業で触れただけで全くの初心者であり,何もわかっていない.なので,基本的なアルゴリズムをJavaで実装し,アルゴリズムの理解を深めるとともに,Javaにも慣れていきたい.
その第3弾として順位付けを扱う.

##順位付け
順位付けには様々な方法がある.また,数値であれば,高い順なのか低い順なのかという話も出てくる.ここでは3つの例を取り上げて,順位付けについての理解を深める.

##実装
例の説明を行った後に,Javaで実装したソースコードとそのときの出力を示し,考察を記述する.

####例①:非常に単純な順位付け
おそらく誰もがはじめに浮かぶような方法である.その説明を以下に図として示す.
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/951300/75cb59c4-d43d-2539-9e51-c6e1318371bc.png)
いま,61点の人の順位を求めている.順位は1~ということであるから,自分より

元記事を表示

Java double型の誤差とBigDecimal

# floatとdoubleは誤差が発生する可能性がある
以下のプログラムを実行してみる。

“`
double result = 0;
double d = 0.1;
// 0.1を10回足し算
for (int i = 1; i <= 10; i++) { result += d; } System.out.println(result); ``` ```lang:実行結果 0.9999999999999999 ``` 期待値:0.1 実行結果:0.9999999999999999 # 誤差が発生する理由 コンピュータの内部では、2進数で数値を保持している。 例えば、 10進数の「0.5」は2進数で「0.1」 10進数の「0.1」は2進数で「0.000110011001100…」⇒無限小数となり終わらない。 よって、10進数の「0.5」は誤差なくdouble型で表現できるが、10進数の「0.1」はコンピュータのビットが有限のため正確に表現できない。 # 誤差の解決方法 BigDecimalを使用する。 ``` BigDecimal result = new BigDe

元記事を表示

【精神崩壊】だからこのコードはクソなのだ!【主に俺の】

# INDEX
– 背景
– だからこのコードはクソなのだ!
– あとがき

# 背景

![Et60_3jVIAEAMQv.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/92447/28ac62e2-6623-4cca-524c-85a13e2fa7ed.jpeg)

かなり攻撃的なタイトルを付けたが、要はクソコードと言われるものを引き継いだり、
生産者からアドバイスを求められたりレビューをせざるを得ない状況に追い込まれ徐々に精神崩壊を起こしそうになった気がするので脳内妄想を吐き出してみることにした。つまりフィクションだ。いいね?

クソコードにも色々誕生秘話があって確かに大多数がクソ認定するコードもあるとは思うが、**レビュアの理解が追い付かない事でクソコード認定されてしまう**事もある。

はたまた、かつては輝いていたけど幾多の苦難[^1]に飲まれ、多くの兵どもの夢の跡[^2]を見守った結果、技術的観点からグリーフシード[^3]のようにクソコードとなってしまった悲しい経緯があるかもしれん。
変に*

元記事を表示

OTHERカテゴリの最新記事