首页
学习
活动
专区
圈层
工具
发布

JAVASE面试题:自增变量

JavaSE面试题:自增变量来源:www.runwsh.com/archives/zi…代码 public static void main(String[] args) { int i=...然后,它将 i 自增1,这就使得变量i=2了,但右边的操作数栈不是没有后续的逻辑运算了,就会将之前压到操作数栈的1赋值给i。所以,i 的值又变为了1。...(i=1;) 如果是`i=++i`呢,就是入栈的时候就会将自增后的变量i压入栈中,变量i2,使得出栈的时候也是为2了。...3. int j = i++;:将 i 的当前值1赋给 j,然后将 i 自增1。所以,j 的值是1,而 i 的值变为2。...首先看右边的表达式,操作数栈会先将i变量入栈;也就是2先入栈,这个时候往右走i,是将i自增后的数压入栈中,也就是3,然后再看下一个操作数是i;记住一点的就是,++i压入栈中是将i自增后压入栈中;i++是将

46930

字节面试:MySQL自增ID用完会怎样?

在一些中小型项目开发中,我们通常会使用自增 ID 来作为主键的生成策略,但随着时间的推移,数据库的信息也会越来越多,尤其是使用自增 ID 作为日志表的主键生成策略时,可能很快就会遇到 ID 被用完的情况...PS:当然,在分库分表的场景中,我们通常会使用雪花算法来替代自增 ID,但中小型项目开发中,使用自增 ID 的场景还是比较多的。...1.2 缺点分析自增 ID 的缺点如下: 在数据进行迁移或分库分表时,可能会出现问题,需要特殊处理。 如果数据量非常大,可能会达到自增 ID 的上限。...存在安全性问题,比如通过自增 ID 可能会推测出一些业务信息。例如,一个电商订单表使用自增 ID 作为主键,可能会被竞争对手通过订单号大致推测出业务量等信息。2.自增ID用完会怎样?...自增 ID 分为以下两种情况: 图片 一种是主键自增 ID 用完后的情况,另一种是 InnoDB 引擎中未设置主键时使用 row_id 用完后的场景,它们的情况是不一样的,所以我们分开来聊。

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

    高并下如何做变量的自增与自减

    1变量的自增与自减 变量的自增自减相信大家都会,一般情况下直接++或--就可以了。但是实际情况我们可能需要考虑并发问题,多线程情况下,如果我们直接计算。计算结果可能就会不准确。...3原子自增与自减 我们来看看java.util.concurrent.atomic包下面的原子类AtomicInteger。...4分布式系统中的自增与自减 我们来看这样一个需求: 用户注册就会给用户分配一个编号,编号规则按用户先后注册顺序递增,比如第一位注册的用户编号为100,第二位就为101,依次类推。...但是实际上我们的系统可能有多个实列,上面的LongAdder只是JVM级别的,在自己的实列中获取可以实现安全的自增。...Java有个Redis的API RedissonClient可以用来实现原子自增与自减。

    1.3K10

    数据库自增ID用完了会怎样

    我在工作中经常会遇到有人问我,数据库表的ID是自增的,那么如果ID用完了会怎么样?...说实话,我一直从事的是政企行业的开发,因为是传统行业,并且数据量基本上增长缓慢,所以到目前为止我还没遇到过自增ID用完的情况。因此我连夜做了实验,并编写了这篇文章将结果分享出来。...(全文以MySQL为例,因为MySQL最常用) 一、有主键 在MySQL中int类型占4个字符,因为自增ID大部分都是以1开始,所以它的取值范围为1到2^32-1,也就是1到4294967295。...首先我们创建一张表,并设置ID自增,且从2147483647开始。...从这里得知,在有主键且主键自增的情况下,ID达到上限后MySQL会报错。

    1.2K10

    Java的中间缓存变量机制与自增操作符

    在java中,执行自增、自减运算时,系统会为每个自增操作分配一个临时变量。如果是前缀(++i),就会【先自加1再赋值给临时变量】;如果是后缀(i++),就会【先赋值给临时变量再自加1】。...: 0 第二题中 i=0; sum1 = (i++) +(i++); 和题一相同,i先赋值给临时变量temp,然后i自增为1,此时第二个自增中i已经为1了,注意!...还是先赋值给临时变量2 temp2,然后自增; 最后sum1 等于 temp + temp2 ,结果为 1 。...i = 0; sum2 = (++i) + (++i); 第一个 ++i 先自增为1,并赋值给临时变量temp,此时i为1, 第二个 ++ i 自增为2,赋值给临时变量2 temp2 所以sum2 等于...      左    lvalue++             --       后缀自减      左    lvalue--    2        ++       前缀自增

    81620

    面试官:数据库自增 ID 用完了会咋样?

    他问了我一个有意(keng)思(b)问题: 数据库中的自增 ID 用完了该怎么办? 这个问题其实可以分为有主键 & 无主键两种情况回答。 国际惯例,先上张脑图: ?...02 有主键 如果你的表有主键,并且把主键设置为自增。 在 MySQL 中,一般会把主键设置成 int 型。...这种情况的数据库自增 ID 用完会发生什么呢?...04 总结 数据库自增主键用完后分两种情况: 有主键,报主键冲突 无主键,InnDB 会自动生成一个全局的 row_id。它到达最大值后会从 0 开始算,遇到 row_id 一样时,新数据覆盖旧数据。...这时,面试官可能会问你分库分表咋处理,如果你不会就不要主动提了,点到即止。

    83831

    浅谈MySQL自增锁

    原文:cnblogs.com/billyxp/archive/2013/01/22/2871737.html 一、自增配置 通过如下建表语句就可以完成自增的配置 CREATE TABLE `test_inc...如果存在自增字段,MySQL会维护一个自增锁,和自增锁相关的一个参数为(5.1.22版本之后加入) innodb_autoinc_lock_mode:可以设定3个值,0,1,2 0:traditonal...(每次都会产生表锁) 1:consecutive (会产生一个轻量锁,simple insert会获得批量的锁,保证连续插入) 2:interleaved (不会锁表,来一个处理一个,并发最高)...但是Innodb会视参数不通二产生不通的锁。目前MySQL默认的配置为1。...为了保证主库和从库的自增ID的一致性,binlog中会有set insert_ID命令,标明这个load语句的第一行的自增ID值,这样在表锁的情况下,就可以保证一致性了。

    6.7K30
    领券