1.从源码分析 HashMap从源码分析: HashMap在put的时候会调用hash()方法来计算key的hashcode值,可以从hash算法中看出当key==null时返回的值为0。...因此key为null时,hash算法返回值为0,不会调用key的hashcode方法。...如果value不为null,而key为空,在执行到int hash = key.hashCode()时同样会抛出NullPointerException异常 2.从设计师角度分析 HashTable是...HashMap是之后的版本引进的类,它的接口Map表达的意义更为广泛,也许HashMap的设计者认为null作为key和value是有实际意义的,所以才允许为null....HashMap允许null为key和value应当是类的设计者思考让这个类更有用的设计吧
Pinpoint接入业务监控后数据量大涨,平均每天Hbase数据增量20G左右,数据量太大,需要对数据进行定期清理,否则监控可用性降低,由于之前环境是由docker-compose部署,查到hbase可以修改表的...ttl来清理数据,目前进入pinpoint-hbase容器操作,如果能在hbase表格生成时就修改ttl效果会更佳,该方法需要熟悉docker-compose里面pinpoint-web及pinpoint-hbase...部署方法,后期跟进 操作步骤 查找出数据大的hbase表 root@990fb5560f64:/opt/hbase/hbase-1.2.6# ls CHANGES.txt LICENSE.txt README.txt...ApplicationTraceIndex 19G . 24小时产生数据大概20G,发现其中TraceV2及ApplicationTraceIndex数据比较大,设置TTL分别为7Day及14Day 进入hbase修改表
我们在更新数据时,有的数据是不能够被修改的。假设User有三个字段,username,age,password。...我们在前端传过来的数据为username和age,不能修改password,一般情况下,在后端都会新建一个user对象,使用该user对象对数据库进行更新操作。...r那么我们直接进行更新操作,会导致密码变为空。 解决方案有以下两种: (1)将所需的password用隐藏域传过来。但是这种做法当有很多不必修改的字段时很麻烦。...(2)取出数据库中的password字段,重新为新建的user对象的password赋上值,这种操作也很麻烦。...我们可以直接将不必修改的数据进行赋值。 需要注意的是:被@ModelAttribute标注的方法会在每个目标方法执行之前被springmvc所调用。
解决方案 当修改表结构时,sql server会弹出对话框,显示以下内容: 不允许保存更改。您所做的更改要求删除并重新创建以下表。...您对无法重新创建的表进行了更改或者启用了“阻止保存要求重新创建表的更改”选项。 分析这句话, 1、我们修改了表结构,这个更改需要删除这个表并且重新创建,当然这个过程是由系统自动完成的。...2、无法保存原因一:该表无法重新创建。 3、无法保存原因二:启用了“阻止保存要求重新创建表的更改”选项。 可以通过设置解决的,我们先尝试更改设置。...原因二解决方案:菜单栏->工具->选项->设计器->表设计器和数据库设计器,右侧面板,取消勾选“阻止保存要求重新创建表的更改”。
SQl 语句(常见) 新建,删除,修改表结构 新建表: create table [表名] ( [自动编号字段] int IDENTITY (1,1) PRIMARY KEY , [字段1] nVarChar...) NULL 删除字段: ALTER TABLE [表名] DROP COLUMN [字段名] 修改字段: ALTER TABLE [表名] ALTER COLUMN [字段名] NVARCHAR...[表名] ADD CONSTRAINT 约束名 CHECK ([约束字段] <= '2000-1-1') 删除约束: ALTER TABLE [表名] DROP CONSTRAINT 约束名 新建默认值...ALTER TABLE [表名] ADD CONSTRAINT 默认值名 DEFAULT '51WINDOWS.NET' FOR [字段名] 删除默认值 ALTER TABLE [表名] DROP...CONSTRAINT 默认值名
SQl 语句(常见) 新建,删除,修改表结构 新建表: create table [表名] ( [自动编号字段] int IDENTITY (1,1) PRIMARY KEY , [字段1]...(50) NULL 删除字段: ALTER TABLE [表名] DROP COLUMN [字段名] 修改字段: ALTER TABLE [表名] ALTER COLUMN [字段名] NVARCHAR...[表名] ADD CONSTRAINT 约束名 CHECK ([约束字段] <= '2000-1-1') 删除约束: ALTER TABLE [表名] DROP CONSTRAINT 约束名 新建默认值...ALTER TABLE [表名] ADD CONSTRAINT 默认值名 DEFAULT '51WINDOWS.NET' FOR [字段名] 删除默认值 ALTER TABLE [表名] DROP...CONSTRAINT 默认值名
数据库字段允许空值(null)的问题,你遇到过吗?...=1; 索引字段id上的不等于查询,如上图所示: (1)type=ALL,全表扫描; (2)rows=3,全表只有3行; 画外音:第一次select的结果。 知识点2(划重点):允许空值,不等于(!...=)会引发全表扫描; (2)如果允许空值,不等于(!...=)的查询,不会将空值行(row)包含进来,此时的结果集往往是不符合预期的,此时往往要加上一个or条件,把空值(is null)结果包含进来; (3)or可能会导致全表扫描,此时可以优化为union查询...; (4)建表时加上默认(default)值,这样能避免空值的坑; (5)explain工具是一个好东西; 希望大家有收获!
标签:VBA,工作表事件 当你想要随着工作表变化而让Excel自动做一些事情的时候,工作表事件是最能帮助你的了。之前的文章中,介绍过很多与工作表事件相关的基础知识和应用案例,今天再来一个示例。...当某单元格中的值修改后,其所在的工作表名称也相应修改为该单元格中的值。...= Me.Name Then _ MsgBox strERROR & strNAMECELL End If End If End With End Sub 代码中,以单元格...A1中的数据为工作表名称,即用户在单元格A1中输入数据后,按下回车键,工作表名称即修改为单元格A1中的内容。...你可以根据需要修改关联单元格为你想要的单元格。
PG11新特性解读:新增非空默认值字段不需要重写表 1、如何理解这个特性 在postgresql11之前,为表增加一个包含非空默认值的字段,将会导致表重写,为每一行添加该字段,并填充默认值。...如果该表在增加字段前非常大,那么将会非常耗时。 而在11版本中,新增加一个功能,将不再重写表。而是将非空默认值的属性添加到系统表pg_attribute中,该表描述每一列的信息。...如果新增字段有非空默认值,那么atthasmings置为true,attmissingval为默认值。...,存储所有列的默认值,这个表不管是否是alter table添加非空默认值字段 postgres=# \d pg_attrdef Table "pg_catalog.pg_attrdef...3)对于表中已存在的行查询时返回attmissingval属性的值,插入新的行,若指定带默认值字段,则查询时不需要返回attmissingval属性的值,否则需要返回attmissingval属性的值:
我们在运维MySQL数据库的时候,时常会对数据表进行DDL操作,比如修改字段、添加索引等。对于MySQL,DDL操作时会锁表。如果表比较小,比如小于1w时,影响还是比较小的。...以社交网络平台为例,对用户关系表进行 DDL 操作时,由于锁表导致大量的好友查询、消息发送等操作等待,系统资源被这些等待事务耗尽,不仅使数据库服务器性能急剧下降,还可能影响同一服务器上其他服务的正常运行...二、解决方案工具pt-online-schema-change工作原理通过创建表的空副本来进行更改,在原表上创建触发器,将原表中的行复制到新表中,复制完成后,用新表替换原表。...例如对于一些不涉及数据格式变更的操作,可以采用更轻量级的锁,允许并发读写;而对于一些复杂的变更,可能需要更严格的锁控制,但也会在一定程度上允许并发.例如创建一个名为 users 的示例表:CREATE...(如果支持),LOCK=NONE 表示在操作过程中不锁定表,允许并发读写。
创建一个与原表结构相同的空表,表名是 _new 后缀; 2. 修改步骤 1 创建的空表的表结构; 3....-- 安装 percona toolkit yum install percona-toolkit -y 3.2 使用示例 本示例模拟修改列类型,将列类型由 char(20) 修改为 varchar(...--null-to-not-null 允许将允许空值的列修改为不允许空值的列。包含空值的行将被转换为定义的默认值。...如果启用了此选项,那么在开始从原始表复制行之前,pt-online-schema-change 将尝试将所有现有触发器复制到新表,以确保在修改表之后可以应用旧触发器。...当使用默认值时,将在名称前添加最多 10 个 '_'(下划线),以查找唯一的表名称。如果指定了表名,则不会将其作为前缀,因此该表必须不存在。
作为一只菜鸟,研究了一个上午+一个下午,才把属性表的更新修改搞了出来,记录一下: 我的需求是: 已经在文件地理数据库中存放了一个ITable类型的表(不是要素类FeatureClass),注意不是要素类...FeatureClass的属性表,而是单独的一个ITable类型的表格,现在要读取其中的某一列,并统一修改这一列的值。...表在ArcCatalog中打开目录如下图所示: ? ?...string strValue = row.get_Value(fieldindex).ToString();//获取每一行当前要修改的属性值 string newValue...= "X";//新值,可以根据需求更改,比如字符串部分拼接等。
注册表编辑器里默认有这 5 个根目录,每个目录的说明如下: # -*- coding: UTF8 -*- # 日期:2020.12.15 # 作者:小蓝枣 import win32api import...参数0:注册表 参数1:设置项的名字 参数2:设置项的类型 参数3:设置项的值 """ win32api.RegSetValueEx(reg, reg_name..."Python", win32con.REG_SZ, "小蓝枣") 修改完后刷新一下就生效了。...默认添加注册表项的话需要在指定路径下进行添加,如果原注册表里路径就是不全的,添加会报错,下面的方法可以实现在添加注册表前检测路径是否是完整的,不完整的话会自动进行补全。...win32api.RegCreateKey(读取的注册表实体, "添加项的名字") 用来添加项。
-ivh percona-toolkit-3.0.12-1.el7.x86_64.rpm } --create-review-table 当使用--review参数把分析结果输出到表中时,如果没有表就自动创建...如果加入的列非空而且没有默认值,则工具会失败。即其不会为你设置一个默认值,必须显示指定。...需要特殊处理带有外键约束的表,以保证它们可以应用到新表.当重命名表的时候,外键关系会带到重命名后的表上。 该工具有两种方法,可以自动找到子表,并修改约束关系。...--dry-run 创建和修改新表,但不会创建触发器、复制数据、和替换原表。并不真正执行,可以看到生成的执行语句,了解其执行步骤与细节。...--execute 确定修改表,则指定该参数。真正执行。--dry-run与--execute必须指定一个,二者相互排斥。 --print 打印SQL语句到标准输出。
B-Tree索引驱使存储引擎不再通过全表扫描获取数据,而是从索引的根节点开始查找,在根节点和中间节点都存放了指向下层节点的指针,通过比较节点页的值和要查找值可以找到合适的指针进入下层子节点,直到最下层的叶子节点...,最终的结果就是要么找到对应的值,要么找不到对应的值。...开头的姓名的人 匹配范围值:匹配索引列的范围区域值,比如查找姓在li和wang之间的人 精确匹配左边列并范围匹配右边的列:比如查找所有姓为Zhang,且名字以K开头的人 只访问索引的查询:查询结果完全可以通过索引获得...,也叫做覆盖索引,比如查找所有姓为zhang的人的姓名 MySQL表分区介绍:一文彻底搞懂MySQL分区 可以允许在⼀个表⾥存储更多的数据,突破磁盘限制或者⽂件系统限制。...对于从表⾥将过期或历史的数据移除在表分区很容易实现,只要将对应的分区移除即可。 对某些查询和修改语句来说,可以⾃动将数据范围缩⼩到⼀个或⼏个表分区上,优化语句执⾏效率。
在运行时,允许更改wsrep_replicate_myisam 为任何值,但是如果将其设置为ON,则会记录警告。...PERMISSIVE 在运行时,允许更改binlog_format 为任何值,但是如果将其设置为其他值,ROW则会记录警告。...4、没有主键的表 Percona XtraDB群集无法正确地将某些写入操作传播给没有定义主键的表。不需要的操作包括执行写入表(尤其是DELETE)的数据操作语句。...6、显式表锁定 Percona XtraDB集群只有对显式表锁定操作的实验性支持。...7、自动增量锁定模式 用于生成自动递增值的锁定模式必须交错, 以确保每个节点生成唯一的(但是不连续的)标识符。 该验证检查innodb_autoinc_lock_mode变量的值。
在运维MySQL数据库时,我们总会对数据表进行ddl 变更,修改添加字段或者索引,对于MySQL而言,ddl 显然是一个令所有MySQL dba 诟病的一个功能,因为在MySQL中在对表进行ddl时,会锁表...Perconal 推出一个工具 pt-online-schema-change,简称pt-osc,其特点是修改过程中不会造成读写阻塞。本文将简单介绍pt-osc的工作原理,安装方法及使用场景。...工作原理: 建立一个与需要操作的表相同表结构的空表 给空表执行表结构修改 在原表上增加delete/update/insert的after trigger copy数据到新表 将原表改名,并将新表改成原表名...pt-osc使用条件: 表要有主键,否则会报错。 表不能有trigger。...安装方法: 下载 wget percona.com/get/percona-toolkit.tar.gz 编译安装 tar -zxvf percona-toolkit.tar.gzcd percona-toolkit
PT-OSC(Percona Toolkit Online Schema Change) 首先简单说下 Percona Toolkit: percona-toolkit 源自 Maatkit 和 Aspersa...【pt-online-schema-change】 这里,主要介绍在线修改表结构工具:PT-OSC(pt-online-schema-change) 该工具特点与优势: 1.支持并发 DML 操作 2...整个操作过程中,gh-ost 将控制速度保证从库可以及时的进行数据同步 migrate-on-replica 选项让 gh-ost 直接在从库上修改表。...最后 b 会把 ghost 表中的数据 delete 掉; acb,c 空操作,b 也是空操作; abc,b 空操作,c 也是空操作; CUT OVER 阶段 cut-over 阶段(即 rename...MYtable 和 myTable,则无法对这两张表进行修改 不支持 MySQL5.7 Json 类型列的修改 不支持 MySQL5.7 generated column 的修改 使用案例: .
MySQL接受他的操作系统凭证并允许他连接。...(注:MariaDB 10.4支持对DROP删除字段使用algorithm=instant算法) 三、安全执行Online DDL Online DDL从名字上看很容易误导新手,以为不论什么情况,修改表结构都不会锁表...n(以秒为单位设置等待)或NOWAIT在语句中显式设置锁等待超时,在这种情况下,如果无法获取锁,语句将立即失败。...(注:不支持动态修改,要写死在my.cnf配置文件里重启mysqld进程生效) 六、MariaDB FLUSH TABLES命令只关闭未使用的表 会话一 select id,sleep(60) from...Hash Join算法是把一张小表数据存储到内存中的哈希表里,并逐行去匹配大表中的数据,计算哈希值并把符合条件的数据,从内存中返回客户端。
Adaptive Flushing 自适应刷新算法是对 InnoDB 的重大改进,它允许 MySQL 以更加顺滑的方式处理更重的写入负载。...InnoDB 只修改缓冲池中的页面。 缓冲池中的页面可能会被 SQL语句修改,变成脏页。在事务提交时,修改页面内容被写入重做日志--InnoDB 日志文件。写入后,增加 LSN(最后一个序列号)。...Tail 指向最旧的未刷新数据修改。Head 和 Tail 之间的距离就是 checkpoint age。checkpoint age以字节表示。...Percona High Checkpoint 算法开始缓慢,但随后迅速增加。这允许更多脏页(参见我们之前的帖子讨论过),这样对性能有好处。...这里的目标是给自适应刷新算法一些惯性以抑制刷新速率上变化。innodb_flushing_avg_loops的值越大,算法反应越慢,而值越小,反应越慢。
领取专属 10元无门槛券
手把手带您无忧上云