1、如何对网站进行性能优化
一、删除功能:重要数据伪删除,删除校验用户(避免A用户可以删除任何人数据)。文件上传预览删除功能不能做服务器文件删除,不要为了节省服务器资源给用户留下接口。如果要资源有限,那么在删除的时候也需要做用户校验(文件命名或文件路径关联用户ID等)
二、发短信:基本上没有人愿意自己和短信运营商直接对接短信业务,一般都是通过第三方短信服务商购买短信。在用户主动获取短信的时候前端做图片验证码校验,后端做发送量,发送间隔校验(图片验证码是可以被机识别的)。做短信日志记录,这些日志可以为前面的后台校验提供数据,系统运行期间的各种好处就不一一举例了。重要功能做语音验证码,比如注册送现金的活动,短信验证码可以被识别
三、页面数据获取:用户平凡的刷新数据会加大服务器压力,当然谁也挡不住用户刷新是吧,但是减少主动刷新次数也是一个减小服务器压力的方法,咱不能自己坑自己吧,(Table页切换做校验,有数据就不再拉取等等)
四、前端静态资源做CDN,可以提高用户访问速度,减少服务器压力
五、用户输入做SQL注入,javascript脚本注入
六、用到的Ajax请求:做ajax加拦截器,通过消息头过滤掉非ajax的地址栏访问,(谁然不一定能全部拦截,但是拦掉一部分小白还是可以得,总不能是个人就能攻击吧)
七、用户输入数据校验,输入文字长度,数字输入大小,int 、long等数据类型合理使用,(积分兑换的时候用户只有1积分,你让他输入兑换积分,你输入21000000000,int 接收的时候,超出了范围成了负数1永远大于负数),还有一点很重要,你的任何校验都不要依靠前端,毕竟前端是为用户的体验而生的,为了自己的安全还是多写点后台校验吧,
八、异常捕获:不要将异常信息抛给用户,首先不美观,其次这些错误信息中可能含有SQL错误,通过这些sql可以了解到你的数据库结构
九、前端数据获取的时候减少不必要字段输出,java面向对象,表数据面向对象,本来页面只需要两个数据,结果你返回了一个实体,前端可已查看到你数据库表结构,多看几个页面那么你的数据库设计就给了人家了呢
十、用户信息加密传输,一定不要把重要数据留在客户端,泄密重要信息的责任是要你承担的哦
十一、 现在越来越多人使用阿里云服务器,做客户项目的时候服务器是客户购买的,当然阿里云账户客户也有,你的配置文件不加密客户就能看见你的系统配置,结合上面的搞搞你的数据库,那你的产品还有什么秘密,至于代码,你觉得他值钱么
十二、 前端JS 脚本 和页面分离,压缩或加密,不要你的团队幸幸苦苦开发的唯美的页面和效果,被人家一个ctrl+s拿去回家研究了,何况你的js中还有大量的逻辑
十三、 线程安全:
1、synchronized同步 (有序性、可见性),
2、使用生产者消费者模式,(唤醒notify(),等待wait())
3、volatile同步(可见性,非有序性,只在无基础数据的赋值操作,直接操作主内存,减少主内存复制到工作内存的cpu消耗)
十四、 数据库读写分离的时候要注意个别业务读也要读在主库上(避免主从同步失败或延时)
2、Java性能优化中文版PDF下载
文件比较大,给你下载地址吧:
http://download.csdn.net/download/hx0_0_8/8434567
3、提高Java性能的几个高效用法
1.循环
■ 在重要的循环里,消除循环终止判断时的方法调用。。。
例如:将...
for( int i = 0; i < collection.size(); i++){
...
}
替换为…
for( int i = 0; n = collection.size(); i < n; i++){
...
}
通常,把与循环index不相关的移到循环的外面
for( int i = 0; terminal = x.length; i < terminal; i++){
X[i] = x[i] / scaleA * scaleB
}
应该该成:
Double scale = scaleb / scaleA;
for( int i = 0; terminal = x.length; i < terminal; i++){
X[i] = x[i] * scale
}
2.字符串
■ 消除字符串连接
■ 创建长字符串时,总是使用StringBuffter代替String
■ 预先分配StringBuffer空间
StringBuffer sb = new StringBuffer(5000);
3.基本数据类型
■ 在重要的循环里使用基本数据类型(int型数据通常比long/double型数据更快)
■ 基本数据类型(Boolean,Integer,etc)的包装类主要用在当传递的方法参数必须是一个对象的引用时(而不是一个基本数据类型)
■ 对所有的常量代数表达式使用static final修饰符
一 使常量更容易引用(编译器预先计算常量表达式)
4.异常
■ 异常只用于单个真正的错误条件
一 抛出一个异常和执行一个catch代码块花费是很高的(主要由于当创建一个异常时要获得线程栈的一个快照)
一 只当条件真的异常时才抛出一个异常
■ 使编译器和运行时最优化,将几个方法调用放在一个try/catch块中,而不是为每个方法调用实现几个try/catch块
try{
Some.method1(); //Difficut for javac
} catch (method1Exception e) { //and the JVM runtime
//Handle exception 1// to optimixe this code
}
try{
Some.method2();
} catch (method2Exception e) {
// Handle exception 2
}
try{
Some.method3();
} catch (method3Exception e) {
// Handle exception 3
}
try{
Some.method1();
Some.method2();
Some.method3(); // easier to optimize
} catch (method1Exception e) {
// Handle exception 1
} catch (method2Exception e) {
// Handle exception 2
} catch (method3Exception e) {
// Handle exception 3
}
5.基准
■ 注意,所有这些技巧会因不同的平台和虚拟机而不同
一 例如:在有些servlet容器内,通过一个OutputStream作为字节输出会更快
一 在其它的容器内,通过一个PrintWriter输出字符会更快
■ 这些技巧描述的是最可移植的建议
■ 你可能需要运行一些基准来判断在你的平台上怎么样是最快的
4、如何优化web网站的性能
提升页面加载速度
1、图片大小越小打开速度越快
2、网页中代码不要臃肿所以不要有无用代码
3、js css使用外部引入
4、如果js css 不是显示用户看到的信息 而是一些特效的话放在最后加载。
5、java web性能优化有哪些
最常见的优化方案:代码优化最简单的就是提高代码的重用性,不管是前端代码还是后端代码,学会把公共性的代码抽取出来,事物的控制,特别是当对数据库进行增加删除修改的时候,保持数据的一致性,数据库的话加索引,视图等等,SQL语句关联的时候注意尽量用高效的sql语句。一般的优化差不多就是这样,当然,更多的要更难了。