- 1. Javaパフォーマンス診断ツールの代表格「JProfiler」の基本原理とベストプラクティス
- 2. Javaの配列・リスト・ストリーム相互変換一覧表
- 3. JavaのTimerで時間指定の処理を作ろう!!
- 4. JavaでDBlayerの実装(RDB、MySQL)
- 5. vimでJava言語用のポップアップ表示を設定する。
- 6. 【Elasticsearch×Java】Javaで取得されたクエリの実行結果が想定と異なったので調査→対応した内容まとめ
- 7. アリババクラウドのLOG Java Producerの使い方
- 8. Array練習
- 9. Javaライブラリ – Alibaba CloudのLOG Java Producerでログサービスへのデータ送信を支援
- 10. Decoratorパターン
- 11. Compositeパターン
- 12. Windowsでjarファイルをダブルクリックで開く
- 13. ゴリゴリのSIerのSEが初めての個人開発で公開まで頑張ってみた過程
- 14. 始めて学ぶjava #3 式と演算子
- 15. [ev3×Java] 表示、音、LEDの制御
- 16. SpringBootによるWEBアプリをWARにしてTomcatサーバーにデプロイ
- 17. 【SpringBoot】DataSourceProperties$DataSourceBeanCreationException
- 18. 【Java】printfで書式を指定して出力する%s,%d,%f【フォーマット指定子】
- 19. 【Java】参照型である文字列におけるequalsと==の違い
- 20. 【React.useRef】イベントリスナー内で最新のステートを参照できない時の対処法
Javaパフォーマンス診断ツールの代表格「JProfiler」の基本原理とベストプラクティス
この記事では、いくつかの一般的な**Java**パフォーマンス診断ツールについて説明し、**JProfiler**の基本的な原則とベストプラクティスを強調しています。
*本ブログは英語版からの翻訳です。オリジナルは[こちら](https://www.alibabacloud.com/blog/jprofiler-best-practices-powerful-performance-diagnostic-tool_594958)からご確認いただけます。一部機械翻訳を使用しております。翻訳の間違いがありましたら、ご指摘いただけると幸いです。*
#背景
パフォーマンス診断は、ソフトウェアエンジニアが日々の業務の中で頻繁に直面し、解決しなければならない問題です。アプリケーションのパフォーマンスを向上させることで大きなメリットを得ることができます。Javaは最も人気のあるプログラミング言語の一つです。そのパフォーマンス診断は、以前から業界全体で注目を集めています。Javaアプリケーションでは、多くの要因がパフォーマンスの問題を引き起こす可能性があります。そのような要因には、スレッド制御、デ
Javaの配列・リスト・ストリーム相互変換一覧表
インスタンスメソッドで直接変換できたり、クラスメソッドで用意されていたり、もっと複雑なことが必要だったり、ややこしかったので纏めておく。
| from \ to | `T[]` | `List
` | `Stream ` |
|:–|:–|:–|:–|
| **`T[] array`** | `Arrays.copyOf(array, array.length)` | `Arrays.asList(array)` (固定長・配列と連動) | `Arrays.stream(array)``Stream.of(array)` |
| **`Listlist`** | `list.toArray(new T[0])` | `new ArrayList<>(list)` `Collections.unmodifiableList(list)` (変更不可) | `list.stream()`
`list.parallelStream()` (並列) |
| **`Streamstream`** | `stream.t
JavaのTimerで時間指定の処理を作ろう!!
#JavaTimer
一定間隔の時間を指定して、処理を実行したいときに使える“`java:JavaTimer
import java.util.Timer;
import java.util.TimerTask;public class TimeAction {
public static void main(String[] args) {
Timer timer = new Timer();
TimerTask tt = new TimerTask() {
int count = 0;
public void run() {
// 定期的に実行したい処理
count++;
System.out.println(count + “回目のタスクだよん。”);
}
};
//2秒後に、5秒間隔で実行する
timer.sched
JavaでDBlayerの実装(RDB、MySQL)
#MySQL
###DBConstants
まず、DB接続用の定数を定義しよう!!“`java:DBConstants
public class Constants {public static final String DB_SERVER = “localhost”;
public static final String DB_PORT = “0000”;
public static final String DB_DRIVER = “com.mysql.jdbc.Driver”;
public static final String DB_USERNAME = “root”;
public static final String DB_PASSWORD = “root”;
public static final String DB_URL = “jdbc:mysql://localhost:0000/schema?autoReconnect=true&useSSL=false”;
}
“`###DBConection
つぎに、データベースに接続するため
vimでJava言語用のポップアップ表示を設定する。
まずはじめに、、、私は派遣社員だ。
そのため、派遣先への面接時に、営業が同席する。
その営業が私の意見を無視して勝手に話を進めるため、あれよあれよでその派遣先が決まることがある。
派遣社員になった以上、人間を捨てているが、ちょっと勘弁して欲しい。と言うことで、次はJava言語案件になるかもしれない。
と言うことは、Java言語を勉強し直す必要が出てきた。
しかし、Java言語関係の本は、使わないと思い、実家に置いたままだ。
仕方ないため、初学本から買い増しすることにした。
何冊何種類の初学本を買えば済むのか・・・できればKindle本を買うつもりなのだが、見にくいため、どうしても紙の本になる。
何か良い対策はないだろう。※表題は”Java言語用”としているが、あまりJavaに関係ない。
# 本題
初学向けのプログラミングであれば、仰々しいIDEは絶対にいらない。
そんな環境構築をする暇があるならば、少しでも勉強する時間に充てたい。
如何せん。
Vimを使いこなせないため、未だにIDE並の構築が出来ていないままだった。
これを機に、[Language Server Protoc
【Elasticsearch×Java】Javaで取得されたクエリの実行結果が想定と異なったので調査→対応した内容まとめ
JavaでElasticsearchを用いた検索を行った際、想定通りの結果が得られなかったので、調査→対応を行いました。
その内容をまとめておきます。
※対応内容と結論だけ知りたい方は、対応内容、結論のみお読みくださいませ!## 環境
– OS: Windows10
– Java: 11(Amazon Corretto 11)
– IDE: Eclipse 2020-03
– Elasticsearch: 7.4.2
– Kibana: 7.4.2## 調査
### ソース
– インデックス定義
– Javaソースコード
– Kibanaでの実行クエリ(Javaソースコードと同等の内容)
はそれぞれ以下の通り。インデックス定義では、以下の通り、mappingsの定義に加え、analyzerの設定も行っています。
フィールド名のポジショニングは以下の通り。|フィールド名|データタイプ|ポジショニング|
|—|—|—|
|itemId|integer|商品ID(主キーに当たる)|
|itemName|text|商品名|
|itemNameKana|text|商
アリババクラウドのLOG Java Producerの使い方
この記事では、**Alibaba Cloud**の**LOG Java Producer**という、**Log Service**にデータを送信するのに役立つ、使いやすく設定性の高い**Java**ライブラリの使い方を紹介しています。
*本ブログは英語版からの翻訳です。オリジナルは[こちら](https://www.alibabacloud.com/blog/how-to-use-alibaba-cloud-log-java-producer_594954)からご確認いただけます。一部機械翻訳を使用しております。翻訳の間違いがありましたら、ご指摘いただけると幸いです。*
#背景
[Alibaba Cloud LOG Java Producer](https://github.com/aliyun/aliyun-log-java-producer?spm=a2c65.11461447.0.0.3ab4677338bUtr)は、ビッグデータや高同時実行シナリオで動作するJavaアプリケーション向けに設計された高性能な書き込みLogHubライブラリです。APIやSDKを使用する場合と比較
Array練習
“`java
package Array_pra;
import java.util.ArrayList;
import java.util.Iterator;public class Animals {
public static void main(String[] args) {
//まずはインスタンスをつくる
ArrayListAnimal=new ArrayList ();
//値をaddメソッドで追加
Animal.add(“ひつじ”);
Animal.add(“ねこ”);
Animal.add(“いぬ”);
Animal.add(“きつね”);
Animal.add(“りす”);//Animalの要素数を出力
System.out.println(Animal.size());//Animalの配列内が空っぽか否か
System.out.println(Animal.isEmpty());//Animalのどこに”ひつじ”が入ってる
Javaライブラリ – Alibaba CloudのLOG Java Producerでログサービスへのデータ送信を支援
本記事では、ログサービスへのデータ送信を支援する、使いやすく設定性の高い**Java**ライブラリ「**Alibaba CloudのLOG Java Producer**」を紹介します。
*本ブログは英語版からの翻訳です。オリジナルは[こちら](https://www.alibabacloud.com/blog/alibaba-cloud-log-java-producer—a-powerful-tool-to-migrate-logs-to-the-cloud_594953)からご確認いただけます。一部機械翻訳を使用しております。翻訳の間違いがありましたら、ご指摘いただけると幸いです。*
#背景
ログは至る所にあります。世の中の変化を記録するキャリアとして、ログはマーケティング、研究開発、運用、セキュリティ、BI、監査など多くの分野で広く利用されています。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/2dc8f374-5fd6-fa2e-a614-9cd640
Decoratorパターン
###Derocatorパターンとは
オブジェクトに飾り付けをほどこしていく。###Componentの役
機能を追加するときの核になる役。““java
package decorator;public abstract class Display {
public abstract int getColumns();
public abstract int getRows();
public abstract String getRowText(int row);
public final void show() {
for (int i = 0; i < getRows(); i++) { System.out.println(getRowText(i)); } } } ```` ###ConcreteComponentの役 Component役のインターフェースを実装する役。 ````java package decorator; /** * 1行の文字列を表示するクラス */ public class StringDisplay
Compositeパターン
###Compositeパターンとは
容器と中身を同一視し、再帰的な構造を作る。###Leaf(葉)の役
「中身」を表す役。
この役の中には他のものを入れることはできない。““java
package composite;public class File extends Entry{
private String name;
private int size;public File(String name, int size) {
this.name = name;
this.size = size;
}@Override
public String getName() {
return name;
}@Override
public int getSize() {
return size;
}@Override
protected void printList(String prefix) {
System.out.println(prefix + “/” + this);
}
}
““###Co
Windowsでjarファイルをダブルクリックで開く
#Windowsでjarファイルを開く
配布用にjarファイルを作り、いざ配布をしたところMacではダブルクリックで簡単に開けるもののWindowsでは開けない場合がある。私がダブルクリックで動くようにした方法をここにまとめる。
#javaのインストール
javaがないと始まらないので無料のjava8を指示にしたがってインストールする。
https://java.com/ja/download/
#レジストリエディタの編集
ここが大事。虫眼鏡のところでregeditと検索。開いたら、HKEY_CURRENT_USER/Software/Classes/Applications/javaw.exe/shell/open/command
のように移動していく。「(既定)」をダブルクリックし「”C:¥…exe” “%1″」となっているものを「”C:¥…exe” -jar “%1″」と書き換える。HKEY_CLASSES_ROOT/Applications/javaw.exe/shell/open/commandでも良い。
#まとめ
最初はjarファイルを右クリックでプログラムから開く
ゴリゴリのSIerのSEが初めての個人開発で公開まで頑張ってみた過程
[ゴリゴリのSIerのSEが個人開発でWebサービスを作ってみた](https://qiita.com/an_riri88/items/ba8220234ab2da7d3787)
の続き、みたいな。前回「Webサービスを作ってみた」話を書きました。
書いたやつを見て思ったんですが、ほとんどWebサービスの紹介でSIerの要素があんまり入ってない。
前回の意図としては、Webサービスそのものをアピールするというより「SIerはBPに投げるだけでプログラミングなんてしないよ」なんていう声をたまに聞くので、SIerの経験しかないSEがプログラミングやってWebサービスっぽいものを作るとこんな感じになりますよ、というひとつの実験結果をお見せしたかったのです。それが成功か失敗かは置いといて。
ただ、「こんなの作りました」しか書いてない気がするので、大まかにどんな過程で開発を進めていったかを書きますので、何かの参考になれば…と思います。
ほんと大まかです。
モダンではありません。
読み物的な感じです。
「ポエム」タグです。#1.動機づけ
今回は「作りたいもの」が自分の開発のきっかけ
始めて学ぶjava #3 式と演算子
##式とは?
“`
public class Main {
public static void main(String[] args) {
int a;
int b;
a = 20;
b =a+5;
System.out.println(a);
System.out.println(b);
}
}
“`実行結果
“`
20
25
“`6行目のようなものを式と呼ぶ。
「a」、「b」、「5」をオペランド、「+」、「*」を演算子と呼ぶ。
複雑な式であっても同じく、すべての式はこの二つで成り立っている。###リテラル
オペラントの中でも「5」や「hello,world」などソースコードに記述してあることをリテラルと呼ぶ。
リテラルは(int)などのデータ型を持っている。###エスケープシーケンス
¥記号とそれに続く一文字で記述する記述方法で特殊な一文字を表す。| 表記 | 意味 |
|:———–|————:|
| ¥” | 二重引用符記号 |
| ¥ ’ |
[ev3×Java] 表示、音、LEDの制御
この記事はJavaでev3を操作してみたい人のための記事です。
今回はインテリジェントブロックを使ってテキストを表示したり、音を出したり、LEDを制御していきたいと思います。#目次
0 . 用意するもの
1 . 表示
2 . 音
3 . LED
最後に#0.用意するもの
◯ ev3(インテリジェントブロック)
◯ パソコン(VSCode)
◯ bluetooth
◯ microSD
◯ [API Documentation](http://www.lejos.org/ev3/docs/overview-summary.html)(これをみながら進めていくのがオススメです。)#1.表示
##1-0 . 表示の基礎プログラム ①
◯3秒間文字を表示するプログラムです。
“`display00.Java
import lejos.utility.Delay;public class Display00
{
public static void main(String[] args)
{
System.out.println(
SpringBootによるWEBアプリをWARにしてTomcatサーバーにデプロイ
#前提
+ AmazonLinux2(EC2)
+ JDK1.8.0
+ MySQL 8.0
+ 構成管理はGradle 6.0
+ [こちら](https://qiita.com/fftcy-sttkm/items/03ef8d9ef7f1650b1a10)でEC2、RDSによるアプリケーションサーバー環境を構築済み。なお、当初EC2インスタンスをmicroにしていたが、メモリ不足でビルドが失敗したのでmediumにした。
+ [こちら](https://qiita.com/fftcy-sttkm/items/b3e083df38edded7d82f)でTomcatとJDKをインストール済み。今回はApacheは使わずとりあえずTomcatのみで動かす。
+ プロジェクトはGitHubからcloneする。#Springを実行するクラスにwarデプロイ用記述を追加
+ プロジェクトを作成したとき、自動でSpringを実行するクラスが作成されていると思う(@SpringBootApplicationアノテーションがついているクラス)。
+ ここにwarとしてデプロイ可能にするための記
【SpringBoot】DataSourceProperties$DataSourceBeanCreationException
## 発生事象
簡単に動作検証のために、SpringBootを使用してWebアプリを作ろうと思ったら、ビルド時に失敗。
下記のようなエラーが出た。“`
Description:Failed to configure a DataSource: ‘url’ attribute is not specified and no embedded datasource could be configured.
Reason: Failed to determine a suitable driver class
Action:
Consider the following:
If you want an embedded database (H2, HSQL or Derby), please put it on the classpath.
If you have database settings to be loaded from a particular profile you may need to activate it (no profiles are curr
【Java】printfで書式を指定して出力する%s,%d,%f【フォーマット指定子】
###表示形式を指定する関数
printf()などの、最後にfがつく関数を使用する場合には、表示形式を指定して出力することが可能。今まで使っていなかったが、いろいろ自分で使って試してみないことにはものにできないので、みながら試してみましょう。
###それぞれの書式の意味
指定子|対応する型|説明|
:–|:–|:–
%s|string|文字列を出力
%d|int|整数を10進法で出力
%f|float|実数を出力###使用例
“`java
public class MyApp {public static void main(String[] args) {
int score = 50; // %dが対応する
double height = 165.8; // %fが対応する
String name = “mako”; // %sが対応するSystem.out.printf(“name: %s, score: %d, height: %f\n”, name, score, height);
System.out.printf(
【Java】参照型である文字列におけるequalsと==の違い
###参照場所の比較と値の比較
|比較方法|内容|
|:–|:–|
|equals|メモリ領域の比較|
|==|値の比較|###プログラム例
“`java
public class MyApp {public static void main(String[] args) {
String s1 = “ab”; // メモリ領域を格納
String s2 = “ab”; // メモリ領域を格納(上と同じ領域)if(s1.equals(s2)) { // 内容が同じか比較
System.out.println(“same1 equals”);
}if(s1 == s2) { // 基本データ型の比較
System.out.println(“same2 ==”);
}
// 文字列オブジェクトの生成(equalsメソッドを持つ)
String ss1 = new String(“ab”); // メモリ領域の格納
String ss2 = new String(“ab”); // メモリ領域の格納(上とは別の領
【React.useRef】イベントリスナー内で最新のステートを参照できない時の対処法
# はじめに
関数コンポーネントのイベントリスナー内で、`State(ステート/状態)`が正しく扱えない場合の対処方法です。
`React.useState()`のステートを、イベントリスナーのコールバック関数内で参照しようとすると、値が最新の状態になっていないことがあります。
# うまくいかない例
1. `counter`という`State`を宣言
2. ボタンをクリックすると`counter`に`+1`
3. クリックに反応したイベントリスナーが`func()`を発火
4. `counter`の値を出力“`jsx:関数コンポーネント
// ①
const [counter, setCounter] = React.useState(0);// ④
const func = () => {
console.log(counter);
};// ③
React.useEffect(() => {
window.addEventListener(“click”, func);
}, []);// ②
return (