java高可用_Java 三高 ,高并发 ,高可用 。高性能

三高好像离我很远,我好像根本用不到它,整天做着集中式的开发,访问的人数好像最多也没几个人,500?200? 我不知道自己做的项目有超过这么高的峰值过吗?大概没有吧,从来都没有为项目的性能与并发问题发过愁的我,感觉....

应该提升提升自己的能力水平了。可能一想到Java 的 高并发 ,高可用 。高性能 ,大家都会想到 分布式、微服务、等等的吧。好像只有分布式、微服务 的电商项目才可以用到这些东西。但我觉得想要写出优雅的代码,也需要这些东西。

如何实现高并发(同时更多的人访问)

1、优化代码

a、少new对象,使用更好的算法

b、使用每一个方法,类时都考虑一下是否有更好的替代方法,类。

c、简洁,能快速解决的事儿,不要转圈圈。(偷懒)

2、优化数据库

a、能单表一定不多表,能一句完成的一定不多次

b、能不用函数,就不用函数,除非你知道它的效率很高。(但很多的函数效率真的很差)

c、写完自己先试试,实现的方式通常都不止一种,选个最好的。

d、建立索引,这个更加要试试,很可能你的索引会使你的请求更加的慢(会起反作用、或不生效)

e、建表遵循三范式(可以不遵循,使用第四范式 :反三范式,一切为了效率!!!)

f、使用预编译、连接池(这个大概不需要说)

3、尽量少的请求

a、前端做表单验证,尽量保证请求有效

b、后端做请求时间拦截,保证不会在很短的时间里连续请求(防止for循环请求啊,或者用户连续点击)

c、做缓存,对用户经常访问的数据放到缓存中去

d、请求队列,对部分高请求的接口做请求队列,实在太高超出系统的负荷,对后面的请求直接返回“系统繁忙”(抛弃请求,保证大部分请求的成功)

e、做页面缓存,就像用户访问的首页,同样的页面,可以不经过请求程序,直接把缓存的页面返回给用户。

f、批量提交,在一些情况下可以吧用户的插入请求积攒一起提交。

4、增加服务器

a、做负载平衡

b、做微服务(服务模块化)

c、做数据库的读写分离

如何实现高性能(响应时间更短,速度更快)

1、优化代码

1、尽量指定类、方法的final修饰符

带有final修饰符的类是不可派生的。在Java核心API中,有许多应用final的例子,例如java.lang.String,整个类都是final的。为类指定final修饰符可以让类不可以被继承,为方法指定final修饰符可以让方法不可以被重写。如果指定了一个类为final,则该类所有的方法都是final的。Java编译器会寻找机会内联所有的final方法,内联对于提升Java运行效率作用重大,具体参见Java运行期优化。此举能够使性能平均提高50%。

2、尽量重用对象

特别是String对象的使用,出现字符串连接时应该使用StringBuilder/StringBuffer代替。由于Java虚拟机不仅要花时间生成对象,以后可能还需要花时间对这些对象进行垃圾回收和处理,因此,生成过多的对象将会给程序的性能带来很大的影响。

3、尽可能使用局部变量

调用方法时传递的参数以及在调用中创建的临时变量都保存在栈中速度较快,其他变量,如静态变量、实例变量等,都在堆中创建,速度较慢。另外,栈中创建的变量,随着方法的运行结束,这些内容就没了,不需要额外的垃圾回收。

4、及时关闭流

Java编程过程中,进行数据库连接、I/O流操作时务必小心,在使用完毕后,及时关闭以释放资源。因为对这些大对象的操作会造成系统大的开销,稍有不慎,将会导致严重的后果。

5、尽量减少对变量的重复计算

明确一个概念,对方法的调用,即使方法中只有一句语句,也是有消耗的,包括创建栈帧、调用方法时保护现场、调用方法完毕时恢复现场等。所以例如下面的操作:

for (int i = 0; i < list.size(); i++)

{...}

建议替换为:

for (int i = 0, int length = list.size(); i < length; i++)

{...}

这样,在list.size()很大的时候,就减少了很多的消耗

6、尽量采用懒加载的策略,即在需要的时候才创建

例如:

String str = "aaa";if (i == 1)

{

list.add(str);

}

建议替换为:

if (i == 1)

{

String str = "aaa";

list.add(str);

}

7、慎用异常

异常对性能不利。抛出异常首先要创建一个新的对象,Throwable接口的构造函数调用名为fillInStackTrace()的本地同步方法,fillInStackTrace()方

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值