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

奇怪Java题:为什么128 == 128返回为false,而127 == 127返回为true?

奇怪Java题:为什么128 == 128返回为false,而127 == 127返回为true? 在回答这个问题之前,我们先来看看int和Integer对比,一步步揭开问题答案。...,其内存地址不同 (2) Integer变量和int变量比较时,只要两个变量值是相等,则结果为true。...Integer i = new Integer(100); int j = 100; System.out.print(i == j); //true 因为包装类Integer和基本数据类型int比较时,java自动拆包装为...int,然后进行比较,实际上就变为两个int变量比较 (3) 非new生成Integer变量和new Integer()生成变量比较时,结果为false。...而java API中对Integer类型valueOf定义如下,对于-128到127之间数,进行缓存,Integer i = 127时,会将127进行缓存,下次再写Integer j = 127

2.2K31

为什么数据库SQL导致CPUIO WAIT升高呢

/issues/I57M1Y https://github.com/xuxueli/xxl-job/issues/596 为什么数据库SQL导致CPUIO WAIT升高呢 我们先看一下计算机是怎么管理磁盘...理论与实际结合 那么反应到我们遇到这个场景就是:iowait是cpu处于空闲状态,因为服务端要做事情之前一般要查一下库如用户权限之类查用户权限表,现在mysql那里索引出问题了,io资源全被阻塞住了...,达到了磁盘IO瓶颈,服务端这边又一直等待数据从磁盘拷贝到dma(那个问题SQL对应表数据达到千万级别),磁盘传输效率又很低所以要把所有的查询返回结果拷贝完非常耗时,所以才会出现上面的SQL执行了几百秒还没有结束...,而系统代码只有再获取到数据库查询结果后,才能走下面的计算逻辑,那可不是cpu空闲着也没啥可做,就只是傻乎乎地在等着io拷贝结束嘛,而那些问题SQL又一直占据着IO资源迟迟不释放,就导致了整个系统不可用...当把这些问题SQL kill掉之后,系统恢复正常,后面我们针对这个场景增加了一个定时任务来清理那些没用记录。

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

低代码指南100问:11为什么这个时代」才需要低代码?

为什么这个时代」才需要低代码?...评为低代码行业leader之一FileMaker,更是诞生于遥远1985年(正好35岁,似乎在疯狂暗示什么)。...那么,如果低代码像前面说那么好,为什么以前没有火起来呢?...多端应用生成、云原生架构、API集成能力),但放在当年市场和业务背景下,加上前面所说技术不成熟度,整体投入产出比很低,不足以让企业大面积采纳低代码解决方案。...上云,必须。哦,我听技术合伙人说现在流行多云架构,也给我整一套哈。运维还要钱?啥是运维?应用有了不就能用了嘛,运维还要花我钱?你当投资者给我钱是大风刮来啊!

14600

对 MyBatis Plus SaveBatch 调优提升25倍性能!!!

前言 最近在压测一批接口,发现接口处理速度慢有点超出预期,感觉很奇怪,后面定位发现是数据库批量保存这块很慢。...从这点来看,这个 saveBach 性能肯定比直接一条一条 insert 快。 拼接 sql 方式实现批量保存效率最佳。...三、疑问 那为什么默认不给这个参数设置为 true 呢? 我简单问了下 ChatGPT: 如果批量语句中某些语句失败,则默认重写导致所有语句都失败。...批量语句某些语句参数不一样,则默认重写会使得查询缓存未命中。 看起来影响不大,所以我给我项目设置上了这个参数!...稍微总结下我粗略对比(虽然粗略,但实验结果符合原理层面的理解),如果你想更准确地实验,可以使用JMH,并且测试更多组数(如 5000,10000等)情况。

81710

MYSQL奇怪问题:varchar与数值比较

我在工作中很少遇到所谓奇怪问题’。所以对于‘奇怪问题’我还是很期盼,可能很早时候就被某些XX开发规范给限制住了,也就很少遇到这些所谓奇怪问题。...所以严格来说 XXX开发规范 还是很靠谱。 事件起源 好了来说具体场景,被同事叫去看一个奇怪SQLSQL语句很简单,大概就是查询某些字段有一些查询条件而已。...其中比较重要一个条件就是 「where xx!=0」。说是很奇怪为什么!=0就查询到结果就是10条。但是!=1 查询出来结果就是100条。...分析状况 当时看到这个问题之后我也很惊奇,不等于0 不应该把所有的数据都拿到么。为什么会出现这样情况呢?...另外如果字段类型是varchar型而查询条件使用int类型的话,查询是无法使用索引进行全表扫描。所以sql语句还是按照标准来写!

3.2K10

和开发同学讨论一个技术问题(r8笔记第73天)

今天下午时候,有一位开发同事找我,说有一个技术问题想请教一下。 当然正如他所说,这个问题比较奇怪,而且已经影响了他测试流程,他说有一个表查看对应表空间但是显示为空,所以插入不了数据。...到了这个时候,听起来有了一些头绪,当然我在19楼,他在3楼,我是不大愿意来来回回跑动,如果一两句话能解决事情,或者远程简单支持就能搞定,就不用 那么麻烦了,所以简单聊了下,就开启了远程协助,他给我复现了问题...sql语句,一看到这个语句。...而且这个数据也确实很多,目前是没5分钟触发一次,按照这种情况,5分钟之内还删除不了数据,而且这还是一 个全表数据删除,可见数据量应该不小,当然我在稍后进行查询,结果也吓我一跳。...然后是他们所说最后一个问题,就是为什么原来里面有几百万数据,现在只有几十万数据,这个如果按照一般思路还真不好判别,查看 dba_tab_modifications是一种方式,还有中方式就是查看user_tables

56350

关于all_procedures问题分析 (r9笔记第61天)

但是他过了一问我说,他通过数据字典查看,没有找到这个存储过程,想让我帮忙看看是不是因为权限原因,因为他们调用这个存储过程有一些问题。...因为在数据库里面显示都是大写。所以改为了大写继续查看,奇怪是竟然显示0条记录。 为了更精确,我直接输入了存储过程完整名字。但是奇怪是竟然还是没有任何结果。...于是我使用了dba_procedures,但是奇怪结果依旧是返回0行 SQL> select *from dba_procedures where procedure_name='INSERT_BILL_CN...这个时候我算是看明白了,procedure_name为空,但是object_name显示结果是我们期望之中procedure_name 为什么这么蹊跷呢。...从字段来看,感觉还是存在着偏差,all_procedures是包括函数,存储过程,包信息,这个视图定义还是不大清晰啊,尤其是字段含义,让人看了有二义性。

64560

使用在线重定义重构亿级分区表(r10笔记第34天)

这样一个语句怎么性能很差呢。 通过awrsqrpt得到结果如下: ? 对这样一个语句,存在两个执行计划,就很奇怪了。 第一个执行计划虽然是索引扫描,但是I/O等待很高。 ?...这个语句一个是使用了index skip scan,瓶颈在于扫描了大量分区,结果大量IO等待都在于此。...对于这个问题有几个疑问,首先这个语句性能如此之差,为什么在主库没有报警而在备库呢,其实原因是这样,主库配置信息要好很多,这些问题和负载在主库都不是问题,以至于这个问题影响在主库被弱化了。...这个其实说来话长,我查看了表结构信息发现,这个表存在大量分区,每天会生成一个分区,结果在2014年某一天开始突然就停止了分区维护,结果导致分区数据现在全都堆积在了默认分区上,这样就会性能一个很奇怪数据分布...和开发同学约定了下午时间来在线维护,留给我时间也不到一个小时了,要生成近900多个额外分区,这个工作量着实不小,我采用了如下SQL来动态生成需要补充分区。

86380

一次数据库响应慢问题诊断(r6笔记第39天)

过了几分钟之后,开发给我反馈是查询有结果了,但是又过了几分钟,又反馈说查询又没有反应了。...但是逐步分析,我发现如果这个查询阻塞另外一个查询,那么只有一个原因,那就是前端触发那个select一定是在等待这个复杂select完成才会触发。它们应该是在一个类似事务流程之内。...上下文环境很相似,所以通过这个也可以佐证我想法了,对于这个问题进一步分析,为什么那个查询持续那么长时间,抓取了对应执行计划,发现相关几个大表都走了全表扫描。...,为什么之前没有碰到这个问题,这两个全表扫描表都是大表,所以查询时间自然少不了。...可以进一步来分析为什么走了全表扫描,怎么尝试来优化sql了。 所以数据库负载低,资源使用率低,照样也可能造成响应慢问题,都需要DBA进行关注。

75350

Hduisa_ctf_wee4_fucksql

,翻了翻没什么地方,既然描述说是渗透题,那么就先扫描下目录,很快就得到了一大堆奇怪,首先是index.php.bak,本以为会出现源码,打开看到一屏幕葫芦娃…666666 www.zip下载下来也是一样东西...简单尝试下发现只有账户输入lightless时候提示密码错误,后面一下子就卡住了,找了找貌似并没有什么提示,而且也不存在注入漏洞…后来问过学长后,得到这个地方是要社工,比较纠结是,只有一个社工裤能得到这串密码...由于对sqlsql注入并没有学习,所以一下子卡住了… 后来经过学长提醒,这个地方使用了groupby黑魔法,去百度了两天并没有什么结果,于是去看mysql官方文档。...后面的LIMIT 1 OFFSET 1 可以返回1行后1行,这样我们就得到了唯一行,并使key2为NULL 后面一下子彻底没了办法,由于对sql注入一点儿办法都没有,所以这里是学长直接给我一个payload...,不知道为什么不能使用–… 这样就拿到了flag,由于最后sql注入完全是靠学长,所以这个flag暂时不提交了… 0x02 FuckMySQL2 上道题给出一串字符,用base64解下是乱码,

25430

当 MySQL 连接池遇上事务(一):神秘幽灵锁

这是公共库中封装执行SQL函数,上层执行SQL都是通过这个函数实现。...奇怪事情 前一段时间,发生了几次用户在页面配置时报错,定位结果是接口超时,而接口超时原因是DB表X被锁住了。本来表被锁住了也很正常,找出加锁地方看看有什么使用不当就行了。...顺藤摸瓜 作为一个唯物主义者,我决定对MySQL状态进行监控,来捕捉这个幽灵锁。定位方式很简单:每秒执行几个SQL查询语句,并记录查询结果,作为问题再现时定位依据。...那么问题很明确了,就是这个接口开启了事务,因为某个异常没有处理导致异常退出,没有执行commit或者rollback。 2) 事务为什么锁表?...4) 该事务只操作了业务表Y,为什么导致平台表X被锁? 这是最后一个问题了,其实从前面几个问题答案,已经基本可以推出这个问题答案了。

5.2K73

JDBC【5】-- JDBC预编译和拼接Sql对比

语句,返回resultset这个结果集,Statement statement = DBUtil.getConnection().createStatement();ResultSet resultSet...4.为什么预编译可以防止sql注入 在使用占位符,或者说参数时候,数据库已经将sql指令编译过,那么查询格式已经订好了,也就是我们说我已经明白你要做什么了,你要是将不合法参数传进去,会有合法性检查...预编译时候是先把这句话编译了,生成sql模板,相当于生成了一个我知道你要查名字了,你把名字传给我,你现在想耍点小聪明,把字符串'Jame' or '1=1'传进去,你以为他变成下面这样么: select...* from student where name= 'Jame' or '1=1' 放心吧,不可能,这辈子都不可能啦,数据库都知道你要干嘛了,我不是有sql模板了么,数据库心里想是我叫你传名字给我...我理解,这也就是为什么预编译可以防止sql注入解释了,它是经过了解释器解释过,解释过程我就不啰嗦了,只要是对参数做转义,转义之后让它在拼接时只能表示字符串,不能变成查询语句。

1.1K40

两个看似奇怪MySQL语句问题

今天同事给了我一个文件需要更新下CMDB数据,提供内容是excel形式,因为条目比较多,我需要做一些转换,批量修改成对应SQL语句,因为只有我知道这个逻辑,所以这个转换工作由我来做。...本来看起来很简单一个问题,结果因为不经意操作出了两个问题,牵扯出来两条有趣SQL问题。...我把语句给转换成了这样,很快就编辑好了,但是执行语句之后发现没有生效,真是奇怪,自己抽出一条语句来单独执行看看,发现结果竟然有这样提示,影响到行数有500多行,这看起来就麻烦了。...mysql> system cat a.sql select concat(trim('10.10.22.152 '),'10.10.22.152'); 而这个问题我犹豫了一,突然想明白了,我换个思路来解答...同事也给我提供了一个蛮有意思类似问题,大家一睹为快,这类问题简直让你怀疑人生。 ?

1K70

为什么忘记密码时只能重设,不把旧密码告诉我?

虽然说最后小明成功利用重新设定密码登入,但有个问题让他百思不得其解:奇怪呀,为啥要我重新设置密码,把旧密码发到邮箱里给我不就好了?应该有许多人都跟小明一样,有过类似的疑惑。...这边也随便找两个公开案例:北一女中网站存在SQL Injection漏洞桃园高中 网站 SQL injection而防御方式就是不要把使用者输入「1 顺便给我使用者数据」直接当作指令,而是经过一些处理...,让整段查询变成:「给我 id 是:『1 顺便给我使用者数据』数据」,那因为没有这个 id,所以什么事也不会发生。...所以尽管知道转换规则跟结果,却没有办法还原成「唯一一个密码」,这就是这个算法厉害地方!...所以,储存 hash 后值就没事了吗?抱歉,其实只储存密码 hash 过后值是不够。咦,为什么?我刚刚不是说没办法反推出结果吗,那为什么不够?

8710

Spring+SpringMVC+MyBatis+easyUI整合进阶篇(八)线上Mysql数据库崩溃事故原因和处理

这是数据库宕机后实例信息,基本瘫痪了,至于事务锁相关截图,当时没有保存,因此就无法放在文章中了,有朋友给我留言问当时为什么不直接kill掉锁住进程,我回答是因为我不懂这个知识点,我找了一下那几天日记确实有这方面的记录...入库功能介绍 已经定位到入库是发生这次事故主要原因,那么为什么频繁操作导致这件事发生呢? 首先来介绍一下当时功能设计改动及涉及到SQL语句。...资源被逐步耗尽也就不奇怪了。 ? 崩溃原因总结如下: 一个业务功能执行了太多SQL语句,此功能在短时间内又会被多次调用。...打个不恰当比方,一个功能执行6条SQL运行很好,而执行60条SQL时,一旦操作比较密集就有可能崩溃,而缓存就可以避免这一点,尽量分担掉数据库压力,不用每次请求都去访问数据库,就像这次事件中...60条SQL一样,如果后面的54条SQL语句返回结果都放入缓存中,也就不会出现这个崩溃事件了。

91980

听说count(8) 比count(*) 快好多,是真的吗?

央视有个黄西博士主持节目,叫做《是真的吗?》,以实验方式验证一些奇奇怪问题。 那我们今天就来验证一个神奇事情:count(8) 会比count(*) 快很多倍,是真的吗?...通过实验结果这个结论看起来确实是真实。...有人可能会比较奇怪,老虎刘为什么故弄玄虚搞出这么一个小儿科案例来欺骗大家感情?...实验结果显示确实是sql2消耗 consistent gets要比sql高很多(我实验结果是770 : 5)。由此得出上面的结论。 我第一次看到这个案例时候,就非常怀疑。...总结: 我要表达是意思是,我们要通过理论来指导测试,而不是把片面的测试结果当成一般性结论,这样误导自己,更会误导广大读者。

35810

算法文章人家又不爱看,你写它干啥?

在这1年算法图解文章写作过程中,经历了很多快乐与心酸。...其实关于对算法看法,听到过好多人观点是“平时工作也用不到,就应付面试时候用,临面试前刷一刷就行了”。这个奇怪,以前我也是这么认为,甚至这个观点一度是我劝解自己不去费力刷算法题“理由”。...为什么我们平时感觉不怎么用到算法?以数据库操作为例,查询操作我们使用SQL语句编写就可以了,然后从数据库中获得查询到结果,搞定!那算法应用在哪里呢?在数据库系统中。那算法性能消耗在哪里呢?...但是,随着数据量增大,如果将这部分性能交给我们“最后底牌”数据库,那我们优化空间必然非常小了,而且如果我们真的要从关系型数据库切换为非关系型数据库,那改造成本也非常大。...我们应该将数据拼装及操作逻辑提取到我们自己算法中,而针对数据库中数据查询操作尽量是针对单表少量条件查询,甚至实现仅需根据id或者ids主键来进行数据提取操作。

12530

五分钟看懂 MySQL 编解码原理

connectTimeout=5000&socketTimeout=20000&characterEncoding=UTF-8 至此问题也就解决了,但奇怪是之前为什么没指定编码方式也是可以呢,应该是...一般与 character_set_client 是一样,有人可能奇怪为什么会有这个字符集,直接用 character_set_client 来解码不就行了,它存在意义是啥呢?...,那么结果集就没有问题 什么是无损转换 假设我们要把用编码 A 表示字符 X,转化为编码 B 表示形式,而编码 B 字符集中并没有 X 这个字符,那么此时我们就称这个转换是有损,如果在 B 字符集都能找到...开头问题解答 现在回过头来看一下开头问题,为什么将 DB 数据从公司测试机导入到个人机器后,如果 SQL 中包含有中文查询如下 jdbc url 配置导致原本正常返回结果集失效呢?...,这就是为什么在个人机器上执行带有中文 SQL 会出异常根本原因!

72530

一个奇怪SQL问题

今天在进行SQL审核时候,遇到了一个奇怪SQLSQL如下: create table datatype10 (d_tinyint int not null default 1 comment...:1970-01-01 08:00:01到2038-01-19 11:14:07 看了看自己输入时间值,是在范围内,那么为什么会出现这个结果呢?...于是将这个SQL通过拷贝方式给同事看看,同事拿到SQL在他那边跑了一下,输出结果如下: ?...我去,还真是,看人品啊,人家跑就可以,我自己跑就报警告,为什么呢,当时很不理解这个问题,但是读者们看到这里,可能心里已经有了答案,那就是我给同事SQL和我自己跑那个SQL肯定不是一样!!!...一个小小问题,疑惑和很久,于是想着,既然有问题,就直接把这个奇怪字符换成一个可见字符处理一把,看看结果有什么差异,于是有了下面的SQL: create table datatype10 (d_tinyint

84350

数据库时间出现'00000000',难道我穿越了?

结果并不是预期,有很多奇奇怪输出(当时我深信他们是奇奇怪),并且没有任何一种情况出现全零。这就奇怪了,再次猜测难道那篇帖子是9i ?...通过他发截图,的确又一次出现了全零错误结果。 也就是说10g中很可能全零,11g中也可能。但为什么我没有遇到呢。...结论1:在12.2中以SQLplus登录数据库,识别日期类型中数据取值范围,而11g和10g版本做了普通运算而未校验结果。...1600之后,才开始识别到底有没有2月29这个日期,之前年份不做校验。 为什么这样? 这里跟大家科普一下: 公历是根据罗马人"儒略历"改编而得。...Oracle是用c语言写,为了跟Oracle内部更好地衔接,这些外部工具很可能做了很多c接口,这些接口对于数据操作不止于读取和传递,这就是为什么很多时候我们使用不同工具很可能同样SQL会有不一样结果

1.2K60
领券