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

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

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

# はじめに

Androidの通知(Notification)に関する基本的な使い方を記します。
内容は初心者向けの簡単なものになっています。サンプルアプリをベースに説明したいと思います。

サンプルアプリの環境は以下のとおりです。
– Android Studio 4.0.1
– MacOS 10.15.6
– Android Virtual Device – android10.0 / 1080 x 2160

# Notificationとは
[公式ページ](https://developer.android.com/guide/topics/ui/notifiers/notifications?hl=ja)によると以下のような記述があります

> 通知は、アプリの UI 以外で Android が表示するメッセージであり、リマインダー、他の人からのメッセージ、アプリからのタイムリーな情報などをユーザーに提供します。ユーザーは通知をタップしてアプリを開いたり、通知から直接操作したりできます。

うーん、難しいですね・・・
要するにスマホのステータスバーに表示されるアレですね

元記事を表示

Java バッファリング処理

#【Java バッファリング処理】

業務内で使用する Javaのバッファリング処理のメモです。
開発時に使用しているのでまとめました。

##バッファ

バッファは、文字列を格納する変数である。
bufferは、「緩衝材」の意味を持つ。

プリミティブ型のデータを保存するための入れ物。
boolean型以外のすべてのプリミティブ型がある。

##バッファリング処理

バッファリング処理とは、
書き込み時であれば、データを一旦メモリー(バッファ)に蓄積し、いっぱいになったところで、ファイル出力する処理。
読み込み時であれば、バッファにまとめてデータを読み込み、いっぱいになったところで、データを処理。
→データをまとめて処理が出来て、読み書きが効率化する。

元記事を表示

Java 文字列

#【Java 文字列】

業務内で使用する Javaの文字列のメモです。
開発時に使用しているのでまとめました。

##StringBuilder

StringBuilderクラスは、インスタンス生成してから使用可能
文字列操作を行うためのクラスである。

文字列結合では、appendメソッド、引数を利用し結合したい文字列を使用する。

多数の文字列を連結する場合、最も高い性能を発揮するStringBuilderの使用を試みるべき。

“`java
//業務内で使用している形式の一部を抜粋

//インスタンス生成
StringBuilder sb = new StringBuilder();

//SQL生成
sb.append(“SELECT”);
sb.append(“Sample”);
sb.append(“Sample2”);
sb.append(“Sample3”);
sb.append(“FROM”);
sb.append(“SampleTable”);

//※365日24時間、バッチ処理を行っているので、処理速度が遅くならないように使用している。
“`

##S

元記事を表示

Spring Data JPAのsaveのselect-insertをinsertだけにする

# 現象
spring-data-jpaでidを明示的に指定して“`save“`する場合、以下のログのようにselectしてからinsertになる。

“`java
Sample newEntity = new Sample(1L, “name”);
repository.save(newEntity);
“`

“`sql
Hibernate: select sample0_.id as id1_0_0_, sample0_.name as name2_0_0_ from sample sample0_ where sample0_.id=?
Hibernate: insert into sample (name, id) values (?, ?)
“`

idがすでに永続化済みかどうかをselectしてからinsertするのはjpaの挙動である。しかし、ある種のバッチ処理などでは、仕様としてそのidが存在しない事が明らかな場合がある。この場合はselectは単に無駄となるので防ぎたい。以下はこの事前selectを防ぐ方法について。

# ソースコード

“`grad

元記事を表示

【Java Bronze】学習メモ(インターフェース,staticメソッド,型変換など )

Java Bronze学習にあたり、よく間違える箇所のまとめ。

##インターフェース

・フィールドは定数のみ
フィールドは全て、final staticで暗黙的に修飾される。(修飾子は省略可能)
staticでフィールドを修飾することができる
(※staticで定義された値はインスタンスを作成しなくても実行できるため)

・メソッドは全て、public abstractで暗黙的に修飾される
staticでメソッドを修飾することはできない。
(※staticメソッドはインスタンスを作らなくても実行できてしまうため、抽象的なメソッドを修飾することはできない)

##staticメソッド
staticメソッドから、自クラスに定義されたインスタンスフィールドにアクセスすることはできない。
→コンパイルエラー発生!

staticメソッドはインスタンスを作らなくても実行できる。
インスタンス作成前にstaticメソッドからインスタンスフィールドにアクセスしてしまうのを防ぐためにコンパイルエラーが発生する。

元記事を表示

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:/

元記事を表示

OTHERカテゴリの最新記事