课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
安全性是程序员在开发软件的时候需要重点关注的一个问题,而今天我们就一起来了解一下,java编程开发线程安全与缓存问题分析。
1、说说线程安全的几种实现方式?
答:什么是线程安全?我的理解是这样的,一个对象被多个线程同时访问,还能保持其内部属性的顺序性及同步性,则认定为线程安全。实现线程安全的三种方式:被volatile、synchronized等关键字修饰,或者使用java.util.concurrent下面的类库。
2、方法内部,如何实现更好的异步?
答:我们知道异步其实就是让另一个线程去跑,那么如何创建线程?一种直接newThread,二种new一个实现Runnable接口的实现类。三种,通过线程池来管理创建等,这里说到更好的实现异步,那就是说我们在方法内部避免频繁的new线程,就可以考虑线程池了。那么线程池如何创建?这里可以new一个线程池,但是需要考虑单例,或者在程序初始启东时,就创建一个线程池,让他跑着,然后在具体方法的时候,通过线程池来创建线程,实现异步
3、项目中为何要用缓存?如何理解nginx+tomcat+redis集群缓存?
答1:直接的表现就是减轻数据库的压力。避免因为数据读取频繁或过大而影响数据库性能,降低程序宕机的可能性
答2:nginx常用做静态内容服务和代理服务器,直面外来请求转发给后面的应用服务。nginx本身也能做缓存,比如静态页面的缓存什么的。而tomcat是应用服务器,处理JAVAWEB程序功能等等。你也可以这么理解,假设把用户的请求当做是一条河流,那么nginx就相当于一个水利工程,tomcat相当于一条条分流的支流,而redis相当于支流旁边的一个个水库。当你洪水来了,nginx根据你每条支流的承受力度分发不同的水流量,在确保程序正常运行的情况下,分发给每条支流(tomcat)不同的水流量。而redis相当于一个个支流的水库,存储水源,降低压力,让后面的水量平稳。
4、日常项目中,如果你接手,你准备从哪些方面调优?
答:这个呢先是了解哪些需要优化,需要优化肯定是项目性能遭遇瓶颈或者猜测即将遭遇了,我们才会去考虑优化。那么怎么优化?
a、扩容,扩容的理解,就是扩充服务器并行处理的能力,简单来说就是加服务器,增加处理请求的能力,例如增加nginx、tomcat等应用服务器的个数,或者物理服务器的个数,还有加大服务器带宽等等,这里考虑的是硬件方面
b、调优,调优,包括系统调优和代码调优。系统调优就是说加快处理速度,比如我们所提到的CDN、ehcache、redis等缓存技术,消息队列等等,加快服务间的响应速度,增加系统吞吐量,避免并发,至于代码调优,这些就需要多积累了,比如重构、工厂等。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请在707945861群中学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。