- 1. 関数型インターフェースについて学習したのでまとめてみた。
- 2. 【Spring Data JPA】主キーが重複した複数のデータをsaveAll()で登録すると・・・
- 3. 初心者でもわかる関数型インターフェース(UnaryOperator編)
- 4. Java Web Startテスト
- 5. JavaCV(OpenCV)で画像変換を行いたい
- 6. GradleやMavenとは
- 7. 【Java】Stream APIの使い方
- 8. Java系バージョン対応表
- 9. 初心者でもわかる関数型インターフェース(Function編)
- 10. Java 初心者でもわかる関数型インタフェイス(Predicate編)
- 11. Javaを使用してPDFのブックマークを展開または折りたたむ方法
- 12. Java入門#2_演算子と条件分岐
- 13. 【 Java_評価の3つの原則 】
- 14. extendsはなぜ邪悪か – 具象基底クラスをインターフェイスに変えることでコードを改善する
- 15. Javaのインクリメント・デクリメントについてまとめてみた
- 16. 初心者でもわかるBuilderパターン Builderパターンでカレーを作くろう!!
- 17. コンピュータとオセロ対戦43 ~目的関数~
- 18. フォームバリデーションのカスタマイズ【Spring Boot】
- 19. Java基礎(命令実行文)
- 20. JavaのWebアプリをHerokuでデプロイする方法
関数型インターフェースについて学習したのでまとめてみた。
Javaの関数型インターフェースについて学習したのでまとめてみます。
# 関数型インターフェースとは
関数型インターフェースとは、抽象メソッドを持ったインターフェースです。
役割としては、“`
抽象メソッドを一つだけドを一つだけ持っているもの。l
そして、その抽象メソッドはラムダ式等を使って呼び出していきます。
“`そもそものインターフェースとは、開発においてどこのクラスでも必要なメソッドをまとめて置くためのものです。そして、関数型インターフェースは、抽象メソッドを一つだけ定義しているインターフェースです。
抽象メソッドとは何かというと、処理の内容が無いメソッドです。# 関数型インターフェースの書き方
“`Sample.java
public interface SampleInterface {
public void Sm1(String sample);
}
“`このように、インターフェースの中に抽象メソッドを定義します。
さらにわかりやすく書くやり方もあります。それは、アノテーションを宣言することです
“`Sample.java
@
【Spring Data JPA】主キーが重複した複数のデータをsaveAll()で登録すると・・・
現在参画している案件でJava使い、開発を行っています。
そこでsaveAll()を用いてデータを登録する機会がありました。
しかし、実際にテストで動かしてみると3件データを登録できるはずがなぜか1件しか登録が出来ていなかったのです。#原因
テスト自体は通るのですが、エラーで落ちてはいない・・・
なぜ登録できなかったのか、それは**重複した主キーを複数のデータに登録していたから**です。
実は開発中のAPIの仕様が曖昧なところがあり、””(空文字)で指定しておいてくださいと指示を受け、主キーに全て空文字を登録するようなロジックを作成していたことが原因でした。
(そもそも主キーに空文字を登録する時点で気づくべきだった・・・)しかしここで、また1つ疑問が浮かびました。
なぜ、**重複した主キーなのにデータを登録できているんだろう???(しかもなぜか1件だけ)**
その答えはsaveAll()の仕様にありました。#saveAll()の仕様
どうやらsaveAll()は
**①登録する際に重複する主キーがなかったら登録(insert)**
**②登録する際に重複する主キーが
初心者でもわかる関数型インターフェース(UnaryOperator編)
##はじめに
皆さんはUnaryOperatorについてご存知でしょうか。UnaryOperatorを使用すれば、一律の処理をキュッとまとめることが出来ます。例えば、リストの文字列を全て大文字にするなど使い方次第で色々なことが出来ます。JavaGoldの試験の出題範囲でもあります。そんな、UnaryOperatorについて解説していきます。##UnaryOperatorとは
UnaryOperatorとは、1つの値を処理して同じ型の処理を戻す処理を表す関数型インターフェースです。例えば、String型の引数を受け取ったら、戻り値もString型の処理を戻すというイメージです。UnaryOperatorは、Funcitionインターフェースのサブクラスで、抽象メソッドであるapplyメソッドを実装しています。それでは、サンプルコードを通して、使い方を解説していきます。##どのように使うの?
以下のコードは、String型の引数を受け取ってその引数に変数strを加える処理です。
そしてapplyメソッドを使用して、UnaryOperatorで実装した処理を呼び出します。“`S
Java Web Startテスト
前書き
—
ふっと、Java8で提供されるJava Web Startのサポートが2030年に切れるという話を聞きまして、
現状、Java11以降ではJWS自体廃止されてるということなので、
二点気になったことがありました:
1.有償プランを契約していない状態でJWSの機能を使用できるか?
2.Java11など後継バージョンで機能自体は引き継がれているのか?今回は1のほうを検証してみようと思います。
参考記事
—
テスト環境
—
Win10、Java8(jdk1.8.0_321、jre1.8.0_321)コーディング
—
SampleApplication.java“`java
import java.awt.*;
import javax.swing.*;
import javax.swing.border.*;public class SampleApplication extends JFrame {
private JPanel cont
JavaCV(OpenCV)で画像変換を行いたい
## 概要
javaで画像変換を行いたいなと思い、色々と調べていたら**JavaCV**がメジャーぽかったので、こちらを使用することにしました。**OpenCVをjava用にラッパーしたもの**の様です。OpenCVと言うとpythonのイメージしかなかったのですが、プログラミング言語は[C++](https://ja.wikipedia.org/wiki/OpenCV)で、javaでも使えるみたいですね。## 画像のフォーマットについて
画像のフォーマットは、**WebP**(ウェッピー)が割と新しいと言うことが分かりました。最近は、[**AVIF**](https://ics.media/entry/201001/)と言うのも出てきているみたいで、トレンドが速いなと思いましたが、まだ、OpenCVでは対応していないみたいです(多分)。「**画像の読み込み速度は、売り上げに直結している。**」みたいは記事もどこかで見かけたし、重要みたいですね。[アマゾンのページ表示速度を劇的に改善した6つの実践テクニック【SEO情報まとめ】](https://webtan.impress
GradleやMavenとは
# Springプロジェクト作成時の選択項目
Springプロジェクト作成の時いつも
「GradleかMavenか」
を選ぶことになります。一体なんのことなんでしょうか。そもそもSpringプロジェクト作成の時に選ぶ選択項目のほとんどを理解してない私ですが、
「最初Gradleで作成したら上手くいかなくて、Mavenにしたら動いた!」
と言うこともあったので調べておこうと思いました。# サーバ起動と同時にコンパイルしてくれる便利なやつ
正体はJavaクラスからJARファイルやWARファイルを作成してくれるコンパイラーです。
https://tech-lab.sios.jp/archives/9500Mavenの特徴はXMLファイルでビルドの手順を記述することです。
ビルドにMavenを選択した際は、pom.xmlというファイルが作成されるので、そこに必要なライラブリを記述します。
ビルドを実行するとここに記述されたライラブリをMavenリポジトリからダウンロードしてくれるのです。GradleはMavenほど有名ではありませんが
最近人気になってきているようです。これ
【Java】Stream APIの使い方
## はじめに
先輩エンジニアの方から学んだ方がいいとアドバイスをもらいStream APIについてキャッチアップをしました。
なんだか難しく聞こえますが、使ってみると意外と簡単なので忘備録を兼ねまとめています。## Stream APIとは?
Java8で導入された配列やCollectionなどを扱い、値の集計やデータを使った処理などができる便利なAPIのこと。
これだけではあまりイメージが湧かないので、**for文で記述していた処理をシンプルに記述できる便利機能**と覚えておけばOK!
## for文とStream APIの比較
今回は「**1から5までの整数の中から偶数を取得する処理**」をfor文とStream APIを利用して実装する。
“`java
import java.util.Arrays;
import java.util.List;public class StreamTest {
public static void main(String[] args) {// 1から5までの整数
ListnumLis
Java系バージョン対応表
JRE仕様とクラス形式のバージョン対応表
| JRE | class |
|—-:|——:|
| 1.6 | 50.0 |
| 1.7 | 51.0 |
| 1.8 | 52.0 |
| 9 | 53.0 |
| 10 | 54.0 |
| 11 | 55.0 |
| 12 | 56.0 |
| 13 | 57.0 |
| 14 | 58.0 |
| 15 | 59.0 |
| 16 | 60.0 |
| 17 | 61.0 |Apache TomcatとServletのバージョン対応表
| Tomcat | Servlet |
|——-:|——–:|
| 6.x | 2.5 |
| 7.x | 3.0 |
| 8.x | 3.1 |
| 9.x | 4.0 |
| 10.x | 5.0 |
初心者でもわかる関数型インターフェース(Function編)
##はじめに
関数型インターフェースのFunctionインタフェースをご存知でしょうか。Functionインターフェースを使用すると処理をキュッとまとめることができます。これによって読みやすいコードにするこどができます。そんなFuncitionインターフェースとおまけにBiFunctionインターフェースについて解説していきます。##Functionインターフェースとは
引数を1つ受け取ってその引数を使った処理返す関数型インターフェースです。例えば、引数の5を受け取ったとしましょう。その5に1を足す処理を返すというイメージです。Functionは抽象メソッドであるapplyメソッドを持っています。では、サンプルコードを通して具体的に説明していきます。:::note info
Functionはジェネリックスの型を2つ受け取ります。
具体的には1つ目の型はappyメソッドの引数の型、2つ目はapplyメソッドの戻り値の型として受け取ります。
:::##どうやって使うの?
以下のサンプルコードは引数に半径を受け取り、その引数を利用して円の面積を求める処理をしています。Funct
Java 初心者でもわかる関数型インタフェイス(Predicate編)
#はじめに
関数型インターフェースの1つPredicatetインターフェースをご存知でしょうか。
predicateインターフェースとラムダ式を組み合わせれば、複雑な条件をシンプルに実装できてしまいます。そんなPredicateインターフェースとおまけにBiPredicateインターフェースを解説していきます。
##Predicatetとは?
Predicateを日本語に訳すと「断定する」という意味になります。言葉の通り、引数を通して何らかの判断をする処理を定義するためのものです。例えば、戻り値がboolean型の処理をラムダ式で変数に代入して簡単に呼び出せるようにできます。Predicateはtestメソッドを持っています。そのメソッドは引数を1つ受け取り、その引数を使って、その結果をboolean型で戻します。サンプルコードを通して使い方を説明していきます。##どうやって使うの?
サンプルコードでは理想の男性を絞るためにMainクラスでif文を使って絞り込んでいきます。“`Man.java
public class Man {
private int hight;
p
Javaを使用してPDFのブックマークを展開または折りたたむ方法
PDFのブックマーク機能は、指定された読み取り位置をすばやく見つけることができます。 複数のブックマークに対しては、人々は自分の好みに応じてそれを展開してまたは折りたたむことができます。この記事では、Javaプログラムコードを使用してPDFブックマークを展開または折りたたむ方法を紹介します。
##プログラム環境:
Spire.Pdf.jar(無料バージョン3.9.0バージョン)
JDK1.8.0(バージョン1.6.0以降を使用可能)
IDEA###JARファイルのインポート:
jarパッケージを手動で[ダウンロード](https://www.e-iceblue.com/Download/download-pdf-for-net-now.html)してインポートします。libフォルダーにあるSpire.Pdf.jarファイルをダウンロードして解凍し、Javaプログラムへの参照を追加します。
jarのインポートは以下の図に示すように:
![01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2787
Java入門#2_演算子と条件分岐
#演算子
演算子とは、加減乗除をする文字のことです。
c#やPythonでは`+,-,*,/`などがありました。***javaもC系統とほぼ同じ記号を使います***
忘れてしまっていたら以下のページで確認して見てください。
以下、上記はだいたい頭に入っているものとして進めます。
試しに、二つの数を入力してその数の和を出力するプログラムを書いて見ます。
“`java
import java.io.*;class cal{
public static void main(String[] args)throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));//お約束//二つの数字を文字として入力
System.out.println(“a=?”);
String str1 = br.readLine();
【 Java_評価の3つの原則 】
Javaを学習中の初学者による備忘録です。
Javaは`3つの単純な原則`に従いながら式の評価を完了します。## 評価とは
Javaが式に従って計算処理をすること。
例えば、1+3=4という式では、『1+3を`評価`した結果が4になる』ということになります。## 評価の3つの原則
■評価結果への置換の原則
オペランドの情報を使って計算を行い、それらオペランドを巻き込んで結果に化ける(置き換わる)
例 : 1+5=6では、1と5を足すと、6に置き換わる。■優先順位の原則
式に演算子が複数ある場合は、優先順位の高い演算子から順に評価される。
例 : 1+5*6では、5*6を行い、後に30+1を行う■結合規則の原則
式内に、同じ優先順位グループに属する演算子が複数ある場合、演算子ごとに決められた「方向」から順に評価される。
例 : 10+5+2では10+5から順に、a=b=10ではb=10から順に評価される。##補足
・オペランド…1+3=xを例に取ると、『1 3 x』のこと。『+ =』は演算子。
extendsはなぜ邪悪か – 具象基底クラスをインターフェイスに変えることでコードを改善する
## 翻訳にあたり
この記事はアレン・ホルブ(Allen Holub)[^1]さんの[Why extends is evil](https://www.infoworld.com/article/2073649/why-extends-is-evil.html)の翻訳です。古い記事ですが日本語訳が存在しないため翻訳いたしました。アレンさんにはTwitterメッセージ越しに快諾いただきました。
[^1]: 日本語圏における情報が少なかったため、[氏が講師を務めるアメリカO’reilly社の講座](http://shop.oreilly.com/product/0636920043942.do)で発音を確認したところ、「u」がほとんど発音されておらず(聴感上は「Holb」)、それに倣った。早口なせいか書き起こしが「Alan Holt(日本語字幕も当然アランホルト)」になっていたのはご愛敬。
Javaに総称型が導入される前の記事ですが、この記事の要点は現在でも通用する内容で、いい意味での古典だと思います。C#など、Java同様にインターフェイス(もしくはプロトコル、トレイト)を持つ言語
Javaのインクリメント・デクリメントについてまとめてみた
Javaのインクリメントとデクリメントについて学習したのでまとめてみたいと思います。
# Javaのインクリメントとデクリメントの書き方とそれぞれについて
| |処理内容 |構文 |
|—|—|—|
|インクリメント |一つ加算される |変数++、もしくは、++変数 |
|デクリメント |一つ減産される |変数–、もしくは、–変数 |インクリメントに関しては見たことがあると思います。
“`main.java
public class main {
public static void main (String[] args) {
for (int increment = 0; increment < 2; increment++){ System.out.println("increment=" + increment); } } } ``` このようにJavaでfor文を使ったことがある人であれば、変数++でインクリメントしているところを見たことがあると思います。 ただ、インクリメントもデクリメントに
初心者でもわかるBuilderパターン Builderパターンでカレーを作くろう!!
##はじめに
皆さんはBuilderパターンをご存知でしょうか。
Builderパターンには色々な種類ありますが、今回はGoFのBuilderパターンについて解説していきます。##GoFのBuilderパターンとは
Builder パターン(ビルダー・パターン)とは、GoF(Gang of Four; 4人のギャングたち)によって定義されたデザインパターンの1つです。 オブジェクトの生成過程を抽象化することによって、動的なオブジェクトの生成を可能にします。(引用 wikipedia)分かりやすく言うなら、猫というクラスがあるとします。猫の抽象的な概念は動物ですよね。
この場合、猫クラスから犬クラスに変わったとしても対応できますよね。
どうでしょうか?イメージが湧いたでしょうか。サンプルコード通してどんなものか具体的に説明していきます。##クラス図
![スクリーンショット 2022-02-15 20.51.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2526916/00b09582-8
コンピュータとオセロ対戦43 ~目的関数~
https://qiita.com/tt_and_tk/items/068f2afde6db637e189f
[前回](https://qiita.com/tt_and_tk/items/9c3e208d77373d0683e3)
# 今回の目標
# ここから本編
## 修正点
パッケージ名out_functionをactivationFunctionに変更しました。
また、Matrixクラスに以下のメソッドを追加しました。“`java
/**
* Return absolute value of this matrix.
* @param in Matrix.
* @return Absolute value of this matrx.
*/
public void abs(){
for (int i = 0; i < this.row; i++){ for (int j = 0; j < this.col; j++){ this.matrix[
フォームバリデーションのカスタマイズ【Spring Boot】
#概要#
フォームバリデーションをする際、Bean Validation APIの標準の制約(@NotBlanckなど)を使うほかに、独自のチェックをする制約を利用したくなる場面があると思います。そのような場合、これまではコントローラで実装してきましたが、特定のFormオブジェクトのチェック処理を集約したバリデータを利用すると、コントローラからチェック処理を切り離すことができることが分かりました。#前提#
社内システムのの管理者登録を実装する場合を想定します。チェック項目は以下の通りとします。
・空欄ではないこと(@NotBlanck / @NotNull)
・従業員テーブルに存在する社員であること(存在チェック)
・パスワードと確認用パスワードが一致していること(相関チェック)“`register.html
管理者登録
Java基礎(命令実行文)
##Javaの命令実行文
###画面に文字を表示する
“`java
System.out.println(“おはよう”);
“`
“`java:出力
おはよう
“`###文字を改行せずに表示
“`java
System.out.print(“私の名前は”);
System.out.print(“山田です”)
“`
“`Java:出力
私の名前は山田です
“`###二つの値の大きい方を代入する
“`java
int a = 3
int b = 5
int m = Math.max(a,b);
//m に 5 が代入される
“`###文字列を数値に変換
“`java
String age = “30”;
int n = Integer.parseInt(age);
//変数nが文字列から整数に変換
“`###乱数を生み出して代入
“`java
int a = new java.util.Random().nextInt(30);
//aには0〜29の値が代入
“`###キーボードから1行の入力を受け取る
“`java
String s =
JavaのWebアプリをHerokuでデプロイする方法
JavaのWebアプリをHerokuでデプロイする方法を自分用にメモします。
こちらの記事を参考にしました。
https://phoeducation.work/entry/2021/01/30/143607#Herokuインストール
まずはHerokuにアカウント登録してください。URL:https://jp.heroku.com/home
次にEclipseで作ったプロジェクトを右クリック → 構成 → Mavenプロジェクトへ変換
でプロジェクトをMevanプロジェクトにします。pom.xmlが生成されればOKです。ターミナルを開き、Heroku CLIをインストール
“`
$ brew install heroku/brew/heroku
“`デプロイツールをインストール
“`
$ heroku plugins:install heroku-cli-deploy
“`Herokuにログイン
“`
$ heroku login -i
“`以下のメッセージが表示されるとログイン成功です。
“`
Logged in as Herokuに