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

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

色々な言語でファイルIOを競って速度比較

複数のプログラミング言語で約 1GB の CSV ファイルを Read/Write して時間を測定してみました!

# 共通ルール

– どの言語でも同じファイルを使用して確認すること
– ファイルは一行ずつ読み散り、一行ずつ書き込むこと
– OSの差を無くすため、Docker Image は全て base(Ubuntu 18.04 LTS)を使用すること

# まずは結果

|言語|5回実行した平均タイム(秒)|
|:–|:–|
|C-lang|6.2962|
|C++|6.0538|
|C#|17.1798|
|Golang|10.3966|
|Java|21.0840|
|Python|32.6949|
|Ruby|30.7153|
|Scala|21.8364|

やっぱりC/C++がダントツで早い!!
次点でGo言語

# 実装サンプル

5年ぶりくらいにC++書いたので綺麗ではないと思いますが、一番早かったのでサンプルとして載せます。

他の言語でも以下の動作をベースとして実装しました。

– 5回実行した平均時間を計算
– 1行読んで1行書き込む

“`c
#inc

元記事を表示

たったの3秒でJava環境を作る方法

## はじめに
Dockerというソフトウェアを活用してjavaの環境を一瞬で作る方法について解説します。
いくつかのJavaのバージョンをローカルマシンで管理することによってバグが発生。なんてことはこれでおしまいです。

## 作業 
任意の名前のディレクトリを作成します。次にDockerfileとMain.javaをそのディレクトリの中に作成します。
内容は次の通りです。

“`Dockerfile:Dockerfile
FROM openjdk:7
# Dockerfileのあるディレクトリの中のファイルをコンテナに保存する。
COPY . /usr/src/myapp
# 作業ディレクトリを指定する
WORKDIR /usr/src/myapp
# コンテナ内でコンパイルする
RUN javac Main.java
# コンテナで”java Main”を実行する
CMD [“java”, “Main”]
“`

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

元記事を表示

javaのvarについて

## javaの変数宣言 var
Java Silverのお勉強の整理メモです・・・

## varの使い方
– SE10から登場
– ローカル変数の型推論
– 右辺の値に応じてデータ型が推論される

“`java

var v1 = “hoge”; //Stringとして扱われる
var v2 = 123; //intとして扱われる
“`

– 変数型推論なので、**宣言だけ**ができない -> 値を代入しないと型の推論ができないため
– そのため、**nullの代入は不可**

“`java
var v3; //これはコンパイルエラー
var v4 = “huga”; //ok
var v5 = null; //これもコンパイルエラー
“`

– 変数の複数宣言ができない

“`java

int i1 = 1, i2 = 2, i3 = 3; //ok
var v6 = 6, v7 = 7, v8 = 8; //コンパイルエラー
“`

– メソッドの仮引数の型に使用できない

“`java

Strin

元記事を表示

【更新中】Java屋さんのためのPython Syntaxチートシート

最近Pythonをはじめました。
が、やりたいことはググると出てくるし、Python3に至ってはオブジェクト指向になってくれたおかげで、だいたいは雰囲気つかめちゃったりするので良いのですが、いざ書いてみると躓くのは文法だったりしますよね?(私だけ?)
だいたいJavaに慣れきってたりすると、Javaだとああ書くんだけど、Pythonだとどう書くんだろ?的な発想になるので、似たようなことを考えてる人のお役に立てれば幸いです。

というわけで、Javaだとこう書いてたけど、Python3だとこう書くんだよ、というのを残しておきます。
始めたばっかりなので、多少考え方とか間違ってるかもしれないけど、そのへんはご愛嬌。ざっくりです。書きながら覚えていくタイプなんで。
気が向いたら更新していくと思います。

## 環境

Python 3.8
Java 8

## 公式のチュートリアル

https://docs.python.org/ja/3/tutorial/index.html

## 公式のユニットテスト(unittest)

https://docs.python.org/ja/3/l

元記事を表示

モノレポでJavaのFWを開発していることに気付いたので運用を考える。

# はじめに
本記事は、JavaのFWを開発するプロジェクトにおいて、モノレポ開発のメリットを享受する為のリポジトリ運用について考える記事です。

# モノレポとは
端的にいって、モジュールを横断してコードを一つのリポジトリで管理しようというリポジトリの運用戦略です。モノレポの考え方として下記の2つがありますが、本記事では**後者**について考えます。

1. 企業のコード全てを1つのリポジトリで管理しようとする考え方
2. プロジェクトのモジュール全てのコードを1つのリポジトリで管理しようとする考え方

# これってモノレポでは?
私の所属するチームでは、JavaのFWを開発しています。FWはいくつかのモジュールから構成されており、それらのモジュールは1つのGitリポジトリで開発されていました。何故こういったリポジトリ構成になったのか、チームに経緯を確認した所、製品として品質保証したい範囲でリポジトリを作成した為とのことでした。
当時、Gitの経験が浅かった私は違和感を抱かなかったのですが、どうやらこういったリポジトリの運用をモノレポと言うらしいので、モノレポ運用のメリットを活かせて

元記事を表示

#2【備忘録】Javaで九九の計算をしてみました。

# はじめに
 連日、暑い日が続いていて頭も体も鈍っているけど頑張って記事の更新は続けますので!
 今回は九九の計算ということで自分なりに見やすさとコードのシンプル化を意識して勉強してみました。
「ここはこうした方が良い」や「ここはそれじゃない」などご指摘がありましたらコメントよろしくお願いいたします。

#開発環境
今回も”Eclipse”で総合開発環境でやってみました。
こちらの記事を参考に開発環境を構築してみてください。

[EclipseでJava開発環境を作る(Mac編)](https://codeaid.jp/eclipse-java-mac/)
※今回もMacでの作業となります。

#実装
“`java

class Main {
public static void main(String[] args) {
//九九の計算
for(int i = 1; i < 10; i++) { for(int j = 1; j < 10; j++) { Sys

元記事を表示

【Android9.0 Pie Java】LINE風にチャット一覧画面→個人チャット画面の遷移アニメーションを実装(サンプルアプリ付)

## 環境
Android9.0 Pie Java

## はじめに
以前投稿した、
[【Android9.0 Pie Java】チャットアプリで横スワイプ→ダイアログ表示→削除を実装する](https://qiita.com/yuta-matsumoto/items/47f7f403a4c379a7a1b3)
の続きになります。

+ チャット一覧の要素を押すと右から左へ覆い被さるようにチャット画面のfragmentが重なる
+ < ボタンを押すと左から右へチャット画面のfragmentが消える

以下のGifのように動作します。
![3731939bc2a2b548bce0dd3ba2b8d615.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285286/fd4a29a4-ee5c-ec83-0df7-69a6daa986d6.gif)

## 完成品URL
全てのコードを載せると大変なことになるので、この記事では省略しています。
チャット画面のlayoutやAdapter等のファイルも含めてD

元記事を表示

ギャラリーから画像を選択し表示するAndoroidアプリ

この記事は、株式会社富士通システムズウェブテクノロジーが企画する「[いのべこ夏休みアドベントカレンダー 2020](https://qiita.com/jugemsan/items/5761773308fb1df0c23a)」の22日目の記事です。
(お約束)本記事の掲載内容は私自身の見解であり、所属する組織を代表するものではありません。

#はじめに
Andoroid Studioで画像を選択し画面に表示するソースを書いたので、本記事ではそのソース、手順などを紹介します。

##背景
前回の記事([Google Cloud Vision APIを使って食べ物の写真を判定してみる](https://qiita.com/m-yuumin/items/a679ea45053ba6395b38))を踏まえ、選択した写真をAPIで判定するアプリを作ってみようと思い、1段階目として、ギャラリーから画像を選択する部分を記事にしました。

#事前準備
下記に関しては今回のアドベントカレンダー16日目の記事「[Androidアプリ「HelloWorld」を作って、好き勝手に弄ってみた](https:

元記事を表示

Java Programmer Gold SE 8 資格まとめ(Java に慣れてる人向け)

# 記事の目的

Java Programmer Gold SE 8 試験に出題される内容をまとめました。
「昔から Java をやっているけど SE8 のことは微妙に知らない」というニッチな層向けです。

# この記事を書いたきっかけ

先日 Java SE 8 Programmer II (1Z0-809) を受験して合格し、Oracle Certified Java Programmer, Gold SE 8 をゲットしました。
Java2 の時に一度取得しましたが、今の世間で必要とされている知識レベルとは明らかに乖離していたので、自分の知識をアップデートする意味でも勉強し直した次第です。Android 開発でも SE8 の知識は必須となりつつありますしね。
受験にあたって試験範囲を自分なりにまとめたものがあるのですが、試験終了とともにそのままお蔵入りさせるのも忍びないので、記事というかたちで残しておこうと思いました。どなたかのためになれば、大変嬉しく思います。

# 要点まとめ

## Java の基本

#### 数値リテラルの接頭辞

数値の先頭に付加される接頭辞によって何

元記事を表示

SpringSecurity TextEncryptor: 共通鍵暗号化・復号

#はじめに
暗号化、復号はよく使う処理であり、SpringSecurityでは便利なインターフェイスが用意されており、簡単に使えますので、サンプルを作成してみます。

#暗号化、復号インターフェス
テキスト用:org.springframework.security.crypto.encrypt.TextEncryptor
バイト配列用:org.springframework.security.crypto.encrypt.BytesEncryptor

#乱数生成インターフェス
テキスト用:org.springframework.security.crypto.keygen.StringKeyGenerator
バイト配列用:org.springframework.security.crypto.keygen.BytesKeyGenerator

#サンプル
“`java
package sample.security;

import java.util.Base64;

import org.apache.commons.codec.binary.Hex;
import o

元記事を表示

Java + Oracle Database 12c で主要な SQL 型の値を取得するサンプルコード

## 概要

– Oracle Database 12c にてテーブルに主要な SQL データ型のカラムを定義して、Java のプログラムからカラムの値を取得するサンプルコードを示す
– 今回の動作確認環境: Oracle Database 12c Release 2 (12.2.0.1.0) Enterprise Edition (on Docker) + Oracle JDBC Thin driver (ojdbc8.jar) 19.7.0.0 + Java 14 (AdoptOpenJDK 14.0.2) + Gradle 6.6 + macOS Catalina

## サンプルコード

### ファイル一覧

“`
├── build.gradle
└── src
└── main
└── java
└── JdbcSample.java
“`

### build.gradle

“`groovy
plugins {
id ‘application’
id ‘java’
}

sourceCompatibilit

元記事を表示

今日から携わるJava

Javaを勉強して必要なことのまとめ

#Eclipseショートカットキー

■ 補完(Ctrl + Space)
(sysout) System.out.println();
(syso) System.out.println();
(main) public static void main(String[] args) {}

■ ローカル変数を宣言(Ctrl + 2 → L)
new ArrayList(); → ArrayList arrayList = new ArrayList();

■ その他のショートカット
ソースコードのフォーマット(Ctrl + Shift + F)
コメントアウト(Ctrl + /)
クイックフィックス(Ctrl + 1)
1行移動、1行コピー(Alt + ↓↑、Ctrl + Alt + ↓↑)
1行削除(Ctrl + D)
メソッドの抽出(Alt + Shift + M)
呼び出し階層を開く(Ctrl + Alt + H)
宣言を開く(Ctrl + クリック)
型を開く(Ctrl + Shift + T)

#プログラムの書き方
スッキリわか

元記事を表示

AtCoder Beginner Contest 176 A問題「Takoyaki」解説(Python3,C++,Java)

Ruteです!皆さんAtCoder Beginner Contest 176 お疲れ様でしたー!!
今回は、A問題・B問題・C問題早解きという、ABC164以来のABC早解きコンテストとなりました。
おそらく、「ABCを3完して撤退」という方も多かったと思います。

今回は、A問題・B問題・C問題の解説を3言語で解説していきたいと思います!!

##各問題・解説へのリンク

|A|B|C|
|—|—|—|
|この記事です!!|準備中|準備中|

それでは、A問題の解説から始めます!!

#問題概要

たこ焼き機は、一度に最大で$X$個のたこ焼きを作ることができる。作るのにかかる時間は個数によらず$T$分である。

$N$個のたこ焼きを作るためには何分必要かを出力せよ。

##制約
・$1 \leq N,X,T \leq 1000$
・入力は全て整数

#解説
##解法1(天井関数の利用)
$N$個のたこ焼きを作るために必要なたこ焼き機の使用回数は$\lceil{\frac{N}{X}}\rce

元記事を表示

Java + MySQL 8.0 で主要な SQL 型の値を取得するサンプルコード

## 概要

– MySQL 8.0 にてテーブルに主要な SQL データ型のカラムを定義して、Java のプログラムからカラムの値を取得するサンプルコードを示す
– 今回の動作確認環境: MySQL Ver 8.0.21 for osx10.15 on x86_64 (Homebrew) + MySQL Connector/J 8.0.21 + Java 14 (AdoptOpenJDK 14.0.2) + Gradle 6.6 + macOS Catalina

## サンプルコード

### ファイル一覧

“`
├── build.gradle
└── src
└── main
└── java
└── JdbcSample.java
“`

### build.gradle

“`groovy
plugins {
id ‘application’
id ‘java’
}

sourceCompatibility = JavaVersion.VERSION_14

repositories {
mavenCent

元記事を表示

【Android】画面遷移時に遷移元のActivityを終了する

Androidでアプリを作成する際に、戻るボタンでアプリを終了したいケースがあると思います。

Ex) ログイン画面から遷移後に戻るボタンを押したらアプリを終了させる。(ログイン画面に戻さない)

そのような際に、Activityを終了させる方法をまとめました。

# ActivityからActivityでの遷移時

“`MainActivity.java
Intent intent = new Intent(getApplication(), SubActivity.class);
startActivity(intent);
finish();
“`

# 画面A→B→C遷移時に、A,BのActivityを終了する(複数のActivityを終了したいとき)
Ex) A(初期画面)→B(サインイン画面)→C(メイン画面)でサインイン後、戻るボタンでアプリを終了させる時。

“`BActivity.java
Intent intent = new Intent(getApplication(), CActivity.class);
intent.addFlags(Inte

元記事を表示

All same hash code string in Java

All same hash code string in Java

“`java
final String p1 = “AaBB”;
final String p2 = “BBAa”;
final String p3 = “BBBB”;
final String[] pp = new String[] { p1, p2, p3 };
final int ppLength = pp.length;
Random random = new Random();
random.setSeed(System.currentTimeMillis());
final int size = 10;
final int length = size * 4;
final int times = 2_000_000; // n百万回ループ
Map map = new HashMap<>(10000);
File file = new File(“r:/1.txt”);
file.delete();
BufferedWriter bw = new BufferedWrite

元記事を表示

EHRbase入門1 – 概要と環境整備

## はじめに

本記事は2020年第2回openEHR研究会で紹介する講演内容です。EHRbaseはopenEHR仕様のオープンソースソフトウェア実装の一つです。今回はEHRbaseについてそのアーキテクチャと、開発環境を構築するところまでを紹介します。

以降の内容は以下の資料と愛媛大学木村映善教授のメモを参考にして構築しております。

* EHRbase(GitHub repository)
* https://github.com/ehrbase/
* EHRbase project
* https://ehrbase.org/
* EHRbase, The 3rd openEHR Asia summitでのChristian Chevalleyの発表
* https://www.slideshare.net/openEHR-Japan/ehrbase-open-source-openehr-cdr


## EHRbaseの開発環境
開発環境としてEHRbaseが利用する主要なソフトウェアコンポーネントを列記します。環境構築はdockerで行い

元記事を表示

【Certified Java Programmer, Gold SE 11】これから勉強する人に向けた感想・いい点・悪い点

# 初めに
私は今回、javaへの理解を深めることを目標として資格取得をしました。
私自身の経験としては、wordpressを使ったウェブサイトを作ったことがあるくらいでその中でphpでの簡単な機能拡張をしたことがある程度でした。
理系大学生ですが、残念ながら機械系ではないので実務経験はおろかjavaに触れたことはありませんでした。
勉強期間は、2020年の5月の頭にGoldの前提資格であるSilverを勉強し始め5/30に合格し、その後8/11にGoldに合格したのでおよそ3か月です。
まっさらな状態から勉強を始められたので、既にjavaを仕事として使っていらっしゃる方よりも私のような初学者に向けた記事を書けたらないいなと思います。

資格の証のデジタルバッチです。↓
https://www.youracclaim.com/badges/5b1de059-b464-4b89-95d5-e834432f42e3/public_url
# 実際に受けてみた感想
### 悪い点
#### ①値段
一回のテストにかかる試験料は3万近くかかります。Goldを取得するにはSilverも受かって

元記事を表示

nextInt()→nextLine()の落とし穴

数字と文字列の2つのパラメータを標準入力で渡したいと思います。

使うメソッドは、
nextLine():改行までの一行分の入力を取得することができるメソッド
nextInt() :int型の数値を取得することができるメソッド
この2種類ですが、
順番が問題です。

nextLine()が先だと、入力を2回受け付けてくれます。

“`java

import java.util.*;

public class Main {
public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

String numStr = sc.nextLine();
int num = sc.nextInt();

sc.close();

System.out.println(num);
System.out.println(numStr);
}
}

“`

nextLine()が後だと、入

元記事を表示

【忘備録】Java : 文字列連結の速さを計測

## はじめに
以前の現場で上長からString型の文字連結はStringBuilderのappendでやった方が速いということを教わってからずっと覚えていたのですが、今勉強している参考書でもそのことが触れられていたので実際どれくらい速いのか実践してみたいと思いました。

“`stringBuilderTest.java
public class StringBuilderTest {
public static void main(String[] args) {

String name = “”;
long start = System.currentTimeMillis();
for(int i=1; i<=1000; i++){ name += "tanaka, "; }; long end = System.currentTimeMillis(); System.out.println("+連結 : "+(end - start) + "ms"

元記事を表示

OTHERカテゴリの最新記事