Commit a22e6d2b authored by dingjy's avatar dingjy

create

parents
# 默认忽略的文件
/shelf/
/workspace.xml
# 基于编辑器的 HTTP 客户端请求
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml
<component name="ArtifactManager">
<artifact type="jar" name="DBSpecial-Example:jar">
<output-path>$PROJECT_DIR$/out/artifacts/DBSpecial_Example_jar</output-path>
<root id="archive" name="DBSpecial-Example.jar">
<element id="module-output" name="DBSpecial-Samples" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/checkerframework/checker-qual/3.12.0/checker-qual-3.12.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/apache/httpcomponents/httpmime/4.5.13/httpmime-4.5.13.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/slf4j/slf4j-simple/1.7.25/slf4j-simple-1.7.25.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/projectlombok/lombok/1.18.24/lombok-1.18.24.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/mysql/mysql-connector-java/8.0.30/mysql-connector-java-8.0.30.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/apache/httpcomponents/httpcore/4.4.13/httpcore-4.4.13.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/com/google/protobuf/protobuf-java/3.19.4/protobuf-java-3.19.4.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/commons-logging/commons-logging/1.2/commons-logging-1.2.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/slf4j/slf4j-api/1.7.25/slf4j-api-1.7.25.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/lz4/lz4-java/1.8.0/lz4-java-1.8.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/com/google/j2objc/j2objc-annotations/1.3/j2objc-annotations-1.3.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/cglib/cglib-nodep/3.3.0/cglib-nodep-3.3.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/com/google/code/gson/gson/2.9.0/gson-2.9.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/apache/httpcomponents/httpclient/4.5.13/httpclient-4.5.13.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/com/clickhouse/clickhouse-http-client/0.3.2-patch7/clickhouse-http-client-0.3.2-patch7-shaded.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/com/google/guava/guava/31.1-jre/guava-31.1-jre.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/com/google/errorprone/error_prone_annotations/2.11.0/error_prone_annotations-2.11.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/com/zaxxer/HikariCP/4.0.3/HikariCP-4.0.3.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/com/clickhouse/clickhouse-jdbc/0.3.2-patch7/clickhouse-jdbc-0.3.2-patch7.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/commons-codec/commons-codec/1.11/commons-codec-1.11.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/com/bayread/DBSpecial/0.01/DBSpecial-0.01.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/com/clickhouse/clickhouse-grpc-client/0.3.2-patch7/clickhouse-grpc-client-0.3.2-patch7-netty.jar" path-in-jar="/" />
</root>
</artifact>
</component>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CompilerConfiguration">
<annotationProcessing>
<profile default="true" name="Default" enabled="true" />
<profile name="Maven default annotation processors profile" enabled="true">
<sourceOutputDir name="target/generated-sources/annotations" />
<sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
<outputRelativeToContentRoot value="true" />
<module name="DBSpecial-Samples" />
</profile>
</annotationProcessing>
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RemoteRepositoriesConfiguration">
<remote-repository>
<option name="id" value="central" />
<option name="name" value="Central Repository" />
<option name="url" value="https://repo.maven.apache.org/maven2" />
</remote-repository>
<remote-repository>
<option name="id" value="central" />
<option name="name" value="Maven Central repository" />
<option name="url" value="https://repo1.maven.org/maven2" />
</remote-repository>
<remote-repository>
<option name="id" value="jboss.community" />
<option name="name" value="JBoss Community repository" />
<option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
</remote-repository>
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="MavenProjectsManager">
<option name="originalFiles">
<list>
<option value="$PROJECT_DIR$/pom.xml" />
</list>
</option>
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK" />
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Palette2">
<group name="Swing">
<item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
</item>
<item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
</item>
<item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
</item>
<item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.svg" removable="false" auto-create-binding="false" can-attach-label="true">
<default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
</item>
<item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
<initial-values>
<property name="text" value="Button" />
</initial-values>
</item>
<item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
<initial-values>
<property name="text" value="RadioButton" />
</initial-values>
</item>
<item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
<initial-values>
<property name="text" value="CheckBox" />
</initial-values>
</item>
<item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
<initial-values>
<property name="text" value="Label" />
</initial-values>
</item>
<item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
</item>
<item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
<preferred-size width="200" height="200" />
</default-constraints>
</item>
<item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
<preferred-size width="200" height="200" />
</default-constraints>
</item>
<item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
</item>
<item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
</item>
<item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
</item>
<item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
</item>
<item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
<preferred-size width="-1" height="20" />
</default-constraints>
</item>
<item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
</item>
<item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
</item>
</group>
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>
\ No newline at end of file
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.bayread</groupId>
<artifactId>DBSpecial-Samples</artifactId>
<version>0.01</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>8</source>
<target>8</target>
</configuration>
</plugin>
</plugins>
</build>
<packaging>jar</packaging>
<name>DBSpecial-Samples</name>
<dependencies>
<dependency>
<groupId>com.bayread</groupId>
<artifactId>DBSpecial</artifactId>
<version>0.01</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.24</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.24</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.25</version>
<scope>compile</scope>
</dependency>
</dependencies>
<distributionManagement>
<repository>
<id>lwby-releases</id>
<name>releases repository</name>
<url>http://maven.bayread.com/nexus/content/repositories/releases/</url>
</repository>
<snapshotRepository>
<id>lwby-snapshots</id>
<name>snapshots repository</name>
<url>http://maven.bayread.com/nexus/content/repositories/snapshots/</url>
</snapshotRepository>
</distributionManagement>
</project>
\ No newline at end of file
package org.bayread.ckspecial;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import com.bayread.ckspecial.DBSpecial;
import com.bayread.ckspecial.core.annotation.Initial;
import com.bayread.ckspecial.db.ClickhouseDB;
import com.bayread.ckspecial.db.MysqlDB;
import com.bayread.ckspecial.db.annotation.DB;
import com.bayread.ckspecial.db.annotation.DBResource;
import com.bayread.ckspecial.db.annotation.SQL;
import com.bayread.ckspecial.db.annotation.SQLParam;
import org.bayread.ckspecial.bean.User;
/**
* 以注解的形式操作数据库
*/
@DB("ck-read")
public abstract class AnnotationSamples {
/**
* 如果数据库是MSYQL,可以用 "MysqlDB db"
*/
@DBResource("ck-read")
ClickhouseDB db;
@Initial
public void init() throws IllegalAccessException {
//先清理掉测试数据(正试环境慎用此方法)
db.execute("truncate table users");
List<User> users = new ArrayList<>();
for(long i=10000;i<10010;i++){
User user = new User();
user.setUserid(i);
user.setUsername("Martin".concat(i + ""));
users.add(user);
}
db.writeBatch(users);
System.out.println("");
//--------------------------------------------------------------------------
List<Integer> list = new ArrayList<>();
list.add(10001);
list.add(10002);
list.add(10003);
list.add(10004);
List<Object[]> u = getObjectArrayList(list);
u.forEach(e -> {
for (Object to : e) {
System.out.println(String.valueOf(to));
}
});
System.out.println("");
//--------------------------------------------------------------------------
List<User> u1 = getBeanList(10003);
u1.forEach(e -> e.print());
System.out.println("");
List<Map<String, Object>> u2 = getMapList(100);
u2.forEach(e -> {
e.forEach((k, v) -> {
System.out.println(k + " " + v);
});
});
System.out.println("");
//--------------------------------------------------------------------------
getBean(10000).print();
System.out.println(Arrays.toString(getObjectArray(10000)));
getMap(10000).forEach((k, v) -> {
System.out.println(k + " " + v);
});
System.out.println("");
//--------------------------------------------------------------------------
System.out.println(getLong(10000));
System.out.println("");
//--------------------------------------------------------------------------
System.out.println(set(2000, "djy"));
System.out.println("");
//--------------------------------------------------------------------------
getUserById(2000).print();
}
@SQL(value = "select * from users where userid in ({userId})")
public abstract List<Object[]> getObjectArrayList(@SQLParam("userId") List<Integer> k);
@SQL(value = "select * from users where userid < {userId}")
public abstract List<User> getBeanList(@SQLParam("userId") int k);
@SQL(value = "select * from users where userid < {userId}")
public abstract List<Map<String, Object>> getMapList(@SQLParam("userId") int k);
@SQL(value = "select * from users where userid = {userId}")
public abstract User getBean(@SQLParam("userId") int k);
@SQL(value = "select * from users where userid = {userId}")
public abstract Object[] getObjectArray(@SQLParam("userId") int k);
@SQL(value = "select * from users where userid = {userId}")
public abstract Map<String, Object> getMap(@SQLParam("userId") int k);
@SQL(value = "select count(*) from users where userid > {userId}")
public abstract Long getLong(@SQLParam("userId") int k);
@SQL(value = "insert into users values({userId},{userName})")
public abstract int set(@SQLParam("userId") int k, @SQLParam("userName") String v);
public User getUserById(int uid) {
return db.query("select * from users where userid = ?", User.class, uid);
}
public static void main(String[] args) {
DBSpecial.run(AnnotationSamples.class);
}
}
\ No newline at end of file
package org.bayread.ckspecial;
import com.bayread.ckspecial.commons.time.DateFormatUtils;
import com.bayread.ckspecial.db.ClickhouseDB;
import lombok.extern.slf4j.Slf4j;
import org.bayread.ckspecial.bean.LogItem;
import org.bayread.ckspecial.tool.IPUtil;
import java.io.IOException;
import java.sql.SQLException;
import java.util.*;
@Slf4j
public class Benchmark {
public static List<LogItem> makeData(int count){
List<LogItem> li = new ArrayList<>();
Random r = new Random();
for(int i=0;i<count;i++) {
LogItem log = new LogItem();
log.typeid=r.nextInt(10);
log.resulttype =r.nextInt(20);;
log.adnetwork=r.nextInt(5);;
log.bidid=UUID.randomUUID().toString();
log.timestamp=0l;
log.ip= IPUtil.getRandomIp();
log.os=r.nextInt(5);
log.userid=UUID.randomUUID().toString().substring(0,8);
log.preferdealid="";
log.schedulingid="";
log.dc=0;
log.channelid=r.nextInt(50);
log.mediaid="abc_" + log.channelid + "_" + r.nextInt(10);;
log.placeid=log.mediaid + "_" + r.nextInt(100);
log.genderid=0;
log.ageid=0;
log.citycode=r.nextInt(1000);
log.advertiserid=r.nextInt(100);;
log.campaignid=r.nextInt(10000);;
log.groupid=r.nextInt(1000);;
log.adid=r.nextInt(10000);;
log.creativeid=r.nextInt(1000000);;
log.price=r.nextInt(5000000);;
log.agentprice=log.price;
log.bidprice=log.price;
log.day=DateFormatUtils.GENERIC_DATETIME_TODAY_FORMAT.format(new Date());
log.hour=r.nextInt(23);
log.minute=r.nextInt(59);
li.add(log);
}
return li;
}
public static void main(String[] args) throws IOException, SQLException, InterruptedException {
if(args.length != 3)
args = new String[]{"3", "1000", "100"};
int threadCount = Integer.parseInt(args[0]);
int batchSize = Integer.parseInt(args[1]);
int sleep = Integer.parseInt(args[2]);
ClickhouseDB db= new ClickhouseDB("ck-sharding-write");
for(int i=0;i<threadCount;i++) {
new Thread(()->{
while(true){
long beginTime = System.currentTimeMillis();
db.writeBatch(Benchmark.makeData(batchSize));
long useTime = System.currentTimeMillis() - beginTime;
log.info("时间:{} 批量大小[{}] 用时:[{}]",DateFormatUtils.GENERIC_DATETIME_FORMAT.format(new Date()),Thread.currentThread().getName(),batchSize,useTime);
try {
Thread.sleep(sleep);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
}).start();
}
}
}
package org.bayread.ckspecial;
import com.bayread.ckspecial.db.ClickhouseDB;
import com.clickhouse.client.internal.google.common.collect.ImmutableMap;
import org.bayread.ckspecial.bean.ComplexType;
import org.bayread.ckspecial.tool.IPUtil;
import java.util.Arrays;
/**
* 主要演示几种特殊的数据类型写入操作
* (ARRAY MAP DATE)
*/
public class ComplexTypeSamples {
public static void main(String[] args) {
ClickhouseDB db= new ClickhouseDB("ck-test-type");
ComplexType ctype = new ComplexType();
ctype.setDevip(IPUtil.getRandomIp());
ctype.setLocation(Arrays.asList(1801,1802,1803));
ctype.setMeminfo(ImmutableMap.of(1000, "CADE:19383", 1001, "VGF:10393", 1002, "DKF:33290"));
ctype.day = "20220902";
ctype.hour = 13;
ctype.minute = 7;
db.write(ctype);
}
}
package org.bayread.ckspecial;
import com.bayread.ckspecial.db.annotation.DBInterceptor;
import com.bayread.ckspecial.db.interceptor.HandleContext;
import com.bayread.ckspecial.db.interceptor.Interceptor;
import lombok.extern.slf4j.Slf4j;
/**
* 拦截器在BATCH模式下不生效
*/
@DBInterceptor
@Slf4j
public class LogSqlInterceptor implements Interceptor {
@Override
public int order() {
return Integer.MAX_VALUE;
}
@Override
public void before(HandleContext ctx) {
log.info("execute sql:[{}] params:[]",ctx.getSql(),ctx.getParams());
}
}
\ No newline at end of file
package org.bayread.ckspecial.bean;
import com.bayread.ckspecial.db.annotation.Column;
import com.bayread.ckspecial.db.annotation.Table;
import lombok.Data;
import java.util.*;
@Table("type_test") //表名
@Data
public class ComplexType {
@Column("dev_ip") //重定义字段名
private String devip;
private List<Integer> location; //Array类型
private Map<Integer,String> meminfo; //Map类型
public String day; //Clickhouse Date类型可以直接用Java的String类型
public Integer hour;
public Integer minute;
}
package org.bayread.ckspecial.bean;
import com.bayread.ckspecial.db.annotation.Table;
@Table(value = "log_items")
public class LogItem {
public Integer typeid; //0-255
public Integer resulttype; //0-255
public Integer adnetwork; //0-255
public String bidid;
public Long timestamp;
public String ip;
public Integer os; //0-255
public String userid;
public String preferdealid;
public String schedulingid;
public Integer dc; //0-255
public Integer channelid; //0-255
public String mediaid;
public String placeid;
public Integer genderid; //0-255
public Integer ageid; //0-255
public Integer citycode;
public Integer advertiserid;
public Integer campaignid;
public Integer groupid;
public Integer adid;
public Integer creativeid;
public Integer price;
public Integer agentprice;
public Integer bidprice;
public String day;
public Integer hour; //0-255
public Integer minute; //0-255
@Override
public String toString() {
return "LogItem{" +
"typeid=" + typeid +
", resulttype=" + resulttype +
", adnetwork=" + adnetwork +
", bidid='" + bidid + '\'' +
", timestamp=" + timestamp +
", ip='" + ip + '\'' +
", os=" + os +
", userid='" + userid + '\'' +
", preferdealid='" + preferdealid + '\'' +
", schedulingid='" + schedulingid + '\'' +
", dc=" + dc +
", channelid=" + channelid +
", mediaid='" + mediaid + '\'' +
", placeid='" + placeid + '\'' +
", genderid=" + genderid +
", ageid=" + ageid +
", citycode=" + citycode +
", advertiserid=" + advertiserid +
", campaignid=" + campaignid +
", groupid=" + groupid +
", adid=" + adid +
", creativeid=" + creativeid +
", price=" + price +
", agentprice=" + agentprice +
", bidprice=" + bidprice +
", day=" + day +
", hour=" + hour +
", minute=" + minute +
'}';
}
}
\ No newline at end of file
package org.bayread.ckspecial.bean;
import com.bayread.ckspecial.db.annotation.Table;
import lombok.Data;
@Table(value = "users")
@Data
public class User {
private Long userid;
private String username;
public void print(){
System.out.println(this.toString());
}
}
package org.bayread.ckspecial.tool;
import java.util.Random;
public class IPUtil {
public static String getRandomIp() {
// 指定 IP 范围
int[][] range = {
{607649792, 608174079}, // 36.56.0.0-36.63.255.255
{1038614528, 1039007743}, // 61.232.0.0-61.237.255.255
{1783627776, 1784676351}, // 106.80.0.0-106.95.255.255
{2035023872, 2035154943}, // 121.76.0.0-121.77.255.255
{2078801920, 2079064063}, // 123.232.0.0-123.235.255.255
{-1950089216, -1948778497}, // 139.196.0.0-139.215.255.255
{-1425539072, -1425014785}, // 171.8.0.0-171.15.255.255
{-1236271104, -1235419137}, // 182.80.0.0-182.92.255.255
{-770113536, -768606209}, // 210.25.0.0-210.47.255.255
{-569376768, -564133889}, // 222.16.0.0-222.95.255.255
};
Random random = new Random();
int index = random.nextInt(10);
String ip = num2ip(range[index][0] + random.nextInt(range[index][1] - range[index][0]));
return ip;
}
/**
* 将十进制转换成IP地址
*/
public static String num2ip(int ip) {
int[] b = new int[4];
b[0] = (ip >> 24) & 0xff;
b[1] = (ip >> 16) & 0xff;
b[2] = (ip >> 8) & 0xff;
b[3] = ip & 0xff;
// 拼接 IP
String x = b[0] + "." + b[1] + "." + b[2] + "." + b[3];
return x;
}
}
Manifest-Version: 1.0
Main-Class: org.bayread.ckspecial.Benchmark
#[h2]
#datasource.driverClassName=org.h2.Driver
#datasource.url=jdbc:h2:mem:test1;DB_CLOSE_DELAY=-1
#datasource.username=sa
#datasource.password=sa
#[mysql]
#datasource.driverClassName=com.mysql.cj.jdbc.Driver
#datasource.address=localhost:3306
#datasource.database=test
#datasource.username=root
#datasource.password=123456
#datasource.maximumPoolSize=10
#datasource.minimumIdle=3
#datasource.connectionTimeOut=10000
#datasource.idleTimeout=30000
#datasource.connectionTestQuery=SELECT 1
[ck-read]
datasource.driverClassName=com.clickhouse.jdbc.ClickHouseDriver
datasource.address=172.17.239.158:8125
datasource.database=test
datasource.username=default
datasource.password=
datasource.maximumPoolSize=10
datasource.minimumIdle=3
datasource.connectionTimeOut=10000
datasource.idleTimeout=30000
datasource.connectionTestQuery=SELECT 1
[ck-sharding-write]
datasource.driverClassName=com.clickhouse.jdbc.ClickHouseDriver
datasource.address=172.17.239.158:8123,172.17.239.156:8123,172.17.239.157:8123
datasource.database=test
datasource.username=default
datasource.password=
datasource.maximumPoolSize=10
datasource.minimumIdle=3
datasource.connectionTimeOut=10000
datasource.idleTimeout=30000
datasource.connectionTestQuery=SELECT 1
[ck-test-type]
datasource.driverClassName=com.clickhouse.jdbc.ClickHouseDriver
datasource.address=172.17.239.158:8123
datasource.database=test
datasource.username=default
datasource.password=
datasource.maximumPoolSize=10
datasource.minimumIdle=3
datasource.connectionTimeOut=10000
datasource.idleTimeout=30000
datasource.connectionTestQuery=SELECT 1
\ No newline at end of file
log4j.rootLogger=INFO,console,file,error
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.Threshold=DEBUG
log4j.appender.console.Target=System.out
log4j.appender.console.Encoding=UTF-8
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d [%p][%t][%F:%L] %m%n
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=./logs/crm9.log
log4j.appender.file.MaxFileSize=50MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.Append=true
log4j.appender.file.Encoding=UTF-8
log4j.appender.file.Threshold=DEBUG
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d [%p][%t][%F:%L] %m%n
log4j.appender.error = org.apache.log4j.RollingFileAppender
log4j.appender.error.File = ./logs/crm9-error.log
log4j.appender.error.MaxFileSize=50MB
log4j.appender.error.MaxBackupIndex=10
log4j.appender.error.Append = true
log4j.appender.error.Threshold = ERROR
log4j.appender.error.layout = org.apache.log4j.PatternLayout
log4j.appender.error.layout.ConversionPattern =%d [%p][%t][%F:%L] %m%nyyyy-MM-dd HH:mm:ss}%n[%p]-[Thread: %t]-[%C.%M()]: %m%n
\ No newline at end of file
Manifest-Version: 1.0
Main-Class: org.bayread.ckspecial.Benchmark
#[h2]
#datasource.driverClassName=org.h2.Driver
#datasource.url=jdbc:h2:mem:test1;DB_CLOSE_DELAY=-1
#datasource.username=sa
#datasource.password=sa
#[mysql]
#datasource.driverClassName=com.mysql.cj.jdbc.Driver
#datasource.address=localhost:3306
#datasource.database=test
#datasource.username=root
#datasource.password=123456
#datasource.maximumPoolSize=10
#datasource.minimumIdle=3
#datasource.connectionTimeOut=10000
#datasource.idleTimeout=30000
#datasource.connectionTestQuery=SELECT 1
[ck-read]
datasource.driverClassName=com.clickhouse.jdbc.ClickHouseDriver
datasource.address=172.17.239.158:8125
datasource.database=test
datasource.username=default
datasource.password=
datasource.maximumPoolSize=10
datasource.minimumIdle=3
datasource.connectionTimeOut=10000
datasource.idleTimeout=30000
datasource.connectionTestQuery=SELECT 1
[ck-sharding-write]
datasource.driverClassName=com.clickhouse.jdbc.ClickHouseDriver
datasource.address=172.17.239.158:8123,172.17.239.156:8123,172.17.239.157:8123
datasource.database=test
datasource.username=default
datasource.password=
datasource.maximumPoolSize=10
datasource.minimumIdle=3
datasource.connectionTimeOut=10000
datasource.idleTimeout=30000
datasource.connectionTestQuery=SELECT 1
[ck-test-type]
datasource.driverClassName=com.clickhouse.jdbc.ClickHouseDriver
datasource.address=172.17.239.158:8123
datasource.database=test
datasource.username=default
datasource.password=
datasource.maximumPoolSize=10
datasource.minimumIdle=3
datasource.connectionTimeOut=10000
datasource.idleTimeout=30000
datasource.connectionTestQuery=SELECT 1
\ No newline at end of file
log4j.rootLogger=INFO,console,file,error
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.Threshold=DEBUG
log4j.appender.console.Target=System.out
log4j.appender.console.Encoding=UTF-8
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d [%p][%t][%F:%L] %m%n
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=./logs/crm9.log
log4j.appender.file.MaxFileSize=50MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.Append=true
log4j.appender.file.Encoding=UTF-8
log4j.appender.file.Threshold=DEBUG
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d [%p][%t][%F:%L] %m%n
log4j.appender.error = org.apache.log4j.RollingFileAppender
log4j.appender.error.File = ./logs/crm9-error.log
log4j.appender.error.MaxFileSize=50MB
log4j.appender.error.MaxBackupIndex=10
log4j.appender.error.Append = true
log4j.appender.error.Threshold = ERROR
log4j.appender.error.layout = org.apache.log4j.PatternLayout
log4j.appender.error.layout.ConversionPattern =%d [%p][%t][%F:%L] %m%nyyyy-MM-dd HH:mm:ss}%n[%p]-[Thread: %t]-[%C.%M()]: %m%n
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment