- 1. argsの読み方について
- 2. ランダム処理が確率通りに実行されているかテストしたい!
- 3. Java Sliverに合格しました
- 4. [Google Cloud Speech-to-Text API(V2)] Javaで認識精度を向上させるカスタムクラスを作成・更新・削除する
- 5. JavaScriptとJava間違えないで。ダメ。ゼッタイ。
- 6. (java silver) あれこれ
- 7. (java silver) モジュール
- 8. (java silver) 例外
- 9. (java silver) API(LocalDateTime)
- 10. (java silver) 繰り返し処理(拡張for文・forEachメソッド)
- 11. (java silver) ComparatorとCompareble
- 12. (java silver) 関数型インターフェース
- 13. (java silver) インターフェース
- 14. (java silver) Map
- 15. (java silver) Collection
- 16. (java silver) equals
- 17. (java silver) スーパークラスとサブクラス
- 18. (java silver) コンストラクタ
- 19. (java silver)static
- 20. 確率過程に従ったリクエスト機能の実装
argsの読み方について
引数【argument】argsは、アーギュメントと読む。
引数(argument)とは、プログラム中で関数やメソッド、サブルーチンなどを呼び出すときに渡す値のこと。渡された側は、その値に従って処理を行い、結果を返す。オペレーティングシステム(OS)の操作などで利用者がコマンドを実行する際に指定するパラメータ(コマンドライン引数)などを指すことがある。
以上
ランダム処理が確率通りに実行されているかテストしたい!
こんにちは、サーバエンジニアの池脇と申します。
みなさんはランダムに実行される処理を実装した際に、その処理が設定した確率通りに振る舞っているかテストしたいと思ったことはないでしょうか?
今回は適合度検定を利用して、そのテストを行う方法をご紹介したいと思います。## 適合度検定
適合度検定とは、観察されたデータが特定の理論的な分布(期待値)にどの程度適合しているかを検定する方法です。主に以下のような状況で使用されます。
– ある標本が特定の分布に従っているか確認したい場合
– 観察データが理論的な期待値に一致しているか評価したい場合例えば、サイコロを十分な回数[^1]振って各面が出た回数を数え、それが公平なサイコロ(各面が1/6の確率で出現する)に従っているかどうかを確認する場合に適合度検定を使用します。
適合度検定は期待値がわかっている場合に利用できます。つまり、出力される値の出現率がわかっている場合にこれを利用してテストが可能です。### カイ二乗検定
適合度検定の主要な手法の1つがカイ二乗検定です。カイ二乗検定は、カテゴリーデータに対して期待された頻度と観察された頻度
Java Sliverに合格しました
# 初めに
この記事は初心者視点での説明になります。正確性に欠ける可能性がございますが、ご了承ください。明らな誤りがありましたら、ご指摘くださると幸いです。## きっかけ
Javaを使用した開発案件に入りたいと思い、転職活動の準備を兼ねて資格取得に向けた学習を始めました。あとかっちりした言語を学びたいと思いJavaを少し齧ったところ、オブジェクト指向楽しい!となったので。## 学習期間
4月末から学習を始め、5月13日に受験しました。
期間としては2週間と少し、勉強時間は100時間弱だと思います。かなり詰め込み学習になってしまったので、余裕がある方は2ヶ月くらいを想定するといいと思います。## 使用した教材
まずは基礎固めのためスッキリわかるJava入門を1周しました。書籍で紹介されているWeb上のエディタ環境は動作が重めなので、余裕があれば自分のPC上に環境構築することをお勧めします。自分は他の言語の学習経験があったのでサクサク進んだのですが、全くのプログラミング初心者ですと難しい部分も多いと思います。深く考えず、5割くらいの理解で進めても大丈夫です。
https:
[Google Cloud Speech-to-Text API(V2)] Javaで認識精度を向上させるカスタムクラスを作成・更新・削除する
Cloud Speech-to-Text API V2(Java)を使用して、
認識精度を向上させるカスタムクラスを作成・更新・削除する方法についてご紹介します。**カスタムクラス(CustomClass)とは**
カスタムクラス(CustomClass)はモデル適応機能を実現させるためのリソースの1つです。モデル適応機能を使用すると提案される可能性がある他の候補よりも、
Speech-to-Textが特定の単語やフレーズをより高い頻度で認識するように設定できます。カスタムクラス(CustomClass)リソースでは下記が設定できます。
|できること|概要|
|—|—|
|固有名称(店名や商品名など)の認識|カスタムクラスを使用すると、音声に出現した際に固有名称を正しく認識するように認識モデルにバイアスをかけることができます。|:::note info
APIを利用する環境の準備から始める場合や、コードを実行する際は、
[⧉[Google Cloud Speech-to-Text API(V2)] JavaでSpeech-to-Text APIを使ってみる](h
JavaScriptとJava間違えないで。ダメ。ゼッタイ。
どうもAtsu1209です。
突然ですが…
### 「JavaScriptとJavaは同じです。」
これを見て舌打ちをした方もいるんではないでしょうか。
でもよく間違えられます。僕も台パンしました。
そこでめちゃくちゃ短くわかりやすく解説します。
# HelloWorld
ではまずは親の顔より見た`HelloWorld`を出力しましょう。“`javascript:JavaScript
console.log(“HelloWorld”);
“`
簡単です。
続いてJava
“`java:Java
public class Main {
public static void main(String[] args) {System.out.println(“Hello World”);
}
}
“`
“`console:コンパイル
javac Main.java
“`
“`console:実行
java Main
“`
:::note alert
Javaほとんどわからないので間違ってるかも
:::こ
(java silver) あれこれ
## JavaSilverでメモしたところ備忘録として残しておこうと思います。
# エントリーポイント
* エントリーポイントの記述ミスはJavaのメソッドがっていればコンパイルが通るが、mainメソッドが認識されず例外が発生する
### エントリーポイント条件
1. public
1. static
1. void
1. string[]もしくはString…
1. mainというメソッド名(小文字)
1. 変数名(引数)を付ける※argsでなくてもよい
::::note
finalやthrowsをつけても実行される
::::# カプセル化
* アクセス修飾子を適切に設定することで「フィールド」や「メソッド」へ外部のプログラムからのアクセスを制限します。クラス米の独立性が高まり想定しない操作をされないように制御することが可能
“`java
public class Car {
// フィールド
private String name; // 名前
private int Speed; // 速度
// コンストラクタ
public C
(java silver) モジュール
# moduleとは
* パッケージを束ねるためのもので配下パッケージの権限を細かく設定できる
* モジュールの実行
“`java
java –module-path(-p) モジュールのルートディレクトリ –module(-m) モジュール名/モジュールのクラス
“`
* ほかのモジュールを利用する際はrequires宣言
“`java
module A {
requires java.net.http;
}
“`
* modul1が利用しているmodul2が利用しているmodul3をmodul1が利用したいときにはmodul1でrequiresする必要はなくmodul2でrequires transitiveを使用しmodul3を宣言する
“`java
module modul1 {
requires mod2;
}
———————————————–
module mod2 {
requires transitive module3;
}
“`* モジュールは以下のパッケージはデフォルトで
(java silver) 例外
## JavaSilverでメモしたところ備忘録として残しておこうと思います。
# 例外とは
* 実行中のプログラムを停止して異常終了すること、呼び出し先のメソッドでエラーが起こった時に使う## throw文
* 例外を投げる(呼び出し先のメソッドに入る)## try-catch-finally
* tryとは例外のある可能性の処理に入る(呼び出し元のメソッドでつくる)、例外が発生時にしてほしくない処理も書く
* catch(Exeption e)とは例外に対応する処理(呼び出し元のメソッドで作る)
* finally(必ず動作)とは発生した例外が()内の例外型だったときにのみcatchブロックが実行される、逆に()内の型でなければtryブロックの中の処理が呼ばれる“`java
try{
例外が発生しうる処理(throw文とか);
}catch(例外のクラス名(例外型) e){
例外発生時の処理(例外型が一致したときのみ);
}finally{
例外発生の有無にかかわらず必ず動作する記述;
}
“`# Errorクラス
* 重
(java silver) API(LocalDateTime)
## JavaSilverでメモしたところ備忘録として残しておこうと思います。
# LocalDataTimeクラス
* immutable(不変)なオブジェクト(callenderクラスはmmutable)、下記の処理で分かる通りLocalDateTimeクラスでは2021年に変更後も変わらない“`java
import java.time.LocalDataTime;
import java.util.calender;public class Test {
public static void main(String[] args){
LocalDateTime day = LocalDateTime.of(2020,1,1,0,0,0,);
System.out.println(day);//2020-01-01T00:00
day.withYear(2021);
System.out.println(day);//2020-01-01T00:00}
}“`
(java silver) 繰り返し処理(拡張for文・forEachメソッド)
## JavaSilverでメモしたところ備忘録として残しておこうと思います。
# 拡張for文
* 拡張for文は`配列`に対しての処理* ループ処理中にremoveメソッドの呼び出しを行うと実行時エラーが発生する。ループする際にhasNextメソッドで要素数のチェックとエラー判定を行っているためループ中に削除して次に要素がなければエラーにならずループを抜ける
# forEachメソッド
* forEachは`コレクション(List,Map)`に対してループ処理を行う
“`java
forEach(引数 -> 繰り返し処理)
“`
* 拡張for文との違いは配列をそのままで扱うことができず、Listに変換する処理が必要
“`java
String[] exArray = {“a”,”b”,”c”,”d”}Array.stream(exArray).forEach(s -> System.out.println(s));
::::note
Array.stream(配列名)は配列からStreamを作成するメソッドです
::::
(java silver) ComparatorとCompareble
## JavaSilverでメモしたところ備忘録として残しておこうと思います。
# Comparator
* 自分で定義したクラスオブジェクトの特定や特定の値をもとにソートしたいときや細かい条件等でソートしたい場合に使用する
* Comparatorインターフェースを実装したクラスを定義しcomoaraメソッドで定義
# Comparable
* オブジェクトのクラスにComparableインターフェースを実装し、ComparaToメソッドで定義“`java
public class Shose {// name
private String name;// 値段
private int price;// 発売日
private LocalDate dateOfIssue;}
“`## Comparatorによる定義
* java.utilのComparatorを実装したクラスを定義しcomparaメソッドをオーバーライドし比較ロジックを定義
* Comparatorは比較ロジックに応じていくつも作れる
“`
(java silver) 関数型インターフェース
## JavaSilverでメモしたところ備忘録として残しておこうと思います。
* 関数型インターフェース学びたては
ってなんだよと思いながら勉強してました。ラムダ式を少し学んだあとに読み返すと理解が深まりました! # 関数型インターフェース
* 定義されている抽象メソッドが一つだけ、staticメソッドやdefaultメソッドが定義されていても問題なし## Supplierインターフェース
* `getメソッド`が定義されている、引数なしで戻り値にジェネリクスで指定したデータ型の値を返すメソッド“`java
Supplier
Sup = () -> “Hello!!”;
//getメソッドのオーバーライドSystem.out.println(sup.get());
//getメソッドの呼び出し
//Hello!!と出力される“`
## Consummerインターフェース(消費者)
* `acceptメソッド`が定義されている、引数にジェネリクスで指定したデータ型の値をとり戻り値なし“`java
Consummer
(java silver) インターフェース
## JavaSilverでメモしたところ備忘録として残しておこうと思います。
# インターフェースにおけるdefaultメソッド
“`java
default 戻り値の型 メソッド名(引数の型 引数){処理内容}
“`
* メソッドのアクセス修飾子は暗黙的にpublic# インターフェースにおけるstaticメソッド
“`java
static 戻り値の型 メソッド名 (引数の型 引数)
“`
* オーバーライドはできず呼び出し方も「インターフェース名.メソッド名」
* privateのアクセス修飾子をつけることができる
### インターフェースでのフィールドの宣言
* public,static,finalが自動的に追加される
::::note
初期化しないとコンパイルエラー
:::
(java silver) Map
## JavaSilverでメモしたところ備忘録として残しておこうと思います。
# Mapについて
* Mapはkeyとvalueをセットにしたもの
* インデックスの代わりに任意の変数を要素の値のペアにできるkeyは重複なしである必要があるがvalueは同じものが複数あっても大丈夫
* HashMapは格納順が管理されないが、TreeSetは順番がキーになっている
* HashMapはkeyとvalueにnullを使用することが可能だがTreeMapは使用できない### 値の取得
* 値の取得にはMapでkeyを指定しgetメソッドを使用“`java
(map.get(“key1”));
“`
* キーをすべて取得するにはkeySetメソッドを使用し、拡張for分を使い取り出せる“`java
for(String key = map.keySet()){
System.out.println(key);
}“`
* Mapの値をすべて取得するにはvaluesメソッドを使用
“`java
for(String val = map.value
(java silver) Collection
## JavaSilverでメモしたところ備忘録として残しておこうと思います。
# Collectionインターフェースとは
* コレクション・インターフェースはSetやListのようなサブインターフェースの実装を供給している
`Mapもコレクションに似ているがコレクションではない`
`コレクションフレームワークには入っている`* コレクションフレームワークとは多数のデータをまとめて管理および処理するために用意されたもので、様々なタイプのインタフェースとクラスで構成されjava.util.Collectionとjava.util.Mapの2つのグループに分けることができます
# Collection・インターフェースのメソッド
| メソッド名 | 概要|
|:–|:–|
|add(E e) |要素を追加する|
|remove(Object o)|指定された要素を削除する|
|contains(Object o)|指定された要素がcollectionに含まれているかどうか返す|
|isEmpty()|コレクションがからかどうか返す`空ならtrue`|
(java silver) equals
## JavaSilverでメモしたところ備忘録として残しておこうと思います。
* 勉強したては”equals”と”==”がごっちゃになってしまい分からなくなってしまいましたがstringクラスにおけるequalsはオーバラードされているということが分かってから理解が深まりました!
# Javaの同一性・同値性
* インスタンスは異なるが同じ値を持っている`同値性`“`java
String str1 = new String(“ABC”);
String str2 = new String(“ABC”);System.out.println(str1 == str2);
//falseと出力される
System.out.println(str.equals(str2));
//trueと出力される
“`* 複数の変数が同じインスタンスを参照していることを`同一性`
“`java
String str1 = “ABC”;
String str2 = str1;
String str3 = new String(“ABC”);
String str4 = “
(java silver) スーパークラスとサブクラス
## JavaSilverでメモしたところ備忘録として残しておこうと思います。
# スーパークラスとサブクラス
* サブクラスは一つのスーパークラスしか持たない
* すべてのクラスはObjectクラスのサブクラスである
* finalクラスはサブクラスを持てない
* サブクラスはスーパークラスのフィールドとメソッドを受け継ぐ
:::note info
コンストラクタは継承されない
privateのメソッドをサブクラスがオーバーライドしていた場合はスーパークラスのメソッドとサブクラスでオーバライドしたメソッドは別のメソッドとして処理される[参考文献](https://teratail.com/questions/11415)
:::
* finalなメソッドはオーバーライドできない
* サブクラスのインスタンスはスーパークラスのインスタンスとみなすことができる
“`javaclass Super{
int val = 4 ;
}
class Subclass extends Super{
int val = 8;public static void mai
(java silver) コンストラクタ
## JavaSilverでメモしたところ備忘録として残しておこうと思います。
# コンストラクタについて
#### コンストラクタの決まり
* コンストラクタはメソッド名とクラス名を同じにする
* 戻り値は記述しない記述するとメソッドとして処理される(void,intなど)
* コンストラクタはnew演算子で呼び出す## デフォルトコンストラクタ
* コンストラクタを一つも定義していない場合に自動で作成
“`java
クラス名(){
}
“`
* コンストラクタは実行する前にまずスーパークラス(親クラス)を呼び出すようになっている
“`java
クラス名(){
super();// 自動で追加
}
“`
* 明示的にコンストラクタヲ記述した場合には作成されない
* 引数なしのコンストラクタを定義せず引数ありのコンストラクタだけ記述した際にもデフォルトコンストラクタは作成されないので引数なしでそのクラスオブジェクトを作成することができない
“`java
class a{
public static void main(String args[]){
Sampl
(java silver)static
## JavaSilverでメモしたところ備忘録として残しておこうと思います。
# static修飾子
* クラスをインスタンス化せずに直接メソッドや変数にアクセスするためstaticメソッドを付けたメソッドを”静的メソッド”、変数を”静的変数”と呼ぶ# staticクラス
* 内部クラス(インナークラス)で使用する。インナークラスとはクラス内でクラスを定義すると内部クラスからは外部にアクセスできる、内部クラスにstatic修飾子をつけると外部クラスのstaticなメンバのみにアクセスできるため別のクラスと同じように見える# staticメソッド(クラスメソッド)
* 通常のメソッドはクラスをインスタンス化してから使用するがstatic修飾子を付与したクラスメソッドはインスタンス化なしに直接呼び出して使用できる
“`java
//定義
public class Smple {
public static void method() {
int a = 1;
}
“`“`java
//呼び出し//(クラス名.メソッド名)
Sample.meth
確率過程に従ったリクエスト機能の実装
# 確立過程のプログラミング
## 背景
FaaSの研究目的で開発中のDistributed FaaSRunnerというソフトウェアに、特定のスループットに従ったアクセスをする機能を実装しようとしていた。このために、最初に考えたアプローチは、リクエストの直後に**指定した期間プログラムを待機させる**方法だった。
## 直面した課題
リクエストパターンは、以下の2つを実装しようと考えていた。
– 一定間隔でのリクエスト
– Poisson分布に従ったリクエスト理由はわからないが、これまでの有名なLoad Testing Tools(JMeterなど)にはPoisson分布に従ったリクエスト機能は付いておらず、Poisson分布に関してはnoveltyの観点で実装が不可欠だった。
### 一定間隔でのリクエスト
一定間隔でのリクエスト、つまり固定インターバル(fixed interval)モードについては、リクエスト→固定長時間(i.e. 100ms)待機→リクエストを繰り返すことで実現できるため、**待機時間を直接指定する**ことで指定したスループットを実現することができた。
##