JAVA関連のことを調べてみた2021年05月17日

JAVA関連のことを調べてみた2021年05月17日

【Java】OptionalのorElseの使い方

# Optionalとは

Optionalは、“メソッドの戻り値としてnullを返す可能性があることを明示的に示したいときに使用します。“
メソッドがnullを返す可能性があるということを示すことで、
そのメソッドを利用するプログラムをより安全に実装することができるようになります。

#orElseの使い方

Optionalのオブジェクトは“nullの可能性があるオブジェクトの型を指定“して宣言します。
Optionalのオブジェクトには“ofNullableメソッドの戻り値を代入“します。
Optional.ofNullableメソッドの引数がnullの場合にorElseメソッドの引数の値を返します。
(以下の場合は「Nullです」を返します)
nullでない場合はnullではないその値を返します。

“`java
String str = null;

Optional nullableString = Optional.ofNullable(str);

System.out.println(nullableString.orElse(“Nu

元記事を表示

【SpringBoot入門】リファレンス見ながら環境構築

# SpringBoot環境構築

## はじめに
SpringBootでWebアプリケーションを作ってみたかったので[公式リファレンス](https://spring.pleiades.io/spring-boot/docs/current/reference/html/getting-started.html#getting-started)を見ながら環境構築をやっていきます。
自分の記録用なので環境構築をしたい方は公式リファレンスを見ながらやったほうがいいと思います。。
ちなみにJavaでフレームワークを使うのは初めて。サーブレットとJSPで簡単なものを作ったことあるぐらいのレベル。

## 開発環境

“`
mac osx 10.15.7
java 16.0.1
maven 3.8.2
“`
インストールの説明割愛。

## Spring Boot CLIのインストール
Homebrewを使用してるので以下でインストールしました。

“`
$ brew tap spring-io/tap
$ brew install spring-boot
“`

## POMの作成

元記事を表示

Quarkus+Redisで簡単なアプリケーションを作る

## 概要
最近QuarkusというJavaフレームワークの存在を知りました。
> Quarkus は、Java 仮想マシン (JVM) およびネイティブコンパイルのために作成されたフルスタックの Kubernetes ネイティブ Java フレームワークで、Java をコンテナに最適化し、サーバーレス、クラウド、Kubernetes の各環境で効果的なプラットフォームとして使用できるようにします。
https://www.redhat.com/ja/topics/cloud-native-apps/what-is-quarkus

だそうです。

KubernetesネイティブなJavaフレームワークということで、マイクロサービスが流行りつつある今、個人的には将来性のあるフレームワークなのかな、と思っています。
特徴や詳しい使い方は他の方に任せます。(

こちらの記事では、Quarkusのサイトで紹介されているredis-clientを使ったサンプルアプリケーションの作り方をまとめました。
Redisと接続してCRUDを行うRESTful APIアプリケーションです。

↓のページに

元記事を表示

MapperクラスのSQLで不等号を使いたい(MyBatis)

## 困ったこと
MapperのSQLをXMLに記載するとき、不等号(大なり、小なり など)を使用すると、
「要素のコンテンツは、整形式の文字データまたはマークアップから成るものでなければなりません。」
のエラーになってしまう。

## 解決方法
` 以下の2つがあるが、1がおすすめ。

### 1. 該当箇所を囲む

“`.Java

“`

### 2. SQL文全体を囲む
この方が可読性が良いが、動的SQLを記載しても反映されない。

“`.Ja

元記事を表示

Javaの配列とリスト配列で配列の要素を数える方法が違います

Javaで配列とリスト配列で配列の要素を数える方法が違います。

配列の場合は

“`java
public class Main{
public static void main(String[] args){
String[] data = {“test1″,”test2″,”test3”};
for(int i=0;i data = new ArrayList();
data.add(“test1”);
data.add(“test2”);
data.add(“test3”);

元記事を表示

関数を評価する前もしくは評価した後のセルの値が欲しい

# 関数を評価した後の値が欲しい

Apache POIでセルの値を取得する際、「セルに関数が含まれている場合は関数を評価した後の値が欲しい」とします。書き方はいろいろあるのですが、おおよそ以下のようにすればよいです。

“`java
// WorkBookオブジェクトからFormulaEvaluatorを生成する。
FormulaEvaluator formulaEvaluator = book.getCreationHelper().createFormulaEvaluator();

// CellのCellTypeを取得する。Cellが関数を含む場合は関数の評価後のCellTypeを取得する。
CellType cellType = (cell.getCellType() == CellType.FORMULA) ? formulaEvaluator.evaluateFormulaCell(cell) : cell.getCellType();

// CellTypeにあわせて値を取得する。ここではサンプルとして文字列型を取得している。
if (cellType == Ce

元記事を表示

spigotプラグインを作る (目次)

#目次
##I部 準備
[spigotプラグインを作る (1)](https://qiita.com/drafts/43ea0ccf6ed299b58492/)
##II部 絶賛執筆中!!

元記事を表示

spigotプラグインを作る (1)

すごいお久しぶりです。beatbox4108です。
今回からは、spigotプラグインの作り方をやっていきたいと思います。
#まずspigotって?
**spigot**は、minecraftのサーバーです。
もともとは、**bukkit**というものが主流でしたが、現在は**bukkit**との互換性がある**spigot**が主流です。
**bukkit**や**spigot**はプラグインというものを導入して、minecraftの機能を追加したり変更したりできます。
###プラグインでできること/できないこと
| 機能 | できるかどうか |
|:-:|:-:|
| UIの追加 | X |
| ブロックの追加 | X |
| AIの変更 | O |
| UIの表示、機能追加 | O |
| Javaとの連携 | O |
上に挙げたのはほんの少しで、他にもいろいろな機能があります。
~~*思いつかなかったなんて言えない*~~
#実際にやってみる
###前提条件
IntelliJ IDEAがインストールされている。
JDKがインストールされている
###筆者の環境
OS—lin

元記事を表示

最新バージョンのJavaをmacにインストールするところでハマったのでメモ

最新バージョンのJDKをmacにインストールする流れでハマったので忘れないようにメモ

#環境
Mac Os catalina 10.15.7

#概要

※調べるとcaskを使う記事が複数でてきましたが使わなくてよかったので以下で実施

“`
% brew install java

==> Downloading https://ghcr.io/v2/homebrew/core/openjdk/manifests/15.0.2
######################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/openjdk/blobs/sha256:fca110fb6caad1228156b587a3ca9fa9ab5a
==> Downloading from https://pkg-containers.githubusercontent.com/ghcr1/blobs/sha256:fca110fb

元記事を表示

[Java]Spring + MySQL を用いたREST API作成メモ

* SpringとMySQLを利用したREST API作成メモ

## API例

* 以下のようなユーザー情報の登録、取得、一覧取得用APIを作成する。

* **ユーザー登録API(`POST /api/users`)**

* リクエスト

“`http
POST /api/users HTTP/1.1
Host: localhost:8080
Content-Type: application/json
Content-Length: 24

{
“name”:”test4″
}
“`

* レスポンス

“`json
{
“id”: 4,
“name”: “test4”
}
“`

* **ユーザー取得API(`GET /api/users/{user_id}`)**

* リクエスト

“`http
GET /api/users/4 HTTP/1.1
Host: lo

元記事を表示

燃やす埋める問題とProject Selection Problemの整理

2021年3月から毎日問題が公開されている「[競プロ典型90問](https://qiita.com/e869120/items/1b2a5f0f07fd927e44e9)」、皆さま解いていらっしゃいますでしょうか?

一昨日、第40問として公開された「[Get More Money](https://atcoder.jp/contests/typical90/tasks/typical90_an)」が解説を読み、その後いろいろな記事を見ても理解が難しかったので整理してみました。
当然のことながらこの問題の解法に触れますので、問題に挑戦したい方はこの記事は後からお読みいただくことをお勧めします。

– [AtCoder常設ジャッジ](https://atcoder.jp/contests/typical90/tasks/typical90_an)
– [問題画像](https://github.com/E869120/kyopro_educational_90/blob/main/problem/040.jpg)
– [公式解説](https://github.com/E869120/

元記事を表示

Java初心者のつまづき(1)クラス型変数の代入の罠

#Java初心者のつまづき(1)クラス型変数の代入
##この記事を書こうと思ったきっかけ
アウトプットの練習もかねて、Javaを勉強した際につまづいた「クラス型変数の代入」について、まとめておきたいと思います。

##クラス型変数を代入するときの注意点
クラス型の変数を同じクラス型の別の変数に代入した場合、
代入されるのは__”変数”そのものの値ではなく、”オブジェクト”の参照値__になります。

以下のBookクラスでは本オブジェクトを生成し、setBookで本の名前とページ数をセットしています。showBookが呼ばれると本の名前とページ数を画面上に表示します。

“`java:Book.java
public class Book {
// 本の名前
private String name;
// ページ数
private int page;

public Book() {
name = “名称なし”;
page = 0;
}
/**
* 本の名前とページ数を設定する
* @param name
* @param page
*/
publi

元記事を表示

Java Gold SE11 合格体験記

## はじめに

入社時の新人研修の一環で、Java Gold SE11をなんと~~**3週間で**~~取得できました。

・・・嘘ではないですけど、ちょっと盛りました。実際のところ**Silverに2週間・Goldに3週間の1ヶ月強**です。Silverから続けて受験したから合格できたところがあるので。

Silverの体験記はインターネットの海にたくさんありますが、**Goldの合格体験記は少なかった**ので記事を書くことにした次第です。参考になれば幸いです。

## 勉強開始時のスペック・受験理由

入社前は大学の研究でpythonを3年、アルバイトでPHP(WordPress)を3年、Swiftを半年使っていました。基本独学です。

Javaに関しては完全に未経験ですが、オブジェクト指向についてはおおむね理解していたところです。ラムダ式やStream APIも(他言語と細かい仕様は違うと思いますが)読めばわかるくらいの知識がありました。

受験理由についてです。

研修の間にSilverの取得が必須だったのですが、せっかちなのでさっさと受験して合格しました。その結果、**配属前

元記事を表示

最近学んだBuilderパターンと有効な状況を自分なりに整理してみた

Javaの開発に限らずオブジェクト指向プログラミングをするにあたり、
デザインパターンというものを知っていると、詳細設計やコーディング時に非常に重宝する。

デザインパターンの中でも今回はBuilderのデザインパターンについて整理しようと思う。

この記事は基本的なJavaのBuilderパターンの考え方を私なりに説明し、
玄人でなくても即実践投入できるようにがんばります。

Javaに慣れてきたらこれ↓

VSCodeでJava開発 – H2データベースとJDBC接続するまで

Java でIDEといえば Eclipse や IntelliJ な気がします。しかしそれほど本気ではないが楽しく気軽に Java コーディングしたいという時に、VSCodeで簡単にデータベース接続まで理解する。以上を表題の3つで実現する事を考えてみました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93824/e4ca76a7-d69c-d190-e884-308e5cfa8cc4.png)

以下2つが分かりやすかった。

https://qiita.com/takuma-jpn/items/b49785a314fb4db85775

https://qiita.com/msakamoto_sf/items/d65947ddf509acbc98cb

## 予備知識

### Visual Studio Code で Java を使うにはJDK11が必要になりました

https://od10z.wordpress.com/2020/08/01/vscode-java-req

元記事を表示

[備忘録]Java/Android 実行環境での改行コード取得

#改行コード

– CR: 復帰、\r
– LF: 改行、\n
– CR + LF: \r\n

\n とか \r はエスケープシーケンスで、16進数の数値にすると `0X0A`, `0X0D`らしい。
また、WindowsではCR+LF、unix系ではLF、MacOSではCRなど、実行環境によって使用する改行コードが異なる。

#実行環境での改行コード取得方法

“`java
final String BR = System.getProperty(“line.separator”);
“`

これで、(アンドロイドに限らず)このコードの実行環境でのエスケープシーケンスが取得できる。

##アンドロイドでの改行コード
↓実行してみた。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1139020/054ab9cc-5050-a576-b3ed-4c3e1bb9fb96.png)
アンドロイドでの改行コードは”\n”(LF)ということが分かった。

###(おまけ)(どうでもいい話)

元記事を表示

Java Security Managerを有効にしてSpring Bootを起動する

Spring BootをJavaのSecurity Managerと一緒に起動することで、お手軽にサンドボックス化できます。例えば外部から送られてくるスクリプトをアプリケーション上で実行しなきゃいけないけど、セキュリティが不安な時とか。

**2021/05/17 2:07 JST: 実際に試してみたら工夫が必要だったので説明を加えました。** ~~見切り発車で書いてました。ごめんなさい。~~

# Java Security Manager
JavaのSecurity Managerという機能を有効にすると、プログラムが実行してもよい操作を制限することができます。例えばファイルや環境変数の読み書き、ネットワークへの接続など、想定外の挙動をした場合にそれを検知して、失敗させることができます。
許可する権限はポリシーファイルというものに書き連ねます。

“`example.policy
grant {
// 全て許可する
permission java.security.AllPermission;
};
“`

そして、Javaを実行する際に“`-Djava.se

元記事を表示

2021年 給料が一番高いプログラミング言語 5選

多くの人が高給のためにプログラミング業界を選びますが、世界で最も収益性の高いプログラミング言語は何か知っていますか?
##1)Java
「Javaは時代遅れですか?」と尋ねるかもしれません。もちろん、そうではありません。
なぜJavaはまだ人気があるのですか?Javaは最も古く、堅牢なプログラミング言語の1つです。また、主にAndroidアプリケーション開発に使用されるオブジェクト指向言語です。これが、今日でも使用されている主な理由の1つです。しかし、Kotlin(Android開発にも適しています)のようなプログラミング言語の出現により、Javaの人気は低下しています。
![Java.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482909/d279971b-2269-8c56-943d-a8e72896a1c6.jpeg)
ただし、Javaは依然として最も高額なプログラミング言語の1つであり、かなりの需要があります。Indeedによると、ソフトウェア開発会社はJava開発者に興味があり、毎年10万

元記事を表示

Kotlin学習記②


# はじめに
### 今回はKotlinのデータ型についてJavaとの比較を交えながらまとめたいと思います。

# 記事投稿の経緯
### Kotlinのデータ型はIntなどが存在するが、Javaにはint,Integerの2パターンが存在する。(プリミティブ型と参照型)
### そこで、Kotlinのデータ型がJavaのデータ型とどのように対応しているのかについて疑問を持ち、調査することにした。

# 実装
### IntelliJ IDEAを用いてKotlinコードからJavaコードにDecompileして確認してみる。
### Tools > Kotlin > Show Kotlin Bytecode > 「Decompile」ボタンクリック

“`Kotlin
import kotlin.jvm.JvmStatic

class KotlinDecompile {
fun foo(): Int { return 1 }

fun foo2(): Double { return 1.

元記事を表示

図解で解説!! Apache、Tomcatってなんなの?

ログイン画面出ているのに404になった。
そこで、関連してくるApacheとTomcatについて書いていこうと思います!

# はじめに
**Apache**ってなんだ?!
**Tomcat**ってなんだ?!
お前達は一体どこにいるんだ?!
何をしてるんだ?!
そんなApacheとTomcatの疑問に関してまとめていきます。

※概念部分のみで、以降には技術的なコードを書いてませんのでご了承を…

 

# 環境

“`
OS macOS Catalina バージョン10.15.7
“`

 
 

# Apacheって何?
**Webサーバ用のソフト**のこと
正式名称は**Apache HTTP Server**という
世界中で最も使用されているWebサーバソフト

 
# Webサーバって何?
**ブラウザからのHTTPリクエストに対して、HTMLファイルなどをレスポンスとして返してくれるサーバのこと**
 
今回でいうとPCなどにApacheというWebサーバ用のソフトを入れることで**Webサーバ**になる!

 

# Tomcatって

元記事を表示

OTHERカテゴリの最新記事