- 1. 【インクリメント演算子】hoge++ と ++hoge の違いとは
- 2. サーブレットを使っているwebアプリは2箇所の通信を確認する必要がある
- 3. ほぼ未経験からスマホアプリエンジニアを目指す ~プロローグ~
- 4. Javaで「関係演算子と等価演算子」の動作を確認してみた
- 5. SAP BTP 開発の開発環境(サーバサイド)
- 6. Java Silver 17 合格体験記
- 7. 【Java Silver】2次元配列 length 解説
- 8. Javaの `ArrayList` と `List` の違いの理解
- 9. Apache HttpClient 5のデフォルトリトライ設定
- 10. デュアルピボットクイックソートの仕組みと実装
- 11. Javaで「代入演算子」の動作を確認してみた
- 12. GraalVM で Spring Boot アプリケーションをネイティブイメージ化してみた
- 13. Java アプリ作成
- 14. java。spring。HttpHeaders型。ループで表示
- 15. (調査中)Javaでhttpclientでファイルをレスポンスとして受け取り、NASサーバーに保存
- 16. 双方向リストの初期化とダミーヘッド・ダミーテイルについて
- 17. 【Spring Boot】flyway-database-mongodbでMongoDBに対してマイグレーションを行う
- 18. Javaで「ビット演算子とシフト演算子」の動作を確認してみた
- 19. Junit どうやって使うの…? 初学者向け
- 20. 正規表現でJavadoc形式のコメントを通常コメントに戻す
【インクリメント演算子】hoge++ と ++hoge の違いとは
# 目次
この記事は2分ほどで読めます。
[1. 問題](#1-問題)
[2. 解説](#2-解説)
[3. 結局どちらを使えば良いか](#3-結局どちらを使えば良いか)# 1. 問題
“`
// JavaScriptの場合
let hoge = 10;
console.log(++hoge);
console.log(hoge++);
“`
“`
// Javaの場合
int hoge = 10;
System.out.println(++hoge);
System.out.println(hoge++);
“`Q: 上記コードを実行したときにどのように表示されるでしょうか?(補足:JavaScriptとJavaの実行結果は同じになります)
考え中・・・
A: 正解は以下のとおりとなります
“`
11
11
“`
# 2. 解説
– hoge++と++hogeの挙動の違いを一言で表すと「変動`前`の変数を返すか変動`後`の違いを表すか」です。
– ++hogeのように++を変数前につけた場合は
サーブレットを使っているwebアプリは2箇所の通信を確認する必要がある
サーブレットを使ったwebアプリでは、
– クライアント-webサーバ
– クライアントのダイアログなど-サーブレットの2箇所で通信が発生する。
そのため、レスポンスに何かしら設定を加えたい場合は
– どちらに設定をするのか
– どちらに設定がされるのかを確認する必要がある。
![20240531_003915.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2330584/bb337c63-40e2-4432-c718-c9ea0c903953.jpeg)
# 参考サイト
https://developer.mozilla.org/ja/docs/Web/HTTP/Headers/Content-Type
ほぼ未経験からスマホアプリエンジニアを目指す ~プロローグ~
## はじめに
スマホアプリエンジニアの業種に就き、半年が経とうとしています。
しかし、ほぼ未経験で基礎力など中々身につかず・・・。
なにかモチベになるものがないかな~と思いQiitaを用いて、勉強したことのメモ代わりとしてQiitaを使っていきたいと思います!
すごい簡単なことからですが同じ思いをしている方がきっと居るかと思いますので、一緒に頑張れたなと思います!
更新頻度は週一回ぐらいのペースで更新できたらなぁ~と思います!
よろしくお願いします!## 最終目標
まだ漠然としておりますが・・・
### 「iOS/Androidのアプリを自力で実用性のあるものを作る」
## 今日の議題
### 目次
◆ 開発言語は何から学べばいいのか
◆ こんな話を先輩が言っていた
◆ 次回の目標
◆ 最後に## 開発言語は何から学べばいいのか
・スマホアプリには2つのOSがありそれぞれ作成する際の言語は以下の通りとなる。
・iOS:Swift / objective-C
・Android:Kotlin / Java
・業務中、言語がコロコロ変わってわからなくなるので、どれから
Javaで「関係演算子と等価演算子」の動作を確認してみた
# 概要
Javaで「関係演算子と等価演算子」の動作を確認してみました。
以下のページを参考にしました。https://www.javadrive.jp/start/ope/index11.html
# 実装
以下のファイルを作成しました。
“`JSample11_1.java
class JSample11_1{
public static void main(String[] args){
int a = 7;
int b = 4;System.out.println(“a = ” + a);
System.out.println(“b = ” + b);System.out.println(“a < b : " + (a < b)); System.out.println("a <= b : " + (a <= b)); System.out.println("a > b : ” + (a > b));
System.out.println(“a >= b : ” + (a >= b));
SAP BTP 開発の開発環境(サーバサイド)
## SAP BTPの開発環境について
SAP BTPの開発を行う場合、多くの方はSAP Business Application Studioを使って開発をしているかと思います。
しかし、SAP Business Application Studio(通称:BAS)を使うと煩わしいことも出てきます。* Web IDEなのでショートカットキーが使えない
* BASのインスタンス立ち上げに時間がかかる
* ブレイクポイントを使ったデバッグが上手くいかない等、特にサーバサイド(Java)の開発をする際、今までEclipse等のIDEを使っていた方にとっては細かなストレスがかかると思います。
そこでおすすめなのが、VisualStudioCode(通称:VsCode)です。
VsCodeはショートカットも充実し、様々な拡張機能も用意されているので、コーディングの観点では
WebIEDに比べると開発効率が上がると思います。最近ではJavaの開発が行えるように拡張機能が充実しているので、
これまでEclipsを使っていた方にとっても遜色なく開発が行えます。なにより
Java Silver 17 合格体験記
## はじめに
少し前、JavaSilver17に合格しましたので、合格体験記として記録を残そうと思います。## 残そうと思った理由
### JavaSilver17を取り巻く環境があまり良くないため
– JavaSilver17の日本語試験がリリースされたのは2023年12月1日で、出来立てほやほや
– 現状、紫本は出版されていますが黒本はまだ出版されていない(今年中という噂)
– ネットを探しても合格体験記等、有意義な情報源が少ない## 勉強時間について
正確には計測していませんが、
– 11の黒本(10章まで)を1周
– 17の紫本を1周(模擬試験のみ1.5周ほど)
– 50-60時間程度勉強スタイルは人それぞれだと思いますが、便利な黒本がまだないため周回を繰り返すより1問ずつ問題を振り返りながら確実に理解するやり方を意識しました。
また、問題の型が不明確なため、どのような初見の問題が出ても狼狽えないように、基礎知識を固めるイメージで取り組みました。## JavaSilver11から何が変わったのか
### 出題数と試験時間が変更
JavaSilver
【Java Silver】2次元配列 length 解説
Java silver se11の試験対策で黒本を解いていた際のlenthの動きをまとめました。
:::note
初心者向け
:::# 2次元配列 length
◼︎ 黒本 第12章 総仕上げ問題①“`
80.次のプログラムをコンパイル、実行したときの
結果として、正しいものを選びなさい。
(1つ選択)
“`“`java: 問題80
public class Test {
public static void main(String[] args) {
String[][] arrays = new String[2][];
array[0] = new String[2];
array[1] = new String[5];
int i = 97;
for (int a = 0; a < array.length; a++) { for(int b = 0; b < array.length; b++) { array[a][b] = "" + i ;
Javaの `ArrayList` と `List` の違いの理解
Javaプログラミングをしていると、リストを使う場面で `ArrayList` を使うか `List` を使うかで迷うことがあります。この記事では、`ArrayList
array = new ArrayList ();` と `List array = new ArrayList ();` の違いを整理していきます。 ## 宣言の違い
### `ArrayList
array = new ArrayList ();` これは、`ArrayList` 型の変数 `array` を宣言しています。具体的な `ArrayList` クラスを直接使うので、`ArrayList` 固有のメソッドや機能にアクセスできます。
“`java
ArrayListarray = new ArrayList ();
array.ensureCapacity(100); // ArrayList 固有のメソッド
“`この例では、`ArrayList` の
Apache HttpClient 5のデフォルトリトライ設定
## 発生した問題
HTTP通信処理で、レスポンスステータスが503の場合、意図せずリトライされる。
通信にはRestClient + Apache HttpClient 5を使用しており、リトライ設定は特にしていなかった。
また、リトライはIstioで制御していたため想定外のリトライが発生していた。## 原因
Apache HttpClient 5の仕様でレスポンスステータスが503、429の場合デフォルトでリトライされるようになっていた## リトライのデフォルト設定をしている箇所
https://github.com/apache/httpcomponents-client/blob/478b2c9288bb585629b128842227c91929ae4b86/httpclient5/src/main/java/org/apache/hc/client5/http/impl/DefaultHttpRequestRetryStrategy.java#L160“`DefaultHttpRequestRetryStrategy.java
public Defau
デュアルピボットクイックソートの仕組みと実装
## デュアルピボットクイックソートとは
デュアルピボットクイックソートは、従来のクイックソートの一種で、2つのピボットを使用することでソートを効率化します。これにより、パーティションの分割がより細かくなり、アルゴリズムのパフォーマンスが向上します。
### アルゴリズムの概要
1. **ピボットの選択**:
2つのピボットを選択します。通常、配列の先頭と末尾の要素が使用されます。2. **パーティショニング**:
選択した2つのピボットを基準に、配列を3つの部分に分けます。
– 左側の部分は、最初のピボットよりも小さい要素が含まれます。
– 中央の部分は、2つのピボットの間の要素が含まれます。
– 右側の部分は、2番目のピボットよりも大きい要素が含まれます。3. **再帰的ソート**:
分割された各部分に対して再帰的にデュアルピボットクイックソートを適用します。### アルゴリズムの利点
– **パフォーマンスの向上**:
デュアルピボットクイックソートは、2つのピボットを使用することでパーティショニングがより効率的になり、
Javaで「代入演算子」の動作を確認してみた
# 概要
Javaで「代入演算子」の動作を確認してみました。
以下のページを参考にしました。https://www.javadrive.jp/start/ope/index10.html
# 実装
以下のファイルを作成しました。
“`JSample10_1.java
class JSample10_1{
public static void main(String[] args){
int num;num = 10;
System.out.println(num);
num += 5;
System.out.println(num);num = 8;
System.out.println(num);
num *= 4;
System.out.println(num);
}
}
“`
“`JSample10_2.java
class JSample10_2{
public static void main(String[] args){
int a, b, c;
GraalVM で Spring Boot アプリケーションをネイティブイメージ化してみた
## 要点
バッチアプリケーションの初期化処理削減のために、GraalVM を利用してバッチアプリケーションをネイティブイメージ化できないかを調査・検討しました。その中で実施した内容を、以下の通り説明します。
– GraalVM を利用して Spring Boot アプリケーションをネイティブイメージ化した
– GraalVM で対応していない OSS ライブラリを利用していることによるエラーを調査した
– ネイティブイメージのパフォーマンスを計測し実行時間やメモリ消費量の削減を確認した
– GraalVM がサポートしていない OSS ライブラリが多いため、実際のシステム開発での利用はまだ難しいと考察した## 背景
BIPROGYでは、Spring Boot ベースのサンプルアプリケーション`Dressca`を作成し、様々な案件で雛形として使用しています。
とある案件で、Spring Boot アプリケーションのバッチ処理において、アプリケーション起動時に Bean の生成や初期化処理に時間がかかってしまうことが問題として挙げられていました。そこで、この時間を低減するための
Java アプリ作成
## オリジナルアプリを作成
まだまだ初心者ですが、オリジナルアプリを作成しました。思うようにいかないことや完全な理想ではないですが、アプリを製作することで勉強になりました!
本での学習や他にもアプリを製作しため、クラス名が重ならないようにした部分もあり名前がわかりずらい部分があればすみません:sob:#### スッキリわかるJava入門
を参考書に勉強しました:relaxed::relaxed:
あとは、ネットで調べたり、チャットGPTを利用し考え方や必要なメソッドを相談しました!!
初心者のため、つっこみどころなどあるかもしれませんが、もしよろしければ目を通して頂きご教授いただければ幸いです:bow:
メソッドの名前などわかりずらい、コメント入れた方がいい、見にくいなどやこんな考え方の方がいいなどもあればぜひお願いします:bow:英語が本当に全然だめで調べまくりました:joy:
これは慣れてくるものなのか、、、
英語の勉強もしていきたいなと思いました:robot:### 内容
飲食の注文アプリで、基本的には数字を使い注文をするスタイルです。
“` MainApp.j
java。spring。HttpHeaders型。ループで表示
Spring FrameworkのHttpHeaders型のインスタンスを作成し、そのヘッダーをループで表示する方法について説明します。HttpHeadersクラスは、HTTPリクエストおよびレスポンスのヘッダーを管理するためのクラスです。
以下は、HttpHeadersインスタンスにいくつかのヘッダーを追加し、それをループで表示するサンプルコードです。
“`java
import org.springframework.http.HttpHeaders;public class HttpHeadersExample {
public static void main(String[] args) {
// HttpHeadersのインスタンスを作成
HttpHeaders headers = new HttpHeaders();// ヘッダーを追加
headers.add(“Content-Type”, “application/json”);
headers.add(“User-A
(調査中)Javaでhttpclientでファイルをレスポンスとして受け取り、NASサーバーに保存
JavaでHttpClientを使用してファイルをレスポンスとして受け取り、NAS(ネットワークアタッチトストレージ)サーバーに保存する方法を以下に示します。ここでは、ファイルをレスポンスとして受け取った後に、NASサーバーの共有フォルダに保存する方法を説明します。
NASサーバーにファイルを保存するためには、事前にNASの共有フォルダがマウントされているか、アクセス可能である必要があります。以下の例では、NASの共有フォルダがローカルファイルシステムのパスとして利用可能であることを前提としています。
#### 前提条件
NASの共有フォルダがローカルファイルシステムにマウントされていること(例: //nas-server/shared が Z:\shared としてマウントされている)。
#### コード例
以下のコードでは、HttpClientを使用してファイルをダウンロードし、そのファイルをNASの指定されたパスに保存します。“`java
import java.net.URI;
import java.net.http.HttpClient;
import java.
双方向リストの初期化とダミーヘッド・ダミーテイルについて
## 双方向リストの基本構造
双方向リストは、各ノードが前後のノードへの参照を持つデータ構造です。これにより、リスト内のノードを両方向にたどることができます。
### ノードの構造
まず、ノードの構造は以下のようになります:
“`java
class Node{
K key;
V value;
Nodeprev;
Nodenext; public Node(K key, V value) {
this.key = key;
this.value = value;
this.prev = null;
this.next = null;
}
}
“`– `key`:ノードのキー
– `value`:ノードの値
– `prev`:前のノードへの参照
– `next`:次のノードへの参照### ダミーヘッドとダミーテイル
双方向リストを簡単に管理するために、ダミーヘッド(head)とダミーテイル(tail)という特別
【Spring Boot】flyway-database-mongodbでMongoDBに対してマイグレーションを行う
## 概要
Spring Bootでは、[SpringBoot x Flywayで DBマイグレーションを行う](https://tech.excite.co.jp/entry/2023/03/07/122028)の記事にある通り、Flywayでマイグレーションを行う設定ができるのですが、MongoDBに対してマイグレーションを行う際に少しハマったので内容をメモ書きします。## 前提
* 使用した言語はJavaになります。(Kotlinでもほぼ同様の設定で大丈夫と思いますが)
* 使用した`flyway-database-mongodb`のバージョンは`10.13.0`になります。
* ビルドツールはgradleを使用します。## 設定内容
設定の概要等は、redgateというツールの[MongoDB](https://documentation.red-gate.com/fd/mongodb-225608320.html)の部分を参考にしました。こちらはSpringBootの設定ではないようですが、ほぼこの内容に沿った形になります。### 1. gradleの設定
留意点
Javaで「ビット演算子とシフト演算子」の動作を確認してみた
# 概要
Javaで「ビット演算子とシフト演算子」の動作を確認してみました。
以下のページを参考にしました。https://www.javadrive.jp/start/ope/index8.html
# 実装
以下のファイルを作成しました。
“`JSample8_1.java
class JSample8_1{
public static void main(String[] args){
int i1 = 85 & 15;
int i2 = 85 | 15;
int i3 = 85 ^ 15;
int i4 = ~85;System.out.println(“85 & 15 = ” + i1);
System.out.println(“85 | 15 = ” + i2);
System.out.println(“85 ^ 15 = ” + i3);
System.out.println(“~85 = ” + i4);
}
}
“`
“`JSample8_2.java
class JSampl
Junit どうやって使うの…? 初学者向け
今回仕事でJunitを使用することになり初めて使用するためアウトプットとしてまとめてみました。記事に間違いがある場合はコメントしていただけると幸いです。
## JUnitとは> JUnitとは、Java言語で開発されたプログラムの単体テスト(ユニットテスト)を行なうためのソフトウェア。また、そこで用いられるテストコードの記述体系を含むテストフレームワーク。
> IT用語辞典 e-Wordsよりつまり、Javaで使用する便利なテストツールだと言えますね!
JUnitにはユニットテストを行うために以下のような便利な機能が用意されています。
* アノテーション
* メソッドまずは機能を説明する前にテストをするコードとテストコードを見ていきましょう。
## テスト Level.1
### テストするコード
“`java
public class FizzBuzz {public String FizzBuzz (int number) {
String str = “”;
if (number % 3 == 0) {
正規表現でJavadoc形式のコメントを通常コメントに戻す
## はじめに
備忘録です。よしなに。
正規表現を少し調べたのでついでに記事にしました。
## 環境
+ PleiadesでインストールしたEclipse
## 概要
本記事では、以下の画像のような形式のJavadocコメントを、![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3797991/d770ea65-4d5d-b154-20b5-2284bc507057.png)
以下の画像のように変更する正規表現を紹介します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3797991/faa7c638-b408-62cc-22b8-2023ff7bd77a.png)
## 方法
検索文字列
`\/\*{2}\n[\t ]+\* ([^\n])*\n{1}[\t ]*\*\/`置換文字列
`\/\/$1`検索文字列は適宜調整してください。
## おわり
ミスがあったら