上記のエラーはがtransactionロックを取得したまま放置状態になっていたために発生した。
解決方法:
SQL:show processlistを実行する
結果に現在のプロセスリストを表示します。
SQL:kill [IDカラムの値]を実行する
ID指定したプロセスが削除されます。
それで解決します。
上記のエラーはがtransactionロックを取得したまま放置状態になっていたために発生した。
解決方法:
SQL:show processlistを実行する
結果に現在のプロセスリストを表示します。
SQL:kill [IDカラムの値]を実行する
ID指定したプロセスが削除されます。
それで解決します。
☆特徴
・C言語やJavaのような、ブロック構成に「{」(中カッコ)を用いない。
・インデントとのブロック構成となっているため、誰が書いても同じようなソースコードとなります。
・可読性に優れている。
・コンパイルを必要としない。
・対話型シェルにて動作確認が可能。
☆実行方法
・ファイル作成
エディタで書き込み、拡張子は「.py」でファイル保存。
・プログラム実行
Pythonのインタープリタ(python.exe)へパスが通っていない場合は、パスを通してから実行する、コマンドプロンプトを開き、作業ディレクトリへ移動する。
「python ファイル名」で実行する。
☆基本構文は後日の記事「入門編2」に参考する
Java 文字列の分割
split:
文字列を指定された正規表現に一致する位置で分割する。分割された文字列は配列になる。
☆分割時、以下の2種類があります:
1、public String[] split(String regex)
2、public String[] split(String regex, int limit)
☆説明
・limit指定してない場合(上記の1)、limitは固定で「0」となり。
・パラメータregex:正規表現の区切り
・パラメータlimit:結果のしきい値、分割する最大回数(n-1回)、配列の最大lengthであること
・limitは負の値を指定した場合、制限なしとなります。
・limitは0を指定した場合、分割された後で最後の項目が空白の場合にはそれを配列に格納しません。
☆サンプル
String regex = "a,b,c,,,d,,,";
// limitが-1の場合
String[] sp = regex.split(",", -1);
[結果]
sp[0] = "a";
sp[1] = "b";
sp[2] = "c";
sp[3] = "";
sp[4] = "";
sp[5] = "d";
sp[6] = "";
sp[7] = "";
sp[8] = "";
// limitが設定なしの場合
String[] sp = regex.split(",");
// limitが0の場合
String[] sp = regex.split(",", 0);
[結果]
sp[0] = "a";
sp[1] = "b";
sp[2] = "c";
sp[3] = "";
sp[4] = "";
sp[5] = "d";
※最後の空白項目は配列に格納されないが、先頭や中間の空白は格納されます。
// limitが0以上の場合
String[] sp = regex.split(",", 1); // 分割は0回実行され、配列spのlengthは1となる。
[結果]
sp[0] = "a,b,c,,,d,,,";
String[] sp = regex.split(",", 2); // 分割は1回実行され、配列spのlengthは2となる。
[結果]
sp[0] = "a";
sp[1] = "b,c,,,d,,,";
String[] sp = regex.split(",", 100); // 分割は99回実行され、配列spのlengthは最大100となるが、実際は文字列によります。
[結果]
sp[0] = "a";
sp[1] = "b";
sp[2] = "c";
sp[3] = "";
sp[4] = "";
sp[5] = "d";
sp[6] = "";
sp[7] = "";
sp[8] = "";
☆追記
splitで文字列分割した結果は配列のため、N件目のデータを取得したい場合、直接指定することは可能です。
String regex = "a,b,c,,,d,,,"
// 分割した結果の1件目を取得する、結果はString型になる
String sp = regex.split(",")[0]
[結果]
sp = a
☆ライブラリ入手/導入
・ICU4Jは公式サイトでダウンロードできます(http://site.icu-project.org/download)
・Mavenを利用する場合は、pom.xmlに依存関係を追加することで入手できます。
<!-- 利用したことあるのは55.1ですが、現時点最新バージョンは59.1です -->
<dependency>
<groupId>com.ibm.icu</groupId>
<artifactId>icu4j</artifactId>
<version>55.1</version>
</dependency>
☆サンプル
・全角→半角
Transliterator transliterator = Transliterator.getInstance("Fullwidth-Halfwidth");
String result = transliterator.transliterate("アイウガギグ123①¥%$");
System.out.println(result);
[結果]
アイウガギグ123①¥%$
※上のサンプルにわざと対応する半角文字がないと思われる「①」を入れてみました。
結果の通り、「①」の変換が行われません。
作るシステムで「①」を「(1)」に変換するなどの要件がある場合は、ICU4Jを利用する前後で自力でやる必要があります。
※Java1.6以降で利用できるようになった、java.text.Normalizerクラスの存在です。
java.text.Normalizerクラスを利用すれば、英数字→半角、(ひらがな、カタカナ)→全角に変換することができます。
英数字だけ、半角にしたい場合は、Normalizerクラスの利用がお勧めです。
(Normalizerクラスについては前日の記事に参考する)
文字変換種類を気にした上で、ICU4JとNormalizerクラスを使い分けた方がいいと思う。
・半角→全角
Transliterator transliterator = Transliterator.getInstance("Katakana-Hiragana");
String result = transliterator.transliterate("アイウエオガギグゲゴ アイウエオガギグゲゴ");
System.out.println(result);
[結果]
あいうえおがぎぐげご あいうえおがぎぐげご
・ひらがな→カタカナ
Transliterator transliterator = Transliterator.getInstance("Hiragana-Katakana");
String result = transliterator.transliterate("あいうえおがぎぐげご");
System.out.println(result);
[結果]
アイウエオガギグゲゴ
・ひらがな→ローマ字
※ひらがなをローマ字に変換することもできます。
但し小文字のローマ字に変換されるので、大文字にする必要があればもう一段階の変換が必要です。
Transliterator transliterator = Transliterator.getInstance("Hiragana-Latin");
String result = transliterator.transliterate("あいうえおがぎぐげご");
System.out.println(result);
[結果]
aiueogagigugego
Java6以降利用できるUnicode正規化(java.text.Normalizer)のメモです。
全角数字、半角カナなど、混ぜ込んでるとき、統一してくれる(数字記号は半角に、かなと文字は全角に)
全て全角のデータを数字記号だけ、半角に変換したい場合、最適だと思う。
☆サンプル
import java.text.Normalizer;
String text = "AabB~12345ーアイウエオあいうえお";
String normalizedText = Normalizer.normalize(text, Normalizer.Form.NFKC);
[結果]
AabB~12345-アイウエオあいうえお
Normalizer.Formは以下の4種類が存在しますが、
・NFC
正規分解とそれに続く正規合成
・NFD
正規分解
・NFKC
互換分解とそれに続く正規合成
・NFKD
互換分解
用途により、よく使われてたのはNFKCです。
☆Form.NFKCについて
・1文字の全角文字「が」、「ぱ」、「っ」などは変わらない
・「か」+濁点などの組み合わせもそのまま変わらない
・半角カナ+濁点などの組み合わせは、相当する1文字の全角文字に変換してくれる(「ウ゛」→「ヴ」など)
・全角英数記号を相当する半角英数記号に変換してくれる
・可能な限り、丸文字や年号、単位、ギリシャ数字などの1文字を、相当する複数の文字に分解してくれる(「㈱」→「(株)」)
※JavaはライブラリICU4Jや正規表現でも文字変換することが可能です。変換したい種類により、最適な方法を選びます。(ライブラリICU4Jについては後日書きます。)
・半角
^[-~。-゚]*$
・全角(半角ではないで判定)
^[^-~。-゚]*$
・半角数字
^[0-9]*$
・半角英字(大文字、小文字)
^[a-zA-Z]*$
・半角英数字
^[0-9a-zA-Z]*$
・漢字
^[一-龠]*$
・全角ひらがな(長引音「ー」含む)
^[ぁ-んー]*$
・全角カタカナ(長引音「ー」含む)
^[ァ-ヶー]*$
・半角カタカナ
^[ア-ン゙゚]*$
一旦ここで、また後日追加します