JAVA関連のことを調べてみた2020年08月03日

JAVA関連のことを調べてみた2020年08月03日
目次

Spring+Vue.js でAPIの連携をする

## はじめに
今回SpringフレームワークでRestAPIを作成し、
Vue.jsでデータを表示させることをゴールに記載していきます。
(Javaのインストール等の初期設定となる環境構築は省きます。)

## プロジェクト作成
#### ◇Vue.js
VueCliを用いて作成していきます。

①VueCliをnpmよりインストールする

“`console:コンソール
npm install -g @vue-cli
“`
②プロジェクト作成

“`console:コンソール
vue create practice
“`
実行すると、アプリケーション作成に必要な設定ファイルやサンプルソースが自動で作成されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/567766/6c9486ce-a337-9e31-033f-d8ff25425027.png)
③サンプル画面確認
作成したプロジェクト配下にて以下実行

“`console:コンソール
npm run serve
`

元記事を表示

Java, Springでショッピングサイトの管理者機能・画面をつくってみた

#はじめに

わたしは、2~3年ほど前からJavaを中心に勉強している者です。
最近になって(遅ればせながら)、Springについて勉強しはじめました。
早速ですが、ショッピングサイトの管理者向け機能・画面を作ってみました。
まだまだ拙いですが、よければ参考にしてみてください。

STSのバージョン : 4.7.0.RELEASE
MySQLのバージョン : 8.0.15
mysql-connector-javaのバージョン : 8.0.16

“`java:SampleApplication.java
package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.

元記事を表示

javaでアルゴリズム入門 – しゃくとり法

# 記事の概要
自分の勉強兼メモでまとめている記事シリーズです。第六弾。
今までの記事はこちら。

|#|記事|
|:—————–:|:—————–|
|5|[javaでアルゴリズム入門 – 累積和](https://qiita.com/aja_min/items/3a334fb03749d8f42a25)|
|4|[javaでアルゴリズム入門 – 探索編(bit全探索)](https://qiita.com/aja_min/items/2a94758cf58fc1ea6f65)|
|3|[javaでアルゴリズム入門 – 探索編(幅優先探索)](https://qiita.com/aja_min/items/5f25e73086b2f3c720bb)|
|2|[javaでアルゴリズム入門 – 探索編(深さ優先探索)](https://qiita.com/aja_min/items/fed640d6835eb343eedf)|
|1|[javaでアルゴリズム入門 – 探索編(全探索、二分探索)](https://qiita.com/aja_mi

元記事を表示

IntelliJ IDEAを使ってSpring Bootのアプリケーションを作成する

IntelliJ IDEAを使ってSpring Bootのアプリケーションを作成し、実行するところまでの手順です。実行はIntelliJ IDEAでのデバック実行と、JARファイルにビルドして実行できることを確認します。

## 開発環境
– macOS Caralina 10.15.4
– OpenJDK 14.0.2
– maven 14.0.1
– IntelliJ IDEA

## 事前準備
Spring Bootの開発を行うために次のものを準備してください。

– OpenJDKのダウンロードとインストール https://openjdk.java.net/
– Mavenのダウンロードとインストール https://maven.apache.org/download.cgi
– IntelliJ IDEAのダウンロードとインストール https://www.jetbrains.com/ja-jp/idea/
– パスの確認
– `java -version`
– `mvn -v`

## IntelliJ IDEAでSpring Bootの開発

Spring B

元記事を表示

Android入門!

#はじめに
こんにちは、今週いっぱいで学校が終わり、来週から中身のない夏休みを過ごす僕です。
今回は[前回の記事](https://qiita.com/takurinton/items/2f737519dbddb78a000b)で作ったDjangoのAPIに実際にAndroidアプリを使用してHTTP通信をしてみたいと思います。

ちなみにこれあたふたしながらも1日で実装したものなのであまりクオリティは高くないです。(とは言っても16時間くらいかかってますが)

#基本のき!

僕が一番苦労したのはここです。実行構成が全くわからなかったこと、全体像が全く見えなかったこと、フロントエンドはどうやって実装するの?などなど。
まずは全体像が把握できないと何から始めていいのかわかりません。そのため、まずはどのような構成で作られているのか、何ができるのかを理解する必要があります。

また、Androidアプリを開発するにあたって最近はKotlinやReactNativeなどありますが、今回は[オワコンレガシー言語](https://www.youtube.com/watch?v=Xlf7TN3H

元記事を表示

JavaでTODOアプリを制作しよう5 TODOの表示を切り替える

こんにちは、今回はボタンを押すとTODOの完了⇄未完了がスイッチする機能を実装していきたいと思います。

## TODOアプリ作成リンク集
[1: MVCの簡単な説明](https://qiita.com/nomad_kartman/items/bce2f4831b7b769f84f2)
[2: Spring Initializrで雛形を作ってHello worldしたい](https://qiita.com/nomad_kartman/items/e173ea95b3ead96a412a)
[3: MySQLに仮のデータを保存 -> 全取得 -> topに表示する](https://qiita.com/nomad_kartman/items/f5f13037f048eeecf492)
[4: 投稿機能の実装] (https://qiita.com/nomad_kartman/items/113cdfc3c5cd1f5c0cef)
5: TODOの表示を切り替える (今ここ)

## 特定のTODOをidから検索する
まず今回の処理の流れは
・idからTODOを検索し取得する
・TOD

元記事を表示

【Java】JDK 13のSwitch Expressions (Preview)を見てみましょう

# OpenJDK 13の5つの重要機能
>
350: Dynamic CDS Archives
351: ZGC: Uncommit Unused Memory
353: Reimplement the Legacy Socket API
354: Switch Expressions (Preview)
355: Text Blocks (Preview)

上記の中でも本日は「Switch Expressions (Preview)」を見ていきたいと思います。

# Switch Expressions (Preview)
– JDK 12でもPreviewでしたか13でもPreviewですね。
– Previewなので–enable-previewのオプションを与えないと使えないらしいです。

### ・Arrow labels

“`java

static void howMany(int k) {
switch (k) {
case 1 -> System.out.println(“one”);
case 2 -> Sys

元記事を表示

【アルゴリズム】文字列の降順

# 問題説明
文字列sのパラメータを受け取り、降順でソートを行って新しい文字列を返却するメソッドsolutionを作成してください。
sは英文字の小文字、大文字のみで構成されていて、大文字は小文字より値が小さい値として扱う。

# 条件
– パラメータ:sの長さは1以上の文字列です。

# 入出力の例
| x | result |
|:—————–|——————:|
| “Zbcdefg”| “gfedcbZ”|

# 解説
※解説は私が作成したコードなので、もっといいアルゴリズム等々ありましたら、共有してください!

### 方法1
“`java

class Solution {
public String solution(String s) {
return Stream.of(s.split(“”)) // 文字列を1文字ずつ分割
.sorted(Comparator.reverseOrder()) // 降順にソート

元記事を表示

【アルゴリズム】Xだけ間隔がのあるN個の数字

# 問題説明
メソッドsolutionは整数xと自然数nのパラメータを受け取り、xから初めてxずつ増加する数字をn個もつリストをリターンします。
次の条件を見ていただき、条件を満足させるメソッドsolutionを作成してください。

# 条件
– xは-10000000以上、10000000以下の整数である。
– nは1000以下の自然数である。

# 入出力の例
| x | n | result |
|:—————–|——————:|:——————:|
| 2| 5| [2,4,6,7,10]|
| 4| 3| [4,8,12]|
| -4| 2| [-4,-8]|

# 解説
※解説は私が作成したコードなので、もっといいアルゴリズム等々ありましたら、共有してください!

“`java

class Solution {
public long[] so

元記事を表示

[MyBatis] 1対多の関係にあるテーブルに対する照会クエリをネストされたBeanにマッピングしたい

# 問題

JIRAやRedmineのようなバグトラッキングシステムを例とします。このシステムでは、トピックごとにプロジェクトを作成します。チケットはプロジェクトごとに作成され、利用者はチケットにコメントを付与することができるとします。ER図は以下の通りです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/105859/2f62aef2-095d-c552-f67a-ed1d9c90f556.png)

データについては、次のようになっているとします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/105859/94fe46bc-9827-7e4c-b4dc-0320697de4ec.png)

ここで、プロジェクトとそれにひもづくチケット・コメントをすべて取得することを考えます。クエリを書くことは簡単ですが、`Project.java`というネストされたJava Beanに結果をマッ

元記事を表示

【Effective Javaを読む】 第3章 項目12 『Comparableの実装を検討する』

#Comparableの実装を検討する

他のメソッドとは異なりcompareToメソッドはObjectでは宣言されていません。
正確に言えば、compareToメソッドはComparableインターフェースの唯一のメソッドです。
アルファベット順、数値順、年代順などの明らかに自然な順序を持つ値クラスを書くのであれば、ちょっとの努力で恩恵が受けられるのでComparableを実装しましょう。

##サンプルコード
“`java
public int compareTo(PhoneNumber pn) {
//市外局番を比較する
if (areaCode < pn.areaCode) return -1; if (areaCode > pn.areaCode)
return 1;

//市外局番は等しく、市内局番の前半を比較する
if (prefix < pn.prefix) return -1; if (prefix > pn.prefix)
return 1;

元記事を表示

【Effective Javaを読む】 第3章 項目10 『toStringを常にオーバーライドする』

#toStringを常にオーバーライドする

新しいクラスを作ってtoStringしてみても`”PhoneNumber@163b91″`のような別にもらっても嬉しくない文字列がかえってきます。
toStringに関する一般契約は「簡潔だが、人が読みやすくなっている有益な表現」です。

##サンプルコード
“`java
/**
* この電話番号の文字列表現を返します
* 文字列は14文字で構成されていて、その形式は、”(XXX) YYY-ZZZZ”です。
* XXXは市外局番で、 YYY-ZZZZは市内局番です。
* (各大文字は、1桁の数字を表しています。)
*
* この電話番号の3つの部分のどれかが、そのフィールドを埋めるには
* 桁が少ない場合には、そのフィールドの先頭が0で埋められます。
* たとえば、最後の4桁部分の番号が”123″だとしたら、文字列表現の最後の
* 4文字は”0123″となります。
*
* 市外局番のカッコの後に、市内局番と区切るための空白が一つあることに注意してください。
*/
@Override public String t

元記事を表示

【Effective Javaを読む】 第3章 項目9 『equalsをオーバーライドする時は、常にhashCodeをオーバーライドする』

#equalsをオーバーライドする時は、常にhashCodeをオーバーライドする

equalsをオーバーライドしているすべてのクラスは、一緒にhashCodeもオーバーライドしなければObject.hashCodeの一般契約を破ってしまうよ、というお話

##サンプルコード

以下のコードはequalsはオーバーライドしていますが
hashCodeはオーバーライドしていません

“`java:例1
public final class PhoneNumber {
private final short areaCode;
private final short prefix;
private final short lineNumber;

public PhoneNumber(int areaCode, int prefix,
int lineNumber){
rangeCheck(areaCode, 999, “area code”);
rangeCheck(prefi

元記事を表示

【Java】文字の出現回数を調べる

#目次
– はじめに
– 前提
– 実現したいこと
– やってみたこと
– 問題
– 解決方法
– 実装内容
– 終わりに

##はじめに
ふと、MapとかListとか勉強したい!!と思ったので課題考えて作ってみましたが
MapとListの役割とか変換とかでかなり躓きました。
オンラインで検索してもあんましいいの出てこなかったので、自分なりにまとめたので記事にします。

##前提
– 実現したいこと
– n個の任意の文字列型入力(n_1 n_2 n_3… …n)に対し、最も多く登場した文字列の特定。
– やってみたこと
– Map map = Map();として、[key:入力文字列, value:登場回数]を実装。
– mapを[value]でソートして一番最初の[key]を取り出せばいいじゃん!

– 問題
– Map系[HashMap, LinkedHashMap, TreeMap]は、基本的には要素に順番を持たない。

元記事を表示

eclipseにspring bootとgradleを追加する【初心者がTODOアプリを作るまで#2】

前回の記事はこちら
[Javaの環境構築をしてhelloworldを出力する](https://qiita.com/kty000/items/5c6519d46a9a72b33dd2)

今回はspring bootとgradleを追加してみましょう。

#spring bootってなに?
JavaによるWebアプリケーションの開発を迅速かつ効率的に行う仕組みを備えたフレームワークです。
フレームワークとはプログラミングを効率化するために用意された、プログラムのひな形のようなものです。
要はプログラムを簡単に書くためのヤツです。

#Gradleってなに?
wikiより
>GradleはApache AntやApache Mavenのコンセプトに基づくオープンソースビルド自動化システムであり、プロジェクト設定の宣言にはApache Mavenが利用するXML形式ではなくGroovyベース、もしくはKotlin Scriptベースのドメイン固有言語 (DSL) を採用している

うん。よくわからん。調べたところこちらの記事がとてもわかりやすかったです([Gradle入門](https:/

元記事を表示

igvメモリー設定

### 起こったこと
メモリー積み積みマシーンでメモリー不足エラーでファイルが開けないだと????

## はじめに
DNAやRNAなどの核酸配列を読むマスィーンをシークエンサーを呼ぶ。
この内、10年以上前に実用化された、これまでのサンガーシークエンスなどでは
実現できなかった大量の配列を一気に読めるようになったシークエンサーを次世代シークエンさー、NGSと呼ぶ。
いつまで次世代やってんのというのはあるが、とりあえずNGSと呼ぶのさ。

で、NGSで吐き出された各種の配列情報は、アレヤコレヤの処理を経て、
例えば変異のリストや、例えば遺伝子産物の多寡のリストになっていく。

この中でよく出てくる中間ファイルにbamがある。
これは各種の配列情報に、然るべきアルゴリズムで位置情報を付与した後、
読み込み側道向上のためにバイナリ化したものである。
詳しくはこの辺を読もう。

NGSデータ解析時のファイルのフォーマット (1)

で、特定の遺伝子の、この領域について、アライメント、つまりそれぞれのリードに付与された位置情報を
視覚的に確認したいときには、それ用の

元記事を表示

Javaの環境構築をしてhelloworldを出力する【初心者がTODOアプリを作るまで#1】

java未経験で入社して勉強したことを少しずつ残していきます。アウトプットは大事ですね。
1からTODOアプリを作るところまでをメモしていこうと思いますが、超初心者が作ったなので用語解説など多めです。また、なにかおかしな点などありましたらご指摘いただけますと幸いです。

#1.JDKのインストール

[こちら](https://www.oracle.com/jp/java/technologies/javase-downloads.html)からダウンロードできます。
ダウンロード手順や動作確認などは書かれている記事がたくさんあるのでここでは省略します。

####JDKってなに?
Java Development Kit(ジャヴァ・デベロップメント・キット)の略で、Javaの開発環境。
Javaを作ったり動かしたりするときに必要なあれやこれやが必要になりますが、それらがセットになった開発キットです。

#2.Eclipseのインストール
[こちら](https://www.eclipse.org/downloads/packages/)からダウンロードできます。
こちらも手順等は割

元記事を表示

【Effective Javaを読む】 第3章 項目8 『equalsをオーバーライドする時は一般契約に従う』

#第3章について
第2章はオブジェクトの生成と消滅についてのエッセンスでした。
第3章は「Object」クラスについてのお話です。

##Objectクラスと一般契約
・Objectは具象クラスであるにもかかわらず主に拡張されるために設計されている
・finalでないメソッド(equals, hashCode, toString, clone, finalize)はすべてオーバーライドされるように設計されているので、明示的な一般契約(general contract)を持っている
・オーバーライドするクラスは一般契約に従わないと適切に動作しなくなる

#equalsをオーバーライドする時は一般契約に従う

##equalsメソッドをオーバーライドしてはならない場合
equalsメソッドをオーバーライドするのは簡単ですが、間違った方法でオーバーライドしてしまう場合が多々あるので、次の条件のどれかに当てはまる場合はオーバーライドしないほうがいい。

・クラスの個々のインスタンスが、本質的に一意である場合

・「論理的等価性(logical equality)」検査を、クラスが提供するかどう

元記事を表示

【Effective Javaを読む】 第2章 項目7 『ファイナライザを避ける』

#ファイナライザを避ける
ファイナライザ(finalizer)は、予測不可能で、たいていは危険であり、一般には必要ない。有効な使用方法は多少あるけれども基本的に使わないほうがいい、というお話。

##用語集
###ファイナライザ
finalize()メソッドのこと。
finalize()メソッドは、Java言語におけるすべてのクラスの継承元であるjava.lang.Object クラスに定義されている。
すなわち、すべてのクラスは finalize()メソッドを持つ。
ガベージコレクタが走ったタイミングで呼ばれるメソッド。

###ネイティブピア(native peer)
通常のオブジェクトがネイティブメソッドを通して委譲を行うネイティブオブジェクト。
通常のオブジェクトではないので、ガベージコレクタは感知せず通常のオブジェクトが回収される時にネイティブピアを回収できない。

###ファイナライザ連鎖(finalizer chaining)
クラスがファイナライザを持ちサブクラスがそれをオーバーライドしているならば、そのサブクラスのファイナライザはスーパークラスのファイナライザを手作業

元記事を表示

【Effective Javaを読む】 第2章 項目6 『廃れたオブジェクト参照を取り除く』

#廃れたオブジェクト参照を取り除く
C言語のようにメモリ管理を手動でする言語からすると、ガベージコレクタは魔法のようなものに見えるかもしれない。
しかしそれでもメモリリークを引き起こす原因は存在するから注意しようねって話。

##サンプルコード

“`java:例1
//”メモリリーク”を発見できますか?
public class Stack {
private Object[] elements;
private int size = 0;
private static final int DEFAULT_INITIAL_CAPACITY = 16;

public Stack() {
this.elements = new Object[DEFAULT_INITIAL_CAPACITY];
}

public void push(Object e) {
ensureCapacity();
elements[size++] = e
}

public Object pop

元記事を表示

OTHERカテゴリの最新記事