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

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

Java のバイト配列を16進数表記の文字列に変換する

## 方法

JAXB の javax.xml.bind.DatatypeConverter クラスを利用する。

[DatatypeConverter \(Java Platform SE 8 \)](https://docs.oracle.com/javase/jp/8/docs/api/javax/xml/bind/DatatypeConverter.html#printHexBinary-byte:A-)

> public static String printHexBinary(byte[] val)
> バイト配列を文字列に変換します。

## JAXB は Java 11 から Java SE 標準ライブラリに入っていない

JAXB は Java SE 6 以降の標準ライブラリに入っていた。

[JAXB Release Documentation – Frequently Asked Questions](https://javaee.github.io/jaxb-v2/doc/user-guide/ch06.html)

> Q: Which version of

元記事を表示

JavaアプリケーションのMBeanの情報一覧を取得する

Scala 2.12

“`scala
import java.lang.management.{ManagementFactory, PlatformManagedObject}

import javax.management.{MBeanInfo, ObjectName}

import scala.collection.JavaConverters._

val mbeanInterfaces: Seq[Class[_ <: PlatformManagedObject]] = ManagementFactory.getPlatformManagementInterfaces.asScala.toSeq val mbeanObjects: Seq[_ <: PlatformManagedObject] = mbeanInterfaces.flatMap(ManagementFactory.getPlatformMXBeans(_).asScala.toSeq) val mbeanObjectNames: Seq[ObjectName] = mbeanObjects.map(_.

元記事を表示

java 選択ソート

#選択ソート
今回は選択ソートについてコードを書いていく。
※自分のアウトプット用の記事です。間違いなどがあったら指摘してください。

“`SelectionSort.java
public class SelectionSort {
public static void main(String args[]) {
int[] array = {2,3,5,4,1};
sort(array);
for(int i=0;i

元記事を表示

モデリング・UML

#ソフトウェア開発とモデリング

共同開発におけるコミュニケーションで重要なこと
・誤解や勘違いを生じさせないこと
・情報が伝わりやすくなるよう図を用いて簡略化すること(モデリング)

###モデリング
ソフトウェアの開発から廃棄までのライフサイクルの中で問題となるのがコミュニケーション。

このコミュニケーションを円滑にするために現場で多用されるのが「図」です。

多くの情報を一度に伝えることができ、共通認識を持ちやすくなるからです。

伝えたい情報をできるだけ簡略化して表現する作業のことを「モデリング」と言います。

###UML

・現代のソフトウェア開発でモデリングと表記法のデファクトスタンダードとして扱われている
・13種類の「図」が定義され、ソフトウェアのモジュール構成を表す構成図と、動作を表す振る舞い図の2つに大別される

######構造図
・クラス図
・コンポーネント図
・コンポジット図
・配置図
・オブジェクト図
・プロファイル図
・パッケージ図

######振る舞い図
・アクティビティ図
・コミュニケーション図
・シーケンス図
・状態図
・タイミング図
・ユース

元記事を表示

【Java】MySQLを絶対に接続させたい!!!~JDBCドライバの取得とJARファイル位置について~

#MySQLをプロジェクトで使いたい….
今回のWebアプリケーション制作では、**MySQL**というデータベースを使ってのアプリ制作です。
Eclipseを使用してJavaでプログラムを書いていたのですが、MySQLってどうやって接続して使うの?という疑問….

そこで今回は**JavaのプログラムからMySQL(データベース)を利用する手順**をまとめました。手順は以下の通りです:point_down_tone2:

**1. JDBCドライバの取得(Connector/J)**
**2. JARファイルをプロジェクトに入れる**
**3. データ接続を試してみる**

##JDBCドライバとは?
手順1に入る前に…JBDCドライバについて簡単に説明しておきます:wink:
JDBCドライバとは、**データベースを操作するために必要となるクラスやインターフェース群です。**それぞれのデータベース開発元が**JARファイル(クラスやインターフェースをまとめて格納したファイル)**として提供しています。
今回使用するデータベースはMySQLなのでMySQL専用ののJBD

元記事を表示

COTOHA API の構文解析 を Java で利用してみる

# COTOHA API とは

NTTグループが提供している、構文解析、照応解析、キーワード抽出、音声認識、要約など、様々な自然言語処理・音声処理APIを提供しているサービスです。

> COTOHA API | NTTコミュニケーションズが開発した日本最大級の日本語辞書を活用した自然言語処理、音声認識APIプラットフォーム
https://api.ce-cotoha.com/contents/index.html

「NTTって電話の会社では?」と思われてる方もあるかもしれませんが、NTTの研究所ではコンピュータでの日本語処理も何十年も前から研究されているのです。(私も学生時代にNTTコミュニケーション科学基礎研究所に見学に行ったり論文を読んだりしてお世話になりました)

最近になってクラウドの技術が進み、従来はローカルのコンピュータで動かしていたような処理をAPIサービスとしてインターネット経由で提供できるようになってきたのです。ロジックそのものの開発はNTTのどの会社・部門が提供しているのかは公開されていないようですが、APIの提供はNTTコミュニケーションズさんでされているよ

元記事を表示

GCSにアップロードされているCSVファイルを扱う

# csvファイルを読み込む
blob.getContentでファイルの中身が取得できるが、ファイルサイズが大きい場合は困ってしまう

“`
Bucket bucket = getBucket(bucketName);
Storage.BlobListOption option = Storage.BlobListOption.prefix(directory);

Page blobs = bucket.list(option);
Iterator iterator = blobs.iterateAll().iterator();

List csvList = new ArrayList<>();
while (iterator.hasNext()) {
Blob blob = iterator.next();
byte[] content = blob.getContent(Blob.BlobSourceOption.generationMatch());
csvList.add(new String(conten

元記事を表示

OpenCV+AndroidStudioで顔認識アプリ

##やりたいこと
OpenCVを使った顔認識アプリの作成
・目標
 ・とりあえずAndroidStudioの導入、使い方を学ぶ(初心者)
 ・OpenCVをAndroid上で動かす
 ・カメラで撮影した画像、ギャラリーに保存されている画像のどちらも使用可能に

## 参考
OpenCVを使って、簡単顔認識Androidアプリを作ってみた
https://qiita.com/Kuroakira/items/094ecb236da89949d702
インテントでカメラを呼び出す方法の補足(主に、Xperia 2.1問題対応)

## 使ったもの
Android Studio 3.5.3
OpenCV 4.2.0

## 大まかな流れ
実装についてはほぼ上記の先人たちを参考にしているのでざっと書きます。

カメラ、ギャラリーボタンを押下

カメラ、ギャラリーから画像を取得

取得した画像をbitmap→Mat形式に変換

OpenCVへMat形式の画像を渡す

顔認識情報を取

元記事を表示

java バブルソート

#ソート
今回からソートについて投稿していこうと思います。
※自分のアウトプット用の記事です。間違いなどがあったら指摘してください。
#バブルソート
“`BubbleSort.java
public class BubbleSort {
public static void sort(int[] array) {
for(int i=0;iarray[j+1]) {
int temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
}
}
}
}
public static void main(String args[]) {
int[] array = {5,4,3,2,1};
sort(array);
for(int i=0;i

元記事を表示

mutable(可変な)オブジェクトとimmutable(不変な)オブジェクト

Java Silver SE11の学習をしていて、「Stringオブジェクトは不変なオブジェクトである」の意味がよくわからなかったので、覚書ついでに。

# mutableとimmutableの違い
そもそもmutable(可変)とimmutable(不変)の違いとはなんぞやから。
簡単に言うと、一度セットした値を**後から変更できるオブジェクト**がmutableオブジェクト。
一度セットした値を**後から変更できないオブジェクト**がimmutableオブジェクト。そのままですね。

immutableオブジェクトの定義方法は下記らしいです。

– すべてのフィールドをprivateで修飾する
– オブジェクト内部の状態を変更可能なメソッド(setterなど)を提供しない
– クラスをfinalで宣言し、メソッドがオーバーライドされないことを保証する(サブクラスから変更させない)
– 内部に可変オブジェクトを保持している場合、そのオブジェクトを外部に提供(getterなど)しない

次項より、immutableなクラス:Hogeを作成することでそれぞれの詳細を確認します。
(その他

元記事を表示

Java 14新機能まとめ

Java 14もRCフェーズに入りました。
うまくいけば2020/3/17にリリースされます。
https://jdk.java.net/14/

# JEP
大きめの変更はJEPでまとまっています。
https://openjdk.java.net/projects/jdk/14/

今回は、16ものJEPが取り込まれました。影響が大きいものも多いです。
305: [Pattern Matching for instanceof (Preview)](https://openjdk.java.net/jeps/305)
343: [Packaging Tool (Incubator)](https://openjdk.java.net/jeps/343)
345: [NUMA-Aware Memory Allocation for G1](https://openjdk.java.net/jeps/345)
349: [JFR Event Streaming](https://openjdk.java.net/jeps/349)
352: [Non-Volatile Mapped B

元記事を表示

Java Integerの比較(==)が正しく動作しない

# 現象

“`java
import java.util.*;

public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); // 「2 10000000 10000000」が入ってくる
int n = sc.nextInt();
List list = new ArrayList<>();
for (int i = 0; i < n; i++) list.add(sc.nextInt()); for (int i = 0; i < n-1; i++) { if (list.get(i) == list.get(i+1)) { System.out.println("等しい"); return; } }

元記事を表示

配列 vs ArrayList vs HashMapの拡張for文レース

# 訂正
比較演算子間違ってました(修正済み)

# つかったもの
・Java9
・eclipce

# 動機
何が最適かは置いといて拡張for文で回したらどれが一番早いのかなと。

# 結果
“`ruby:ForEaerVs.java
public class ForEaerVs {
public static void main(String[] argS) {

Integer mm;

// 配列
Integer[] arry = new Integer[1000000000];

for (Integer i = 0 ; i < 1000000000; i++) { Integer arryInt = i; arry[i] = arryInt; } long staetTimeArry = System.nanoTime(); for(Integer iA : arry) { mm = iA; } long endTimeArry = System.nanoTime(); System.out.print

元記事を表示

【WireMock】Javaでスタブ・モックサーバを立ててE2Eテストを行いたい

# 連携先システムが検証系では使えないけどE2Eテストがしたい
世はマイクロサービス時代なので、HTTPリクエスト・レスポンスのモック・スタブの需要が高まっているみたいですね。
私の参加しているプロジェクトはマイクロサービスなんて関係ないのですが、
表題のとおりの目的で、Javaで動くAPIサーバを探していたところ教えていただきました。

# WireMock
HTTPベースのAPIのシミュレータ、mockサーバー。
http://wiremock.org/
https://github.com/tomakehurst/wiremock

ほかのAPIServerとの比較は下記サイトで確認できます
[Comparison of API simulation tools](https://en.wikipedia.org/wiki/Comparison_of_API_simulation_tools)

## ThoughtWorksのTECHNOLOGY RADARに2018年にTRIALで選ばれてました
https://www.thoughtworks.com/radar/tools

元記事を表示

「=」を使わずにFizzBuzzを書く

#「=」を使わずにFizzBuzzを書きたい
特に意味はない
20までのFizzBuzzを「=」を使わずにいろんな言語で書いてみよう

#C言語

“`c:c_fizzbuzz.c
#include

int main(void) {
int n;
n++;
while (1) {
if (n%3 && n%5) {
printf(“%d”, n);
}
else{
if (!(n%3)) {
printf(“Fizz”);
}
if (!(n%5)) {
printf(“Buzz”);
}
}
printf(“\n”);
n++;
if (n>20) {
break;
}
}
return 0;
}
“`

初期化しないと0が入るのを利用(ただしコンパイラによる)
0がFalse、それ以外がTrueになる性質を使って条件分岐する

#Python
“`python:pyth

元記事を表示

Apache-Tomcat連携サーバで、Chrome 80のSameSite挙動が変わっても、セッションが切れないように設定する。

リンク型決済サイトについて、
2/17以降にChrome決済サイトから決済完了後の画面にPOSTで遷移するとセッションが切れる事が判明したので、
対応方法をメモ。

#発生する現象
Cookieに「SameSite」という属性がありますが、これは現行ではデフォルトが「None」で動作しています。
この状態では、別ドメインのサイトから遷移する場合でもCookieを送信してくれるので、サーバ側でセッションタイムアウトでもしていなければ、遷移前のセッションが保持されます。
その属性が、2/17日以降、Chrome 80ではデフォルトで「Lax」になり、これは「GETの場合は送信しても良いが、POST等、特定の条件ではダメ」という挙動になるようです。
その結果、リンク型決済サイトで別ドメインのページから決済完了画面にPOSTで遷移されると、
Cookieの中のJSESSIONIDが、決済サイトへの遷移する前とは異なる値になってしまい、「別セッション」として扱われます。

#事前の検証方法
1:Chromeで以下の設定ページを開きます。
chrome://flags/
2:設定の中から、「S

元記事を表示

hibernateの複合キー

“`java
@Entuty
@Table(name=”sample”)
public class SampleRecord {

@Column(name = “id”)
private long id;

@Column(name = “name”)
private String name;

// 省略
}
“`

“`
Exception in thread “main” org.hibernate.AnnotationException: No identifier specified for entity: com.sample.jpa.SampleRecord
“`

`@Entity`を使う場合は`@Id`を指定しないといけないっぽい

“`java
@Embeddable
@Table(name=”sample”)
public class SampleRecord {

@Column(name = “id”)
private long id;

@Column(name = “name”)

元記事を表示

Java 基礎知識 1

#はじめに
現在、私はRubyを中心に学んでおります。
学習を進める中、他言語にも興味が沸いた為、Javaに関して用語等を整理していたいと思いました。
もうすでにご存知の方、省略の仕方等ご存知でしたら、ご教授願います。

#Javaとは

– プログラミング言語の1つであり、世界的に人気の高い言語であること

###人気の理由は?

– 多くの現場で使われていること
– 汎用的でOSに依存しないこと(超重要)

#Javaで何ができるのか?
– 上述の通り、OSに依存をしないことからどんな環境でもソフトを動かすことができる。
– [こんなものが作れるようです。すごい!有名なのが多いです!](https://eng-entrance.com/java_product_summary)
– それだけ信頼されているのかと思いました。

#Javaのメリットは?

– 処理速度が速いこと
– 起動にコンパイルを必要とするコンパイラ言語であること
– Ruby等のスクリプト言語よりも処理速度が速いのが特徴のようです。

– プラットフォームに依存しないこと
– 上述の通り、OSに

元記事を表示

IntelliJでJavaをKotlinへ変換する 〜その1〜

# はじめに

[過去の記事](https://qiita.com/kaad/items/efa6833df1e3f1eb1f18)で作ったものをkotlinへ変換してみました。(まだ途中)
この記事では、java(spirng-boot)からkotlinへ変換するステップやちょっとしたテクニックを紹介します。

## なぜkotlin?

ぼくはjavaが結構好きですし、kotlinに精通しているわけではないです。
そして、javaは不滅だと思っています。

不滅と言うと言い過ぎですが、今javaで作られているアプリケーションは多く、javaのスキルを求められるケースも多いです。
そのため、javaエンジニアも多く、今後も使われ続ける言語だと思っています。

しかし、より生産性、安全性を高めるために「ラムダ式や関数型プログラミングの機能」や「non null/nullable」を搭載し、よりシンプルにかけるkotlinを学んでみようと思いました。

## Source

こちらにコミットしています。
比較の際には、kotlinへ変換したリポジトリの履歴を見てもいいですし、kotlin

元記事を表示

ColdFusionにCA証明書をインストールする

ColdFusionで接続先のWebサーバーやメールサーバー、LDAPサーバー(OpenLDAP、Active Directoryなど)が利用している証明書がプライベートCAから発行された証明書や自己証明書だと通信できないので、それを解決する方法です。

※この記事はColdFusion 2018をデフォルトの設定でインストールしている場合を前提としています。ColdFusion 2016でもパスを読み替えれば使えると思います。

# ぱぱっと知りたい

ColdFusionはJVMで動作しているので、keytoolコマンドを利用してcacertsキーストアに証明書をインポートするJavaの方法がそのまま使えます。付属のJavaランタイム(JRE)にもkeytoolが同梱されています。

– JREは `C:\ColdFusion2018\jre` にあります。
– cacertsキーストアのパスワードは `changeit` がデフォルトです。

基本これだけ分かればあとはググればいろいろと出てきますが、私が良く利用しているWindows環境での方法をまとめてみました。

# 手順

元記事を表示

OTHERカテゴリの最新記事