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

JAVA関連のことを調べてみた2021年07月26日
目次

デザインパターン勉強会⑥Prototype

はじめに

ZOOM勉強会の議事録です。
「増補改訂版Java言語で学ぶデザインパターン入門」を読んで、プログラム作成・パターンの理解を行います。
第6回はPrototypeパターンです。

Prototype

インスタンスの複製を作るパターンです。

役割は以下です。

  • Prototype
  • インスタンスを複製するためのメソッドを定める

  • ConcretePrototype
元記事を表示

Springboot+Tymeleaf+Mybatis+MySQLでのCRUD処理実装(基本)

学習のためのCRUDの基本実装をしました。備忘録としてまとめました。
画面上にHelloWorld実装まではできるものとして書いてます。
MySQLにはあらかじめテーブルを用意しています。

## 開発環境

– eclipse IDE
– Java 11
– maven
– Tymeleaf
– Mybatis
– MySQL

## 設定ファイルの編集

**application.propertiesにmySqlとの接続情報を記述**

“`java
spring.datasource.url = jdbc:mysql://localhost/データベース名?serverTimezone=Asia/Tokyo
spring.datasource.username = root
spring.datasource.password = データベースのパスワード
spring.datasource.driver-class-name = com.mysql.cj.jdbc.Driver
spring.mvc.hiddenmethod.filter.enabled: true
“`

元記事を表示

【Java】AtCoderのABC-211に参加しました(レート:214→205)。

絶不調ですが、今回もA,BのみでC突破できずでした。
レートは214→205。ついに200を切ってしまう直前まで来てしまいました。

###A問題

入力値A,Bを使って、(a-b)%3+bを求める。
割り切れる場合は整数を、そうでない場合は小数点下を求めるような例題になっていたため、出力時に分岐を入れました。

“`java
import java.util.Scanner;
import java.util.Arrays;

public class Main{
public static void main(String args[]){
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
if((a-b)%3!=0){
System.out.println((double)(a-b)/3+b);
}else{
System.out.println((a-b)/3+b);
}
}
}
“`

###B問題

入力する4つの文字列に、

元記事を表示

【Java】Apache HttpClientの使い方メモ

# Mavenプロジェクトの作成
下記の記事を参考にして、Mavenプロジェクトを作成。

https://qiita.com/hide/items/6593f3f02c3f28e57f2d

“`console
mvn archetype:generate \
-DarchetypeArtifactId=maven-archetype-quickstart \
-DinteractiveMode=false \
-DgroupId=com.sample \
-DartifactId=http-client-sample
“`

# pom.xmlの編集
`pom.xml`を編集して、Apache HttpClientを導入します。
また、以下の記事を参考にして、`mvn`コマンドでの実行と実行可能JARファイル生成のための設定を追加します。

https://qiita.com/tarosa0001/items/e019ec4daaaf54684c53

https://qiita.com/hide/items/0c8795054219d04e5e98

“`x

元記事を表示

JPAという便利なものがあるらしい

## JPAとは
– Java Persistence APIの略
– データベース操作を行うライブラリの一つ
– SQLを自動作成、実行する(→SQL文を書く必要すらない。そんな便利な世界があったとは…)

## とりあえずJPAを使うにあたって
– 従業員テーブル(従業員番号、名前、部署番号)を用意。→全部で9件用意。
– JpaRepositoryが定義しているCRUD処理用のメソッドを使ってみる。→今回は検索のみ。

## 実行イメージ
– 全件検索
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1715093/623c3361-a177-f508-3937-054a119452ec.png)

– 主キー(従業員番号)検索
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1715093/7beffb4d-6f52-b9c5-6b77-5e44cf3238a6.png)

– 部署番

元記事を表示

【Android】 TextWatcherを使って、金額入力時にカンマを加える。

## 今回の目的

EditTextで金額を入力する時、月並みだが、動的に入力した数値をカンマ区切りに変換できないか、
色々調べたところ、ある程度制御が出来るようになったので、紹介していこうと思います。

## 使用する環境
– AndroidStudio Ver 3.4.1
– Android 10.0 (Q) API 29

## TextWatcher

[TextWatcher (AndroidDeveloper)](https://developer.android.com/reference/android/text/TextWatcher)

⇨ EditTextの入力を監視するEventListener(編集前の値を取得したり、編集後の値やポジションを取得する等、出来る)

色々詳しいことは、参考サイトや↑のリファレンスを参照してください。

## 実装に当たって

まずはImplements(実装)していきます。

“`MainActivity.java
public class SampleClass1 extends AppCompatActivity impl

元記事を表示

Eclipse+Forgeでマイクラのmod開発~身に着けられる防具(サングラス)を作ってみる

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191672/0c9d3696-fe6f-fbc7-7c25-dd755ae779ec.png)

最近職場が変わって多忙してました。。なのでかなり久々の記事。忙しいのは変わらないので当分ペースが落ちそうw

## 環境

* OS: Windows10
* Jdk: openjdk version “15.0.2” 2021-01-19 ※16.xでもいいかもだけどgradleやらなにやら色々変わってしまって心配だったので今回は15で。
* IDE: Eclipse IDE for Java Developers (Version 4.19.0)
* Buildship(Eclipseのgradleプラグイン) : 3.0
* Minecraft: Java版 1.16.5
* Forge: 1.16.5
* paint.net V4.2.16

## Javaのコード

前回の記事([Eclipse+Forgeでマイクラのmod開発~単純

元記事を表示

【Java発展学習17日目】SwingによるウィンドウUI制御

# GUIの種類
GUI(Graphical User Interface)の実現方法は、以下の2通り。

| GUI | 用途 | デザイン設計 |
|:–|:–|:–|
| WebUI | Webアプリケーション | HTML |
| ウィンドウUI | OSアプリケーション | プログラム |

# Swing APIにおける3つのウィンドウ
[参考: Swing](https://www.javadrive.jp/tutorial/)
**Swing API**が扱うウィンドウは、以下の3種類に分類される。

| ウィンドウ | 内容 | API |
|:–|:–|:–|
| アプレット | ブラウザへの埋め込みウィンドウ | `JApplet` |
| フレーム | アプリケーション用ウィンドウ | `JFrame` |
| ダイアログ | 対話入力用ウィンドウ | `JDialog` |

また、これらのウィンドウはメインスレッドとは独立した、描画処理を行う**UIスレッド**によって実行される。
`UIスレッド`は複数のスレッドの**総称**であり、中でもイベ

元記事を表示

基本データ型

基本データ型

基本データ型ってなに?

変数に格納される値の種類を定義するもので、別名「基底型」「プリミティブなデータ型」ともいいます。
基本データ型には byte,short,int,long,float,double,char,boolean の8種類のデータ型があり、値の種類によって「整数型」「浮動小数点型」「文字型」「ブール型」の4つに分類されます。
また、基本データ型以外にも「参照型」または「複合データ型」と呼ばれるデータ型があります。

基本データ型の説明

整数型

整数データを扱います。
整数型のデータは全て符号付きで、正負どちらの値も保持することができます。

|   データ型    |   サイズ  |              値の範囲              |
|:—————–:|:——————:|:——————:|
| byte | 1

元記事を表示

Java入門 超初心者用 プログラムの基本スタイル

# はじめに
今までRubyしかやってこなかったのですが、サーバーサイドとして働きたくてJavaもかじったほうが良いと聞き、勉強もちょっとずつやっていこうと思いました。
完全に備忘録です。
また本記事は、ゼロからわかるJava 超入門 改定3版にて勉強したものをアウトプットしています。



# 基本プログラム
基本中の基本ヌルプログラム

“`sample.java
class クラス名 {
public static void main(String[] args){
}
}
“`
いきなりでてきたヌルプログラム。Rubyしかやってこなかったが、いきなりワケワカメ。
**書籍での説明:ヌルプログラムは、プログラムとして成立しているものの。何も処理は行わない。**
おーなるほど。これをベースに行いたい命令を追加していってプログラムを完成させてくんだね!OKOK!

### 2行目のmainメソッド
プログラムは上から下にむかって実行されるんだけど、実行開始の場所は、先頭ではなくて。
必ずmainと書かれた場所から実

元記事を表示

ラッパークラスについて

ラッパークラスについて

ラッパークラスとは

基本型の値をラッピングする種々のクラスの総称です。

ラッパークラスと基本型

|      基本型       |     ラッパークラス     |
|:—————–:|:——————:|
| byte | Byte|
| short | Short |
| int | Integer |
| long | Long |
| float | Float|
| double | Double |
| char | Character|
|boolean | Boolean|

ラッパークラスのメリット

格納している数値を文字列に変更したり

元記事を表示

JavaのSSLSocketを使う(クライアント編2)

#はじめに
次はクライアント証明書を使ってみる。ついでにオレオレのサーバ証明書に対応する。

#概要
サーバの時 ( https://qiita.com/jkomatsu/items/d65ccbc6f8e7d73a9972 ) と同様に keystore, truststore をそれぞれ指定して使用する。
keystore にはクライアント証明書(秘密鍵含む)、truststore にはクライアント証明書のCA局証明書、オレオレサーバ証明書のCA局証明書を入れておく。

クライアント証明書のCA局証明書は、サーバ側のtruststoreに読み込んだもの。

#SSLContext
手順としては標準のtruststoreを使う場合 ( https://qiita.com/jkomatsu/items/40f929894e66b9739a28 ) と同じく SSLContext を取得、SSLSocketFactory を得て Socket を作る。

というわけで SSLContext と SSLSocketFactory を作る部分はこのようになる。大体サーバ側と同じ。

“`

元記事を表示

JavaのSSLSocketを使う(クライアント編1)

#はじめに
クライアント側の第1段階として、標準のtruststoreを使ってSSL通信する。

#概要
サーバ側と同様にSSLContextのインスタンスを取得して、そこからSocketFactoryを得る。
SocketFactoryからSSLSocketが得られて、後は普通のSocketと同じように通信できる。

#標準SSLContext
標準のtruststoreを使うSSLContextの取得は簡単で、getDefault() すれば良い。
コードとしては、これだけになる。

“`
import javax.net.ssl.SSLContext;

.
.
.

SSLContext ctx = SSLContext.getDefault();
“`

#SocketFactory
SSLContextが取得できればこちらも簡単。前述の ctx を使って getSocketFactory() すれば良い。

“`
import javax.net.ssl.SSLSocketFactory;

.
.
.

SSLSocketFact

元記事を表示

【Java/Lombok】@SuperBuilderでバリデーションする

##はじめに

オブジェクト指向プログラミング初心者が考える最適なBuilderパターンを解説します。誤った考え方や改善案等ありましたらコメントいただければと思います。

##Lombokの@SuperBuilderではダメ?
Lombokには予め、スーパークラスからのフィールドにも対応したビルダーを自動で生成する@SuperBuilderアノテーションが用意されています。

“`java:SomeClass
import lombok.experimental.SuperBuilder;

@SuperBuilder
class SomeClass {
// some code…
}
“`

このように、アノテーション1つ頭につけるだけで、自動的に親クラスのブロパティを含むビルダーを生成してくれます。

@SuperBuilderについて詳しくはこちら。

https://projectlombok.org/features/experimental/SuperBuilder

しかし、このアノテーションは**バリデーションに対応していません**。加えて**

元記事を表示

メソッドのJavadocには何を書くべきなのか

Javaで開発しているチームで、Javadocに何を書くべきかわからない、という課題がありました。[エンジニアのためのJavadoc再入門講座](https://www.shoeisha.co.jp/book/detail/9784798119489)の3章を読んで自分なりにまとめた内容となります。

## メソッドのJavadocの構成
メソッドのJavadocの構成の基本形は以下となります。

“` java
/**
* 主説明
* @param 引数の説明
* @return 返却値の説明
* @throws 例外の説明
*/
“`

## 引数の説明に書くべきこと
まず、引数の説明に書くべきことについて。主説明については後回しにします。
引数を取るメソッドのJavadocにはすべての引数についての説明を記載すべきです。引数の説明には`@param`タグを使用します。
引数の定義域が大事なポイントになります。引数に取りうる値の範囲は明確になっているかを最初に確認しましょう。[^1]

### 特別な値を受け取ったときの挙動
nullや0、負数、空文字などの特別な値

元記事を表示

Javaで書くフィボナッチ数列

Javaで書くフィボナッチ数列

Javaを使ってフィボナッチ数列を生成するプログラムを作成しました。

“`java:コード

public class Fibonacci {
public static void main(String[] args)
{
int f0,f1,f2;

f0 = 0;
f1 = 1;

System.out.println(f0);

while(f1 < 100000) { System.out.println(f1); f2 = f0 + f1; f0 = f1; f1 = f2; } } } ``` ```java:結果 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 46368 75025 ```

元記事を表示

【Java発展学習16日目】マルチスレッドプログラミング

# マルチスレッドプログラミング(並列処理; multi-thread programming)
[参考: 発展学習3日目(ラムダ式)](https://qiita.com/b150005/items/6084efe79c1a425f7a30#%E3%83%A9%E3%83%A0%E3%83%80%E5%BC%8Flambda-expression)
全ての処理は特定の**スレッド**上で実行され、`main()`メソッドは**mainスレッド**上で動作する。

ここで、サブスレッド(=スレッドクラス)は「`Thread`クラスのサブクラス」または「`Runnable`インタフェースの実装クラス」で定義され、
`Runnable`インタフェースは**関数インタフェース**であるため、**ラムダ**式を用いた記述が可能。

また、サブスレッドはスレッドクラスで再定義された`run()`メソッドの**実行完了時に自動消滅**され、JVMは全**ユーザスレッド**の実行終了を待機する。
スレッドの実行終了を待機しない場合は、`Thread#setDaemon()`メソッドを用いて**デーモ

元記事を表示

文字の切り取り方

Javaで標準入力で入力した文字をsubstringとcharAtでとる方法です。

substringで1文字ずつとる場合

“`Java
import java.util.Scanner;

public class flora2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println(“floraの文字を入力してください”);
String ans = sc.nextLine();
int nagasa = ans.length();
for(int i=0;i

元記事を表示

【Java発展学習14-15日目】設計原則とGoFデザインパターン、モジュールシステム

# 6つの設計原則

| 分類 | 設計原則 | 内容 |
|:–|:–|:–|
| コード記述 | DRY(Don’t Repeat Yourself) | 繰り返さない |
| | PIE(Program Intently and Expressively) | 意味・意図の明確化 |
| クラス設計 | SRP(Single Responsibility Principle) | 単一責任原則 |
| | OCP(Open-Closed Principle) | 開放閉鎖原則 |
| クラス間連携 | SDP(Stable Dependencies Principle) | 安定依存原則 |
| | ADP(Acyclic Dependencies Principle) | 非循環依存原則 |

## PIE
`PIE`では、「コメント文を取り除いても可読性の高いコード」を目指す。
具体的には、以下の3つの手法をとる。

> 1. 変数名で**役割・目的**を表す
> 2. **マジックナンバー**をfinal定数で命名
> 3. 制御構造の深い処理への命名

元記事を表示

Couchbase Java SDK解説:分散トランザクション API解説および包括的な利用例

## はじめに

Couchbase SDKを使った、Javaプログラミングにおけるトランザクションの扱いを具体的なAPIコールに即して解説します。

本記事の関連情報として以下をご参照ください。

[Couchbase Java SDK解説:分散トランザクションの内部メカニズム](https://qiita.com/yoshiyuki_kono/items/2d428b16b224b8c01239)

[Couchbase Java SDK解説:分散トランザクション〜エラー処理を理解する](https://qiita.com/yoshiyuki_kono/items/d7eb2b9553d858c7cb93)

[Couchbase Java SDK解説:分散トランザクションプログラミング入門](https://qiita.com/yoshiyuki_kono/items/4efb2f1f5a03051e28c5)

## ドキュメントへのK/Vアクセス

#### ドキュメントの取得
ドキュメントを取得するには、`get`と`getOptional`の2つのメソッドがあります。

元記事を表示

OTHERカテゴリの最新記事