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

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

【Java】リフレクションは本当に重いのか?性能比較

## 目的
基底クラスを作成する際にリフレクションを利用したいと思ったが、リフレクションは重いという情報が頭にあったため、本当に重いのか?どのくらい重いのかについて知りたくなったため実際に計測する。

## 検証環境
– Eclipse Oxygen.3a Release (4.7.3a)
– Java8

## 検証用ソースコード
**1.通常のインスタンス生成**

“`
private static Oimo getInstance01() throws Exception {
return new Oimo();
}
“`

**2.リフレクションを使用したインスタンス生成**

“`
private static Oimo getInstance02() throws Exception {
Class clazz = Class.forName(“kensho01.Oimo”);
return (Oimo) clazz.newInstance();
}
“`

## 実施手順

– 検証用ソースコードを使用して100,000回インスタンス生成を行い、

元記事を表示

Javaでselenium導入からキャプチャ保存する

##目次
[seleniumとは](#seleniumtとは)
[目標](#目標)
[準備](#準備)
[導入手順](#導入手順)
[テストケース](#テストケース)
[テストケースの実行](#テストケースの実行)

## seleniumとは
Seleniumとはブラウザのオートメーションツールです。
自動でブラウザを操作することでWebサイトの動作のテストなどが行うことができます。

## 目標
Java selenium導入、Chrome開く→Yahooニュースに遷移→キャプチャまで。

## 準備
####Javaプロジェクトの作成
プロジェクト名「selenium」

####seleniumの[DL][link-1]
Java selenium version3.141.59

####GoogleChromeの[DL][link-2]
最新版

####Chromedriverの[DL][link-3]
GooglChromeと同一バージョンのもの

####JUnitの[DL][link-4]
Download and installからjunit.jar、h

元記事を表示

Javaアプリケーションの状態を監視ツールを入れずに確認してみる

#### 概要

jstackはJDKに付属するコマンドです。javaを起動してるマシンであれば特別監視ツールなんかを入れなくても簡単にプロセスの状態を取得することができます。

このツールは、コマンドラインコンソールにスレッドダンプを表示します。JavaのPIDさえわかれば使用することができる。性能が出ない時やデッドロックのような現象が発生した際はこのツールを使ってスレッドの状態を取得し調査に使うことができる。

#### Usage

“` console
$ jstack -l “`

出力結果はthread単位のスタックトレースを確認することができる。

“`
“Thread-0” #12 prio=5 os_prio=0 cpu=0.00ms elapsed=496.25s tid=0x00007f6a741f1800 nid=0x1a5 waiting on condition [0x00007f6a17a9f000]
java.lang.Thread.State: TIMED_WAITING (sleeping)
at java.

元記事を表示

Javaで部分集合を求める

# Javaで部分集合を求めるクラス

“`java
import java.util.ArrayList;

public class Subset {
/** 与えられた配列 */
String[] list;
/** 与えられた配列の要素数 */
int count;
/** 部分集合を格納するリスト */
ArrayList arrayList = new ArrayList<>();

/**
* コンストラクタ
* @param list
*/
public Subset(String[] list) {
this.list = list;
count = list.length;
arrayList = new ArrayList<>();
// 部分集合を求める
for(int i=0;i

元記事を表示

【LeetCode Daily Challenge 2020-6-18】H-Index II

LeetcodeのDaily Challengeはこの数ヶ月の間にやっていますが、
Qiitaで解答説明を投稿するのは初めてなんです。
もし役に立っていれば、ぜひ「いいね」やコメントをお願い致します。

今日の問題は:

>**H-Index II**

>Given an array of citations sorted in ascending order (each citation is a non-negative integer) of a researcher, write a function to compute the researcher’s h-index.

>According to the definition of h-index on Wikipedia: “A scientist has index h if h of his/her N papers have at least h citations each, and the other N − h papers have no more than h citations each.”

>E

元記事を表示

Javaのクラス型のフィールド

###クラス型のフィールド
インスタンスフィールドにクラス型の変数を定義することで、フィールドにインスタンスを持つことができます。
【例】

“`
class クラス名 {
private クラス型 フィールド名;
}
“`

元記事を表示

Javaの配列変数は参照型

Javaの配列変数は参照型。

当たり前な基礎的なことだと思いますが、元々PHPをしていたので、
自身の備忘録のため、少しまとめてみました。

例えば、下記のようなコードの場合には100が出力される。

“`java
int[] a = { 1, 2, 3 };
int[] b = a;
b[0] = 100;
System.out.println(a[0]);
// a[0]は100が出力される。
“`

これは、Javaの配列変数が参照型なので、int[] a には配列が作られた
メモリアドレスが格納されるため。

例えば、int[] a で作成された配列のメモリアドレスがABC123(実際はこんなメモリアドレスはないと思います)だとすれば、
このABC123というメモリアドレス(場所)に配列aが記録されている。

そしてint[] b に入っているのは配列変数int[] a のメモリアドレスであるABC123が入るので、要は同じ配列ということになる。
そのため、 b[0]=100 は a[0]=100 と同じことになる。

これがPHPで同様の下記コードを書いてみると、100

元記事を表示

Javaの抽象メソッドと抽象クラス

###詳細未定のメソッド
例えば、車や自転車のメソッドがあるとします。乗り物はすべて「走行する」機能を持ちます。
プログラム上でも、Vehicleクラス(車両)を継承するすべてのクラスはrunメソッド(走行)を持っていたほうがいいです。
よって本来であれば、runメソッドはVehicleクラスに定義し継承できればいいのですが、乗り物ごとに走行方法が違うため、Vehicleクラスでは処理内容を定めることができません。
###抽象メソッド
処理が未定のメソッドを定義する方法は、メソッドの先頭に「abstract」をつけることで、抽象メソッドというメソッドを定義できます。抽象メソッドには**中身の処理**は書きません。
「abstract」とは「抽象的な」という意味です。具体的な処理が決まっていない未完成のメソッドであるため、「抽象メソッド」と呼ばれます。
抽象メソッドは、サブクラスがそのメソッドをオーバーライド(上書き)していなければエラーになります。
なので、サブクラスがそのメソッドをオーバーライドし、処理内容を定義することを強制できます。
サブクラスに、あるメソッドを必ず持たせたいとい

元記事を表示

Javaのprotected

###protected
ゲッター・セッターとはまた違う方法です。
クラス外から呼び出したいときは、private(クラス外は呼び出せない)では呼び出せないので、「protected」を使って、クラス内とサブクラスからのみアクセスを許すフィールドを作ります。
「public」「protected」「private」の3つのアクセス権です。
・public: どこからでもアクセス可能
・protected: そのクラスと子クラス内からのみアクセス可能
・private: そのクラス内からのみアクセス可能

元記事を表示

SCORM1.2コンテンツの検証ツール Reload SCORM1.2 Playerを使えるようにする

#概要
SCORM1.2コンテンツの検証に便利な「Reload SCORM1.2 Player」のインストール方法です。
マニアックすぎて需要ないかと思いますが、新しいPCへのセットアップついでに記録に残します。

#Reload SCORM1.2 Playerのダウンロード
http://www.reload.ac.uk/new/scormplayer.html
ここから「Download SCORM 1.2 Player version 1.2.2 cross-platform Install (9.64 mb)」をクリックしてダウンロードし、zipファイルを展開します。

※注意
検索エンジンで検索すると、1.2.1という古いバージョンのページが検索上位に挙がってくることがあります。それはバグがあり動かないので、トップページからたどって最新版を入手することをおすすめします。
おそらく、もう1.2.2からバージョンアップはされないと思いますが。

#Javaのダウンロード
https://java.com/ja/download/
ここの「無料Javaのダウンロード」からダウンロー

元記事を表示

WindowsローカルのAWS SDKでJavaプログラムを動かすまで

## 前提

[AWS SDK for Java 2.0 開発者ガイド](https://docs.aws.amazon.com/ja_jp/sdk-for-java/v2/developer-guide/welcome.html)
そして今回使おうとしているもの。

“`pom.xml 1.8
1.8
2.11.12



software.amazon.awssdk
bom<

元記事を表示

CICS-Javaアプリケーションを動かす – (3)Gradleによるビルド管理

#はじめに
CICS TS V5.6では、CICS-Javaアプリケーションのビルド管理ツールとして、Mavenと合わせてGradleもサポートされています。ここではGradleを使ったCICS-Javaアプリのビルド管理を試してみます。

## 関連記事
[CICS-Javaアプリケーションを動かす – (1)単純なサンプルアプリの稼働](https://qiita.com/tomotagwork/private/aac10ad84fe83d88bb5f)
[CICS-Javaアプリケーションを動かす – (2)Mavenによるビルド管理](https://qiita.com/tomotagwork/private/a487484835d4e8dd2d6f)
[CICS-Javaアプリケーションを動かす – (3)Gradleによるビルド管理](https://qiita.com/tomotagwork/private/6fae5bd3440635ad26af)

#事前準備
これはMavenのケースとほぼ同様です。(Mavenの代わりにGradleを使います)

### 適当なJ

元記事を表示

Spring Boot 2.2 から Content-Type: application/json に charset=UTF-8 が付かない

## 概要

– Spring Boot 2.2 から @RestController にて JSON を返す際の HTTP レスポンスヘッダで Content-Type: application/json になる (charset=UTF-8が付かない)
– Spring Boot 2.1 では @RestController にて JSON を返す際の HTTP レスポンスヘッダで Content-Type: application/json;charset=UTF-8 になる

## 検証用ソースコード

### src/main/java/com/example/MyApp.java

“`java
package com.example;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.http.HttpHeaders;
impo

元記事を表示

Java 3級対策 問1過去問ポイントまとめ

自己学習用メモ
知識問題まとめ

####Javaとは
– オブジェクト指向型プログラミング言語
– コンパイル型

####扱うことのできる変数は・・・
①「基本データ型」
②「参照型」

####エラーチェックは
– 「コンパイル時」「実行時」双方で行われる

####javaコマンド
– 実行するプログラムには「mainメソッド」が必要
– javaプログラムのコンパイルが可能

####javacコマンド
– コンパイル用

#### 「.java」
– javaソースファイルの拡張子
– コメント記述OK
– 命令文の区切りは「;(セミコロン)」

####「.class」
– クラスファイルの拡張子
– コンパイルしないで別のJavaプラットフォーム上で実行することができる

#### 実行
– mainメソッドから実行が開始される
– 「ランタイムライブラリ」「JVM(Java Virtual Machine)」が必要

####JRE(Java Runtime Environment)
– コンパイラ以外、Javaのプログラム実行に必要なものはすべて含まれる

元記事を表示

Spring Bootでログイン機能を実装してみる

前回の記事【[Spring Boot Flywayでmigration自動化をしてみる](https://qiita.com/megumi_622/items/c38100ca5b266e301643)】の続きで、ログイン処理を実装してみる

## build.gradle
**spring-boot-starter-security**を追加します。

“`gradle:build.gradle

plugins {
id ‘java’
id ‘org.springframework.boot’ version ‘2.3.1.BUILD-SNAPSHOT’
id ‘io.spring.dependency-management’ version ‘1.0.9.RELEASE’
id ‘com.avast.gradle.docker-compose’ version ‘0.12.1’
id ‘org.flywaydb.flyway’ version ‘6.4.3’
}

// …略

dependencies {
implemen

元記事を表示

Javaの継承

###継承
既存のクラスのフィールドやメソッドを別のクラスに引き継ぐことです。
継承してできる新しいクラスには独自のフィールドやメソッドを追加してカスタマイズできます。
継承されるクラスを「スーパークラス」、継承してできる新しいクラスを「サブクラス」と呼びます。
継承を用いて新しくサブクラスを定義するときは、「extends」を用いてクラスを定義します。

“`
class サブクラス名 extends スーパークラス名 {
}
“`
**extends スーパークラス名**でスーパークラスを継承します。

【例】Bicycle.javaとCar.javaの内容が重複しているものとします

“`Main.java
class Main {
public static void main(String[] args) {
〜省略〜
}
}
“`

“`Bicycle.java
class Bicycle extends Vehicle {

}
“`

“`Car.java
class Car extends Vehicle{

}
“`

“`Vehicle

元記事を表示

Azure アプリケーションのJVM にタイムゾーンを設定する

Tomcat に設定をするのではなくて、アプリケーションの設定で可能。

[Configuration] – [Application Settings] にて [+ New Application setting] として
WEBSITE_TIME_ZONE = Tokyo Standard Time
を設定する。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110265/7d37982f-f150-6fb9-5940-3f896228a438.png)

値は以下と同じものを設定できるのかな?と思います。
https://support.microsoft.com/en-us/help/973627/microsoft-time-zone-index-values

以上。

元記事を表示

Java vs. JavaScript: What’s the Difference?

Java and Javascript, both may sound similar to one’s ears because of the word ‘java’, but these two are nothing alike. Although both Java and Javascript are used for developing web and mobile applications, among other things, there are really important differences between them.

Java was created in 1991 by James Gosling, and since then has become one of the most used programming languages in the world. After its creation, it took a group of Sun Microsystems engineers 4 years to develop Java. Oth

元記事を表示

Spring Boot2のユニットテストの書き方メモ

## はじめに

spring boot2でユニットテストを書くことになったので、
書き方を整理しようと思います。

Modelにセットした値のテストってどう書くんだっけ?
といったケースで思い出しように使ってもらえたらと思います。

サンプルコードは[GitHub](https://github.com/aoyaman/lean_spring_boot_unit_test)にあげてます。

### レスポンスStatusのテスト

“`Java

import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

this.mockMvc.perform(get(“/”)).andDo(print())
// ステータス「200 OK」を返すかどうか
.andExpect(status().isOk())
.andExpect(status().is(200))
“`

ドキュメントは[こちら](https://docs.s

元記事を表示

美大生のためのプログラミング入門:四角形に関する様々な関数(その 1)

※ Qiita では、本文部分のみの印刷に苦労します。そのため、同じ内容を以下のページにも掲載しています。プリンツアウトしたり PDF 化したい人は、こちらのページを利用して下しさい:

http://gurakura.sakura.ne.jp/hellomondrian/rect2/

一覧はこちら:
http://gurakura.sakura.ne.jp/series/美大生のためのプログラミング入門/

Qiita 版の総合目次:
https://qiita.com/iigura/items/37180d127da93d0b8abb

# 自由な四角形の描き方
 関数 rect で描画される四角形は、水平・垂直の線分にて構成される長方形でした。
しかし、長方形だけが四角形というわけでもなく、四角形という定義にはもっと自由な形の四角形も含まれます。

quad 関数は、このような自由な四角形を描くための関数です。
引数は、quad(x1,y1, x2,y2, x3,y3, x4,y4) であり、それぞれ

x1,y1: 第 1 頂点の x 座標および y 座標
x2,y2:

元記事を表示

OTHERカテゴリの最新記事