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

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

参考になったデバック方法

自分の知らないデバック方法をためておくためのページ!!

– ファイル出力機能でどこにファイルがでるかわからない
→ファイルを作成するメソッドを使って、ルートにファイルを作成するようにしてみる。デバックをしながらそのパスを拾い上げる

– try,catchを何階層も作成し、どこで落ちるか、当てはまるのかを特定する

元記事を表示

マルチスレッド概念から使い方まで 「初心者から中級者向け」

##はじめに
皆さんは、マルチスレッドについてご存知でしょうか。
正しくマルチスレッドを使うことによって、システムのパフォーマンスを向上させることが出来ます。今回は初心者に向けてマルチスレッドにについて概念から使い方まで解説していきます。

##マルチスレッドはなぜ必要なのか?
プログラムの流れは、プログラムの処理が終わるまで次の処理に進めないという特徴を持っています。この特徴の問題点は処理が終わるまで待つ時間ができてしまうことです。
このような問題を解決するのがマルチスレッド並列処理です。マルチスレッド並列処理を解説する前に、並列処理と並行処理について解説していきます。

##並行処理と並列処理
並列処理を一言で言えば、マルチコアで同時に複数の処理を実行することです。詳しく説明すると、コンピュータに搭載しているCPUには複数のコアを持っています。コアの数だけ、同時に複数の処理を進めることができるので、待ち時間を解消することが出来ます。飲食店を例にすると、お店の人が1人だった場合は料理、配膳、食器洗いと時間ごとに仕事をします。このことを並行処理だとイメージしてください。それが複数いると

元記事を表示

勉強会のためにGitLabのパイプライン機能で競プロっぽい環境を作ってみた

以前作ったCI環境に一手間加えて、自社の社員が楽しみながらJavaを学べるような環境を整えてみた。
できるだけ手軽にJavaのプログラムを体験できるように準備しました。

# 構成

今回のシステムの構成はこのような感じ。

![勉強会環境2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/395414/dadab41f-a52f-ceab-cf5c-a4fa05cdd862.png)

1. 生徒がgitlabにソースコードをプッシュする
1. gitlab-ci.yamlにジョブを登録しておき、適当な環境でコードをコンパイル、実行する
1. 実行結果をslackに投稿

# パイプライン設定

前回ci環境を整えた後色々調べた所、gitlabの[runnerの設定を変更](https://docs.gitlab.com/runner/shells/index.html#overview)すればプリインストールされているpowershellを使えることがわかった。
それも踏まえて、下記のようなパイプライ

元記事を表示

1台のPCから2台のDOBOTを切り替えながら制御する

# やりたいこと
1台のPCから2台のDOBOT Magicianを制御したいと思います。
DobotStudioでは、プログラムを実行しながら接続するDOBOTを切り替えられないので、PythonやC言語等、各種プログラミング言語を使用します。

公式に提供されているAPIには、DOBOTを複数台同時に接続する方法がありませんので、今回は都度接続するDOBOTを切り替えながら制御したいと思います。

# 動作

– 1台目のDOBOTでペンを掴み、2台目のDOBOTに渡せる位置に移動します。

元記事を表示

Java Silver SE11 9章

# Java Silver SE11 9章
[黒本](https://www.amazon.co.jp/gp/product/4295007625/ref=ppx_yo_dt_b_asin_title_o00_s00?ie=UTF8&psc=1)をもとに学んだことをアウトプットしていきます。
主に問題を解いていて、間違えた箇所もしくは知らなかった内容になります。

## コレクション
何らかの集合のこと。
配列がこれに該当する。

配列には以下の制約がある。

* 同じ型もしくは、互換性のある型のみ扱える
* 要素数を最初に決める必要がある
* 要素にアクセスするには添字を使う
* 要素にアクセスするときは、要素数を超えないようにしなければならない

詳しくは[Java Silver SE11 5章](https://qiita.com/yasuro/items/dc5443de64969f14c36d)を参照

## コレクションAPI or フレームワーク (collection framework)
java.utilパッケージに属する、データをまとめて扱うための入れ物としてのク

元記事を表示

RESTFul API の例外- ClientHandlerException

## 事前情報
・最初からRESTFul APIを作ったことがない
・すでにあるAPIでやり取りだけ

## やりたいものちゃんとエラーハンドリング
例) https://www.programcreek.com/java-api-examples/?class=com.sun.jersey.api.client.ClientHandlerException&method=getCause
↓のコードが理解できなかった

“`java
public ChannelFinderException(ClientHandlerException cause) {
super(cause.getMessage());
if(cause.getCause() instanceof SocketException) {
this.setStatus(Status.NOT_FOUND);
} else {
this.setStatus(Status.SEE_OTHER);
}
}
“`

ClientHadnlerException

元記事を表示

JavaアプリでPDF出力する方法

JavaアプリでPDF出力する方法を実務で実装したのでメモしておきます。

#1、 Jaspersoft Studioをインストールし、帳票のテンプレートファイル(jrxmlファイル)を作成する

まずはEclipseで、

ヘルプ → Eclipseマーケットプレイス・ウィザードを開く

でマーケットプレイスを開き、JasperSoft Studioをインストールします。インストールが終わったら、

src/main/webapp/template/ 配下でjrxmlファイルを作成します。このjrxmlファイルでレイアウトを作成し、パラーメータを割り当てます。また、ここではフォントを「IPAex明朝」にしておきます。

#2、 jarファイル一式をダウンロード

下記のjarファイル一式をダウンロードします。

“`
bcprov-jdk15on-1.68.jar
castor-core-1.4.1.jar
castor-xml-1.4.1.jar
commons-beanutils-1.9.4.jar
commons-collections-3.2.2.jar
commons-c

元記事を表示

Javaアンチパターン:トラブルの原因になるマズいコード

この記事は,かつてdeveloperWorksの「[WebSphere Application Server小ワザ集](https://community.ibm.com/community/user/wasdevops/blogs/takakiyo-tanaka1/2022/02/12/was-kowaza)」でApplication Anti Patternとして公開されていたものです。筆者が過去に経験したコードに原因があったトラブルを,どのようなコードが悪くてトラブルになったのかをまとめた記事です。トラブルはWebSphere Application Server上で発生したものですが,他の多くのJava EE環境でも同様の問題が発生すると思います。

内容は相当に古いのですが,現在の環境でも役に立つ内容もあるので,再掲載しようと思います。「現在では」の部分以外は,タイプミスやコードのバグ以外は,原則として当時のまま記載しています。

# データベース・コネクションの確保,利用,クローズがコード中に分散している

### アンチパターン

あるお客様のコードでは,データベースを使

元記事を表示

Javaを使用してExcelでピボットテーブルを作成する方法

Excelシートで処理すべきデータが多すぎて、各セルのデータをまとめる必要がありながら、1つずつ計算するのが面倒くさい場合は、ピボットテーブルを使用してすばやくまとめできます。そしてこの記事の内容では、Javaプログラムを使用してExcelテーブルのデータに基づいてピボットテーブルを作成する方法を紹介します。

##環境への下準備
ExcelクラスライブラリツールであるFree Spire.XLS for Javaを使用する必要があります。ここでは無料バージョンを使用します。公式WebサイトからJarパッケージをダウンロードして解凍し、手動でSpire.Xls.jarをライブラリにインポートできます。フォルダをJavaプログラムに追加します。

##Javaコード一覧

“`
import com.spire.xls.*;

public class CreatePivotTable {
public static void main(String[] args) {
//Excelテストドキュメントを読み込む
Workbook wb = ne

元記事を表示

JNAでデスクトップフォルダのパスを取得してみた

## これまでのあらすじ
いまさらJavaでGUIやらなきゃになったんだけれど、デスクトップフォルダのパスってどう取ればいいのん?

## 失敗したやつ

“`java:
System.out.println(System.getProperty(“user.home”), “Desktop”);
“`

ぐぐるとよく出てくるやつなんだけれど、OneDriveとか入ってるとこれじゃあダメなのね。やだめんどいー!

## ちょっともやっとするやつ

Runtime.exec()でレジストリ読む方法。このパスどのくらい汎用性あるのかわからないんですが。
“`java:
public static void regTest() throws IOException {
String cmd = “reg query \”HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders\” /v Desktop”;
Process process = Runtime.getRuntime().exe

元記事を表示

「はじめての Django アプリ作成」をSpring WebFluxでやってみた、その 2

# はじめに
この記事はDjangoの公式チュートリアル[「はじめての Django アプリ作成」](https://docs.djangoproject.com/ja/4.0/intro/tutorial02/)と同じものをSpring WebFluxで作成することでDjangoとSpring WebFluxの違いを理解することを目的としています。

# 違い一覧
DjangoとSpringで類似している要素を纏めてみました。

|Django|Spring|備考|
|:———–|:————|:————|
|Model(モデル)|Model(モデル)||
|Template(テンプレート)|View(ビュー)||
|View(ビュー)|Controller(コントローラ)||
|SQLite3|H2 Database|基本のデータベース|
|Django Admin|無し|CMS支援|

# はじめてのアプリ作成、その 2

## Database の設定

### Django
`mysite/settings.py`の`ENGINE`

元記事を表示

「マイクロサービスパターン」の復習 7章

## 概要

– Java読書会でせっかく勉強したのにつぎつぎと忘れていくので、印象に残ったところを記録していく

http://www.javareading.com/bof/

## 7章 マイクロサービスアーキテクチャでのクエリーの実装

– テーマはマイクロサービスアーキテクチャでいかにしてクエリーを実現するか

## API Compositionパターン

– 各マイクロサービスの手前にComposerを立てて、ComposerがAPIをクライアントに公開しつつ、各マイクロサービスに必要なクエリーを発行する
– API GatewayにComposerを埋め込むなり、独立サービスにするなり、役割分担は色々選択肢がある
– 例)ComposerはクライアントにfindOrder()を提供するために、Order、Kitchen、Deliveryなどのマイクローサービスを呼び出して、得られた情報を結合した結果を返す
– 利点:直感的で分かりやすい
– 欠点:ComposerでJoinの処理をするので、大量データを扱うのは難しい

## CQRS(Command Quer

元記事を表示

【メモ】DAOパターンのファイル一例【Java】

##

“`java:TaskDaoImpl
@Repository
public class TaskDaoImpl implements TaskDao {

private final JdbcTemplate jdbcTemplate;

public TaskDaoImpl(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}

@Override
public List findAll() {

String sql = “SELECT task.id, user_id, type_id, title, detail, deadline, ”
+ “type, comment FROM task ”
+ “INNER JOIN task_type ON task.type_id = task_type.id”;

//削除してください

//タスク一覧をMapのListで取得
List> r

元記事を表示

Tomcatを強制的に終了する方法

./shutdown.sh を実行してもTomcatが終了できない場合は、

“`ps -A | grep java“`

または

“`lsof -i -P | grep 8080“`

を実行する。

表示されたプロセスIDを指定してkillする。

“`kill -9 プロセスID“`

または

“`kill -15 プロセスID“`

これでTomcatを終了できます。

元記事を表示

【Java】enumでcontainsメソッドっぽく指定した値が存在するか判定する

# はじめに

Javaで`enum`を利用する際、メンバ変数を宣言することが可能ですが、
**指定した文字列や値、インスタンスがenum内に含まれているか?** という

* **Collectionクラスのcontainsメソッド** 
* **MapクラスのcontainsKey/containsValueメソッド**

のようなメソッドに関しては自前で実装する必要があります。
実装自体は難しくないですが、調べても意外と出てこなかったため備忘録として残します。

# 今回利用するenum
“`Java:enum
public static enum Department {
SALES(“1″,”営業部”),
PERSONNAL(“2″,”人事部”),
DEVELOPMENT(“3″,”開発部”);

private final String departmentCode;
private final String departmentName;

Department(String depar

元記事を表示

【 Java_さまざまな命令 】

Javaを学習中の初学者です。
備忘録としての投稿になります。

#Javaのさまざまな命令7種
Javaにはさまざまな種類の命令があり、今回はその中でも代表的なものをピックアップしました。
####①System.out.println(引数)
画面に文字を表示させる命令
例えば、

“`java
String name = “龍一”;
System.out.println(name);
“`
の実行結果は「`龍一`」になります。

####②System.out.print(引数)
改行をせずに画面に文字を表示させる命令
例えば、

“`java
System.out.print(“私は”);
System.out.print (“龍一です”);
“`
の実行結果は「`私は龍一です`」になります。

#### ③int a = Math.max(a, b)
引数①・②の二つを比較して大きい方の数値を代入する命令。
例えば、

“`java
int a = 5;
int b = 10;
int x = Math.max(a, b);
System.out.println(

元記事を表示

ドメイン駆動設計入門 Chapter 12 ドメインのルールを守る「集約」 – 集約とは を読んで

4ヶ月ほど前から、[ドメイン駆動設計入門 ボトムアップでわかる!ドメイン駆動設計の基本](https://www.seshop.com/product/detail/20675)の輪読会に参加しています。[昨年11月にChapter 2を担当した](https://qiita.com/flyaway/items/305df0382d9a284820b6)のに続き、「Chapter 12 ドメインのルールを守る『集約』」を担当することになりました。このため、自分なりに理解した内容と感想をまとめました。

**注意:本記事は、あくまでも筆者の理解をまとめたものです。**正確な解説を知りたい場合は、書籍や別の記事などをご参照ください。

https://www.seshop.com/product/detail/20675

本書で取り扱われているサンプルコードのプログラミング言語はすべてC#が採用されています。しかし、筆者はC#に触れた経験がないため、本記事内におけるソースコードはすべてJavaを採用しました。

# こんなコードはありませんか?

新しいクラスを作成したときに、「フィール

元記事を表示

Javaの基本的なデータ型の操作についてまとめてみた

Javaシルバーの勉強をしていて、Javaの基本的なデータ型の操作で詰まったので、ここで解決していきたいと思います。
問題を解いていたら本当に正解率が悪かった。。

なのでまとめて見ようと思います。

# Javaの基本的なデータ型の操作

##ラッパークラス

Javaの型には参照型と基本型があるのですが、基本型では主に数値を用いた計算や数値や文字を格納する働きがあります。
しかし、Javaでは格納した値を操作するやり方がありません。
そんな時に使うのがラッパークラスです。

ラッパークラスをつかうことで、基本型をオブジェクトとして扱うことができるようになり、操作をすることができます。

|基本型 |ラッパークラス |
|—|—|
|boolean |Boolean |
| byte |Byte |
| char |Character |
| short |Short |
| int |Integer |
| long |Long |
| float |Float |
| double |Double |

上記に挙げられている型の基本型は、

元記事を表示

Spring MVCのsuspendなControllerを実行するとInterceptorやContollerAdviceが複数回実行されてしまう

バージョン情報

* Spring Boot: 2.6.3

Spring MVCではKotlinのコルーチンがサポートされています。

Controllerのhandler関数にsuspendをつけると、Springがコルーチンを起動してhandler関数を実行してくれます。

“`kotlin
@RestController
class DemoController {
@GetMapping(“suspend”)
suspend fun indexSuspend(): String {
return “suspend handler is executed.”
}
}
“`

このようにhandler関数にsuspendをつけると、Controllerの前段にあるInterceptorやControllerAdviceが複数回呼び出されてしまいます。

シーケンスは以下のような感じです。

![](https://raw.githubusercontent.com/nyandora/universal-static-resources/

元記事を表示

Javaのモジュールについてまとめてみた

Javaのモジュールシステムについてまとめてみました。

Java9から実装された機能なのでかなり古いですが、やってみます。

# Javaのモジュールシステムとは

“`
・パッケージの依存関係を簡潔に整理させる
・パッケージのアクセスを制御することができる
“`

これらの利点を得るためにJava9で実装されたものです。
これにより、不用意に他のプログラムからのアクセスを拒否することができます。そうして
「え、このコード動かして実装してみたら他のところでバグが起きちまった!クソスパゲティーコードが!!!!」
といったことがなくなります。筆者もmoduleではないですが、コードを書いていたら別のところがバグってしまい、「そこにアクセスするんじゃねぇよ」と思った経験があります。
そういたことを防ぐためにあるわけですね。

Java9よりも細かくアクセスできるスコープを設定できます。具体的には

“`
・今作業しているモジュールの中でだけpublic
・指定したモジュールに対してだけpublic
・すべてのモジュールに対してpublic
“`

ということができます。

そして、

元記事を表示

OTHERカテゴリの最新記事