第二天。
答:表级锁:开销小,加锁快;不会出现死锁;锁定丽都大,发生锁冲突的概率最高,并法度最低。
2、行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。
3、页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般。
答:1、CHAR 和 VARCHAR 类型在存储和检索方面有所不同。
2、CHAR 列长度固定为创建表时声明的长度,长度值范围是 1 到 255 当 CHAR值被存储时,它们被用空格填充到特定长度,检索 CHAR 值时需删除尾随空格。
索引是通过以下方式为表格定义的:
SHOW INDEX FROM < tablename>;
答:
SELECT * FROM 哪张表 LIMIT 0,50;
答:任何标准表最多可以创建 16 个索引列。
答:
1、设计良好的数据库结构,允许部分数据冗余,尽量避免 join 查询,提高效率。
2、选择合适的表字段数据类型和存储引擎,适当的添加索引。
3、MySQL 库主从读写分离。
4、找规律分表,减少单表中的数据量提高查询速度。
5、添加缓存机制,比如 memcached,apc 等。
6、不经常改动的页面,生成静态页面。
7、书写高效率的 SQL。比如 SELECT * FROM TABEL
改为
SELECT field_1,field_2, field_3 FROM TABLE;
答:SQL 语言包括数据定义(DDL)、数据操纵(DML),数据控制(DCL)和数据查询(DQL)四个部分。
数据定义:Create Table,Alter Table,Drop Table, Craete/Drop Index 等
数据操纵:Select ,insert,update,delete
数据控制:grant,revoke
数据查询:select
答:存储过程是一个预编译的 SQL 语句,优点是允许模块化的设计,就是说只需创建一次,以后在该程序中就可以调用多次。如果某次操作需要执行多次 SQL,使用存储过程比单纯 SQL 语句执行要快。可以用一个命令对象来调用存储过程。
答:
1.在Where支局中:where表之间的连接必须写在其他Where条件之间,那些可以过滤掉最大数量记录的条件必须写在Where子句的末尾。HAVING最后。
2、用EXISTS替代IN、用NOT EXISTS 替代 NOT IN。
3、避免在索引列上使用计算。
4、避免在索引列上使用IS NULL 和IS NOT NULL。
5、对查询进行优化,今年避免全表扫描,首先应考虑在where及order by 涉及的列上建立索引。
6、应该尽量避免在where子句中对字段进行null值判断,否则将导致引擎放弃使用索引而进行全表扫描。
7、应尽量避免在where子句中对字段进行表达式操作,这将导致引擎使用索引而进行全表扫描。
答:主键–唯一标识一条记录,不能有重复的,不允许为空。
外键–表的外键是另一表的主键, 外键可以有重复的, 可以是空值
索引–该字段没有重复值,但可以有一个空值
作用:
个数
答:他是采用AMQP 高级消息队列协议的一种消息队列技术。
最大的特点就是消费并不需要确保提供方存在,实现了服务之间的高度解耦。
答:1、在分布式系统下具备异步,削峰,负载均衡等一些列高级功能;
2、拥有持久化的机制,进程消息,队列中的信息也可以保存下来。
3、实现消费者和生产者之间的解耦。
4、对于高并发场景下,利用消息队列可以使得同步访问变为串行访问达到一定量的限流,利用数据库的操作。
5、可以使用消息队列达到异步下单的效果,排队中,后台进行逻辑下单。
答:若该队列至少有一个消费者订阅,消息将以循环(round-robin)的方式发送给消费者。每条消息只会分发给一个订阅的消费者(前提是消费者能够正常处理消息并进行确认)
答:
答:消息持久化,当然前提是队列必须持久化,RabbitMQ确保持久性消息能从服务器重启中恢复的方式是,将他们写入磁盘上的一个持久化日志文件,当发布一条持久性消息到交换器上时,Rabbit会在消息提交到日志文件后才发送相应。
一旦消费者从持久队列中消费了一条持久化消息,RabbitMQ会在持久化日志中把这条消息标记为等待垃圾收集。如果持久化消息在被消费之前RabbitMQ重启,那么Rabbit会自动重建交换器和队列(以及绑定),并重新发布持久化日志文件中的消息合适的队列。
答:由于 TCP 连接的创建和销毁开销较大,且并发数受系统资源限制,会造成性能瓶颈。RabbitMQ 使用信道的方式来传输数据。信道是建立在真实的TCP 连接内的虚拟连接,且每条 TCP 连接上的信道数量没有限制。
答:我知道镜像集群模式,就是你创建的queue,无论元数据还是queue里面的消息都会存在于多个实例上**,然后每次你写消息到queue的时候,都会自动把消息到多个实例的queue里进行消息的同步。**
答:在软件开发过程中,跨越应用程序多个点的功能称为交叉问题。这些交叉问题与应用程序的主要业务逻辑不同。因此,将这些横切关注与业务逻辑分开是面向方面编程(AOP)的地方。
答:Spring 提供了一种使用 ControllerAdvice 处理异常的非常有用的方法。 我们通过实现一个 ControlerAdvice 类,来处理控制器类抛出的所有异常。
答:SpringBoot的优点有很多,比如它可以减少开发和测试的时间,一些努力的时间也可以有所减少,它还可以使用JavaConfig来避免使用XML,我觉得他最大的有点就是避免了使用大量的Maven导入和各种版本冲突。
@Configuration
注解的类,然后添加用@Bean
注解的方法,Spring将自动加载对象并像以前一样对其进行管理。你甚至可以将@Autowired
添加到bean方法中,以使Spring自动装入需要的依赖关系中。如果本文对你有一点帮助的话,请给我点一个赞再走吧。
荣誉妒忌成功,而成功却以为自己就是荣誉。——让·罗斯唐