Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
通常、なんの考えも無しにプログラムがファイルに書きこみを行った後、運悪くシステムがクラッシュするとファイルが失われる可能性がある。通常のファイル書き込みはファイルに書き込んでいるように見えて実はバッファがメモリ上に蓄えているだけだからだ。このメモリ上に蓄えられた、いずれストレージに書き込むデータのことをダーティページと言う。何もしなくてもダーティページに書きこまれたデータはカーネルが定期的にストレージに書き込むのだが、若干のタイムラグがある。この間にクラッシュするとデータが失われるわけだ。データが書き込んだ直後、すぐストレージに書き出したい場合は fsync システムコールを呼ぶ必要がある。 C や C++ といった低レイヤーを扱う言語なら fsync を呼ぶだけで良いが、Java のような高級言語でどうやって fsync を発動させればよいか。 通常のファイル書き込み 下記のような一般的
これはJavaアドベントカレンダー2014の12/16分の記事です。 昨日はgrimroseさんの、[書評] Gradle徹底入門 でした。 明日は@com4dcさんの、はじめて触るStreamの世界 です。 自分はJavaのテストフレームワークである、lambda-behaveについて紹介します。 自分は普段はRailsでの開発を行っているのですが、現場では主にRSpecを使ってテストを記述しています。RSpecでのテストは以下のような感じです。 describe 'Sample' do context 'hogeメソッドについて' do it 'fugaを返すこと' do Sample.hoge.should == "fuga" end end end RSpecでは上記のようにDSLを使って、なにをテストしているかを構造的に記述することができます。 lambda-behaveを使うと
/* * Copyright (c) 2001, 2013, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Class
この記事は Java Advent Calendar 2014、8 日目です。昨日は @d7kuro さんの「Apache Camelに関する機能のまとめ」です。 Java で日付と時刻を扱う場合は Date and Time API を使います。過去の Java (Java 7 および Java 6)には同 API が含まれていないため、同等品の ThreeTen backport を別途用意します。ThreeTen backport さえ使えない Java は、古すぎるのでもう使わないでください。 Date and Time API には多数のクラスが含まれていますが、とりあえず LocalDate、LocalTime、LocalDateTime、DateTimeFormatter を覚えておけば良いです。「LocalDateTime には時差の情報がないから通常は ZonedDate
About ThreeTen-Backport provides a backport of the Java SE 8 date-time classes to Java SE 6 and 7. The backport is NOT an implementation of JSR-310, as that would require jumping through lots of unnecessary hoops. Instead, this is a simple backport intended to allow users to quickly use the JSR-310 API on Java SE 6 and 7. The backport should be referred to using the “ThreeTen” name. The backport i
文字列の配列やリストを[〜]で囲ってカンマで区切って連結するという話、String.joinだとどう?とwatermintさんから指摘があったので、試してみました。 シンプル! public static String stringJoin(){ return "[" + String.join("],[", strarray) + "]"; } でも、1847msでした。改めて前後の文字を文字列連結してるところで時間かかってる感じ。 で、昨日のStringBuilder版はもう少し最適化できるので書き直します。 public static String stringBuilderJoin(){ StringBuilder s = new StringBuilder("["); for(int i = 0; i < strarray.length; ++i){ if(i != 0){ s.
渡辺です。 今日もJavaとAWSでの小ネタです。 AWSではELBを利用することで簡単に冗長化や負荷分散の構成を作ることができます。 しかし、ELBを前段に置くため、リクエスト元のIPアドレスでアクセスを拒否したりと、アクセス元IPアドレスを判定してなんらかの処理を行いたい場合、リクエスト元IPアドレスがELBのIPアドレスとなってしまいます。 ApacheやNginxの設定などでは、検索してみればリクエストの「X-Forwarded-For」を参照すれば良いと多くの情報がヒットするでしょう。 今回は、Servletで行う場合の方法を紹介します。 ServletRequest#getRemoteAddr - Servletでリクエスト元のIPアドレスを取得する ELBを経由しない場合など、直接アクセスされる場合は、ServletRequestクラスのgetRemoteAddrメソッドを利
Vitess is a cloud-native horizontally-scalable distributed database system that is built around MySQL. Vitess can achieve unlimited scaling through generalized sharding. Vitess allows application code and database queries to remain agnostic to the distribution of data onto multiple database servers. With Vitess, you can even split and merge shards as your needs grow, with an atomic cutover step th
__________ _____ __ .__ \______ \ ____ ____ ____ /\ / \ _____ | | _|__| ____ ____ | | _// _ \ / _ \ / \ \/ / \ / \\__ \ | |/ / |/ \ / ___\ | | ( <_> | <_> ) | \ /\ / Y \/ __ \| <| | | \/ /_/ > |______ /\____/ \____/|___| / \/ \____|__ (____ /__|_ \__|___| /\___ / \/ \/ \/ \/ \/ \//_____/ ____. ___________ _____ ______________.___. | |____ ___ _______ \_ _____/ / _ \ / _____/\__ | | | \__ \\ \/ /\_
Overview ContiPerf is a lightweight testing utility that enables the user to easily leverage JUnit 4 test cases as performance tests e.g. for continuous performance testing. It is inspired by JUnit 4's easy test configuration with annotations and by JUnitPerf's idea of wrapping Unit tests for performance testing, but more powerful and easier to use: Using Java annotations for defining test executi
Java 8で追加された java.util.concurrent.locks.StampedLock 同期プリミティブについてメモ。 まとめ: StampedLockクラスは、「楽観的(optimistic)Read操作」および「ロック昇格(upgrade lock)」を追加サポートしたReader-Writerロックとして機能する。 注意:StampedLockは再入可能でない(non-reentrant)。また悲観的Readロック/WriteロックLockインタフェースからの条件変数Condition取り出しはサポートしない。 楽観的Read操作(ロックフリーRead操作) Java 5で導入されたReader-WriterロックReentrantReadWriteLockクラスは、悲観的(pessimistic) Readロック/Writeロック操作のみを提供する。悲観的ロック操作
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く