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

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

【AtCoder Beginner Contest 152 C問題】TLEについてと、printデバッグ位置のコツ

# printデバッグを入れる位置で混乱していませんか?

お久しぶりです。宇宙意志です。

今回はいつものように書き捨てのSeleniumではなく、[ABC152-C](https://atcoder.jp/contests/abc152/tasks/abc152_c)問題を見ていきたいと思います。__別にリングフィット購入の自動転売で大儲けしようとしたのにLambdaが動かなくてキレていた訳ではないです。__

今回の趣旨ですが__考え方とデバッグの位置を說明__です、まだTLE(時間切れ)で解けていません。

#問題の概要

1.N個の順列がバラバラに並んでいます
2.前からiを走査させます
3.走査中のiよりも手前にある順列全て(ここではjと定義されてます)と比較して、~~j!>=i!~~ j>=iが常に成立するならi 1つに付き1カウント
4.条件が成立するiの合計カウントを求める

という問題です。

#解法の考え方

1.まずこの問題を聞いた時に、__2重for文を使って配列のiの位置を記憶させて、
 jを配列として左端からiの位置まで走査すれば良いな__、というのはす

元記事を表示

google-http-clientのHTTPヘッダをログに出力する

GCPクライアントライブラリが発行しているHTTPリクエストヘッダ/レスポンスヘッダをログに出したい、というニーズにお答えします。

# 下調べ

google-http-clientでは、JUL(java util logging)を使っているようです。

– ログ出力に使っているLoggerは `com.google.api.client.http.HttpTransport` クラスの[LOGGER定数](https://github.com/googleapis/google-http-java-client/blob/v1.36.0/google-http-client/src/main/java/com/google/api/client/http/HttpTransport.java#L73)です。
– クラスごとにLoggerを持つのではなく、HttpTransport定数を各クラスから参照するという指針のようです。
– ログレベルを[CONFIG](https://github.com/googleapis/google-http-java-client/blob

元記事を表示

QuarkusがJava Lambdaを救う!?

すごいですQuarkus!!!!!!
JavaのLambdaのコールドスタートがチョッパヤです!!

以下の公式サイトを参考に試しました。

https://quarkus.io/guides/amazon-lambda#tracing-with-aws-xray-and-graalvm

# テスト対象

前回の[AWS LambdaのJavaは遅い?](https://qiita.com/moritalous/items/632333088948aad7f8c9)とほぼ同じですが、以下が異なります。いずれもQuarkusの制限?制約?です。

* アノテーションが付いてる
* httpClientがUrlConnectionHttpClient

ソース全体

“`java
package example;

import javax.inject.Named;

import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.s

元記事を表示

【Java】Spigot プラグイン開発 – コマンドをバニラコマンドとして登録する

#概要
・普通はplugin.ymlで登録するコマンドをバニラコマンドとして登録する。

#対象読者
・プラグイン開発の環境が整っている。

#環境
・Windows 10 – 1909
・Eclipse IDE Version: 2020-06 (4.16.0)
・Minecraft 1.16.1
・Spigot 1.16.1

#注意
ここでは、Minecraft 1.13から追加されたコマンドエンジン brigadier を使用するので、1.13より下のバージョンではできないかもしれません。

#作成するコマンド
・今回は、無難に「プレイヤーを飛べるようにする」というコマンドを作成します。
・コマンドの構文
“`/fly <プレイヤー> allow“`

#ソースコードと説明
・まずは、クラスを作成しましょう。

“`java:FlyCommand.java
package com.hamusuke.qiita.command;

import java.util.Collection;

import com.mojang.brigadier.CommandDispatc

元記事を表示

enumの比較は==がつよつよ、equalsはよわよわ【Java】

# 理由

– [==はNullPointerExceptionが発生しない/ equalsは発生する](#はnullpointerexceptionが発生しない-equalsは発生する)
– [==は型変換がないため無駄がない(速い)/ equalsはObject型への型変換があるため無駄がある(遅い)](#は型変換がないため無駄がない速い-equalsはobject型への型変換があるため無駄がある遅い)
– [==はコンパイル時に型チェックがある/ equalsは型チェックない](#はコンパイル時に型チェックがある-equalsは型チェックない)

## ==はNullPointerExceptionが発生しない/ equalsは発生する

“`java:ぬるぽ確認
public class EnumNullPointerExceptionTest {

enum Season { SPRING, SUMMER, AUTUMN, WINTER; }

public static void main(String[] args) {
Season season = null

元記事を表示

(学習メモ)Java2級対策:問5要点(演算結果)

(自己学習用)

~~~ TBE ~~~

元記事を表示

Java StringBuilderクラスについて

StringBuilderクラス、の『クラス』とは、Javaに標準装備されている機能のこと、という理解で正しいでしょうか?

また、「プログラムを実行するための処理をまとめたオブジェクト」、という意味のクラスとは別の用語なのか否かも教えて欲しいです。

拙い投稿申し訳ありません。

元記事を表示

cask+anyenv+jenvを使ったJavaのバージョン管理

# 環境
OS:macOS Catalina 10.15.5
brew:2.4.3

# caskを使ったJavaのインストール
brew caskをそのまま使うと古いバージョンのJavaをインストールができない。
そのため以下のコマンドでを使って古いバージョンもインストールできるようにする。

“`zsh
$ brew tap homebrew/cask-versions
“`

各種バージョンをインストールする

“`zsh
// インストール可能なjavaのバージョンの確認
$ brew search java

// java14
$ brew cask install java

// java11
$ brew cask install java11

// java8
$ brew cask install adoptopenjdk8

// javaのバージョン確認
$ /usr/libexec/java_home -V
“`

# anyenvのインストール
anyenvは*envを管理することができる。今回の場合はjenvを管理するために導入する。

“`

元記事を表示

[servlet][JSP][tomcat]について

## はじめに
現在、servlet/JSP/tomcatについてpaizaで勉強中です。
アウトプットの一環としてキータを書いていきます。

## servletとは
WEBサーバー上で動く、JAVAで書かれたプログラムのことである。
WEBブラウザからのリクエストに応えて、処理を行うのが仕事である。

## JSPとは
servletは内部の処理をしていたが、JSPは画面に文字を表示させる仕事をする。
HTMLの中にJAVAを埋め込み動的にWEBを表示させる。
railsで言うところのerbファイルである。

## tomcatとは
servletやJSPを動かすときに使うサーブレットコンテナのことである。
HTTPリクエストが来たらservletに命令して、動くようにしている。

## servlet/JSPの基本的な書き方
### Javaファイルの作成
tomcat/webapps/該当ファイル名の中にHelloWorld.javaのようなファイルを作成。

“`java
import java.io.*;
import javax.servlet.*;
import ja

元記事を表示

Javaのメソッド

##はじめに
前回の配列の投稿でスパム認定されましたこんにちは。

##メソッド
・メソッドとは部品だったりゲームの技ようなもの(クラスはステータスのような※あくまで私の感覚)。
・**クラスの{}(ブロック)の中に書かないと動かない**。
・メソッドを使うことによって同じ処理などする時なんども同じ処理を書かずに呼ぶだけで済むので楽。
・コードの見通しや管理が楽になる。

“`kane.java
public static void メソッド名() {
実行する処理 ;
}
“`

“`kane.java
class Main{
public static void main(String[]args) {
banana() ; //()は必要。
}

public static void banana() {
System.out.println(“黄色”) ;
}
}
“`
・戻り値とは
呼び出されたメソッドから、呼び出し元のメソッドへ返す値(データ)のことを**戻り値または返り値**という。

##public static v

元記事を表示

言語別Stack処理速度比較

## 1. はじめに
Go言語にはStackが実装されていませんが、

Stackの処理自体は、どの言語でも、
配列や線形リストを使って自作で実装することができます。

Go言語向けに自作で作ったついでに、
Stackが実装されている他言語との処理速度(処理時間)を比較してみました。

実験で使用した言語は、

* C#(.NET Core3.0)
* go1.14.4
* java 13.0.2
* Python 3.8.3

の4言語です。

各言語のソースは、githubでも公開しています。
https://github.com/NobuyukiInoue/StackSpeedTest

* C#
https://github.com/NobuyukiInoue/StackSpeedTest/tree/master/Project_CS

* Go(配列でStackを実装)
https://github.com/NobuyukiInoue/StackSpeedTest/tree/master/Project_Go_Stack_by_Array

* Go(線形リストでStack

元記事を表示

例外処理が必須なクラス

チェック例外とは、開くべきはずのファイルがない等、
プログラムの不具合とは関係なく、 状況によっては発生しうる状況とされるもので、例外処理が必須となります。
####ClassNotFondException

Excptionクラスのサブクラス。
クラスをロード出来ない場合に発生します。
例外処理は必須です。

####IOException
Exceptionクラスのサブクラス。
入出力機能を使用する場合に発生します。
例外処理は必須です。

####FileNotFoundException
Exceptionクラスのサブクラス。
ファイルに対する読み書きを行う際、対象のファイルが存在しない場合に発生します。
例外処理は必須です。

元記事を表示

Android studioに関する質問です。

自作のandroidアプリを作成しているのですが、アプリを起動しても繰り返し停止しています、と表示され、うまく動きませんLogcatを確認したのですが、以下の通り表示されるのですが、よくわかりません。どうやって修正すればいいでしょうか。

2020-07-10 22:39:52.674 17730-17730/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.fumemo, PID: 17730
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.fumemo/com.example.fumemo.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method ‘android.content.pm.ApplicationInfo android.content.Context.get

元記事を表示

Ruby と Java で解く AtCoder ABC129 D 2次元配列

# はじめに
*[AtCoder Problems](https://kenkoooo.com/atcoder/#/)* の Recommendation を利用して、過去の問題を解いています。
AtCoder さん、AtCoder Problems さん、ありがとうございます。
# 今回のお題
*[AtCoder Beginner Contest D – Lamp](https://atcoder.jp/contests/abc129/tasks/abc129_d)*
Difficulty: 1080

今回のテーマ、2次元配列

やっていることは、単純です。

|…#..#.|元の配列|
|:–:|:–|
|12301201|元の配列を左から右にスキャン|
|33302201|スキャンした配列を右から左にスキャン|
合計2回スキャンして左右方向の光の届く範囲を求めます。
次に、上下に2回スキャンして上下方向の光の届く範囲を求めます。

左右用の配列と上下用の配列の値を合計し、その最大値を求めます。
# Java
“`l

元記事を表示

Javaのequalsで気をつけたい点

##その1 nullチェック

“`java

public static void main(String[] args) {

String str1 = null;
String str2 = “test”;

System.out.println(str1.equals(str2));//実行1
System.out.println(str2.equals(str1));//実行2
}
“`
実行1は、java.lang.NullPointerExceptionが発生します。
例外発生の原因は、str1にnullを入れてしまい、nullのオブジェクトからメソッドを呼び出してしまったことです。
nullでないstr2からメソッドを呼び出すと、例外が発生しなくなりfalseを返すようになります。

実行2の書き方は、str1がnullであっても例外が発生しないというメリットがありますが、異常系としてnullが入ることを想定せずに実装していた場合、コードミスに気づきにくいという短所があると思います。

nullチェックを意識するのであれば、例外処理で捕まえる方が安全かもし

元記事を表示

MySQLのTableをJDBCでconnection.getMetaData().getColumns()したときのカラム名リスト

JDBCを使って、テーブルのスキーマ情報を取得する際の完全個人用備忘録。
index順になっています。
そのうち説明も追加します

|カラム名|説明|値の例|
|:–|:–|:–|
|TABLE_CAT|データベース名|database_name|
|TABLE_SCHEM||null|
|TABLE_NAME|テーブル名|table_name|
|COLUMN_NAME|カラム名|id|
|DATA_TYPE||4|
|TYPE_NAME||INT UNSIGNED|
|COLUMN_SIZE||10|
|BUFFER_LENGTH||65535|
|DECIMAL_DIGITS||null|
|NUM_PREC_RADIX||10|
|NULLABLE||0|
|REMARKS|カラムについたコメント|カラムコメント|
|COLUMN_DEF||null|
|SQL_DATA_TYPE||0|
|SQL_DATETIME_SUB||0|
|CHAR_OCTET_LENGTH||null|
|ORDINAL_POSITION||1|
|IS_NULLABLE||NO|
|SC

元記事を表示

継承とかについて(JavaSilver)

JavaSilverの取得のためにJavaの基礎で理解が浅い部分をまとめてみています。

#継承
継承の概念自体は理解しているつもりです。
継承というより機能を拡張すると表現したほうが個人的には理解しやすいかと思います。
スーパークラスの方が抽象度が高くて機能が少なくて、より具体的な機能が追加されてスーパークラス+α(拡張)になったのがサブクラスというイメージです。

・スーパークラス

“`java:SuperA.java
class SuperA {}
“`
・スーパークラスを継承したサブクラス

“`java:SubA.java
class SubA extends SuperA {}
“`

###できないこと
– extendsのあとに複数のスーパークラスは指定できない。

“`java:SubA.java
class SubA extends SuperA, SuperB {}
“`

– スーパークラスで定義したprivateなメンバはサブクラスで使用できない。

スーパークラスで定義したメンバはサブクラスで使用できるがprivateなメンバは同一クラスのか

元記事を表示

【SpringBoot入門】フォームのバリデーションチェック

#目的

[Spring Quickstart Guide](https://spring.io/quickstart)を取り組み終えた方、SpringBootを学び始めた方、復習をしたい方に向けて、

公式ガイド[Validating Form Input](https://spring.io/guides/gs/validating-form-input/)を実際に取り組み学んだことを共有します。

完成形はこちらになります。

名前と年齢を入力するフォームがあり、
![スクリーンショット 2020-07-09 14.05.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/555244/d0bef22f-dd42-df35-a5e6-04ee1d7b28a2.png)

不正な値が入力したままSubmitボタンが押されるとエラーメッセージを表示して、
![スクリーンショット 2020-07-09 14.05.40.png](https://qiita-image-store.s3.ap-nort

元記事を表示

Javaのラムダ式

##ラムダ式とは
Java8で導入された記述方法です。
同じくJava8で導入されたStream API[^1]はラムダ式を使うことが前提とされているため、ラムダ式を学んでおくとメリットがありそうです。

[^1]: 配列やリストなどのコレクションを扱う為のもので、値の集計やデータを使った処理を分かりやすいコードで実装することができるAPI。

また、ラムダ式を使うと、「匿名クラスを使った関数型インターフェースの記述」を簡潔にできるというメリットもあります。

###ラムダ式の書き方

**引数が複数ある時**

“`
インターフェース名 オブジェクト名 = (引数1, 引数2, …) -> { return 処理内容 };
“`

コンパイラが型推論してくれるので、引数の型は指定する必要はありません。

**引数が1つしかない時**

“`
インターフェース名 オブジェクト名 = 引数 -> 処理;
“`

引数が1つしかない時は、returnや引数を囲む()、処理を書く{}等は要りません。

ラムダ式を読む時はシンプルにこの形式を覚えておいて、書く時は引数の数によって

元記事を表示

SpringBootでapplication.ymlやapplication-[プロファイル名].yml以外のファイル名のプロパティファイルを読みたい

なかなかコレ!というサンプルが見つからなかったのでメモ。

## やりたかったこと

– SpringBoot に `application.yml` 以外のファイル名の yaml のプロパティファイルを読み込ませる
– その際、`application-test.yml` のようにプロファイル名をくっつけたファイルも読み込ませる
– 読み込んだプロパティは Configuration クラスにマッピングする

マルチプロジェクトの構成で、共通の部品を集めたプロジェクト側にもプロパティファイルを置きたかったが、application.yml だと利用側のプロパティファイルとバッティングするため別名にする必要があった。

## 実現方法

### ポイント

– Configuration クラスで `@PropertySource` を使用して読み込むプロパティファイルを指定する
– `@PropertySource` は yaml ファイルの読み込みに対応していないので読み込み用のクラスを作成して読み込めるようにする

### ソースコード

完全なソースコードは[こちら](http

元記事を表示

OTHERカテゴリの最新記事