Javaで「引数を使ってメソッドに値を渡す」の動作を確認してみた
# 概要
Javaで「引数を使ってメソッドに値を渡す」の動作を確認してみました。
以下のページを参考にしました。
https://www.javadrive.jp/start/method/index3.html
# 実装
以下のファイルを作成しました。
“`JSample3_1.java
class JSample3_1{
public static void main(String args[]){
int num1, num2;
num1 = 10;
num2 = 8;
keisan(num1, num2);
num1 = 23;
keisan(num1, 7);
keisan(15, 22);
}
private static void keisan(int n1, int n2){
System.out.println(“num1 = ” + n1 + “,num2 = ” + n2);
System.out.println(“num1 + num2 = ” + (n1 +
# はじめに
Azureでシステム開発を請け負うことになりそうなのだが、
とっても高価な運用管理システムを使うのはコスト的に見合わないプロジェクトって、監視とかどうするんだっけな?と思って調べ始めたのがきっかけで、「Applicaiton Insights」というものにたどり着きました。
当初は、Spring BootアプリのLoggerからデータを飛ばせたらなと思いつつ、調査を始めたのですが、
この「Applicaiton Insights」を使えば、各種アプリのメトリクスも取得できそうなので、合わせてやってみようと思います。
最終的には、よくあるアプリの監視で、一定レベル以上のログが出力されたら、メールを生成して何か起こっているよと伝えることを目標とします。脱運用管理システムです。
# Azure Monitor
統合モニタリングサービスです。このサービスを使用することで、Azureリソースのパフォーマンス、可用性、セキュリティをリアルタイムで監視することができます。
# Application Insights
Azure上で動作するアプリの、パフォーマンスモニタリングを
Java
Azure
ApplicationInsights
AzureMonitor
こんにちは。
この記事では、私が勉強した内容を実際に業務にどのように活かしたのかについて説明していきます。
Javaを勉強し、業務で使用していても**equals**と**hashCode**をoverrideして使う場面は、それほど多くはないと思います。
私も、**equals**と**hashCode**について勉強したことはありますが、実際に使ったことは全くありませんでした。
しかし、今回のプロジェクトで使う機会があって、その経験を皆さんに共有したいと思います。
# 問題状況(案件)
病院で診療情報を保存する状況があると想定します。
医師は患者の診療を終え、その診療情報を保存するたびに、以下のような形式でDBに保存されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678234/fde42ef5-e09a-db64-e2fa-e0f063895380.png)
各カラムは
– 患者ID:患者に付与されるID pk
– 作成日:診療記録作成日 pk
– 項目:診療に関す
Java
データ構造
equals
hashCode()
https://qiita.com/gengen0719/items/65cab20943bf4cce61ca
こちらの記事の続きです。
SpringDIを使って生成されるBeanの取り扱いで注意するべきことを書きました。
# Beanは通常シングルトンである
例えば以下のような実装をします。
“`Java
@Controller
public class DemoController {
private final CaluculationService incrementalService;
public DemoController(IncrementalService incrementalService) {
this.incrementalService = incrementalService;
}
@GetMapping(“incremental”)
public String calc(Model model) {
model.addAttribute(“result”, incr
Java
spring
DependencyInjection
初心者向け
SpringBoot
# 概要
Javaで「メソッドの定義」の動作を確認してみました。
以下のページを参考にしました。
https://www.javadrive.jp/start/method/index2.html
# 実装
以下のファイルを作成しました。
“`JSample2_1.java
class JSample2_1{
public static void main(String args[]){
hello();
bye();
hellobye();
}
private static void hello(){
System.out.println(“こんにちは。”);
}
private static void bye(){
System.out.println(“さようなら。”);
}
private static void hellobye(){
hello();
bye();
}
}
“`
以下のコマンドを実行しました。
“`
$ javac JSample2_1.java
## 前提
最初の頃に躓いたので、記録も兼ねて記載します。
Scannerで入力を受け付けたあと、仕様外の入力(例:数字の入力を求めているのに文字を入力)などが起こった場合、エラー時の処理が無限に繰り返されてしまう対処法です。
なお、ターミナルやコマンドプロンプトが無限ループを起こしてしまったときは、
Windows:ctrl + C
Mac:Control + C
で終了できますので、「初めて知った」という方は是非ご参考ください^^
## コンテンツ
下記のように年齢の入力をユーザーに求め、入力された数字に応じて
「成人です」
「未成年です」
と表示されるjavaのコードを書きます。
“`
import java.util.Scanner;
public class ScannerBug {
public static void main(String[] args) {
// 入力受取のためのインスタンス生成
Scanner scanner = new Scanner(System.in);
while (true) {
int a
JUnitは、Javaで最も一般的に使用されるテストフレームワークです。
JUnitでよく使われる基本的な注釈とアサーションメソッドを一覧にしてまとめました。
使用方法など詳しくは以下のドキュメントをご覧ください。
[JUnit 5 ユーザーガイド](https://junit.org/junit5/docs/current/user-guide/)
# 注釈
| 注釈 | 説明 |
|:-|:-|
| @Test | テストメソッドであることを示します。 |
| @ParameterizedTest | 異なる引数でテストを複数回実行できます。 |
| @BeforeEach | テストメソッドの実行前に毎回実行されます。 |
| @AfterEach | テストメソッドの実行後に毎回実行されます。 |
| @BeforeAll | テストメソッドの実行前に一度だけ実行されます。 |
| @AfterAll | テストメソッドの実行後に一度だけ実行されます。 |
| @DisplayName | テストクラスやテストメソッドにカスタムの表示名を指定します。 |
| @Nested
### JVMの実行方式
JVMはインタープリター方式でバイトコードを実行し、プログラムを迅速に開始し、JITコンパイラを通じて性能を最適化します。
### インタープリター方式
– バイトコードを1行ずつ機械語に変換して実行します。デバッグが速いですが、実行速度はコンパイル方式より遅いです。
### コンパイラ方式
– 実行速度が速いですが、コンパイル過程で時間がかかります。
### 文字列処理
– **String**: 不変オブジェクトで、文字列を操作するたびに新しいStringオブジェクトが生成されます。スレッドセーフです。
– **StringBuffer**: 可変オブジェクトで、文字列操作時に既存のオブジェクトの値を変更します。スレッドセーフですが、同期化による性能低下がある場合があります。
– **StringBuilder**: 可変オブジェクトで、文字列操作時に既存のオブジェクトの値を変更しますが、スレッドセーフではありません。
### スレッドセーフ
– マルチスレッド環境でスレッドが同時にそのコードやデータにアクセスしても、実行結果が同じになります。ミュ
# 背景・目的
過去に、Spring Bootについて下記の記事にまとめました。今回は、Criteria APIによるデータベースアクセスを試します。
– [Spring BootでDAOからデータベースにアクセスしてみた-その1(DAOとアノテーション)](https://qiita.com/zumax/items/4dd856cd108d23a15188)
– [Spring Bootでバリデーションを試してみた](https://qiita.com/zumax/items/f09bacf18f3bb96d1331)
– [Spring Bootでデータを保存する-その2](https://qiita.com/zumax/items/06d0465218478840a949)
– [Spring Bootでデータを保存する-その1](https://qiita.com/zumax/items/2e387254c736659bf20c)
– [Spring Bootでデータベースへのアクセスを試してみた](https://qiita.com/zumax/items/7487b86f
Java
初心者
Database
h2
SpringBoot
前章: [プライベートサブネットにEC2を置いたWebアプリケーションを作成する①](https://qiita.com/RHIC-0819/items/25bff36c3aacf92af28e)
## アプリケーションを立ち上げる
前回まででウェブアプリケーションの土台を作成したので、ようやく実際にアプリケーション構築に取り組みます。
本章は以下の手順で進めていきます
1. RDSを作成してEC2から接続する
1. EC2にアプリケーションを構築し、アプリケーションを立ち上げる
1. ALBを作成して、ローカルのブラウザから接続する
## 完成図
![alb-rds-ec2-完成図.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3821799/d99f4a70-a09e-d1fc-b9df-91e9c347a87b.png)
## RDSの作成
マネジメントコンソールからRDSを開き、データベースの作成を選択します。
作成のポイントは4点です
1. **エンジンタイプの選択
前章: [プライベートサブネットにEC2を置いたWebアプリケーションを作成する②](https://qiita.com/RHIC-0819/items/f3755e02e16694792c4e)
続いては、セキュリティを高める設定をしていきます。
## 手順
以下の手順で一つずつセキュリティを高めていこうと思います。
1. Route53でドメインを登録する
1. ACMで証明書を発行してHTTPS通信を有効化する
1. WAFを有効化する
1. Secrets Managerを利用して、認証情報のハードコーディングをやめる
1. [おまけ1] Cloud Frontのキャッシュを有効化してレスポンスを早くする
1. [おまけ2] Webサーバーの冗長化
## Route53でドメインを登録する
マネジメントコンソールのRoute53を開いたら、「ドメインを登録」を左のメニューバーから選択します。
取得したいドメイン名を入力しチェックアウトに進み、必要な連絡先情報を入力したら作成してください。
リクエストしたドメイン名でパブリックホストゾーンが自動作成されたら、レコード
Java
MySQL
AWS
Security
SpringBoot
前章: [プライベートサブネットにEC2を置いたWebアプリケーションを作成する ーイントロー](https://qiita.com/RHIC-0819/items/76f14f82c6d6c7aadb68)
## プライベートサブネットにEC2インスタンスを配置してSession Managerで接続する
今回作成するアプリケーションは、組織内部のみでの利用を想定しており、外部からのアクセスをできる限り許可しないような形でEC2インスタンスを配置していきます。
ここで作成するゴールはEC2にSession Managerからアクセスするところまでがゴールとなっています。
![aws-qiita-ec2.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3821799/94d4dd69-ddb1-8f39-6c46-76901e79aab8.png)
## VPCの用意
まずマネジメントコンソールにログインし、VPCの作成を行います。
![image.png](https://q
Java
MySQL
AWS
Security
SpringBoot
初めての投稿なので、お手柔らかにお願いします。
執筆現在では新卒1年目で、研修においてWebアプリケーション開発を課されたので、その際に作成したインフラ構成図を紹介していこうと思います。
まず、本稿で紹介するAWSの最終的な構成図は以下のようになっています。
![チームJ開発ーAWS最終構成図.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3821799/9bf1902a-ce65-4389-f3e0-f1d1d35bcf01.png)
ポイントとしては題名にある通り、プライベートサブネットにアプリケーションサーバーを配置することでEC2への直接のアクセスをブロックし、セキュアなアプリケーションを構築します。
アプリケーションサーバーへのインターネットからのアクセスをブロックする大きな理由は、EC2が持っているインスタンスプロファイルを使って、不正な操作をされる恐れがあるからです。不正なリソース作成によって予想外なコストが発生したり、本番で動いているリソースの勝手な削除を予防し
Java
MySQL
AWS
Security
SpringBoot
# 背景・目的
過去に、Spring Bootについて下記の記事にまとめました。今回は、EntityManagerによるデータベースアクセスを試します。
– [Spring Bootでバリデーションを試してみた](https://qiita.com/zumax/items/f09bacf18f3bb96d1331)
– [Spring Bootでデータを保存する-その2](https://qiita.com/zumax/items/06d0465218478840a949)
– [Spring Bootでデータを保存する-その1](https://qiita.com/zumax/items/2e387254c736659bf20c)
– [Spring Bootでデータベースへのアクセスを試してみた](https://qiita.com/zumax/items/7487b86f56ea12c31d44)
– [Sprint Bootの環境を構築したときのメモ](https://qiita.com/zumax/items/8effa97f338dd0224b22)
# まとめ
下記
Java
初心者
Validation
SpringBoot
## コア機能
– IOC : Inversion on Control Container
– AOP : Aspect Oriented Programming
– DAF : Data Access Framework
– MVC : Spring MVC Framework
## Spring Beanとは?
– OBJECT : An object that is managed by the Spring Framework in a Java application.
– FEATURES : Aims to simplify the complex enterprise Java application development.
– CONFUGURATION : Spring Beans can be configured using XML, Java annotations, or Java code.
## 参考サイト
[The ULTIMATE Spring Boot course | 8 HOURS Course](https://www.yo
Spring Bootでは、アノテーションを使用して簡潔にWebアプリケーションを構築することができます。ここでは、よく使用されるアノテーションについて説明します。
# 1. @Controller
@Controller は、Spring MVCにおけるWebコントローラーを示すためのアノテーションです。このアノテーションがクラスに付与されると、そのクラスはHTTPリクエストを処理するためのコントローラーとして認識されます。
“`java
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping(“/example”)
public class ExampleController {
@GetMapping
public
Java
annotation
SpringBoot
簡潔
JK447
# 背景・目的
前回、下記でデータの登録・更新・削除などを試しました。今回はバリデーションを試してみます
– [Spring Bootでデータを保存する-その2](https://qiita.com/zumax/items/06d0465218478840a949)
– [Spring Bootでデータを保存する-その1](https://qiita.com/zumax/items/2e387254c736659bf20c)
# まとめ
下記に特徴をまとめます
|特徴|説明|
|:–|:–|
|バリデーションのパッケージ|spring-boot-starter-validation|
|パッケージは二種類ある|・jakarta.validation ・jakarta.validation.constraints|
|標準バリデーション|以降のものがある|
|入力されているかのバリデーション|“`@Null“` `@NotNull` `@NotBlank` `@NotEmpty`
|数値の範囲のバリデーション|`@Min` `@Max`
Java
初心者
Validation
SpringBoot
# 概要
Javaで「メソッドの使い方」を動作を確認してみました。
以下のページを参考にしました。
https://www.javadrive.jp/start/method/index1.html
# 実装
以下のファイルを作成しました。
“`JSample1_1.java
class JSample1_1{
public static void main(String args[]){
int eigo = 78;
int suugaku = 90;
int kokugo = 68;
check(“英語”, eigo);
check(“数学”, suugaku);
check(“国語”, kokugo);
}
private static void check(String kyoka, int seiseki){
System.out.print(kyoka + “の試験結果は”);
if (seiseki > 80){
System.out.println(“合格です”);