- 1. Java用語集
- 2. JavaでHTTPリクエストのPOSTメソッドでAPI呼び出しサンプル
- 3. JavaでJSONをStringに変換
- 4. JavaでString型の日付や日時の比較をする
- 5. auカブコム証券のkabuステーションREST APIで自前のリピート注文を作ってみる(注文約定調査編)
- 6. Java + Jetty + Maven で簡単に Web アプリケーションを開発する (2022)
- 7. Java: WebSphereトラブルシューティング三種の神器について(HeapAnalyzer, TMDA, PMAT)
- 8. SpringBoot得意な方教えてください! BeanNotOfRequiredTypeExceptionが発生したときの原因と対処法。
- 9. 文字列の一致方法
- 10. インターフェースを実装するようにエンティティを修正したら動かなくなった話
- 11. コンピュータとオセロ対戦53 ~損失関数~
- 12. Centos8 LAMPPJ
- 13. よく使うSpring Boot の アノテーションまとめ
- 14. 「マイクロサービスパターン」の復習 1章 モノリシック地獄
- 15. 【Java_for文】
- 16. JSFのサンプル
- 17. Effective Java 第3版まとめ(項目5)
- 18. フォルダ量産
- 19. Javaでの乱数記述の仕方
- 20. 【Jackson】AnnotationIntrospectorでJsonGetter同様の動作を実現する
Java用語集
## この記事の目的
Javaを業務で使い始めた駆け出しエンジニアが、学習のアウトプットのために書きました。
勉強している際に、何かを調べても、その調べた際に出てくる用語がわからず、さらに調べていくと結局何を目的としていたのか忘れてしまうということが頻発したり、結局調べてもよくわからないという状況が続いたので、用語集があれば良いなと思い、書きました。
結構間違っている認識もあるかとは思うので、まさかりバンバン募集しているので、コメントで訂正や修正お待ちしております。
私の勉強にもなるので、ためになります。
## どんな人が書いたか
Javaを業務で使い始めて3ヶ月くらいの駆け出しエンジニアです。
Java Silverを取得するために現在勉強中。# java用語集
# オペランド
a+b=cがあったとして、
この式をオペランドという
+,=を演算子という
# リテラル
オペランドの中でも具体的な値5,10とかをリテラルという。
# キャスト演算子
むりやり型返還すること(int)
“`java
int age = (int)3.2;
//3
“`
JavaでHTTPリクエストのPOSTメソッドでAPI呼び出しサンプル
# HTTPリクエストにてAPI呼び出し
OAuth認証などで取得したアクセストークンを用いて、
外部APIに対してJSONパラメータをリクエストする処理のサンプル### パラメータ説明
` setTimeout() :タイムアウト値をセットするメソッド`
` “api.endpoint.co.jp :外部連携APIのエンドポインt”`
` accessToken :アクセストークン`### 処理
“`
// URLオブジェクト作成
URL url =new URL(API_PATH);
//httpsコネクターをオープン
HttpURLConnection con = (HttpURLConnection) url.openConnection();
// タイムアウト時間を設定
con.setConnectTimeout(setTimeout());
// メソッドをPOSTに設定
con.setDoOutput(true);
con.setDoInput(true);
con.setRequestMethod(“POST”);
// リクエストヘッダーの追加
con.s
JavaでJSONをStringに変換
# JsonをStringに変換
“`
JSONObject json = new JSONObject(data);
jsonParam = json.toString();“`
JavaでString型の日付や日時の比較をする
# JavaでString型の日付や日時の比較をする
例えば以下のような2つのString型で表された日付を考える
“`
String date1 = “2022-1-1”;
String date2 = “2022-1-5”;
“`## String型の日付の比較
### ①SimpleDateFormatのオブジェクトを生成
“`
SimpleDateFormat sdFormat = new SimpleDateFormat(“yyyy-MM-dd”);
“`
### ②比較する
“`
// date1がdate2よりまえの場合
sdFormat.parse(date1).compareTo(sdFormat.parse(date2)) == -1// date1がdate2よりあとの場合
sdFormat.parse(date1).compareTo(sdFormat.parse(date2)) == 1// date1がdate2と同じ日の場合
sdFormat.parse(date1).compareTo(sdFormat.parse(date2
auカブコム証券のkabuステーションREST APIで自前のリピート注文を作ってみる(注文約定調査編)
# はじめに
前記事
1. [auカブコム証券のkabuステーションREST APIをcurlで叩く](https://qiita.com/hiuchida/items/fcdd3d6ff921b386a37e)
2. [auカブコム証券のkabuステーションREST APIをjava(generated by the swagger code generator)で叩く](https://qiita.com/hiuchida/items/73b7fc846d4c9501ef2f)
3. [auカブコム証券のkabuステーションREST APIの残高照会をcurlとjavaで叩く](https://qiita.com/hiuchida/items/9eb5336755a3d1b1a3df)
4. [auカブコム証券のkabuステーションREST APIの残高照会から先物OPのdeltaを計算する](https://qiita.com/hiuchida/items/6e0d8d5114192bec1632)
5. [auカブコム証券のkabuステーションREST APIのテスト用モック
Java + Jetty + Maven で簡単に Web アプリケーションを開発する (2022)
# 概要
JavaでWebアプリケーションをちょっと作ってみたいというときに、サーバーのインストールや設定も不要な方法です。高度なWebアプリケーションフレームワークは利用せず、とりあえずJSPでの表示をするだけです。
# 前提
Maven 実行環境がセットアップされている。
IDEとしてEclipseを利用
Windows 環境# Maven Project の作成
Eclipse の [File] – [New] – [Project] から [Maven Project] を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110265/e1965629-2ef0-0e1f-80b8-0f6c717894a1.png)
[Create a simple project] を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110265/eae
Java: WebSphereトラブルシューティング三種の神器について(HeapAnalyzer, TMDA, PMAT)
IBM WebSphere(IBM Java)には、Javaのトラブルシューティングに利用できる、いくつかのツールがあります。本記事では、それらのツールを3つ紹介します。
# HeapAnalyzer
ヒープダンプを解析し、OutOfMemoryErrorなどのJavaメモリ上の問題を調査するためのツールです。ヒープダンプの解析結果をグラフィカルに表示することができ、ヒープを占めているオブジェクトを特定することなどができます。
https://www.ibm.com/support/pages/ibm-heapanalyzer
ただし、上記のURLに記載されている通り、現在は新機能の開発を終了してしまっているようです。このため、Java 8以降の実行環境では、現在も開発が続けられているEclipse Memory Analyzer Toolを利用していくべきかもしれません。
https://www.ibm.com/support/pages/eclipse-memory-analyzer-tool-dtfj-and-ibm-extensions
# Thread and M
SpringBoot得意な方教えてください! BeanNotOfRequiredTypeExceptionが発生したときの原因と対処法。
SpringBootのJUnitで『BeanNotOfRequiredTypeException』が発生しました。
結果的にはテストクラスに@ContextConfigurationを追加したら発生しなくなったんですが・・・“`
@ContextConfiguration
“`
詳しい経緯や僕が行なった対策は記事でまとめています。真因が特定できていないので、SpringBootのDIにすごく詳しい方、ご教示頂けると嬉しいです!
## 記事はこちらに移管しました
文字列の一致方法
文字列の一致方法をJavaで実装しました
“`Java
import java.util.Scannerpublic class Mojikensaku1 {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println(“検索する文字を入力してください”);
String line1 = sc.nextLine();
System.out.println(“判定する文字を入力してください”);
String line2 = sc.nextLine();
//文字列検索結果フラグの定義
booloean flag1 = true;
//文字列検索チェック
flag1 = line2.contains(line1);
//文字列が含まれているかチェック ある場合は「DANGER」ない場合は
インターフェースを実装するようにエンティティを修正したら動かなくなった話
# はじめに(と原因)
Play FrameworkとEbeanを使用している環境で、エンティティに対して、
setterを宣言しているインターフェースを実装するように修正したら、
意図しない動きになった。原因は下記記事に記載されている。
https://qiita.com/fukushiw/items/64993db74e1454554b7c
> Play Framework のエンハンス
> (中略)
> エンティティに対して、getterとsetterがついていないものはそれをつけるようにします。
> その後で、エンティティのフィールド直接アクセスを、getter/setter経由になるように書き換えます。
>
> Ebean の エンハンス
> (中略)
> 遅延ローディングや楽観的ロックの制御等の目的で、getterやsetterソースコードが改変されます。Lombokを疑っていたが、Play FrameworkとEbeanでエンハンスしているとは…
# 修正前のコード
* エンティティ
“`java
@Entity
@Table(name = “H
コンピュータとオセロ対戦53 ~損失関数~
https://qiita.com/tt_and_tk/items/068f2afde6db637e189f
[前回](https://qiita.com/tt_and_tk/items/8bce5586efbf6a67f086)
# 今回の目標
損失関数を作成する。
# ここから本編
## Softmax
損失関数追加の前に、活性化関数としてソフトマックス関数を追加します。
その層のノード数をN、現在着目しているノード番号をiとおくと、“`math
\begin{align}
f(x_i)&=\frac{e^{x_i}}{\sum\limits_{n=1}^Ne^{x_n}}\nonumber \\
f'(x_i)&=\left\{\begin{aligned}
&f(x_i)(1-f(x_j))\ &if\ i=j\\
&-f(x_i)f(x_j)\ &if\ i\ne j
\end{aligned}\right.\nonumber
\end{align}
“`プログラム
“`Softmax.java
pa
Centos8 LAMPPJ
sudo vi 0S8.sh
“`
#追加で HTTP(80/tcp) と HTTPS(443/tcp) を許可しておきます
firewall-cmd –permanent –zone=public –add-port=3389/tcp
firewall-cmd –add-port=80/tcp –permanent
firewall-cmd –add-port=443/tcp –permanent
firewall-cmd –reload
firewall-cmd –list-all“`
sudo chmod u+x 0S8.sh
sudo ./0S8.shsudo vi 0S8LAMP.sh
“`
#apache:php:mysqlインストール
dnf remove -y php
dnf install -y https://rpms.remirepo.net/enterprise/remi-release-8.rpm
rpm –import http://rpms.remirepo.net/RPM-GPG-KEY-remi
dnf modul
よく使うSpring Boot の アノテーションまとめ
Java/Kotlinのフレームワークとして有名な、「Spring Boot」を仕事で使っています。
Spring Bootを使っていると、アノテーションと呼ばれる@マークで始まるタグのような目印が出てきて、最初は面食らいました。
よく使うアノテーションは比較的限られているので、それをまとめてみました。# Component アノテーション
## `@Component`
[Component (Spring Framework 5.3.18 API) – Javadoc](https://spring.pleiades.io/spring-framework/docs/current/javadoc-api/org/springframework/stereotype/Component.html)
> アノテーション付きクラスが「コンポーネント」であることを示します。このようなクラスは、アノテーションベースの構成およびクラスパススキャンを使用する場合の自動検出の候補と見なされます。
他のクラスレベルのアノテーションも、コンポーネント、通常は特別な種類のコンポーネントを識別
「マイクロサービスパターン」の復習 1章 モノリシック地獄
## 1章 モノリシック地獄からの脱出
– モノリシック地獄
– マイクロサービスアーキテクチャの基本的な考え方
– マイクロサービスアーキテクチャの利点・欠点
– パターン言語とマイクロサービスアーキテクチャパターン
– マイクロサービスアーキテクチャと組織## モノリシック地獄
– 最初は、綺麗に設計できていれば開発もスムーズだけど、大きくなるにつれてそうもいかなくなる
– 変更の影響範囲が分からなくなるので、開発が遅くなる
– 一つのコードベースだと、常に不安定で、ビルドが通らない
– 自動テストをやっていても、テストに時間がかかる
– (垂直)スケーリングしづらい
– CPUが必要なモジュールもあれば、メモリが必要なモジュールもあるので## マイクロサービスアーキテクチャの基本的な考え方
– スケールキューブという考え方がある
– X軸:いわゆる水平スケーリング
– Z軸:パーティショニングによるスケーリング
– Y軸:機能分割によるスケーリング
– マイクロサービスアーキテクチャは、Y軸によるスケーリングを実現する– SOAの
【Java_for文】
現在、書籍にてJavaを学習中です。
この投稿はその備忘録になります。## for文
for文とは、以下のように処理を指定した回数だけ繰り返す構文です。
“`java
public class App{
public static void main(String[] args){
for (int i = 1; i < 10; i++){ System.out.println(i + "回目の繰り返しです"); } } } ``` #### ■for (①; ②; ③)内のそれぞれが持つ意味 ①初期化処理 `ループ変数`を定義する。 ②繰り返し条件 このループを継続するか否かを判定する条件式を書く。 ③繰り返し時処理 for文内のブロックを最後まで処理して『 } 』まで到達した直後に実行される文。 (通常は、インクリメント・デクリメント演算子を用いた加算・減算を書きます) #### ■ループ変数のルール ①変数名は自由 ただし、すでに宣言されている変数名は使えない ②ブロック内で利用可能 ループ変数が使えるスコープはそのブロック内でのみ利用できます。
JSFのサンプル
# 構成
– JsfTest
– src
– main
– java
– bean
– IndexBean.java
– InputBean.java
– webapp
– index.xhtml
– next.xhtml
– WEB-INF
– faces-config.xml
– web.xml
– pom.xml# pom.xml
“`
com.sun.faces
jsf-api
Effective Java 第3版まとめ(項目5)
# 項目5.資源を直接結び付けるよりも依存性注入を選ぶ
## 書かれている内容
* 多くのクラスが一つ以上の下層の資源に依存している
* たとえば、スペルチェッカーは辞書に依存している
* このようなクラスが静的なユーティリティやシングルトンで実装されていると、
柔軟性に欠けてテストできない(例えばテスト用の辞書を使うことができない)
* スペルチェッカーに辞書を変更するためのメソッドを追加すると、扱いにくく、間違いやすく、並行な環境では機能しない
* 新しいインスタンスを生成するときにコンストラクタに資源を渡す
* または、コンストラクタに資源ファクトリを渡す
* Supplierインタフェースは、ファクトリを表現するには最適
フォルダ量産
public static void main(String[] args) {
try{
for(int i=1;i<=作りたいフォルダ数;i++) { Path p = Paths.get("パス"+String.valueOf(i)); Files.createDirectory(p); } }catch(IOException e){ System.out.println(e); } }
Javaでの乱数記述の仕方
# Javaでの乱数の記述の仕方について
乱数の表記表には複数種類存在する。
#### 1.Random関数を用いた記述
Randomクラスは、疑似乱数を生成するためのクラスである。戻り値はint型であり、乱数のように見えるが、実際には一定の規則で生成されている数字。
Randomクラスを使用するには`java.util.Random`をimportする必要がある。
#### ソースコード
~~~Java
import java.util.Random;public class Main {
public static void main(String[] args) {
Random r = new Random();
int r = random.nextInt(➀);
//0以上➀未満までの間で乱数を取得する
}
}
~~~
import文も含めて1文にまとめることも可能である。`int r = new java.util.Random().nextInt(➀);`
また、コンストラクタに初期値(シード)を与えると、生成される疑似乱数列
【Jackson】AnnotationIntrospectorでJsonGetter同様の動作を実現する
# TL;DR
– `AnnotationIntrospector`には`JsonGetter`同様の動作を再現するための明示的なメソッドは用意されていない
– `findNameForSerialization`を実装することで、`JsonGetter`同様の動作を実現できる# 本文
## JsonGetterとは
`Jackson`では、名前が`getter`に当たるメソッドしかシリアライズ対象になりません。
一方、`JsonGetter`アノテーションを付与したメソッドは名前に関わらずシリアライズ対象となります。“`java
// シリアライズすると{“foo”:1,”bar”:2}が出力される
class Src {
public int getFoo() { return 1; }
@JsonGetter public int bar() { return 2; }
}
“`## やりたいこと
`Jackson`の挙動をカスタムして、特定条件で`JsonGetter`同様の動作をさせます。
今回は以下の`MyAnnotation`が設定されてい