X



Java入門・初心者質問スレ Part.8
レス数が1000を超えています。これ以上書き込みはできません。
0957デフォルトの名無しさん (アウアウカー Sac9-vmDF [182.251.121.40])垢版2019/02/11(月) 15:48:11.98ID:Xld2ZNBKa
ステートレスBeanとステートフルBeanの違いがわかりません。
例をあげて違いを明確に教えてください。
0958デフォルトの名無しさん (アウアウウー Sa21-vi3K [106.133.133.21])垢版2019/02/12(火) 17:48:15.62ID:jZrUzxgNa
ジェネリクスについて質問です
List<HashMap<String, Integer>> 型のリストをソートするためのComparotorクラスって、
class Hoge implements Comparotor<Map <String, Integer>> {}
で良いんですか?
どこかでMap<?, ?>とワイルドカードにしないといけないと見たんですが(うろ覚えです)、特にそうしなくても動くので気になりました
0959デフォルトの名無しさん (ワッチョイ 23da-TVoh [125.205.113.65])垢版2019/02/16(土) 08:20:41.88ID:fTKLBuzC0
ここってちょっと難しい質問だとレス止まるな。
0963デフォルトの名無しさん (アウアウウー Sa29-seqz [106.133.47.101])垢版2019/02/20(水) 16:36:06.49ID:4EtSY22fa
括弧の中からenterで抜け出すの意味がよくわからん
0966デフォルトの名無しさん (アウアウクー MMc1-3QuV [36.11.224.180 [上級国民]])垢版2019/02/20(水) 20:21:31.82ID:EKI9LXSlM
エンターキーなのに出たいという話は全世界が驚く発言。
0969デフォルトの名無しさん (ワッチョイ 9b66-seqz [183.77.160.220])垢版2019/02/20(水) 22:50:23.64ID:V5pUCRq30
Enter押すのも→押すのもワンキーなんだから、慣れてるかどうか以外の違いはないんじゃないかと思った。
0971デフォルトの名無しさん (ワッチョイ d91f-qoYU [220.144.96.191])垢版2019/02/21(木) 05:41:02.41ID:jvb9Tzci0
;打てば抜けられるときあるよな
抜けられないときもあるけど
0972デフォルトの名無しさん (ワッチョイ 49e9-dS/9 [222.15.235.177])垢版2019/02/21(木) 17:34:53.91ID:SR0wFFcv0
グーグルのスプレッドシートをAPIとjavaで読み書きしてるのですが、
シートの行数が2万行とか3万行になると、読み込みに時間がかかって Timeout 例外になります。
ググってその対処法を見つけたんですが、ちゃんと動作してくれません。何が悪いのか分かりませんか?
デフォルトのタイムアウトは20秒くらいで、60秒くらいに設定しても変化ありません。

https://stackoverflow.com/questions/46999143/how-to-set-timeout-for-google-client-spreadsheet-api

こっちも参考になるかもしれません。
https://stackoverflow.com/questions/29518231/sockettimeoutexception-read-timed-out-on-insert-to-google-drive-is-it-retryab
https://developers.google.com/api-client-library/java/google-api-java-client/errors
0974デフォルトの名無しさん (ワッチョイ 49e9-dS/9 [222.15.235.177])垢版2019/02/21(木) 19:39:21.87ID:SR0wFFcv0
>>973
自分のコードはこんな感じです。

private static final JsonFactory JSON_FACTORY = JacksonFactory.getDefaultInstance();

public static Sheets getSheetsService() throws IOException, GeneralSecurityException {
final NetHttpTransport HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport();

return new Sheets.Builder(HTTP_TRANSPORT, JSON_FACTORY, setTimeout(getCredentials(HTTP_TRANSPORT)))
.setApplicationName(APPLICATION_NAME)
.build();
}

private static HttpRequestInitializer setTimeout(final HttpRequestInitializer initializer) {
return request -> {
initializer.initialize(request);
request.setReadTimeout(60000);
};
}

デバッガでトレースしてもラムダ式の中のコードが実行されないし、相変わらず20秒でタイムアウトになります。
0975デフォルトの名無しさん (ワッチョイ fb01-YmSR [111.90.27.175])垢版2019/02/21(木) 19:42:18.83ID:fprmeCB00
>>974
httpRequest.setConnectTimeout(3 * 60000); // 3 minutes connect timeout
これ入れてもNG?
0976デフォルトの名無しさん (ワッチョイ 49e9-dS/9 [222.15.235.177])垢版2019/02/21(木) 19:46:38.87ID:SR0wFFcv0
>>975
同じです。そっちのコードも試しました。

5000行くらいだとスムーズに読んでくれるんで、シートをいくつも作ってそこに5000行ずつ分割した上で読んだりしてるんですけど、
すごく手間だし、シートのある列がどこまで埋まってるか知りたいなんて時はそういうこともできないので困ってます。
0980デフォルトの名無しさん (ワッチョイ fb02-LfKm [175.134.57.7])垢版2019/02/21(木) 21:19:34.16ID:Neuw5rL80
>>966
Return と書いてあるシールでも貼っときなさい。
0981デフォルトの名無しさん (ワッチョイ f15f-qM0Q [106.72.163.96 [上級国民]])垢版2019/02/21(木) 21:27:18.64ID:lsmx9sV60
>>980
リターンキーは左下に行くという意味で、戻るわけではありません。
0982デフォルトの名無しさん (ワッチョイ fb01-YmSR [111.90.27.175])垢版2019/02/21(木) 23:33:38.23ID:fprmeCB00
>>979
ちょっと覗いてみたけど

NetHttpTransport.buildRequest
  ・ConnectionFactoryでconnectionを作成
  ・NetHttpRequestを作成
    # setTimeoutがあるけど呼び方がわからぬ

って感じだった
HttpRequestInitializerを呼び出すのはHttpTransportだと思うんだけど
どこで呼び出してるのかよくわからんかった

ConnectionFactoryを指定してみたりとか

final NetHttpTransport HTTP_TRANSPORT = new NetHttpTransport.Builder()
    .trustCertificates(GoogleUtils.getCertificateTrustStore())
    .setConnectionFactory(new DefaultConnectionFactory() {
      @Override
      public HttpURLConnection openConnection(URL url) throws IOException {
        HttpURLConnection con = super.openConnection(url);
        con.setReadTimeout(1000000);
        con.setConnectTimeout(1000000);
        return con;
      }
    })
    .build();

JVMの設定を入れてみたりとか
System.setProperty("sun.net.client.defaultConnectTimeout", "100000");
System.setProperty("sun.net.client.defaultReadTimeout", "100000");

Javaの起動時にJVMのオプション指定したりとか試してみてはどうだろ
0986デフォルトの名無しさん (ワッチョイ 49e9-dS/9 [222.15.235.177])垢版2019/02/22(金) 12:29:35.43ID:2zA+k7LF0
>>985
エラーはこんなのが出ます。

Exception in thread "main" java.net.SocketTimeoutException: Read timed out
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
at java.net.SocketInputStream.read(SocketInputStream.java:171)
at java.net.SocketInputStream.read(SocketInputStream.java:141)
at sun.security.ssl.InputRecord.readFully(InputRecord.java:465)
at sun.security.ssl.InputRecord.read(InputRecord.java:503)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:983)
at sun.security.ssl.SSLSocketImpl.readDataRecord(SSLSocketImpl.java:940)
at sun.security.ssl.AppInputStream.read(AppInputStream.java:105)
0988デフォルトの名無しさん (ワッチョイ 49e9-dS/9 [222.15.235.177])垢版2019/02/22(金) 12:45:13.44ID:2zA+k7LF0
一番下から1行ずつ消しながら書き込めないかやってみます。

at java.io.BufferedInputStream.fill(BufferedInputStream.java:246)
at java.io.BufferedInputStream.read1(BufferedInputStream.java:286)
at java.io.BufferedInputStream.read(BufferedInputStream.java:345)
at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:735)
at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:678)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1587)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1492)
at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:480)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:347)
at com.google.api.client.http.javanet.NetHttpResponse.<init>(NetHttpResponse.java:37)
at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:105)
at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:981)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:419)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:352)
0989デフォルトの名無しさん (ワッチョイ 49e9-dS/9 [222.15.235.177])垢版2019/02/22(金) 21:43:24.52ID:2zA+k7LF0
HttpRequestInitializer をググってたらこういうページに行き当たりまして、
https://developers.google.com/api-client-library/java/google-http-java-client/reference/1.19.0/com/google/api/client/http/HttpRequestInitializer
そこに書いてあった DisableTimeout というクラスを組み込んでみたんですが、今のところ動作してるみたいです。

public static Sheets getSheetsService() throws IOException, GeneralSecurityException {

class DisableTimeout implements HttpRequestInitializer {
public void initialize(HttpRequest request) throws IOException {
request.setConnectTimeout(0);
request.setReadTimeout(0);
}
}

final NetHttpTransport HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport();

return new Sheets.Builder(HTTP_TRANSPORT, JSON_FACTORY, new DisableTimeout())
.setApplicationName(APPLICATION_NAME)
.build();
}

これで35,000行のファイルを2、3秒で読んでしまうので、さすがに嘘だろうと思って、読み込んだ文字列をファイルに書き出してみたんですが、
確かに読めているみたいです。実際のところこれまで何十秒もかかっていた読み込みが、これでそんな短時間になるというのはちょっと理解不能です。
0991デフォルトの名無しさん (ワッチョイ 49e9-dS/9 [222.15.235.177])垢版2019/02/23(土) 14:33:18.47ID:jlfdOyKu0
えー皆さん大変申し訳ありません。>>989は間違いです。
ついでに最初に出したstackoverflowのコードはちゃんと動きます。
呼び出し側の自分のコードが原因でした。すごく馬鹿な間違いをしてまして、恥ずかしくて書けないような初歩的なミスでした。
ごめんなさい。
0993デフォルトの名無しさん (スップ Sd43-D9V0 [49.97.99.99])垢版2019/02/28(木) 16:44:17.92ID:imPJLa31d
Arrays.streamにchar[]が無いのってオラクルの嫌がらせか何かですか?
0994デフォルトの名無しさん (ワッチョイ 451f-iopr [220.144.96.191])垢版2019/03/02(土) 03:41:49.15ID:V02tz52S0
あ、valueOfしてcharsでいいのか
0997デフォルトの名無しさん (ワッチョイ ce01-WpCY [111.90.6.216])垢版2019/03/09(土) 19:55:15.69ID:ACok0wnJ0
>>996
closeするときにflushを呼ばない行儀の悪いクラスを
PrintWriterでラッピングしてしまったのね
なんてクラスよ、晒しちゃいなよ!
0999デフォルトの名無しさん (ワッチョイ ce01-WpCY [111.90.6.216])垢版2019/03/09(土) 23:57:52.40ID:ACok0wnJ0
ケースバイケース
10011001垢版Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 275日 3時間 42分 40秒
10021002垢版Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。

ニューススポーツなんでも実況