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

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

Java スレッド処理

#【Java スレッド処理編】

業務内で使用する Javaのスレッド処理のメモです。
開発時に使用しているのでまとめました。

##スレッドとは。

スレッド(thread)とは、プログラム上で複数の処理を同時に動かす仕組みである。

Javaには、複数の処理を同時に実行するAPIが備わっている。
→threadクラスを利用(スレッド生成)

・コンビニのレジを例に考えます。
昼休憩などで人がいっぱいで混雑時に、レジが1ヵ所だけだと時間がかかるし、不便。
レジが2ヵ所、3ヵ所と機能していれば短時間で人を捌けるし効率が良い。

プログラムも同じで処理を複数同時に動かせば、短時間で効率よく処理が可能になる。
その仕組みがスレッドです。スレッドは日常でもよく使われている。

##スレッド処理

###1、threadクラスを継承し、run( )メソッドをオーバーライドする。
run( )には、スレッドで処理したい内容を書き込む。

(オーバーライドとは、親クラスを継承して、子クラスを宣言時に親クラスのメンバを子クラス側で上書きすること)

###2、別スレッドの実行を開始したい場所で、①

元記事を表示

Javaの開発環境を作ろう

# はじめに

新人エンジニアです。
会社でJavaを使って開発を行っているので、練習としてJavaの開発環境を構築することしました。
Javaってオワコンじゃね??って声が聞こえそうですが、まあ会社の標準フレームワークなので仕方ないですね。

# 環境

| 役割 | ツール名 |
|:-:|:-:|
| OS | WSL2 |
| エディター | VScode |
| Java | OpenJDK 8 |
| フレームワーク | Spring Boot |
| ビルド | Maven |
| テスト | JUnit |
| CI/CD | Jenkins |
| コンテナ | Docker |
| コンテナ管理ツール| Kubernetes |

# Jenkinsコンテナを作る

“`:WSL2
$ sudo docker run -p 8080:8080 -p 5000:5000 -v ~/jenkins:/var/jenkins_home jenkins/jenkins:lts

(中略)

************************************

元記事を表示

【Java】ランダムメソッド

Javaに初めから用意されているクラス、java.util.Random java.lang.Math
この2つがあります。

今回はMathクラス(java.lang.Math)のランダムメソッドについて簡単な説明をします。
Math.random()
ポイント
・戻り値の型は double
・0.0 ~ 1.0未満 の範囲で乱数を取得します


①double rand = Math.random();
②double rand = Math.random() * 10;
③int rand = (int)(Math.random() * 10);

①戻り値の型がdoubleなので変数の型は基本doubleでないとコンパイルエラーとなります。
②0.0から10.0未満の範囲で乱数を取得する場合、ランダムメソッドの後に * 10 をつけます。
③整数での乱数を取得する場合、②をint型にキャストする必要があります。

元記事を表示

【Java Bronze学習】カプセル化・データ隠蔽・情報隠蔽の違い

##前提
使用教材
・スッキリわかるJava入門
・Java SE 7/8 Bronze問題集(黒本)

Java Bronzeの学習中に、ややこしい!と思った概念「カプセル化」「データ隠蔽」「情報隠蔽」についてまとめます。
「スッキリわかるJava入門」ではカプセル化・情報隠蔽・データ遮蔽の違いを明瞭にしていない(そもそも「データ隠蔽」「情報隠蔽」という用語が出てこない)ので、Java黒本の内容を参考にしています。

##カプセル化

「1 関係するデータをまとめること」
「2 まとめたデータを必要とする処理をまとめること」

※カプセル化は、データ遮蔽と組み合わせることで完成する。

##データ隠蔽
「外部からフィールドを直接操作できないようにすること」

目的:カプセル化の維持

カプセル化によってまとめられたデータが、まとめたもの以外のモジュールから利用されて関係が複雑化するのを防ぐ。

実装方法
・アクセス修飾子をprivateにすることで外部からフィールド操作を禁じる
・フィールドにアクセスしたい場合はgetter, setterと

元記事を表示

Android RecyclerViewが含まれるViewをTransitionでアニメーションしたときに落ちる

ちょっと詰まったのでメモです。

RecyclerViewがスクロールしているときにTransitionで親Viewのアニメーションが走るとクラッシュしていた。

“`
java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child’s parent first.
at android.view.ViewGroup.addViewInner(ViewGroup.java:5034)
at android.view.ViewGroup.addView(ViewGroup.java:4865)
at android.view.ViewGroup.addView(ViewGroup.java:4805)
at android.support.v7.widget.RecyclerView$5.addView(RecyclerView.java:851)

元記事を表示

Cloud Toolkitを使用したECSインスタンスへのNode.jsアプリケーションのデプロイ

この記事では、Cloud Toolkitを使って**Alibaba Cloud ECSインスタンス**に**Node.js**アプリケーションをデプロイする方法を紹介します。

*本ブログは英語版からの翻訳です。オリジナルは[こちら](https://www.alibabacloud.com/blog/deploying-a-node-js-application-to-an-ecs-instance_594819)からご確認いただけます。一部機械翻訳を使用しております。翻訳の間違いがありましたら、ご指摘いただけると幸いです。*

前回の記事では、Alibaba Cloud [Elastic Compute Service (ECS) ](https://www.alibabacloud.com/ja/product/ecs)インスタンスに直接ローカル Java アプリケーションをデプロイする方法について説明し、読者から多くのフィードバックをいただきました。そこで、読者からの質問に答えるために、今回の記事ではさらに、Alibaba Cloud ECSインスタンスにNode.jsアプリケ

元記事を表示

JavaはPDFにフォームフィールドを追加します

インタラクティブフィールドとも呼ばれるPDFフォームフィールドは、主にユーザー情報の収集に使用されます。一般的なフォームフィールドには、ラジオボタン、チェックボックス、リストボックス、およびコンボボックスが含まれます。このテキストでは、Free Spire.PDF for Javaを使用して、JavaプログラムでPDFフォームフィールドを作成する方法を紹介します。

**JARパッケージのインポート**
**方法1:**[Free Spire.PDF for Java](https://www.e-iceblue.com/Download/pdf-for-java-free.html)をダウンロードして解凍し、libフォルダー内のjarパッケージを依存関係としてJavaアプリケーションに直接インポートします。

**方法2:**Mavenリポジトリーからjarパッケージをインストールし、pom.xmlファイルのコードを次のように構成します。

“`java


com.e-iceblue

元記事を表示

Cloud Toolkit.xを使ったKubernetesのコンテナサービスへの移植

この記事では、Cloud Toolkitを利用してContainer Service for **Kubernetes**上にアプリケーションをデプロイする方法を紹介します。

*本ブログは英語版からの翻訳です。オリジナルは[こちら](https://www.alibabacloud.com/blog/deploying-an-application-to-container-service-for-kubernetes_594804)からご確認いただけます。一部機械翻訳を使用しております。翻訳の間違いがありましたら、ご指摘いただけると幸いです。*

前回の記事では、ローカルのJavaアプリケーションをAlibaba Cloud ECSインスタンスに直接デプロイする方法を説明しました。すでにAlibaba Cloud Container Service for Kubernetesを利用している方にとっては、このプラグインを使って [Container Service for Kubernetes](https://www.alibabacloud.com/ja/product/kub

元記事を表示

AbstractFactoryパターン

###AbstractFactoryパターンとは
抽象的な部品を組み合わせて抽象的な製品を作る。
部品の具体的な実装には注目せず、インターフェース(API)に注目する。
そして、そのインターフェース(API)だけを使って部品を組み立て、製品をまとめる。

###AbstractProduct(抽象的な製品)の役
AbstractProduct役はAbstractFactory役によって作り出される抽象的な部品や製品のインターフェースを定める。

““java
package factory;

/**
* HTMLのハイパーリンクを抽象的に表現したクラス
*
*/
public abstract class Link extends Item{
// リンクの飛び先のURL保持用
protected String url;

public Link(String caption, String url) {
super(caption);
this.url = url;
}
}
““

““java
package factory;

impor

元記事を表示

GoアプリケーションをECSインスタンスにデプロイする方法

今回は、**Alibaba Cloud ECSインスタンス**に**Goアプリケーション**をデプロイする方法を紹介します。

*本ブログは英語版からの翻訳です。オリジナルは[こちら](https://www.alibabacloud.com/blog/deploying-a-go-application-to-an-ecs-instance_594790)からご確認いただけます。一部機械翻訳を使用しております。翻訳の間違いがありましたら、ご指摘いただけると幸いです。*

前回の記事では、ローカルJavaアプリケーションをAlibaba Cloud ECSインスタンスに直接デプロイする方法を紹介しました。今回は、Alibaba Cloud [Elastic Compute Service (ECS)](https://www.alibabacloud.com/ja/product/ecs) インスタンスに Go アプリケーションをデプロイする方法を紹介します。

#アプリケーションをローカルに開発する
クラウド上で動作するGoアプリケーションをコンパイルしても、ローカルで動作するGoア

元記事を表示

JavaでTCP通信(ソケット通信)(ASCII,Binary)

#ASCII

####Server

“`java:ASCII-Server

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.Reader;
import java.io.Writer;
import java.net.ServerSocket;
import java.net.Socket;

public class ServerASCII {

//80番ポートを使用
private static final int LISTEN_PORT = 80;
public static void main(String[] args){

//受け入れソケット
Socket socket =null;

//受動的ソケット(サーバーソケット)

元記事を表示

はじめて学ぶjava入門 #2

##開発の流れ
1、ソースコードの作成
javaが定める文法をソースコードで記述する

2、コンパイル
ソースコードにコンパイルという処理を行ってバイトコードという状態に変換する

3、実行
コンパイル終了後は、インタプリタと呼ばれるソフトウェアにバイトコードを実行する

##大切な意識

###正確に記述する
英数字は基本的に半角で入力する
似ている文字を間違えないようにする

###上から下ではなく外から内へ
カッコとじたかどうかわからなくなってしまうので開いてすぐ閉じるを意識する

###読みやすいコードを記述する
誰が読んでもわかりやすいソースコードを記述するようにする

##インデント
ブロックの多重構造の見通しをわかりやすくするために字下げを行う

“`
public class Main {
public static void main(String[] args) {
System.out.println(“hello, world!”);
}
}
“`

##コメント
ソースコードに解説文を加えることができる
プログラムのコンパイル時を実行時には

元記事を表示

Builderパターン

###Builderパターンとは
全体を構成している各部分を作り、段階を踏んで組み上げていくパターンのことを指す。

###Builder(建築者)の役
Builder役はインスタンスを生成するためのインターフェースを定める。
Builer役にはインスタンスの各部分を作るためのメソッドが用意される。

““java
package builder2;

public abstract class Builder {
public abstract void makeTitle(String title);
public abstract void makeString(String str);
public abstract void makeItems(String[] items);
public abstract void close();
}
““

###ConcreteBuilder(具体的建設者)の役
ConcreteBuilder役はBuilder役のインタフェースを実装しているクラス。
実際のインスタンス生成で呼び出されるメソッドがここで定義される。

元記事を表示

記事を読みながら理解する!Elasticsearch入門者が抑えておきたい内容まとめ

分散型でオープンソースの検索・分析エンジン、Elasticsearch。
最近、興味がある、これから業務で使う予定、なんて人もいるのではないでしょうか。
そんな時は、

– [Elasticsearch Reference | Elastic](https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html)
– [Elasticsearchのデータ操作入門 | Elastic](https://www.elastic.co/jp/webinars/getting-started-elasticsearch?baymax=default&elektra=docs&storm=top-video)

を見ておけばオッケ~!!

・・・といえば(公式のだし)間違いなくそうなんですが、

– とっかかりが英語だとハードルが高い
– とりあえず要点だけ把握してガンガン使ってみたい

となる人も多いと思うので、入門者向けにいい感じの記事をピックアップ&実際に動かしてみることを想定して、まとめてみました。

##

元記事を表示

H2 Database のデータベースを任意の場所に作成する方法

はじめに

H2DBのデータベースを新しく作成するときに、システムデフォルトの
JDBC URL: jdbc:h2:~/test (C:\Documents and Settings\[username]\test )ではなく
直接アクセス可能なCドライブ直下のディレクトリに作成したいけど上手くいかない時の解決策です。
今回は「C:\data」のディレクトリに「test」という名前のデータベースを作成したいと思います。

解決策1

H2コンソールから JDBC URL:に「jdbc:h2:C:\data\test」と入力し接続をクリック
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/664939/b92121b1-fe6d-b90a-404e-e57a707c5df6.png)

※解決策1でデータベースが作成出来るかもしれませんが、変なエラーが出て作成出来ない可能性があります。

解決策2(解決策1でダメな時)

![2.png](https:/

元記事を表示

今さらだけど! AndroidのWorkManagerをJavaで実装してみる(初級編)

# はじめに
AndroidのWorkManagerを使う機会があり、色々調べてみたことを備忘録として記します。
当記事はWorkManagerの基本的な使い方を記します。内容は初心者向けの簡単なものになっています。

# WorkManagerとは
[公式ページ](https://developer.android.com/topic/libraries/architecture/workmanager?hl=ja)によると以下のような記述があります
>WorkManager API を使用すると、アプリが終了、またはデバイスが再起動した場合でも実行することが要求される延期可能な非同期タスクのスケジュールを簡単に設定できます。

要するに、

* 遅延タスク、非同期タスクの実行に使える
* バックグラウンドで実行する

というAPIだということがわかります。
以前は、JobSchedulerやBroadcastReceiverを使って実装していたアレです。これが簡単にできるようになったみたいです。
詳細な機能としては、ネットワークや充電状態の制約を追加したり、実行タイミングを指定した

元記事を表示

EC2(AmazonLinux2)にJava、Apache、Tomcat9をインストール

#概要
忘れないように、AmazonLinux2に、Java、Apache(WEBサーバ)、Tomcat(サーブレットコンテナ)をインストールしたことをメモしておく。

+ Webサーバ上で動くJavaプログラムがサーブレット
+ サーブレットを動かすソフトがサーブレットコンテナで、今回はそれがTomcat
+ リクエストに応じてレスポンスを返すWEBサーバのソフトがApache
+ TomcatはApacheがなくとも動くには動く。簡易的なWEBサーバソフトとしても機能する。

https://wa3.i-3-i.info/word12843.html

#Javaのインストール
java-1.8.0-openjdk-develをインストール。develの有無の違いは[こちら](https://qiita.com/msakamoto_sf/items/92d421bf724efa740350)を参考にさせていただいた。実行環境だけならjava-1.8.0-openjdkで良いが、-develが付く方はjavacなどの開発用コマンドが使える。基本的には-develをインストール。

`

元記事を表示

Pythonの基礎備忘録

#記事概要
Pythonを少しでも読めるようになってみようと思い、[参考書](#参考文献)に沿って学習した備忘録になります。
Javaと比較して自身が気になった点、便利と感じた点をまとめております。
※かなり基礎的な内容になります。

#算術演算子
四則演算(`+-*/`)と余剰計算(%)はJavaと変わりませんが、累乗が便利にできる。
ただし、Pythonの`/`は、割り切れないときに浮動小数値になる。`//`演算子を使うと整数値(浮動小数の場合は小数点以下切捨て)になる。
Pythonでは「`**`」で累乗を行うことができる。
#####例

“`java:java
Math.pow(2, 3)
3 / 2
“`

“`Python:python
2 ** 3
3 // 2
“`

#変数
Pythonでは変数を定義する際に型の定義が不要。

#####例
“`java:java
//文字列
String str = “あいうえお”;

//数字
int index = 100;

//リスト
List<

元記事を表示

[ev3×Java] インターフェースと実装と継承

この記事では、ロボットを使ってインターフェースという機能を主に見ていきます。

#目次
0.インターフェースとは
1.コードの構造
 1-0.インターフェース内で処理を実装するサンプルコード
 1-1.クラスをつくってインターフェースを実装するサンプルコード
2.インターフェースTimerListnenerと実装クラスTimerのサンプルコード
3.leJOSにおけるモーターのクラスとインターフェースの関係

#0.インターフェースとは

インターフェースは**メソッドの仕様のみ**を定義するクラスのようなものです。
インターフェースの中にはメソッドが並べられていますが、その**処理**は書いてありません。

なのでメソッドを見れば、**何をするものなのか**はわかりますがそれが**実際にどういった処理をするものなのか**はわかりません。
メソッドの処理の内容は、**インターフェースを実装するクラス**の中を見ればわかります。

Point : **インターフェース**
メソッドの仕様(戻り値とメソッド名、引数)のみを定義する
実際には処理をしない

Point

元記事を表示

SpringBoot + MongoDB を使ってREST APIを作ってみよう

# この記事は何?

データストアにMongoDBを利用し、SpringBootを使ったREST APIを構築するハンズオン用ページです。
研修用の突貫なので、簡単に順次手順をまとめ、写経することで簡単に体感できることを目標にします。

内容自体はほぼ下記のコピペです。Gradleを使いたかったのでちょっと内容変えています。
https://stackabuse.com/spring-data-mongodb-tutorial/

# 前提

* Javaを触ったことがあること
* IntelliJ IDEAを使えること
* REST APIとは何かを知っていること
* Postmanを使えること
* この辺り参考にしてください:https://qiita.com/notch0314/items/97c7d1bb565fdae4a712
* NoSQL・MongoDBについて知っていること

# 実装概要

SpringBootを使ってREST APIを作ります。
データストアにMongoDBを使用し、リクエストに応じてMongoDBのデータをCRUDします

完成物は下記Gi

元記事を表示

OTHERカテゴリの最新記事