创建线程的几种方式

◇◆丶佛笑我妖孽 提交于 2019-12-06 08:45:35

1.sql语句的优化?

答案:(1)where子句中:where表之间的连接必须写在其他where条件之前,那样可以过滤掉最大数量记录的条件必须写在where子句的末尾having之后。

      (2)使用exist替代in,用not exist替代not in(exist查询条件的时候使用了索引,速度更快)

   (3)避免使用索引上使用计算

   (4)避免在索引上添加 null 和not null

   (5)对查询进行优化,应尽量避免全盘扫描,首先应该考虑在where和order by涉及的列上建立索引

   (6)应尽量避免在where子句使用对字段进行null值判断,否则将导致引擎放弃使用索引转而使用全盘扫描

   (7)应避免在where子句字段进行表达式操作,将导致引擎放弃使用索引转而使用全盘扫描

2.JSON 与 JS 对象的关系

很多人搞不清楚 JSON 和 JS 对象的关系,甚至连谁是谁都不清楚。其实,可以这么理解:
JSON 是 JS 对象的字符串表示法,它使用文本表示一个 JS 对象的信息,本质是一个字符串。
1
var obj = {a: 'Hello', b: 'World'}; //这是一个对象,注意键名也是可以使用引号包裹的
1
var json = '{"a": "Hello", "b": "World"}'//这是一个 JSON 字符串,本质是一个字符串

   JSON 和 JS 对象互转

要实现从JSON字符串转换为JS对象,使用 JSON.parse() 方法:
1
var obj = JSON.parse('{"a": "Hello", "b": "World"}'); //结果是 {a: 'Hello', b: 'World'}
要实现从JS对象转换为JSON字符串,使用 JSON.stringify() 方法:
1
var json = JSON.stringify({a: 'Hello', b: 'World'}); //结果是 '{"a": "Hello", "b": "World"}'

3.创建线程的几种方式

 

一般有四种方法,Thread,Runnable,Callable,使用Executor框架来创建线程池。

Runnable和Callable的区别是,
(1)Callable规定的方法是call(),Runnable规定的方法是run().
(2)Callable的任务执行后可返回值,而Runnable的任务是不能返回值得
(3)call方法可以抛出异常,run方法不可以
(4)运行Callable任务可以拿到一个Future对象,表示异步计算的结果。它提供了检查计算是否完成的方法,以等待计算的完成,并检索计算的结果。通过Future对象可以了解任务执行情况,可取消任务的执行,还可获取执行结果。

4.@Autowired和@Resources的区别:

@Autowired默认按照类型进行注入,如果需要使用名称来进行查找,则需要配合使用@Qualifier(name="被代理类对象 ")使用

@Resources默认使用名称进行注入,名称找不到会按照类型进行注入,如果使用了名称则按照名称注入

5.AcriveMq是什么?为什么要是用AcriveMq?

概述:ActiveMq是基于java中的JMS消息服务规范实现的一个消息中间件

ActiveMq的优势:

    (1)解耦合:上层发送方不用去关心下层服务调用方的问题

    (2)异步调用:各个微服务之间所需要的时间(即时效性要求不同),使用Mq的异步调用合理处理

    (3)流量削峰:大型数据访问的时候,使用消息中间件,超出消息中间件排队等候,减小服务器压力

AcriveMq消息发送方式和区别:

  (1)点对点模式(Queue):每个消息只有一个消费者,消息保证送达,离线消费者可以在下次上线后收到之前积压的消息

  (2)订阅模式(Topic):

          普通订阅:不区分消费者,当前有几个客户端在线,就发送几条广播给客户端。

           持久化订阅:  区分消费者,消费者在线则直接发送消息广播给消费者,消费者离线,只要该消费者有topic 登记,就会为其保留消息直至其再次连接后一次性推送,消息可以积压。

6.Spring如何管理事务:

  1. 编程式事务管理: 直接使用PlatformTransactionManager实现或使用TransactionTemplate模板类
  2. 声明式事务管理: 这意味着你的业务代码将于事务管理分开,只用注解或基于XML配置来管理事务
  3. 我们项目中使用的是声明式事务管理,它通过注解@Transcation 将事务管理代码从业

    务方法中分离出来,以声明的方式来实现事务管理。事务管理作为一种横切关注点,可

    以通过 AOP 方法模块化。Spring 通过 Spring AOP 框架支持声明式事务管理

7.为什么使用redis?

(1)读写性能高:每秒读写10万数据量

(2)丰富的数据类型:包含5种数据类型:String,list,hash,set,zest

(3)原子性:redis存储数据要么全部成功,要么全部失败回滚

(4)丰富的特性:redis还包含publish/subscribe(发布/订阅),通知,key过期处理等。

 

一般有四种方法,Thread,Runnable,Callable,使用Executor框架来创建线程池。

Runnable和Callable的区别是,
(1)Callable规定的方法是call(),Runnable规定的方法是run().
(2)Callable的任务执行后可返回值,而Runnable的任务是不能返回值得
(3)call方法可以抛出异常,run方法不可以
(4)运行Callable任务可以拿到一个Future对象,表示异步计算的结果。它提供了检查计算是否完成的方法,以等待计算的完成,并检索计算的结果。通过Future对象可以了解任务执行情况,可取消任务的执行,还可获取执行结果。

4.@Autowired和@Resources的区别:

@Autowired默认按照类型进行注入,如果需要使用名称来进行查找,则需要配合使用@Qualifier(name="被代理类对象 ")使用

@Resources默认使用名称进行注入,名称找不到会按照类型进行注入,如果使用了名称则按照名称注入

5.AcriveMq是什么?为什么要是用AcriveMq?

概述:ActiveMq是基于java中的JMS消息服务规范实现的一个消息中间件

ActiveMq的优势:

    (1)解耦合:上层发送方不用去关心下层服务调用方的问题

    (2)异步调用:各个微服务之间所需要的时间(即时效性要求不同),使用Mq的异步调用合理处理

    (3)流量削峰:大型数据访问的时候,使用消息中间件,超出消息中间件排队等候,减小服务器压力

AcriveMq消息发送方式和区别:

  (1)点对点模式(Queue):每个消息只有一个消费者,消息保证送达,离线消费者可以在下次上线后收到之前积压的消息

  (2)订阅模式(Topic):

          普通订阅:不区分消费者,当前有几个客户端在线,就发送几条广播给客户端。

           持久化订阅:  区分消费者,消费者在线则直接发送消息广播给消费者,消费者离线,只要该消费者有topic 登记,就会为其保留消息直至其再次连接后一次性推送,消息可以积压。

6.Spring如何管理事务:

  1. 编程式事务管理: 直接使用PlatformTransactionManager实现或使用TransactionTemplate模板类
  2. 声明式事务管理: 这意味着你的业务代码将于事务管理分开,只用注解或基于XML配置来管理事务
  3. 我们项目中使用的是声明式事务管理,它通过注解@Transcation 将事务管理代码从业

    务方法中分离出来,以声明的方式来实现事务管理。事务管理作为一种横切关注点,可

    以通过 AOP 方法模块化。Spring 通过 Spring AOP 框架支持声明式事务管理

7.为什么使用redis?

(1)读写性能高:每秒读写10万数据量

(2)丰富的数据类型:包含5种数据类型:String,list,hash,set,zest

(3)原子性:redis存储数据要么全部成功,要么全部失败回滚

(4)丰富的特性:redis还包含publish/subscribe(发布/订阅),通知,key过期处理等。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!