JAVA関連のことを調べてみた2022年12月22日

JAVA関連のことを調べてみた2022年12月22日

プログラミング初心者大学生がJavaを勉強した内容について

なぜ今Javaなのか?

元記事を表示

[Java] テスタブルにリファクタして、プライベートメソッドをテストしていこう

この記事はソースコードがテスタブルになるようにリファクタを行い、プライベートメソッドをJavaのリフレクションを使ってテストしていく方法を紹介します。
※SpringFrameworkを利用している前提になります。

## リファクタ前
まず元のソースコードです。beforeパッケージに格納しています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/81962/7d994591-7eab-a6be-43b2-6f4d48410aaf.png)

こちらのUserServieクラスは、publicメソッド`calculateTimeZoneAge`つ持っています。フィールドに@AutowiredでUserRepositoryを注入しています。
UserRepositoryはDBアクセスするクラスでuserIdをもとに、DBにアクセスしてUserクラスを返却するメソッド`getUser`を持っています。
`calculateTimeZoneAge`というメソッドは、ユーザーが住んでいる

元記事を表示

【Java】JavaおじさんのJava放浪記:その5(日付)

# はじめに

こんにちは、Javaおじさんです。
今回は、Javaにおける日付について大まかにまとめていきます。
何卒宜しくお願いいたします。

## 記事の内容

– Javaにおける日付の扱いについて大雑把に理解していく。

# Javaにおける日付

– 日付:ミリ秒で管理 (1970年1月1日0時0分0ミリ秒を0として、経過時間を`long`型で管理)
– Dateクラス:日付を表示 (ミリ秒で入力)
“`java
Date today = new Date(15141170800000L); // => Sat Nov 03 00:00:00 JST 2018
“`
– Calenderクラス:現在の日付を取得
“`java
Calender calender = Calender.getInstance(); // => Calenderクラスのインスタンス(現在の日付)の取得
Date today = calender.getTime(); // => getTimeメソッドでインスタンスが保持している現在の日付を取得
// => Thu Dec 22

元記事を表示

Webアプリケーションとは メモ

## Webとは
あらゆる場所から情報を取得することを可能にするシステム。

## Webブラウザとは
Webページを表示するソフトウエア。代表例は、google chrome、Safari。

## Webサーバー
Webページの情報を提供するコンピュータ。

## リクエスト
WebサーバーにWebページの情報を要求すること。
どんなデータが欲しいのかをWebサーバに伝える。
また、伝える際に送信元のIPアドレス、ブラウザ情報、入力情報を一緒に送る。

## レスポンス
Webサーバーがリクエストに対する結果を返すこと。

## Webアプリケーションとは
Web環境下で動くプログラム

## バックエンドで使用される言語
Java,PHP,Python
java は高い安全性と情報の高速処理を実現している。、

## フロントエンドで使用される言語
主にjavascript。

参考資料

元記事を表示

#32 Spring AOPの基礎から実装まで

# #32 Spring AOPの基礎から実装まで
今回はSpringの大きな特徴の1つと言われているAOPについてまとめて行きます。

# 前提条件
この記事はSpringの最低限の知識が必要になります。
また、なるべく分かりやすく書くつもりですが、この記事の目的は自分の勉強のアウトプットであるため所々説明は省略します。

# 構築環境
1. 各バージョン
Spring Boot ver 2.7.5
mybatis-spring-boot-starter ver 2.2.2
Model Mapper ver 3.1.0
jquery ver 3.6.1
bootstrap ver 5.2.2
webjars-locator ver 0.46
thymeleaf-layout-dialect ver 3.0.0

2. 依存関係
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2884987/58b53ccd-7cf2-2d82-4214-9f0c08fced2e.png)

# 成果物

元記事を表示

Java面接問題

問題1、GETとPOSTの区別
GETメソッドでは、送信内容がURLパラメータに含まれていますので、
同じURLに再度アクセスすると同じ内容が再現できます

GETは指定したリソースの表現を転送するようにリクエストするメソッドです。
つまり、何か情報を検索したり取得するために使うためのメソッドになります。

POSTメソッドでは送信内容がURLからはわからずリクエストボディに含まれていますので、URLだけでは同じ内容が再現できません。

POSTは指定したリソースを実装した機能に従って処理をする機能になります。
主に登録処理や更新処理などの、書き込みがありリソースが更新される可能性のある処理に対して使うメソッドになります。

問題2、重複な文字を除外する

string str = “abcdde”;
List data = new ArrayList;
for (int i=0; i

元記事を表示

class method の一覧を作る

instanceからclassを取得。classからmethod一覧を取得
“`java
public static void main(String[] args) {
String s1 = new String(“”);
Method m[] = s1.getClass().getMethods();
for (Method mc:m) {
System.out.println(mc);
}
}
“`
“`
public boolean java.lang.String.equals(java.lang.Object)
public java.lang.String java.lang.String.toString()
public int java.lang.String.hashCode()
public int java.lang.String.compareTo(java.lang.String)
public int java.lang.String.comp

元記事を表示

ラムダ式を勉強する

abstract methodを1つだけもつインタフェース。
new with implementして、overrideする。

Comparator#compareをoverride
“`java
public static void main(String[] args) {
Comparator c = new ComparatorImpl();
System.out.println(c.compare(“ABC”, “DEF”));
}
static class ComparatorImpl implements Comparator {
public int compare(String s1, String s2) {
return s1.compareTo(s2);
}
}
“`
“`
-3
“`
ラムダ式を使う。
Comparatorのabstract methodはcompareの1つのみのため、
メソッド名c

元記事を表示

intのmax値を超えるとどうなる

“`java
public static void main(String[] args) {
int i1 = Integer.MAX_VALUE;
System.out.println(i1);
System.out.println(i1+1);
System.out.println(i1+2);
System.out.println(“———————-“);
byte b1 = Byte.MAX_VALUE;
System.out.println(b1);
System.out.println(b1+1);
System.out.println(b1+2);
System.out.println(b1+2147483647-Byte.MAX_VALUE);
System.out.println(b1+2147483647-Byte.MAX_VALUE+1);
}

元記事を表示

【初心者向け】MacのVScodeでJava+SpringBootを動かしてみる【#2 実装編】

# #2 ブラウザに「Hello World」を表示させよう!
## はじめに
環境構築編については、下の記事を確認してみてくださいな。

https://qiita.com/gato-kwi666/items/550975604ea092b33a61

今回は、構築した環境でSpringBootをつかってブラウザに「Hello World」していきます!

## ゴール
VScodeとSpringBootを使ってブラウザ上に「Hello World!」と表示させる。

## 実装
### 前提
VScodeに以下の2つの拡張機能がインストール済みであること。
 ・Extension Pack for Java
 ・Spring Boot Extension Pack
### 1.ブランクプロジェクトの作成
まずはブランクプロジェクトをコマンドパレットから作成します。
このブランクプロジェクト、SpringBootを動かすのに必要な諸々が入ったフレームワークのことです。

:::note information
作成するとこんな感じのフォルダが出来上がります。
![スクリーンショット

元記事を表示

Java開発のお供に ~ MapStruct編

# はじめに

こんにちは。技術を学ぶことが好きな T です。

現場に初めて参画される方や API 開発をこれから行っていく方を助けたいという思いから、記事を作成させていただきました。
タイトルにあるように【MapStruct】というライブラリに関して紹介、及び実装例に関して詳細させていただきます。
微力でも皆様のお役に立てれば幸いです。
※ 最適解というわけでなく、一実装方法として確認いただけると幸いです。

### 対象者

– 現場に初めて参画される方
– 駆け出しエンジニア(WEB アプリの基礎がある程度わかっている)
– API 開発を実施する方

# 導入

– Javaを利用した開発では、Bean[^1]という考え方が出てきます。
– Bean には、さまざまなものがあり、Form や Dto、Entity 等ざまざまです。
レイヤードアーキテクチャ[^2]を採用しているプロジェクト等では、各層にて利用できる Bean が決まっていて、各層の間で Bean の詰め替え作業が発生します。
– Getter, Setter, Builder[^3] を利用して詰め替えを

元記事を表示

Spring Boot JDBCであいまい検索

## はじめに
Spring BootのJDBCであいまい検索機能を作った時のSQL文を紹介します。

普通のSQL文でLIKEを使う場合(?はviewのフォームから送られてきたものが入ってくるものです)
“`
SELECT *
FROM book
WHERE title LIKE ‘%?%’;
“`
こう書くと思っていましたが、こちらが正解でした。

“`
SELECT *
FROM book
WHERE title LIKE ‘%’||?||’%’;
“`

%と?の間に||を入れることで、あいまい検索をしてくれるSQL文が完成します。

元記事を表示

Cloud WorkStationsで Spring Boot の開発環境を作ってみた

# はじめに

こんにちは、京セラコミュニケーションシステム 福留(@kccs_kazuo_fukudome)です。

先日、GCP の新機能 Cloud WorkStations が発表されました。
参考:https://cloud.google.com/blog/ja/products/application-development/introducing-cloud-workstations

Cloud WorkStations は、Google Cloud Platform で開発環境を提供してくれるサービスとなります。Cloud WorkStations を利用するメリットとしては、発表記事などにあるように、インターネットが繋がる環境であれば、どこからでも開発環境にアクセスすることが可能なこと。また、開発環環境の設定を統一したり、開発環境の複製が容易にできること。ローカル PC を買い換えても開発環境を作り直さずにすむことなどがあります。

一方、Cloud WorkStations の画面操作は、ブラウザを通して行います。ネットワークスピードが遅くなると、打ったコードが画

元記事を表示

AndroidをJavaで実装するんですけど色々と分からなかったところまとめます

# Androidってなあに?

Androidは、スマートフォンなどの携帯情報端末のために、Google社が開発したOSです。
毎年バージョンアップした端末が発売されるのでそれに伴ってアプリもバージョンアップしなければいけません(汗)

この記事は**自分が詰まって学んだことをツラツラ書いていきます**
少しでも誰かの役に立ちますように・・・

# Androidに出てくるJavaの機能
**onCreateメソッド** : プログラムを起動したとき最初に呼び出される
onCreateメソッド内に
“`
super.onCreate(savedInstanceState);
“`
このコードが書かれています。
ここで書かれている**super**というのは、**スーパークラス**を意味します。スーパークラスは、継承する元になっているクラスのことです。

スーパークラスにあるonCreateメソッドを最初に呼び出して、スーパークラス側の処理を全部済ませてから、自分の処理を行うようにしています。このように、superは、スーパークラスを示すものとして、そのままメソッドやフィールド名を

元記事を表示

レガシープロダクトにおける自動テストの優先度を考察する

## はじめに
### 概要
自動テストのないレガシープロダクトを改善するために
自動テストの手法を以下の観点から比較し、優先順位を決めました。
1. 信頼性
1. 安定性
1. 網羅性
1. 実行時間
1. 実装時間

### なぜこの記事を書くのか
半年ほど前に長く運用されているプロダクトを引き継いだのですが、
決まったテスト手順もなく、内部ロジックの知識もなく、何をテストすればいいのかわかりませんでした。
最近になって内部ロジックまでキャッチアップできてきたので、テストを自動化したいと思うようになりました。
せっかくなので比較ついでにこの記事を書くことにします。
~~ちなみに本当に実施するかはまだ決めてません~~

この記事が、**これから自動テストを始めたいけど、何から始めるかわからない**
といった悩みを解決する手助けができたら幸いです。

### 対象読者
* テスト自動化をこれから進めたい人
* テストが全く行われてない環境にいる人
* テスト項目が毎回定まっていない環境にいる人
* ~~テストが毎回ノリの環境にいる人~~

## なぜテストを自動化する必要があるのか

元記事を表示

Docker + SQLServer + Javaで開発環境を構築する

# はじめに
この記事は [ZOZO #2 Advent Calendar 2022 21日目](https://qiita.com/advent-calendar/2022/zozo)の記事になります。
今回はDockerを用いてSQLServerの環境をローカルに構築し、それをJavaのアプリケーションから接続しようと思います。
また、テストデータの作成も合わせて行います。

# ディレクトリ構成
ディレクトリ構成は以下になります。
今回の記事に関係ないディレクトリやファイルは省略してます。
“`
docker-sqlserver-service
├─script
│ ├─ DDL
│ │ └─ employee.sql(employeeテーブル作成用のファイル)
│ ├─ DML
│ │ └─ insert.sql(employeeテーブルにデータを登録するファイル)
│ └ init.sh(テストデータ作成用のシェルスクリプト)
├── src
│ └─ main
│ ├─ java
│ │ └─ com

元記事を表示

【Java】リクエストパラメータの取得

## はじめに
今回はリクエストが送られてきたときの値(リクエストパラメータ)の取得方法をメモとして残しておきたいと思います。
実際にどうコーディングするのかも記載していきます。

## リクエストを送信する側の処理
送信側ではまず、formタグのaction属性に送信先のパス、method属性にリクエストメソッドを指定します。
そうすると、指定した送信先にフォームに入力された値がリクエストパラメータとして送信されます。その後リクエストパラメータは、アプリケーションサーバによってHttpServletRequestインスタンスに格納され送信先に渡されます。
“`
/* xxxxx.jsp */

ユーザー名:
パスワード:

“`

## リクエストパラメータの取得処

元記事を表示

Cloud9でJava開発環境をつくってみた

# はじめに
大規模開発を行う際、各開発者に同じ開発環境を提供するのが手間でした。
環境構築手順書を片手に必要なツールをインストールしても大抵の場合一度では動きません。おおむね一週間は環境構築に費やすことになります。
vmwareやdocker,vagrantなどを利用して配布したこともありましたが、VM動作環境の整合性等で、なかなかうまく行きません。
その中でCloud9は、早い時期からクラウドで開発環境を提供してきた老舗であります。現在はAWS社に買収されAWS Cloud9となっており、LambdaやNode.jsなどのスクリプト開発環境としては、ほぼオールインワンで提供されている便利なサービスです。
個人的にも手軽なLinux環境として使ってきましたが、Javaの実行/デバッグ環境としては一工夫必要なのでハマりどころを記事にしました。

# 軽くCloud9について説明
(必要ない方は飛ばしてください)
ブラウザベースのリモート開発環境です。VSCodeの様なIDEを持っているので、VSCodeに慣れている方なら、すんなり移行できます。逆にそうでない場合はちょっと厳しい・・・

元記事を表示

配列の勉強する

1次元配列の定義、値変更、配列全体の参照渡し
“`sample.java
public class Mavenproject1 {
int i1[];
int i2[];
public Mavenproject1() {
i1 = new int[2];
i2 = new int[2];
}
public static void main(String[] args) {
Mavenproject1 m = new Mavenproject1();
m.i1[0] = 1;
m.i1[1] = 1;
m.i2[0] = 2;
m.i2[1] = 2;
m.putlog();
m.i2 = m.i1;
m.i1[1] = 3;
m.putlog();
}
public void putlog(){
System.out.pri

元記事を表示

Apexの日付フォーマットの意外な落とし穴

Apexで日付を取得する関数がありますが、意外な落とし穴があるので注意が必要です。

結論:正確な日付を出力する場合、年のフォーマットは必ず「yyyy」にしましょう。

簡単な例で説明します。
DateTime nowDate = System.now();
String strDate1 = nowDate.format(‘yyyy-MM-dd’);
String strDate2 = nowDate.format(‘YYYY-MM-dd’);
System.debug(‘■■■■ Date1 ■■■ ‘ + strDate1);
System.debug(‘■■■■ Date2 ■■■ ‘ + strDate2);

これの実行結果は両方同じです。
17:55:05:013 USER_DEBUG [7]|DEBUG|■■■■ Date1 ■■■ 2022-12-20
17:55:05:013 USER_DEBUG [8]|DEBUG|■■■■ Date2 ■■■ 2022-12-20

次にこれを実行してみましょう
Date

元記事を表示

OTHERカテゴリの最新記事