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

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

デザインパターン Observerパターン

# Observerパターン
変化するデータや状態に関心を持つオブザーバ(観察者:**Observer**)と、その変化を通知するサブジェクト(観察対象:**Subject**)から構成される。

一対多の依存関係を定義し、あるオブジェクト(サブジェクト)の状態が変化すると、それに依存する複数の他のオブジェクト(オブザーバ)に自動的に通知される。

## サブジェクト(Subject)
観察(Observe)の対象となる情報。

**状態が変化する**。

観察対象となるデータの唯一の所持者であり、観察対象に何らかの変更があった場合、オブザーバに対してその変更を**通知する**。

また、オブザーバを管理する(オブザーバの新規登録や、オブザーバの解除)役割も併せ持つ。

サブジェクトがオブザーバについて知っているのは、`Observer`インターフェースを実装しているということだけ。通知した情報がどのように利用されるのかなどは一切知らない(**疎結合の関係**)。

<<学習memo:発行者(Publisher)が管理している対象をサブジェクト(Subject)と言っているのかと思っ

元記事を表示

スッキリわかるJava入門 実践編 第3版 まとめ – part9 -データベースアクセス

# はじめに
## 第9章 データベースアクセス
### 1.データベースとは
本格的なプログラムの保存先
データベースの実体
→常時稼働してデータの格納や検索に関する要求を待ち受けるプログラム
 →このプログラムのことを __データベース管理システム__ と呼ばれている

特にデータを複数の表の形で整理して保存、管理する
→ __リレーショナルデータベース(RDB)__

JavaからRDBに対してデータの読み込みや書き込みを行うためには __SQL__ 
というデータベースを操作する専用の言語で書かれた命令をRDBに送る

:star: データベースを使うメリット
・データベースを使うと、複雑なデータ検索や書き込みも簡単に行える
・Javaプログラムの中で複雑なデータ処理を記述する必要がない

### 2.データベースの基本操作
データベースはデータを管理するために複数の表を内部に保持されている
表は列と行で構成され、1つの行が1件のデータに相当し、列はデータの要素に相当する

#### 4つの基本操作
・検索 SELECT
・挿入 INSERT
・更新 UPDATE
・削除 DE

元記事を表示

スッキリわかるJava入門 実践編 第3版 まとめ – part8 -ネットワークアクセス

# はじめに
## 第8章 ネットワークアクセス
### 1.ネットワークAPIの全体像
Javaではネットワーク通信を簡単に実現するためのクラス群
→ __java.netパッケージ__

__低水準API__
細かい制御が可能だが、複雑で手間がかかる。本格的に利用
__高水準API__
簡単に使えるが細かいことができない。手軽に利用。

普段見ているWebページ
→ __HTML__ という専用の言葉で記述されたテキスト情報

java.net.URLクラスを使う
→Javaプログラムを介してインターネット上にあるHTMLや画像ファイルを簡単に取得できる

:star: java.net.URLクラスの利用
アクセスしたい情報のURLを元に、java.net.URLクラスを用いて、
インターネット上のWebサイトのデータを取得できる

### 2.Socketを用いた低水準アクセス
低水準APIの理解のためにはネトワークの基礎知識が必要

コンピュータの通信には定められた通信手順を踏む必要がある
あらかじめ定められた通信手順のルールのことを __プロトコル__ と呼ぶ
インター

元記事を表示

デザインパターン Singletonパターン

# Singletonパターン
インスタンスが1つしか存在しない唯一無二のオブジェクト。特定の条件下でインスタンス化が行われ、その後は再利用される。

クラス内にプライベートなコンストラクタを持ち、インスタンスを取得するための静的(static)メソッドを提供する。

アプリケーションの設定や、構造上複数存在してはいけない概念を扱う際に利用する。

## 基本型
“`java:Java
public class Singleton {
private static Singleton instance;

private Singleton() {}

public static Singleton getInstance(){
if (instance == null){
return new Singleton();
}

return instance;
}
}
“`

## 最適形
Javaのenum型の特性を利用してシングルトンを実現することができる。
“`java:

元記事を表示

java Apach AOI でExcelのシートを部分一致で取得する

“`java
import org.apache.poi.ss.usermodel.*;

public class PartialSheetDataExtractor {

public static void main(String[] args) {
// Excelファイルのパスを指定してワークブックを開く
try (Workbook workbook = WorkbookFactory.create(new FileInputStream(“example.xlsx”))) {
// 部分一致のシート名を探し、シートを取得
for (int i = 0; i < workbook.getNumberOfSheets(); i++) { Sheet sheet = workbook.getSheetAt(i); String sheetName = sheet.getSheetName();

元記事を表示

Javaで「指定範囲の部分文字列を別の文字列に置換する」の動作を確認してみた

# 概要

Javaで「指定範囲の部分文字列を別の文字列に置換する」の動作を確認してみました。以下のページを参考にしました。

https://www.javadrive.jp/start/stringbuilder/index4.html

# 実装

以下のファイルを作成しました。
“`JSample4_1.java
class JSample4_1{
public static void main(String[] args){
StringBuilder sb = new StringBuilder();

sb.append(“ABCDEF”);
System.out.println(sb.toString());

sb.replace(2, 4, “12345”);
System.out.println(sb.toString());

sb.replace(1, sb.length() – 1, “-“);
System.out.println(sb.toString());
}
}
“`

以下のコマ

元記事を表示

ミニ生命保険システムを作成 S09

# 関連記事
https://qiita.com/Weekend/items/79a6a3fd69ba017e124c

# はじめに
今回は、以下の技術を利用してデータ入力プラットフォームを構築し、ミニ生命保険システムに接続します。

– 生命保険システムにおけるイメージライブラリーの役割 :point_right:[こちら](https://qiita.com/Weekend/items/4997e5f8695b80c0bc34)
– Pythonでバーコードの生成と認識 :point_right:[こちら](https://qiita.com/Weekend/items/f42326b4e1009825f6b6)
– Pythonでイメージのアップロードとプレビューサービスを実装します :point_right:[こちら](https://qiita.com/Weekend/items/f38743854e643df4bbad)
– paddleocrのdemo :point_right:[こちら](https://qiita.com/Weekend/items/d48929a

元記事を表示

実際なんの言語が市場で需要が高いんだろう?と思って調べてみました

# 目次
* はじめに
* 各言語ランキング
* TIOBE Index
* 求人が多い言語
* 年収が高い言語
* 需要が高い言語
* Python
* Java
* C言語

# はじめに
新卒未経験でIT業界に入社した2年目エンジニアです。
入社して7月から現在にかけて、Flutterの開発に関わってきました。

実際にエンジニアとして力がついたことの確信は、いくつかの場面で経験してきたものの、
他の言語に挑戦したときに、自分はどこまでできるんだろう。。といった漠然とした不安がありました。
(同じ不安を抱えている人いませんか。。。?)

そこで、
別の言語のチュートリアルをやってみよう!
せっかくなら、需要の高い言語にしたいな。

と思ったのがきっかけで、市場で需要の高い言語を調査してみました!
調べたら出てくるランキングを集めてもつまらないので、需要が高い理由まで調べてみようと思います。

# 各言語ランキング

## TIOBE Index(2023年09月28日現在)

|順位|言語|
|:—-|:—-|
|1位|P

元記事を表示

クソ初心者がNetBeansでHP作成する日誌(1日目)

##進捗

ダメに決まってるだろうが。何も決まっていないぞ。

こちとらJavaいじり始めて半年だぞ何考えてんだ

元記事を表示

Javaとは?初心者向けに解説

# Javaとは?初心者向けに解説

こんにちは!今回はプログラミング言語の一つである「Java」について、初心者向けに解説していきます。

## 1. Javaの歴史

Javaは、1995年にSun Microsystems (現在はOracle Corporationの一部) によって公開されました。当初は家電製品の制御用のプログラム言語として開発されましたが、その後、ウェブアプリケーションやエンタープライズシステムの開発にも広く利用されるようになりました。

## 2. Javaの特徴

### 2.1. プラットフォーム独立

「一度書けば、どこでも動く」という思想の下、Javaは開発されました。Javaで書かれたプログラムは、異なるハードウェアやOS上で動作するJVM (Java Virtual Machine) 上で実行されるため、プラットフォームに依存することなく動作します。

### 2.2. オブジェクト指向

Javaは完全なオブジェクト指向プログラミング言語です。これにより、再利用性、拡張性、保守性が向上します。

### 2.3. 豊富なライブラリ

Java

元記事を表示

コマンドラインでTestNGを動かす[Windows 11]

# 動機
– mavenやant、EclipseやIntelij IDEAがない環境でもTestNGを使いたい。

# 環境
– OS : Windows 11 Home
– JDK
“`
>java -version
openjdk version “1.8.0_382”
OpenJDK Runtime Environment (Temurin)(build 1.8.0_382-b05)
OpenJDK 64-Bit Server VM (Temurin)(build 25.382-b05, mixed mode)
“`

# 手法
## 1. ライブラリのダウンロード
[mvnrepository](https://mvnrepository.com)からダウンロードする。
必要なのは以下の2つ。

– TestNG 6.11 – [リンク](https://mvnrepository.com/artifact/org.testng/testng/6.11)
– JCommander 1.72 – [リンク](https://mvnrepository.com/artifact

元記事を表示

【Java・学習ログ12】Objectクラス/静的メンバについて

教本に沿ってやってみたシリーズ、『第14章』。
≪使用教材≫スッキリわかるJava入門 第3版 スッキリわかるシリーズ

## ■java.lang.Objectの継承

javaでは親なしのクラスを定義できない。定義する際に指定がなければ、「java.lang.Object」が親クラスとして継承される。objectクラスには **eqials()、toString()** のメソッドが定義されており、どのメソッドでも呼び出すことができる。

指定のないクラスは全てextends.Objectを持っているとされ、多態性の法則によってどんなインスタンスでもobject型に格納でできる。※基本データ型(int,longなど)以外

“`java
Object 01 = new Empty();
Object 02 = new Hero();
Object 03= “おはようございます。”
“`

#### Objectクラスに定義されたメソッドを呼び出す
* toString()メソッド
オブジェクト(インスタンス)の中身を文

元記事を表示

Javaで「指定範囲の部分文字列を取得する」の動作を確認してみた

# 概要

Javaで「指定範囲の部分文字列を取得する」の動作を確認してみました。以下のページを参考にしました。

https://www.javadrive.jp/start/stringbuilder/index8.html

# 実装

以下のファイルを作成しました。
“`JSample8_1.java
class JSample8_1{
public static void main(String[] args){
StringBuilder sb = new StringBuilder();

sb.append(“ABCDEFGHI”);
System.out.println(sb.toString());
System.out.println(sb.substring(3, 6));
System.out.println(sb.substring(3));
}
}
“`

以下のコマンドを実行しました。
“`
$ javac JSample8_1.java
$ java JSample8_1
ABCDEFGHI
D

元記事を表示

Spring Boot 3.x への移行で、セッション周りではまったこと

# Spring Boot 3.x への移行で、セッション周りではまったこと

たいした話ではないのでのすが、Spring Boot 2.x -> 3.x での移行で、セッション周りではまったことの備忘録です。

## Spring Boot 3.x での変更点

以下にマイグレガイドがあります。

[Spring Boot 3.0 Migration Guide · spring-projects/spring-boot Wiki](https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.0-Migration-Guide#spring-session-store-type)

それによると、`spring.session.store-type` による明示的な構成はサポートされなくなりました。複数のセッションストアの実装がクラスパス上にある場合は、固定順で使用する実装が選択されるようです。

優先順位は、[Web](https://docs.spring.io/spring-boot/docs/3.0.x/

元記事を表示

必要なポート 8080 はすでに使用中です。解決方法

eclipse Tomcat再起動

必要なポート 8080 はすでに使用中です。サーバーはすでに別のプロセスで稼働中であるか、システム・プロセスがそのポートを使用中である可能性があります。このサーバーを起動するには、他のプロセスを停止するか、ポート番号を変更する必要があります。

上記のエラーメッセージが表示され実行されない。
文章の通り8080 はすでに使用中とのこと。
自社の研修時に何回もこのメッセージが表示されていたことを思い出す。
出るたびにポート番号変更してたっけ、、

ChatGPT様にご相談

## 1. ポートの使用状況確認:

“`python
lsof -i :8080
“`
このコマンドは、8080 ポートを使用しているプロセスの情報を表示します。もし何も表示されない場合、そのポートは使用されていない可能性があります。

## 2. プロセスの強制終了:
ポートが他のプロセスによって使用されている場合、そのプロセスを終了させることで解放できます。以下は、プロセスを終了させるコマンドの例です。
“`python
kill -9
“`

元記事を表示

JTReg実行備忘録[Ubuntu 22.04]

# おねがい
この記事を参考にして実行に失敗した方は後学のためにコメントをいただけますと幸いです。
質問にもお答えできる限りお答えしますので是非コメントを残してください。

# 環境
OS : Ubuntu 22.04.3 LTS

前回の[JTRegビルド](https://qiita.com/tabatad/items/a05f3a6fb1bab327e9c9)の続きになります。

# 手順

## 1. Gtest資材ダウンロード
“`
$ cd ~/work
$ git clone -b release-1.8.1 https://github.com/google/googletest
“`

## 2. JDKのリビルド
“`
$ cd ~/work/jdk17
$ bash configure –with-jtreg=$JT_HOME –with-gtest=/home/tabatad/work/googletest
$ make clean
$ make images
“`

## 3. テスト実行
テストの起動に失敗した。
“`
$ make run-t

元記事を表示

SDKMANを使って Java17をインストール

普段Javaを使ったりしないが、なんだかんだ3ヶ月ぐらいごとに 必要としていつもいつも思った以上に時間がかかっているため、今回メモを残すことにしました。

まず、Javaを直接システムに使うと後で管理色々と面倒なので Package Managerにお任せしたい。

そのためSDKMANを利用!

## 1. SDKMANをインストール

https://sdkman.io/usage

最初SDKMANがインストールもしていないので [公式ガイドの通りインストール](https://sdkman.io/install)する。

“`zsh
# インストール
curl -s “https://get.sdkman.io” | bash
# PATHなどを設定する
source “/Users/ignacio/.sdkman/bin/sdkman-init.sh”
# 確認
sdk version
“`

注意: もし curl 56 recv failure とか出たら 別のネットワークに切り替えた方がいい。これはSDKMANのせいではなく、おそらくそのネットワークの設定が何か関わ

元記事を表示

JTRegビルド備忘録[Ubuntu 22.04]

# おねがい
この記事を参考にしてビルドに失敗した方は後学のためにコメントをいただけますと幸いです。
質問にもお答えできる限りお答えしますので是非コメントを残してください。

# 環境
OS : Ubuntu 22.04.3 LTS

前回の[JDKビルド](https://qiita.com/tabatad/items/de0530f0c84be6c93acb)の続きになります。

# 手順

## 1. 資材ダウンロード
“`
$ cd ~/work
$ git clone git@github.com:openjdk/jtreg.git
“`

## 2. ビルド実行
“`
$ bash make/build.sh –jdk $JAVA_HOME
“`

## 3. 成果物確認
“`
$ ./build/images/jtreg/bin/jtreg -version
jtreg 7.3.1-dev+0
Installed in /home/tabatad/work/jtreg/build/images/jtreg/lib/jtreg.jar
Running on pl

元記事を表示

CheerpJのJavaからブラウザベースへの移行が、エンタープライズJavaアプリケーション向けリモート・デスクトップ・ソリューションを凌駕する理由

![My-project-1-1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3486144/0dfbce83-bccc-09f9-4bae-b3abab4c3b90.jpeg)
[]()
現在のめまぐるしい世界では、アプリケーションへのリモート・アクセスは必需品となっており、ユーザーはどこからでも、どのデバイスからでもソフトウェアやデータにアクセスできるようになっている。Javaアプリケーションへのリモートアクセスに関しては、[JavaからJavaScriptとWebAssemblyへのコンパイラであるCheerpJと](https://leaningtech.com/cheerpj/)、Citrixのようなリモート・デスクトップ・ソリューションの2つがよく使われる選択肢です。このブログ記事では、CheerpJがデスクトップJavaアプリケーションにアクセスするための優れた選択肢である理由を探ります。

**1 – インストールの手間なし**
リモートデスクトップソリューションと比較してCheerp

元記事を表示

JDKビルド備忘録[Ubuntu 22.04]

# おねがい
この記事を参考にしてビルドに失敗した方は後学のためにコメントをいただけますと幸いです。
質問にもお答えできる限りお答えしますので是非コメントを残してください。

# 環境
OS : Ubuntu 22.04.3 LTS

# ビルド対象JDK
– openjdk jdk17(Public archive)

https://github.com/openjdk/jdk17

# 手順
## 1. 資材ダウンロード
“`
$ mkdir ~/work
$ cd ~/work
$ git clone git@github.com:openjdk/jdk17.git
“`

## 2. ビルド用JDK配備
※すでにjavaコマンドが使えるなら不要
“`
$ cd /usr/local/lib
$ sudo wget https://github.com/adoptium/temurin16-binaries/releases/download/jdk-16.0.2%2B7/OpenJDK16U-jdk_x64_linux_hotspot_16.0.2_7.tar.gz
$

元記事を表示

OTHERカテゴリの最新記事