JAVA関連のことを調べてみた

JAVA関連のことを調べてみた

Javaの配列

# 配列とは
配列は1種類のデータ型を複数個管理する際に使用されます。

Javaでは配列の要素を0から表記するので、配列の一番目の要素は
配列名[0]となります。

宣言の際には、要素の型と配列の変数名の他に、newが必要です。

~~~:配列宣言の例
要素の型[] 配列変数名 = new 要素の型[要素数];
~~~

元記事を表示

JSP・サーブレット 備忘録

## formタグ
action属性
送信先のプログラムのURLパターンを指定します。(『 / 』は不要)

method属性
起動するリクエストメソッドを指定します。「get」と書けばdoGetメソッド、「post」と書けばdoPostメソッドが起動されます。
method属性を書かない場合は自動でdoGetメソッドが起動されます。

“`jsp:jsp

“`

### リンクタグ
href属性
送信先のプログラムのURLパターンを指定します。(『 / 』は不要)
aタグで囲われた文字列にリンクとしての機能が付与されます。
“`jsp:jsp
画面02へ
“`

### Web.xml
XML形式で記述された、Webアプリケーションを動作させるための設定ファイルです。

### doGetとdoPostの違い
・doGet :主に画面を表示させるリクエストを出す際に使用する
・doPost:主にサーバーに顧客の入

元記事を表示

VSCode×DevContainerでDockerコンテナ内にJava開発環境を作る

## 書いた背景
– 最近実務でJavaを使い始めた。
– Javaに関する開発等はEclipceで行う風潮があるが、Eclipceが使いやすいと思わない。少なくともプライベートではVSCodeで書きたい。
– EclipceのAll-in-OneにはJava実行環境等が含まれていたが、VSCodeではそれがないためローカルマシンに実行環境をインストールする必要がある。が、それをやりたくない。
– VSCode × DockerでJavaの開発環境を作ろう。それを手軽に実現してくれるのがDevContainerというプラグインらしい。

## 前提

– VSCodeのDevContainerにはそれ専用のDockerイメージがそれなりに用意されているので、手元にDockerfileを用意しなくてもすぐ始められるため、今回はその方法で進める。
– Dev Container向けに用意されているDockerイメージはLTS版が中心でJava21まで対応されている。
– ビルドツールにはgradleを使用し、バージョンは8.4.4
– 書いた人はJavaど素人なので、正直gradleの

元記事を表示

JDBC 備忘録

### DAO
データベースにアクセスする機能をまとめたデータベースアクセス
専用のクラスのことをDAO(Data Access Object)と言います。

DAOはテーブル単位で定義することが一般的です。
現場によっても違ってくるので必ずチームメンバーに確認しましょう)

### DTO
クラスやメソッド間で複数のデータをまとめて受け渡す際に使用されるクラスをDTO (Data Transfer Object)と言います。基本的にDTOはそのクラスブロック内にフィールドとgetter/setterのみしか持ちません。

DTOは主にテーブルの1レコード分のデータを格納する目的で定義されます。そのため、1つのテーブルにつき1つDTOを定義することが一般的です。

“`java:Java
//ResultSetオブジェクトから1レコード分のデータをDTOに格納
if(rs.next()){
dto = new Sample4_02_1_Common_DTO();
dto.setId ( rs.getInt( “id” ) )

元記事を表示

カプセル化、アクセス修飾子

## カプセル化とは
カプセル化とは、クラス内のフィールドやメソッドに対するアクセスを制限するJavaの仕組み。
例えば、個人情報を扱うクラスがあり、このフィールドが外部から書き変えれたり情報を保護できないプログラムは危険。
カプセル化はこのような外部からのアクセスからオブジェクトを守る役目がある。

## アクセス修飾子
カプセル化では、アクセス修飾子のprivateとpublicを使いアクセス制限を行うため、下記の設定を覚えておく。
| アクセス修飾子 | 機能 |
|:-:|:-:|
| private | 自分のクラス内でのみアクセス可能 |
| アクセス修飾子なし(package private) | 同じパッケージ内であればアクセス可能 |
| protected | 継承した子クラス及び自分と同じパッケージからアクセスできる |
| public | 自分のクラス以外からでもアクセス可能 |

“`Java
package text.section_16;

public class Capsule_Tanaka1 {

// id フィールド

元記事を表示

SpringBootでJWT生成と検証

今回、JWTを用いた認証について学習したので、あわせてブログにまとめてみました。

本記事では、ログイン認証後のユーザーの各要求に対して、ログインユーザーと作業者が同一であるかをチェックするためにJWTを用いた処理を紹介します。

# **JWT(ジョット)**

JWTとは、Json Web Tokenの略で、関係者間で情報を安全に送信するためのJsonオブジェクトです。

ディジタル署名されているため、検証及び信頼ができるトークンとなっています。

様々なアルゴリズムを使用した公開/秘密鍵のペアを使用して署名することができます。

# **用途**

– **認証**
ユーザーログイン成功時にトークンを生成します。
(シングルサインオンやセッション認証で使用)
– **情報交換**
公開鍵/秘密鍵のペアを用いて、コンテンツの改ざん等がされていないことを検証できます。

# **JWTの構造**

JWTは、ヘッダ、ペイロード、サインで構成されており、それぞれ以下の情報を保持しています。

`xxxxxxx(ヘッダ).yyyyyyy(ペイロード).zzzzzzz(サイン)`

– *

元記事を表示

Javaのスコープ

# スコープとは
{ }で囲まれた部分をブロックと呼びます。
Javaでは、他言語と同様にブロック内で宣言した変数は、ブロックの外側では利用できません。

この時の変数が利用可能な範囲をスコープと呼びます。
スコープの外で変数を呼び出そうとすると該当の変数を見つけられずエラーが発生します。

元記事を表示

【Java初心者】Google Tinkを使ったMAC(メッセージ認証コード)

# Macとは

Googleのサイトによると
https://cloud.google.com/kms/docs/mac-signatures?hl=ja

“`
MAC 署名は、データの整合性と信頼性の検証に利用される暗号出力です。
“`
とあります。そして
“`
MAC 署名には主に 2 つの目的があります。
* 署名されたデータの整合性を検証します。
* メッセージの信頼性を確認する。
“`
と説明されています。

また、こちらのサイトでは

https://e-words.jp/w/%E3%83%A1%E3%83%83%E3%82%BB%E3%83%BC%E3%82%B8%E8%AA%8D%E8%A8%BC%E3%82%B3%E3%83%BC%E3%83%89.html

“`
メッセージ認証コード(MAC)とは、相手から届いたメッセージが途中で
改竄やすり替えに合っていないか検証するための短い符号。
送信者と受信者が共有する秘密のデータ(鍵)とメッセージ本体から生成する。
“`
となっています。

ただ今回のサンプルでは、PGPのように「はじめて見る相手のメッセ

元記事を表示

【Java】カプセル化についての理解を深める

オブジェクト指向の基本原則である「カプセル化」についての理解を”なんとなく”ではなく”しっかり”理解するためのシンプルな備忘録。ここではJavaを用いて説明する。

## カプセル化の基本理解
ざっくり言うと **「①関係性のあるデータをまとめて、②外部から隠すこと」** である。
これによって、ソフトウェアの更新の際にどこをいじればいいのかが明確になり、不用意な更新を防ぐことができる。

### ①関係性のあるデータをまとめる
関係するフィールドやメソッドをひとまとめにすることで、関係性のないデータをクラスから取り除くことができる。これにより、このクラスはこの役割を果たすんだな、とクラスの目的が明確になる。

では、”ひとまとめにする”とはどういうことなのか?
例えば、クラスAとクラスBがあったとする。クラスAのメソッドがBのフィールドにアクセスできる場合は、ひとまとめにされていないと言える。AのメソッドからBのフィールドにアクセスできるのであれば、AのメソッドはBにあるべきだからだ。

### ②外部から隠す(データ隠蔽)
値の書き換えを防ぐにはアクセス制限をかける必要がある。

元記事を表示

「スッキリわかるJava入門 第3版 スッキリわかるシリーズ」を読んだので内容をまとめる

Manipulating DataFrame Using SMILE

# Motivation

To understand how to’s for handling DataFrame in SMILE

# Environment

Jupyter Lab & IJava & temrin jdk 11 (have to use > 9)

# Usage of IJava and maven

First, should do load repositories and dependencies
For example,
“`
%mavenRepo scijava-public https://maven.scijava.org/content/repositories/public/
%maven net.imagej:ij:1.54h
%maven com.github.haifengl:smile-core:3.0.2
%maven com.github.haifengl:smile-plot:3.0.2
“`
(Here, ImageJ was loaded, but you do not need, just example…)

元記事を表示

Gradleを用いたJava開発記事まとめ

GradleとKotlinを利用したJavaアプリのソースコードの例をいくつか見つけました。以下のリンクを参考にしてみてください。
Gradle x JavaをKotlinに浮気させる #Java: GradleとKotlinでSpring Bootアプリケーションを作成する方法を紹介しています。
なんとなく使わないGradle: Gradleの基礎とモダンなプラクティスについて解説しています。
GradleとIntelliJで始めるKotlin (プロジェクト作成編) #Kotlin: GradleとIntelliJでKotlinプロジェクトを作成する手順を説明しています。
これらの記事は、GradleとKotlinの組み合わせに関する有益な情報を提供してくれると思います。もし、もっと具体的なソースコードを見たい場合は、GitHubでキーワードを検索してみてください。

GradleとKotlinを利用したJavaアプリのソースコードをGitHubから検索すると、以下のような結果が得られます。

– [gradle/gradle](^3^): Gradleは、JavaやKotlinな

元記事を表示

Javaの条件分岐

Javaも、他言語と同様にifによる条件分岐が可能です。
条件分岐を表現する時、Javaではboolean型というデータ型を用いた方法があります。

# boolean型
boolean型はtrueとfalseのみを扱う事が出来るデータ型です。
使用するビット数も2ビットと少なく、条件文の分岐フラグの管理で使用されます。

元記事を表示

DIコンテナを自作する

# DIとは?
– Dependency Injection – 依存性注入のこと
– クラス間の依存関係を外部から注入することで、開発者側でコンストラクタによるインスタンス生成が不要になる
– `new Hoge()`をせずともHogeクラスのインスタンスを利用できる
– Spring Bootだと以下3パターンがある
– コンストラクタインジェクション
– フィールドインジェクション
– セッターインジェクション
– ベストプラクティスはコンストラクタインジェクション

# DIコンテナとは?
– DIを実施するコンテナのこと
– プロジェクト内のクラス間の依存関係を全て把握し、よしなにDIしてくれて、かつその処理を開発者の見えないところでひっそりやってくれる
– 汚れ仕事を全て引き受けてくれる黒子みたいな存在

# 作ったもの
https://github.com/tttol/MicroDI

自分がDIコンテナのことを理解するために作ったものなので、**作業記録みたいなものと思ってもらえれば。**
実際のアプリ開発で利用できるクオリティには程遠い

元記事を表示

クラス、インスタンス、オブジェクト、コンストラクタ

![スクリーンショット 2024-02-10 10.23.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3570384/4a5458c6-0f71-44d9-c2cc-6b8373dae215.png)

* クラス(設計図)を呼び出して、インスタンス化(オブジェクトを作る)する。
* インスタンス=オブジェクト

## クラスの定義方法
“`java
アクセス修飾子 class クラス名 {
クラスの中身
}
“`
アクセス修飾子 :
`public` `private`の2種類。

クラス名:
クラス名は**先頭を大文字**にするのが慣例。
(ちなみに、変数はキャメルケース。`static fainal`の定数は全て大文字)

例)商品を扱うクラスを定義する場合
“`java
//商品クラス
public class Product{
“`

## フィールド
変数と同じ。
1. 宣言
1. 代入
1. 参照

##### 1.宣言と2.代入
* クラスのフィールドでは多く

元記事を表示

Javaの数値型のあれこれ

# 始めに

Javaの数値型にはint型,float型,double型の他にもbyte型,short型,long型などのデータ型が存在します。

byte型,short型,long型はいずれも整数型です。

byte型,short型はint型よりビット数が少ないので小さな値を格納するのに適しています。
long型はint型に収まりきらない数値を表記出来ます。

# Javaの数値型

【Java】競技プログラミングにJavaを使っていいの?

# はじめに
競技プログラミング (競プロ) でよく使用されるプログラミング言語といえばC++やPython (pypy) などが挙げられるでしょう。そう、競プロでJavaを使用するのはどちらかといえばマイノリティーに分類されます。
とはいえ、この記事にたどり着いたという事は、何かしらの理由で競プロでJavaを使う事を検討しているのではないでしょうか。実は私も数年前、同じ立場にいて、そのうえでJavaで競プロを始める事を選んだ人間です。
そこで、この記事では、実際に競プロでJavaを使っていて感じた事を解説していきたいと思います。「競プロでJavaを使ってみても大丈夫かな」と不安になっている方に届きますように。

※競プロといっても色々なサイト・大会がありますが、ここでは筆者がメインで参加しているAtcoderに絞った話をします。

# 目次
・筆者について
・私がJavaを選んだ理由
・実際にJavaを使ってみてどうか
・結論

# 筆者について
・競プロ歴5年 (アクティブに参加し始めたのはここ2年くらい)
・競プロでの使用言語: Java
・Atcoderレート帯: 緑

以上

Eclipseでスクラッチブックを使ってみる

# 1. はじめに
* Eclipseで開発をする時に簡易な動作確認をしたい

# 2. 開発環境
* Eclipse All In One
* Java

# 3. スクラッチブックの新規作成
* Javaの実行/デバッグ > スクラッチブック・ページを選択する
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2852081/f51bdc82-be8e-32e6-ec98-cbfa3f6d45c2.png)

# 4. スクラッチブックの使い方
## 4.1. 事前準備
* import文がある場合はコードではなく、右クリックから設定置く必要がある
![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2852081/52276a7c-ba3d-c0f9-835f-9a57e8c1631a.png)

* importするものを追加しておく
![3.png](https://qiita-image-store.s

Javaにおける乱数の生成

# 始めに
Javaでは乱数を生成する事が出来ます。
乱数を生成するには、Mathクラス、またはRandomクラスを用います。

# Math.random()を利用する方法
Math.random()は0.0以上1.0未満の実数を生成するメソッドです。
そのままだとdouble型。

Math.random()に様々な数値を加算、乗算する事で、乱数の範囲を調整する事が可能になります。

~~~ :0.0以上x未満の実数を生成
Math.random()*x
~~~

~~~ :y以上(y+1.0)未満の実数を生成
Math.random()+y
~~~

また、int型でキャストすると整数を生成出来ます。

~~~ :y以上(x+y)未満の整数を生成
(int)(Math.random()*x+y)
~~~

# java.util.Random()を利用する方法
java.util.Random()はjava.util.Random()nextInt()のように表記する事で乱数を生成します。

また、nextInt()に引数を設定する事が可能で、その場合は0以上、(引数-1)未満

Java初心者のためのPython×競技プログラミング入門Day7

# Java初心者のためのPython×競技プログラミング入門Day7
本記事は、Javaの基本を学び終えた方に向けて、Pythonを使って競技プログラミングを始めてもらおうという趣旨の記事です。1週間でAtCorderのB問題(現時点で最新のABC338)(誘導あり)を解けるようにする、ということを目標として書いていきます。
言い訳:まだ業務未経験であり、歴も長くないため、間違っているところや勘違いについてはご容赦下さい。
初投稿のため、至らぬ点はぜひご指摘いただきたいです。
前回:[Java初心者のためのPython×競技プログラミング入門Day6](https://qiita.com/maru3460/items/00b2796580b6fc1b0e6e)

### 前提条件
– Javaの基本がわかる
– googleのアカウントを持っている
– AtCorderのアカウントを持っている。持っていない方は[こちら](https://info.atcoder.jp/overview/contest/intro)を参考にしてください

Python実行用ファイル:[J

Javaの数値型
データ型 ビット数
byte 8ビット
short 16ビット
int 32ビット
long 64ビット