- 1. 変数のデータ型の種類
- 2. Liberty で httpsession を JCacheに永続化
- 3. 【初心者専用】Java8のOptionalクラスについて
- 4. default method of interface
- 5. 例外について要点まとめ
- 6. static methodは継承されないし、overrideできない
- 7. static method of interface
- 8. anonymous classのclass name, methodsを確認
- 9. 不変マップを初期化する際はMap.ofEntriesを推奨
- 10. Secure コーディングには、参照共有・複製・不変と可変について知っておかなきゃいけないって話
- 11. SpringBoot2とReactJSで簡単なTodoListを作成
- 12. 今日起ったtomcatがらみの障害
- 13. Javaのレコードクラス
- 14. 【Android】テストを書くときに使う@get:RuleとかRuleChainってなんぞよ
- 15. paizaラーニング Aランクレベルアップメニュー マップの判定・縦横
- 16. 【祝】2023年の初投稿 簡単な自己紹介とブログ運営について
- 17. 新卒SE選択ソート書いてみた
- 18. ABC284A~Eの解答[Java]
- 19. mockito基本
- 20. var
変数のデータ型の種類
変数のデータ型の種類や使い方などを、学習し直した為、まとめていきたいと思います。
変数については以前簡単にまとめた記事がありますのでよろしければどうぞ。
[変数の定義 基本的な使い方](https://qiita.com/singekino-ojisan/items/12a51976b827e7dedb1c)# 基本データ型の種類
javaでデータ型には大きく分けて、`基本データ型(プリミティブ型)`と`オブジェクト参照型(リファレンス型)`の2種類があります。
`オブジェクト参照型(リファレンス型)`には、`String型`、文字列を扱えるデータ型です。
[変数の定義 基本的な使い方](https://qiita.com/singekino-ojisan/items/12a51976b827e7dedb1c)こちらで、記事にしています。`基本データ型(プリミティブ型)`は、数字や文字などの、最も基本的なデータの種類を扱うことができ、8種類あります。
ビット数とはPCのメモリ上で確保される桁数のことです。
同じような表現でバイト数というのもあり、一般的に`8ビット=1バイト`で
Liberty で httpsession を JCacheに永続化
# 目的
tWASではDBに保存していた httpsessionが Libertyでは JCacheで保存できるようになったので、その構成をします。# Gitレポジトリ
用意したGitレポジトリをクローンします。“`
git clone https://github.com/pdprof/security-auth.git
cd httpsession/jcache-docker
“`# Libertyイメージのビルド
Liberty Docker イメージをビルドします。localhost 以外の docker を動かしているホストのIPアドレスをACCESS_HOSTに指定します。“`
export ACCESS_HOST=172.17.0.1
./setup-docker.sh
“`# Libertyとhazelcastの起動
続けて以下のシェルを実行して起動します。テストなので hazelcast は永続化をしていません。“`
./hazelcast-start.sh
./httpsession-start.sh
“`# HttpSess
【初心者専用】Java8のOptionalクラスについて
## 0. 最初に
開発経験のない新入社員が突然、現場に放り込まれて「簡単な開発だから」と任されたけど、わからなさすぎて泣き寝入り状態だったので、自分の研鑽かつ同様の境遇の人達を救うためJava8(Optional編)についてまとめた。## 0.5. ラムダ式
Optionalを記す前に、ラムダ式といったものの説明をしないとだめだと気付きました。ラムダ式をひとことで表すと、、、**省略して、矢印みたいになってるもの**
“`
({引数} -> {処理})
“`
こんな感じです。サンプルコードを作ってみると
これがインターフェースで
“`java
interface Color{void printColor();
}
“`
これが匿名クラス(匿名クラスとは[こちら](https://cyzennt.co.jp/blog/2020/10/16/%E7%84%A1%E5%90%8D%E3%82%AF%E3%83%A9%E3%82%B9%E3%81%A8%E3%81%AF/#:~:text=java%E3%82%84C%23%E3%81%A7%E3%81%A
default method of interface
default methodはextendsによりoverrideされる
“`java
interface A {
default void method() {
System.out.println(“aaaa”);
}
}
interface B extends A {
}public class Outer implements B {
@Override
public void method() {
System.out.println(“aaaa2”);
B.super.method();
}
public static void main(String[] args) {
new Outer().method();
}
}
“`
“`
aaaa2
aaaa
“`
例外について要点まとめ
## 目次
[1.例外の種類](#1-例外の種類)
[2.例外の継承関係](#2-例外の継承関係)## 1. 例外の種類
例外とは、Throwableクラスのサブクラスのオブジェクトのことを指す。
Throwableクラスのサブクラスとして、Errorクラス、Exceptionクラスが存在している。###### ◆ Errorクラス
プログラムが実行できないなどの重大な例外を扱うため、例外処理は通常おこなわない。
例 IOError:重大な入出力エラー発生時にスロー###### ◆ Exceptionクラス
クラス名の末尾に必ずExceptionが付く。
RuntimeExceptionクラスに属するクラスと、
それ以外のExceptionクラスに属するクラスとに分類される。RuntimeExceptionクラスに属するクラスは「非チェック例外クラス」と呼ばれ、
例外処理をおこなわなくてもコンパールエラーにならない。
例 NullPointerException :null値の参照型変数を参照しようとした場合にスロー
IndexOutOf
static methodは継承されないし、overrideできない
“`java
interface A {
static void method() {
System.out.println(“aaaa”);
}
}public class Outer implements A {
static void method() {
System.out.println(“aaaa2”);
}
public static void main(String[] args) {
A.method();
Outer.method();
}
}
“`
“`
aaaa
aaaa2
““
static method of interface
継承先でstatic method of interface利用できない
“`java
interface A {
static void method() {
System.out.println(“aaaa”);
}
}
interface B extends A{
}
class C implements A{
}public class Outer implements A {
public static void main(String[] args) {
A.method();
B.method();
C.method();
method();
}
}
“`
“`
com/mycompany/mavenproject1/Outer.java:[27,8] シンボルを見つけられません
シンボル: メソッド method()
場所: インタフェース com.mycompany.mavenproject1.B
com/mycompany/mavenproject1/Ou
anonymous classのclass name, methodsを確認
class name = Outer$1という名前のclass name
methods name = Object’s methods + added method“`java
public class Outer {
public static void main(String[] args) {
var obj = new Object() {
public void test() {
System.out.println(“i am test method”);
}
};
System.out.println(obj.getClass());
Method m[] = obj.getClass().getMethods();
for(Method mc:m) {
System.out.println(mc);
}
}
}
“`
“`
class com.mycompany.mavenproject1.O
不変マップを初期化する際はMap.ofEntriesを推奨
# 不変マップの初期化方法
不変マップの初期化方法は大きく下記2つの方法があります。
– Map.of()
– Map.ofEntries()いずれもJavaSE9、JDK9以降に導入された機能になります。
https://docs.oracle.com/javase/jp/9/docs/api/java/util/Map.htmlそれではそれぞれの使い方を見ていきましょう。
## `Map.of()`
下記ドキュメントを参照しますと分かるとおり、of()の引数は、0〜10個の要素(キーとバリューのマッピング)を指定することができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/630308/325691c9-bd59-12eb-3c69-b97d716a01ab.png)例えば、要素数が2つの不変マップを初期化する場合
“`java
import java.util.Map;Map
mapOf = Map.of(
“key
Secure コーディングには、参照共有・複製・不変と可変について知っておかなきゃいけないって話
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/650867/2e2e7250-f0cc-515e-724a-7121a33ce88c.png)
本記事ではセキュアなコーディングを行う上で必要な知識を、別名参照問題を入り口にしてまとめています。
言語には Java を用いていますが、Ruby・Python・PHP であればほとんど当てはまる様な内容かなぁ、と思います。具体的には以下の事柄と関係するセキュアなコーディング方法を取り扱います。
普通のコーディングテクニックとして頻出するものばかりですが、落とし穴が多く存在します。何が危険なのか?なぜ危険なのか?どうやって解消するのか?など、具体的なコードも交えて説明したいと思います。1. 別名参照問題
1. 不変(immutable)オブジェクト・可変オブジェクト
1. 複製(シャロウコピー・ディープコピー)
1. ディフェンシブコピー
1. コピーコンストラクタ・static ファクトリ
1. スレッドセーフ(ちょっとだけ)
SpringBoot2とReactJSで簡単なTodoListを作成
# 初めに
はじめまして。
今回、学習のため、SpringBoot2とReactJSを把握次第、簡単なTodoListを作成した。# 目的
フレームワークSpringBoot2とReactJSを用いての開発をすることで、下記事項が理解できているかを確認する・Spring Boot Flow Architecture
・RestAPI service
・Redux store
・ReactJS Functional Components# スペック
■言語
Java(17)
JavaScript
HTML
CSS■DBMS
MySQL 8.0.31■フレームワーク
ReactJS(18.2.0)
SpringBoot2(2.7.4)■IDE
FrontEnd: Visual Code
BackEnd: IntelliJ# プロジェクトの機能概要
CRUDという4つの基本機能でTaskを管理するTodoList。
# 結果
https://drive.google.com/file/d/1wxhPNwDdoERaSb-lpPZ0GdI3iAKZnZK-/vi
今日起ったtomcatがらみの障害
## これ何
今日お昼ご飯食べられなかったので。## 何が起ったの
午前中画像とかアップロードできなくなった。## 原因は
tomcat上で運用されているSpring Bootのサーバでtempが溢れた。## 問題の説明
tomcatにはデフォルトで動的に書き込まれるディレクトリが2つあります。
一つは `logs`、もう一つは `temp`。
workやwebappsも動的といえば動的だけどある程度以上膨れることはないので除外します。`logs` はアプリケーションのログ(catalina.out) とかアクセスログ(access_log.txt)とかもろもろ吐かれるところ。
1日に1回程度cronか、log appenderによるローテーションがかかるように設定するのがセオリー。`temp` はjavaのテンポラリディレクトリのことで、tomcatではデフォルトここに置かれるというもの。
さまざまなライブラリが一時保存先として利用している。
つまり、javaをつるしで起動すると `/tmp` になるし、tomcat上でなにもしないと `$TOMCAT_HOME
Javaのレコードクラス
# 記事の目的
DDD(ドメイン駆動設計)では値オブジェクトはイミュータブルであることが求められる。
エンティティオブジェクトも可能であればイミュータブルとすべきである。レコードクラスはイミュータブルであることが強制できるので、DDDと相性が良い。
DDDに限らず、オブジェクト指向でプログラミングするのであれば、予期せぬオブジェクトの状態変化でつまらないバグにハマることも無くなるので、オブジェクトは極力イミュータブルになるようにしたほうが良いと思っている。
世の中にはクラスに無条件かつ盲目的にgetter/setterをつくる思考停止なプログラミングが溢れていて、Lombokのようなライブラリがそのような悪いプログラミングの量産に拍車をかけている気がする。
「Lombokイコールすべて悪」とは言わないが、なぜそのフィールドがprivateなのか、本当にsetterが必要なのかを考えること無く、なんとなく動く(だけど危うい)プログラムがラクに書けてしまうので、少なくとも自分の携わるプロジェクトではLombokは利用禁止にしている。Java16から正式実装されたレコードクラスを
【Android】テストを書くときに使う@get:RuleとかRuleChainってなんぞよ
# はじめに
Androidでインストゥルメント化単体テストを作成するとき、`@get:Rule`を使ってテストを書いたことはありませんか?
“`kotlin
@HiltAndroidTest
class AppTest {private val hiltRule = HiltAndroidRule(this)
private val composeTestRule = createAndroidComposeRule() @get:Rule
val rule: RuleChain = RuleChain
.outerRule(hiltRule)
.around(composeTestRule)
…
}
“`この、`@get:Rule`や`RuleChain.outerRule().around()`がよくわからない状態で、今まではテストを書いてきました。
ということで今回は、`@get:Rule`とかの**Rule**ってなんぞやということをまとめていきたいと思
paizaラーニング Aランクレベルアップメニュー マップの判定・縦横
# STEP: 1 盤面の情報取得
## 問題
https://paiza.jp/works/mondai/a_rank_level_up_problems/a_rank_snake_map_step1## 解答
“`java:step1.java
import java.util.*;public class Main {
public static void main(String[] args) {Scanner sc = new Scanner(System.in);
int h = sc.nextInt();
int w = sc.nextInt();
int n = sc.nextInt();
// 改行
sc.nextLine();String[][] board = createBoard(h, w, sc);
displayCoordinatesInText(board,
【祝】2023年の初投稿 簡単な自己紹介とブログ運営について
# はじめまして! からの自己紹介
## 目次
1. [ジョニーってどういう人?](#introduction)
1. はじめに
1. 宣伝(笑)
1. [ブログ運営について ](#todo)
1. 更新タイミング
1. 配信内容## ジョニーってどんな人?
どんな人? それは僕が一番聞きたいですが、都内のとある会社でエンジニア業を営む23歳の現役SEです。名前に突っ込みを入れないでください。れっきとした日本人です。主に次のような業務に携わっています。
– 業務用アプリケーションの開発
– kubenetes基盤の維持管理(今後やるよてい)
– 機械学習系あんまり細かく書くと身バレするのでこれくらいにします(笑)
日々の業務での日記や、技術的な発信を行っていこうと思います。
配信は、週1くらいでやっていきます。新人SEの日記なので読み物感覚で読んでください✨
新卒SE選択ソート書いてみた
基本情報技術者の擬似言語の学習のため実際にプログラム化してみました。
基本情報の問題集をもとにフローチャートを作成し、コーディングをおこなっております。“`java:Qiita.java
import java.util.*;public class SelectionSort {
public static void main(String[] args){
try {
Scanner sc = new Scanner(System.in);
System.out.println(“作りたい配列の要素数を入力してください。降順に並べます。”);
int size = Integer.parseInt(sc.next());
int[] data_array = new int[size];/*
* テストデータ
* 要素数 8
* 47,33,68,55,74,89,25,10
* 3,5,8,4,0,6,9,1
* 7
ABC284A~Eの解答[Java]
## はじめに
今回はEまで解けたのでコンテスト中に提出したコードを載せようと思います。では、見ていきましょう。
## A – Sequence of Strings
問題文は[こちら](https://atcoder.jp/contests/abc284/tasks/abc284_a)配列で受け取って逆順に出力しました。
“`A.java
class Main{static final boolean autoFlush = false;
static final Library System = new Library(java.lang.System.in,java.lang.System.out,java.lang.System.err,autoFlush);public static void main(String[] args){
//N、Sの受け取り
int N = System.in.nextInt();
String[] S = System.in.next(N);//逆順で出力
while(N–>0){
mockito基本
# 基本
## Mockしたクラスのメソッドが呼ばれることのテスト
“`java
@ExtendWith(MockitoExtension.class)
public class IndexSelectScanTest {
@Mock
private User user; // mockしたいClass@Test
public void testMock() {
Example expl = new Example(user);
expl.doSomethingForUser(); // ExampleのdoSomethingForUser()メソッドをコール
verify(user).doSomething(); // userのupdateIdメソッドも呼ばれたことをテスト
}
}
“`## Mockしたクラスで返す値をセットしておく
“`java
@ExtendWith(MockitoExtension.class)
public class IndexSelectScanTest {
@Mock
pr
var
varは型推論
Objectに存在しないtestメソッドを定義することで
Objectではない別のクラスを推論して宣言する“`java
public class Outer {
public static void main(String[] args) {
var obj = new Object() {
public void test() {
System.out.println(“i am test method”);
}
};
obj.test();
}
}
“`
“`
i am test method
“`
Objectで宣言するとエラー。
“`java
public class Outer {
public static void main(String[] args) {
Object obj = new Object() {
public void test() {
System.