首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏凯哥Java

    Redis实战9-全局唯一ID

    发布优惠券的时候,每个店铺都可以发布优惠券,当用户抢购的时候,优惠券表中的id如果使用数据库的自增长ID会存在以下问题:1:id的规律太明显,容易被刷2:当数据量很大的时候,会受到单表数据的限制缺点场景分析 :id规律场景:如果我们的id具有太明显的规则,用户或者说商业对手很容易猜测出来我们的一些敏感信息,比如商城在一天时间内,卖出了多少单,这明显不合适。 id的唯一性。 全局ID生成器全局ID生成器,是一种在分布式系统下用来生成全局唯一的ID工具,一般需要瞒住下列特性:唯一性、高可用、递增性、安全性、高性能全局唯一ID生成策略:UUID、Redis自增长、雪花算法、数据库自增 Redis自增ID策略:1:每天一个key,方便统计订单量;2:ID都在是时间戳+计数器实战:基于Redis拼接其他信息来实现全局唯一ID全局唯一ID使用long类型的,其中时间戳是基于某一个时间点开始的

    1.6K40编辑于 2023-01-29
  • 来自专栏JavaEdge

    mybatis映射xml配置文件报错:<statement> or DELIMITER expected, got ‘id

    编写mybatis生成的xml文件时,发现sql节点内报错。 这是IDEA的bug,发生在MyBatis的Mapper的XML文件的sql节点上,第一个字段是什么错误中最后一个单引号内部就是什么。

    4.6K30发布于 2021-02-23
  • 来自专栏明明如月的技术专栏

    将非数字的用户ID映射到位图的方案探讨

    一、背景 今天技术群里有同学提出想讲非数字的用户 ID 映射到位图中,计划采用 murmur 3 哈希算法,询问冲撞率是多少。 借着这个机会简单聊下非数字用户ID 如何更好地避免冲突,是否有更好的思路。 二、方案 2.1 将非数字的用户ID 映射成唯一的数字 2.1.1 直接转换:参考 Base 64 算法自定义转换函数 可以参考 base 64 算法 ,根据自己用户 ID 的的字符构成,改造 Base64 算法实现非数字的用户ID 到十进制数字的转换。 我们可以为用户表新增一个数字的 ID,可以采用分布式 ID 生成器(分布式系统),将老数据生成一遍,新增用户表行时也调用该生成器写入数字的 ID,这样就不需要转换。

    1.6K30编辑于 2023-03-09
  • 来自专栏日拱一兵

    9种分布式ID生成之美团(Leaf)实战

    引言 前几天写过一篇《一口气说出 9种 分布式ID生成方式,面试官有点懵了》,里边简单的介绍了九种分布式ID生成方式,但是对于像美团(Leaf)、滴滴(Tinyid)、百度(uid-generator) 不了解分布式ID的同学,先行去看《一口气说出 9种 分布式ID生成方式,面试官有点懵了》温习一下基础知识,这里就不再赘述了 美团(Leaf) Leaf是美团推出的一个分布式ID生成服务,名字取自德国哲学家 相当于从数据库批量的获取自增ID,每次从数据库取出一个号段范围,例如 (1,1000] 代表1000个ID,业务服务将号段在本地生成1~1000的自增ID并加载到内存.。 对max_id字段做一次update操作,update max_id= max_id + step,update成功则说明新号段获取成功,新的号段范围是(max_id ,max_id +step]。 ZooKeeper,存在服务不可用风险(实在不知道有啥缺点了) 三、Leaf监控 请求地址:http://127.0.0.1:8080/cache 针对服务自身的监控,Leaf提供了Web层的内存数据映射界面

    1.9K20发布于 2020-03-11
  • 来自专栏编程进阶实战

    在 .NET 9 中使用 Mapster 快速、高效的实现对象映射

    前言 在日常开发中,我们常常需要将一个对象映射到另一个对象,比如将数据库实体转换为数据传输对象(DTO),或将请求模型映射为领域模型。 Mapster 介绍 Mapster 是一个开源免费(MIT license)、快速、高性能、灵活且易于使用的 .NET 对象映射库,用于在 .NET 用程序中进行对象之间的转换和映射操作,大幅减少手动赋值带来的重复代码 只要属性名和类型一致,Mapster 自动完成映射,无需任何配置! : 自定义映射规则 当属性名或类型不一致时,可通过配置指定映射逻辑。 /// 用于集中注册项目中所有自定义的对象映射规则, /// 避免映射逻辑分散在各处,提升可维护性与可测试性。

    61310编辑于 2025-10-22
  • 来自专栏全球技术精选

    使用 C# 9 的records作为强类型ID - 初次使用

    强类型ID 实体通常是整数,GUID或者string类型,因为数据库直接支持这些类型,但是,如果实体的ID的类型是一样的,比如都是整数的ID,这有可能会出现ID值传错的问题,看下边的示例。 幸运的是,可以定义强类型id来解决这个问题,这个想法很简单,为每个实体的ID声明一个特定的类型,现在需要这样写: // 使用强类型ID代替整数ID public void AddProductToOrder 编写一个强类型的id public readonly struct ProductId : IEquatable<ProductId> { public ProductId(int value) a.Equals(b); } 上面的代码没什么难的,但是如果每个实体都需要的话,那确实有点麻烦,在C# 9 可以使用source generators来完成这些,但是C# 9还引入了另一个功能,使用起来更方便 现在为模型中的每个实体编写一个强类型的id是不是很简单,使用Record 非常方便,当然,还有其他问题需要考虑,例如JSON序列化,与Entity Framework Core一起使用等,但这是另一篇文章的故事

    87020发布于 2021-01-21
  • 来自专栏机器学习算法与Python学习

    机器学习(9)之ID3算法详解及python实现

    本文就对决策树算法ID3思想做个总结。 ID3算法的信息论基础 1970年代,一个叫昆兰的大牛找到了用信息论中的熵来度量决策树的决策选择过程,它的简洁和高效就引起了轰动,昆兰把这个算法叫做ID3。 在决策树ID3算法中叫做信息增益。ID3算法就是用信息增益来判断当前节点应该用什么特征来构建决策树。信息增益大,则越适合用来分类。 下面这个图可以比较清晰的反映他们之间的关系。 其中有9个输出为0, 6个输出为1。 样本中有个特征A,取值为A1,A2和A3。 ID3算法的不足 ID3算法虽然提出了新思路,但是还是有很多值得改进的地方。     a) ID3没有考虑连续特征,比如长度,密度都是连续值,无法在ID3运用。这大大限制了ID3的用途。    c) ID3算法对于缺失值的情况没有做考虑   d) 没有考虑过拟合的问题 ID3 算法的作者昆兰基于上述不足,对ID3算法做了改进,这就是C4.5算法。

    1.9K70发布于 2018-04-04
  • 来自专栏Java课堂

    9种分布式ID生成之 美团(Leaf)实战

    整理了一些Java方面的架构、面试资料(微服务、集群、分布式、中间件等),有需要的小伙伴可以关注公众号【程序员内点事】,无套路自行领取 引言 前几天写过一篇《一口气说出 9种 分布式ID生成方式,面试官有点懵了 不了解分布式ID的同学,先行去看《一口气说出 9种 分布式ID生成方式,面试官有点懵了》温习一下基础知识,这里就不再赘述了 美团(Leaf) Leaf是美团推出的一个分布式ID生成服务,名字取自德国哲学家 相当于从数据库批量的获取自增ID,每次从数据库取出一个号段范围,例如 (1,1000] 代表1000个ID,业务服务将号段在本地生成1~1000的自增ID并加载到内存.。 对max_id字段做一次update操作,update max_id= max_id + step,update成功则说明新号段获取成功,新的号段范围是(max_id ,max_id +step]。 ZooKeeper,存在服务不可用风险(实在不知道有啥缺点了) 三、Leaf监控 请求地址:http://127.0.0.1:8080/cache 针对服务自身的监控,Leaf提供了Web层的内存数据映射界面

    4.1K20发布于 2020-02-28
  • 来自专栏Devops专栏

    Mybatis映射文件深入 - 新增数据后返回主键ID - 动态SQL - SQL片段

    Mybatis映射文件深入 - 新增数据后返回主键ID - 动态SQL - SQL片段 前言 在前面的篇章中,我们已经认识了如何使用 resultMap标签 映射查询的结果集字段、多条件查询、模糊查询。 下面我们继续来深入认识一下 MyBatis 的映射文件。 新增数据后,返回主键 ID 应用场景 向数据库保存一个user对象后, 然后在控制台打印此新增user的主键值(id) # 点外卖 1. * */ //int addUser(@Param("user") User user); // 设置 @Param 参数注解后,在映射xml文件必须写 #{user.属性名} * from user 像上面这样, 根据传入的参数不同, 需要执行的SQL的结构就会不同,这就是动态SQL 而对于在映射配置文件中动态设置SQL的话,我们就需要熟悉一下相关判断的标签文件。 2.4 知识小结 MyBatis映射文件配置 <select>:查询 <insert>:插入 <update>:修改 <delete>:删除 <selectKey>:插入返回主键 <where

    1.4K30编辑于 2022-01-17
  • 来自专栏全栈程序员必看

    Java神操作之利用Mybatis的resultMap的id标签进行分组映射「建议收藏」

    --分组测试--> <select id="test" resultMap="test"> select * from mall_shoppingcart where company_id "companyIdTest" </select> resultMap <resultMap type="com.ls.aluminum.supply.mallothers.bo.Test" id ="test"> <id property="shopId" column="shop_id" jdbcType="INTEGER"/> <collection property ="UMallShoppingcartMap"> <id property="shoppingcartId" column="shoppingcart_id" jdbcType="INTEGER ="shopId" column="shop_id" jdbcType="INTEGER"/> <result property="productId" column="product_<em>id</em>

    1.5K21编辑于 2022-11-19
  • 来自专栏JavaEdge

    DDD的9种上下文映射模式,你用过哪些?

    怎么想、怎么做,全在乎自己「不断实践中寻找适合自己的大道」 1 简介 1.1 什么是上下文映射(Context Mapping) 指限界上下文之间的模型映射关系。 1.2 为何需要上下文映射? 尽管我们拆分了系统,它们终究还是一个系统,免不了交互。 在我们定义好不同的限界上下文,将它们之间的交互呈现出来之后,就得到了一张上下文映射图。上下文映射图是可以帮助我们理解系统的各个部分之间,是怎样进行交互的,建立全局性认知。 日常开发很常见问题,由于限界上下文,当我们不同上下文之间需要交互时,如何将同一概念模型进行映射呢?就需要上下文映射。 : 3 总结 上下文、团队之间的关系,重叠模型的映射关系。

    74710编辑于 2025-05-29
  • 来自专栏Guangdong Qi

    Face ID和Touch ID 译文and集成篇Face ID和Touch ID

    译文篇: Face ID和Touch ID 尽可能支持生物识别。Face ID和Touch ID是人们信任的安全,熟悉的身份验证方法。 例如,使用Face ID登录到您的应用程序的按钮应标题为“使用Face ID登录”而不是“Touch ID登录”。 参考认证方法准确。不要在支持Face ID的设备上引用Touch ID。 本方法以弃用 // LAErrorTouchIDLockout NS_ENUM_DEPRECATED(10_11, 10_13, 9_0, 11_0, "use LAErrorBiometryLockout // LAErrorAppCancel NS_ENUM_AVAILABLE(10_11, 9_0) = kLAErrorAppCancel, // // /// LAContext通过这个已经失效 // LAErrorInvalidContext NS_ENUM_AVAILABLE(10_11, 9_0) = kLAErrorInvalidContext, // // /// 认证无法启动

    4.4K60发布于 2018-05-24
  • 来自专栏生物信息学、python、R、linux

    蛋白ID转基因ID

    将Ensembl 中的蛋白ID转化成基因ID,可以通过clusterProfiler这个包。 clusterProfiler") BiocManager::install("org.Rn.eg.db") library(clusterProfiler) library(org.Rn.eg.db) 查看可以转化的ID PFAM" "PMID" "PROSITE" "REFSEQ" [21] "SYMBOL" "UNIGENE" "UNIPROT" 将蛋白ID 转为基因ID: PROT2SYMBOL<-bitr(data$Protein.Group.Accessions,fromType = "ENSEMBLPROT",toType = "SYMBOL",OrgDb

    4.4K20发布于 2020-12-31
  • 来自专栏全球技术精选

    使用 C# 9 的records作为强类型ID - JSON序列化

    在本系列的上一篇文章中,我们注意到强类型ID的实体,序列化为 JSON 的时候报错了,就像这样: { "id": { "value": 1 }, "name": , 对于反序列化,创建一个强类型id的实例,然后给它赋值。 不过,还有有一个问题:我们只为添加了一个对于ProductId的转换器,但我不想为每种类型的强类型ID添加另一个转换器! ": "1", "name": "Apple", "unitPrice": 0.8 } 几乎是正确的……除了id值不应序列化为字符串,而应序列化为数字,如果id值是GUID或字符串而不是 Apple", "unitPrice": 0.8 } 原文作者: thomas levesque 原文链接:https://thomaslevesque.com/2020/12/07/csharp-9-

    2.2K10发布于 2021-01-21
  • 来自专栏全球技术精选

    使用 C# 9 的records作为强类型ID - 路由和查询参数

    上一篇文章,我介绍了使用 C# 9 的record类型作为强类型id,非常简洁 public record ProductId(int Value); 但是在强类型id真正可用之前,还有一些问题需要解决 [HttpGet("{id}")] public ActionResult<Product> GetProduct(ProductId id) { return Ok( new Product { Id = id, Name = "Apple", UnitPrice = 0.8M 通用强类型id转换器 首先,让我们创建一个Helper •检查类型是否为强类型ID,并获取值的类型•获取值得类型,创建并缓存一个委托 public static class StronglyTypedIdHelper ToString() => Value.ToString(); } 原文作者: thomas levesque 原文链接:https://thomaslevesque.com/2020/11/23/csharp-9-

    2.7K20发布于 2021-01-21
  • 来自专栏别先生

    Hibernate之集合映射的使用(Set集合映射,list集合映射,Map集合映射)

    ,即主键,所有为了方便用id列,因为id是数据库系统维护可以保证唯一,所以就把这列作为主键,简单的说为了方便;如果找不到合适的列,除了使用id列以为作为主键,也可以使用联合主键,即多列的值作为一个主键, -- 第一部分:数据库连接配置 --> 9 <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver java.util.List; 4 import java.util.Map; 5 import java.util.Set; 6 7 /** 8 * @author BieHongLi 9 ; 38 } 39 public void setId(int id) { 40 this.id = id; 41 } 42 public String -- 主键映射 --> 9 <id name="id" column="id"> 10 <generator class="native"></generator

    3.6K100发布于 2018-01-02
  • 来自专栏sowhat1412

    9种分布式ID生成方式,总有一款适合你

    此时一个能够生成全局唯一ID的系统是非常必要的。那么这个全局唯一ID就叫分布式ID。 分布式ID需满足那些条件 全局唯一:基本要求就是必须保证ID是全局性唯一的。 UUID.randomUUID().toString().replaceAll("-",""); System.out.println(uuid); } 输出结果 99a7d0925b294a53b2f4db9d5a3fb798 基于数据库自增ID 基于数据库的auto_increment自增ID完全可以充当分布式ID,具体实现:需要一个单独的MySQL实例用来生成ID,建表结构如下: CREATE DATABASE `SoWhat_ID 分别就是: 1、3、5、7、9 2、4、6、8、10 但是如果两个还是无法满足咋办呢? 的测试url:http://localhost:8080/api/snowflake/get/test 9.

    1.5K20发布于 2020-11-05
  • 来自专栏CSDNToQQCode

    MyBatis 数组映射 与 集合映射

    Integer addApiRequestParam(List<ApiRequestParam> apiRequestParam); <insert id="addApiRequestParam" parameterType </foreach> </insert> 默认 collection="list" 不需要在接口中 @Param,而且这里 “list” 四个字母和接口中的命名不一样没事的,因为会自动根据类型映射

    2K30编辑于 2022-11-28
  • 来自专栏玩转JavaEE

    ElasticSearch 动态映射与静态映射

    映射就是 Mapping,它用来定义一个文档以及文档所包含的字段该如何被存储和索引。所以,它其实有点类似于关系型数据库中表的定义。 9.1 映射分类 动态映射 顾名思义,就是自动创建出来的映射。 es 根据存入的文档,自动分析出来文档中字段的类型以及存储方式,这种就是动态映射。 举一个简单例子,新建一个索引,然后查看索引信息: ? mapper_parsing_exception", "reason" : "failed to parse field [remark] of type [date] in document with id mapper_parsing_exception", "reason" : "failed to parse field [remark] of type [date] in document with id 静态映射 略。 9.2 类型推断 es 中动态映射类型推断方式如下: ?

    3.4K10发布于 2020-11-26
  • 来自专栏生物信息学、python、R、linux

    Ensembl ID

    常见的数据库id介绍:http://www.biotrainee.com/thread-411-1-1.html Ensembl ID的介绍:https://asia.ensembl.org/Help/ id=488 ENS代表 Ensembl ID。 image.png G表示:ID指向一个gene T表示:ID指向一个transcript 一个基因有多个对应的转录本 后面11位数字表示基因的编号,小数点ID的版本,数字几就是第几版,在分析时需要去除 去除方法: ann$gene_id<-factor(unlist(lapply(as.character(ann$V1),function(x){strsplit(x, "\\.")[[1]][1]}) image.png 参考:https://www.jieandze1314.com/post/cnposts/ensembl-id/ 欢迎关注微信公众号:生信编程日常

    2.1K20发布于 2020-04-01
领券