- 1. Java
- 2. Java基本用語の備忘録【随時更新】
- 3. Java メソッド 引数
- 4. 【コツコツ学習】UtilityクラスとStaticメソッドについて
- 5. Azure Container Apps に war ファイルを直接デプロイする
- 6. [Google Calendar API(V3)] Javaでカレンダーのイベント変更を監視する
- 7. メソッドの定義
- 8. [Google Calendar API(V3)] GoogleカレンダーとEventクラス
- 9. Java silver向け 例題 継承 コンストラクタ
- 10. Cucumber・JUnit・Seleniumを駆使してブラウザテストを自動化する
- 11. 【コツコツ学習】StringBuilderとStringBufferの比較(スレッドセーフも)
- 12. # Doma2を使ってみる(その4)
- 13. java メソッド 例え
- 14. [Google Calendar API(V3)] Javaでカレンダーのイベントを別のカレンダーにコピーする
- 15. Java 多次元の配列
- 16. 【Java】例外処理
- 17. Java 拡張for文
- 18. java 配列
- 19. 【Java】インスタンス・コンストラクタ
- 20. Webアプリ脆弱性対応の記録
Java
## 戻り値
メソッドの実行結果として返される値のこと##### 戻り値をもつメソッドの定義
“`
public static 戻り値の型 メソッド名(引数リスト) {
メソッドの処理
return 戻り値;
}
“`##### 戻り値を利用したメソッドの呼び出し
“`
型 変数名 = メソッド名(引数リスト);
“`
“`
例)
public class Main {
public static void main(String[] args) {
// 戻り値を利用したメソッドの呼び出し
int result = add(5, 3);
System.out.println(“合計: ” + result);
}// メソッドの定義
public static int add(int num1, int num2) {
// メソッドの処理
int sum = num1 + num2;// 戻り値の返却
return sum;
}
}“`
##### return文
return文は値を戻す
Java基本用語の備忘録【随時更新】
# 初めに
「プロになるJava」という書籍でJavaの勉強を始めたが、初心者なもので用語をよく忘れてしまう。そこで忘れそうな知識を整理しようと思った。
# 整理
クラス
基本単位の1つ。データのルールを決める仕組み。メソッド
処理をひとまとめにしたもの。Javaはメソッドを呼び出すことで処理が進む。
“`java:メソッドの呼び出し
値.メソッド名()
値.メソッド名(引数)
“`オーバーロード
メソッド名が同じでも異なる引数を受け取るメソッドを用意すること。そのため引数の区別も重要。シグネチャ
「メソッド名・受け取る引数・戻り値」の種類をあわせたもの。基本型・プリミティブ型
メソッドを呼び出せない。
| 型 | 値の種類 |
|:-:|:-:|
|`int`|整数|
|double|実数|
|boolean|論理値|
|char|文字|参照型
クラスを含める基本型以外の型。メソッドを呼び出せる。API
クラス単位で機能をまとめて、他のプログラムから呼
Java メソッド 引数
“`
public class Main {
// メソッドA
public static void methodA() {
System.out.println(“メソッドA”);
// メソッドAからメソッドBを呼び出す
methodB();
}
// メソッドB
public static void methodB() {
System.out.println(“メソッドB”);
}public static void main(String[] args) {
// mainメソッドからメソッドAを呼び出す
methodA();
}
}
“`
`main() → methodA() → methodB()`
の順番で実行される
mainメソッドより上に他のメソッドが定義されていても、プログラミングは必ずmainメソッドから動き始める。## 引数
メソッドを呼び出す際に渡す値
#### なぜ必要か
①データの受け渡し
メソッド引数を使用することで、メソッド内で処理するために必要なデータを渡すことができる。メソッ
【コツコツ学習】UtilityクラスとStaticメソッドについて
# Utilityクラスとは?
Utilityクラスは、共通の処理をstatic領域にまとめて、簡単に処理を呼び出すためのクラス
特徴としては以下の内容です
– staticメソッドとstatic変数
– インスタンス化できない
– 状態を持たない# Staticのメリットは何か?
### インスタンスを生成せずに呼び出せること
インスタンス生成にかかるオーバーヘッドがなくなるので、インスタンス生成に時間がかかるクラスに有効です
そのため、頻繁に呼び出されるユーティリティメソッドはよくstaticメソッドとして実装されます### 状態に依存しないことを保証できること
与えられた引数のみでメソッドの挙動が決まります(振る舞いが変わらない)
つまり副作用が発生しません# Staticを利用するか否かの判断軸
### インスタンス毎に持つ意味があるかどうか
インスタンスごとに持つ意味がなければstaticメソッド、あればインスタンスメソッドにすべき### オーバーライドされる予定がない
オーバーライドを前提としたメソッドは、インスタンスメソッドとして定義する必要が
Azure Container Apps に war ファイルを直接デプロイする
# Azure Container Apps に war ファイルを直接デプロイする
ちょっと前に、 war ファイルを直接 Azure Container Apps にデプロイできるような機能が追加された話をTwitterで見つけたので、備忘録代わりに試してみました。
MS Learn にも記事があるので、そちらも参考にしてください。
[Azure Container Apps 内の Tomcat に WAR ファイルをデプロイする | Microsoft Learn](https://learn.microsoft.com/ja-jp/azure/container-apps/java-deploy-war-file)
## 事前準備
以下で適当な Spring Boot のプロジェクトのひな形を作成し、
[Spring Initializr](https://start.spring.io/)
適当に Hello World を返すだけの エンドポイントを追加しておきます。
“`java
@RestController
public class HelloCo
[Google Calendar API(V3)] Javaでカレンダーのイベント変更を監視する
Google Calendar API V3(Java)を使用して、
Googleカレンダーのイベント変更を監視する方法
についてご紹介します。:::note info
APIを利用する環境の準備から始める場合や、コードを実行する際は、
[⧉[Google Calendar API(V3)] JavaでCalendar APIを使う](https://qiita.com/doran/items/c735c7b05c0a2ed4bfdb)
を参照ください。
:::|No||目次|
|—|—|—|
|1||[イベントの変更を監視](#1-イベントの変更を監視)|
||1|[スコープ](#11-スコープ)|
||2|[実行](#12-実行)|
||3|[レスポンスの内容](#13-レスポンスの内容)|
|2||[イベントの監視を停止](#2-イベントの監視を停止)|
|3||[変更通知を受信](#3-変更通知を受信)|## 1. イベントの変更を監視
Googleカレンダーのイベントの変更を監視します。### 1.1. スコープ
このAPIを実行するには、以下のい
メソッドの定義
### メソッドの定義
“`
public static void メゾット名() {
メゾットが呼び出された時の処理
}
“`### メソッドの呼び出し
“`
メソッド名()
“`“`
例)
public class Main {
public static void main(String[] args) {
System.out.pirntln(“メソッドを呼び出します”);
hello();
System.out.println(“メソッドの呼び出しが終わりました”);
}
public static void hello() {
System.out.println(“こんにちは”);
}
}
“`
` hello();` メソッドを呼び出し
`public static void hello() {
System.out.println(“こんにちは”);
}` helloメソッドの本体メソッドを利用するには必ず呼び出す必要がある!
[Google Calendar API(V3)] GoogleカレンダーとEventクラス
Googleフォームを生成したり、情報を取得する際に使用する
com.google.api.services.calendar.model.Eventクラス
と実際のGoogleカレンダーのUIを関連づけてみました。:::note info
APIを利用する環境の準備から始める場合や、コードを実行する際は、
[⧉[Google Calendar API(V3)] JavaでCalendar APIを使う](https://qiita.com/doran/items/c735c7b05c0a2ed4bfdb)
を参照ください。
:::|No||目次|
|—|—|—|
|1||[イベント全体](#1-イベント全体)|
|2||[予定](#2-予定)|
||1|[イベントの開始時間・終了時間](#21-イベントの開始時間終了時間)|
||2|[会議関連情報](#22-会議関連情報)|
||3|[認証済みユーザーの予定のリマインダーに関する情報](#23-認証済みユーザーの予定のリマインダーに関する情報)|
||4|[予定の主催者](#24-予定の主催者)|
||5|[予定
Java silver向け 例題 継承 コンストラクタ
次のコードはコンパイルエラーになりますか?
“`java
class sampleSuper {
sampleSuper(int a) {
}
}class sampleSub extends sampleSuper{
sampleSub(int i){
}
}
“`
答え↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
サブクラスのコンストラクタ
sampleSub(int i){}でコンパイルエラーになる。サブクラスのコンストラクタの引数の有無に関わらず、コンストラクタの1番目に暗黙的にsuper();が追加される。
“`java
class sampleSub extends sampleSuper{
sampleSub(int i){
//super();
}
}
“`スーパークラスのコンストラクターsampleSuper(){}が呼び出されるが、スーパークラスのコンストラクタに引数が合致するものがないためコンパイルエラーになる。
スーパークラスにコンスト
Cucumber・JUnit・Seleniumを駆使してブラウザテストを自動化する
# 概要
Cucumber・JUnit・Seleniumを組み合わせて、
ブラウザテストを自動化するための実装について紹介します。デモ用の[GitHubリポジトリ](https://github.com/KentoHummer/cucumber-junit-selenium-demo)も作成しているので、参考にどうぞ!
# ライブラリ
## Cucumber関連
言わずと知れたBDDフレームワークですね。
本記事では以下のライブラリを使用します。– [io.cucumber:cucumber-java](https://mvnrepository.com/artifact/io.cucumber/cucumber-java)
– CucumberをJavaで使用するために必要です
– [io.cucumber:cucumber-junit-platform-engine](https://mvnrepository.com/artifact/io.cucumber/cucumber-junit-platform-engine)
– Cucumbe
【コツコツ学習】StringBuilderとStringBufferの比較(スレッドセーフも)
# 背景
以下でStringBuilderとStringBufferについて以下を学びました
StringBuilderの方がパフォーマンスが良い
・StringBuilder:スレッドセーフじゃない
・StringBuffer:スレッドセーフhttps://qiita.com/gksdyd88/items/d3873600829337bebedd
# スレッドセーフとは何ぞや
複数のスレッドが同時に同一のデータやリソースにアクセスしたとき、予期せぬ問題やデータの不整合が発生しないように設計されたコードのことを指します。
「並行処理を行っても安全」という意味らしいです。並行処理というのは、コンピュータが複数の処理を同時に行うことです。
つまり複数のスレッドが同時に同じデータを読み書きすると、データが予期せず上書きされたり、一部のデータが更新されないまま使われたりする可能性があり、スレッドセーフなコードは、このような競合状態を防ぐために重要であるということなんだなー
https://qiita.com/yamazaki_25/items/19d5165e529c5ca2
# Doma2を使ってみる(その4)
# Doma2を使ってみる(その4)
## 検索2
### 単一レコードの検索
#### 期待結果が1つである場合DAO
“`kotlin
@Dao
@ConfigAutowireable
interface ProductDao {
@Select
fun selectByProductId(productId: ProductId): ProductEntity
}
“`main関数
“`kotlin
fun main(args: Array) {
val context: ApplicationContext = AnnotationConfigApplicationContext(
ShoppingApplication::class.java)
val productDao: ProductDao = context.getBean(ProductDao::class.java)val product: ProductEntity = productDao.selectByPr
java メソッド 例え
## メソッドとは
クラス内に定義された関数で特定のタスクを実行するためのコードブロック。
複数の文をまとめて、名前をつける。mainメゾットを分割し呼び出すので、スッキリ見やすいコードが書けるのでエラーなどおきてもわかりやすく、修正範囲も狭くて済む、繰り返し使用でき手間が省けるなんとなく、わかるようでわからない、、、:joy::joy:(笑)
## 例えてみた:raised_hands:
プログラミングが料理とするなら:ramen:、、、
メソッドがレシピ
配列が調味料や食材
要素が調味料名、食材名:fish_cake:
かな・・・・:laughing:合ってるのか?## メリット
①プログラムの見通しがよくなり、全体を把握しやすくなる
②機能単位に記述するため、修正範囲を限定できる
③同じ処理を1つのメゾットにまとまることで、作業効率が上がる
[Google Calendar API(V3)] Javaでカレンダーのイベントを別のカレンダーにコピーする
Gmail API v1(Java)を使用して、
Googleカレンダーのイベントを別のカレンダーにコピーする方法
についてご紹介します。:::note info
APIを利用する環境の準備から始める場合や、コードを実行する際は、
[⧉[Google Calendar API(V3)] JavaでCalendar APIを使う](https://qiita.com/doran/items/c735c7b05c0a2ed4bfdb)
を参照ください。
:::|No||目次|
|—|—|—|
|1||[イベントをコピー](#1-イベントをコピー)|
||1|[スコープ](#11-スコープ)|
||2|[実行](#12-実行)|
||3|[レスポンスの内容](#13-レスポンスの内容)|## 1. イベントをコピー
指定したカレンダーのイベントを別のカレンダーにコピーします。コピーしたいイベントのID(iCalUID)と、コピー先のカレンダーIDを指定します。
イベントの開始時間、終了時間の指定も必須です。### 1.1. スコープ
このAPIを実行するには、
Java 多次元の配列
多次元とは、1つ以上の次元をもつ配列
## 一次元配列と多次元配列の違い
一元配列
・要素は線形に並んでる。
・要素へアクセスは1つの添え字で行う。多次元配列
・一つ以上の次元を持つ配列。
・要素をを表形式やより複雑なデータ構造で表現できる
・要素へのアクセスは二次元配列場合は2つ、三次元以上の場合はそれ以上の添え字が必要になる
“`
例)
int[][] matrix = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
matrix[0][0]
matrix[1][2]
“`#### 二次元配列の例
“`
public class MainExample {
public static void main(String[] args) {
// 学生のテストの点数を表す二次元配列
int[][] scores = {
{80, 75, 90},
{85, 70, 85},
{90, 80, 95}
};
【Java】例外処理
# 0.はじめに
Javaを大学で学んでおります。
概念や特徴を以下の文類に分けてまとめました。##### 関連学習
[【Java】用語](https://qiita.com/AkihideKato/items/13ba72a0c61eabc540c3)
[【Java】メソッド・型](https://qiita.com/AkihideKato/items/753ad55b10b29f184b0f)
[【Java】オブジェクト指向](https://qiita.com/AkihideKato/items/3eb988a962774a409f52)
[【Java】インスタンス・コンストラクタ](https://qiita.com/AkihideKato/items/78fc47812f4eccad03cf)
[【Java】例外処理](https://qiita.com/AkihideKato/items/b0840610fc553c57cf1d)
[【Java】注意点・ルール](https://qiita.com/AkihideKato/items/63402744493932e9f
Java 拡張for文
## 拡張for文
ループ変数や添え字を書かなくスッキリしたコードが書ける。##### 拡張for文を使用
“`
public class MainExample {
public static void main(String[] args) {
int[] numbers = {1, 2, 3, 4, 5};System.out.println(“配列の全要素を出力します:”);
for (int number : numbers) {
System.out.println(number);
}// 各要素に2をかけて出力します
System.out.println(“\n各要素に2をかけて出力します:”);
for (int number : numbers) {
int doubled = number * 2;
System.out.println(doubled);
java 配列
## 配列の活用 3つ!
① ループによる全要素の活用
② ループによる集計
③ 添え字に対応した情報の利用for文で配列を回す(順に利用)
“`
for (int = 1; i < 配列変数名.length; i++) 配列変数名[i]を使った処理 } ``` ## ①ループによる全要素の活用 ``` public class MainExample { public static void main(String[] args) { int[] numbers = {10, 20, 30, 40, 50}; System.out.println("配列の全要素を出力します:"); for (int i = 0; i < numbers.length; i++) { System.out.println("要素 " + i + ": " + numbers[i]); } System.out.println("\n全要素を2倍にして出力します
【Java】インスタンス・コンストラクタ
# 0.はじめに
Javaを大学で学んでおります。
概念や特徴を以下の文類に分けてまとめました。##### 関連学習
[【Java】用語](https://qiita.com/AkihideKato/items/13ba72a0c61eabc540c3)
[【Java】メソッド・型](https://qiita.com/AkihideKato/items/753ad55b10b29f184b0f)
[【Java】オブジェクト指向](https://qiita.com/AkihideKato/items/3eb988a962774a409f52)
[【Java】インスタンス・コンストラクタ](https://qiita.com/AkihideKato/items/78fc47812f4eccad03cf)
[【Java】例外処理](https://qiita.com/AkihideKato/items/b0840610fc553c57cf1d)
[【Java】注意点・ルール](https://qiita.com/AkihideKato/items/63402744493932e9f
Webアプリ脆弱性対応の記録
担当しているプロジェクトの脆弱性診断報告書に従てセキュリティ強化対応を行いました。本記事はその代表的な箇所と対策を記録します。お客さまのシステムからエビデンスを取っていけないので、うち会社のパッケージからエビデンスをとって説明します。
## 1、SQLインジェクションの影響を受ける可能性がある
### 深刻度
緊急
### 現象
画面から送信情報に「’」を入力して送信してみるとシステムエラーは発生することがあります。### 説明
この指摘内容は結構古典的で絶対考慮すべきです。実はプロジェクトのEfwフレームワークのDB処理にすでにPreparedStatementを用いて対応しました。通常のDB処理ならSQLインジェクションの心配はありません。だが、脆弱性審査されるプロジェクトのDB処理は特別で、CData RestAPIサービスを利用しています。そのプログラムは以下のようです。
“`js
…
var email=params[“#email”];
var objData =new Record(
rest.get(
“https://myserver