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

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

Javaのインライン展開についてちょっと実験してみる

JavaではJITコンパイラがインライン展開を行っているということは聞いたことがあるのですが、それによってどれだけの恩恵を受けているのか、ちょっと実験してみたくなりました。

## そもそもインライン展開とは
詳細は[Wikipedia](https://ja.wikipedia.org/wiki/%E3%82%A4%E3%83%B3%E3%83%A9%E3%82%A4%E3%83%B3%E5%B1%95%E9%96%8B)を参照してください。
要はメソッドの呼び出しにはオーバーヘッドがあるため、メソッド内の処理をメソッドの呼び出し側に埋め込んでしまえば、メソッド呼び出しのコストを抑えることができるということですね。JITコンパイラが必要に応じてこれを行っています。

## 実験

今回試してみるコードは以下の通りです。StringBuilderに文字列をappendするだけのメソッドを用意して、繰り返し呼び出してみました。

“`java:InlineSample.java
public class InlineSample {

public static void main(

元記事を表示

macOS での Java のバージョン管理

ちょっと真の本題で書いたことを調べようと思って、いろいろ調べた結果の備忘録です。
でも、真の本題の方は、いまいち解決していないという。。

## Java のバージョンについて

Java については、まず、言語そのものと、その動作環境である JVM があり、それらについて、公式の仕様の部分と、公式 (Oracle) やその他さまざまなところが出している実装の部分があります。

Oracle が出している Java の仕様は Java SE (Standard Edition) と呼ばれます。
アプリケーション実装に踏み込んだ仕様である Java EE (Enterprise Edition) (現在は Jakarta EE として移管) や組み込み用途での Java ME (Micro Edition) というのがあった影響で、 Java SE と名付けられていますが、完全に歴史的経緯ですね。

Oracle による Java 実装は、通称 [Oracle JDK](https://www.oracle.com/technetwork/java/javase/downloads/in

元記事を表示

【2020年3月5日まで】RDS証明書を更新する for java

# プロローグ

[新しい SSL/TLS 証明書を使用して MySQL DB インスタンスに接続するようにアプリケーションを更新](https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/ssl-certificate-rotation-mysql.html)

2020年3月5日までにRDSのcaを更新してくださいという話。
手順通りやれば問題ないのだが、いくつかハマりポイントがあったので記事にした。

# 前提

・java
・tomcat
・mysql
・証明書はJKS形式
・クライアントの証明書を先に更新し、mysqlの証明書は後から更新
(同時の場合は、ダウンロードする証明書が異なる)

# 手順

### 1.証明書の取得

先にクライアントを更新するので、2015,2019のバンドル版をダウンロード
場所は現在と同じでよいかと。

“`
$ cd /etc/pki/java
$ wget https://s3.amazonaws.com/rds-downloads/rds-combined-ca-bun

元記事を表示

過去1世紀の間に日本で出回ったすべての本のデータベースを作ろう

# 0. 初めに(対象読者など)

釣りタイトルです。すみません。
本当は、過去1世紀の間に日本で出回ったすべての **「699 テレビ・ラジオ」に分類される**本のデータベースを作ります。
また、 **国会国立図書館のサーバへの自動アクセスを大量に行うこととなるので、くれぐれも自己責任でお願いします**。

対象読者

– 国会国立図書館サーチを(API使わずに)自動で行いたい人
– javaがある程度できる人
– privateメソッドで怒らない人
– 自己責任を理解できる、精神的に大人の方(極稀に、これに残念ながら該当しない社会ガク者の方がいます)

# 1. 実験
国会国立図書館サーチで詳細検索し、分類記号「699」だけを条件に検索すると、
1925年~2020年の、テレビやラジオに関する本をすべて検索することができる。
 しかし、誠に残念ながら、一回の検索で見ることができるのは、上位500件の結果のみである。(501件目以降は、そもそも検索結果に表示されない)
また、出版年

元記事を表示

Yellowfinのカスタムフォーマッターを作って数値のマイナスを△(三角)で表示する

経理関係の資料などでマイナスの数値を「△100,000」のように表記するケースがあります。
Yellowfinでは **カスタムフォーマッター** を使えばこのような表示を実現することができます。

カスタムフォーマッター等の **Yellowfinのプラグイン** はJavaで開発します。
今回はEclipse(を日本語化した [Pleiades](https://mergedoc.osdn.jp/))を用いています。

なお、開発方法はYellowfinのオンラインマニュアルに記載があります。
[プラグイン開発の基礎](https://wiki.yellowfin.co.jp/pages/viewpage.action?pageId=10945559)
[カスタムフォーマッターの作成](https://wiki.yellowfin.co.jp/pages/viewpage.action?pageId=10945478)
本記事では端折りながら進めていきますので、適宜マニュアルを参照してください。

# Javaプロジェクトの作成

新規Javaプロジェクトを作成します。Javaのバ

元記事を表示

[MySQL][java]日時を受け取る

##概要
MySQLに登録された日時をjavaで取得する方法、javaからMySQLへ日時を登録する方法を紹介する。
MySQLへ接続する方法はこちらを見て頂きたい。https://qiita.com/QiitaD/items/d605b07e849e3bec0722

##MySQLに定義する列
日時をtimestamp方で定義する。列名は”date_time”、フォーマットは”yyyy-MM-dd HH:mm:ss”である。

##MySQLからjavaでの取得

~~~java
String mySql = “select * from table_name”;//日時のあるデータを取得するSQL文
ResultSet rs = stmt.executeQuery(mySql); //SQL実行、データを取得
while (rs.next()) {
rs.getTimestamp(“date_time”); //取得データから日時情報を取得
}
~~~

##javaからMySQLへ日時を登録する

元記事を表示

Java合併 & マージを解除Excelセル

本論文では、どのように使うかを紹介しますSpire.XLS for Java Excel Java合併 & マージを解除Excelセル

使用ツール: [Free Spire.XLS for Java無料版](https://www.e-iceblue.com/Introduce/free-xls-for-java.html)

Jarファイルの取得と導入:

Method 1:ホームページを通じてjarファイルのカバンをダウンロードします。ダウンロード後、ファイルを解凍して、libフォルダの下の[Spire.xls.jar](https://www.e-iceblue.com/Download/xls-for-java-free.html)ファイルをJavaプログラムに導入します。

Method 2:[maven倉庫](https://www.e-iceblue.com/Tutorials/Licensing/How-to-install-Spire.PDF-for-Java-from-Maven-Repository.html)設置による導入。

合併Excelセル

Spi

元記事を表示

Java 11 (OpenJDK: AdoptOpenJDK) を Homebrew で macOS にインストールする

## 今回の環境

– macOS Catalina 10.15.2

## インストール

公式資料通りにインストールする。
[GitHub \- AdoptOpenJDK/homebrew\-openjdk: AdoptOpenJDK HomeBrew Tap](https://github.com/AdoptOpenJDK/homebrew-openjdk)

“`
$ brew tap AdoptOpenJDK/openjdk
$ brew cask install adoptopenjdk11
“`

## java_home コマンドでインストールされたディレクトリの場所を確認

“`
$ /usr/libexec/java_home -v 11
/Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home
“`

## 環境変数 JAVA_HOME と PATH を設定

必要に応じて .bash_profile や .bashrc などに記述する。

“`
export JAVA_HOM

元記事を表示

SpringSecurityで認証機能を実装③

**[前回](https://qiita.com/YJ2222/items/11ff28972da21da421d5)の続きです。**

**※ここからたくさんのファイルを作成していきます。失敗した際に、途中で後戻りが出来なくなる可能性が高いので、ここまでプロジェクト情報をコピーまたはGithubなどに挙げておくといいでしょう。**
私はこれをせず何度もプロジェクト作成してかなりの時間を要しました。SpringBoot_Di_Security_DB_13.png

## 5、SpringSecurityの認証機能の実装。

・ここからがメインディッシュになります。
 前回までの実装がうまく行ってないとエラー対応が面倒なので、ここまでを完璧に実装しておきましょう。

元記事を表示

SpringSecurityで認証機能を実装②

**[前回](https://qiita.com/YJ2222/items/73642c3a0af776927db5)の続きです。**

## 4、ログイン画面の実装。

・今回はログイン画面と実装します。ただ認証機能は実装しないので、**ログイン画面からボタンを押せばフォームの内容に限らず画面を遷移させます**。

・ファイルの構成イメージは以下になります。コメントをズラーと書いてしまったので不要な場合は消して下さい。

 SpringBoot_Di_Security_DB_11.png

・コードは以下になります。

“`java:SpringLogin.app.controller/LoginController.java

package SpringLogin.app.controller;

imp

元記事を表示

JDBCを利用する場合、NLSパラメータはJavaのロケールに影響される。

# 実行環境

本記事を書くにあたって、利用した主なソフトウェアのバージョンは次の通りです。なおOracle Databaseの構築にあたってはDockerおよび[Oracle公式のDocker Image](https://github.com/oracle/docker-images)を利用しています。

|software|version, edition|
|—|—|
| Oracle Database 12c | Oracle Database 12c Standard Edition Release 12.2.0.1.0 – 64bit Production |
| ojdbc8.jar (12c JDBC Driver) | Oracle 12.2.0.1.0 JDBC 4.2 compiled with javac 1.8.0_91 on Tue_Dec_13_06:08:31_PST_2016 |
| javac | javac 11.0.4 |
| java | openjdk version “11.0.4” 2019-07-16 |

# 概要

Ora

元記事を表示

兵庫県全域数値地形図DSMから三次元モデル(PLY形式)を作成してみる

## 1.概要
先週末、兵庫県が1mメッシュの全県域3次元データセットを公開をしました。
公開データはDSM、DEM、CS立体図で、ライセンスはC.C.4.0、「目的を問わず二次利用可能なデータですので、様々な用途でご利用ください。」とのことです。

– [兵庫県HP:全国初「全県土分の高精度3次元データ」の公開](https://web.pref.hyogo.lg.jp/press/20200110_4566.html)
– [G空間情報センター:兵庫県全域数値地形図ポータル(2010年度~2018年度](https://www.geospatial.jp/ckan/dataset/2010-2018-hyogo-geo-potal)

これまで公開されていた三次元データセットとしては、[国土地理院:基盤地図情報サイト](https://www.gsi.go.jp/kiban/)の数値標高モデル(5mメッシュDEM)がありましたが、兵庫県全域数値地形図はその25倍のデータ密度であり、DEMに加え、建物や森林を含めたDSMが公開されています。
さっそくこれを利用して、都市や山林部の三次

元記事を表示

NLP4J [006-034c] NLP4J で言語処理100本ノック #34 「AのB」をさらにスマートに解いてみる(完結編)

# 課題

[NLP4J [006-034b] NLP4J で言語処理100本ノック #34 「AのB」の Annotator を作ってみる](https://qiita.com/oyahiroki/items/0f1d7863e92747343634) では以下のようなロジックを切り出して定義することでロジックの再利用を可能にしていました。

ところがこれでもまだ足りないのです。
キーワードの抽出ルールをロジックで書いているため、柔軟性が足りないのです。
「AのB」であればこのロジックで問題ありませんが、では「AがB」のようなものを抽出したいときはまた別のロジックを用意しなければなりません。

“`java
/**
* 「名詞の名詞」を「word_nn_no_nn」キーワードとして抽出します。
* @author Hiroki Oya
*/
public class Nokku34Annotator extends AbstractDocumentAnnotator implements DocumentAnnotator {
@Override
public void

元記事を表示

SpringSecurityで認証機能を実装①

現在、フレームワークの勉強中でSpringBootを扱っております。
その中でログイン機能を実装する際に、SpringSecurityの認証機能を使うのが定石らしく、これを使って実装いたしました。
その際にだいぶ難儀しまして、実装までにだいぶ時間を要したので自分なりにまとめてみました。

## 1、SpringSecurityのイメージ

SpringBoot_Di_Security_DB.png

すごく簡素なイメージ申し訳ないのですが、イメージ的にはこんな感じになります。
SpringBootのDI(依存性の注入)という機能を使って**SpringSecurityを外部から読み込んでDBとやり取りを行います**。
DIに関しては詳しく説明しませんが、外部のオブジェクトをDIコンテナという箱に入れておくことで、い

元記事を表示

【初心者】Java クラスフィールド・メソッド/カプセル化(ゲッター・セッター)【備忘録25】

##クラスフィールド・クラスメソッド
###クラスフィールド
インスタンスフィールドがありましたが、クラスに属するクラスフィールド
というものもある。具体例としては、インスタンスがいくつ生成されたのか数える
countというものがある。
【例】

“`java
class Person{
public static int count = 0;
//…略

Person(String firstName,…);{
Person.count++;
… //↑こうすることで、インスタンスが生成されるたびに1ずつ足されていく。
“`

###クラスメソッド

“`java
class Person{
public static int count = 0;
//…略
public static void printCount(){
System.out.println(“合計” + Person.count + “人です”);
}
}
“`
クラスメソッドは、インスタンスの生成がない場合でも呼び出すことが可能。

“`java
//

元記事を表示

Java 順列の生成

“`java
public List permutation(List list, String target, String ans){
if(target.length() <= 1) { list.add(ans + target); } else { for (int i = 0; i < target.length(); i++) { permutation( list, target.substring(0, i) + target.substring(i + 1), ans + target.charAt(i)); } } return list; } ``` [全組み合わせの列挙 Java](https://qiita.com/masakinpo/items/b6ae147d9a61b592240a)

元記事を表示

JavaSilver試験予約完全攻略ガイド

 この記事では、Java Silver試験を受けるのに一番の難関(ほんとか?)とされる、**受験までの手順**を紹介します。
 今回は「試験会場に行って受ける試験を予約する」までの説明をします。

 試験内容や勉強方法の解説は世に溢れているので自分でどうにかしてください。
#必要なもの
 試験を受けるのに必要なものがあります。

###予約するまでに必要なもの
– メールアドレス
– 試験結果を見るサービスに登録するために必要です。
– 試験サービスに登録するために必要です。

– 職業
– 試験結果を見るサービスに登録するために必要です。
– 電話番号か自宅がない場合、試験サービスに登録するために必要です。

– クレジットカード
– 試験の予約に必要です。仮想クレジットカードやプリペイド式のものでもおそらく可能。
– 受験料は26600円(2020年1月現在)。

###試験を受けるために必要なもの
– 顔写真付き身分証明書
– 職業の次に用意しづらいものです。原動機付自転車免許であれば即日、パスポートであれば1

元記事を表示

LinkedListとArrayList

##リストって
脳死でArrayList使っていたけれど、実はいろいろあるらしい

“`LinkedArrayListTest.java
package listTest;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

public class LinkedArrayListTest {

public static void main(String[] args) {
measure(1000000);
}

private static void linked(int num) {
List list = new LinkedList<>();
for (int i = 0; i < num; i++) { list.add("asd"); } } private static void array(int num) { List list = new ArrayList<>();
f

元記事を表示

Spring Boot(Spring Web MVC + Tomcat)におけるSameSite Cookie

Spring Boot(Spring Web MVC + Tomcat)でSameSite Cookieを使うにはどのようにすればいいか、調べてみました。

## SameSite Cookieとはなにか

MDNのドキュメントを参照してください。

– https://developer.mozilla.org/ja/docs/Web/HTTP/Cookies#SameSite_cookies_experimental_inline

## TomcatのSameSite Cookie対応

TomcatではCookieをHTTPレスポンスへ書き出すため`javax.servlet.http.Cookie`から文字列へのシリアライズを行います。
シリアライズは`org.apache.tomcat.util.http.CookieProcessor`インターフェースを通じて行われます。
実装クラスとして`org.apache.tomcat.util.http.Rfc6265CookieProcessor`が用意されていますが、この`Rfc6265CookieProcessor`クラスの

元記事を表示

RやRStudioでJava (jdk)のバージョンが高すぎてh2oライブラリが使えなかったのを解決した話

#動機
久しぶりに書いたと思ったらまたPATHの話です。
Mac向け。Winの人はごめんね。
学校でR環境下でh2oという深層学習ライブラリを使えという課題が出た際に私だけjdkのバージョンが引っかかって課題が進まなかったのを解決した怒りの手記。

#解決方法
#####R環境下で使うjdkのバージョンを下げる。以下、具体的手法。

####今Javaは何がいくつ入ってんの?

Rコンソールではなくターミナルを起動し、

“`
/usr/libexec/java_home -V
“`
と打ち込んで調べよう。入っているJavaのバージョンが全て出てきます。こういう感じです。
スクリーンショット 2020-01-16 2.32.45.png

####h2oライブラリが使えるjdkを持ってる?

h2oライブラリ

元記事を表示

OTHERカテゴリの最新記事