Java / 応用

【Java】 Java で、シリアル番号生成を考える

はじめに * Java で、シリアル番号生成を考えていたら、以下のサイトを見つけたので参考にして実装してみる http://www.venishjoe.net/2009/08/basic-serial-key-generation-module-in.html 参考:シリアル番号に関わるトラブル http://www.barcode-net.com/…

【Java】 IPアドレスからホスト名を取得

■ IPアドレスからホスト名を取得 * InetAddress.getByName() / InetAddress.getLocalHost() を使用する ■ 注意 * InetAddress.getByName("localhost") / InetAddress.getByName("127.0.0.1") / InetAddress.getLocalHost() で動作が異なるので、注意!!(以下…

【Java】 Java で、 Email を送るには... [3] ~ SMTP認証編 ~

■ はじめに https://blogs.yahoo.co.jp/dk521123/36230453.html https://blogs.yahoo.co.jp/dk521123/36230816.html の続き。 今度は、SMTP認証に対応する。 ■ ポイント * Sessionを作る際に、違いがある SMTP認証なし Properties props = new Properties();…

【Java】 外部プログラム/コマンド実行でタイムアウト設定するには...

はじめに http://blogs.yahoo.co.jp/dk521123/34842155.html で、 外部プログラム/コマンドを実行する事を行ったが、 もし、その処理が重く時間が掛かる場合、タイムアウトを設定して中断することも考えなくてはならない。 そこで、今回は、タイムアウト処理…

【Java】正規表現 [3] 数字/文字の出現回数を数える ~Matcher.find() ~

はじめに * パスワードの強度を測るのに、数字/文字の出現回数を数えることがある それを正規表現を使って実現する サンプル NumericCountValidator.java /** Rule:数字がX個あるか */ public class NumericCountValidator extends RuleAbstract { public s…

【Java】 セキュアなランダム文字列生成を考える

セキュアなランダム文字列生成を考える => 通常、java.util.Randomを利用すると思うが、偏りや再現性があるそうなので セキュアなランダム文字列生成することを考える 実装案 (1) java.util.UUID.randomUUID()を使用する => 一意のランダムを生成する (2) ja…

【Java】SocketChannel / ServerSocketChannel ~ノンブロッキングモード編~

サンプル サーバ側 * 実行しておく NioServer.java import java.nio.channels.ServerSocketChannel; import java.nio.channels.SocketChannel; import java.nio.channels.Selector; import java.nio.channels.SelectionKey; import java.nio.ByteBuffer; imp…

【Java】 簡単なチャットツールを作成する

■ サンプル クライアントサイド ChatClient.java import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.Socket; public class ChatClient { // ホスト名 private static final String HOST_NAME …

【Java】 JSSE (Java Secure Socket Extention)

JSSEとは * SSLクライアントおよびサーバが使用するSSLプロトコルを扱うための標準API 主なパッケージ構成 [1] javax.net.ssl => JSSE APIのコアクラスとインターフェイスセットが含まれる [2] javax.security.cert => 基本的な証明書の管理機能をサポート …

【Java】ノンブロッキングチャネル の SSL接続

* 調査中 * SSLEngine を使用する必要があるらしい 参考文献 http://e-class.center.yuge.ac.jp/jdk_docs/ja/technotes/guides/security/jsse/JSSERefGuide.html#SSLSocket http://cs.fit.edu/~ryan/java/programs/nio/sun_servers/ChannelIOSecure.java htt…

【Java】SocketChannel / ServerSocketChannel ~ブロッキングモード編~

ブロッキングモード / ノンブロッキングモード ブロッキングモード * 読み込みや書き込みを完了するまで待つ(=制御をブロックする) API * java.net.ServerSocket ノンブロッキングモード * 今できる処理(read/write)して、すぐに制御が戻る * ノンブロッキ…

【Java】 自前認証局(オレオレ証明書) のSSLサーバに接続するには...

サンプル SampleSSLConnectHelper.java import java.security.cert.CertificateException; import javax.net.ssl.HostnameVerifier; import javax.net.ssl.HttpsURLConnection; import javax.net.ssl.SSLContext; import javax.net.ssl.SSLSession; import j…

【Java】 外部プログラム/コマンドを実行するには ~ ProcessBuilder ~

■ 初めに http://blogs.yahoo.co.jp/dk521123/34689533.html でも使用した ProcessBuilder を改めて、まとめる。 サンプル 例1 : バッチをJavaから実行する 実行バッチ:./etc/hello.bat (バッチ作成は、以下の関連記事を参照のこと) http://blogs.yahoo.co.…

【Java】正規表現 [2] 複雑な文字列置き換え ~ replaceFirst / replaceAll ~

複雑な文字列置き換え * replaceFirst / replaceAll => 正規表現を使って、文字列置き換えることにより、複雑な処理が可能になる * replaceAll()は、不要文字除去 / 対象文字のみ抽出にも使える。 詳細は以下の関連記事を参照のこと。 http://blogs.yahoo.co…

【Java】JMX (Java Management Extensions) / MBean (Management Bean)

用語整理 JMX * Java Management Extensions * 外部からJava アプリケーションをモニタおよび管理するための仕組み MBean * Management Bean * JMXでアクセスする管理用オブジェクト MBeanServer * 外部との通信を行うコンポーネント 主なクラス・メソッド *…

【Java】コールバック関数を実装する ~自作インターフェースで使って、実装編~

コールバック関数とは * あるクラスに、コールバックしてもらう関数を教えて、その関数が呼び出されるのを待つこと。 Java での実装方法 * 3つの方法があるかと。 [1] 自作インターフェースで使って、実装する [2] CountDownLatch を使って、実装する [3] Fu…

【Java】ラムダ式 ~ 基本編 / Stream API ~

Stream APIの主なメソッド filter * 条件に合致した要素だけ抜き出す map * 要素全てに同じ処理を行い、その結果で新たにリストを作る min / max * 最小 / 最大に合致した要素だけ抜き出す sorted * ソートする サンプル Person.java import java.sql.Timest…

【Java】ラムダ式 ~入門編~

■ ラムダ式 * Java1.8から導入できる ■ 構文 [1] 引数1つ式1つ 引数 -> 式 [2] 引数2つ以上、式1つ (引数1[,引数2]・・・) -> 式 [3] 引数1つ式複数 引数 -> { 処理 return 値; } [4] 引数2つ以上式複数 (引数1[,引数2]・・・) -> { 処理 return 値; } ■ サ…

【Java】ハッシュで暗号化する

初めに ハッシュについて * あるデータをハッシュ関数という特別な関数を使うと、決まった長さのビット列になる、この値を「ハッシュ値」という * ハッシュ値の別名として、「メッセージ・ダイジェスト (message digest) 」「フィンガープリント(指紋)」と…

【Java】Java で暗号化/複合化する ~標準ライブラリを使用した場合~

準備 Eclipse を使っている場合 * 普通にやると「sun.misc.BASE64Encoder」などで、以下「エラー内容」のようなエラーになる エラー内容 Access restriction: The type BASE64Encoder is not accessible due to restriction on required library C:\Program …

【Java】 Java のメモリ構造

Javaのメモリを理解するためのポイント * ガベージ・コレクション(GC)は、時間が掛かる => 時間が掛かるので、効率よくやるようにメモリ構造を工夫してある ガベージ・コレクション(GC) * 以下の関連記事を参照のこと。 https://blogs.yahoo.co.jp/dk521123/…

【Java】ZIP 処理 ~圧縮編~

■ サンプル ZipHelper.java import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStrea…

【Java】JVMのメモリ情報を出力させる

■ JVMオプション -XX:+HeapDumpOnOutOfMemoryError `#`オプション説明 1-XX:+HeapDumpOnOutOfMemoryErrorOutOfMemoryErrorが発生したときにダンプファイルを出力 補足:Tomcatでの指定 * CATALINA_OPTS に指定する => 具体的には、$CATALINA_HOME/bin/setenv…

【Java】Java で、SSL通信を行うには

準備 * 証明書作成は、以下の関連記事を参照のこと http://blogs.yahoo.co.jp/dk521123/33788938.html サンプル http://blogs.yahoo.co.jp/dk521123/33075148.html をベースに修正した。 サーバ側 import java.io.BufferedReader; import java.io.IOExceptio…

【Java】Socket 通信を行う ~Server側/Client側の実装例~

サンプル Server側 SampleSoketServer.java package com.soket; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintStream; import java.net.ServerSocket; import java.net.Socket; publ…

【Java】オブジェクトの使用メモリサイズを測る

初めに * main()の呼び出しより前に実行されるメソッドを指定できることを利用する (premainメソッド) 作成手順 [1] Eclipseで、サンプルの「ObjectSizeFetcher.java」を参考にプログラムを書く [2] Eclipseで、「build.xml」を作成する(内容はサンプルの…

【Java】【Axis2】IPアドレスの取得あれこれ

クライアント側IPアドレスを取得 サンプル MessageContext context = MessageContext.getCurrentMessageContext(); String ip = context.getProperty(MessageContext.REMOTE_ADDR).toString(); 参考文献 http://d.hatena.ne.jp/kokuzawa/20091007/1254880496…

【Java】PCリソース情報(ディスク容量、JVMメモリ容量、CPU情報)を取得する

■ PCリソース情報 【1】 ディスク容量 【2】 JVMメモリ容量 【3】 CPU情報 【1】 ディスク容量 * Windowsの場合「new File("C:/")」、Linuxの場合「new File("/")」を指定し、 getTotalSpace() / getFreeSpace() で取得できる サンプル import java.io.File;…

【Java】拡張子を取得 / 変更する

サンプル * 正規表現で実装したサンプルは、下記の関連記事を参照のこと。 http://blogs.yahoo.co.jp/dk521123/34781790.html 別サンプル studyMain.java(メイン) import util.*; public class studyMain { public static void main(String args[]) { utilTo…