JAVA関連のことを調べてみた2021年10月22日

JAVA関連のことを調べてみた2021年10月22日
目次

【logback】TimeBasedRollingPolicy以外とprudentモードを共存させ、単一ログファイルに複数フォーマットのメッセージを出力する(タイトルに偽りあり)

なぜこの記事を書くに至ったかの経緯をまず書いているので
どう対応したかは最初に***[ここ](https://qiita.com/o________o/items/c17a63f8d82d8dcb6557#%E6%9C%AC%E9%A1%8Ctimebasedrollingpolicy%E4%BB%A5%E5%A4%96%E3%81%A8prudent%E3%83%A2%E3%83%BC%E3%83%89%E3%82%92%E5%85%B1%E5%AD%98%E3%81%95%E3%81%9B%E3%82%8B)***から読んで見てください。

# ことの始まり

log4jの設定をlogbackに移行していたら以下のような設定に出会った。

– 2つファイルアペンダーがあるが、layout以外は全て同じ設定
– それぞれのアペンダーは異なるロガーがrefで参照している

つまり目的は

– `1つのログファイル`に`異なるロガーから異なるフォーマットのメッセージ`を出力したい
– バックアップファイル名は`ログファイル名.n`の連番でつけたい([log4j.RollingFileAp

元記事を表示

Javaプロジェクトの簡単な記録(各階層コードの作成)

###各階層コードの作成

####1.Controller:対外暴露のAPIインターフェース
-クラスコメント
-@RertController
-@Request Mapping(「xxxx」)
-方法/属性コメント
-@Autowired
-@PreAuthorze
-@GetMapping
-@PostMapping
-@PutMapping
-@DeleteMapping
-Swaggerコメント
####2.Service:システムで他の種類の呼び出しのための方法は、自動注入によって使用されます。
####3.Domain:エンティティ類(一般的にはデータベーステーブル構造に対応する必要があります)
-Lombookプラグイン
#####改造前
“`
package comp.ruoyi.junnior.domain;

import org.apache.com mmons.lang.3 builder.ToStringBuider;

import org.apache.com mmons.lang.3 builder.ToStering Style;

import

元記事を表示

Couchbase Server Java SDK解説:分散トランザクション〜クリーンアッププロセス(設定と監視)

## はじめに

下記の記事で触れたように、Couchbase Server Java SDKには、分散トランザクションを実現するにあたり、クリーンアップメカニズムが含まれます。

https://qiita.com/yoshiyuki_kono/items/2d428b16b224b8c01239

まず、上記の記事でも触れた基本的な内容を振り返るところから始めます。

## クリーンアップの基本
失敗したトランザクションが、他のトランザクションを無期限にブロックしないようにするため、Couchbase SDKは、「クリーンアップ」と呼ばれるメカニズムを提供します。

トランザクションは、失敗が発生したときに、まず自分自身でクリーンアップしようとします。

### 非同期クリーンアップ
アプリケーションのクラッシュなどの原因で、そのトランザクション自身によってクリーンアップされなかった、「ロスト」トランザクションが作成される状況があります。

そのためクリーンアップメカニズムには、`Transaction`オブジェクトの作成時に開始される非同期クリーンアップのためのバックグラウンドプ

元記事を表示

HelloWorldと慣習(メソッド名とクラス名)

## はじめに
自分を含め、初学者に向けて書きます。

## 記事の構成
– JavaでHelloWorldの表示
– Javaにおけるクラスやメソッドの名付け慣習

## HelloWorld

“`java
class HelloWorld{
public static void main(String[] args){
System.out.println(“HelloWorld”);
}
}
“`

1. 以上のコードをファイル名「HelloWorld.java」として保存。
1. コマンドプロンプトを立ちあげ上記ファイルを保存したディレクトリに移動
1. コンパイル→javac ファイル名
– ファイル名では拡張子(.java)も忘れずに
1. 実行→java ファイル名
– ここでのファイル名はコンパイル後の.classのもので、拡張子はいらない

“`
cd ディレクトリ名 //保存したディレクトリへ移動
javac HelloWorld.java //コンパイル
java HelloWorld

元記事を表示

Java初学者が感じたSpring Bootと他の言語との違い~ORM~

### 今回のお題
今回は、私が感じたSpring Bootと他の言語との違いについて書きます。

メインテーマはORMですね。

タイトルにある通り、私はJava自体の初学者ですが、同じようにJavaの学習を始めたばかりの方、あるいは今後自分が他の言語の学習を始める際の参考になればという思いで残しておきます。
### 筆者の学習歴
プログラミング学習歴は4ヶ月程度。
スクールではRuby on Railsを、独学ではPHP Laravelを学習し、それぞれアプリらしきものの作成経験はあり。

Javaについては1ヶ月ほど前から学習を開始。
現在は書籍を見ながらSpring Bootアプリの作成手順を学習中。
### 本記事のターゲット
冒頭でも少し触れましたが、本記事は主に「既に学習済みの言語とSpring Bootの違いに戸惑っている方」向けに作成しました。

書籍やネットなどで学習をしていて、「なぜこのようなやり方をしなければならないのかが分からない。」、「他の(自分の知っている)言語と同じような手順でやってはダメなのか。」と言った疑問が湧くことがあるかと思いますが、それらの解決

元記事を表示

【更新/解決】Android12にしたら、FLAG_IMMUTABLEまたはFLAG_MUTABLEエラーでアプリが起動しない

#概要
2021/10/20にGoogle Pixel系(Pixel3以降)にAndroid12(Android S、 API31)が配布されたので遅ればせながら、自作アプリの動作確認をしてみた。
が、、、、起動さえしないという恐怖の状況に陥ったことから、原因を調査してみる。

#エラーの内容
手持ちのPixel3 XLにAndroid12をインストールして、開発者モードを有効にして、エラー原因を見ていく。
そうすると、どうもこんなエラーで落ちているようなのだ。

“`
E/AndroidRuntime: FATAL EXCEPTION: pool-16-thread-1
Process: com.sekai.tsukuru.app.quickmatome, PID: 25032
java.lang.IllegalArgumentException: com.sekai.tsukuru.app.quickmatome: Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or

元記事を表示

SpringBootのGradleでWebjarsを利用しBootstrapを使う方法

#はじめに
今回は、SpringBootのGradleプロジェクトでWebjarsを利用してBootstrapを使用する方法を書いていきます。

MavenでのWebjarsを用いてBootstrapのバージョン管理をする記事が多くあったので、Gradleを使用している人の参考になればいいかなと思います。

#build.gradle

“`java
dependencies {
implementation(‘org.webjars:jquery:3.5.1’)
implementation(‘org.webjars:bootstrap:4.5.3’)
implementation(‘org.webjars:webjars-locator:0.40’)
}
“`
`dependenciesタグ`に上記3つをimplementationしてあげるだけです。

あとは、Bootstrapを使いたいHTMLファイルで必要な記述をするだけです。

##html

“`html
【Kotlin】value classをJava Reflectionのみでインスタンス化する

# TL;DR
– `value class`はインスタンス化のために幾つかの`static`メソッドを生成する
– 生成されたメソッドを`constructor-impl` -> `box-impl`の順で呼び出すことで、`value class`を`Java Reflection`のみでインスタンス化できる
– 付与したアノテーションは`impl`メソッドにも付与される

# やること
以下のように、`init`ブロックに入力チェックが有るような`value class`について、`Class`を取得できている状況から、`Java Reflection`のみで、入力チェックを機能させた上でインスタンス化する方法を紹介します[^with-reflect]。

“`kotlin
@JvmInline
value class Value(val value: Int) {
init { if (value == 1) throw TestErr }
}

object TestErr : RuntimeException(“試験用エラー”)
“`

[^wit

元記事を表示

BufferedReaderはJavaでどのくらいの速さで行を読み取ることができますか?

[前回の投稿](https://qiita.com/chenyh/items/ed86364a8bdb6c635a4d)で、C++のgetline関数がテキストファイルの行をどれだけ速く実行できるかを尋ねました。答えは約2GB / sで、確かに1 GB / sを超えていました。これは、いくつかの最高のディスクドライブやネットワーク接続よりも低速です。ソフトウェアが行に「ただ」アクセスするだけでよいことはめったにないことを考慮に入れると、ディスクやネットワークにバインドされるのではなく、テキストファイルの処理がプロセッサにバインドされるシステムを簡単に構築できます。

Javaはどうですか?Javaでは、テキストファイルの行にアクセスする標準的な方法は、BufferedReaderを使用することです。システムコールを回避するために、多くのテキスト行を含む大きな文字列を作成してから、文字列の長さを記録するだけの非常に単純な処理関数を呼び出します…

“`java
StringReader fr = new StringReader(data);
BufferedReader bf = n

元記事を表示

Couchbase Lite機能解説:競合解決概要

## はじめに

本稿では、Couchbase Liteを用いた開発における競合解決の概要を整理します。

実際の実装における、注意点などは、参考情報に掲載したドキュメントなどを参照してください。

## 競合の原因

アプリケーション間で、データが同期される場合、複数のアプリケーションによって同じドキュメントに変更が加えられた場合、ドキュメントの競合が発生する可能性があります。

競合は、次のいずれかのイベントの後に発生する可能性があります。

– レプリケーションプロセスが、ドキュメントの変更を保存: この場合、最も大きいリビジョンIDを持つ変更が優先されます。
– アプリケーションが、ドキュメントの変更を保存: この場合、最後の書き込みが優先されます。

競合発生時、削除操作は常に勝ちます。したがって、上記のいずれの場合でも、変更の1つが削除であった場合、ドキュメントは削除されます。

## レプリケーション時の競合

競合は、レプリケーションプロセスが変更を伝播する場合に発生する可能性があります。

### 自動競合解決

Couchbase Liteは、次のルール

元記事を表示

nullをreturnしないメモ

# 概要
チームメンバーがnullをreturnしていたのですが、想定している挙動が分からないので他に置き換えた方がいいのではと思い、説明のために整理したメモ。

nullのreturnは、例えばこのようなコードです。

“`java
public ZonedDateTime calculationDate(ZonedDateTime acceptAt) {
if (acceptAt == null) {
return null;
}
“`

## null返り値が保守作業に与える悪影響の調査
ソフトウェアシンポジウム2013で発表があった模様。
https://sdl.ist.osaka-u.ac.jp/pman/pman3.cgi?DOWNLOAD=229

null返り値はバグを含みやすくなる。

> 分析の結果,null 返り値および null チェックが,規模や作業工程の種別に関係なく頻繁に修正されることを確認した.修正頻度が高いという ことは,バグを含みやすくなると考えられるため,null 返り値および null

元記事を表示

【Java】二次元配列でドット絵を作ってみた

##作ろうと思ったきっかけ

→for文の演習問題中
→以下を実行せよ
▼▲▼
▼▲

→これ応用したらドット絵作れるんじゃね?

##ドット絵を作ってみました

![kkk02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2064393/1535c15e-c10b-f035-a3ac-605525782349.png)
[星のカービィ](https://www.kirby.jp/)© Nintendo / HAL Laboratory, Inc.

![inu.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2064393/7c62becd-0008-41b8-5dfd-9635dd8432c3.png)
[UNDERTALE](https://undertale.com/)©Toby Fox 2015-2021.

##開発環境
Windows10(32bit)
eclipse(4.9.0)
コマンドプロンプトで

元記事を表示

【Java】Byte配列を無限に連結したい

# やりたいこと
JavaでByte配列を扱う中で配列を連結させたい場面がありました。
しかも、ときには2つ、ときには3つ、、というように。

# 追記
コメントいただきましたが、Arrays.stream()を使うとよりスッキリ実現できます。(ありがとうございます。)

“`Java
private static byte[] concatByteArrays(byte[]… arrays) {
return Arrays.stream(arrays)
.collect(ByteArrayOutputStream::new,
(bos, bytes) -> bos.writeBytes(bytes),
(left, right) -> left.writeBytes(right.toByteArray()))
.toByteArray();
}
“`

# 結果
Byte配列はByteBufferで扱い、引数は可変長引数で受け取ることで対応しています。

“`Java
class Con

元記事を表示

コンパイルしたJavaのバージョンとデプロイするJavaのバージョンがズレているとエラーになる話

テスト済みのWARファイルをDockerで動かそうとしたら以下のエラーになってしまった…ということがあったので、原因と解決方法をメモ
java.lang.UnsupportedClassVersionError: ukaf/simple2/WelcomeResource has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 60.0 (クラス[ukaf.simple2.WelcomeResource]をロードできません)
※ビルド~デプロイまでは正常に終わったのですが、以下のリクエストでAPIアクセスしたときにエラーになりました
http://localhost:8080/simple2/webapi/welcome?name=YOURNAME
##原因
タイトルにほぼ答えを書いてしまったのですが、ビルドしたときの

元記事を表示

インスタンスメソッド、クラスメソッドの違いについて

## はじめに

以前書いた「[インスタンス変数、クラス変数の違い](https://qiita.com/tta0206/items/74059f904fd967526d9b)」が反響がありましたので、
(読んでくださった皆さん、本当にありがとうございます?)、
そちらの続編としてメソッドについて説明していきたいと思います。

## インスタンスメソッド

インスタンス変数もしくはインスタンスメソッドを利用する場合に使われるメソッドです。
インスタンスという名前がついている通り、インスタンスに依存する処理を行うので、
メソッドを呼び出す前にインスタンスを作成する必要があります。

## クラスメソッド

インスタンスの中身に関係なく、共通の処理を行うときに利用されるメソッドです。
インスタンスに依存せず、処理内容が不変なことから英語で「静的」という意味の`static`をメソッドにつけます。
そのため、クラスメソッドの中ではそのクラスのインスタンス変数 or インスタンスメソッドは利用できません。(=thisを利用することはできない。)
その代わり、インスタンスに依存してないので、イン

元記事を表示

バージョン管理の各方法の特徴と違いに関する備忘録(初心者の所感)

※2021年10月19日時点での最新バージョンを使用した際の体感です。
 主な使用言語がJavaなので、開発環境はそれに寄ったものになってます。
 OS:Windows10

はじめに

 プロジェクトでバージョン管理を行おうと思った際にどれがどのようなサービスを提供しているのか、がわかりにくかったため、備忘録的に記しておこうと思いました。まだまだ初心者のため、足りない部分はあると思いますがご了承ください。
 また、本投稿はバージョン管理の使い方や環境設定の解説ではないため、省かせていただきます。

・Git

 コマンドラインを利用したバージョン管理機能。主にローカルリポジトリでの管理を行う。
 グループでのバージョン管理も可能だがオンラインで共同編集するための機能はない(はず)。

・GitHub

 Gitを用いてオンライン上にリモートリポジトリを作成し、共同編集を可能にしたもの。
 とあるサイトには、GitとGitHubの違いに関して、メールとGmailのような違いとあったが、個人的にはメールサーバとGmailの違いという印象を受けた。要するに、Gitを元にしたサービスがGit

元記事を表示

ターゲット・ランタイム Apache Tomcat v8.0 が定義されていません。が出た時の対処法。

たまにeclipseでJUnitテストをやろうとすると、以下のエラーがでるときがある。

ターゲット・ランタイム Apache Tomcat v8.0 が定義されていません。 「プロジェクト名」 不明 ファセット・プロジェクトの問題
#解決法
Eclipseでプロジェクトエクスプローラーの中の、対象プロジェクトを右クリック。
プロパティ>ターゲットランタイム>Tomcat8(Java8)を選択。

元記事を表示

Couchbase Lite機能解説:ドキュメントデータモデル

### 概要
Couchbase Liteは、組込・モバイルNoSQLドキュメント指向データベースです。Couchbase Lieteデータベースに格納されるドキュメントはJSONオブジェクトの形式を取ります。これは、キーと値のペアのコレクションであり、値は、数値、文字列、配列、さらにはネストされたオブジェクトなど、さまざまなタイプのデータになります。

ドキュメントは、ドキュメントIDによって識別されます。ドキュメントIDは、プログラムで指定するか、あるいは(UUIDとして)自動的に生成することができます。

ドキュメントIDは、データベース内で一意である必要があり、変更することができません。

### ドキュメントの作成・取得

新たにドキュメントを作成する際に、次のメソッド/イニシャライザーを使用できます。

– `MutableDocument(String id)`イニシャライザーは、特定のIDを使用して新しいドキュメントを作成するために使用することができます。
– 引数を取らない、`MutableDocument()`イニシャライザーは、データベースによって文書IDをランダ

元記事を表示

Spring Framework 学習資料

以前、私がSpring Frameworkに関して学んでいた頃に、環境構築方法までを含めた学習資料を作成したことがあります。

資料はPDF化されていて、サンプルコードもセットになっています。

Springの基本である、DI(Dependency Injection)やAOP(Aspect Oriented Programming)はもちろん、他に押さえておくべき基本的なポイントは網羅されています。

これからSpringを学びたい方にとっては、ぴったりな教材だと思われるため、このブログにてご紹介致します。

https://github.com/GL-Kageyama/Spring_Boot_Learning_Collection

![0_Q8ax33ctjsEfRRlg.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2173896/73e5e745-2f95-03df-dd45-44b6b81249d1.png)

元記事を表示

簡単なJSPとJavaのセットを作ってDockerで動かす

[前回](https://qiita.com/mm0kan/items/3b513d218ce20de05e1f)はTomcatのDockerイメージ(公式)にHTMLだけ追加してオリジナルのDockerイメージを作る…というのをやったので、今回はJavaも追加して動的アプリケーションを作っちゃおう~と思いました。前回作ったDockerイメージにJavaクラスを追加してindex.htmlをちょっと修正したらいけるだろう…と思っていたのですが、なんだか無理そうなのでEclipse先生とかjersey(JavaでREST APIを作るためのフレームワーク)様の力を借りたいと思います。
##ざっくり手順
1)事前準備(各種ツールのダウンロード)
2)とりあえずEclipseで動くプロジェクトを作る
3)プロジェクトをWARでエクスポートしてDockerで動かす
##使ったもの
Docker Desktop for Windows
Windows PowerShell
Eclipse
###1)事前準備
それぞれ以下の公式サイトからダウンロード
[Docker Desktop for Win

元記事を表示

OTHERカテゴリの最新記事