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

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

Bean scopeとBean Life Cycle

## Bean scope

Bean scope
Springで別途の設定をしない場合、default bean scopeはsingletonで構成されます。

singleton : spring default bean scope
prototype:アプリケーションリクエスト時に(getBean()メソッドが呼び出されるたびに)スプリングが新しいインスタンスを生成します。
request:HTTP リクエストごとにインスタンス化され、リクエストが終わると消滅します。
session:HTTP セッションごとにインスタンス化され、セッションが終了すると消滅します。
global session:ポートレート基盤のウェブアプリケーション用途で、全域セッションスコープが空のようなスプリングMVCを使用したポータルアプリケーション内のすべてのポートレートの間で共有できます。
thread:新しいスレッドから要請すると、新しいbeanインスタンスを作成します。 同じスレッドの要請には常に同じインスタンスが返されます。
custom : org.pringframework.beans

元記事を表示

【Java】DateクラスのcompareToメソッドの使い方

#compareToメソッドとは?
Dateクラスの日にちを比較するメソッドで、メソッドの呼び出し元の日付と引数の日付を比較します。

以下のように、引数と呼び出し元を比較し、値を返します
>メソッドの呼び出し元の値が、引数と等しい場合は0
>メソッドの呼び出し元の値が、引数より前の場合は-1
>メソッドの呼び出し元の値が、引数より後の場合は1

#使い方

“`java
SimpleDateFormat sdf = new SimpleDateFormat(“yyyyMMdd”);
Date date1,date2;
date1 = sdf.parse(“20210117”);
date2 = sdf.parse(“20210118”);

System.out.println(date1.compareTo(date2)); // -1 ->date1はdate2より前である
System.out.println(date2.compareTo(date1)); // 1 ->date2はdate1よ

元記事を表示

複雑なfor文(基礎)

# 複雑なfor文

### ❶初期化処理 ❷繰り返し条件 ❸繰り返し時処理の3つを工夫し、高度な繰り返しを実現
単に「◯◯回繰り返す」という単純な繰り返しではなく、下記のようにすれば少し高度な繰り返しが行える

“`java
//ループ変数を1からスタートする
for (int i = 1; i < 10; i++){...} //ループ変数を2ずつ増やす for (int i = 0; i < 10; i += 2){...} //ループ変数を10から1ずつ1まで減らしていく for (int i = 10; i > 0; i–){…}

//ループ変数を初期化しない
for (; i < 10; i++){...} //繰り返し時の処理を行わない for (int i = 0; i < 10;){...}  ```

元記事を表示

awtで”EXCEPTION_ACCESS_VIOLATION”が出たとき

前書き

大学のjavaの課題でawtを使おうとしたところ,大量のエラーが出て小一時間格闘したので解決策を残しておきます。
初めての記事なのでご了承ください。

環境

OS : Windows10
JDK : 15.0.1
JRE : 15.0.1

後述のエラー文にこのような記述があったのでそれを参考にしています。
vm_info: OpenJDK 64-Bit Server VM (15.0.1+9-18) for windows-amd64 JRE (15.0.1+9-18)

筆者はInteliJIDEA Ultimateをエディタとして利用しており,インストール時点でjdkもjreもなかったのでIDEAの指示に従って一番新しいものをインストールした形です。

症状

ソースコード

“`java:AWTGraphics.java
import java.awt.*;

public class AWTGraphics extends Canvas
{
static final int WORLD

元記事を表示

Azure Java開発用のサンプルコード集

[Azure-Java-SDK JavaDoc](http://azure.github.io/ref-docs/java/index-all.html)

[Github Azure-Java-SDK](https://github.com/Azure-Samples?q=&type=&language=java)

[MicroSoft公式 : コードサンプル検索サイト](https://docs.microsoft.com/ja-jp/samples/browse/)

元記事を表示

Java O/Rマッパーの種類と選定方法について調べたことのメモ

#O/Rマッパーとは#
「O/Rマッパー」って名前、なんか小学生の必殺技的な響きしてますよね。
最近業務で色々なO/Rマッパーに触れる機会があったので、ついでに調べたことをざっくりまとめました。

O/Rマッピングとは、オブジェクト指向プログラミング言語におけるオブジェクトとリレーショナルデータベース(RDB)の間でデータ形式の相互変換を行うこと。
[IT用語辞典 -O/Rマッパーとは](https://e-words.jp/w/O-R%E3%83%9E%E3%83%83%E3%83%94%E3%83%B3%E3%82%B0.html#:~:text=O%2FR%E3%83%9E%E3%83%83%E3%83%94%E3%83%B3%E3%82%B0%E3%81%A8%E3%81%AF,O%2FR%20mapper%EF%BC%89%E3%81%A8%E3%81%84%E3%81%86%E3%80%82)

簡単に言うとJavaなどのプログラミング言語とRDBの橋渡しをしてくれるものです。

もっと詳しく知りたい方
[オブジェクト関係マッピング](https://qiita.com/y

元記事を表示

JavaEEとJakartaEE、どう違うの?

 よく考えてみると、わかりやすい説明がほとんどないことに気づきました。戸惑っている人も多いのではないかと思ったので、あえて、誤解をおそれず、本当のところ(と思うこと)をやさしく書いてみました。(もしも勘違いや間違いなどがあれば、お知らせください。)
#Java EEのままではいけなかったの?
 2017年に、Java EEがOaracle社からEclipse財団に移譲されるという記事を見て、最初に思ったことでした。今は、大分時間が経ったので、少しわかるような気がします。背景として、クラウドネイティブという大きな潮流があったことがあげられます。

 docker(2013年)やKubernetes(2015年)のようなシステムの登場が大きな契機でした。エンタープライズシステム開発の将来を予見するような、エポックメイキングなプロダクトです。ただ、Oracle社の動きは鈍く、意欲も見えなかったので、これに対して、コミュニティでは、 Java EE Guardiansを結成(2016年)し、Orcle社へ働きかけました。そして、Microprofile(2016年)が登場する一方、ようやく、J

元記事を表示

JavaでRSA公開鍵による暗号化と復号化の方法

RSAを使った暗号化と復号化のやり方を今日も忘れたので備忘録として残しておく。

マイクロサービスアーキテクチャにおいて、ユーザーの認証情報を引き渡していくための方法として、いろいろなやり方があるが、オーバーヘッドが小さく確実にサービス側、呼び出し元の相互に認証と認可が可能なので公開鍵を使った認証済みのユーザー情報の暗号化がいいと思う。

なお、RSAの場合、鍵長に1024ビットを指定すると128バイトとなり、パディングが11バイトなので暗号化可能な文字列の長さは117バイトまでとなる。

認証済みのユーザーのIDなどを送信するには十分であるが、このあたりは注意が必要だ。

## RSA鍵ペアの作成

“`java
KeyPairGenerator keyGen = KeyPairGenerator.getInstance(“RSA”);
keyGen.initialize(1024); // RSA鍵の長さを指定する
KeyPair keyPair = keyGen.generateKeyPair();
“`

`KeyPair` には、秘密鍵と公開鍵の両方が含まれている。

#

元記事を表示

Listについて【Java】

#初期化① add
“`java:Main.java
package com.test;

import java.util.ArrayList;
import java.util.List;

public class Main {
public static void main(String[] args) {
List animals = new ArrayList<>();
animals.add(“dog”);
animals.add(“cat”);
animals.add(“pig”);
System.out.println(animals); // [dog, cat, pig]
}
}
“`

#初期化② Arrays.asList
※固定サイズのリストになるので注意
参考:[Java – Arrays.asList の注意点](https://qiita.com/HomMarkHunt/items/c0172bd6c9801c5768d2)

“`ja

元記事を表示

Processing ライブラリ “ControlP5”, “Fisica” を使って遊ぼう

こんにちは。最近は趣味でProcessingにハマっています(予定)
Processingオリジナルのライブラリとして”ControlP5″と”Fisica”があります。
実際に作ってみたものを例に、どのようなことに使えるのか、注意点も混じえて解説出来ればと思っております。

#実物
![My-Movie-5.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/615169/71f11c59-36a6-2418-a515-48bec6579929.gif)
※2倍速です。

#コード
###ライブラリの追加
「スケッチ」→「ライブラリをインポート..」→「ライブラリを追加..」から検索してください。
![スクリーンショット 2021-01-15 8.57.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/615169/95fae1a2-ab22-7b0f-2ef8-f3461bd19055.png)

あとはコードの初

元記事を表示

【Java】「エスケープ文字が不正です」「エンコーディングMS932にマップできません」の対処メモ

こんばんは。

今、自分の中で一大プロジェクトを進行中です。
(頓挫するかも知れないので内容は伏せます・・いつかここで公開できたら!)

その中のごく一部のプログラムを作るために、Javaでテキストの読み込み・出力ができるプログラムを作っています。
windows10になってから、デフォルトの文字コードがUTF-8になりました。
VbscriptでUTF-8のファイルの入出力を組もうと思ったのですが、従来のShift-Jis専用の処理だと文字化けしてしまいます。
Vbscript使いの皆さんは、コーディング方法を変えた感じでしょうか?
例)テキストファイルのレコードを読み込む処理
dataline = inStream.readline
      ↓
dataline = inStream.readtext(-2)
自分の会社のPCには、Vbscriptのツールが大量に保存してあるので、どうやって対応していこうかなあと悩み中です。
まあそんな事もあり、せっかくなので勉強中のJavaで組もうと思った次第です。
そこで発生したコンパイルエラーについて、対処しましたのでメモとして投稿します

元記事を表示

Qiita登録後の動作確認 初めての投稿 HelloWorldを表示

#Hello Worldを表示

“`java:Main.java
package com.test;

public class Main {
public static void main(String[] args) {
System.out.println(“Hello World”);
}
}
“`

#これからの為に
[Markdown書き方まとめ](https://qiita.com/shizuma/items/8616bbe3ebe8ab0b6ca1)
[MarkDown記法【初心者によるまとめ】](https://qiita.com/hachihacchi/items/46ea7251f1e5675b1ecb)

元記事を表示

バイトコードと仮想マシーン

# バイトコードと仮想マシーン

### WindowsやmacOSなどのPC向けプログラムはスパコンでは動かない
パソコンとスパコンでは、CPUが理解できる命令(マシン語)が異なるから
しかし、Javaで開発したプログラムはPCでもスパコンでも同様に動く

これは、Javaコンパイラから出力されるバイトコードが特定のCPUに依存しない凡用的なマシン語であるため

Windows用のマシン語にスパコンで実行する場合にはスパコン用のマシン語に変換される

“`
PCやスパコン中にある
「凡用マシン語を理解するコンピューター」がバイトコードを実行しているように見える
“`
これが「Java仮想マシン(JVM)」という名前の由来

### スパコン
一般的なコンピュータでは解くことが困難な大規模で高度な科学技術計算を高速に行うことができ、主に研究機関や企業などで使われている

“`
パソコンの数十万倍の速度での計算処理を可能とする高性能なコンピューターのこと
“`

### バイトコード
Javaの仮想マシンのために用いられる実行可能なプログラムとしてのバイナリデータ
機械語ではなく

元記事を表示

【RaspberryPi】Apache2とTomcatを連携させてみる

# 概要
TomcatをラズパイのApache2と連携させ、外部に公開、アクセスできるようにする。

# はじめに
この記事は、Raspberry Piの初期設定、ドメインの取得、Apache2の導入、ポート開放等が済んでいる前提の記事です。
お済みでない方は、先にそちらの設定を行うことを推奨します。

– [raspberry piでお手軽自家サーバー webサーバー編 – Qiita](https://qiita.com/picker/items/0466c55f9a03ebb0bd90)
– [ラズパイwebサーバをhttpsに対応させた – Qiita](https://qiita.com/HO_Pollyanna/items/aee45b25e2318d39157b)

# 使用環境
– Raspbian 10.7
– Apache 2.4.38
– Tomcat 9.0.31

## 環境構築
まずパッケージの更新をしておきます。

“`console
$ sudo apt update
$ sudp apt upgrade
“`
パッケージの更新が終わったらTomca

元記事を表示

Ubuntu(Linux)でのJava環境構築方法

# TL;DR
UbuntuでJava環境を構築する際には、[SDKMAN](https://sdkman.io/)を使用することがおすすめです。
apt経由でもJavaをインストールすることは可能ですが、自分でバージョンを選択したりバージョンを切り替えたりすることが難しいです。また、gradleなどのツールはリポジトリの追加が必要など、手間がかかってしまいます。
SDKMANを使用すれば、簡単に複数バージョンのJava(とJava関連のツール)をインストールし、バージョンを切り替えて使用することができます。

# SDKMANのインストール
[公式サイトのインストール手順](https://sdkman.io/install)に沿って行います。
まず、以下のコマンドを実行します。SDKMANがダウンロードされ、インストールされます。
`curl -s https://get.sdkman.io | bash`
インストール完了後、新しいターミナルを開き、以下のコマンドでSDKMANにパスを通します。
(一度実行するだけでOK。.bashrcなどに記載する必要は無し。)
`source

元記事を表示

JavaScript,PHP,Javaのrandom関数をまとめてみる

今回はrandom関数を各言語ごとにまとめてみます。
なんでrandom関数なのかというとミニゲームなど作成時に使用する頻度が高く、好きな関数の一つだからです。
言語ごとに微妙に違いがあり、備忘録として記事にしておきます。

ちなみにrandom関数にもアルゴリズムがあるので*「擬似乱数」*であって、
*「真乱数」*ではないところに注意。

#JavaScriptのMath.random()
JavaScriptのMath.random()関数は0以上1未満の値を返します。
※0は含むが1は含みません!

“`JavaScript
let num = Math.floor(Math.random() * n) + m;
// n = 上限値 , m = 下限値
“`

Math.random()は浮動小数点で返ってきますので、Math.floor()で小数点以下を切り捨てます。
「n」は上限値を設定し、「m」で下限値を設定します。

####例 ) 1〜10の乱数を生成する

“`JavaScript
let num = Math.floor(Math.random() * 10

元記事を表示

spring boot ポート重複問題

spling bootのポート重複エラー
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/935036/5e70133d-a2b6-8634-555d-195b84f49042.png)

これの解決方法

1コマンドプロンプトで以下の画像のように”netstat -nao | find “8080”と検索する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/935036/82738a27-77c0-b9d4-df9c-51949cee7d86.png)

2 コマンドプロンプトの検索結果で出てきた listening の右の番号(下の画像では 19356)を
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/935036/454a1e44-0d5c-3791-8798-a3f8cc2067e7.p

元記事を表示

JAVAで最大公約数・最小公倍数を求める

# はじめに
最大公約数・最小公倍数を求めるJAVAのプログラムを作る.

# アルゴリズム
最大公約数と最小公倍数を求めるアルゴリズムについて説明する.

## 最大公約数
最大公約数はユークリッドの互除法で求める.
ユークリッドの互除法では,割り算の等式

$$
a=bq + r
$$

において,$a$と$b$の最大公約数は$r$と$b$の最大公約数と等しいという性質を用いて最大公約数を求めている.(参照:[高校数学の美しい物語](https://mathtrain.jp/euclid))

求める手順は次の通りである.(参照:[最大公約数を求めるプログラム例](https://edu.clipper.co.jp/pg-2-44.html))

2つの自然数a,b(a>=b)に対して,
1. aをbで割った余りをrに代入
2. r=0ならbが最大公約数となり処理を終了
3. aにbを代入,bにrを代入して1に戻る

計算量は$O(\log(\min(a,b))$

## 最小公倍数
2つの自然数$a$,$b$の最小公倍数$lcm$は,$a$と$b$の最大公約数を$gcd$

元記事を表示

Gradle testでリモートデバッグ

## 問題

Eclipseからjunitのテストクラスを実行すると以下のようなエラーがでるとき、ググるとたいていクラスパスがどうのといわれる。

“`
エラー: メイン・クラスorg.eclipse.jdt.internal.junit.runner.RemoteTestRunnerを検出およびロードできませんでした
原因: java.lang.ClassNotFountException: org.eclipse.jdt.internal.junit.runner.RemoteTestRunner
“`

いろいろな解決策を試すも一向に治らないので(仕事で時間かけてるのもアホらしいので)、Gradleテストでリモートデバッグできないのかと調べたらあった。

## リモートデバッグ

「–debug-jvm」オプションをつけて実行すると5005ポートで待受になるので、Eclipseからリモートデバッグで接続することが可能。

“`
$ ./gradlew test –tests “*XxxxTest” –info –debug-jvm
“`

* オプション

元記事を表示

正確な時間測定(Java)

## 方法

以前まではcurrentTimeMills()メソッドを使って、時間計測を行っていた。
しかし、非常に短い時間で行われる処理の計測をする場合、ミリ秒単位でしか測れないのでは
正確な時間測定ができない。
そのため、ナノ秒単位で時間測定を行えるnanoTime()メソッドで時間測定を行う。

“`java
long start = System.nanoTime();
// 計測したい処理を記述
long end = System.nanoTime();

long timeSeconds = TimeUnit.NANOSECONDS.toSeconds((end – start));
“`

## currentTimeMillis()との比較

| | currentTimeMillis | nanoTime |
| —- | —- | —- |
| 特徴 | 1970年1月1日午前0時0分0秒からの経過秒数をミリ秒で表したもの | 時間測定だけに特化したメソッド。|
| メリット | スレッドセーフである。(複数のスレッドから呼び出されても安

元記事を表示

OTHERカテゴリの最新記事