摘要: sql怎么优化 建索引。目的是为了避免全表扫描,经常用到(where、groupby、orderby语句中)、很少修改的字段建索引,也不是越多越好,越多占用空间越大,DML操作性能越受损。 尽量不用select * 有连接操作时: 尽量用小表驱动大表,如left join左边最好放小表 尽量用内连接 阅读全文
posted @ 2021-04-23 23:21 i%2 阅读(65) 评论(0) 推荐(0)
摘要: 事务的实现原理 锁 mysql在读写操作的时候锁定,commit或rollback时候解锁 行(记录)锁:解决并发写的问题(可重复读级别)。若要操作的行是有索引的,则会直接在索引字段找到并加行锁;无索引加行锁的方式是:先锁整张表,然后过滤非操作行,留下的就是行锁,故而性能较差,大表建议加索引。 ​ 阅读全文
posted @ 2021-04-23 23:20 i%2 阅读(50) 评论(0) 推荐(0)
摘要: 事务的四大性质和隔离级别 什么是事务:一系列严密的操作,要么全部成功,要么全部失败。mysql只有Innodb引擎才支持事务,事务最终目的是要保障数据的可靠性、一致性 四大性质(ACID) 原子性(Atomicity):要么全成功,要么全失败回滚 一致性(Consistency):一个事务执行前后处 阅读全文
posted @ 2021-04-23 23:18 i%2 阅读(48) 评论(0) 推荐(0)
摘要: SpringMVC工作原理 doService() >doDispatch() >processDispatchResult() >render() doService设置request的相关属性然后调用doDispatch, doDispatch中调用processDispatchResult(考 阅读全文
posted @ 2021-04-23 23:17 i%2 阅读(45) 评论(0) 推荐(0)
摘要: JDK中有哪些设计模式 设计模式:四人帮GOF于1994年提出。什么是 GOF(四人帮:Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides,全拼 Gang of Four) 结构性模式 适配器模式 把一个接口转化为另一个接口。比如美国110 阅读全文
posted @ 2021-04-23 23:15 i%2 阅读(69) 评论(0) 推荐(0)
摘要: JAVA各个版本特性 jdk1.0(代号Oak橡树,96年发布。95发布java) jre、jdk,核心api,jvm,外挂jit jdk1.1(coffee,97) jit提高效率,jdbc、内部类、javabean、RMI(远程方法调用),内省反射 1.2(playground,98) JSP、 阅读全文
posted @ 2021-04-23 23:14 i%2 阅读(623) 评论(0) 推荐(0)
摘要: 执行顺序问题 main中按顺序执行,当执行到创建类时,如果有继承关系,从最顶层父类一直往下分别执行: 第一先按 静态代码块或静态变量 编写位置顺序执行(谁写在前面就先执行), 第二初按 普通代码块或成员变量 编写位置顺序执行。如果父和子某个成员变量都用某个方法初始化,子覆写了父的这某个方法,子和父成 阅读全文
posted @ 2021-04-23 23:13 i%2 阅读(84) 评论(0) 推荐(0)
摘要: 面向对象特征和原则 四大特征:封装、抽象、继承、多态 封装 把数据和对数据的操作隐藏到一个方法体内,对外只暴露这个方法体的接口,让调用者无需考虑内部实现细节只管调用完成对应的功能即可。优点是解耦,方法有明确的功能,内部可以随意修改而不需要考虑外部逻辑,提高了安全性和复用性。 继承 被继承的叫父类,继 阅读全文
posted @ 2021-04-23 23:12 i%2 阅读(51) 评论(0) 推荐(0)
摘要: Java中的checked异常和unchecked异常 ​ Java语言规范对这两个定义十分简单,将派生于Error或者RuntimeException的异常称为unchecked异常,所有其他的异常成为checked异常。 unchecked异常:表示错误,程序的逻辑错误。不需要在代码中显式地捕获 阅读全文
posted @ 2021-04-23 23:10 i%2 阅读(60) 评论(0) 推荐(0)
摘要: float和double为什么能表示的范围大?为什么会失真? float能表示有效位数为6-7位,double有效位数为15-16位(负值取值范围为 -1.7976E+308 到 -4.94065645841246544E-324,正值取值范围为 4.94065645841246544E-324 到 阅读全文
posted @ 2021-04-23 23:08 i%2 阅读(105) 评论(0) 推荐(0)
摘要: 动态代理 jdk动态代理:根据业务方法名,调用业生成的代理对象实例的同名方法。 cglib动态代理:通过继承业务类,并重写业务类的方法,生成的是业务类的子类。因为接口也能被继承,所以接口也可以被代理。 jdk低版本(jdk8以前)cglib创建代理对象性能高,但耗时久,故单例对象适合用cglib创建 阅读全文
posted @ 2021-04-23 23:07 i%2 阅读(47) 评论(0) 推荐(0)
摘要: RPC架构(怎么设计RPC) 服务层,Service,其中主要部分就是动态代理,主要用于将服务提供者的接口封装成远程服务调用。 过滤器层,服务调用职责链,提供多种调用切面供框架自身和使用者扩展,例如负载均衡,性能统计,服务调用完成通知,失败重试等。 RPC 层,这里就是 RPC 框架的核心部分,包括 阅读全文
posted @ 2021-04-23 23:00 i%2 阅读(44) 评论(0) 推荐(0)
摘要: Reactor模型 Reactor分为单线程版和多线程版,主从Reactor多线程模型(Nginx、Memcached和Netty都是采用这种实现)如下: 从主线程池中随机选择一个Reactor线程作为acceptor线程,用于绑定监听端口,接收客户端连接 acceptor线程接收客户端连接请求之后 阅读全文
posted @ 2021-04-23 22:58 i%2 阅读(68) 评论(0) 推荐(0)