JAVA関連のことを調べてみた

JAVA関連のことを調べてみた

StringをCharにしたら処理速度が倍になった

Stringを甘く見ていてめっちゃハマってしまったので戒めに残しておく
この問題 https://atcoder.jp/contests/abc375/tasks/abc375_c

## 解答コード

“` kotlin
fun main(){
val n = readln().toInt()
– var pre: MutableList> = mutableListOf()
– var next: Array> = Array(n){Array(n){“”}}
+ var pre: MutableList> = mutableListOf()
+ var next: Array> = Array(n){Array(n){‘.’}}
repeat(n) {
pre.add(
– (readln().map { it.toString() })
+ (readln().toList())

元記事を表示

【Java】【TIPS】クラス名をもとにオブジェクトを生成する

# 例
“`java:クラス名を元にオブジェクトを生成する例
Example example = (Example) (Class.forName(className).newInstance();
“`
# ポイント
1. `Class`クラスの`forName()`メソッドを用いて**クラスオブジェクト**を生成する
1. `String`型の変数`className`では、完全修飾クラス名を指定する
1. 生成したクラスオブジェクトの`newInstance()`メソッドを実行して、指定したクラス名のオブジェクトを得る
1. 戻り値は`Object`型なので、キャストする
1. `InstantiationException`、`IllegalAccessException`又は`ClassNotFoundException`の例外を発生する可能性があるので、例外処理をすること

元記事を表示

KeyCloak と LDAPを統合する自動化の備忘録

# はじめに

KeyCloakのユーザーレポジトリとしてLDAPを構成するスクリプトを作成するのに苦労したことを備忘録として残します。

以下のページの構成を拡張するような内容となります。

https://qiita.com/keniooi/items/050b5ae0d8f50bf63c84

https://qiita.com/keniooi/items/cfe2b8ef692b23500a15

https://qiita.com/keniooi/items/724cd8cc191096d6da23

# KeyCloakの管理コンソールからLDAPを構成

http://localhost:8080/admin にログインして pdprof の Realm(左上)を選択し、User federation (左下) をクリック、ここで Add Ldap providers をクリックしてLDAPを構成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262366/3fd

元記事を表示

TreeSetとHashSetの比較整理およびアルゴリズムの問題を解く

### HashSetとTreeSetの検索速度比較

– **HashSet**
`HashSet`は内部で**ハッシュ化**によってデータを保存します。各要素の位置は**ハッシュ関数**で計算され、データの順序は保証されませんが、平均**O(1)**の時間で素早く検索できるため、特定の要素が存在するかどうかを確認する場合に非常に効率的です。

– **TreeSet**
`TreeSet`は**二分木構造**(実際には**赤黒木構造**)でデータを**整列された状態**で保存します。このため、要素を追加または削除する際には**O(log n)**の時間がかかり、検索も同様に**O(log n)**の時間が必要です。このような特性から、整列が必要な場合や範囲検索をする場合には適していますが、単純な存在確認では`HashSet`よりも遅くなります。

#### HashSet vs TreeSetの選択理由

– このアルゴリズムでは**整列は必要なく**、**特定の数が存在するかだけを確認**すればよいため、`HashSet`が最も適しています。
– 要素を自動的に整

元記事を表示

JavalinをTomcatで動かす方法(2024/10時点)

通常、JavalinはJettyサーバーと密接に統合されているため、Tomcatで直接動作させるのが難しいとされています。しかし、Javalinのサーブレット機能を活用することで、Tomcatコンテナ上でもJavalinを動作させることが可能です。この方法を使って、Tomcat上でJavalinアプリケーションを実行する手順をまとめました。

## 必要な環境と前提条件
– Java 17
– Apache Tomcat 10.1
– Maven

# プロジェクト設定

まず、`pom.xml`でJavalinと必要な依存関係を定義します。重要な点として、`Javalin`から`Jetty`の依存を排除し、TomcatでサポートされているサーブレットAPIを使用します。

## `pom.xml`

“`xml 【Spring Boot入門】#1 Spring Boot + Thymeleafで新規登録画面を作成する

## はじめに
自身の知識のアウトプットも兼ねて、新人研修用に作成した記事となります。Spring Bootを学び始めた方を対象とした内容になっています。

開発環境や依存関係については、前回の記事を参照ください。

https://qiita.com/ioaio/items/10af72b06252541ca1a7

## 概要
企業情報登録画面を作成します。
クライアントからのリクエスト(URL)を元に画面を表示する為のControllerの作成と、遷移先である画面をThymeleafで作成していきます。

#### 完成イメージ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3917178/a4da3148-81be-3bd1-f667-14b2b29fde1e.png)

## パッケージ構成
赤枠で囲ったパッケージ、クラス、HTMLファイルを今回作成していきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1

元記事を表示

【Spring Boot入門】#0 事前準備

## はじめに
自身の知識のアウトプットも兼ねて、新人研修用に作成した記事となります。Spring Bootを学び始めた方を対象とした内容になっています。

## 環境要件
“`none:環境要件
OS:Windows 10 Pro
Java:17.0.2
Spring Boot:3.3.4
DB:XAMPP(MySQL 10.4.21-MariaDB)
IDE:Spring Tool Suite 4(STS)
“`

## 依存関係
新規プロジェクト作成時に、依存関係(機能)を追加します。
今回追加した依存関係は以下の通りです。

#### Lombok
Javaプログラミングにおける便利なライブラリで、コードの冗長性を減らし、開発効率を向上させます。アノテーションを用いることで、getterやsetter、toStringメソッドなどのボイラープレートコードを自動生成し、手動での記述を不要にします。

#### MySQL Driver
Spring BootアプリケーションがMySQLデータベースへ接続するために使用されるJDBCドライバです。MySQL Connector/

元記事を表示

開発経験ゼロからの挑戦!AzureFunctionsを使った処理効率化方法と成功するまでの道のり

## はじめに
こんにちは!AgVenture Labの荒井です。

Azure Functions、皆さんはご存知ですか?Azure FunctionsはMicrosoftのクラウドサービスで、サーバレス環境でコードを実行できる便利な仕組みです。
実は、私はシステムエンジニアの経験はあるものの、アプリ開発についてはほぼ初心者。
それでもAzure Functionsを使って既存のプロダクトの処理効率化に挑戦してみました。

この記事では、そんな初心者がAzure Functionsを使いこなそうと奮闘した体験談をお届け
します。
これを読んでいただければ、初めての方でも自信を持って一歩を踏み出せるはずです!

:::note info
本記事のポイント
・Functionsを用いたサーバ(Java)の処理効率化(非同期化)
・JavaCVでのffmpeg機能実行
・Azure Queue Storageの活用
:::

## 目次
1. [Azure Functionsの利用方法](#azure-functionsの利用方法)
2. [なぜAzureFunctionsを選んだの

元記事を表示

JSPとServletについて

# JSPとServletについて

## 概要

JSP(JavaServer Pages)とServletは、JavaでWebアプリケーションを開発するための主要な技術です。Javaをバックエンドとして使い、サーバーサイドで動的にコンテンツを生成することで、クライアントに情報を提供します。JSPはHTMLにJavaコードを埋め込むためのテンプレートエンジンで、ユーザーインターフェースの設計に使われることが多く、Servletはサーバーサイドロジックを記述するためのJavaプログラムです。

## JSPとは

JSP(JavaServer Pages)は、HTMLページ内にJavaコードを埋め込むことで、動的なWebページを生成するテンプレート技術です。JSPは、Javaコードを直接埋め込んで処理するため、ユーザーのリクエストに応じた動的コンテンツ生成に適しています。

### JSPの特徴

– **HTMLとJavaの混在**: JSPはHTMLコードにJavaコードを埋め込んで使用します。
– **サーバーサイドでの処理**: JSPはサーバー側でコンパイル・実行され、クライ

元記事を表示

Spring Bootプロジェクトのリファクタリング

## はじめに
進行中のプロジェクトでリファクタリングを担当しています。使用しているフレームワークはVue.jsとSpring Bootで、クライアントとサーバーはREST API(JSONフォーマット)で通信しています。
リファクタリングの経験がないため、どのような手順で進めればよいかを調査しながら、成果と学びを記録に残していきたいと考えています。

## リファクタリングの目的
リファクタリングの必要性を明確にし、以下の目的を目指します。

**1. コードの可読性向上:** コードを整理し、後から変更や追加がしやすい構造にする。
**2. 保守性向上:** メンテナンスが容易で、エラーやバグが発生しにくい構造を目指す。
**3. パフォーマンスの最適化:** 不必要な計算や処理を取り除き、効率的に動作させる。

## リファクタリングの進行手順
### 1. 現状と課題の分析 ###
**・コードレビュー:** 画面のバックエンド側のソースコードに対してコードレビューを実施し、改善が必要な箇所を洗い出す。
**・課題リストの作成と優先度の決定:** リファクタリング対象箇所をリス

元記事を表示

Spring Boot アノテーション一覧

Spring Bootのアノテーションの一覧です。
間違い等あればご指摘ください。

@SpringBoot

メインメソッドを含んだクラスに付与すると「SpringBootアプリケーション」と認識される

@Controller

SpringMVCで、アプリケーション層のコントローラーに付与
Javaクラスに付与すると、このクラスはコントローラーと認識してくれる。
thymeleafを使用したHTMLをレスポンスするときに使用

@RestController

jsonやxmlをレスポンスするときに使用
RestAPI、もしくはRestfulAPIを呼び出す時はReact.jsなどのFEから呼び出す必要がある

Dependency Injection

@Autowired

依存性の注入
インスタンス生成するクラスに付与

@Component

@Controller・@Service・@Repogitory・@RestContro

元記事を表示

Java Jsp サーブレット フォームの値取得(POST)。出力。

### ■完成画面

・Eclipse使用

1:入力画面(insert.jsp)

![スクリーンショット (106).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478380/e80c779a-4ce2-bdda-5cdf-b60ff572e7da.png)
2:処理(ShainInsertComplete.java)
![スクリーンショット (107).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478380/76ddeafe-ac07-650a-8b3b-d53b80e2cb96.png)

### ■ソースコード
・insert.jsp
“`jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>



元記事を表示

Mustacheテンプレートを使用したソース自動生成

# はじめに
何十年も前からプログラムソース自動生成は行われてきました。今でこそ、生成AIが自動生成してくれますが、昔はルールベースで、テンプレートエンジンと呼ばれるライブラリがその役割を担っていました。**Apache Velocity**等はHTMLを生成するJSP等の代わりに使用するエンジンとして使用されるケースも多かったですが、私が携わっていたプロジェクトではソース自動生成ツールのテンプレートとして使用していました。

また、多くのOSSでもテンプレートエンジンは使用されており、例えば**OpenAPI Generator**は内部に**Mustache**を使用しています。
今回、私もMustacheを使用してソース自動生成を作ってみたのですが、多少ハマったため、Mustacheについてご紹介いたします。

尚、今回はソース自動生成を目的としたMustacheの利用になりますが、Mustacheは**Velocity**や**Thymeleaf**等と同様に動的HTMLを生成することもでき、**SpringBoot**でもサポートしてます。ただ、今回はあくまでプログラムソース

元記事を表示

韓国語の形態素解析をJavaで行う

# 概要

韓国語の形態素解析器はいくつか存在するようですが、「open-korean-text」がよさそうでした。

https://github.com/open-korean-text/open-korean-text?tab=readme-ov-file

# maven

“`xml

org.openkoreantext
open-korean-text
2.1.0

“`

# サンプルコード

“`java
package hello;

import java.util.List;

import org.openkoreantext.processor.KoreanTokenJava;
import org.openkoreantext.processor.OpenKoreanTextProcessorJava;
import org.open

元記事を表示

Javaのメモリ管理とガベージコレクションの仕組みについて

## ■ はじめに

初めに**GarbageCollection**とい言葉について。

**garbage(ガベージ)** : 「ごみ」や「くず」、「がらくた」などのこと。
**collection(コレクション)** :「収集」や「回収」、「収集物」などのこと。

garbage + collection = GarbageCollection (ガベージコレクション)
つまりガベージコレクションは直訳で**ごみの収集** といった意味合いになります。

Javaでいうガベージコレクションとは**プログラムで使用していないメモリを開放すること**です。
またガベージコレクタというものが、定期的にメモリの開放を行います。

このガベージコレクションはメモリリーク[^1]の発生を防ぎ、
アプリケーションを効率よく動作させるための最適化に役立ちます。

この記事ではJavaのメモリ構造やガベージコレクションの役割、
ガベージコレクションチューニングの基礎知識について解説していこうとおもいます。

## ■ 目次

1. [Javaのメモリ構造](#1-j

元記事を表示

【備忘録】Spring Securityの導入

# Spring Security
Spring Security実装のメモ書き
## 開発環境
javaのバージョン : 21
springbootのバージョン : 3.3.5
依存関係の管理 : gradle

## Spring Security の追加
gladleに依存関係を追加します。
“`gradle:build.gradle
dependencies {
implementation ‘org.springframework.boot:spring-boot-starter-security’
}
“`
プロジェクトを再ロードすることでSpring Securityがプロジェクトに追加されます。

## ログイン画面の表示
Spring securityの追加が完了すれば、ログイン画面が使えるようになります。
プロジェクトを実行し、http://localhost:8080 にアクセスするとログイン画面が表示されます。
![ログイン画面](https://qiita-image-store.s3.ap-northeast-1.amazon

元記事を表示

【Androidアプリ開発】Hilt Unable to instantiate activity 解決策

## はじめに

DIをやりたかったのでH

元記事を表示

ACSのサポート(推奨)Java について ~2024.10月時点

主題の通りです。

## ACSのサポートJavaに関するドキュメント

こちらの情報を参照してください。

Java Options for IBM i Access Client Solutions?
https://www.ibm.com/support/pages/node/719405

## 2024年10月時点での推奨Javaバージョンについて

***ACS 1.1.8.0以降はJava 8 以降がサポートになります。上記ドキュメントによれば、推奨はJava 11です。(2024/10現在)***

## ACSが推奨するJavaディストリビューターは?

上記のウェブページに記載があるのは下記4つです。推奨、と明確に書かれていないものもありますが、わざわざ3つ挙げていますのでほかのJavaよりは推奨、と言えると思います。

**1.Oracle OpenJDK**

**2.IBM Semeru Runtimes IBM OpenJ9 (Eclipse OpenJ9)**
https://developer.ibm.com/languages/java/seme

元記事を表示

【Java】Spring BootとMySQLを使ったREST API構築入門 – データベースからテーブルのデータを取得する

この記事では、`build.gradle` に必要な依存関係を追加済みの状態で、Spring BootアプリケーションからMySQLデータベースに接続し、`test_table` テーブルのデータを取得するREST APIを構築する手順について解説します。

## 準備

### 1. テーブル作成
A5でテーブルを作成し、データを投入しておく。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3782903/b4727166-7b6b-6634-f36b-14c58ba894a1.png)

## 手順

### 1. `TestTable` エンティティの作成

まず、データベースの `test_table` テーブルに対応するJavaクラスを作成します。このクラスはJPAのエンティティとして設定され、Spring Data JPAがデータベースのテーブルとマッピングを行います。

#### エンティティクラスコード例

“`java
package com.example.demo

元記事を表示

Java 文字列⇔数値 変換

Java の 文字列⇔数値 変換に関する、自分用のメモです。

# 数値 ⇒ 文字列
## valueof() メソッド
### 使用例
“` Java
int i = 0;
long l = 0L;
String s1 = String.valueof(i);
String s2 = String.valueof(l);
“`

### メソッドの説明
“` Java
String クラス
public static String valueOf(int i)

public static String valueOf(long l)
“`
int / long 引数の文字列表現を返す。

## +演算子
### 使用例
“` Java
int i = 0;
String s = “” + i;
“`

## toString() メソッド
### 使用例
“` Java
int i = 0;
String s = new Integer(i).toString();
“`
### メソッドの説明
“` Java
String クラス
public String

元記事を表示

OTHERカテゴリの最新記事