请概述消息中间件?怎么样去实现一个多线程?简单描述Jquery的跨域请求,并且如何实现?简单描述Redis和Memcache、Ehcache的区别?什么是数据库水平、垂直拆分?百万级的单表如何优化?

6、请概述消息中间件?

答:消息队列已经逐渐成为企业IT系统内部通信的核心手段。它具有低耦合、可靠传递、广播、流量控制、最终一致性等一系列功能,已成为异步RPC的主要手段之一。


7、StringBuffer和StringBuilder有什么区别?

答:两者的区别主要是在运行速度和线程安全这两方面。

       1.StringBuffer与StringBuilder中的方法和功能完全是等价的。

        2.只是StringBuffer中的方法大都采用了Synchronized关键字进行修饰,因此线程是安全的,而StringBuilder没有这个修饰,可以被认为是线程不安全的。

        3.在单线程程序下,StringBuilder效率更快,因为它不需要加锁,不具备多线程安全而StringBuffer则每次都需要判断锁,效率相对更低。


8、字符串拼接为什么要使用Stringbuffer,而不使用String+String?

答:StringBuffer是可以改变的字符串,而String是不可改变的。每次使用System.String类中的方法之一时,都要在内存汇总创建一个新的字符串对象,就要为该对象分配新的空间。当要对字符串重复修改时,创建新的String对象相关的系统开销很大,就是要修改字符串而不创建新的对象,则用StringBuffer。


9、怎么样去实现一个多线程?

答: JAVA多线程实现的四种方式

        1.继承Thread类创建线程

        2.实现Runnable接口创建线程

        3.实现Callable接口通过FutureTask包装器来创建Thread线程

        4.使用ExecutorService、Callable、Future实现有返回结果的线程


10、什么是数据库水平、垂直拆分?

答:水平拆分,垂直拆分后遇到单击瓶颈,可以使用水平拆分。相对于垂直拆分的区别是把不同的表拆到不同的数据库中,而水平拆分是把同一个表拆到不同的数据库中。

       垂直拆分,专库专用。一个数据库由很多表的构成,每个表对应着不同的业务,垂直切分是指按照业务将表进行分类,分布道不同的数据库上面,这样也就将数据或者说压力分担到不同的库上面。


11、百万级的单表如何优化?

答: 1.对查询进行优化,要尽量避免全表扫描,首先考虑在where及order by涉及的列上建立索引。

        2.应尽量避免在where子句中对字段进行null值判断,否则将导致引擎放弃使用索引而进行全表扫描

        3.应尽量避免在where子句使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。

        4.应尽量避免在where子句中使用or来连接条件,如果一个字段有索引,一个字段没有索引,将导致引擎放弃使用索引而进行全表扫描。


12、怎么优化一个sql语句的性能,从哪些方法入手?

答:1.对查询进行优化,要尽量避免全表扫描,首先考虑在where及order by涉及的列上建立索引。

       2.应尽量避免在where子句中对字段进行null值判断,否则将导致引擎放弃使用索引而进行全表扫描

        3.应尽量避免在where子句使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。

        4.应尽量避免在where子句中使用or来连接条件,如果一个字段有索引,一个字段没有索引,将导致引擎放弃使用索引而进行全表扫描。


13、简单描述Jquery的跨域请求,并且如何实现?

答:1.通过ajax在服务器端通过代理的方式实现

        2.通过jsonp的方式


14、简单描述Redis和Memcache、Ehcache的区别?

答:Ehcache是一个纯java的进程内缓存框架,具有快速、精干等特点,是hibernate中默认的CacheProvider,所以被用于大型复杂分布式web application的各个节点中。

        memcache是一套分布式的高速缓存系统。通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。简单的说就是将数据库调用到内存中,然后从内容中读取,从而大大提高读取速度。

        Redis是用C语言开发的一个开源的高性能键值对数据库。它通过提供多种键值数据类型来适应不同场景下的存储需求,目前为止Redis支持的键值数据类型:字符串类型、散列类型、列表类型、集合类型、有序集合类型。


15、书写一个单例类?

答:1.饿汉式单例

public class Singleton {
private Singleton(){};
private static Singleton instance = new Singleton();
public static Singleton getInstance(){
return instance;
}
}

        2.懒汉式单例

public class Singleton1 {
private Singleton1(){
System.out.println("createSingleton");
}
private static Singleton1 instance = null;
public static synchronized Singleton1 getInstance(){
return instance==null?new Singleton1():instance;
}
public static void testSingleton(){
System.out.println("CreateString");
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

良月柒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值