-
遮罩层出现后怎么样将上一层变为固定滚动不影响遮罩层
2016-10-17 09:02:24第一条:本网站所刊载的所有信息资料、图片及图表仅供参考。 第二条:投资者依据本网站提供的信息进行经营活动所造成的盈亏与本网站无关。 第三条:本网站对发布的信息享有发布和使用权,未经本... -
mysql自增id超大问题的排查与解决
2020-12-15 22:48:30小A正在balabala写代码呢,DBA小B突然发来了一条消息,“快看看你的用户特定信息表T,里面的主键,也就是自增id,都到16亿了,这才多久,在这样下去过不了多久主键就要超出范围了,插入就会失败,balabala……” ... -
mysql自增id超大问题查询
2020-06-28 17:38:06小A正在balabala写代码呢,DBA小B突然发来了一条消息,“快看看你的用户特定信息表T,里面的主键,也就是自增id,都到16亿了,这才多久,在这样下去过不了多久主键就要超出范围了,插入就会失败,balabala......” ...引言
小A正在balabala写代码呢,DBA小B突然发来了一条消息,“快看看你的用户特定信息表T,里面的主键,也就是自增id,都到16亿了,这才多久,在这样下去过不了多久主键就要超出范围了,插入就会失败,balabala......”
我记得没有这么多,最多1k多万,count了下,果然是1100万。原来运维是通过
auto_increment
那个值看的,就是说,表中有大量的删除插入操作,但是我大部分情况都是更新的,怎么会这样?问题排查
这张表是一个简单的接口服务在使用,每天大数据会统计一大批信息,然后推送给小A,小A将信息更新到数据库中,如果是新数据就插入,旧数据就更新之前的数据,对外接口就只有查询了。
很快,小A就排查了一遍自己的代码,没有删除的地方,也没有主动插入、更新id的地方,怎么会这样呢?难道是小B的原因,也不太可能,DBA那边儿管理很多表,有问题的话早爆出来了,但问题在我这里哪里也没头绪。
小A又仔细观察了这1000多万已有的数据,将插入时间、id作为主要观察字段,很快,发现了个问题,每天第一条插入的数据总是比前一天多1000多万,有时候递增的多,有时候递增的少,小A又将矛头指向了DBA小B,将问题又给小B描述了一遍。
小B问了小A,“你是是不是用了
REPLACE INTO ...
语句”,这是怎么回事呢,原来REPLACE INTO ...
会对主键有影响。REPLACE INTO ...
对主键的影响假设有一张表
t1
:CREATE TABLE `t1` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID,自增', `uid` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '用户uid', `name` varchar(20) NOT NULL DEFAULT '' COMMENT '用户昵称', PRIMARY KEY (`id`), UNIQUE KEY `u_idx_uid` (`uid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='测试replace into';
如果新建这张表,执行下面的语句,最后的数据记录如何呢?
insert into t1 values(NULL, 100, "test1"),(NULL, 101, "test2"); replace into t1 values(NULL, 100, "test3");
原来,
REPLACE INTO ...
每次插入的时候如果唯一索引对应的数据已经存在,会删除原数据,然后重新插入新的数据,这也就导致id会增大,但实际预期可能是更新那条数据。小A说:“我知道replace是这样,所有既没有用它”,但还是又排查了一遍,确实不是自己的问题,没有使用
REPLACE INTO ...
,小A又双叒叕仔细的排查了一遍,还是没发现问题,就让小B查下binlog日志,看看是不是有什么奇怪的地方,查了之后还是没发现问题,确实存在跳跃的情况,但并没有实质性的问题。
下图中
@1
的值对应的是自增主键id
,用(@2, @3)
作为唯一索引后来过了很久,小B给小A指了个方向,小A开始怀疑自己的插入更新语句
INSERT ... ON DUPLICATE KEY UPDATE ...
了,查了许久,果然是这里除了问题。INSERT ... ON DUPLICATE KEY UPDATE ...
对主键的影响这个语句跟
REPLACE INTO ...
类似,不过他并不会变更该条记录的主键,还是上面t1
这张表,我们执行下面的语句,执行完结果是什么呢?insert into t1 values(NULL, 100, "test4") on duplicate key update name = values(name);
没错,跟小A预想的一样,主键并没有增加,而且
name
字段已经更新为想要的了,但是执行结果有条提示,引起了小A的注意No errors; 2 rows affected, taking 10.7ms
明明更新了一条数据,为什么这里的影响记录条数是2呢?小A,又看了下目前表中的
auto_increment
CREATE TABLE `t1` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID,自增', `uid` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '用户uid', `name` varchar(20) NOT NULL DEFAULT '' COMMENT '用户昵称', PRIMARY KEY (`id`), UNIQUE KEY `u_idx_uid` (`uid`) ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COMMENT='测试replace into';
竟然是5`,这里本应该是4的。
也就是说,上面的语句,会跟
REPLACE INTO ...
类似的会将自增ID加1,但实际记录没有加,这是为什么呢?查了资料之后,小A得知,原来,mysql主键自增有个参数
innodb_autoinc_lock_mode
,他有三种可能只0
,1
,2
,mysql5.1之后加入的,默认值是1
,之前的版本可以看做都是0
。可以使用下面的语句看当前是哪种模式
select @@innodb_autoinc_lock_mode;
小A使用的数据库默认值也是
1
,当做简单插入(可以确定插入行数)的时候,直接将auto_increment
加1,而不会去锁表,这也就提高了性能。当插入的语句类似insert into select ...
这种复杂语句的时候,提前不知道插入的行数,这个时候就要要锁表(一个名为AUTO_INC
的特殊表锁)了,这样auto_increment
才是准确的,等待语句结束的时候才释放锁。还有一种称为Mixed-mode inserts
的插入,比如INSERT INTO t1 (c1,c2) VALUES (1,'a'), (NULL,'b'), (5,'c'), (NULL,'d')
,其中一部分明确指定了自增主键值,一部分未指定,还有我们这里讨论的INSERT ... ON DUPLICATE KEY UPDATE ...
也属于这种,这个时候会分析语句,然后按尽可能多的情况去分配auto_increment
id,这个要怎么理解呢,我看下面这个例子:truncate table t1; insert into t1 values(NULL, 100, "test1"),(NULL, 101, "test2"),(NULL, 102, "test2"),(NULL, 103, "test2"),(NULL, 104, "test2"),(NULL, 105, "test2"); -- 此时数据表下一个自增id是7 delete from t1 where id in (2,3,4); -- 此时数据表只剩1,5,6了,自增id还是7 insert into t1 values(2, 106, "test1"),(NULL, 107, "test2"),(3, 108, "test2"); -- 这里的自增id是多少呢?
上面的例子执行完之后表的下一个自增id是10,你理解对了吗,因为最后一条执行的是一个
Mixed-mode inserts
语句,innoDB会分析语句,然后分配三个id,此时下一个id就是10了,但分配的三个id并不一定都使用。此处 @总是迟到 多谢指出,看官方文档理解错了模式
0
的话就是不管什么情况都是加上表锁,等语句执行完成的时候在释放,如果真的添加了记录,将auto_increment
加1。至于模式
2
,什么情况都不加AUTO_INC
锁,存在安全问题,当binlog
格式设置为Statement
模式的时候,从库同步的时候,执行结果可能跟主库不一致,问题很大。因为可能有一个复杂插入,还在执行呢,另外一个插入就来了,恢复的时候是一条条来执行的,就不能重现这种并发问题,导致记录id可能对不上。至此,id跳跃的问题算是分析完了,由于
innodb_autoinc_lock_mode
值是1,INSERT ... ON DUPLICATE KEY UPDATE ...
是简单的语句,预先就可以计算出影响的行数,所以不管是否更新,这里都将auto_increment
加1(多行的话大于1)。如果将
innodb_autoinc_lock_mode
值改为0
,再次执行INSERT ... ON DUPLICATE KEY UPDATE ...
的话,你会发现auto_increment
并没有增加,因为这种模式直接加了AUTO_INC
锁,执行完语句的时候释放,发现没有增加行数的话,不会增加自增id的。INSERT ... ON DUPLICATE KEY UPDATE ...
影响的行数是1为什么返回2?为什么会这样呢,按理说影响行数就是1啊,看看官方文档的说明
With ON DUPLICATE KEY UPDATE, the affected-rows value per row is 1 if the row is inserted as a new row, 2 if an existing row is updated, and 0 if an existing row is set to its current values
官方明确说明了,插入影响1行,更新影响2行,0的话就是存在且更新前后值一样。是不是很不好理解?
其实,你要这样想就好了,这是为了区分到底是插入了还是更新了,返回1表示插入成功,2表示更新成功。
解决方案
将
innodb_autoinc_lock_mode
设置为0肯定可以解决问题,但这样的话,插入的并发性可能会受很大影响,因此小A自己想着DBA也不会同意。经过考虑,目前准备了两种较为可能的解决方案:修改业务逻辑
修改业务逻辑,将
INSERT ... ON DUPLICATE KEY UPDATE ...
语句拆开,先去查询,然后去更新,这样就可以保证主键不会不受控制的增大,但增加了复杂性,原来的一次请求可能变为两次,先查询有没有,然后去更新。删除表的自增主键
删除自增主键,让唯一索引来做主键,这样子基本不用做什么变动,只要确定目前的自增主键没有实际的用处即可,这样的话,插入删除的时候可能会影响效率,但对于查询多的情况来说,小A比较两种之后更愿意选择后者。
结语
其实
INSERT ... ON DUPLICATE KEY UPDATE ...
这个影响行数是2的,小A很早就发现了,只是没有保持好奇心,不以为然罢了,没有深究其中的问题,这深究就起来会带出来一大串新知识,挺好,看来小A还是要对外界保持好奇心,保持敏感,这样才会有进步。 -
WebSphere MQ中怎么处理队列中超时未处理的消息?
2017-03-23 02:09:55在使用MQ工具时,队列中会堆积一些已经超过响应时限的消息,这时程序...MQ中有没有这样的机制,针对一个队列的属性设置,如果该队列中的某一条消息超过一定存在时间,则把该条消息删除或移走? 求各路大神指导,拜谢. -
mysql自增id超大问题查询(REPLACE INTO、ON DUPLICATE KEY UPDATE)
2020-06-01 17:46:06小A正在balabala写代码呢,DBA小B突然发来了一条消息,“快看看你的用户特定信息表T,里面的主键,也就是自增id,都到16亿了,这才多久,在这样下去过不了多久主键就要超出范围了,插入就会失败,balabala......” ...引言
小A正在balabala写代码呢,DBA小B突然发来了一条消息,“快看看你的用户特定信息表T,里面的主键,也就是自增id,都到16亿了,这才多久,在这样下去过不了多久主键就要超出范围了,插入就会失败,balabala......”
我记得没有这么多,最多1k多万,count了下,果然是1100万。原来运维是通过
auto_increment
那个值看的,就是说,表中有大量的删除插入操作,但是我大部分情况都是更新的,怎么会这样?问题排查
这张表是一个简单的接口服务在使用,每天大数据会统计一大批信息,然后推送给小A,小A将信息更新到数据库中,如果是新数据就插入,旧数据就更新之前的数据,对外接口就只有查询了。
很快,小A就排查了一遍自己的代码,没有删除的地方,也没有主动插入、更新id的地方,怎么会这样呢?难道是小B的原因,也不太可能,DBA那边儿管理很多表,有问题的话早爆出来了,但问题在我这里哪里也没头绪。
小A又仔细观察了这1000多万已有的数据,将插入时间、id作为主要观察字段,很快,发现了个问题,每天第一条插入的数据总是比前一天多1000多万,有时候递增的多,有时候递增的少,小A又将矛头指向了DBA小B,将问题又给小B描述了一遍。
小B问了小A,“你是是不是用了
REPLACE INTO ...
语句”,这是怎么回事呢,原来REPLACE INTO ...
会对主键有影响。REPLACE INTO ...
对主键的影响假设有一张表
t1
:CREATE TABLE `t1` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID,自增', `uid` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '用户uid', `name` varchar(20) NOT NULL DEFAULT '' COMMENT '用户昵称', PRIMARY KEY (`id`), UNIQUE KEY `u_idx_uid` (`uid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='测试replace into';
如果新建这张表,执行下面的语句,最后的数据记录如何呢?
insert into t1 values(NULL, 100, "test1"),(NULL, 101, "test2"); replace into t1 values(NULL, 100, "test3");
原来,
REPLACE INTO ...
每次插入的时候如果唯一索引对应的数据已经存在,会删除原数据,然后重新插入新的数据,这也就导致id会增大,但实际预期可能是更新那条数据。小A说:“我知道replace是这样,所有既没有用它”,但还是又排查了一遍,确实不是自己的问题,没有使用
REPLACE INTO ...
,小A又双叒叕仔细的排查了一遍,还是没发现问题,就让小B查下binlog日志,看看是不是有什么奇怪的地方,查了之后还是没发现问题,确实存在跳跃的情况,但并没有实质性的问题。
下图中
@1
的值对应的是自增主键id
,用(@2, @3)
作为唯一索引后来过了很久,小B给小A指了个方向,小A开始怀疑自己的插入更新语句
INSERT ... ON DUPLICATE KEY UPDATE ...
了,查了许久,果然是这里除了问题。INSERT ... ON DUPLICATE KEY UPDATE ...
对主键的影响这个语句跟
REPLACE INTO ...
类似,不过他并不会变更该条记录的主键,还是上面t1
这张表,我们执行下面的语句,执行完结果是什么呢?insert into t1 values(NULL, 100, "test4") on duplicate key update name = values(name);
没错,跟小A预想的一样,主键并没有增加,而且
name
字段已经更新为想要的了,但是执行结果有条提示,引起了小A的注意No errors; 2 rows affected, taking 10.7ms
明明更新了一条数据,为什么这里的影响记录条数是2呢?小A,又看了下目前表中的
auto_increment
CREATE TABLE `t1` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID,自增', `uid` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '用户uid', `name` varchar(20) NOT NULL DEFAULT '' COMMENT '用户昵称', PRIMARY KEY (`id`), UNIQUE KEY `u_idx_uid` (`uid`) ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COMMENT='测试replace into';
竟然是5`,这里本应该是4的。
也就是说,上面的语句,会跟
REPLACE INTO ...
类似的会将自增ID加1,但实际记录没有加,这是为什么呢?查了资料之后,小A得知,原来,mysql主键自增有个参数
innodb_autoinc_lock_mode
,他有三种可能只0
,1
,2
,mysql5.1之后加入的,默认值是1
,之前的版本可以看做都是0
。可以使用下面的语句看当前是哪种模式
select @@innodb_autoinc_lock_mode;
小A使用的数据库默认值也是
1
,当做简单插入(可以确定插入行数)的时候,直接将auto_increment
加1,而不会去锁表,这也就提高了性能。当插入的语句类似insert into select ...
这种复杂语句的时候,提前不知道插入的行数,这个时候就要要锁表(一个名为AUTO_INC
的特殊表锁)了,这样auto_increment
才是准确的,等待语句结束的时候才释放锁。还有一种称为Mixed-mode inserts
的插入,比如INSERT INTO t1 (c1,c2) VALUES (1,'a'), (NULL,'b'), (5,'c'), (NULL,'d')
,其中一部分明确指定了自增主键值,一部分未指定,还有我们这里讨论的INSERT ... ON DUPLICATE KEY UPDATE ...
也属于这种,这个时候会分析语句,然后按尽可能多的情况去分配auto_increment
id,这个要怎么理解呢,我看下面这个例子:truncate table t1; insert into t1 values(NULL, 100, "test1"),(NULL, 101, "test2"),(NULL, 102, "test2"),(NULL, 103, "test2"),(NULL, 104, "test2"),(NULL, 105, "test2"); -- 此时数据表下一个自增id是7 delete from t1 where id in (2,3,4); -- 此时数据表只剩1,5,6了,自增id还是7 insert into t1 values(2, 106, "test1"),(NULL, 107, "test2"),(3, 108, "test2"); -- 这里的自增id是多少呢?
上面的例子执行完之后表的下一个自增id是10,你理解对了吗,因为最后一条执行的是一个
Mixed-mode inserts
语句,innoDB会分析语句,然后分配三个id,此时下一个id就是10了,但分配的三个id并不一定都使用。此处 @总是迟到 多谢指出,看官方文档理解错了模式
0
的话就是不管什么情况都是加上表锁,等语句执行完成的时候在释放,如果真的添加了记录,将auto_increment
加1。至于模式
2
,什么情况都不加AUTO_INC
锁,存在安全问题,当binlog
格式设置为Statement
模式的时候,从库同步的时候,执行结果可能跟主库不一致,问题很大。因为可能有一个复杂插入,还在执行呢,另外一个插入就来了,恢复的时候是一条条来执行的,就不能重现这种并发问题,导致记录id可能对不上。至此,id跳跃的问题算是分析完了,由于
innodb_autoinc_lock_mode
值是1,INSERT ... ON DUPLICATE KEY UPDATE ...
是简单的语句,预先就可以计算出影响的行数,所以不管是否更新,这里都将auto_increment
加1(多行的话大于1)。如果将
innodb_autoinc_lock_mode
值改为0
,再次执行INSERT ... ON DUPLICATE KEY UPDATE ...
的话,你会发现auto_increment
并没有增加,因为这种模式直接加了AUTO_INC
锁,执行完语句的时候释放,发现没有增加行数的话,不会增加自增id的。INSERT ... ON DUPLICATE KEY UPDATE ...
影响的行数是1为什么返回2?为什么会这样呢,按理说影响行数就是1啊,看看官方文档的说明
With ON DUPLICATE KEY UPDATE, the affected-rows value per row is 1 if the row is inserted as a new row, 2 if an existing row is updated, and 0 if an existing row is set to its current values
官方明确说明了,插入影响1行,更新影响2行,0的话就是存在且更新前后值一样。是不是很不好理解?
其实,你要这样想就好了,这是为了区分到底是插入了还是更新了,返回1表示插入成功,2表示更新成功。
解决方案
将
innodb_autoinc_lock_mode
设置为0肯定可以解决问题,但这样的话,插入的并发性可能会受很大影响,因此小A自己想着DBA也不会同意。经过考虑,目前准备了两种较为可能的解决方案:修改业务逻辑
修改业务逻辑,将
INSERT ... ON DUPLICATE KEY UPDATE ...
语句拆开,先去查询,然后去更新,这样就可以保证主键不会不受控制的增大,但增加了复杂性,原来的一次请求可能变为两次,先查询有没有,然后去更新。删除表的自增主键
删除自增主键,让唯一索引来做主键,这样子基本不用做什么变动,只要确定目前的自增主键没有实际的用处即可,这样的话,插入删除的时候可能会影响效率,但对于查询多的情况来说,小A比较两种之后更愿意选择后者。
结语
其实
INSERT ... ON DUPLICATE KEY UPDATE ...
这个影响行数是2的,小A很早就发现了,只是没有保持好奇心,不以为然罢了,没有深究其中的问题,这深究就起来会带出来一大串新知识,挺好,看来小A还是要对外界保持好奇心,保持敏感,这样才会有进步。 -
ExtAspNet v2.2.1 (2009-4-1) 值得一看
2010-04-01 09:41:27+TreeNode的属性NodeId被重命名为NodeID,这是ExtAspNet中的一个命名约定。 -同时更名的还有GridColumn的ColumnId->ColumnID,GetColumnId->GetColumnID。 -Grid1.Columns.FindColumnById函数被Grid1.Find... -
myeclipse加载报表配置xml文件失败,项目无法正常运行,怎么解决?
2019-04-11 19:49:002、为两个查询条件都配置了校验,校验出错信息也支持本地化,校验规则与上面“客户端/服务器端校验”演示的报表一致。 </i></font>]]> <![CDATA[ ();">查看“选择一”列选中值</a> | ();... -
数据更新的简单功能的典型实现是怎样的。
2020-06-12 12:34:19信息系统和服务器之间存在多对多映射关系,因此数据库存在一个application_server关系表,只有两列appid和serverid。 现在通过application中维护关系,以表格形式显示某个信息系统所包含的服务器信息。并实现添加、... -
java 判断字符串是否在list中
2013-03-10 14:39:31做一个明细表中的新建、修改与删除的功能,该明细表新建后需要维护,可能新建数据或删除数据,假如现在得到界面传回的数据ID是:1、2、25、46;先得到数据库这条主表数据的ID下所有的数据信息如下,放在list中; ... -
1.3.2 给定一个链表,删除链表的倒数第N个节点,并且返回链表的头结点 1.3.3 如果让你设计一个通用的、支持各种数据库秒级备份和恢复的系统,你会如何设计 1.3.4 如果让你来设计一个支持数据库、NOSQL 和大数据...
-
Android 上百实例源码分析以及开源分析 集合打包4
2012-07-10 21:54:03通过调用setAdapter显示,而是在其中添加了一步,将原本能通过一个Adapter显示的分成两部分,加入Browse Jamendo 和Libray这两个TextView,让用户更容易理解,通过分析这个listView的实现,可以加深对Adapter实现... -
新版Android开发教程.rar
2010-12-14 15:49:11Android 是一个专门针对移动设备的软件集,它包括一个操作系统,中间件和一些重要的应用程序。 Beta 版 的 Android SDK 提供了在 Android 平台上使用 JaVa 语言进行 Android 应用开发必须的工具和 API 接口。 特性 ... -
Activiti6.0教程例子下载
2017-11-08 14:36:55对Demo的使用介绍在官方文档的后面才开始介绍,这里建议应用跑起来之后,先自己试试手(可看后面介绍Demo如何使用的章节),看看如何跑一个流程、整个流程是怎么流的、并随时关注数据库表里的数据的变化等,对以后的... -
前端开发基础-JavaScript
2020-11-20 18:08:12第一个参数表示要删除,插入或则替换的位置,第二个参数表示要删除的项数,第三个到第N个表示要插入或则替换的数据 <p><strong>Date</strong></p> 时间对象也是使用非常多的玩意,它是使用... -
SQL语法大全
2014-03-30 11:00:11这里的ActiveConnection可以是一个Connection对象或是一串包含数据库连接信息(ConnectionString)的字符串参数。 CursorType Recordset对象Open方法的CursorType参数表示将以什么样的游标类型启动数据,包括... -
arcgis工具
2012-10-22 22:37:31通过指定一个缓冲距离,可以选择落于多边形内部并距离多边形边界一定范围内的所有要素。例如,选择林区内部500米范围内的湖泊。 完全包含(Completely contain) 这种方法选择某一图层上完全包含另一图层上的... -
SQL Server 2008实战(SQL Server程序员和DBA不可或缺的权威参考手册)--详细书签版
2013-02-06 11:52:192.4.2 在一条语句中执行INSERT、UPDATE和DELETE 78 2.5 捕获和跟踪数据修改的改变 81 2.5.1 返回数据修改语句影响的行 81 2.5.2 异步捕获表数据修改 83 2.5.3 从CDC表查询所有变更 87 2.5.4 从CDC表查询... -
Linux操作系统基础教程
2013-04-08 21:34:26我们并不能使同学们通过这次系列讲座成为一个 UNIX 类操作系统的高手,这次系列 讲座的目的就是在同学们中间普及 Linux 基础知识,为今后我们更加接近的了解 Linux 做一 个好的开端。 第一讲 Linux基础 在这一... -
asp.net知识库
2015-06-18 08:45:45.NET关于string转换的一个小Bug Regular Expressions 完整的在.net后台执行javascript脚本集合 ASP.NET 中的正则表达式 常用的匹配正则表达式和实例 经典正则表达式 delegate vs. event 我是谁?[C#] 表达式计算引擎... -
十天学会ASP.net--我认为ASP.NET比ASP难很多,希望大家做好准备
2008-12-05 08:41:03虽然说学习ASP.NET不需要任何ASP基础,但是我觉得如果大家ASP不会,还是先看一下【十天学会ASP教程】,大家所需要了解的不是ASP的程序怎么写,而是怎么构建服务器,怎么使用HTML表单,同时对SQL语句有一个基础和理解... -
ExtAspNet_v2.3.2_dll
2010-09-29 14:37:08+TreeNode的属性NodeId被重命名为NodeID,这是ExtAspNet中的一个命名约定。 -同时更名的还有GridColumn的ColumnId->ColumnID,GetColumnId->GetColumnID。 -Grid1.Columns.FindColumnById函数被Grid1.Find... -
ext分页,后台如何处理?
2009-08-24 10:37:58第三个问题,即使现在点击第二页按钮时,可以返回第6-10条数据,但根据下面的摄sql语句,由于是用id进行分页的,而id是没有重复的,查询操作会直接前5条记录去除,从数据库的第6条开始查询满足条件的记录,而这必然... -
网管教程 从入门到精通软件篇.txt
2010-04-25 22:43:49INT:中间代码,当一个源程序经过语法检查后编译产生一个可执行代码 IOF:Findit文档 IQY:Microsoft Internet查询文件 ISO:根据ISD 9660有关CD-ROM文件系统标准列出CD-ROM上的文件 ISP:X-Internet签字文件 ... -
Oracle事例
2007-08-26 10:35:53当指定时,如果父表中的记录被删除,则依赖于父表的记录也被删除 REFERENCE 表名() on delete cascade; 7、删除带约束的表 Drop table 表名 cascade constraints; 8:索引管理 <1>.creating function-based... -
java面试宝典
2013-02-28 16:04:01132、在JSP中如何删除一个COOKIE? 32 133、在一个JSP的请求处理中如何停止JSP的执行 33 134、在JSP中如何定义方法 33 135、在JSP中能发送EMAIL吗 34 136、在SERVLET中我能调用一个JSP错误页吗 34 137、APPLET和JSP... -
千方百计笔试题大全
2011-11-30 21:58:33132、在JSP中如何删除一个COOKIE? 32 133、在一个JSP的请求处理中如何停止JSP的执行 33 134、在JSP中如何定义方法 33 135、在JSP中能发送EMAIL吗 34 136、在SERVLET中我能调用一个JSP错误页吗 34 137、APPLET和JSP... -
springmybatis
2015-09-05 06:54:28请注意,这里面有一个方法名 selectUserByID 必须与 User.xml 里面配置的 select 的id 对应(<select id="selectUserByID") 重写测试代码 程序代码 程序代码 public static void main(String[] args) { ... -
JQuery -轻量级插件Flexgrid 表格排序问题
2009-06-23 19:01:01alert("请选择一个修改,不能同时修改多个"); }else if($(".trSelected").length==0){ alert("请选择一个您要修改的产品") } } else if (com=='查看'){ if($(".trSelected... -
深入到源码:解读 redux 的设计思路与用法
2020-12-30 12:58:03每个 web 应用都至少对应一个数据结构,而导致这个数据结构状态更新的来源很丰富;光是用户对 view 的操作(dom 事件)就有几十种,此外还有 ajax 获取数据、路由/hash状态变化的记录和跟踪等。 ... -
MySQLDBA运维笔记.pdf
2019-11-04 15:53:171.3.7 不要给一个用户管所有的库,尽量专库专用户...............................................21 1.3.8 清理 mysql 操作日志文件~/mysql_history.........................................................21 ...
-
C语言零基础入门(详细讲解)
-
基于非经典感受场动态调节机制的图像表示计算模型
-
德育答辩论文.docx
-
java 调优 命令_JVM监控和调优常用命令工具总结
-
recycleView 中 checkbox 的单选功能实现
-
js_for_continue.html
-
【爱码农】C#制作MDI文本编辑器
-
中国一汽大采购体系降本工作计划汇报v7.pptx
-
在线考试如何增加录音功能.docx
-
java 按 大写字母_Java实现按照大小写字母顺序排序的方法
-
12 javaweb -jsp基础
-
vue3从0到1-超详细
-
实现 MySQL 读写分离的利器 mysql-proxy
-
QGIS-OSGeo4W-3.18.0-1-Setup-x86_64.exe
-
基于Qt的LibVLC开发教程
-
2021某厂频繁出现的19个最难回答的Java面试题,(附答案)
-
投标方法论
-
基于体细胞基因突变的组合模式识别癌症中的驱动器途径
-
MySQL 事务和锁
-
ORA-00001: 违反唯一约束条件 的解决办法