L

SQL优化
对查询进行优化,要尽量避免全表扫描,首先应考虑在where及order by涉及的列上建立索引。 应尽量避免在where子句中对字段进行null值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: 1select id from t where num is null 最好不要给数据库留NULL,尽可能的使用NOT NULL填充数据库. 备注、描述、评论之类的可以设置为NULL,其他的,最好不要使用NULL。 不要以为NULL不需要空间,比如:char(100)型,在字段建立时,空间就固定了, 不管是否插入值(NULL也包含在内),都是占用 100个字符的空间的,如果是varchar这样的变长字段,null不占用空间。 可以在num上设置默认值0,确保表中num列没有null值,然后这样查询: 1select id from t where num = 0 应尽量避免在where子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。 应尽量避免在where子句中使用or来连接条件,如果一个字段有索引,一个字段没有索引,将导致引擎放弃使用索引而进行 ...
spring boot+redis+shiro+jwt token无状态权限验证
一、思路 shiro 用来认证用户及权限控制,jwt用来生成一个token,暂存用户信息。 为什么不使用session而使用jwt?传统情况下是只有一个服务器,用户登陆后将一些信息以session的形式存储服务器上, 然后将sessionid存储在本地cookie中,当用户下次请求时将会将sessionid传递给服务器,用于确认身份。 但如果是分布式的情况下会出现问题,在服务器集群中,需要一个session数据库来存储每一个session,提供给集群中所有服务使用,且无法跨域(多个Ip)使用。 而jwt是生成一个token存储在客户端,每次请求将其存储在header中,解决了跨域,且可以通过自定义的方法进行验证,解决了分布式验证的问题。 缺点:无法在服务器注销、比sessionid大占带宽、一次性(想修改里面的内容,就必须签发一个新的jwt) 二、废话不多说上代码 pom.xml 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565 ...
java代码性能优化总结
前言 代码优化,一个很重要的课题。可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没用,但是,吃的小虾米一多之后,鲸鱼就被喂饱了。代码优化也是一样,如果项目着眼于尽快无 BUG 上线,那么此时可以抓大放小,代码的细节可以不精打细磨;但是如果有足够的时间开发、维护代码,这时候就必须考虑每个可以优化的细节了,一个一个细小的优化点累积起来,对于代码的运行效率绝对是有提升的。 代码优化的目标是: 1、减小代码的体积 2、提高代码运行的效率 代码优化细节 1、尽量指定类、方法的 final 修饰符 带有 final 修饰符的类是不可派生的。在 Java 核心 API 中,有许多应用 final 的例子,例如 java.lang.String ,整个类都是 final 的。为类指定 final 修饰符可以让类不可以被继承,为方法指定 final 修饰符可以让方法不可以被重写。如果指定了一个类为 final ,则该类所有的方法都是 final 的。 Java 编译器会寻找机会内联所有的 f ...
空降评论复制本文地址
随便逛逛昼夜切换关于博客美化设置切换全屏打印页面