Java入門・初心者質問スレ Part.8
レス数が1000を超えています。これ以上書き込みはできません。
Java初心者のためのスレッドです。
※前スレ
Java入門・初心者質問スレ Part.7
http://mevius.5ch.net/test/read.cgi/tech/1515549964/
VIPQ2_EXTDAT: checked:vvvvvv:1000:512:----: EXT was configured COBOLと同じ流れっていうのがどういう意味で言ってるのかわからんから答えようがない Javaが採用される理由は下記の通り
1. 既存資産があるから
2. PGの調達が容易で単価も安いから
3. Winで特に支障なくUNIXサーバー向けの開発ができるから
このうち1.はCOBOLと同じだが、あとの2つはCOBOLには当てはまらない COBOL以外覚えられなくてCOBOLにしがみついてるって意味なら当てはまらんなあ
俺の場合は他の言語から入って後からJava書き始めた口だし ステートレスBeanとステートフルBeanの違いがわかりません。
例をあげて違いを明確に教えてください。 ジェネリクスについて質問です
List<HashMap<String, Integer>> 型のリストをソートするためのComparotorクラスって、
class Hoge implements Comparotor<Map <String, Integer>> {}
で良いんですか?
どこかでMap<?, ?>とワイルドカードにしないといけないと見たんですが(うろ覚えです)、特にそうしなくても動くので気になりました 今頃Javaに熱意のあるプログラマーなんて居ないし ステートレスは1回の処理で破棄される
ステートフルは永続性がある
つーか、Javaの質問じゃないわ 該当スレがないので
eclipseからintelij IDEAを試してますが、括弧の中からenterで抜け出せないのが不便過ぎます。
ショートカットは面倒だし、tabキーもsoutなんかの括弧付き定型文では無効。
使ってる人はどう対応してるのか教えてください 括弧の中からenterで抜け出すの意味がよくわからん エンターキーなのに出たいという話は全世界が驚く発言。 こういう事を言ってる?
https://ja.stackoverflow.com/questions/39484/intellijで括弧の中身を入力した後エンターキーで自動でカーソルを括弧の外に移動させたい
でもぱっと見た感じその条件はこれじゃ解決できなさそうやね Enter押すのも→押すのもワンキーなんだから、慣れてるかどうか以外の違いはないんじゃないかと思った。 >>968
そうですね。そのショートカットの他に、()+文字列続けて打ってる場合はtabで抜け出すことができます。
しかしprint()のように()を含む補完だと 中身を書いて抜け出すことができません。 ;打てば抜けられるときあるよな
抜けられないときもあるけど >>972
変化がないってことは変わらず20秒でタイムアウトになるって意味?
あと何が悪いのか分からないと言われても、実際に書いたコードを見せてもらわないことにはどうにもならん >>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秒でタイムアウトになります。 >>974
httpRequest.setConnectTimeout(3 * 60000); // 3 minutes connect timeout
これ入れてもNG? >>975
同じです。そっちのコードも試しました。
5000行くらいだとスムーズに読んでくれるんで、シートをいくつも作ってそこに5000行ずつ分割した上で読んだりしてるんですけど、
すごく手間だし、シートのある列がどこまで埋まってるか知りたいなんて時はそういうこともできないので困ってます。 >>976
携帯だから試せないけど、>>974のコードに>>975のを加えて両方書いてもダメ? >>977
private static HttpRequestInitializer setTimeout(final HttpRequestInitializer initializer) {
return request -> {
initializer.initialize(request);
request.setConnectTimeout(60000);
request.setReadTimeout(60000);
};
これでやってみたけどダメでした。 >>966
Return と書いてあるシールでも貼っときなさい。 >>980
リターンキーは左下に行くという意味で、戻るわけではありません。 >>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のオプション指定したりとか試してみてはどうだろ まだ解決してないならタイムアウトしてる部分のソース見るのが一番早いかな >>982
コードまで書いてもらってありがとうございます。朝一で試してみたんですが、残念ながら変わりませんでした。
ともあれありがとうございました。 >>984
タイムアウトで例外投げられてるなら
スタックトレース出力されてない?
スタックトレースを見ればどのオブジェクトが関わってるか
わかるんじゃないかな
それ貼ってもらえれば >>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) これで全部ではなくて、まだもう半分あるんですが、書き込もうとしたらNGワード禁止と言われて書き込めませんでした。 一番下から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) 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秒で読んでしまうので、さすがに嘘だろうと思って、読み込んだ文字列をファイルに書き出してみたんですが、
確かに読めているみたいです。実際のところこれまで何十秒もかかっていた読み込みが、これでそんな短時間になるというのはちょっと理解不能です。 最初のコードと比べるとHttpRequestInitializerをnewしてるところが違うように見えるな えー皆さん大変申し訳ありません。>>989は間違いです。
ついでに最初に出したstackoverflowのコードはちゃんと動きます。
呼び出し側の自分のコードが原因でした。すごく馬鹿な間違いをしてまして、恥ずかしくて書けないような初歩的なミスでした。
ごめんなさい。 Arrays.streamにchar[]が無いのってオラクルの嫌がらせか何かですか? canvasのハックの仕方を教えてください
判断するための状態を読み取りたいです printwriterで最後の数行が書き込まれなくて困ってたけどclose()する前にflush()したら解決した
こういうこともあるのか >>996
closeするときにflushを呼ばない行儀の悪いクラスを
PrintWriterでラッピングしてしまったのね
なんてクラスよ、晒しちゃいなよ! メッセージって業務クラスにベタ書きする?普通
メッセージのプロパティかそれ用のクラスにまとめるでしょ??
業務クラスにべた書きってありえなくないですか? このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 275日 3時間 42分 40秒 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php レス数が1000を超えています。これ以上書き込みはできません。