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

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

Tomcat + WebSocket で 1002 エラー

#結論

WebSocket で 1002エラーが発生するとサーバー側でエラーが発生している可能性が高い。

#経緯

JavaScript に限らないが、WebSocket プログラミングでサーバーから 1002 のエラーコードが返ることがある。

“`javascript

ws.onclose = function(event) {
if (event.wasClean) {
alert(“[close] Connection closed cleanly”);
} else {
console.log(“[close] Connection died ” + event.code + “,” + event.reason);
}
};

“`

“`
[close] Connection died 1002,An unrecoverable IOException occurred so the connection was closed
“`

しかしサーバー側(Tomcat 8.5) のコンソールを見ても何も表示され

元記事を表示

Spring Boot + Spring SecurityでRequestのBodyを複数回読み取る方法

# はじめに
Spring Securityの認可処理(投票クラスなど)において、
RequestのBodyを参照しなければならないケースが存在すると思います。
(例 POSTやPUTでDBを更新する場合など

しかし、HttpServletRequestクラスにおいて、
Bodyはストリームであり、読み取りは一度きりとなります。

そこで今回はBodyを複数回読み取る方法を紹介していきます。

## やりたいこと
①Bodyから読み取った情報を保持
②Bodyの取得元を①の情報へと差替え

## 差替え用クラスの準備
Streamクラス
HttpServletRequest.getInputStream()コール時の戻り値の型とし、
初期化にはbyte配列を使用

“`java:BufferedServletInputStream.java
public class BufferedServletInputStream extends ServletInputStream {

private ByteArrayInputStream inputStream;

// byte

元記事を表示

Java ArrayListを配列に変換する

#ArrayListを配列に変換する方法と注意点

“`java:ListToArray.java
//ArrayList生成
ArrayList arrayList = new ArrayList();
arrayList.add(“A”);
arrayList.add(“B”);
arrayList.add(“C”);

String[] array = (String[])arrayList.toArray();

System.out.println(“ArrayList = ” + arrayList.toString());
System.out.println(“配列 = ” + Arrays.toString(array));
“`
##結果(NG)
“`
Exception in thread “main” java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;
“`
##なぜか
返すクラスを取得してみる

`

元記事を表示

【わかりやすく解説‼】Javaのポリモーフィズムの使い方

## 1.事前知識
– [【最新】UbuntuでJavaの環境を構築する方法](https://qiita.com/ryome/items/37c53e9638a9c6ea146a)

– [【初心者でもできる‼】Windows10にJava環境を作る方法(JDK14.0.1)](https://qiita.com/ryome/items/30135570954e36196821)

– [【わかりやすく解説‼】Javaのインスタンスの使い方](https://qiita.com/ryome/items/62ba0d8395af6698053a)

– [【初心者でもできる‼】Windows10にEclipseをインストールする方法(Java環境構築)](https://qiita.com/ryome/items/b47c5acdaa52cffbec58)

– [【わかりやすく解説‼】Javaのカプセル化の使い方](https://qiita.com/ryome/items/fc44dfad297b35bf7559)

– [【わかりやすく解説‼】Javaの継承の使い方【オーバーライ

元記事を表示

【JSP+Servlet入門】ちょっとアニメーション♬

今回は、「JSP+Servletでアニメーションしたい」を実現してみました。それなりですが、localで動かしているうちはpythonの方が簡単だし、そもそもjsで行けるじゃんが結論ですが、一応いろいろ遊んだので記録しておきます。
今回の参考は以下のとおりです。
【参考】
①[js_arrays@JS Tutorial@w3schools.com](https://www.w3schools.com/js/js_arrays.asp)
②[element.style.position – 表示位置設定@JavaScriptist](http://javascriptist.net/ref/element.style.position.html)
③[一定時間で画像を切り換える@JSすぐに使えるサンプル集](http://www.shurey.com/js/samples/3_img8.html)
④[JSPでの画像ファイル表示](https://oshiete.goo.ne.jp/qa/2419455.html)
###やったこと
・指定した画像を表示する
・アニメーション
###・指

元記事を表示

javaで他のクラスのメソッド呼び出すとis not visibleが出る原因

アクセス修飾子が

“`java

private
“`
になってるんジャマイカ?

元記事を表示

使用fernflower反编译JAR包

垃圾jd-gui,天天崩溃,不然就是反编译出错,找了下直接用fernflower。

从这里下载:http://files.minecraftforge.net/maven/net/minecraftforge/fernflower/

然后执行命令

“`bash
java -jar -dgs=1 fernflower-390.jar jdbc.jar ./src/
“`

反编译后的代码会在当前src目录下,重命名为zip解压就行了。

元記事を表示

JUnitで外部ライブラリを使用せずテストダブルを実装する

# テストダブルとは
演者の代役や影武者を意味する英単語 “double” から派生した言葉。
一般的にはモック、スタブと呼ばれる。

## なぜテストダブルを使用するのか

システムの単体テストにおいて、テスト対象が
他のクラスや外部要素に依存していないケースはほとんどない。
依存関係のあるテストは、対象だけでなく、その依存対象についてもテストしたことになる。

メリットとしては、よりシステム稼動時と同じ状態でテストが行われるため、
テスト結果が保証する内容の価値が上がるという側面がある。
一方のデメリットとしては、テスト失敗時に原因分析の範囲が広くなる、
依存対象の処理結果が予想できない場合は検証の精度が落ちるといった側面がある。

上記のデメリットに対する対策として、テストに対して影響を与える要素の代わりに
テストしやすい代役を立てて、テストの独立性を高めるという方法がある。
これらを実現するのが、スタブやモック(テストダブル)の使用である。

## スタブとモックの違い

両者とも、テスト対象が依存するクラスやモジュールの代用として使用する
クラスやモジュールという点では違いが

元記事を表示

Ruby と Perl と Java で解く AtCoder ABC 111 C

# はじめに
*[AtCoder Problems](https://kenkoooo.com/atcoder/#/)* の Recommendation を利用して、過去の問題を解いています。
AtCoder さん、AtCoder Problems さん、ありがとうございます。
# 今回のお題
*[AtCoder Beginner Contest 111 C – /\/\/\/](https://atcoder.jp/contests/abc111/tasks/arc103_a)*
Difficulty: 822

今回のテーマ、ハッシュのソート
# Ruby
重複した要素、とくればハッシュですよね。
解法は前回の、*[Ruby と Perl と Java で解く AtCoder ABC 113 C](https://qiita.com/superrino130/items/21111248bb21a4dac0b2)* に似た問題です。

“`ruby.rb
n = gets.to_i
v = gets.split.map(&:

元記事を表示

Java配列を宣言・初期化する

#配列を宣言する
・データ型を定義する
・変数名を定義する

“`java
//データ型=String、変数名=array
String[] array;
“`

#配列を初期化する
・要素数を定義する

“`java
//要素数=3
String[] array = new String[3];
“`

#配列を要素にデータを詰めて初期化する
・要素数の定義は不要
・データ型に一致する要素を定義する

“`java
//要素0=”a”、要素1=”b”、要素2=”c”
String[] array = {“a”,”b”,”c”};
“`

元記事を表示

如何先开始写出一个程序

#谈谈写出一个方案。
如果你最近一直在做程序,而你认为
我在初中时接触的第一个节目,是我在初中时接触的第一个节目
是N80-BASIC。
我还记得,但下面这句话完全在我的脑海里。

“`N88-BASIC
N88-BASIC

WIDTH 80,25.
CONSOLE 0,25,0,1
LOCATE 0,0
PRINT “HELLO WORLD”
宽80,25
“`

当然,那时,我只是打出了这样的代码。
解释器只显示了一个无机游标。
我找不到任何帮助。

可以这么说,写出一个程序是
今天还是这个样子,他真的是个无精打采的家伙。

那么,这就是今天的话题。
这要从一种新的编程语言、开发环境说起。
所以,节目先生,好像是在问候。
问候是很重要的。

不仅仅是在编程世界,在现实世界中也是如此。
如果一个问候语被理解了,对方就会以某种方式和你交谈。

哪怕你只是在不了解情况的情况下走到他们面前,也是如此。
那你会得到的,是一脸疑惑的表情,或者是一种
最坏的情况下,他们只是送你回去走人。

#过去的故事D,扯远了一点
我第一次去大学毕业旅行的时候,在美国的机场转机。
我把车票放在了我的行李

元記事を表示

How do I start writing out my program?

#Talk about writing out a program.

Talk about writing out my first program.
When I was a junior high school student, the first program I touched was N80-BASIC.
I won’t forget the starting cord, I still remember it, the following sentence was completely in my head.

“`Z80
N88-BASIC

WIDTH 80,25.
CONSOLE 0,25,0,1
LOCATE 0,0
PRINT “HELLO WORLD”
“`

Of course, in the old days of computer screens, there was nothing but a useless, inorganic cursor.

Writing out programs is still the same, and comp

元記事を表示

新人がAndroidのビューってものをまとめてみる(初心者Androidアプリ開発)

## はじめに

「[Androidアプリ開発の教科書](https://www.amazon.co.jp/%E5%9F%BA%E7%A4%8E%EF%BC%86%E5%BF%9C%E7%94%A8%E5%8A%9B%E3%82%92%E3%81%97%E3%81%A3%E3%81%8B%E3%82%8A%E8%82%B2%E6%88%90%EF%BC%81-Android%E3%82%A2%E3%83%97%E3%83%AA%E9%96%8B%E7%99%BA%E3%81%AE%E6%95%99%E7%A7%91%E6%9B%B8-%E3%81%AA%E3%82%93%E3%81%A1%E3%82%83%E3%81%A3%E3%81%A6%E9%96%8B%E7%99%BA%E8%80%85%E3%81%AB%E3%81%AA%E3%82%89%E3%81%AA%E3%81%84%E3%81%9F%E3%82%81%E3%81%AE%E5%AE%9F%E8%B7%B5%E3%83%8F%E3%83%B3%E3%82%BA%E3%82%AA%E3%83%B3-WINGS%E3%8

元記事を表示

AWS X-RayをJavaで色々動かして試してみる

# 前提条件
X-Ray初心者向け。なんとなくは知ってるけど、具体的に何がどこまでできて、どうやって実装するかを色々試してみながら確認した記事。

環境としては、Spring Boot+MavenでWebアプリを実装している。依存関係の解決方法以外はGradleも同じはず。

# X-RayのDockerコンテナイメージを作る。
まずは、適当なEC2とかでコンテナイメージを作る。
今回は、AWSのサンプルをベースに作ってみよう。

“`
$ git clone https://github.com/aws-samples/aws-xray-fargate
“`

buildspec.yml に書いてあるコマンドを、実行していってみる。

“`
$ aws ecr get-login –no-include-email –region ap-northeast-1
“`

でログイン情報を取得後、実行。“`ap-northeast-1“`は利用しているリージョンを指定する。

“`
$ docker build -t xray:latest .
“`

作ったコンテ

元記事を表示

Java memo

##Bean
Beanクラスの最低限の定義
・publicで引数なしのコンストラクタが必要
・メソッドの命名規則に従わなくてはならない(getter/setterメソッドが必要など)
・シリアライズ可能でなくてはならない
 Serializableインターフェースが必要
 private static final long serialVersionUID = 1L;

## -Xms, -Xmxx
`JAVA_OPTIONS=${JAVA_OPTIONS}” -Xms512m -Xmx4096m”`

-Xmx:ヒープ全体の最大値。1MB より大きい 1024 の倍数に設定する
-Xms:ヒープ全体の最小値、一般的にXmxと同じにする。1MB より大きい 1024 の倍数に設定する。

512mのmはMB (メガバイト) を意味する。

##Mockito
Mockito.when(クラス名.メソッド名(引数)).thenReturn(戻り値);
Mockito.doReturn(戻り値).when(クラス名).メソッド名(引数);

元記事を表示

Spring memo

###@Transactional

■ readOnly=true
正確にトランザクションを管理したい場合(trueの場合は更新させないようにしたい場合)は
enforceReadOnlyの設定が必要。(新しいSpringから必要になったそう。)
ただ、enforceReadOnlyの設定をしない場合でも
・FLUSHがNAVERになる
・entityのトラッキングをしなくなる
という効果はあるので、読取り系につける意味はある。

元記事を表示

二番煎じ:JavaでIf式をしてみる

「[JavaでIf式をしてみる](https://qiita.com/ishibashi-futoshi/items/85aa192d2ec0a97e0342)」の二番煎じ。

## 実現できること

例えば FizzBuzz を次のように書ける。

“`Java
public static void main(String… args) {
for (int i = 1; i <= 100; ++i) { int count = i; String fizzBuzzed = If.test(() -> count % 15 == 0).then(() -> “FizzBuzz”)
.elif(() -> count % 3 == 0).then(() -> “Fizz”)
.elif(() -> count % 5 == 0).then(() -> “Buzz”)

元記事を表示

コンストラクタの勉強をした(java)

コンストラクタの勉強をしたかったので、ググって(ググる:”Google で検索する” の意。Google で無くとも使う)コードを引っ張ってきた。

“`java:ctest7.java
class ctest7{
public static void main(String args[]){
Television tv1 = new Television();

tv1.dispChannel();
}
}

class Television{
private int channelNo;
private String housouKyoku;

public void setChannel(int newChannelNo){
channelNo = newChannelNo;
if (channelNo == 1){
housouKyoku = “FujiTV”;
}else if (channelNo == 3){
housouKyoku = “NHK”;
}
}

publi

元記事を表示

DNAの記号をランダムに表示

public class Main {
public static void main(String[] args) {
int [] seq = new int [10];
//配列をランダムに生成
for (int i = 0; i < seq.length; i++) { seq[i] = new java.util.Random().nextInt(4); } //記号を表示 for (int i = 0; i < seq.length; i++) { switch (seq[i]) { case 0: System.out.print("A"); break; case 1: System.out.print("T"); break; ca

元記事を表示

コンストラクタ(java) の使い方の勉強

コンストラクタの使い方がわからん。勉強だ。

[知ってること]
・名前はクラス名と同じ
・何かを初期化する役割(何をかはぼんやりとしかわかってない)
・super は親クラスのコンストラクタを呼び出す
・this は自身のクラスのコンストラクタを呼びだす
・引数と同じ名前の変数を使うときに“`this.str = str“` (左のstr はいま定義したもの、右側のstr はメソッドの引数)

[わからないこと]
・コンストラクタの使いみち
・記述方法


[調べてわかったこと]
・コンストラクタは、クラスの
・戻り値は設定できない
・引数は設定できる
・メンバ変数(クラス内でメソッド外の変数のこと)の初期化をする

“`java:sample.java
public class sample{
int num; // ←これ
String name; // ←これも
public sample_method(){
~~~~
~~~~
}
}
“`

こんな感じかなあ。次はコードを書いて、具体的に実装の

元記事を表示

OTHERカテゴリの最新記事