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

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

【Java】String型の配列をInt型に変える


# String型の配列をInt型に変える


## 一言まとめ
Java8以降では、Stream APIを使って一行でできる。

“`
//Stream APIのインポート
import java.util.stream.Stream;

//String型配列 を int型配列 に変換
int[] int型の配列名 = Stream.of(整数型の配列名).mapToInt(Integer::parseInt).toArray();
“`


## 【説明】

流れとしては

1. Stream APIを[インポート]
2. 文字列型の[配列]を作成
3. String型配列 を int型配列 に変換


## 【メリット】
Java7までの場合は「for文で要素を一つずつ数値型に変換していく」といった書き方だったらしいのですが、Java8からAPIでかなりスッキリ書くことができるようになったらしい。

“`jav

元記事を表示

【Java・SpringBoot】Spring JDBC / ResultSetExtractor(SpringBootアプリケーション実践編17)

ホーム画面からユーザー一覧画面に遷移し、ユーザーの詳細を表示するアプリケーションを作成して、Spring JDBCの使い方について学びます⭐️
前回はBeanPropertyRowMapperについて学びました。今回はResultSetExtractorを実践して学びます^^
構成は前回/これまでの記事を参考にしてください

⭐️前回の記事
[【Java・SpringBoot】Spring JDBC / BeanPropertyRowMapper(SpringBootアプリケーション実践編16)](https://qiita.com/suema0331/items/f512531fbd4968f99d82)

#ResultSetExtractor
* RowMapper以外のO/Rマッパー
* オブジェクトとRDBをマッピング(対応付け)する
* ResultSetExtractorは、**複数件のselect結果をオブジェクトにマッピングする**

#ResultSetExtractorの設定
* **`ResultSetExtractor>`をim

元記事を表示

Dataflow Template “BigQuery to TFRecord” の中身

# Dataflow Template “BigQuery to TFRecord”のソースコードを読んでみる
Dataflow Template は、Google Cloud の分散処理サービスである[Cloud Dataflow](https://cloud.google.com/dataflow)をコードを書かずに動かすことができるシロモノです。いくつかの一般的な処理の[テンプレート](https://cloud.google.com/dataflow/docs/guides/templates/provided-templates)が提供されており、今回はそのうちの「[BigQuery to TFRecord](https://cloud.google.com/dataflow/docs/guides/templates/provided-batch#bigquerytogcstfrecords)」です。機械学習の前処理のひとつです。

ソースコードは[こちら](https://github.com/GoogleCloudPlatform/DataflowTemplates/b

元記事を表示

素人にはお薦め出来ない

「素人にはお薦め出来ない」という[コピペが流行ったのはもはや**20年近く前**だったらしい](https://www.buzzfeed.com/jp/takumiharimaya/yoshinoya-copipe)。20年って長いですよね。生まれた赤ちゃんが成人式を迎えるくらいの長さ。
さて昨日話題になったこの話、[Kubernetes 1.20からDockerが**非推奨**になる理由](https://blog.inductor.me/entry/2020/12/03/061329)だったり、[Dockerは**非推奨じゃない**し今すぐ騒ぐのをやめろ](https://jaco.udcp.info/entry/2020/12/03/172843) だったり、それそのものはここでは吟味しないのですがその心は

– 機能は100%カバーされる
– 移行を検討してほしい

とのこと。いまこそ「非推奨」の意味を正しく理解したいと思った。

## それはまさに諸刃の剣

[IT用語の「非推奨」は「使えなくもないけど使わない方がいい」ということ。](https://eigobu.jp/ma

元記事を表示

やはり俺の技術チョイスはまちがっている (Spring Data DynamoDB 編)

# はじめに
(長文です。結論だけ知りたい方は最後だけ読んでください)

このページにたどり着いた方はきっと、 Java で Amazon DynamoDB を使うことになって、普段使うフレームワークがが Spring なので、Spring のエコシステムに乗っかる形で DynamoDB が使えたら…とか考えている人だと思います。

私もそんな人間の一人でした。
そこで、同士達が、同じ苦労をしないように、ここに記録を残します。

# 諸君、私は Spring が好きだ
好きなんですよ。Spring。

なんで好きかって言われるとよくわからないんですが、Springって名前でフレームワークが揃うとなんだか気持ちいいじゃないですか。私、昔からそういうの好きなんですよ。辞書は三省堂で揃えたりとか。技術書は同じシリーズのもの買うとか。

で、このたび業務で Amazon DynamoDB を使う機会がありまして。軽くググってみると、Spring Data DynamoDB ってのがあるそうじゃないですか。そこで、[Spring Data](https://spring.io/projects/

元記事を表示

【Java】String型 をInt型に変換(parseInt)


# String型をInt型に変換する

「String型をint型に変換する方法」です。

文字列を変換するメソッドはいくつかありますが、基本的には以下の構文で書くことが出来ます。

“`
ラッパークラス.parse型名(文字列型の値)
“`
最も使用するのは整数型に変換するときだと思うので、その他の書き方はまた後日加筆します。

## String型からint型への変換方法(parseInt)

IntegerクラスのparsIntやvalueOfを使うことでint型に変換が可能です

“`
int 変数 = Integer.parseInt(文字列);
“`

文字列をint型の数値に変換するには下記のような流れになります。

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

// 「1」を文字列として変数化
String str = “1”;
//文字列の変数をint型に変換
int num = Integer.pa

元記事を表示

Spring Bootとはなにか

#プログラミング勉強日記
2020年12月3日
今日初めてSpring Bootを使って簡単にアプリを作ることができたので驚いた。なので、Spring Bootとはなにかまとめようと思う。

#Spring Bootについて
 Spring Bootの紹介をする前に、まずSpring Frameworkについて触れる。

##Spring Frameworkとは
 Spring Frameworkは2004年にリリースされたオープンソースのフレームワークで、依存性注入(DI)や、アスペクト指向プログラミング(AOP)などシステム開発やプログラムの修正がしやすいような仕組みになっている。他のフレームワークと比較しても、Spring Frameworkは汎用性が高く、WebシステムやWebサービス以外にもクラウドやモバイルシステムの開発にも適している。

 Spring Frameworkはフレームワークの集合体で、機能に応じて多数のフレームワークで構成されている。これによって、幅広い開発ができるが、機能の使い分けが難しいというデメリットもあった。

##Spring Bootとは
 Ja

元記事を表示

ArchUnit 実践:パッケージの依存関係のアーキテクチャテスト

“`
// 実行環境
* AdoptOpenJDK 11.0.9.1+1
* JUnit 5.7.0
* ArchUnit 0.14.1
“`

2日目の [ArchUnit 実践:依存関係を逆転した Layered Architecture のアーキテクチャテスト](https://qiita.com/drafts/a4a3fd8d0c19f0f7801d) を、別のテスト構文を用いて実装します。

## 例①: UI 層のクラスはインフラストラクチャ層のクラスからのみ依存される

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3899/e8952863-bb47-a548-fe36-928fe637a1e0.png)

### アーキテクチャテストの実装

“`java
package com.example;

import com.tngtech.archunit.core.domain.JavaClasses;
import com.tngtech.archunit.

元記事を表示

JUnit + Mockito + PowerMock チートシート

# 目次

* [使用環境](#使用環境)
* [モック-スパイオブジェクトの生成](#モック-スパイオブジェクトの生成)
* [メソッドのスタブ化](#メソッドのスタブ化)
* [protected-private変数の設定-取得](#protected-private変数の設定-取得)
* [メソッドの実行](#メソッドの実行)
* [メソッドの実行回数の検証](#メソッドの実行回数の検証)
* [その他](#その他)
* [参考文献](#参考文献)

# 使用環境

| フレームワーク | バージョン |
|:-:|:-:|
| JUnit | 4.12 |
| Mockito | 2.7.22 |
| PowerMock | 1.7.4 |

# モック-スパイオブジェクトの生成

### モックオブジェクト

“`java
@Mock
Sample SampleMock;
“`

### スパイオブジェクト

“`java
@Spy
Sample SampleSpy = new Sample();
“`

### モックオブジェクト(PowerMockit

元記事を表示

ゼロから始めるSpring Boot その3

##目標
複数回に分けて実施予定です。
**また、以降の記事ではエスケープのため、各項目の@を全角にしています。(コード内は半角なのでご安心ください)**
(今まで`@`とすることでエスケープさせていましたが、見づらい気がしたので…)

1. SpringBootとは何かをざっくり知る
1. 環境構築&Hello World!を表示させる
1. パラメータやオブジェクトの受け渡しをする
1. **他の機能にも触れてみる** ←今回やること

他の機能・・・ちょっとフワっとしてますね。改めて具体的に書きます。

##目標(他の機能について)

1. [ ]  **DBを操作してみよう(JPA編)** ←今回やること
2. [ ]  DBを操作してみよう(MySQL編)
3. [ ]  バリデーション(入力チェック)を導入しよう
4. [ ]  プロパティファイルを読み込もう
5. [ ]  actuatorに触れてみよう(おまけ)

元記事を表示

【Spring】データベースから取得できない

###環境
Windows10
SpringBoot(v2.4.0)
pleiades 2020
MySQL 8.0

###エラー

“`
com.mysql.cj.exceptions.DataConversionException: Cannot determine value type from string [データベースのデータ]
“`

###原因(型の不一致)

Entityクラスの型が間違っていました。

– データベースはVARCHAR
– EntityクラスでInteger

にしていました。

###解決法(Entityクラスの型をStringにする)

“`java
private Integer [カラム名]
↓変更
private String [カラム名]
“`

ただこれだけ。

初心者にありがちなミス。エラーをそのままググっても英語ばかりでなかなか見つかりません。

とりあえず
`Cannot determine value type`
とあるように、`value type = データ型`
としっかり見定めてからググるべきでした。

元記事を表示

Java NIO2 を利用する (2)

# スレッドとNIO

デバイスとアプリ(Java側)の考え方については、前段の記事で書きました。ではJava側どのようなアーキテクチャが実現されているのか?
次の記事を見つけました。

[Notes on the Asynchronous I/O implementation](https://openjdk.java.net/projects/nio/resources/AsynchronousIo.html)

非同期I / Oの実装に関する注意
( Notes on the Asynchronous I/O implementation )

###固定スレッドプール

サイズNの固定スレッドプールに関連付けられた非同期チャネルグループは、カーネルからのI/Oまたは完了イベントを待機するN個のタスクを送信します。各タスクは、単にイベントをデキューし、必要なI/O完了を実行してから、結果を消費するユーザの完了ハンドラに直接ディスパッチします。完了ハンドラが正常に終了すると、タスクは次のイベントの待機に戻ります。キャッチされなかったエラーまたはランタイム例外が原因で完了ハンドラ

元記事を表示

Java NIO2 を利用する (1)

# はじめに
 Javaで通信システムを開発しているのですが、通信システムを作るうえで重要だなと感じることが3つあります。

– ソケットプログラミングの知識
– マルチスレッドの知識
– 時間に対する考え方(タイムアウトやインターバル等)

 今回は、Java言語でNIO2によるプログラミングについて書いてみたいと思います。
通信(WEBサーバも含めて)システムにおけるソケットプログラミングにおいては、まず、ソケットサーバと、ソケットクライアントの観点から考える必要があると感じています。
 私が初めてソケットプログラミングをした時は、java.net.Socketやjava.net.ServerSocketを利用して作成していました。しかし、「C10K問題」が有名になり、従来のソケットプログラミングから新しいソケットプログラミングに変更しなければならないという意識が出てきました。当初は実際我々の管理している通信サーバは、中規模であり、そこまで通信の負荷がかかることもなかったのですが、利用顧客が増えてきて考えざるを得なくなったという経緯があります。

# 同期・非同期、ブロッキング・ノ

元記事を表示

foreachでコレクションに格納しているStringは更新できない/不変性

#はじめに
これは、Stringのコレクションを拡張for文、ForEachでは「内容の更新」が出来ないというお話です。

##どんな時か
以下のコードで、strArrayに放り込んだ”a”,”b”,”c”に”X”という文字を連結し、その内容をforeachを抜けた後で出力します。

“`java
private void modifyStrInCollection() {

String strArray[] = { “a”, “b”, “c” };
///foreachで更新。
for (String str : strArray) {
str += “X”;
System.out.println(“01:” + str);
}
///配列の内容出力
for (String str : strArray) {
System.out.println(“02:” + str);
}
}
“`

どんな結果になると思いますか? “aX”,”bX”,”cX”になっているでしょうか。 実行結果は以下の通りです。

“`java
01:aX
01:bX
01:c

元記事を表示

【Java・SpringBoot】Spring JDBC / BeanPropertyRowMapper(SpringBootアプリケーション実践編16)

ホーム画面からユーザー一覧画面に遷移し、ユーザーの詳細を表示するアプリケーションを作成して、Spring JDBCの使い方について学びます⭐️
前回はRowMapperについて学びました。今回は**BeanPropertyRowMapper**を実践して学びます^^
構成は前回/これまでの記事を参考にしてください

⭐️前回の記事
[【Java・SpringBoot】Spring JDBC / RowMapper(SpringBootアプリケーション実践編15)](https://qiita.com/suema0331/items/5062bcf008d507a58b75)

#BeanPropertyRowMapper
* **RowMapper自体を用意しなくてOK!**
* BeanPropertyRowMapperでは、**データベースから取得してきたカラム名と同一のフィールド名がクラスにあれば、自動でマッピング**をしてくれる!
* →つまり、RowMapperのように**どのカラムとどのフィールドを一致させるか、いちいち用意する必要がない**
* 自

元記事を表示

【Spring Data JPA + MySQL】ERROR 1064 (42000)を解消する

#エラーの内容
Spring Bootで、`Spring Data JPA`と`MySQL Driver`を使った開発を行っていたところ
以下のようなエラーメッセージが表示されました。

>java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near…

SQL文に問題があるよって言われてるみたいだけど、JPA使ってるからSQL文なんて書いた覚えがない・・・

#エラーが発生したソースコード
今回は、JPAのsaveメソッドを使って
MySQL側で用意したテーブルにinsertしようとしたら、上記のエラーが発生しました。

実装してエラーが発生したコードは以下の内容になります。

###YAML
接続情報を定義しています。

“`yml:application.yml
spring:
datasource:

元記事を表示

【JUnit】JUnitを使ってテストケースを作りたいときにやること

## JUnitとは?

Javaのプログラムをテストするフレームワークのこと
一番メジャーなテストフレームワークなのでJavaを扱う現場ではセットになっているケースが多いと思います。

## なぜテストをするのか?
簡単に言えば、作ったプログラムがきちんと動いていることを確かめるためにテストをします。

Javaのように大規模なシステムのためのプログラムや止まっていは行けないミッションクリティカルな要件では特に大切。

あと、テストフレームワークを使わずに手動でプログラムを確かめるのはとっても大変だからです。
(いわゆるIT土○的な残業MAXなお仕事スタイルを納品前にすることもある)

なので、コードを作った時点でテストを作り後続で作ったプログラムができてもきちんと動くことを保証することはとても大事なことであると思います。

GooodBye、スキルアップしない残業人生…

## プロダクトコードを作成する。

一番わかり易いモデルとして足し算を行うプログラムをテストしてみよう

本来は先にテストコードを書いてからというお約束があるけれど今回はテストした対象ありきでスタート。サン

元記事を表示

【Java】Spring Tool Suite(STS) インストールからHello World出力まで

#はじめに
Javaのお勉強をする中でテキストエディターとコマンドプロンプトをポチポチするのに飽きてきたので、ツールを入れる練習も兼ねてSpring Tool Suite(STS) をインストールしました。

その時の記録を(ざっくりと)残します。

#必要なもの
・STS(https://spring.io/tools)
・7-zip(.jarの解答用)

#手順① STSインストール~起動
①OSにあったSTSをダウンロードする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/904115/94077383-d2b5-8dcc-4616-dd9782fc9a14.png)
(ファイル名が32bit版っぽいかもしれないけど気にしない)

②ダウンロードしてきたjarを適当な場所において解凍
 右クリック→7-zip→ここに展開
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/904115/1

元記事を表示

エンジニアとしてキャリアを考える

みなさんこんにちは、グリドンです。

これから、qiitaで僕が学んだことをアウトプットしていこうと思います!
なお、全て自分の解釈、自分の意見ですので、間違ってる部分もあるかと思いますが、暖かく見守っていただければと思います。コメントでどんどん指摘して下さい。

さて、先日t_wadaさんによる、エンジニアとしてこれからどういうキャリアを築いていくか、というトピックの講演を聞いてきました!

恥ずかしい話、t_wadaさんの事はこの講演まで知りませんでした(速攻でTwitterフォローしました)?

本題ですが、講演の中でt_wadaさんおっしゃられていた3つのこと

1. アウトプットをすること
2. 学び続ける姿勢
3. 技術の学び方を学ぶこと

全て「なるほどー」と、タイトルを見るだけで思いますが、t_wadaさんが5つ分けて話されていたので、ひとつづつ書いていきたいと思います。

1. 月に1冊のペースで技術書を読む
月に1冊って結構多いような、、、
でもこれは、僕自身も最近意識していました。月に1冊は少しきついんですが、一日少しづつ本を読ん

元記事を表示

【Jaba】JDBC (Java DataBase Connectivity)


# JDBC(Java DataBase Connectivity)とは

かいつまんで言うと「Javaでデータベースに接続するやつ」。
または「ODBCのJavaプログラム版」。

– Java(ジャヴァ)
– DataBase(データベース)
– Connectivity(コネクティビティ)

の略といわれています。が、実はJDBC仕様には明記されていません)。


## 【説明】
「Javaのプログラムとデータベースの間に入って仲立ちをする部品」
 JDBCは、「リレーショナル・データベース(および、ほとんどすべての表形式のデータ)にアクセスするための、標準Java API」です。

 企業内のクリティカルなデータは、多くの場合リレーショナル・データベースに格納されています。そのため、JDBCは、Javaによるエンタープライズ・アプリケーションの基礎をなす、重要なAPIの1つとなっています。

## 【特徴】
ODBCというWindows専用のデータベース接続のための

元記事を表示

OTHERカテゴリの最新記事