java个人经验总结-1(模糊查询,sql优化,NIO模式简介)

1.模糊查询

业务中常用的输入框模糊查询(放在最前面)

          like concat('%',#{name,jdbcType=VARCHAR},'%');

          _:表示单个字符: like '张_';

          []:表示括号中所列字符的一个,指定一个范围:like '[张李赵孙]_';

          [^]:表示不是括号中所列字符的一个:like '[^张李赵孙]_';

SQL中不能使用加号进行字符串拼接,加号是用来运算的

SQL中占位符不能在单引号中,否则会以?进行查询数据

Mybatis进行拼串,会出现sql注入的情况

#和\是一个意思,表示转义:使用#代替\

                                              like '%#%%' escape '#'

                                              like '%@%%' escape '@'

尽量使用右模糊查询,左模糊查询会导致数据库引擎放弃索引进行全表扫描

避免使用IN,NOT IN,OR,会导致引擎全表扫描

查询条件使用<>,!=也会使数据库放弃索引进行全表扫描

多表关联查询时,小表在前,大表在后,调整where子句中的顺序,自上而下,自左向右

简而言之,查询数据时最大化利用索引,尽可能避免全表扫描,减少无效数据的返回是我们在写sql过程中必须考虑的。另外在策略上我们还可以减少对数据库的访问,减少交互次数,减少对服务器CPU开销,利用更多资源等进行优化。

2.NIO模式主要有三大核心部分:Channel(通道),Buffer(缓冲区),Selector(选择器)

基于Channel和Buffer进行操作

数据总是从通道到缓冲区,或者从缓冲区中写入到通道中,Selector用于监听多个通道的事件(比如:连接打开数据到达),单个线程可以监听多个通道

IO是面向流的,而NIO是面向缓冲区的:NIO中的缓冲区存在使我们可以在其中对数据进行操作,增加灵活性,IO的各种流是阻塞的,NIO的非阻塞模式。

IO中的stream是单向的,NIO中的channel是双向的,既可以读又可写,NIO中的channel的主要表现有:IO,TCP,UDP

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值