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

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

Spring Security 導入から基本的な認証フロー

# はじめに

Javaの学習を始めて最も躓いた`SpringSecurity`について調べ実装することができたので、記録として残しておきます。
完全に理解することができていない為、不備等あるかもしれませんがご了承ください。

# SpringSecurityシリーズ 項目表

|NO |タイトル |
|—-|————————–|
|その1|[SpringSecurity導入から基本的な認証フロー](https://qiita.com/ryo0527/items/dbdbb2a476cc74e9116b)|
|その2|SpringSecurityログインページをカスタマイズ|
|その3|DBアクセス処理実装|

# 実装

### 依存関係の追加
Spring Securityを使うには、`spring-boot-starter-security`を追加
※今回はmavenでの実装とします

“`pom.xml


org.sp

元記事を表示

Java tomcat setenv.sh

“`bash

cd /usr/local

curl -OL –header “Cookie: oraclelicense=accept-securebackup-cookie” “http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.tar.gz”

tar xvzf ./jdk-8u131-linux-x64.tar.gz

mv jdk1.8.0_131 java

export JAVA_HOME=/usr/local/java

echo $JAVA_HOME

/usr/local/java

/usr/local/tomcat/bin/

#メモリ見ときましょう
free

vi setenv.sh

-Xmx 最大ヒープサイズ(最大メモリ使用量)
-Xms 初期ヒープサイズ(初期メモリ使用量)
-Xss プロセスに割り当てられるスタックサイズ(228k以上必要になります)

参考にするとこんな感じかな

元記事を表示

break、continue、label、returnの使い方メモ

#目次
[1.break](#1-break)
[2.continue](#2-continue)
[3.label](#3-label)
[4.return](#4-return)
[5.さいごに](#5-さいごに)

#1. break
直前のループを抜ける。
##

“`java
List numberList = new ArrayList();
numberList.add(1);
numberList.add(2);
numberList.add(3);

// 拡張for文でnumberListをぐるぐる回す
for (Integer number : numberList) {
System.out.println(number);

// numberが2のとき直前のループを抜ける
if (number == 2) {
break;
}
}
“`
出力結果は下記の様になる。

“`
1
2
“`

ループが二重になっている場合はこちら。

“`java
List countList

元記事を表示

Javaのシステムでcsvからインポートする機能を実装する方法

まずはJSPから。

formは以下のように書く。

“`

“`

inputのタイプはfileに

“`

“`

JSPは以上です。
サーブレットはアノテーションのすぐ下に以下を追記

“`
@MultipartConfig(
maxFileSize=10000000,
maxRequestSize=10000000,
fileSizeThreshold=10000000
)
“`

doPostを以下のように記述

“`
protected void doPost(HttpServletRequest request, HttpServletResp

元記事を表示

Javaのシステムで画像を取り扱う方法

まずはJSPのformで下記を追記します。

“`
enctype=”multipart/form-data”
“`

こんな風になります。

“`

“`

インプットタグはタイプをfileにします。

“`

“`

JSPは以上です。

サーブレットでは以下の記述をアノテーションのすぐ下に追記します。

“`
@MultipartConfig(
maxFileSize=10000000,
maxRequestSize=10000000,
fileSizeThreshold=10000000
)
“`

画像データの取り込み部分

“`
// 画像のファイル名取得
Part part = requ

元記事を表示

Ajaxのソースコード

実務でJavaのシステムで実装したAjaxのソースコードを自分用にメモとしてまとめました。

まずはJavaScriptでイベントを作成し、通信する。

“`
$(‘#button’).click(function() {
var req = new XMLHttpRequest();
var url = ‘コンテキスト以降のURL’;
req.open(‘GET’,url);
req.send();

req.onreadystatechange = function() {
if (req.readyState === 4 && req.status === 200) {
let info = (req.responseText)?JSON.parse(req.responseText):null;
if (info) {
console.log(info);
}
}
}
});
“`

指定したURLのサーブレットを作ってJSONデータを返す。

“`
// レスポンス用JSON文字列生成
String resData =

元記事を表示

個人的「Java Bronze試験つまずいた項目」5選

先日、オラクル認定資格のJava Bronze試験を受験しました。Javaの資格試験としてはもっとも難易度の低いものとして知られていますが、プログラミング初心者にとってはかなり難しいタイプの試験なのではないかと感じました。

今回の記事ではJava Bronze試験の学習経験を踏まえ、つまづきやすかったり、なかなか覚えられなかった文法項目を5つ取り上げてまとめました。

このJava Bronze試験にはバージョンがさまざまあるようなので、ご注意ください。

– 受験した試験:Java SE Bronze (試験コード1Z0-818)

# 1.使用した主な参考書や教材
Java Bronze試験の対策本としてはいくつか有名なものがあります。私は「黒本」と言われる「[徹底攻略Java SE Bronze問題集[1Z0-818]対応](https://www.amazon.co.jp/%E5%BE%B9%E5%BA%95%E6%94%BB%E7%95%A5Java-SE-Bronze%E5%95%8F%E9%A1%8C%E9%9B%86-1Z0-818-%E5%AF%BE%E5%BF%9

元記事を表示

Progate Java編 I 個人的備忘録

# 出力

Javaで出力するには、`System.out.println()`を使う。

“`java:Main.java
System.out.println(“Hello World”);
“`

“`console:コンソール
Hello World
“`

# Javaの構造

Javaの基本的な構造は、クラス部分、メソッド部分、処理部分に分けられる。
クラス部分の中にメソッド部分があり、そのメソッド部分の中に処理部分がある。

“`java:Main.java
class Main { // クラス部分
public static void main(String[] args) { // メソッド部分
System.out.println(“Hello World”); // 処理部分
}
}
“`

# 変数定義とデータ型

Javaでは変数を定義するときに**「データ型」**を指定する必要がある。

・数字の変数定義の場合、`int 変数名`で定義する。
・文字列の変数定義の場合、`String 変数名`で定義する。

“`java:

元記事を表示

Intellijでjlinkビルドエラーが出たとき文字化けした話

Intellij IDEA Ultimateを使ってJavaFXアプリケーションを開発しているとき、jlinkを使ってビルドしたくなって設定に`clean javafx:jlink`と入力した。
そしたらなんと!!エラーが出てビルドが失敗してしまったのだ…
エラーを読んでググって解決すればいいと思ってエラー文を見ると

“`
[WARNING] Required filename-based automodules detected. Please don’t publish this project to a public artifact repository!
�G���[: jlink�ł͎������W���[���͎g�p�ł��܂���: file:///C:/Users/mfmii/.m2/repository/net/synedra/validatorfx/0.1.13/validatorfx-0.1.13.jar�����validatorfx
[ERROR] Command execution failed.
“`

…読めない

そう、文字化けが発生

元記事を表示

Docker 環境で Jetty または Tomcat を使って Webアプリを実行する。

#前提

– Windows環境
– 「c:\usr\webapps」にWARを配置しておく。

#コマンド

##Jetty 最新版を利用する場合

“`
docker run –rm -it -p 8000:8000 -p 8080:8080 -v c:/usr/webapps:/var/lib/jetty/webapps jetty
“`

##Tomcat 9.0 を利用する場合

“`
docker run –rm -it -p 8000:8000 -p 8080:8080 -v c:/usr/webapps:/usr/local/tomcat/webapps tomcat:9.0
“`

以上。

元記事を表示

AtCoder229をやった(Java)

AtCoder229をやった。
AとB問題の解答例だけみたけど、やっぱり自分はまだまだだなとしみじみと思う。

##[A](https://atcoder.jp/contests/abc229/tasks/abc229_a)
【#(黒)】と【.(白)】の場合分け問題
“辺”としてみたときに隣り合っていたら、”Yes”を違う場合は”No”を出力する。
全パターン列挙でもよい。
私の場合は、全パターン列挙に近いが、途中で場合分けをした。
例えば、以下のYesの入力例
1)  2)  3)  4)
##  #.  #.  ##
##  #.  ##  ..
1と2はリスト型のHashSet()を使えば重複削除により、1ラインとして扱うことができます。
その場合は【#】が含まれていれば”Yes”です。

4は、**1と2以外**として扱うため、上下が逆でも”Yes”になります。

最後に3は、**1と2以外**として扱うけど、【#】の個数をカウントして3以上だと”Yes”を出すロジックとなっています。

“`
import java.util.*;

public class Main

元記事を表示

GitHub Actions で Error: Gradle Wrapper Validation Failed!

[GradleでのJavaのビルドとテスト](https://docs.github.com/ja/actions/automating-builds-and-tests/building-and-testing-java-with-gradle) を元にGitHub Actionsを設定をしたら、以下のようなエラーが出たので解消メモ。

“`
Run gradle/wrapper-validation-action@v1
with:
min-wrapper-count: 1
allow-snapshots: false
env:
JAVA_HOME: /opt/hostedtoolcache/Java_Adopt_jdk/11.0.11-9/x64
Error: Gradle Wrapper Validation Failed!
See https://github.com/gradle/wrapper-validation-action#reporting-failures
✗ Other validation errors:
Expect

元記事を表示

【Java】package privateなメンバーはその気になれば外部プロジェクトからアクセスできる

# はじめに
Javaにおけるアクセス制御修飾子には以下の4種類があります。

* public
* どこからでもアクセス可能
* protected
* 同じパッケージ内か、もしくはサブクラスのインスタンスからアクセス可能
* アクセス修飾子なし(package private)
* 同じパッケージ内からのみアクセス可能
* private
* 同じクラス内からのみアクセス可能

これらは見ての通り、下に行けば行くほどアクセス可能範囲が狭いです。publicとprotectedが公開API、package privateとprivateが非公開APIとされます。

今回話題にしたいのは、下から2番目のpackage privateです。package privateというのが正式な呼び方かわかりませんが、その呼ばれ方の通り限りなくprivateに近いものなのだろうと思っていたのですが、案外そうでもなかったぜというのがこの記事の趣旨です。

# 結論
package privateが「同じパッケージ内からのみアクセス可能」という理解は正しいが、外部のプロジェクトにおいて

元記事を表示

Java の乱数発生器

# これは何?

[Javaの乱数生成器について速度面から調査してみる](https://qiita.com/penguinsan/items/52a7b76e5570f7cf7e15)
という記事を見て、Java の乱数にも色々あるんだなと思い。

速度面以外を軽く調べた。

# 調べた

## java.util.Random

Knuth 先生の有名なアルゴリズムを使っている。
有名だけど、メルセンヌ・ツイスタなんかと比べるとバラケ具合がしょぼいこともよく知られている。

## java.util.concurrent.ThreadLocalRandom

内部状態は

“`java:java
long rnd;
“`

の一個、64bit だけ。定数が

“`java:java
long multiplier = 0x5DEECE66DL;
long addend = 0xBL;
long mask = (1L << 48) - 1; ``` と用意されていて計算は ```java:java int next(int bits) { rnd = (rnd *

元記事を表示

Couchbase Lite機能紹介:クエリのトラブルシューティング

## はじめに

ここでは、Couchbase Liteデータベースの検索のために利用するクエリについて、トラブルシューティングなどの目的のために調査を行う方法について説明します。

Couchbase Liteは、内部的にSQLiteを利用しており、ここでの解説は、SQLiteの`EXPLAIN QUERY PLAN`コマンドに関係してきます。
SQLiteの`EXPLAIN QUERY PLAN`の詳細については、以下を参照してください。

https://www.sqlite.org/eqp.html

調査方法には、APIを利用する方法と、cbliteコマンドを利用する方法があります。これらのいずれの方法を用いた場合でも、出力内容は同じフォーマットとなります。
出力内容は、クエリのパフォーマンスの問題を診断したり、クエリを最適化したりするときに役立つ洞察を提供します。

## 使用法

### cbliteでの利用例

ターミナル上で、データベースを指定して、インタラクティブモードで、cbliteコマンドを実行します。

“`
cblite

元記事を表示

Timber×Crashlytics でログをクラッシュレポート送信(Timber編)

# はじめに

リリースしたモバイルアプリで、未検出のバグによりクラッシュしてしまう場合、ユーザーが声を上げない限り検知できない・・ということは避けたいですよね。

また、万が一そのような不具合があった場合、再現手順やユーザーの状態を調査・分析するのは骨が折れます。

更には、リリースしたモバイルアプリの動作ログを自前のプラットフォームに集約するような仕組みも敷居が高いです。

それらを踏まえて、

– クラッシュするまでの詳細なログをクラッシュレポートで確認したい
– ログはいい感じに出力したい(`if (Logger.isDebugEnabled()) { … }`みたいな分岐はイヤ)
– 手軽に導入したい

という思いのもと、Timber と Firebase Crashlytics での実装例を紹介したいと思います。

# Timber

[Timber](https://github.com/JakeWharton/timber) は、Android向けのログ出力ライブラリです。

ログと言えば、Androidの標準ロガーとして、`android.util.Lo

元記事を表示

VSCode。。。エディタやめるってよ。

# VS CODEってなんですか?

超高機能な**テキストエディタ** です。最近では統合開発環境(IDE)だと言っても良いぐらいに高機能になりました。

## IDEってなんですか?

ソフトウエア開発のためにプログラムエディタ、コンパイラ呼び出し、テストの実行、デバッグ支援などの機能を統合したソフトウェアのことです。だいたいこんな機能を持っています

NO.|機能|概要
—|—|—
1|任意コンパイル|ユーザーの求めに応じて、プログラムをコンパイルする。
2|オートコンパイル|プログラムの変更の度にコンパイルして、問題などがあればエディタ上にわかりやすく表示する。
3|補完|入力された情報から、取り得る選択肢を並べる。開発者はその中から適切なものを選択する。
4|フォーマッタ|インデントなどを適切に整形してくれる
5|シンタックスハイライト|プログラムに色を付けて構文をわかりやすくする
5|依存解決|そのプログラムが利用する外部のライブラリを読み込む
6|多言語対応|自然言語じゃないよ。Javaとかcとかたくさんのプログラミング言語に対応するってことだよ。

元記事を表示

Javaコンパイル・実行時の文字化け対策(windows10)

# 初めに
Javaの勉強を始めてみました。VS Codeを使っているのですが、デフォルトで開くターミナルがpower shellであることに気付かずネットで調べたコマンドが動かないよおおお???となっていました。(コマンドプロンプトとpower shellで動くコマンドが微妙に違うため)
もっと言うと意地を張らずにJavaはShift-JISで書いたほうがいいと思いますが、気になってしまったので少し調べてみました。

# 文字化け対策(windows)
windowsのコマンドプロンプトでJavaを実行すると文字化けした。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2130321/929f7849-0e6a-2dea-b3d8-1cb9826be8f7.png)

これはJavaファイルをUTF-8で作成したが、コマンドプロンプト(windows)が使用している文字コードはshift-jisであることが原因。
UTF-8を画面に出力するためには以下のコマンドを実行すればよい。

元記事を表示

JAVAのWebサーバーにTLS1.3を適用する方法

古いWebサーバーはTLS1.0を使っていますが、TLS通信の安全性を上がるため、
TLS1.3にアップデートしようと思います。

## 1.暗号化スイートとは
SSL(Secure Sockets Layer)とTLS(Transport Layer Security)は、いずれもインターネット上でデータを暗号化して送受信する仕組み(プロトコル)です。個人情報やクレジットカード情報などの重要なデータを暗号化して、サーバ~PC間での通信を安全に行なうことができます。

## 2.今のTLSバージョンを確認してみて
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1234182/31622957-e9e8-7bfe-5b57-5897e6595899.png)

えぇぇ!TLS1.3までアップデートしてなっかたのに、
なぜTLS1.3になっているでしょうか?

## 3.TLS1.3に変わる原因は?
ネットから調べたんですが、
TLS 1.0および1.1は、安全とは見なされなくなったTL

元記事を表示

演算子いろいろ

論理積 &&
x && y :左辺も右辺もtrueの場合にtrue(左辺 かつ 右辺)
論理和 ||
x || y :左辺か右辺のどちらかがtrueの場合にtrue(左辺 または 右辺)
論理否定 !
!x  :xがtrueの場合にfalse、xがfalseの場合にtrue

元記事を表示

OTHERカテゴリの最新記事