1、java如何保证多线程的安全

https://blog.51cto.com/u_16213366/7118414

1. 使用synchronized关键字

synchronized关键字可以保证在同一时刻只有一个线程可以执行被synchronized修饰的代码块或方法,从而避免多个线程同时对count进行操作。

2. 使用ReentrantLock、可冲入锁(锐嗯吹特)

ReentrantLock是Java提供的一个显示锁,可以手动控制锁的获取和释放,相比于synchronized关键字,它提供了更多的灵活性。

3. 使用AtomicInteger

AtomicInteger是Java提供的一个原子操作类,可以保证对整数变量的原子操作,从而避免线程安全问题。

4. 使用volatile关键字(窝罗拖)

volatile关键字可以保证变量的可见性和顺序性,可以用来修饰共享的变量,从而避免线程安全问题。

2、拦截器和过滤器的区别

过滤器:

过滤器,是在java web中,你传入的request,response提前过滤掉一些信息,或者提前设置一些参数,然后再传入servlet或者struts的 action进行业务逻辑,比如过滤掉非法url(不是login.do的地址请求,如果用户没有登陆都过滤掉),或者在传入servlet或者 struts的action前统一设置字符集,或者去除掉一些非法字符

拦截器:

拦截器,是在面向切面编程的就是在你的service或者一个方法,前调用一个方法,或者在方法后调用一个方法比如动态代理就是拦截器的简单实现,在你调用方法前打印出字符串(或者做其它业务逻辑的操作),也可以在你调用方法后打印出字符串,甚至在你抛出异常的时候做业务逻辑的操作。

3、设计抢购活动

https://blog.51cto.com/u_14344/6791325

1)页面静态化(js时间没到就是fasle,到时见了通过cdn更新js变成true)

   2)CDN加速

   3)设置token令牌在redis中缓存

   4)获取到token下单后进入MQ进行异步处理

   5)限流(Nginx+Redis 限制用户id、ip等操作)

4、java类加载过程

https://blog.51cto.com/u_16099311/6887257

类加载的过程分为下面三个阶段

1.加载:

所谓加载,就是把字节码文件(java编译器会把源文件编译为字节码文件)加载到JVM中,并且映射为JVM可以识别的数据结构,也就是Class对象;字节码的来源可以是网络、数据库、jar等格式,这个过程是用户可以参与的过程,可以自定义类加载器实现加载的过程

2.链接:

这一步是核心的过程,要把上个阶段的Class文件,转化为JVM运行时的数据结构,分为三个步骤,验证、准备、解析

验证主要是验证字节码是否符合JVM虚拟机的规范,主要从安全方面进行考虑。

准备阶段主要是针对类或接口中的静态变量,对类变量进行创建并赋初值,这里的初值是对应的类型的默认值;

将符号引用转化为直接引用

3.初始化:

执行类初始化的操作,包括静态变量的赋值,静态代码块的执行等;

5、java多线程的建立和线程池一般有那些

https://blog.51cto.com/u_16099336/6451969

https://blog.51cto.com/u_12831/7606157

创建线程的步骤:

1、创建一个类继承Thread类,此时这个类也就是线程

2、在该类当中覆盖Thread类的run()方法。

3、直接创建Thread子类的对象创建线程。

4、调用start()方法,开启线程,并且调用线程任务的run()方法。

6.多线程优化

https://www.bilibili.com/video/BV1cW4y1a7QV/

我讲一个我实际开发时候遇到的一个问题,在面对抽奖活动的时候出现的问题,其中有个服务方法区不断升高。频繁的发生major gc。

1.因为方法区里面存放的是类的信息

2.如果是堆上面的问题我们可以把堆里面的信息dump下来,然后进行工具的分析

3.方法区使用 verbose:class

4.发现了又一个类频繁生成,因为是使用了表达式解析引擎mvel

5.解决方案是对这个类进行了缓存

https://www.bilibili.com/video/BV1Dk4y1t7W9

在讲一个就是Full GC时间非常长报警20s,然后查看配置4c8g的配置,老年代分配6g。

1.通过GC日志看到一些问题

2.通过公司的监控工具看到

3.发生Full GC时CPU内存都会上升,发生了,但是Swap会下降,然后通过Jvm参数关闭Swap区Full GC就变的100ms