From 3aa9f6f42b014e16d74eab4f27b63fd231f8174b Mon Sep 17 00:00:00 2001 From: zhouzj Date: Mon, 22 Mar 2021 14:28:26 +0800 Subject: [PATCH] auto commit --- C#.NET/source/Yitter.IdGenTest/Program.cs | 6 +- .../Yitter.IdGenerator/Core/SnowWorkerM1.cs | 7 + .../Yitter.IdGenerator/DefaultIdGenerator.cs | 7 +- .../com/yitter/idgen/DefaultIdGenerator.java | 7 +- .../main/java/com/yitter/test/GenTest.java | 6 +- .../main/java/com/yitter/test/StartUp.java | 13 +- Rust/README.md | 4 + Rust/source/.gitignore | 258 ++++++++++++++++++ 8 files changed, 295 insertions(+), 13 deletions(-) create mode 100644 Rust/README.md create mode 100644 Rust/source/.gitignore diff --git a/C#.NET/source/Yitter.IdGenTest/Program.cs b/C#.NET/source/Yitter.IdGenTest/Program.cs index 053b2df..5106efd 100644 --- a/C#.NET/source/Yitter.IdGenTest/Program.cs +++ b/C#.NET/source/Yitter.IdGenTest/Program.cs @@ -15,7 +15,7 @@ namespace Yitter.OrgSystem.TestA static bool single = true; - static bool outputLog = true; + static bool outputLog = false; static IIdGenerator IdGen = null; static IList testList = new List(); static bool checkResult = false; @@ -38,7 +38,7 @@ namespace Yitter.OrgSystem.TestA // MaxSeqNumber = 200, - BaseTime = DateTime.Now.AddYears(-10), + // BaseTime = DateTime.Now.AddYears(-10), }; IIdGenerator IdGen = new DefaultIdGenerator(options); @@ -54,7 +54,7 @@ namespace Yitter.OrgSystem.TestA { Go(options); Thread.Sleep(1000); // 每隔3秒执行一次Go - Console.WriteLine("Hello World!"); + Console.WriteLine("Hello World! C#"); } } diff --git a/C#.NET/source/Yitter.IdGenerator/Core/SnowWorkerM1.cs b/C#.NET/source/Yitter.IdGenerator/Core/SnowWorkerM1.cs index 6b04322..8018678 100644 --- a/C#.NET/source/Yitter.IdGenerator/Core/SnowWorkerM1.cs +++ b/C#.NET/source/Yitter.IdGenerator/Core/SnowWorkerM1.cs @@ -117,6 +117,8 @@ namespace Yitter.IdGenerator private void BeginOverCostAction(in long useTimeTick) { + return; + if (GenAction == null) { return; @@ -137,6 +139,7 @@ namespace Yitter.IdGenerator { _TermIndex = 0; } + return; if (GenAction == null) { @@ -154,6 +157,8 @@ namespace Yitter.IdGenerator private void BeginTurnBackAction(in long useTimeTick) { + return; + if (GenAction == null) { return; @@ -170,6 +175,8 @@ namespace Yitter.IdGenerator private void EndTurnBackAction(in long useTimeTick) { + return; + if (GenAction == null) { return; diff --git a/C#.NET/source/Yitter.IdGenerator/DefaultIdGenerator.cs b/C#.NET/source/Yitter.IdGenerator/DefaultIdGenerator.cs index 4a1afc8..f035919 100644 --- a/C#.NET/source/Yitter.IdGenerator/DefaultIdGenerator.cs +++ b/C#.NET/source/Yitter.IdGenerator/DefaultIdGenerator.cs @@ -45,10 +45,15 @@ namespace Yitter.IdGenerator throw new ApplicationException("error:WorkerIdBitLength + SeqBitLength <= 22"); } + if (options.WorkerIdBitLength <= 0) + { + throw new ApplicationException("WorkerIdBitLength error.(range:[1, 21])"); + } + var maxWorkerIdNumber = Math.Pow(2, options.WorkerIdBitLength) - 1; if (options.WorkerId < 0 || options.WorkerId > maxWorkerIdNumber) { - throw new ApplicationException("WorkerId error. (range:[1, " + maxWorkerIdNumber + "]"); + throw new ApplicationException("WorkerId error. (range:[0, " + (maxWorkerIdNumber > 0 ? maxWorkerIdNumber : 63) + "]"); } if (options.SeqBitLength < 2 || options.SeqBitLength > 21) diff --git a/Java/source/src/main/java/com/yitter/idgen/DefaultIdGenerator.java b/Java/source/src/main/java/com/yitter/idgen/DefaultIdGenerator.java index 3563536..ab4e541 100644 --- a/Java/source/src/main/java/com/yitter/idgen/DefaultIdGenerator.java +++ b/Java/source/src/main/java/com/yitter/idgen/DefaultIdGenerator.java @@ -29,9 +29,14 @@ public class DefaultIdGenerator implements IIdGenerator { throw new IdGeneratorException("error:WorkerIdBitLength + SeqBitLength <= 22"); } + if (options.WorkerIdBitLength <= 0) + { + throw new IdGeneratorException("WorkerIdBitLength error.(range:[1, 21])"); + } + double maxWorkerIdNumber = Math.pow(2, options.WorkerIdBitLength) - 1; if (options.WorkerId < 0 || options.WorkerId > maxWorkerIdNumber) { - throw new IdGeneratorException("WorkerId error. (range:[1, " + maxWorkerIdNumber + "]"); + throw new IdGeneratorException("WorkerId error. (range:[0, " + (maxWorkerIdNumber > 0 ? maxWorkerIdNumber : 63) + "]"); } if (options.SeqBitLength < 2 || options.SeqBitLength > 21) { diff --git a/Java/source/src/main/java/com/yitter/test/GenTest.java b/Java/source/src/main/java/com/yitter/test/GenTest.java index 06f6d8d..c7d85f6 100644 --- a/Java/source/src/main/java/com/yitter/test/GenTest.java +++ b/Java/source/src/main/java/com/yitter/test/GenTest.java @@ -1,6 +1,7 @@ package com.yitter.test; import com.yitter.contract.IIdGenerator; + import java.util.HashSet; import java.util.Set; @@ -20,14 +21,17 @@ public class GenTest { public void GenStart() { long start = System.currentTimeMillis(); + long id = 0; + for (int i = 0; i < GenIdCount; i++) { - long id = IdGen.newLong(); + id = IdGen.newLong(); // IdSet.add(id); } long end = System.currentTimeMillis(); long time = end - start; + System.out.println(id); System.out.println("++++++++++++++++++++++++++++++++++++++++WorkerId: " + WorkerId + ", total: " + time + " ms"); diff --git a/Java/source/src/main/java/com/yitter/test/StartUp.java b/Java/source/src/main/java/com/yitter/test/StartUp.java index 3e01abb..49f2a12 100644 --- a/Java/source/src/main/java/com/yitter/test/StartUp.java +++ b/Java/source/src/main/java/com/yitter/test/StartUp.java @@ -25,9 +25,9 @@ public class StartUp { // options.TopOverCostCount = 10000; - // options.WorkerIdBitLength = 6; - // options.SeqBitLength = 9; - // options.MinSeqNumber = 11; + options.WorkerIdBitLength = 6; + options.SeqBitLength = 6; + // options.MinSeqNumber = 5; // options.MaxSeqNumber = 200; options.Method = method; @@ -44,14 +44,13 @@ public class StartUp { System.out.println("这是用方法 " + method + " 生成的 Id:" + newId); // 然后循环测试一下,看看并发请求时的耗时情况 - try - { + try { while (true) { genTest.GenStart(); Thread.sleep(1000); // 每隔1秒执行一次GenStart - System.out.println("Hello World!"); + System.out.println("Hello World! Java"); } - } catch (InterruptedException e) { + } catch (InterruptedException e) { e.printStackTrace(); } } diff --git a/Rust/README.md b/Rust/README.md new file mode 100644 index 0000000..aab2eef --- /dev/null +++ b/Rust/README.md @@ -0,0 +1,4 @@ +# idgenerator + +something is going on. + diff --git a/Rust/source/.gitignore b/Rust/source/.gitignore new file mode 100644 index 0000000..1e8572c --- /dev/null +++ b/Rust/source/.gitignore @@ -0,0 +1,258 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. + +# User-specific files +*.suo +*.user +*.userosscache +*.sln.docstates +*.editorconfig + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +bld/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ + +# Visual Studio 2015 cache/options directory +**/.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUNIT +*.VisualState.xml +TestResult.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# DNX +project.lock.json +artifacts/ + +*_i.c +*_p.c +*_i.h +*.ilk +*.meta +*.obj +*.pch +*.pdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# JustCode is a .NET coding add-in +.JustCode + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# TODO: Comment the next line if you want to checkin your web deploy settings +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +*.snupkg +# The packages folder can be ignored because of Package Restore +**/packages/* +# except build/, which is used as an MSBuild target. +!**/packages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/packages/repositories.config +# NuGet v3's project.json files produces more ignoreable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.pfx +*.publishsettings +node_modules/ +orleans.codegen.cs + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm + +# SQL Server files +*.mdf +*.ldf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# JetBrains Rider +.idea/ +*.sln.iml + + +# macOS +.DS_Store -- GitLab