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

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

XOR演算を使用して解く LeetCode Single Number

## 問題文
空でない整数 nums の配列では、1 つを除いてすべての要素が 2 回出現します。その 1 つを見つけてください。

実行時の複雑さが線形になるソリューションを実装し、一定の追加スペースのみを使用する必要があります。

## 解答
上記問題のポイントは、同じ数を確認できるかどうかです。
XOR演算^を使用することにより、可能になります。
なぜなら、XOR演算では同じ数があった場合0になり、被っていない数は残るからです。

### コード java
“`java
class Solution {
public int singleNumber(int[] nums) {
int result = 0;
for (int n : nums){
result^=n;
}
System.gc();
return result;
}
}
“`
実行時間:2ms
メモリー:42.74

元記事を表示

【Java】JIS X 0213 文字チェック

仕事で、文字列に `JIS X 0213`以外が含まれないことをチェックする処理を実装しろと言われたのですが、調べてもなかなか出てこなかったので、備忘録として記載しておきます。

## コード
処理自体は簡単で、`charsetName`に `x-SJIS_0213`を指定して、`byte[]`⇔ `String` に変換して、変換前後の値が一致することを確認します。

“`java
String target = “小⃝𠮷”;
byte[] targetBytes = target.getBytes(“x-SJIS_0213”);

String after = new String(targetBytes, “x-SJIS_0213”);
System.out.println(“check:” + after.equals(target));
“`

`String target` に含まれる値が `JIS X 0213`の文字のみであれば、`after.equals(target)`は `true`。
`JIS X 0213`以外の文字が含まれる場合は、`false` となり

元記事を表示

【Java・学習ログ16】コレクションについて~Setの基本~

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

## set関連のクラスについて
– java.util.HashSetクラス
Setインタフェースを実装するコレクションクラスの中でもっとも一般的なクラス。set関連クラスは複数の情報を重複なく格納する集合(セット)というデータ構造を実現するためのもの。
「重複は許さないが、その順番は問わない」というデータの集まりを利用したい場合にSet関連クラスを用いる。

【Setインタフェースが備えるメソッド】
|操作|戻り値|メソッド|機能|
|-|-|-|-|
|追加|boolean|add(★)|セットに要素を追加|
|取得|なし|なし|なし|
|調査|int|size()|格納されている要素数を返す|
||boolean|isEmpty()|要素数がゼロであるかを判定|
||boolean|contains(★)|指定要素が含まれているかを判定|
|削除|void|clear()|要素をすべて削除する|
|boolean|remove(★)|指定

元記事を表示

ビット操作 Counting Bits

## 問題文
整数 n を指定すると、各 i (0 <= i <= n) について、ans[i] が i のバイナリ表現における 1 の数となる、長さ n + 1 の配列 ans を返します。 ## 解答① 引数n+1の長さを持つ配列ansを用意し、ans.length分をループします。 (i/2)+(i%2)で2進数変換を行い、1のカウント数をansに格納する。 ### コード ```java class Solution { public int[] countBits(int n) { int offset=1; int [] ans = new int [n+1]; for (int i=1;i < ans.length;i++){ ans[i]=ans[i/2]+(i%2); } return ans; } } ``` 実行時間:2ms メモリー:46.55MB ## 解答② n&(n-1)により、nの最下位の1を0に変換および論理積を行い、ans[i

元記事を表示

GCP Cloud Bigtable機能と実装

# GCPのCloud Bigtableの概要と機能

## 概要
Google Cloud Platform(GCP)のクラウドデータベースサービスであるCloud Bigtableは、大規模なデータセットをリアルタイムで処理するための高性能なデータベースです。Apache HBaseデータベースのモデルに基づいており、可搬性や拡張性、高可用性を提供します。

## 機能 / 詳細
以下にCloud Bigtableの主要な機能と詳細を示します:

### 1. スケーラビリティ
Cloud Bigtableは、十億を超えるレコードとペタバイト単位のデータを効率的に処理できるスケーラブルなデータベースです。データマスターとリージョンサーバーと呼ばれるノードによって構成され、自動的に拡張および縮小します。

### 2. ヘネシーに基づく分散設計
Cloud Bigtableは、Googleのヘネシーと呼ばれる分散ファイルシステムに基づいています。この設計により、高速なデータの読み込み・書き込みが可能で、データの分散処理も容易になります。

### 3. データモデリング
Cloud

元記事を表示

Spring Securityでログイン後のURLに付くcontinueクエリパラメータの正体

# 環境
– Spring Boot 3.2
– Spring Security 6.1

この記事の内容が該当するのは、Spring Security 5.8以降です。

# ある日気づいた
Spring Securityでログイン付きのWebアプリを作ってログインしたら、URLに`continue`というクエリパラメータが付いていました。

![スクリーンショット 2024-01-04 16.11.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/58650/843d019f-26cc-5c26-b518-5bae20134cea.png)

こんなん付いてたっけ?と思ったので調べてみました。

# `RequestCache`とは
1. ログインが必要なURLにアクセス
1. 未ログインなのでログイン画面にリダイレクトされる
1. ログイン画面に正しいユーザー名・パスワードを入力
1. 認証完了後、1.でアクセスしたURLにリダイレクトされる

という流れは、認証付きのWebアプリでよくあります

元記事を表示

【データベース•学習ログ2】Javaからデータベースに接続し、テーブルを作成する

使用教材:侍テラコヤ『Javaとデータベースの連携方法を学ぼう』https://terakoya.sejuku.net/programs/129/chapters

## JavaからMySQLに接続する
《準備》
(1)MySQL Workbenchを導入
(2)データベースを作成
(3)eclipseでプロジェクトを立ち上げ、SQLを書き込むファイルを用意する

#### 1.JDBCよりクラスをインポート
“`java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
“`
* Connection … データベースとの接続を管理するクラス
* DriverManager … JDBCを取り扱うためのクラス
* SQLException … データベースの取り扱いで発生した例外を処理するクラス

#### 2.JDBCを用いてデータベースに接続
“`java
try {
// データベース接

元記事を表示

2024年初投稿

すっかりご無沙汰してしまいました。
まずはあけましておめでとうございます。
2024年、目標達成のため日々精進します。

元旦から続く悲しいニュースが続いて心が疲弊してます。
しばらくはデジタルデトックスし勉強に励みます。
Qiitaを更新していない期間、勉強していなかったので…
(勉強しなければ更新も書けない)

新年、気を引き締め直して参りましょう!!
どうぞよろしくお願いいたします。

元記事を表示

Java で Selenium と Jsoup でウェブブラウザ自動化とデータ抽出

# 1. はじめに

ウェブ開発の世界では、ブラウザの自動化やデータの抽出は日々の業務を効率化する上で欠かせない技術です。Javaを用いたSelenium WebDriverとJsoupライブラリを組み合わせることで、ブラウザを自動操作し、必要な情報を効率的に収集することができます。この記事では、Java, Selenium, とJsoupを使用してブラウザ自動化とデータ抽出を行う基本的な方法を紹介します。

# 2. Seleniumとは?

Seleniumは、ブラウザ操作を自動化するための一連のツールを提供します。開発者やテスターがコードを書いてブラウザの動作を自動化できるように、WebDriverというAPIを介して様々なブラウザと対話します。これは、主にウェブアプリケーションのテスト自動化に使用されますが、データのスクレイピングや自動化されたナビゲーションのためにも使用されます。

# 3. Jsoupとは?

Jsoupは、JavaのHTMLパーサーライブラリで、HTMLを解析し、操作し、クリーンナップし、HTMLからデータを抽出するためのメソッドを提供します。ウェブページ

元記事を表示

メッセージ、国際化

# メッセージ機能
– message.propertiesというメッセージ管理用ファイルを作成し、様々なメッセージを1か所で管理する。
そして、HTMLに該当データをキー値で呼んで使用させる。

– ファイルは/resources/message/propertiesに置けばよい。
“`
messages.properties

hello=こんにちは
hello.name=こんにちは {0} // パラメーターを設定する
“`
# 国際化機能
– message.propertiesを各国別に別途管理できる。
– message_en.propertiesなどでファイル名を変えて作れば良い。
“`
messages_en.properties

hello=hello
hello.name=hello {0}
“`
– 他のファイル名のメッセージファイルを登録したい場合は、application.propertiesにファイル名を登録しなければならない。
– S

元記事を表示

IntelliJ IDEA で Spring Boot アプリケーションを起動するまで

# はじめに
本記事では、IntellJ(IDE)を使用してSpring Bootアプリケーションを起動させるまでの手順を記述します。
※筆者はmacを使用していますが、WindowsおよびLinux等でも同様にできます(おそらく。。。)

## IntelliJ IDEA インストール + 起動
IntelliJをインストールする際は、IDEを管理してくれるToolbox Appというアプリケーションを使うと便利です。
1. 以下サイトにアクセスし、Toolbox Appをダウンロードします。
https://www.jetbrains.com/ja-jp/toolbox-app/
![スクリーンショット 2024-01-03 9.35.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3624418/2d11d2b5-5781-f442-125d-5bc09ab1dd78.png)

2. インストーラに従いインストールします。
インストールが完了すると以下の画面が表示されていると

元記事を表示

Javaでタプルが使いたいと思ったので作成した

# ごあいさつ
あけましておめでとうございます。
今年もよろしくお願いします。
## 目標
本年は記事の投稿ペースを上げていきたいですね。
最悪一ヶ月に一回とか。

# 本題
では早速コード。
## コード
“`java:SimpleTuple.java
public static class SimpleTuple{
private A left;
private B right;

public SimpleTuple(A left, B right){
this.left = left;
this.right = right;
}

public A getLeft(){
return left;
}

public B getRight(){
return right;
}

public void setLeft(A left){
this.left = left;
}

public void s

元記事を表示

トリボナッチ数列 一般化を使って問題を解く

## トリボナッチ数列とは
最初の3つは 0, 1, 1 で、4つ目以降は”前3つを足したもの”
ex) 0 1 1 2 4 7 …

## コード java
“`java
class Solution {
public int tribonacci(int n) {
if(n ==0) return 0;
if(n<3) return 1; int []array = new int [n+1]; array[0]=0; array[1]=1; array[2]=1; for (int i=3; i <= n;i++){ array[i]=array[i-1]+array[i-2]+array[i-3]; } return array[n]; } } ``` 実行時間:0ms メモリー:40.38MB ### forループの初期化部分を省略 ```java class Solu

元記事を表示

Spring boot を のチュートリアルをやってみたpart1

# はじめに
記事を書いてる本人もJava歴1年未満&Spring framework歴数ヶ月の人間です
(フレームワークもろくに触ったことないです)

フレームワークを触るにあたって、チュートリアルのようなものがあるので、それを実践してわかったことや用語のまとめなどをしていきます。(忘備録のようなものだとおもってください)

# チュートリアルをやってみる
以下のリンクより、チュートリアルを実践できます
https://spring.io/guides/

最初の「RESTful Webサービスの構築」というのからまず取り組みます
(RESTfulなサービスとは?という方はこちらの記事をぜひ御覧ください
→https://qiita.com/o_q/items/0bb7963f87308f4ca4bc)

# 目標
「http://localhost:8080/greeting 」 にアクセスしたとき、HTTP GETが動き、以下のJSON形式の返答を受け取る
“`
{“id”:1,”content”:”Hello, World!”}
“`
URLの後ろに「?name=User」

元記事を表示

Spring Boot学習③~Spring Data JPAを使ってデータベースにアクセス~

前→https://qiita.com/19960417akiho/items/faf9b88b9b3348ef38ff

以下の動画を参考に、ハンズオン形式でSpring BootでWebアプリを制作していきます。

今回はPart8。
Spring Data JPAを使ってデータベースにアクセスします。

準備として、MySQLでIDとパスワードが入ったテーブルを準備しています。

![スクリーンショット 2023-12-28 162817.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3114345/f925070c-3c1d-abf0-c75a-431b213ef8b6.png)

今回やることとしては、ログインフォームに入力された値と`user_info`テーブルの中のデータを照合して画面の表示を変えます。

元記事を表示

【Java】文字列をハッシュ化する

# はじめに

これまでに[PowerShell](https://qiita.com/nkojima/items/1daaebdbf39871725bcc)や[ExcelVBA](https://qiita.com/nkojima/items/89d2c53d34631b33d51e)、[DOSコマンド](https://qiita.com/nkojima/items/1dc5f021c9f34fefaf77)を使ってハッシュ値を求める方法を記事としてまとめましたが、今回はJavaで文字列をハッシュ化する方法を備忘録としてまとめてみました。

# 作成したコード

* Javaでハッシュ値を求める場合、MessageDigestというクラスを使います。
* `MessageDigest.getInstance()`でMessageDigestクラスのインスタンスを作りますが、この際にハッシュアルゴリズムの指定を誤ると`NoSuchAlgorithmException`、ハッシュアルゴリズムがnullだと`NullPointerException`が発生します。
* ハッシュアルゴ

元記事を表示

二分探索-leetcode Guess Number Higher or Lower

## 二分探索
検索対象と探索範囲の真ん中の値を比較して,探索範囲をだんだん半分に狭め、見つけるアルゴリズムです。

## 問題文
私たちは推測ゲームをしています。ゲームは次のとおりです。

1 から n までの数字を選択します。私が選んだ数字を当ててください。

あなたが間違った推測をするたびに、私が選んだ数字があなたの推測より高いか低いかを教えます。

事前定義された API intgues(int num) を呼び出すと、次の 3 つの可能な結果が返されます。

-1: あなたの推測は私が選んだ数字よりも大きいです (つまり、num > pick)。
1: あなたの推測は私が選んだ数字よりも小さいです (つまり、num < pick)。 0: あなたの推測は私が選んだ数字と同じです (つまり、num == pick)。 私が選んだ番号を返します。 ## コード java ```java /** * Forward declaration of guess API. * @param num your guess * @return -1 if num

元記事を表示

Lambda環境でのJavaのstaticについて

## 前提
pythonのコードでは関数外のコードは一度しか実行されないという記事を目にしたのでJavaのStaticについても同じ挙動なのか気になり検証した

## 検証
“` java
public class Cache {
private static Integer number = null;

public Cache(){}

public int get(){
if(number != null){
number++;
return number;
} else {
number = 0;
return number;
}
}
}

var cache = new Cache();
logger.info(“1回目の呼び出し cacheの番号: ” + cache.get());
logger.info(“2回目の呼び出し cacheの番号: ” + cache.get());
“`
上記の

元記事を表示

Java の UUID は符号付きで大小比較される

UUID を以下のパターンで比較してみます。
|format| uuid |
|:-:|:-:|
|基準| 018cc122-1a9d-7478-06e8-7a96ab18fea0 |
|MSB比較| X18cc122-1a9d-7478-06e8-7a96ab18fea0 |
|LSB比較| 018cc122-1a9d-7478-X6e8-7a96ab18fea0 |

“`Java
var uuid = UUID.fromString(“018cc122-1a9d-7478-06e8-7a96ab18fea0”);
var um1 = UUID.fromString(“118cc122-1a9d-7478-06e8-7a96ab18fea0”);
var um8 = UUID.fromString(“818cc122-1a9d-7478-06e8-7a96ab18fea0”);
var ul1 = UUID.fromString(“018cc122-1a9d-7478-16e8-7

元記事を表示

VScodeの拡張機能のError Lensは誤植等のエラーはもちろん、非推奨コードも指摘してくれる事が分かった件

結論:VScodeの拡張機能Error Lensが赤色メッセージ(=エラー)を吐いているときは実行しても動かないが、オレンジ色メッセージ(オレンジ)は非推奨なコードであって実行すると一応動く

以下、勝手に自分で混乱した流れ

前提 統合開発環境(IDE)は以下の記事に従い、VScodeで一本化して今はJavaの学習を主にしています。

Error Lens(VScode拡張機能)の概要

![Error_Lens.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584834/79bc7ac7-5626-c4d8-f3c2-9f9e7994f285.png)

**①コードを入力した時点で明らかなミス ⇒ 赤メッセージが該当箇所にでる**
**②アラート(※何を警告しているのかは場合によりけり)⇒ オレンジ色メッセー

元記事を表示

OTHERカテゴリの最新記事