- 1. AES-CBCで暗号・複合、AES-GCMで暗号・複合するJavaプログラム
- 2. Javaの強みを徹底解説③:ガベージコレクション
- 3. Javaで「正規表現グループを設定してパターンの一部にマッチした文字列を取得する」の動作を確認してみた
- 4. ResponseEntityと@ResponseStatusの違いを調べました
- 5. Clean Code – Chapter 3 : 関数
- 6. paizaランクS「文字列収集」を記事を書きながら解いてみた
- 7. 初心者エンジニアがleetCodeのTop Interview 150を解いてみる #1Merge Sorted Array
- 8. HTTPの主なステータスコード一覧
- 9. javaでFizzBuzzゲームを実装してみた
- 10. Java Gold 例題 同期制御
- 11. ABC361A~D、Fの解答[Java]
- 12. ABC360A~E、Gの解答[Java]
- 13. SpringBootのapplication設定をAWSパラメータストアで行う
- 14. Javaで「複数の文字列のいずれかにマッチするパターンを記述する」の動作を確認してみた
- 15. JPAの永続性コンテキストとEntityManagerについてご説明いたします
- 16. 【個人メモ】Eclipse Javaプロジェクトの各画面と設定ファイルの関係性について
- 17. あんまり使わない演算子のメモ
- 18. 宝くじ (paizaランク C 相当) Java解答例
- 19. 野球の審判 (paizaランク C 相当) Java解答例
- 20. みかんの仕分け (paizaランク C 相当) Java解答例
AES-CBCで暗号・複合、AES-GCMで暗号・複合するJavaプログラム
# 1. AES-CBCとは
AES-CBC(Advanced Encryption Standard – Cipher Block Chaining)は、対称鍵暗号方式の AES(Advanced Encryption Standard)を CBC(Cipher Block Chaining)というモードで使用する暗号化アルゴリズムです。AES-CBC は、ブロック暗号の一つであり、特にデータの暗号化と復号に用いられます。### 1.1. AES-CBCの特徴
#### 1.1.1. ブロック暗号モードAES-CBC は、データを一定のブロック(通常は 128 ビット)ごとに分割して暗号化します。各ブロックは、前のブロックの暗号化結果と XOR(排他的論理和)されてから暗号化されるため、同じ平文ブロックが繰り返し現れても暗号文は異なります。
#### 1.1.2. 初期化ベクトル(IV)
AES-CBC では、最初のブロックを暗号化する前に、初期化ベクトル(IV)と呼ばれるランダムな値が使用されます。これにより、同じ平文を何度も暗号化しても、異なる暗号文が生成されます。
Javaの強みを徹底解説③:ガベージコレクション
こんにちは NSS の江口と申します。[前回の記事(JITコンパイラ)](https://qiita.com/NSS_FS_ENG/items/c9bccab6651c39d3fc4e)に引き続き`Java`の話となります。
今回は **ガベージコレクション** について話していこうと思います。前回と同様に今回記載している内容は**Java21**に準拠しています。# ガベージコレクションとは
![ガベージコレクション(概要).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3799996/0eef1389-3505-ab31-1b64-64a7e9102732.png)
Heap領域内に確保されたメモリを自動的に解放する仕組みです。誰からも参照されなくなったメモリを対象にします。
現在の多くのプログラミング言語では当たり前にサポートされていることが多いです。(贅沢ですね。)# ガベージコレクションの種類
では具体的にどうやってメモリを片付けるのかという話ですが、これという一つに決まっている
Javaで「正規表現グループを設定してパターンの一部にマッチした文字列を取得する」の動作を確認してみた
# 概要
Javaで「正規表現グループを設定してパターンの一部にマッチした文字列を取得する」の動作を確認してみました。
以下のページを参考にしました。https://www.javadrive.jp/start/regex/index13.html
# 実装
以下のファイルを作成しました。
“`JSample13_1.java
import java.util.regex.*;class JSample13_1{
public static void main(String[] args){
String regex = “(\\d{3})-(\\d{4})”;
Pattern p = Pattern.compile(regex);Matcher m = p.matcher(“〒123-4567”);
if (m.find()){
System.out.println(m.group()); // 123-4567
System.out.println(m.group(0)); // 123-4567
ResponseEntityと@ResponseStatusの違いを調べました
## 入る前に
– 私は韓国人として、日本語の勉強とコンピュータの勉強を同時に行うために、ここに文章を書きます
– 翻訳機の助けを借りて書かれた文章なので、誤りがあるかもしれません
– 間違った部分についてのフィードバックはいつでも歓迎です
– 私と異なる意見もいつでも歓迎です
– 日本の開発者たちとコミュニケーションを取りたいです!## 主題紹介
SpringでHTTP応答を設定するResponseEntityと@ResponseStatusオプションの違いについて調べました。
—
## ResponseEntity
“`java
@PostMapping()
public ResponseEntitystartWeatherCrawlToday(){
return ResponseEntity.ok(“hello”);
}
“`
上記のコードはHTTPステータスコードを200で返し、応答本文にhelloを含んでいます。## @ ResponseStatus
“`java
@ResponseS
Clean Code – Chapter 3 : 関数
[Clean Code アジャイルソフトウェア達人の技](http://www.amazon.co.jp/Clean-Code-%E3%82%A2%E3%82%B8%E3%83%A3%E3%82%A4%E3%83%AB%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E9%81%94%E4%BA%BA%E3%81%AE%E6%8A%80-Robert-Martin/dp/4048676881)の本を整理した内容です
# 第3章 関数
どんなプログラムでも、最も基本的な単位は関数です。この章では、関数をうまく作成する方法を紹介します。
## 1. 小さく作りましょう!
関数を作るための第一のルールは「小さくする!」です。関数を作るための第二のルールは「さらに小さくする!」です。
では、どれくらい短くすれば良いのでしょうか?
この本の著者は、インデントレベルが2段を超えてはいけないと言っています。そうすることで、関数は読みやすく理解しやすくなります。
## 2. 一つのことだけを行いましょう
`関数は一つのことを行
paizaランクS「文字列収集」を記事を書きながら解いてみた
## キャンペーンしてたので、Java独学の自分が思考整理の為に記事を書きながら問題を解いてみました
挑戦した問題はランクSの「文字列収集」です。
https://paiza.jp/works/mondai/real_event/word_collection
問題文のコピー
あなたは文字列の愛好家で、文字列を収集することにとても熱心です。
文字列は市場で高値で取引されています。今、市場には N 個の文字列が出まわっており、文字列 S_i (1 ≦ i ≦ N) の価格は P_i です。 あなたは数ある文字列の中でも、とくに先頭がある特定の文字列で始まる文字列に興味があり、そのような文字列をすべて買い占めたいです。例え、同じ文字列が複数売っていたとしてもそのすべてを買います。
そこで、市場に出回っている N 個の文字列 S_i とそれぞれの価格 P_i (i ≦ i ≦ N)、また、M 個のクエリ文字列 Q_i (1 ≦ i ≦ M) が与えられるので、それぞれのクエリ Q_i に対し、市場に出回っている文字列の中で先
初心者エンジニアがleetCodeのTop Interview 150を解いてみる #1Merge Sorted Array
## 1. ☺️はじめに☺️
### 始めようと思ったきっかけ
+ コーディングスキル向上と理解定着のため
→業務で必要なコーディングをするだけでは知識の幅が狭まるのではないかと思い、全般的な知識を身につけるべく、leetCodeに手を出してみた。
また、解いて終わりではなくて、問題を解く中で調べたことの記録をアウトプットすることで記憶を定着させる目的もある。
+ 言語化能力向上のため
→実務で人に自分がなぜこう書いたのか説明するのが苦手だな〜と思っていたので、問題を解くときに考えたことを書くことで練習できると思った。### 💻対象言語
JavaScriptとJava### 👀注意事項
当方実務経験1年のエンジニアなので、およそ最適とは言えない解き方をしているという自覚はありますので、温かい目で見守っていただけるとありがたいです😂💦## 2.💪早速解いてみる💪
・88.Merge Sorted Array
https://leetcode.com/problems/merge-sorted-array/(問題)
与えられた引数(配列 nums1,nums2 および整数
HTTPの主なステータスコード一覧
## 主なステータスコード一覧
| ステータスコード | 名前 | 説明 |
| :— | :— | :— |
| 200 | OK | リクエスト成功 |
| 201 | Created | リクエスト成功、新しいリソースが作成された |
| 202 | Accepted | リクエスト成功 |
| 204 | No Content | コンテンツなし |
| 300 | Mutiple Choices | 複数のリソースが存在する |
| 301 | Moved Permanently | リソースは恒久的に移動した |
| 302 | Found | リクエストしたリソースは一時的に移動している |
| 303 | See Other | 他を参照 |
| 304 | Not Modified | 前回から更新されていない |
| 307 | Temporary Redirect | リクエストしたリソースは一時的に移動している |
| 400 | Bad Request | リクエストが正しくない |
| 401 | Unauthorized | 認証が必要 |
javaでFizzBuzzゲームを実装してみた
## 概要
今回はjavaでFizzBuzzゲームのコードを書いてみました。
練習用で記述していますのでご承知ください。#### ソースコード
実行用クラスです。
“`Main.javapublic class Main {
public static void main(String[] args){
int input_num;System.out.println(“Fizzbuzz–>start”);
Cal parts = new Cal();
parts.init();//Fizzbuzzゲームの説明
input_num = parts.get_num();//標準入力で整数値(1-99)を取得する
System.out.println(“Fizzbuzz–>input_num:” + input_num);
parts.judge(input_num);//5の倍数:Fizz,5の倍数:Buzz,15の倍数:FizzBuzzかの判定
Java Gold 例題 同期制御
“`java
package threadTest;public class SynchronizeTest {
public static void main(String[] args) {
Market market = new Market();
ThreadFirst tf = new ThreadFirst(market);
ThreadSecond ts = new ThreadSecond(market);
tf.start();
ts.start();
}
}class ThreadFirst extends Thread {
private Market market;
public ThreadFirst(Market m) {
market = m;
}
public void run() {
for(int i = 0; i < 4; i++) { int num = (int)(Math.random() * 10 + 1); market.wholesale(num); } } } cl
ABC361A~D、Fの解答[Java]
## はじめに
今回はコンテスト中にDまで、コンテスト後にFが解けたのでそれを載せようと思います。なお、僕のライブラリは[GitHub](https://github.com/viral8code/viral-Library)よりご確認ください。
では、見ていきましょう。## A – Insert
問題文は[こちら](https://atcoder.jp/contests/abc361/tasks/abc361_a)挿入位置手前までを受け取って出力し、挿入したい値を出力、あとは残りの配列を受け取って出力しました。
“`A.java
final class Main{
private static final boolean autoFlush = false;
private static final SimpleScanner sc = new SimpleScanner(System.in);
private static final SimpleWriter out = new SimpleWriter(System.out,autoFlush);pub
ABC360A~E、Gの解答[Java]
## はじめに
今回はA~EとGをコンテスト中に解けたので、それをそのまま載せようと思います。なお、僕のライブラリは[GitHub](https://github.com/viral8code/viral-Library)よりご確認下さい。
では、見ていきましょう。## A – A Healthy Breakfast
問題文は[こちら](https://atcoder.jp/contests/abc360/tasks/abc360_a)`String`の`indexOf`メソッドを用いるとインデックスを得ることができるので、これを使って位置の判定を行ないました。
“`A.java
final class Main{
private static final boolean autoFlush = false;
private static final SimpleScanner sc = new SimpleScanner(System.in);
private static final SimpleWriter out = new SimpleWriter(Sys
SpringBootのapplication設定をAWSパラメータストアで行う
## はじめに
* DBアクセス用パスワード等の秘匿情報を設定ファイルに記載しておくのは管理上好ましくないので、AWSパラメータストアで管理するにあたり、Spring Bootアプリケーション設定値(application.yml/application.properties)にパラメータストアの設定値を統合(パラメータストアの値をアプリケーション設定値に反映)する作業を行いました。
* 本番と開発の設定を分離している点と合わせて手順等を備忘録としてまとめたものです。(乱筆な点、ご容赦ください)
### 注意点
* 実際の設定ファイルの値とは変えている個所がありますので、この値そのもので動作検証して保証したものではありません。
## 環境
* Spring Boot 3.1.0
* Java 17
* gradle 8.8## 依存関係の追加
まず、Spring BootプロジェクトにAWSパラメータストアを使用するための依存関係を追加します。`build.gradle`ファイルに以下のエントリを追加します。
“`groovy
dependencies {
Javaで「複数の文字列のいずれかにマッチするパターンを記述する」の動作を確認してみた
# 概要
Javaで「複数の文字列のいずれかにマッチするパターンを記述する」の動作を確認してみました。
以下のページを参考にしました。https://www.javadrive.jp/start/regex/index12.html
# 実装
以下のファイルを作成しました。
“`JSample12_1.java
import java.util.regex.*;class JSample12_1{
public static void main(String[] args){
String regex = “blue|Blue”;
Pattern p = Pattern.compile(regex);Matcher m1 = p.matcher(“My favorite color is blue”);
System.out.println(m1.find()); // trueMatcher m2 = p.matcher(“bluebird weather”);
System.out.println(m2.
JPAの永続性コンテキストとEntityManagerについてご説明いたします
## 入る前に
– 私は韓国人として、日本語の勉強とコンピュータの勉強を同時に行うために、ここに文章を書きます
– 翻訳機の助けを借りて書かれた文章なので、誤りがあるかもしれません
– この内容は基本的にJPAを知っていて、初めて入門する方に向けて作成されました—
## パーシステンスコンテキストとは? (Persistence Context)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3815412/1372697a-2a85-3e09-f5c1-2ef5210243fa.png)>永続コンテキストは、一意のエンティティインスタンスが任意の永続的なIDに対して存在するようなエンティティのセットです。永続コンテキスト内では、エンティティが管理されます。EntityManagerはそのライフサイクルを制御し、エンティティはデータストアリソースにアクセスできます。
永続コンテキストが終了すると、以前管理されていたエンティティはデタッチされます。デタッチされたエンティティ
【個人メモ】Eclipse Javaプロジェクトの各画面と設定ファイルの関係性について
### プロジェクトの「Properties」→「Project Facets」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3802944/617f6752-4d71-616e-ade7-2a650caa4033.png)“` xml:org.eclipse.wst.common.project.facet.core.xml
~略~
~略~
“`————————————————–
あんまり使わない演算子のメモ
# はじめに
普段使う演算子に”+”や”+=”,”<"などのものを多く使う印象が強いですが、 ふと、目にしないものを見たときに頭の中で?マークが浮かんでしまい、混乱してしまいました。 なので、あまり見ないものを調べたのでその内容をメモがわりに記事にしておこうと思います。 # あまり見ない演算子一覧 |演算子|意味|内容| |:---|:---|:--| |&|x & y|0と1の論理積| |l|x l y|0と1の論理和| |^|x ^ y|0と1の排他的論理和| |~|~x|ビット反転| |<<|x << y|左へビットシフト(符号無し)| |>>>|x >>> y|右へビットシフト(符号あり)|**論理積**
いずれも真のときに真となり、それ以外のときは偽となるもの**論理和**
ずれか少なくとも一つが真であること
**排他的論理和**
どちらか片方が真でもう片方が偽の時には結果が真となり、両方とも真あるいは両方とも偽の時は偽となる**ビット反転**
各ビットの値を0ならば1に、1ならば0に反転する**ビットシフト**
ビット列の中身を左右にシフトする操作の
宝くじ (paizaランク C 相当) Java解答例
# 問題文
https://paiza.jp/works/mondai/c_rank_skillcheck_archive/lottery# 解答例
“`java
import java.util.Scanner;public class Main {
public static void main(String[] args) {
try (Scanner scanner = new Scanner(System.in)) {
int b = scanner.nextInt();
int n = scanner.nextInt();
for (int i = 0; i < n; i++) { int a = scanner.nextInt(); if (a == b) { System.out.println("first"); } else if ((a + 1) == b || (a - 1) == b) { System.out.println("adjacent"); } else if (
野球の審判 (paizaランク C 相当) Java解答例
# 問題文
https://paiza.jp/works/mondai/c_rank_skillcheck_archive/umpire# 解答例
“`java
import java.util.Scanner;public class Main {
public static void main(String[] args) {
try (Scanner scanner = new Scanner(System.in)) {
int n = scanner.nextInt();
int ballCount = 0;
int strikeCount = 0;
for (int i = 0; i < n; i++) { String s = scanner.next(); if (s.equals("ball")) { ballCount++; if (ballCount >= 4) {
System.out.println(“fourball!”);
} else {
Syst
みかんの仕分け (paizaランク C 相当) Java解答例
# 問題文
https://paiza.jp/works/mondai/c_rank_skillcheck_archive/mikan# 解答例
“`java
import java.util.Scanner;public class Main {
public static void main(String[] args) {
try (Scanner scanner = new Scanner(System.in)) {
int n = scanner.nextInt();
int m = scanner.nextInt();
for (int i = 0; i < m; i++) { int w = scanner.nextInt(); int result = w / n * n; if (result == 0) { result = n; } else if ((w - result) >= (result + n – w)) {
result += n;
}
System