国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

ホームページ 類庫下載 java類庫 Java で埋め込み MySQL を使用する方法

Java で埋め込み MySQL を使用する方法

Nov 07, 2016 pm 05:30 PM
java mysql 埋め込む

這篇文件主要介紹在Java中嵌入式MySQL的使用,對于一些的應(yīng)用項目,提供安裝版的Mysql,Oracle是必須的工作。但是有時候如果是一個小的工具,可安裝或者移植性比較強(qiáng)的小軟件。再去安裝數(shù)據(jù)庫可能就比較麻煩了。

其實MySQL也有嵌入式的,不需要安裝,在使用的過程中,會自動創(chuàng)建數(shù)據(jù)庫以及通過代碼的方式啟動或者關(guān)閉。下面提供一些代碼片段,具體的會提供下載地址。

這個是核心代碼類,這個類實現(xiàn)了Mysql 的啟動和停止以及數(shù)據(jù)庫的啟動狀態(tài)。

package net.simple.mysql;

import java.io.File;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import java.util.Set;

import com.mysql.management.MysqldResource;

public final class EmbedMySqlServer {
    private MysqldResource mysqlInstance;
    //配置信息
    public final Properties props;
    //端口信息
    private String port;
    /**
     * 考慮到數(shù)據(jù)庫的性能問題,允許將數(shù)據(jù)庫放在其它磁盤
     */
    private String embedMySqlHome;

    public EmbedMySqlServer(final Properties props) {
        this.props = props;
    }

    public EmbedMySqlServer(final Properties props, String embedMySqlHome) {
        this.embedMySqlHome = embedMySqlHome;
        this.props = props;
    }

    public final String getEmbedMySqlHome() {
        return null == embedMySqlHome ? getPlatformBaseDir() : embedMySqlHome;
    }

    /**
    * 獲得當(dāng)前應(yīng)用主目錄
    * @return 當(dāng)前應(yīng)用啟動程序所在目錄.
    */
    public static String getPlatformBaseDir() {
        return System.getProperty("user.dir");
    }

    public static boolean isBlank(final String str) {
        int strLen;
        if (str == null || (strLen = str.length()) == 0) {
            return true;
        }
        for (int i = 0; i < strLen; i++) {
            if (Character.isWhitespace(str.charAt(i)) == false) {
                return false;
            }
        }
        return true;
    }

    public void startup() {
        final File baseDir = new File(getEmbedMySqlHome(), "mysql-em");
        mysqlInstance = new MysqldResource(baseDir);
        port = props.getProperty("port");
        if (isBlank(port))
            props.put("port", port = String.valueOf((int) (Math.random() * 40000)));
        final Set<Object> keys = props.keySet();
        final Map<String, String> options = new HashMap<String, String>(keys.size());
        for (final Object key : keys) {
            final String val = props.getProperty(key.toString());
            if ("".equals(val))
                options.put(key.toString(), null);
            else
                options.put(key.toString(), val.replace("{$contextPath}", getPlatformBaseDir()));
        }
        if (!mysqlInstance.isRunning())
            mysqlInstance.start("Em_MySQL", options, false, keys.contains("defaults-file"));
    }

    public String getPort() {
        return port;
    }

    /**
     * 判斷mysql是否正在運(yùn)行
     */
    public boolean isRunning() {
        return null == mysqlInstance ? false : mysqlInstance.isRunning();
    }

    public void shutdown() {
        if (mysqlInstance != null)
            mysqlInstance.shutdown();
    }

    public void cleanup() {
        if (mysqlInstance != null)
            mysqlInstance.cleanup();
    }
}

下面這個是啟動Demo,

public static void main(String[] args) {
        try {
            Properties pro = new Properties();
            //根據(jù)機(jī)器配置,設(shè)置不同的參數(shù)
            pro.load(MysqlTest.class.getResourceAsStream("MySql_medium.properties"));
            new EmbedMySqlServer(pro).startup();
            //可以把數(shù)據(jù)庫放到其他磁盤
            //new EmbedMySqlServer(pro,"f:\\").startup();
            Connection conn = getTestConnection();
            System.out.println(conn.isClosed());
            conn.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

MySql_general.properties一般機(jī)器的配置樣例

MySql_medium.properties中等機(jī)器的配置樣例

MySql_large.properties高配機(jī)的配置樣例

具體的參數(shù)可以根據(jù)不同需求進(jìn)行定義,比如端口可以自由定義。

需要引用的mysql兩個jar,mysql-connector-mxj-gpl-6-0-11-db-files.jar,mysql-connector-mxj-gpl-6-0-11.jar

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當(dāng)する法的責(zé)任を負(fù)いません。盜作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

寫真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中國語版

SublimeText3 中國語版

中國語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強(qiáng)力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

JDBCを使用してJavaのトランザクションを処理する方法は? JDBCを使用してJavaのトランザクションを処理する方法は? Aug 02, 2025 pm 12:29 PM

JDBCトランザクションを正しく処理するには、最初に自動コミットモードをオフにし、次に複數(shù)の操作を?qū)g行し、結(jié)果に応じて最終的にコミットまたはロールバックする必要があります。 1。CONN.SETAUTOCOMMIT(FALSE)を呼び出して、トランザクションを開始します。 2。挿入や更新など、複數(shù)のSQL操作を?qū)g行します。 3。すべての操作が成功した場合はconn.commit()を呼び出し、データの一貫性を確保するために例外が発生した場合はconn.rollback()を呼び出します。同時に、リソースを使用してリソースを管理し、例外を適切に処理し、接続を密接に接続するために、接続の漏れを避けるために使用する必要があります。さらに、接続プールを使用してセーブポイントを設(shè)定して部分的なロールバックを達(dá)成し、パフォーマンスを改善するためにトランザクションを可能な限り短く保つことをお勧めします。

Javaフレームワークの比較:Spring Boot vs Quarkus vs Micronaut Javaフレームワークの比較:Spring Boot vs Quarkus vs Micronaut Aug 04, 2025 pm 12:48 PM

Pre-formanceTartuptimeMemoryusage、quarkusandmicronautleadduetocopile-timeprocessingingandgraalvsupport、withquarkusoftentylightbetterine serverlessシナリオ。

Garbage CollectionはJavaでどのように機(jī)能しますか? Garbage CollectionはJavaでどのように機(jī)能しますか? Aug 02, 2025 pm 01:55 PM

JavaのGarbage Collection(GC)は、メモリを自動的に管理するメカニズムであり、到達(dá)不可能なオブジェクトを取り戻すことでメモリ漏れのリスクを軽減します。 1.GCルートオブジェクトからのオブジェクトのアクセシビリティ(スタック変數(shù)、アクティブスレッド、靜的フィールドなど)、および到達(dá)不可能なオブジェクトはゴミとしてマークされています。 2。マーククリアリングアルゴリズムに基づいて、すべての到達(dá)可能なオブジェクトをマークし、マークのないオブジェクトをクリアします。 3.世代の収集戦略を採用する:新世代(Eden、S0、S1)は頻繁にMinorGCを?qū)g行します。高齢者のパフォーマンスは少なくなりますが、MajorGCを?qū)g行するのに時間がかかります。 Metaspaceはクラスメタデータを保存します。 4。JVMはさまざまなGCデバイスを提供します。SerialGCは小さなアプリケーションに適しています。 ParallelGCはスループットを改善します。 CMSが減少します

Javaビルドツールの比較:Maven vs. Gradle Javaビルドツールの比較:Maven vs. Gradle Aug 03, 2025 pm 01:36 PM

gradleisthebetterchoiceformostnewprojectoitssuperorfficability、performance、andmoderntoolingsupport.1.gradle’sgroovy/kotlindslismoreconciseandexpressiveethanmaven’sverboseml.2.gradleorformsmavenbenbumebutedwitedwitedwitedspedexは

ユーザーデータにHTML「入力」タイプを使用します ユーザーデータにHTML「入力」タイプを使用します Aug 03, 2025 am 11:07 AM

適切なHTMLinputタイプを選択すると、データの精度を向上させ、ユーザーエクスペリエンスを向上させ、使いやすさを向上させることができます。 1.テキスト、電子メール、電話、番號、日付など、データ型に従って対応する入力タイプを選択します。 2。HTML5を使用して、より直感的な相互作用方法を提供できるURL、色、範(fàn)囲、検索などの新しいタイプを追加します。 3.プレースホルダーと必要な屬性を使用して、フォームフィリングの効率と精度を改善しますが、プレースホルダーがラベルを置き換えることはできないことに注意してください。

HTTPミドルウェアロギングの例を例に進(jìn)めます HTTPミドルウェアロギングの例を例に進(jìn)めます Aug 03, 2025 am 11:35 AM

GOのHTTPログミドルウェアは、リクエストメソッド、パス、クライアントIP、および時間がかかることを記録できます。 1. http.handlerfuncを使用してプロセッサをラップします。2。next.servehttpを呼び出す前後の開始時間と終了時間を記録します。完全なサンプルコードの実行が検証されており、中小のプロジェクトの開始に適しています。拡張機(jī)能の提案には、ステータスコードのキャプチャ、JSONログのサポート、リクエストIDトラッキングが含まれます。

Javaでオブザーバーパターンを使用する方法は? Javaでオブザーバーパターンを使用する方法は? Aug 02, 2025 am 11:52 AM

この質(zhì)問に対する明確な答えは、カスタムオブザーバーインターフェイスを使用してオブザーバーパターンを?qū)g裝するための推奨事項です。 1. Javaは観察可能なオブザーバーを提供していますが、前者はクラスであり、廃止されており、柔軟性がありません。 2。最新の推奨される実踐は、機(jī)能的なオブザーバーインターフェイスを定義することであり、被験者はオブザーバーリストを維持し、狀態(tài)が変更されたときにすべてのオブザーバーに通知することです。 3.ラムダ式と組み合わせて使用して、コードのシンプルさと保守性を向上させることができます。 4。GUIまたはJavabeanシナリオの場合、PropertyChangelistenerを使用できます。したがって、新しいプロジェクトはカスタムオブザーバーインターフェイススキームを採用する必要があります。カスタムオブザーバーインターフェイススキームは、タイプセーフでテストしやすく、現(xiàn)代のJavaを?qū)熼Tとしています

Java Concurrencyユーティリティ:ExecutorServiceおよびFork/Join Java Concurrencyユーティリティ:ExecutorServiceおよびFork/Join Aug 03, 2025 am 01:54 AM

ExecutorServiceは、I/O操作やタイミングタスクなどの獨(dú)立したタスクの非同期実行に適しています。スレッドプールを使用して並行性を管理し、送信を通じて実行可能または呼び出し可能なタスクを送信し、將來の結(jié)果を取得します。固定されていないキューのリスクに注意を払い、スレッドプールを明示的に閉じます。 2.フォーク/Joinフレームワークは、分割と論爭の方法とワークスチールアルゴリズムに基づいた分割および政府CPU集約型タスク用に設(shè)計されており、フォークジョインプールによってスケジュールおよび実行された再帰イベタスクまたは再送信によるタスクの再帰的分割を?qū)g現(xiàn)します。大規(guī)模な配列の合計と並べ替えシナリオに適しています。分割のしきい値は、オーバーヘッドを避けるために合理的に設(shè)定する必要があります。 3。選択基準(zhǔn):獨(dú)立

See all articles