auto commit
This commit is contained in:
@@ -3,6 +3,7 @@ using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Yitter.IdGenerator;
|
||||
|
||||
namespace Yitter.OrgSystem.TestA
|
||||
@@ -54,20 +55,23 @@ namespace Yitter.OrgSystem.TestA
|
||||
|
||||
while (true)
|
||||
{
|
||||
RunSingle();
|
||||
// Go(options);
|
||||
//CallDll();
|
||||
//RunSingle();
|
||||
//Go(options);
|
||||
CallDll();
|
||||
Thread.Sleep(1000); // 每隔1秒执行一次Go
|
||||
}
|
||||
}
|
||||
|
||||
[DllImport("yitidgenc.dll", CallingConvention = CallingConvention.Cdecl)]
|
||||
//[DllImport("yitidgenc.dll", CallingConvention = CallingConvention.StdCall)]
|
||||
//public static extern long NextId();
|
||||
|
||||
[DllImport("yitidgenc.dll", CallingConvention = CallingConvention.StdCall)]
|
||||
public static extern long NextId();
|
||||
|
||||
[DllImport("yitidgenc.dll", CallingConvention = CallingConvention.Cdecl)]
|
||||
[DllImport("yitidgenc.dll", CallingConvention = CallingConvention.StdCall)]
|
||||
public static extern void SetWorkerId(uint workerId);
|
||||
|
||||
[DllImport("yitidgenc.dll", CallingConvention = CallingConvention.Cdecl)]
|
||||
[DllImport("yitidgenc.dll", CallingConvention = CallingConvention.StdCall)]
|
||||
public static extern int TestId();
|
||||
|
||||
private static void CallDll()
|
||||
@@ -78,15 +82,27 @@ namespace Yitter.OrgSystem.TestA
|
||||
int i = 0;
|
||||
long id = 0;
|
||||
DateTime start = DateTime.Now;
|
||||
bool useMultiThread = false;
|
||||
|
||||
var ids = TestId();
|
||||
|
||||
//var ids = TestId();
|
||||
//SetWorkerId(1);
|
||||
|
||||
while (i < 50000)
|
||||
{
|
||||
id = NextId();
|
||||
i++;
|
||||
|
||||
if (useMultiThread)
|
||||
{
|
||||
Task.Run(() =>
|
||||
{
|
||||
id = NextId();
|
||||
Console.WriteLine("id:" + id);
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
id = NextId();
|
||||
}
|
||||
}
|
||||
DateTime end = DateTime.Now;
|
||||
Console.WriteLine("id:" + id);
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"profiles": {
|
||||
"Yitter.IdGenTest": {
|
||||
"commandName": "Project",
|
||||
"nativeDebugging": true
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -12,6 +12,10 @@
|
||||
<PackageLicenseExpression>MIT</PackageLicenseExpression>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Yitter.IdGenerator\Yitter.IdGenerator.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
@@ -9,13 +9,13 @@
|
||||
|
||||
|
||||
TAP_DLLEXPORT
|
||||
extern void SetIdGenerator(IdGeneratorOptions options);
|
||||
extern void TAP_STDCALL SetIdGenerator(IdGeneratorOptions options);
|
||||
|
||||
TAP_DLLEXPORT
|
||||
extern void SetWorkerId(uint32_t workerId);
|
||||
extern void TAP_STDCALL SetWorkerId(uint32_t workerId);
|
||||
|
||||
TAP_DLLEXPORT
|
||||
extern uint64_t NextId();
|
||||
extern uint64_t TAP_STDCALL NextId();
|
||||
|
||||
TAP_DLLEXPORT
|
||||
extern uint64_t TestId() ;
|
||||
extern uint64_t TAP_STDCALL TestId();
|
||||
|
||||
@@ -5,9 +5,11 @@
|
||||
|
||||
#ifdef _WIN32
|
||||
#define TAP_CDECL __cdecl
|
||||
#define TAP_STDCALL __stdcall
|
||||
#define TAP_DLLEXPORT __declspec(dllexport)
|
||||
#else
|
||||
#define TAP_CDECL
|
||||
#define TAP_STDCALL
|
||||
#define TAP_DLLEXPORT
|
||||
#endif
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ void RunMultiThread() {
|
||||
//int64_t start = GetCurrentMicroTime();
|
||||
for (int i = 0; i < GenIdCount / threadCount; i++) {
|
||||
int64_t id = NextId();
|
||||
printf("生成ID: %D\n", id);
|
||||
printf("ID: %D\n", id);
|
||||
}
|
||||
|
||||
int64_t end = GetCurrentMicroTime();
|
||||
@@ -35,11 +35,11 @@ void RunSingle() {
|
||||
int64_t start = GetCurrentMicroTime();
|
||||
for (int i = 0; i < GenIdCount; i++) {
|
||||
int64_t id = NextId();
|
||||
// printf("生成ID: %ld\n", id);
|
||||
// printf("ID: %ld\n", id);
|
||||
}
|
||||
|
||||
int64_t end = GetCurrentMicroTime();
|
||||
printf("%s,total:%d μs\n", method == 1 ? "1" : "2", (end - start));
|
||||
printf("%s, total: %d us\n", method == 1 ? "1" : "2", (end - start));
|
||||
}
|
||||
|
||||
int main() {
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
# idgenerator
|
||||
|
||||
##
|
||||
|
||||
Go<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ר<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD>https://gitee.com/yitter/idgenerator-go
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Go ר<><EFBFBD><EEB9A4>Ϊ<CEAA><D7BC>
|
||||
|
||||
## Go<47><6F><EFBFBD><EFBFBD>
|
||||
|
||||
1.SDK<44><4B>go1.16
|
||||
|
||||
@@ -1,12 +1,19 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"C"
|
||||
"fmt"
|
||||
"time"
|
||||
"yitidgen/contract"
|
||||
"yitidgen/gen"
|
||||
)
|
||||
|
||||
|
||||
//export NextId
|
||||
func NextId() uint64{
|
||||
return gen.GetIns().NextId()
|
||||
}
|
||||
|
||||
func main() {
|
||||
// 方法一:直接采用默认方法生成一个Id
|
||||
var yid = gen.YitIdHelper{}
|
||||
|
||||
@@ -5,7 +5,12 @@ JDK 1.8+
|
||||
|
||||
## <20><><EFBFBD><EFBFBD> maven <20><>
|
||||
```
|
||||
|
||||
<dependency>
|
||||
<groupId>com.github.yitter</groupId>
|
||||
<artifactId>yitter-idgenerator</artifactId>
|
||||
<version>1.0.1</version>
|
||||
<type>pom</type>
|
||||
</dependency>
|
||||
```
|
||||
|
||||
## <20><><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>
|
||||
|
||||
@@ -4,23 +4,40 @@
|
||||
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.yitter</groupId>
|
||||
<artifactId>yitter.idgenerator</artifactId>
|
||||
<groupId>com.github.yitter</groupId>
|
||||
<artifactId>yitter-idgenerator</artifactId>
|
||||
<packaging>jar</packaging>
|
||||
<version>1.0.0</version>
|
||||
<version>1.0.1</version>
|
||||
|
||||
<name>yitter.idgenerator</name>
|
||||
<description>Shorter ID and faster generation with a new snowflake drift algorithm. The core is to shorten the ID length, but also can have a very high instantaneous concurrent processing capacity (50W/0.1s), and powerful configuration capacity.</description>
|
||||
<name>yitter-idgenerator</name>
|
||||
<description>Shorter ID and faster generation with a new snowflake drift algorithm. The core is to shorten the ID
|
||||
length, but also can have a very high instantaneous concurrent processing capacity (50W/0.1s), and powerful
|
||||
configuration capacity.
|
||||
</description>
|
||||
<url>https://github.com/yitter/idgenerator</url>
|
||||
|
||||
<developers>
|
||||
<developer>
|
||||
<id>yitter</id>
|
||||
<name>yitter</name>
|
||||
<email>yitter@126.com</email>
|
||||
<url>https://gitee.com/yitter/idgenerator</url>
|
||||
<url>https://github.com/yitter/idgenerator</url>
|
||||
</developer>
|
||||
</developers>
|
||||
|
||||
<scm>
|
||||
<connection>scm:git:https://github.com/yitter/idgenerator.git</connection>
|
||||
<developerConnection>scm:git:https://github.com/yitter/idgenerator.git</developerConnection>
|
||||
<url>https://github.com/yitter/idgenerator.git</url>
|
||||
</scm>
|
||||
|
||||
<licenses>
|
||||
<license>
|
||||
<name>MIT</name>
|
||||
<url>https://github.com/yitter/IdGenerator/blob/main/LICENSE</url>
|
||||
</license>
|
||||
</licenses>
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
||||
@@ -30,64 +47,85 @@
|
||||
</properties>
|
||||
|
||||
<build>
|
||||
<pluginManagement>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<version>3.8.0</version>
|
||||
<configuration>
|
||||
<source>${java.version}</source>
|
||||
<target>${java.version}</target>
|
||||
<encoding>UTF-8</encoding>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-jar-plugin</artifactId>
|
||||
<version>3.1.0</version>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-surefire-plugin</artifactId>
|
||||
<configuration>
|
||||
<skip>true</skip>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</pluginManagement>
|
||||
<resources>
|
||||
<resource>
|
||||
<directory>${project.basedir}</directory>
|
||||
<targetPath>META-INF</targetPath>
|
||||
<includes>
|
||||
<include>LICENSE</include>
|
||||
<include>NOTICE</include>
|
||||
</includes>
|
||||
</resource>
|
||||
<resource>
|
||||
<directory>src/main/resources</directory>
|
||||
<filtering>true</filtering>
|
||||
<includes>
|
||||
<include>**</include>
|
||||
</includes>
|
||||
</resource>
|
||||
</resources>
|
||||
<testResources>
|
||||
<testResource>
|
||||
<directory>src/test/resources</directory>
|
||||
<includes>
|
||||
<include>**</include>
|
||||
</includes>
|
||||
</testResource>
|
||||
</testResources>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-source-plugin</artifactId>
|
||||
<version>2.2.1</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<phase>package</phase>
|
||||
<goals>
|
||||
<goal>jar-no-fork</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-javadoc-plugin</artifactId>
|
||||
<version>3.0.1</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<phase>package</phase>
|
||||
<goals>
|
||||
<goal>jar</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-gpg-plugin</artifactId>
|
||||
<version>1.5</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<phase>verify</phase>
|
||||
<goals>
|
||||
<goal>sign</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.sonatype.plugins</groupId>
|
||||
<artifactId>nexus-staging-maven-plugin</artifactId>
|
||||
<version>1.6.8</version>
|
||||
<extensions>true</extensions>
|
||||
<configuration>
|
||||
<serverId>ossrh</serverId>
|
||||
<nexusUrl>https://s01.oss.sonatype.org/</nexusUrl>
|
||||
<autoReleaseAfterClose>false</autoReleaseAfterClose>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<version>3.8.1</version>
|
||||
<configuration>
|
||||
<fork>true</fork>
|
||||
<source>${java.version}</source>
|
||||
<target>${java.version}</target>
|
||||
<encoding>UTF-8</encoding>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-jar-plugin</artifactId>
|
||||
<version>3.1.0</version>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
<licenses>
|
||||
<license>
|
||||
<name>The Apache Software License, Version 2.0</name>
|
||||
<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
|
||||
</license>
|
||||
</licenses>
|
||||
<distributionManagement>
|
||||
<snapshotRepository>
|
||||
<id>ossrh</id>
|
||||
<url>https://s01.oss.sonatype.org/content/repositories/snapshots/</url>
|
||||
</snapshotRepository>
|
||||
<repository>
|
||||
<id>ossrh</id>
|
||||
<url>https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/</url>
|
||||
</repository>
|
||||
</distributionManagement>
|
||||
|
||||
</project>
|
||||
@@ -2,7 +2,7 @@
|
||||
* 版权属于:yitter(yitter@126.com)
|
||||
* 开源地址:https://gitee.com/yitter/idgenerator
|
||||
*/
|
||||
package com.yitter.contract;
|
||||
package com.github.yitter.contract;
|
||||
|
||||
public interface IIdGenerator {
|
||||
long newLong() throws IdGeneratorException;
|
||||
@@ -2,7 +2,7 @@
|
||||
* 版权属于:yitter(yitter@126.com)
|
||||
* 开源地址:https://gitee.com/yitter/idgenerator
|
||||
*/
|
||||
package com.yitter.contract;
|
||||
package com.github.yitter.contract;
|
||||
|
||||
public interface ISnowWorker {
|
||||
long nextId() throws IdGeneratorException;
|
||||
@@ -2,7 +2,7 @@
|
||||
* 版权属于:yitter(yitter@126.com)
|
||||
* 开源地址:https://gitee.com/yitter/idgenerator
|
||||
*/
|
||||
package com.yitter.contract;
|
||||
package com.github.yitter.contract;
|
||||
|
||||
public class IdGeneratorException extends RuntimeException {
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
* 版权属于:yitter(yitter@126.com)
|
||||
* 开源地址:https://gitee.com/yitter/idgenerator
|
||||
*/
|
||||
package com.yitter.contract;
|
||||
package com.github.yitter.contract;
|
||||
|
||||
/**
|
||||
* 雪花算法使用的参数
|
||||
@@ -2,7 +2,7 @@
|
||||
* 版权属于:yitter(yitter@126.com)
|
||||
* 开源地址:https://gitee.com/yitter/idgenerator
|
||||
*/
|
||||
package com.yitter.contract;
|
||||
package com.github.yitter.contract;
|
||||
|
||||
/**
|
||||
* Id生成时回调参数
|
||||
@@ -2,12 +2,12 @@
|
||||
* 版权属于:yitter(yitter@126.com)
|
||||
* 开源地址:https://gitee.com/yitter/idgenerator
|
||||
*/
|
||||
package com.yitter.core;
|
||||
package com.github.yitter.core;
|
||||
|
||||
import com.yitter.contract.ISnowWorker;
|
||||
import com.yitter.contract.IdGeneratorException;
|
||||
import com.yitter.contract.IdGeneratorOptions;
|
||||
import com.yitter.contract.OverCostActionArg;
|
||||
import com.github.yitter.contract.ISnowWorker;
|
||||
import com.github.yitter.contract.IdGeneratorOptions;
|
||||
import com.github.yitter.contract.OverCostActionArg;
|
||||
import com.github.yitter.contract.IdGeneratorException;
|
||||
|
||||
public class SnowWorkerM1 implements ISnowWorker {
|
||||
|
||||
@@ -2,10 +2,10 @@
|
||||
* 版权属于:yitter(yitter@126.com)
|
||||
* 开源地址:https://gitee.com/yitter/idgenerator
|
||||
*/
|
||||
package com.yitter.core;
|
||||
package com.github.yitter.core;
|
||||
|
||||
import com.yitter.contract.IdGeneratorException;
|
||||
import com.yitter.contract.IdGeneratorOptions;
|
||||
import com.github.yitter.contract.IdGeneratorOptions;
|
||||
import com.github.yitter.contract.IdGeneratorException;
|
||||
|
||||
public class SnowWorkerM2 extends SnowWorkerM1 {
|
||||
|
||||
@@ -2,14 +2,14 @@
|
||||
* 版权属于:yitter(yitter@126.com)
|
||||
* 开源地址:https://gitee.com/yitter/idgenerator
|
||||
*/
|
||||
package com.yitter.idgen;
|
||||
package com.github.yitter.idgen;
|
||||
|
||||
import com.yitter.contract.ISnowWorker;
|
||||
import com.yitter.contract.IdGeneratorException;
|
||||
import com.yitter.contract.IdGeneratorOptions;
|
||||
import com.yitter.contract.IIdGenerator;
|
||||
import com.yitter.core.SnowWorkerM1;
|
||||
import com.yitter.core.SnowWorkerM2;
|
||||
import com.github.yitter.contract.IIdGenerator;
|
||||
import com.github.yitter.contract.ISnowWorker;
|
||||
import com.github.yitter.contract.IdGeneratorException;
|
||||
import com.github.yitter.contract.IdGeneratorOptions;
|
||||
import com.github.yitter.core.SnowWorkerM1;
|
||||
import com.github.yitter.core.SnowWorkerM2;
|
||||
|
||||
|
||||
public class DefaultIdGenerator implements IIdGenerator {
|
||||
@@ -1,45 +1,43 @@
|
||||
/*
|
||||
* 版权属于:yitter(yitter@126.com)
|
||||
* 开源地址:https://gitee.com/yitter/idgenerator
|
||||
*/
|
||||
package com.yitter.idgen;
|
||||
|
||||
import com.yitter.contract.IdGeneratorException;
|
||||
import com.yitter.contract.IdGeneratorOptions;
|
||||
import com.yitter.contract.IIdGenerator;
|
||||
|
||||
/**
|
||||
* 这是一个调用的例子,默认情况下,单机集成者可以直接使用 nextId()。
|
||||
*/
|
||||
public class YitIdHelper {
|
||||
|
||||
private static IIdGenerator idGenInstance = null;
|
||||
|
||||
public static IIdGenerator getIdGenInstance() {
|
||||
return idGenInstance;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 设置参数,建议程序初始化时执行一次
|
||||
*
|
||||
* @param options
|
||||
*/
|
||||
public static void setIdGenerator(IdGeneratorOptions options) throws IdGeneratorException {
|
||||
idGenInstance = new DefaultIdGenerator(options);
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成新的Id
|
||||
* 调用本方法前,请确保调用了 SetIdGenerator 方法做初始化。
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public static long nextId() throws IdGeneratorException {
|
||||
if (idGenInstance == null) {
|
||||
idGenInstance = new DefaultIdGenerator(new IdGeneratorOptions((short) 1));
|
||||
}
|
||||
|
||||
return idGenInstance.newLong();
|
||||
}
|
||||
}
|
||||
/*
|
||||
* 版权属于:yitter(yitter@126.com)
|
||||
* 开源地址:https://gitee.com/yitter/idgenerator
|
||||
*/
|
||||
package com.github.yitter.idgen;
|
||||
|
||||
import com.github.yitter.contract.IIdGenerator;
|
||||
import com.github.yitter.contract.IdGeneratorException;
|
||||
import com.github.yitter.contract.IdGeneratorOptions;
|
||||
|
||||
/**
|
||||
* 这是一个调用的例子,默认情况下,单机集成者可以直接使用 nextId()。
|
||||
*/
|
||||
public class YitIdHelper {
|
||||
|
||||
private static IIdGenerator idGenInstance = null;
|
||||
|
||||
public static IIdGenerator getIdGenInstance() {
|
||||
return idGenInstance;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 设置参数,建议程序初始化时执行一次
|
||||
*/
|
||||
public static void setIdGenerator(IdGeneratorOptions options) throws IdGeneratorException {
|
||||
idGenInstance = new DefaultIdGenerator(options);
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成新的Id
|
||||
* 调用本方法前,请确保调用了 SetIdGenerator 方法做初始化。
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public static long nextId() throws IdGeneratorException {
|
||||
if (idGenInstance == null) {
|
||||
idGenInstance = new DefaultIdGenerator(new IdGeneratorOptions((short) 1));
|
||||
}
|
||||
|
||||
return idGenInstance.newLong();
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.yitter.test;
|
||||
package com.github.yitter.test;
|
||||
|
||||
import com.yitter.contract.IIdGenerator;
|
||||
import com.github.yitter.contract.IIdGenerator;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
@@ -1,9 +1,9 @@
|
||||
package com.yitter.test;
|
||||
package com.github.yitter.test;
|
||||
|
||||
import com.yitter.contract.IdGeneratorOptions;
|
||||
import com.yitter.contract.IIdGenerator;
|
||||
import com.yitter.idgen.DefaultIdGenerator;
|
||||
import com.yitter.idgen.YitIdHelper;
|
||||
import com.github.yitter.contract.IIdGenerator;
|
||||
import com.github.yitter.contract.IdGeneratorOptions;
|
||||
import com.github.yitter.idgen.DefaultIdGenerator;
|
||||
import com.github.yitter.idgen.YitIdHelper;
|
||||
|
||||
public class StartUp {
|
||||
|
||||
@@ -63,6 +63,8 @@ QQ群:646049993
|
||||
|
||||
6.不依赖任何外部缓存和数据库。(当然 WorkerId 须由外部指定)
|
||||
|
||||
7.基础功能,开箱即用,无需配置文件、数据库连接等。
|
||||
|
||||
|
||||
## 性能数据
|
||||
(参数:10位自增序列,1000次漂移最大值)
|
||||
|
||||
3
Rust/source/build-release.bat
Normal file
3
Rust/source/build-release.bat
Normal file
@@ -0,0 +1,3 @@
|
||||
@echo off
|
||||
cargo build --release
|
||||
@pause
|
||||
Reference in New Issue
Block a user