首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

张嘴,深入浅出一下Java的HashMap

平常的开发当中,HashMap是我最常用的Map类(没有之一),它支持null键和null,是绝大部分利用键值对存取场景的首选。...我们通常用一串指纹来映射某一个人,别小瞧手指头那么大点的指纹,在你所处的范围内很难找出第二个和你相同的(人的散列算法也好厉害,有没有?)。...null : e.value; } 02、散列冲突怎么解决 尽管散列很难重复,我们还是要明白,这种转换是一种压缩映射,也就是,散列的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出。...最容易想到的解决办法就是:当关键字key2的散列value与key1的散列value出现冲突,以value为基础,产生另一个散列value1,如果value1与value不再冲突,则将value1...设置初始容量应该考虑到映射中所需的条目数及其加载因子,以便最大限度地减少扩容的操作次数。

56930
您找到你想要的搜索结果了吗?
是的
没有找到

大佬都在用的数据库设计规范!你不点进来看看嘛?

is前缀 需要在设置从is_xxx到Xxx的映射关系 数据库表示是与否的,使用tinyint类型 坚持is_ xxx的命名方式是为了明确取值含义和取值范围 表名,字段名必须使用小写字母...多表关联查询,保证被关联的字段需要有索引 varchar字段上建立索引,必须指定索引长度,没必要对全字段建立索引,根据实际文本区分度决定索引长度即可 索引长度与区分度是一对矛盾体 一般对字符串类型数据...TRUNCATE TABLE比DELETE速度快,且使用的系统和事务日志资源少,但TRUNCATE无事务且不触发trigger, 有可能造成事故,所以不要使用TRUNCATE语句 ORM映射规约 表查询中...is, 而数据库字段必须加is_, 要求resultMap中进行字段与属性之间的映射 定义POJO类以及数据库字段定义规定,中增加映射,是必须的 MyBatis Generator生成的代码中,...,但是类型不可控 更新数据表记录,必须同时更新记录对应的gmt_modified字段为当前时间 不要写一个大而全的数据更新接口: 不要传入一个POJO类进行更新 执行SQL,不要更新无改动的字段

44820

SpringBoot最全注解大全

,则既可以使用该标记,也可以使用@Table注解中的@UniqueConstraint (3) nullable属性:nullable属性表示该字段是否可以为null,默认为true (4) insertable...属性:insertable属性表示使用”INSERT”语句插入数据,是否需要插入该字段 (5) updateable属性:updateable属性表示使用”UPDATE”语句插入数据,是否需要更新该字段...属性:length属性表示字段的长度,当字段类型为varchar,该属性才有效,默认为255个字符 (10)precision属性和scale属性:precision属性和scale属性一起表示精度...,当字段类型为double,precision表示数值的总长度,scale表示小数点所占的位数 具体如下: double类型将在数据库中映射为double类型,precision和scale属性无效...@PostUpdate事件实体的状态同步到数据库之后触发,同步事务提交发生。

5.3K30

SpringBoot注解最全详解(整合超详细版本)

,则既可以使用该标记,也可以使用@Table注解中的@UniqueConstraint (3) nullable属性:nullable属性表示该字段是否可以为null,默认为true (4) insertable...属性:insertable属性表示使用”INSERT”语句插入数据,是否需要插入该字段 (5) updateable属性:updateable属性表示使用”UPDATE”语句插入数据,是否需要更新该字段...属性:length属性表示字段的长度,当字段类型为varchar,该属性才有效,默认为255个字符 (10)precision属性和scale属性:precision属性和scale属性一起表示精度...,当字段类型为double,precision表示数值的总长度,scale表示小数点所占的位数 具体如下: double类型将在数据库中映射为double类型,precision和scale属性无效...@PostUpdate事件实体的状态同步到数据库之后触发,同步事务提交发生。

4.7K10

SpringBoot注解最全详解(整合超详细版本)

,也可以使用@Table注解中的@UniqueConstraint nullable属性:nullable属性表示该字段是否可以为null,默认为true insertable属性:insertable...属性表示使用”INSERT”语句插入数据,是否需要插入该字段 updateable属性:updateable属性表示使用”UPDATE”语句插入数据,是否需要更新该字段 insertable...当字段类型为varchar,该属性才有效,默认为255个字符 precision属性和scale属性:precision属性和scale属性一起表示精度,当字段类型为double,precision...DATE,TIME还是TIMESTAMP.此外,String的默认映射类型为VARCHAR,如果要将 String 类型映射到特定数据库的 BLOB 或TEXT字段类型. 4....@PostUpdate事件实体的状态同步到数据库之后触发,同步事务提交发生。

63310

Android埋点技术概览

而按照埋点采集数据类型不同,可以把埋点采集的数据分为以下几类: 点击埋点:用户点击了某一个icon; 页面埋点:用户进入应用的某个具体页面; 曝光埋点:某个模块(区域)被用户看到的次数; 点击和页面埋点都有明确的触发时间...(事件),而曝光埋点则没有明确的触发时间点,一般认为Android中View被渲染出来就认为是一个曝光。...计算对数据进行筛选,选出可用的数据,该技术方案特点: 优点:埋点的开发量小,数据上报全面; 缺点:数据量大,上报的数据里可能有大量的没有价值的数据。...HubbleData之Android无埋点实践 但传统的无埋点有三个致命的缺点: 埋点字段有限,没有办法携带精确的业务字段; 数据量太大,后台存储压力很大; View的唯一ID会随着页面的变化而变化,多个版本的数据需要在后台进行数据映射...这几个缺点也是很多公司选择埋点的解决方案没有选择无埋点的原因,这里有没有办法去进行一个改进的设计呢?

3.3K20

SpringBoot 注解最全详解 (整合超详细版本)

,则既可以使用该标记,也可以使用 @Table 注解中的 @UniqueConstraint - nullable 属性:nullable 属性表示该字段是否可以为 null ,默认为 true -...insertable 属性:insertable 属性表示使用”INSERT” 语句插入数据,是否需要插入该字段 - updateable 属性:updateable 属性表示使用”UPDATE...属性定义了包含当前字段的表名 - length 属性:length 属性表示字段的长度,当字段类型为 varchar ,该属性才有效,默认为 255 个字符 - precision 属性和 scale...此外, String 的默认映射类型为 VARCHAR, 如果要将 String 类型映射到特定数据库的 BLOB 或 TEXT 字段类型. 4....@PostUpdate 事件实体的状态同步到数据库之后触发,同步事务提交发生。

86540

后端必备:常用注解总结!

,也可以使用@Table注解中的@UniqueConstraint nullable属性:nullable属性表示该字段是否可以为null,默认为true insertable属性:insertable...属性表示使用”INSERT”语句插入数据,是否需要插入该字段 updateable属性:updateable属性表示使用”UPDATE”语句插入数据,是否需要更新该字段 insertable...varchar,该属性才有效,默认为255个字符 precision属性和scale属性:precision属性和scale属性一起表示精度,当字段类型为double,precision表示数值的总长度...DATE,TIME还是TIMESTAMP.此外,String的默认映射类型为VARCHAR,如果要将 String 类型映射到特定数据库的 BLOB 或TEXT字段类型. 4....@PostUpdate事件实体的状态同步到数据库之后触发,同步事务提交发生。

79340

SpringBoot注解最全详解

,则既可以使用该标记,也可以使用@Table注解中的@UniqueConstraint 3 nullable属性:nullable属性表示该字段是否可以为null,默认为true 4 insertable...属性:insertable属性表示使用”INSERT”语句插入数据,是否需要插入该字段 5 updateable属性:updateable属性表示使用”UPDATE”语句插入数据,是否需要更新该字段...属性:length属性表示字段的长度,当字段类型为varchar,该属性才有效,默认为255个字符 10 precision属性和scale属性:precision属性和scale属性一起表示精度...,当字段类型为double,precision表示数值的总长度,scale表示小数点所占的位数 具体如下: 1.double类型将在数据库中映射为double类型,precision和...@PostUpdate事件实体的状态同步到数据库之后触发,同步事务提交发生。

90020

SpringBoot注解最全详解

,则既可以使用该标记,也可以使用@Table注解中的@UniqueConstraint 3 nullable属性:nullable属性表示该字段是否可以为null,默认为true 4 insertable...属性:insertable属性表示使用”INSERT”语句插入数据,是否需要插入该字段 5 updateable属性:updateable属性表示使用”UPDATE”语句插入数据,是否需要更新该字段...属性:length属性表示字段的长度,当字段类型为varchar,该属性才有效,默认为255个字符 10 precision属性和scale属性:precision属性和scale属性一起表示精度...,当字段类型为double,precision表示数值的总长度,scale表示小数点所占的位数 具体如下: 1.double类型将在数据库中映射为double类型,precision和scale...@PostUpdate事件实体的状态同步到数据库之后触发,同步事务提交发生。

1.2K20

走,HashMap,敢去爬山吗?

说一句很废的话,HashMap 是一个 Map,用来存储 key-value 的键值对,每个键都可以精确地映射到一个,然后我们可以通过这个键快速地找到对应的。...HashMap 只能存储对象,所以基本数据类型应该使用其包装器类型,比如说 int 应该为 Integer。...01、HashMap 的重要字段 HashMap 有 5 个非常重要的字段,我们来了解一下。...就是把任意长度的数据通过一种算法映射到固定长度的域上(散列)。 再直观一点,就是对一串数据 wang 进行杂糅,输出另外一段固定长度的数据 er——作为数据 wang 的特征。...我们通常用一串指纹来映射某一个人,别小瞧手指头那么大点的指纹,在你所处的范围内很难找出第二个和你相同的(人的散列算法也好厉害,有没有?)。

61430

MySQL 约束介绍

1、非空约束 限定某个字段/某列的不允许为空,空字符串’'不等于NULL,0也不等于NULL CREATE TABLE 表名称( 字段名 数据类型, 字段名 数据类型 NOT NULL,...创建(CREATE)表就指定外键约束的话,先创建主表,再创建从表 删表,先删从表(或先删除外键约束),再删除主表 从表的外键列与主表被参照的列名字可以不相同,但是数据类型必须一样,逻辑意义一致 “...方式:父表上update/delete记录,同步update/delete掉子表的匹配记录 Set null方式:父表上update/delete记录,将子表上匹配记录的列设为null,但是要注意子表的外键列不能为...Set default方式:父表有变更,子表将外键列设置成一个默认的,但Innodb不能识别 6、默认约束 给某个字段/某列指定默认,一旦设置默认插入数据,如果此字段没有显式赋值,则赋值为...语句中保留约束,否则就删除了 ALTER TABLE 表名称 MODIFY 字段名 数据类型 DEFAULT 默认; ALTER TABLE 表名称 MODIFY 字段名 数据类型 DEFAULT

1.6K41

小白都能看懂的JSON反序列化远程命令执行

简单创建了一个实体bean,并set了两个属性。进行简单的序列化,看看序列化后是不是变成了我们想要的东西。至于WriteClassName的作用,序列化时写入类型信息,默认为false。...当我们引入的库是以列表中任何一个字段开头就报throw newJSONException(“autoType is not support. “ + typeName);的异常。...答案是因为我的PassWord字段设置的是私有属性,所以FastJson无权直接去反序列化私有字段。只是我们构造poc的一点java基础知识。...那就有点扯淡了……… 言归正传,现在的第一步就是学习java反序列化的思想,想尽办法jdk和fastjson中,服务器肯定存在的代码中找我们想要的东西。...newTransformer中触发了getTransletInstance方法,那问题又来了怎么触发newTransformer? ?

1.6K40

一站式解决使用枚举的各种痛点

因此,能不能让 ORM 映射的时候,直接把 Integer 类型的 type 映射成 CourseType 枚举呢?答案是可行的。... JPA 规范中,提供了 javax.persistence.AttributeConverter 接口,用于扩展对象属性和数据库字段类型映射。...另外,在给前端输出 VO ,默认情况下,还是要手动把枚举类型映射成 Integer 类型,并不能在 VO 中直接使用枚举输出。...现在大部分的代码都在使用 swagger 来编写文档,不知道大家有没有这样的痛点: 在编写文档,需要告诉前端枚举类型有哪些取值,每次增加取值之后,不仅要改代码,还要找到对应的取值在哪里使用了,然后修改...反正小黑我觉得这样做很不爽,那有没有什么办法可以让 swagger 框架来帮我们自动列举出所有的枚举数值呢?办法当然是有的啦!

1.7K20

javascript伪协议解析

>">link` 这里虽然将";做了编码,但是没办法新增标签,也没办法跳脱引号新增属性,但是攻击者可以插入javascript伪协议 vue中案例: import...target=javascript:alert(1) 那么攻击者就会触发xss,这样如果攻击者抓取input的,也就是账号密码就会泄露。...me 比较好的判断方式就是只允许http和https开头的字段,而且利用JavaScript去解析url,比如: console.log(new URL('javascript:alert(1...hostname: "", host: "", origin: null } */ 当hostname或者host为空,就代表不合法,但是我们可以利用//JavaScript中注解方式...;//@github.com#;alert(10);://eow5kas78d0wlv0.m.pipedream.net' 这里字符串会被服务器判断为一个链接类型,同时://也逃过检测,攻击者点击就会触发

26910

数据库系列:高并发下的数据字段变更

那么有什么办法对数据库的业务表进行无缝升级,让该表对用户透明无感呢?下面我们一个个来讨论。 2 新增关联表 最简单的一种办法,把新增的字段存储另外一张辅表上,用外键关联到主表的主键。...存在的问题: 读取数据,联表查询效率低下,数据量越大,数据越复杂,劣势越明显。 并没有彻底的解决问题,之后有新增字段,照样面临是新增表还是修改原表的问题。...即使后续新增的字段都加在辅表上,同样面临锁表的问题。 辅表的作用仅仅是解决字段新增的问题,并未解决字段更新的问题(如修改字段名、数据类型等)。..., age, address, sex, ext_column),包含了扩展字段 ext_column 原有表上添加触发器,原表的DML操作(主要INSERT、UPDATE、DELETE),都会触发操作...对于大数据表,同步时间长 5 字段预留 预留字段字段与表格名称映射办法

83150
领券