勇哥Java实战
勇哥Java实战
> 另外,对于 `判断是否有极限情况 ,1ms产生的数据超过了最大序号,那么最有可能原因是 当前机器的时间钟不一样` 这句话我没有完全理解。 在极限环境下,如果1ms并发量很高(约高于273次/ms),得到的counter值的确会远不止是15。可是为什么会认为是时间钟问题?作者意思是这些机器的系统时钟不同,导致虽然大家计算出的currentTime是一样的,但请求并不都是在这1ms内发生的? > 在方法createUniqueId中,如果本地缓冲中没有获取到预留的SequenceEntity。会在Redis中自增15的步长,这个值的TTL设为120s。 > > ```java > ....... > LocalSequence.SequenceEntity sequenceEntity = LocalSequence.getSeqEntity(); > if (sequenceEntity != null) { > return SnowFlakeIdGenerator.getUniqueId(sequenceEntity.getCurrentTime(), workerId, sequenceEntity.getSeq());...
我认为这里也是基因法。 比如订单id的生成 workerId 也是按照用户id来生成的。 有些场景,查询用户订单列表 ,传递用userId,通过用户id就可以获取workerID 。 之所以使用笛卡尔积,比如分片字段有两个 比如 userId , areaId 的场景。
> 我的思路是这样的:假如有四个分片,segment = 1024/4 = 256 , slot 是对 1024取余 ,所以 slot / segment = 该 shardingkey 对应的分片。
理论上是可用的,但是我没有尝试过。
> 换windows机器部署服务,将word转pdf的实现从libreoffice 替换成wps @Tianner 可以替换成 wps 吗?
> 预览word的复杂的图表失败,word文档格式是docx > > 源文档图表: > > > 预览后图片: > > 有原始word 吗 ? 我试试看