[JAVA] So ändern Sie ein leeres Projekt von TERASOLUNA 5.x, um PostgreSQL zu unterstützen

1. Zuallererst

Im Anfangszustand des leeren Projekts von TERASOLUNA Server Framework für Java (5.x) wird h2db im Speicher als Datenbank verwendet. Dieses Mal möchte ich ein persönliches Memorandum darüber aufbewahren, wie die Datenbank auf PostgreSQL geändert wird.

1.1. Überprüfungsumgebung

1.2 PostgreSQL-kompatibler Änderungsworkflow

Der Workflow zum Ändern eines leeren Projekts zur Unterstützung von PostgreSQL ist unten dargestellt. Dieses Mal verwenden wir den in der Anwendung vorbereiteten Verbindungspool anstelle des in der Datenquelle des Anwendungsservers (Servlet-Container) definierten Verbindungspools.

Artikelnummer Arbeit Überblick
1 Ein leeres Projekt erstellen Erstellen Sie ein leeres Projekt gemäß den TERASOLUNA-Richtlinien.
2 Vorbereiten der zu verwendenden Datenbank Erstellen Sie eine Datenbank und einen Benutzer in PostgreSQL auf localhost.
3 Fügen Sie die Bibliothek der zu verwendenden Datenbank zur Abhängigkeit des übergeordneten POM hinzu Fügen Sie eine Abhängigkeit hinzu, um den PostgreSQL-JDBC-Treiber zu laden.
4 Deaktivieren Sie den DB-Initialisierungsprozess, wenn Sie die Anwendung starten Im Ausgangszustand ist die Verarbeitung der h2db-Datenbankinitialisierung festgelegt. Deaktivieren Sie sie daher.
5 (Optional) Deaktivieren Sie das Schreiben von JDBC-Protokollen mit log4jdbc Deaktivieren Sie die Einstellung log4jdbc für das Debuggen.
6 Ändern Sie das Datenbankverbindungsziel Stellen Sie die Verbindung zu der diesmal vorbereiteten Datenbank ein.
7 Fügen Sie die Bibliothek der zu verwendenden Datenbank zur Abhängigkeit des Domänenprojekts hinzu Fügen Sie beim Testen der Domäne eine Abhängigkeit zum Laden des JDBC-Treibers hinzu.
8 (Optional) Ändern Sie das initdb-Projekt Da initdb auch einen Einstellungsteil der Verbindungsinformationen der Datenbank enthält, korrigieren Sie dies.
9 (Optional) Erstellen Sie eine Datenbank mit dem initdb-Projekt Erstellen der in 2 vorbereiteten Datenbank mit initdb,Initialisieren Sie den Prozess.
10 Testversion 設定に不備がないことを確認するためTestversionを行います。
11 Teststart 設定に不備がないことを確認するためTeststartを行います。

2. Erstellen Sie ein leeres Projekt

Beschrieben in der veröffentlichten Richtlinie "3.1.2. Erstellen eines Entwicklungsprojekts" Erstellen Sie ein leeres Projekt gemäß dem oben beschriebenen Verfahren. Diesmal lauten die Projekteinstellungen wie folgt, und es wird ein leeres Projekt mit "C: \ work" als aktuellem Verzeichnis erstellt.

Artikelnummer Artikel Wert Bemerkungen
1 archetypeArtifactId terasoluna-gfw-multi-web-blank-mybatis3-archetype Erstellt mit einem Multiprojekt mit MyBatis
2 archetypeVersion 5.3.0.RELEASE Version ist 5.3.0
3 groupId com.example.demo.postgresql
4 artifactId demo-database-postgresql

Erstellen Sie ein Projekt mit dem Befehl mvn


mvn archetype:generate -B^
 -DarchetypeGroupId=org.terasoluna.gfw.blank^
 -DarchetypeArtifactId=terasoluna-gfw-multi-web-blank-mybatis3-archetype^
 -DarchetypeVersion=5.3.0.RELEASE^
 -DgroupId=com.example.demo.postgresql^
 -DartifactId=demo-database-postgresql^
 -Dversion=1.0.0-SNAPSHOT

Ausführungsergebnis


...Kürzung...
[INFO] Parameter: groupId, Value: com.example.demo.postgresql
[INFO] Parameter: artifactId, Value: demo-database-postgresql
[INFO] Parent element not overwritten in C:\work\demo-database-postgresql\demo-database-postgresql-env\pom.xml
[INFO] Parent element not overwritten in C:\work\demo-database-postgresql\demo-database-postgresql-domain\pom.xml
[INFO] Parent element not overwritten in C:\work\demo-database-postgresql\demo-database-postgresql-web\pom.xml
[INFO] Parent element not overwritten in C:\work\demo-database-postgresql\demo-database-postgresql-initdb\pom.xml
[INFO] Parent element not overwritten in C:\work\demo-database-postgresql\demo-database-postgresql-selenium\pom.xml
[INFO] Project created from Archetype in dir: C:\work\demo-database-postgresql
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 26.941 s
[INFO] Finished at: 2017-08-31T10:12:00+09:00
[INFO] Final Memory: 10M/48M
[INFO] ------------------------------------------------------------------------

C:\work>

Es ist erfolgreich, wenn "BUILD SUCCESS" angezeigt wird und das von Artefakt-ID angegebene Verzeichnis "demo-database-postgresql" unter dem Verzeichnis "C: \ work" erstellt wird.

3. Vorbereitung der zu verwendenden Datenbank

Erstellen Sie eine Datenbank und einen Benutzer, um sie zu verwenden, und bereiten Sie sie für DDL vor. Dieses Mal habe ich eine Datenbank in PostgreSQL vorbereitet, die in localhost mit den folgenden Einstellungen erstellt wurde.

Artikelnummer Artikel Wert
1 Port-Nummer 5432
2 Name der Datenbank demodb
3 Benutzeridentifikation demoUser
4 Passwort demoPass

4. Fügen Sie die Bibliothek der zu verwendenden Datenbank zur Abhängigkeit des übergeordneten POM hinzu

Im Ausgangszustand werden die Einstellungen von Oracle und PostgreSQL in einem auskommentierten Zustand beschrieben. Kommentieren Sie PostgreSQL aus und aktivieren Sie es.

Vor der Korrektur


            <!-- == Begin Database == -->
<!--             <dependency> -->
<!--                 <groupId>org.postgresql</groupId> -->
<!--                 <artifactId>postgresql</artifactId> -->
<!--                 <version>${postgresql.version}</version> -->
<!--             </dependency> -->
<!--             <dependency> -->
<!--                 <groupId>com.oracle</groupId> -->
<!--                 <artifactId>ojdbc7</artifactId> -->
<!--                 <version>${ojdbc.version}</version> -->
<!--             </dependency> -->
            <!-- == End Database == -->

Überarbeitet


            <!-- == Begin Database == -->
             <dependency>
                 <groupId>org.postgresql</groupId>
                 <artifactId>postgresql</artifactId>
                 <version>${postgresql.version}</version>
             </dependency>
<!--             <dependency> -->
<!--                 <groupId>com.oracle</groupId> -->
<!--                 <artifactId>ojdbc7</artifactId> -->
<!--                 <version>${ojdbc.version}</version> -->
<!--             </dependency> -->
            <!-- == End Database == -->

5. Deaktivieren Sie den DB-Initialisierungsprozess, wenn Sie die Anwendung starten

Im Anfangszustand eines leeren Projekts wird die durch <jdbc: initialize-database> angegebene DDL-Datei ausgeführt, wenn der DI-Container gestartet wird, dh wenn die Anwendung gestartet wird. Es ist notwendig, wenn eine In-Memory-Datenbank verwendet wird, aber ich denke, dass diese Funktion für allgemeine Webanwendungen nicht erforderlich ist. Kommentieren Sie die Beschreibung von <jdbc: initialize-database> aus und deaktivieren Sie sie.

Vor der Korrektur


    <jdbc:initialize-database data-source="dataSource"
        ignore-failures="ALL">
        <jdbc:script location="classpath:/database/${database}-schema.sql" encoding="UTF-8" />
        <jdbc:script location="classpath:/database/${database}-dataload.sql" encoding="UTF-8" />
    </jdbc:initialize-database>

Überarbeitet


    <!--
    <jdbc:initialize-database data-source="dataSource"
        ignore-failures="ALL">
        <jdbc:script location="classpath:/database/${database}-schema.sql" encoding="UTF-8" />
        <jdbc:script location="classpath:/database/${database}-dataload.sql" encoding="UTF-8" />
    </jdbc:initialize-database>
    -->

6. (Optional) Deaktivieren Sie das Schreiben von JDBC-Protokollen mit log4jdbc

Wenn Sie die Transaktion mit "@Transactional (readOnly = true)" schreibgeschützt machen, wird das Protokoll der Fehlermeldung ausgegeben, indem das Protokoll von log4jdbc geschrieben wird.

Protokoll der Ausgabefehlermeldungen


date:2017-08-31 20:04:25	thread:http-nio-8080-exec-2	X-Track:b67e7712dcc143f398f5e51b762e3dea	level:ERROR	logger:jdbc.audit                                      	message:2. Connection.setReadOnly(true)
org.postgresql.util.PSQLException:Sie können schreibgeschützte Eigenschaften während einer Transaktion nicht ändern.
	at org.postgresql.jdbc2.AbstractJdbc2Connection.setReadOnly(AbstractJdbc2Connection.java:741)
	at org.apache.commons.dbcp2.DelegatingConnection.setReadOnly(DelegatingConnection.java:562)
	at org.apache.commons.dbcp2.DelegatingConnection.setReadOnly(DelegatingConnection.java:562)
	at net.sf.log4jdbc.ConnectionSpy.setReadOnly(ConnectionSpy.java:374)
...Kürzung...

Es überrascht nicht, dass log4jdbc "Lesen / Schreiben" -Transaktionen erfordert, obwohl die Anwendung sie auf "Nur Lesen" gesetzt hat. Da die Fehlermeldung nur im Protokoll ausgegeben wird, wirkt sie sich nicht auf die Verarbeitung der Anwendung aus, aber ich persönlich kümmere mich darum, daher deaktiviere ich log4jdbc immer.

Es ist einfach zu deaktivieren. Entfernen Sie einfach die Bean-Definition in Log4jdbcProxyDataSource und ändern Sie die beanId-Datenquelle, um die dbcp2-Datenquelle anzugeben.

Vor der Korrektur


    <bean id="realDataSource" class="org.apache.commons.dbcp2.BasicDataSource"
        destroy-method="close">
        <property name="driverClassName" value="${database.driverClassName}" />
        <property name="url" value="${database.url}" />
        <property name="username" value="${database.username}" />
        <property name="password" value="${database.password}" />
        <property name="defaultAutoCommit" value="false" />
        <property name="maxTotal" value="${cp.maxActive}" />
        <property name="maxIdle" value="${cp.maxIdle}" />
        <property name="minIdle" value="${cp.minIdle}" />
        <property name="maxWaitMillis" value="${cp.maxWait}" />
    </bean>


    <bean id="dataSource" class="net.sf.log4jdbc.Log4jdbcProxyDataSource">
        <constructor-arg index="0" ref="realDataSource" />
    </bean>

Überarbeitet


    <bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource"
        destroy-method="close">
        <property name="driverClassName" value="${database.driverClassName}" />
        <property name="url" value="${database.url}" />
        <property name="username" value="${database.username}" />
        <property name="password" value="${database.password}" />
        <property name="defaultAutoCommit" value="false" />
        <property name="maxTotal" value="${cp.maxActive}" />
        <property name="maxIdle" value="${cp.maxIdle}" />
        <property name="minIdle" value="${cp.minIdle}" />
        <property name="maxWaitMillis" value="${cp.maxWait}" />
    </bean>

    <!--
    <bean id="dataSource" class="net.sf.log4jdbc.Log4jdbcProxyDataSource">
        <constructor-arg index="0" ref="realDataSource" />
    </bean>
    -->

7. Ändern Sie das Datenbankverbindungsziel

Dieses Mal verwenden wir den dbcp2-Verbindungspool in der Anwendung. Daher müssen Datenbankverbindungsinformationen (URL, Portnummer, Benutzer-ID, Kennwort usw.) in der Anwendung verwaltet werden. Standardmäßig ist es in TERASOLUNA 5.x in "*** infra.properties" definiert. Wenn Sie die Datenquelle des Anwendungsservers mit JNDI verwenden, werde ich dies zu einem anderen Zeitpunkt erläutern.

Vor der Korrektur


database=H2
database.url=jdbc:h2:mem:demo-database-postgresql;DB_CLOSE_DELAY=-1
database.username=sa
database.password=
database.driverClassName=org.h2.Driver
# connection pool
cp.maxActive=96
cp.maxIdle=16
cp.minIdle=0
cp.maxWait=60000

Überarbeitet


### default setting is H2
# database=H2
# database.url=jdbc:h2:mem:demo-database-postgresql;DB_CLOSE_DELAY=-1
# database.username=sa
# database.password=
# database.driverClassName=org.h2.Driver

### setting for postgreSQL
database=POSTGRESQL
database.url=jdbc:postgresql://127.0.0.1:5432/demodb
database.username=demoUser
database.password=demoPass
database.driverClassName=org.postgresql.Driver

# connection pool
cp.maxActive=96
cp.maxIdle=16
cp.minIdle=0
cp.maxWait=60000

8. Fügen Sie die Bibliothek der zu verwendenden Datenbank zur Abhängigkeit des Domänenprojekts hinzu.

Im Ausgangszustand werden die Einstellungen von Oracle und PostgreSQL in einem auskommentierten Zustand beschrieben. Kommentieren Sie PostgreSQL aus und aktivieren Sie es.

Vor der Korrektur


        <!-- == Begin Database == -->
<!--         <dependency> -->
<!--             <groupId>org.postgresql</groupId> -->
<!--             <artifactId>postgresql</artifactId> -->
<!--             <scope>test</scope> -->
<!--         </dependency> -->
<!--         <dependency> -->
<!--             <groupId>com.oracle</groupId> -->
<!--             <artifactId>ojdbc7</artifactId> -->
<!--             <scope>test</scope> -->
<!--         </dependency> -->
        <!-- == End Database == -->

Überarbeitet


        <!-- == Begin Database == -->
         <dependency>
             <groupId>org.postgresql</groupId>
             <artifactId>postgresql</artifactId>
             <scope>test</scope>
         </dependency>
<!--         <dependency> -->
<!--             <groupId>com.oracle</groupId> -->
<!--             <artifactId>ojdbc7</artifactId> -->
<!--             <scope>test</scope> -->
<!--         </dependency> -->
        <!-- == End Database == -->

9. (Optional) Ändern Sie das initdb-Projekt

Das initdb-Projekt enthält auch Informationen zur Datenbankverbindung. Da das initdb-Projekt selbst für den anfänglichen Aufbau der Datenbank vorgesehen ist, muss es nicht geändert werden, wenn Sie initdb nicht verwenden. Die zu ändernden Teile sind <db.url>, <db.username> und <db.password>, die die Verbindungsinformationen der Datenbank festlegen.

Vor der Korrektur


        <profile>
            <id>local-postgres</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <db.encoding>UTF8</db.encoding>
                <db.basedir>${project.basedir}/src/main/sqls/postgres</db.basedir>
                <db.url>jdbc:postgresql://127.0.0.1:5432/projectName</db.url>
                <db.username>postgres</db.username>
                <db.password>P0stgres</db.password>
                <db.driver>org.postgresql.Driver</db.driver>
                <db.groupId>org.postgresql</db.groupId>
                <db.artifactId>postgresql</db.artifactId>
                <db.version>${postgresql.version}</db.version>
                <db.delimiterType>row</db.delimiterType>
            </properties>
        </profile>

Überarbeitet


        <profile>
            <id>local-postgres</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <db.encoding>UTF8</db.encoding>
                <db.basedir>${project.basedir}/src/main/sqls/postgres</db.basedir>
                <db.url>jdbc:postgresql://127.0.0.1:5432/demodb</db.url>
                <db.username>demoUser</db.username>
                <db.password>demoPass</db.password>
                <db.driver>org.postgresql.Driver</db.driver>
                <db.groupId>org.postgresql</db.groupId>
                <db.artifactId>postgresql</db.artifactId>
                <db.version>${postgresql.version}</db.version>
                <db.delimiterType>row</db.delimiterType>
            </properties>
        </profile>

10. (Optional) Erstellen Sie eine Datenbank mit dem initdb-Projekt

10.1 DDL für die Datenbankerstellung erstellen

Die für die Datenbankerstellung verwendete DDL wird in dem oben durch "<db.basedir>" angegebenen Verzeichnis gespeichert. In diesem Fall ist es "C: \ work \ demo-database-postgresql \ demo-database-postgresql-initdb \ src \ main \ sqls \ postgres". Erstellen Sie dieses Verzeichnis, da es standardmäßig nicht vorhanden ist.

Artikelnummer Dateiname Bemerkungen
1 00000_drop_all_tables.sql Eine Datei, die die DDL beschreibt, mit der die Tabelle gelöscht wird.
2 00100_create_all_tables.sql Eine Datei, die die DDL beschreibt, mit der die erforderlichen Tabellen erstellt werden.
3 00200_insert_employee.sql Dies ist eine Datei, die die SQL beschreibt, die die Anfangsdaten einer bestimmten Tabelle (eines Mitarbeiters) registriert.

Da die Dateien nach Dateinamen sortiert und nacheinander ausgeführt werden, werden die Dateinamen unter Berücksichtigung der Ausführungsreihenfolge angegeben. Ich habe es diesmal nicht erstellt, aber bereiten Sie bei Bedarf eine DDL vor, um eine Sequenz oder einen Index zu erstellen.

00000_drop_all_tables.sql



DROP TABLE IF EXISTS employee;

00100_create_all_tables.sql



--Mitarbeitertabelle--
CREATE TABLE employee (
    --Mitarbeiter-ID
    employee_id    varchar(10)    NOT NULL,
    --Vollständiger Name
    name           varchar(30)    NOT NULL,
    --Anstellungsdatum
    register_date  date           NOT NULL,
    --Punkt
    point          numeric(3,0)   NOT NULL,
    --Primärschlüsseleinschränkung
    CONSTRAINT EMPLOYEE_PK PRIMARY KEY(employee_id)
);

00200_insert_employee.sql



INSERT INTO employee (employee_id, name, register_date, point) VALUES ('0000000777', 'Prüfung Taro', to_date('2016/04/01', 'yyyy/MM/dd'), 10);
COMMIT;

10.2. Datenbank mit mvn sql erstellen: Befehl ausführen

Wenn der Befehl mvn sql: execute im initdb-Projekt ausgeführt wird, wird die oben vorbereitete DDL ausgeführt und die Datenbank erstellt und initialisiert.

Ausführungsergebnis


C:\work\demo-database-postgresql\demo-database-postgresql-initdb>mvn sql:execute
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building demo-database-postgresql-initdb 1.0.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- sql-maven-plugin:1.5:execute (default-cli) @ demo-database-postgresql-initdb ---
[INFO] Executing file: C:\work\demo-database-postgresql\demo-database-postgresql-initdb\src\main\sqls\postgres\00000_dro
p_all_tables.sql
[INFO] Executing file: C:\work\demo-database-postgresql\demo-database-postgresql-initdb\src\main\sqls\postgres\00100_cre
ate_all_tables.sql
[INFO] Executing file: C:\work\demo-database-postgresql\demo-database-postgresql-initdb\src\main\sqls\postgres\00200_ins
ert_employee.sql
[INFO] 3 of 3 SQL statements executed successfully
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.217 s
[INFO] Finished at: 2017-08-31T10:56:24+09:00
[INFO] Final Memory: 8M/20M
[INFO] ------------------------------------------------------------------------

C:\work\demo-database-postgresql\demo-database-postgresql-initdb>

Überprüfen Sie "3 von 3 erfolgreich ausgeführten SQL-Anweisungen" und "BUILD SUCCESS", um sicherzustellen, dass sie erfolgreich abgeschlossen wurden.

11. Testversion

Viele Konfigurationsdateien wurden geändert, um PostgreSQL zu unterstützen. Führen Sie einen Testaufbau durch, um eventuelle Mängel festzustellen.

Ausführungsergebnis


C:\work\demo-database-postgresql>mvn package
[INFO] Scanning for projects...

...Kürzung...

[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] TERASOLUNA Server Framework for Java (5.x) Web Blank Multi Project (MyBatis3) SUCCESS [  0.015 s]
[INFO] demo-database-postgresql-env ....................... SUCCESS [  1.248 s]
[INFO] demo-database-postgresql-domain .................... SUCCESS [  0.359 s]
[INFO] demo-database-postgresql-web ....................... SUCCESS [  4.883 s]
[INFO] demo-database-postgresql-initdb .................... SUCCESS [  0.031 s]
[INFO] demo-database-postgresql-selenium .................. SUCCESS [  2.090 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 9.048 s
[INFO] Finished at: 2017-08-31T10:57:46+09:00
[INFO] Final Memory: 35M/84M
[INFO] ------------------------------------------------------------------------

C:\work\demo-database-postgresql>

Wenn "BUILD SUCCESS" angezeigt wird, wurde bestätigt, dass die zum Zeitpunkt der Erstellung gefundenen Teile keine Fehler aufweisen.

12. Teststart

Wenn der Testbuild normal abgeschlossen ist C: \ work \ demo-database-postgresql \ demo-database-postgresql-web \ target \ demo-database-postgresql-web.war ist vorhanden. Kopieren Sie demo-database-postgresql-web.war und stellen Sie es in das Tomcat-Installationsverzeichnis / webapps bereit.

Führen Sie das Tomcat-Installationsverzeichnis / bin / startup.bat aus, um Tomcat zu starten. Greifen Sie mit einem Webbrowser auf http: // localhost: 8080 / demo-database-postgresql-web / zu. Wenn der Standardbildschirm "Hallo Welt!" Angezeigt wird, ist er erfolgreich.

13. Schließlich

Dieses Mal habe ich erklärt, wie das leere Projekt von TERASOLUNA 5.x geändert wird, um PostgreSQL zu unterstützen. Normalerweise wird die zu verwendende Datenbank nur beim ersten Erstellen des Projekts festgelegt, daher gibt es meines Erachtens nur wenige Möglichkeiten, dies zu tun. Wenn die anfänglichen Einstellungen des Projekts jedoch nicht abgeschlossen sind, können wir nicht mit der Entwicklung der Anwendung (Geschäftsprozess) fortfahren, daher möchten wir schnell reagieren.

Recommended Posts

So ändern Sie ein leeres Projekt von TERASOLUNA 5.x, um PostgreSQL zu unterstützen
So entfernen Sie Kacheln aus einem leeren Projekt in TERASOLUNA 5.x.
Wie erstelle ich ein Maven-Projekt?
Wechseln Sie in einem neuen Ruby on Rails-Projekt von SQLite3 zu PostgreSQL
[1.] So erstellen Sie ein Spring-MVC-Framework-Projekt
So erstellen Sie ein Spring Boot-Projekt in IntelliJ
[Spring Boot] So erstellen Sie ein Projekt (für Anfänger)
So ändern Sie eine Zeichenfolge in einem Array in eine Zahl in Ruby
Wie hinterlasse ich einen Kommentar?
Wechseln Sie von SQLite3 zu PostgreSQL
So fügen Sie ein Video ein
So erstellen Sie eine Methode
So erstellen Sie mit SPRING INITIALIZR einen Hinadan für ein Spring Boot-Projekt
So realisieren Sie mit TERASOLUNA 5.x (= Spring MVC) das Hochladen großer Dateien
So erstellen Sie ein neues Gradle + Java + Jar-Projekt in Intellij 2016.03
[chown] So ändern Sie den Eigentümer einer Datei oder eines Verzeichnisses
So erstellen Sie einen Java-Container
Wie unterschreibe ich Minecraft MOD?
So stellen Sie Spring Boot + PostgreSQL ein
So erstellen Sie einen JDBC-Treiber
So ändern Sie den kube-proxy in den ipvs-Modus.
[Swift] So senden Sie eine Benachrichtigung
So erstellen Sie einen Begrüßungsbildschirm
So erstellen Sie ein Jenkins-Plug-In
So erstellen Sie ein Java-Array
So wechseln Sie von HTML zu Haml
Sie können die Version der Projektfacette nicht von einem dynamischen Webmodul in x.x ändern. Wie man damit umgeht
So erstellen Sie eine Ruby on Rails-Entwicklungsumgebung mit Docker (Rails 6.x)
So ändern Sie den Wert einer Variablen an einem Haltepunkt in IntelliJ
[Schienen] So erstellen Sie eine Tabelle, fügen eine Spalte hinzu und ändern den Spaltentyp
So erstellen Sie eine Ruby on Rails-Entwicklungsumgebung mit Docker (Rails 5.x)
So führen Sie einen Vertrag mit web3j aus
So sortieren Sie eine Liste mit Comparator
So erstellen Sie eine Java-Kalenderzusammenfassung
Ein Memorandum zur Verwendung von Eclipse
So ändern Sie den App-Namen in Rails
[Basic] So schreiben Sie ein Dockerfile Selbstlernend ②
So fügen Sie ein Video in Rails ein
So fügen Sie einen neuen Hash / Array hinzu
[Einführung in Java] So schreiben Sie ein Java-Programm
So erstellen Sie ein Maven-Repository für 2020
Wie erstelle ich einen Discord Bot (Java)
Wie man SquashTM baut und wie man Japanisch unterstützt
[Swift5] So erstellen Sie einen Begrüßungsbildschirm
[Rails] So erstellen Sie eine Teilvorlage
[Rails 5.x] So führen Sie kostenlose Schriftarten ein
So veröffentlichen Sie eine Bibliothek in jCenter
[SpringBoot] So schreiben Sie einen Controller-Test