栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java个人技术知识点总结(优化篇),下载量瞬秒百万

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java个人技术知识点总结(优化篇),下载量瞬秒百万

9.减少用户操作的步骤

10.使用autocomplete插件快速进行搜索

必背,必做:

1.可以通过回车键来进行搜索或者提交操作

2.添加的信息要按照id倒序进行排列

3.进行搜索操作时加入js loading操作(不仅告诉用户所进行的请求正在被处理,而且防止用户多次点击提交操作)

4.当进行删除操作的时候要弹出提示框,警告用户要进行删除操作,是否确认,如果删除成功则弹出提示框告诉用户。

5.减少用户操作的步骤

6.通过ztree,以及kindeiditor来提高用户的体验度

sql优化

1、SELECt子句中避免使用 *, 尽量应该根据业务需求按字段进行查询

2、尽量多使用COMMIT如对大数据量的分段批量提交释放了资源,减轻了服务器压力

3、在写sql语句的话,尽量保持每次查询的sql语句字段用大写,因为oracle总是先解析      sql语句,把小写的字母转换成大写的再执行

4、用UNIOn-ALL 替换UNIOn,因为UNIOn-ALL不会过滤重复数据,所执行效率        要快于UNIOn,并且UNIOn可以自动排序,而UNIOn-ALL不会

5、避免在索引列上使用计算和函数,这样索引就不能使用

Sql优化精简版:

1.(重点)(必须说) SELECT语句中避免使用 *,尽量应该根据业务需求按字段进行查询

举例:如果表中有个字段用的是clob或者是blob这种大数据字段的话,他们的查询应该根据业务需要来进行指定字段的查询,切记勿直接用*

2.(重点) 删除重复记录(oracle):

最高效的删除重复记录方法(因为使用了ROWID)例子:

DELETE  FROM  EMP E  WHERe  E.ROWID >

(SELECt MIN(X.ROWID)

FROM  EMP X  WHERe  X.EMP_NO = E.EMP_NO);

3.用>=替换>

如一个表有100万记录,一个数值型字段A,

A=0时,有30万条;

A=1时,有30万条;

A=2时,有39万条;

A=3时,有1万记录。

那么执行A>2与 A>=3 的效果就有很大的区别了,因为 A>2 时,ORACLE会先找出为2的记录索引再进行比较,而A>=3时ORACLE则直接找到=3的记录索引。

4.(重点)尽量多使用COMMIT如对大数据量的分段批量提交

5. (重点)用NOT EXISTS 或(外连接+判断为空)方案 替换 NOT IN操作符此操作是强列推荐不使用的,因为它不能应用表的索引。推荐方案:用NOT EXISTS或(外连接+判断为空)方案代替

6.(重点 必须说)LIKE操作符(大数据的全文检索使用luncene)(solr)因为使用like不当,会导致性能问题,原因是like在左右两边都有%的时候,不会使用索引。

如LIKE '%5400%'这种查询不会引用索引,而LIKE 'X5400%'则会引用范围索引。

一个实际例子:

查询营业编号YY_BH LIKE '%5400%'这个条件会产生全表扫描,如果改成YY_BH LIKE ‘X5400%’ OR YY_BH LIKE 'B5400%'则会利用YY_BH的索引进行两个范围的查询,性能肯定大大提高。

7.(重点,必须说)避免在索引列上使用计算和函数,这样索引就不能使用

举例:

低效:

SELECt… FROM  DEPT  WHERe SAL * 12 > 25000;

高效:

SELECt… FROM DEPT WHERe SAL > 25000/12;

8.(重点 必须说)用UNIOn-ALL 替换UNIOn,

因为UNIOn-ALL不会过滤重复数据而且不会自动排序,所执行效率要快于UNIOn。

9.(优化,重点,3个方面 a.缓存 b.分段批量 c.存储过程)减少访问数据库的次数

举例:如果批量删除多条数据,可以用  delete  from tableName where id

in (1,2,3)

而不要用多条delete语句进行删除

10.(重点 必须说)用TRUNCATE替代DELETE

TRUNCATE不记录日志,DELETE记录日志,所以TRUNCATE要快于DELETE但是一旦用TRUNCATE进行删除就不能进行恢复,TRUNCATE是删除整张表的数据不能加where条件。

===========

【一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义】

浏览器打开:qq.cn.hn/FTf 免费领取

=======================================================

mysql,sqlserver中如果

id为自增类型,那么如果用TRUNCATE删除,则id字段再插入数据时从1开始,如果delete删除的话,则从删除之前的id的值继续增长。

防sql注入

针对防sql注入,我们通常是这样做的:

首先在前台页面对用户输入信息进行js验证,对一些特殊字符进行屏蔽,比如:or ,单引号,–,= ,还有就是限制用户名输入的长度,我们一般将其限制在6—13位。另外,对于用户的敏感信息我们进行Md5加密,还有,为了增加用户体验度和用户友好度,为了不使用户看到一些详细的异常信息我们会进行错误信息页面的定制,像404,500错误。另一个我层面讲,这样做也是为了保护我们的一些重要信息。此外,我们会给特定的人分配定定的权限,而不是给其分配管理员权限!

sql注入

所谓SQL注入,就是通过一些含有特殊字符的sql语句发送到服务器欺骗服务器并进行攻击。(特殊字符:or, 单引号,–,空格)

Sql注入的****防护

1.永远不要信任用户的输入。对用户的输入进行校验,可以通过正则表达式(js正则或者java后台正则),或限制长度;对单引号和双"-"进行转换等。

2.永远不要使用动态拼装sql,使用参数化的sql。(永远不要使用+号拼接sql字符串,而是使用?传参的方式进行)

3.不要给用户太高的权限而根据需求进行赋权

4.对敏感信息进行加密 如md5(单向加密不可逆转)。

5.自定义错误页面。目的是为了不把我们的程序的bug暴露在别有用心的人的面前。而去不会让用户看到报错的页面,也提高了用户的体验度。

SQL注入防范

使用参数化的过滤性语句  要防御SQL注入,用户的输入就绝对不能直接被嵌入到SQL语句中。恰恰相反,用户的输入必须进行过滤,或者使用参数化的语句。参数化的语句使用参数而不是将用户输入嵌入到语句中。在多数情况中,SQL语句就得以修正。然后,用户输入就被限于一个参数。

输入验证

检查用户输入的合法性,确信输入的内容只包含合法的数据。数据检查应当在客户端和服务器端(java代码)都执行之所以要执行服务器端验证,是为了弥补客户端验证机制脆弱的安全性。  在客户端,攻击者完全有可能获得网页的源代码,修改验证合法性的脚本(或者直接删除脚本),然后将非法内容通过修改后的表单提交给服务器。因此,要保证验证操作确实已经执行,唯一的办法就是在服务器端也执行验证。你可以使用许多内建的验证对象,例如Regular expression Validator,它们能够自动生成验证用的客户端脚本,当然你也可以插入服务器端的方法调用。如果找不到现成的验证对象,你可以通过Custom Validator自己创建一个。

错误消息处理

防范SQL注入,还要避免出现一些详细的错误消息,因为黑客们可以利用这些消息。要使用一种标准的输入确认机制来验证所有的输入数据的长度、类型、语句、企业规则等。

加密处理

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/489789.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号