Cyx's blog

我以为我会了,其实我只是一知半解


  • 首页

  • 标签

  • 分类

  • 归档

  • 搜索

记一次MySQL关于and和or的优先级的问题

发表于 2020-04-12
字数统计: 335字 | 阅读时长 ≈ 1分

最近在做毕设的时候 碰到了一个问题,需求是在指定一个字段为确定值的情况下,对其他所有字段进行模糊查询,具体SQL如下

1
2
select *,ROUND(DATEDIFF(CURDATE(), birthday)/365.2422) AS age from household where household_name like CONCAT('%',#{query},'%') 
or telephone like CONCAT('%',#{query},'%') or gender like CONCAT('%',#{query},'%') or address like CONCAT('%',#{query},'%') or birthday like binary CONCAT('%',#{query},'%') and is_f = '是'

这条sql语句执行后,预期的结果是查出字段is_f为‘是’的所有行,但是执行后实际的结果为is_f为否的行也被查出来了,这并不符合预期,查谷歌后发现
and的优先级比or要高,所以这么写,本SQL语句的意思就变成了 查出is_f为是,并且生日匹配查询字段,或者其他字段匹配的结果
此处的解决办法是在where后和and前加括号,具体SQL如下,经试验结果符合预期

1
2
select *,ROUND(DATEDIFF(CURDATE(), birthday)/365.2422) AS age from household where (household_name like CONCAT('%',#{query},'%') 
or telephone like CONCAT('%',#{query},'%') or gender like CONCAT('%',#{query},'%') or address like CONCAT('%',#{query},'%') or birthday like binary CONCAT('%',#{query},'%')) and is_f = '是'

http与https相关知识小结

发表于 2019-08-29
字数统计: 845字 | 阅读时长 ≈ 3分

http与https知识点

阅读全文 »

关于MVCC和间隙锁的学习记录及总结

发表于 2019-08-27
字数统计: 257字 | 阅读时长 ≈ 1分

-写在之前:本文参考了Cyc2018大佬的CS-NOTES 中的关于MVCC的部分,仅仅做一个学习记录,也算是巩固这块的学习

MVCC多版本并发控制

什么是MVCC?MVCC(Multi-Version Concurrency Control, MVCC)翻译过来就是多版本并发控制

阅读全文 »

美团后台一面面经

发表于 2019-08-26
字数统计: 386字 | 阅读时长 ≈ 1分

1.项目
2.如果缓存雪崩,大量请求直接打到数据库怎么办?(这答得不是特别好)
3.hashmap扩容多大,为啥
4.equals和==
5.为啥重写equals一定要重写hashcode
6.现在需要进行字符串拼接操作,让你做,你会怎么做,为什么
7.为啥不用String的加号
8.String a=”a”;String b=”b”; 问”a”+”b”等不等于a+b
9.volatile相关,没有问原理,问的是具体问题,就是与可见性相关
10.数据库用的mysql是吧?做过索引优化不?explain语句出来的结果中的type如果为index是啥意思
11.间隙锁锁的是数据还是索引
12.间隙锁解决的是啥问题
13.幻读会在哪种隔离级别中出现
14.如何解决幻读 11.了解TCP不,TCP断开连接的过程说一下(四次挥手)
15.知道time_wait吗?为啥要有这个状态
16.SpringMVC中容器的bean能访问到Spring容器中的bean吗?反过来呢
17.事务传播(不太会)
18.用过事务吗?如果spring的事务中抛出了IOException,会回滚吗?(我猜的会,但是好像是并不会回滚。。)
就记得这么多了。。
总结:都不是直接问原理,但是都偏向于给一个场景或者具体问题,问你怎么想,让你给出解决办法,然后问你为啥,这块基本就要结合原理和思考来说了,看来平时除了多看看理论还是要多敲一敲,多思考

线程池

发表于 2019-08-24
字数统计: 11字 | 阅读时长 ≈ 1分

线程池参数:

  1. corePoolSize 核心线程数

TCP三次握手,四次挥手

发表于 2019-08-21
字数统计: 689字 | 阅读时长 ≈ 2分

三次握手和四次挥手

阅读全文 »

Redis使用总结

发表于 2019-08-10
字数统计: 361字 | 阅读时长 ≈ 1分

1.为什么用Redis?Redis有什么特点

我们都知道Redis基于内存,除此之外,Redis还有丰富的数据结构类型,I/O多路复用,单线程,减少线程上下文切换

Redis有哪些数据结构?

String,set,list,hash,zset

zset实现原理

跳跃表,也就是并联链表,拥有O(logn)的查找速度,相比于红黑树,不用进行费时的平衡操作,此处引用
cs-notes的一张图
Alt text
在查找时,从上层指针开始查找,找到对应的区间之后再到下一层去查找。下图演示了查找 22 的过程。
Alt text

Redis命令

get,set,sadd,srem,sismember,scard(点赞集合),lpush,rpop(队列相关)

持久化 RDB AOF

RDB把某一时刻所有数据都保存为.rdb文件,存到硬盘上,可以用来同步不同服务器之间的数据。

save命令:阻塞,bgsave:fork一个子进程来执行save操作,父进程可以继续执行读写操作。

AOF把所有的写命令都写到AOF文件末尾
使用AOF来持久化需要设置同步选项,因为写命令是先被存到缓冲区,由操作系统决定什么时候存磁盘,

有三个,always,everysec,no 一般选择everysec,因为always虽然不会丢失数据,但是太耗时,everysec只会丢失一秒,也不会太频繁,no不会给服务器带
来多大性能提升。

mysql

发表于 2019-08-09
字数统计: 1.4k字 | 阅读时长 ≈ 5分

1. mysql引擎分类及区别

阅读全文 »

总结练习

发表于 2019-08-06
字数统计: 163字 | 阅读时长 ≈ 1分
  1. 面向对象和面向过程的区别
    面向过程和面向对象的侧重点不一样,要做一件事,面向过程侧重的是一件事如何做,而面向对象侧重的是”人”,只要做了这件事就行,我不关心你是怎么做的。
    面向过程性能更高,不需要去实例化以及去方法调用,但是面向过程没有面向对象易维护,易扩展,易复用。
    面向对象扩展性维护性复用性更高,在系统非常复杂的时候,可以设计出低耦合的系统,更加灵活,易于维护。

基于JDK1.8的HashMap源码剖析

发表于 2019-07-12 | 分类于 Java
字数统计: 1.1k字 | 阅读时长 ≈ 5分

Hashmap

基于jdk1.8

阅读全文 »

123
cyx

cyx

记录点滴

21 日志
3 分类
9 标签
GitHub QQ
© 2020 cyx | Site words total count: 13.6k
由 Hexo 强力驱动
|
主题 — NexT.Pisces v5.1.4