AOP切面使用 一、主要设计注解: @Aspect @After @before @Pointcut @Aroundpom文件引入<!--用于aop切面编程--><dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId></dependency>二、AOP核心概念1、横切关注点对哪些方法进行拦截,拦截后怎
Integer.MAX_VALUE * 2返回-2,Integer.MIN_VALUE * 2返回0? int最大值和最小值计算1、Integer.MAX_VALUE*2 // 2147483647 二进制是:01111111111111111111111111111111 int a = Integer.MAX_VALUE; // -2147483648 二进制是:10000000000000000000000000000000 int b = Integer.MIN_VALUE; // true 意思就是
MySQL索引类型(type)分析 type索引类型:system > const > eq_ref > ref > range > index > all优化级别从左往右递减,没有索引的⼀般为’all’,需要对type进⾏优化前提是有索引。其中’system’和’const’只是理想型,实际只能达到’ref’和’range’。注意:这⾥主要针对MySQL5.6进⾏讲解,与其他版本有区别,但是原理过程⼀致。创建两张表teacher和teacherCard# 教师表create table t
Java中HashMap、LinkedHashMap和TreeMap区别使用场景 1. HashMap中k的值没有顺序,常用来做统计。2.LinkedHashMap吧。它内部有一个链表,保持Key插入的顺序。迭代的时候,也是按照插入顺序迭代,而且迭代比HashMap快。3. TreeMap的顺序是Key的自然顺序(如整数从小到大),也可以指定比较函数。但不是插入的顺序。4.Hashtable与 HashMap类似,它继承自Dictionary类、不同的是:它不允许记录的键或者值为空;它支持线程的同步、即任一时刻只有一个线程能写Hashtable,因此也导致了 Hashtabl
Redis的key命名规范 一、键值设计1. key名设计【建议】: 可读性和可管理性1) 建议全部⼤写2) key不能太长也不能太短,键名越长越占资源,太短可读性太差3) key单词与单词之间以:分开【以业务名(或数据库名)为前缀(防止key冲突),用冒号分隔,比如业务名:表名:id】redis使用的时候注意命名空间,一个项目一个命名空间,项目内业务不同命名空间也不同。一般情况下: 1) 第一段放置项目名或缩写 如 project 2) 第二段把表名转换...
总结rocketmq消息丢失四种情况 1、 生产者网络波动 消息丢失解决方法:利用rocketmq自带的事务机制处理,首先发送half消息于rocketmq服务器,此时消息于消费者不可见,等生产者业务处理完成则发送,否则回滚,如果half消息发送成功,且RocketMQ返回成功响应,则消费者正常消费,否则回滚核心代码展示生产者//设置回调函数producer.setTransactionCheckListener(transactionCheckListener);//发送事务消息SendResult sendResul
JVM(十九) 194.说一下 jvm 的主要组成部分?及其作用?类加载器(ClassLoader)运行时数据区(Runtime Data Area)执行引擎(Execution Engine)本地库接口(NativeInterface)组件的作用: 首先通过类加载器(ClassLoader)会把 Java 代码转换成字节码,运行时数据区(Runtime Data Area)再把字节码加载到内存中,而字节码文件只是 JVM 的一套指令集规范,并不能直接交个底层操作系统去执行,因此需要特定的命令解析器执行引擎.
Redis(十八) 179.redis 是什么?都有哪些使用场景?Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。Redis 使用场景:数据高并发的读写海量数据的读写对扩展性要求高的数据180. redis 有哪些功能?数据缓存功能分布式锁的功能支持数据持久化支持事务支持消息队列181. redis 和 memecache 有什么区别?memcached所有的值均是简单的字符串,redis作为其替代者,支持
MySql(十七) MySql164.数据库的三范式是什么?第一范式:强调的是列的原子性,即数据库表的每一列都是不可分割的原子数据项。第二范式:要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性。第三范式:任何非主属性不依赖于其它非主属性。165. 一张自增表里面总共有 7 条数据,删除了最后 2 条数据,重启 mysql 数据库,又插入了一条数据,此时 id 是几?表类型如果是 MyISAM ,那 id 就是 8。表类型如果是 InnoDB,那 id 就是 6。Inno
Zookeeper(十六) Zookeeper157.zookeeper 是什么?zookeeper 是一个分布式的,开放源码的分布式应用程序协调服务,是 google chubby 的开源实现,是 hadoop 和 hbase 的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。158. zookeeper 都有哪些功能?集群管理:监控节点存活状态、运行请求等。主节点选举:主节点挂掉了之后可以从备用的节点开始新一轮选主,主节点选举说的就是这个选举的过程,使用
Kafka(十五) Kafka152.kafka 可以脱离 zookeeper 单独使用吗?为什么?kafka 不能脱离zookeeper单独使用,因为 kafka 使用 zookeeper 管理和协调 kafka 的节点服务器。153. kafka 有几种数据保留的策略?kafka 有两种数据保存策略:按照过期时间保留和按照存储的消息大小保留。154. kafka 同时设置了 7 天和 10G 清除数据,到第五天的时候消息达到了 10G,这个时候 kafka 将如何处理?这个时候 kafka 会执行数据.
RabbitMQ(十四) RabbitMQrabbitmq 的使用场景有哪些?①. 跨系统的异步通信,所有需要异步交互的地方都可以使用消息队列。就像我们除了打电话(同步)以外,还需要发短信,发电子邮件(异步)的通讯方式。②. 多个应用之间的耦合,由于消息是平台无关和语言无关的,而且语义上也不再是函数调用,因此更适合作为多个应用之间的松耦合的接口。基于消息队列的耦合,不需要发送方和接收方同时在线。在企业应用集成(EAI)中,文件传输,共享数据库,消息队列,远程过程调用都可以作为集成的方法。③. 应用内的同步变异步,比如订
Mybatis(十三) Mybatismybatis 中 #{}和 ${}的区别是什么?#{}是预编译处理,KaTeX parse error: Expected 'EOF', got '#' at position 21: …串替换; Mybatis在处理#̲{}时,会将sql中的#{}替…{}时,就是把${}替换成变量的值;使用#{}可以有效的防止SQL注入,提高系统安全性。mybatis 有几种分页方式?数组分页sql分页拦截器分页RowBounds分页mybatis 逻辑分页和物理分页的区别是什么?
Hibernate(十二) Hibernate113. 为什么要使用 hibernate?对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。 Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现。他很大程度的简化DAO层的编码工作 hibernate使用Java反射机制,而不是字节码增强程序来实现透明性。 hibernate的性能非常好,因为它是个轻量级框架。映射的灵活性很出色。它支持各种关系数据库,从一对一到多对多的各种复杂关系。114. 什么是 ORM 框架?对象
Spring Boot / Spring Cloud(十一) Spring Boot / Spring Cloud104. 什么是 spring boot?在Spring框架这个大家族中,产生了很多衍生框架,比如 Spring、SpringMvc框架等,Spring的核心内容在于控制反转(IOC)和依赖注入(DI),所谓控制反转并非是一种技术,而是一种思想,在操作方面是指在spring配置文件中创建,依赖注入即为由spring容器为应用程序的某个对象提供资源,比如 引用对象、常量数据等。SpringBoot是一个框架,一种全新的编程规范,他的产生简化了框架
Spring/SpringMVC(十) 十、Spring / Spring MVC90. 为什么要使用 spring?1.简介 目的:解决企业应用开发的复杂性 功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能 范围:任何Java应用 简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。2.轻量 从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并且Spring所需的处理开销也是微不足
设计模式(九) 设计模式88. 说一下你熟悉的设计模式?单例模式简单点说,就是一个应用程序中,某个类的实例对象只有一个,你没有办法去new,因为构造器是被private修饰的,一般通过getInstance()的方法来获取它们的实例。getInstance()的返回值是一个对象的引用,并不是一个新的实例,所以不要错误的理解成多个对象。单例模式实现起来也很容易,直接看demo吧publicclassSingleton{privatestaticSingleton singleton;p...
网络(八) 网络79. http 响应码 301 和 302 代表的是什么?有什么区别?答:301,302 都是HTTP状态的编码,都代表着某个URL发生了转移。区别:301 redirect: 301 代表永久性转移(Permanently Moved)。 302 redirect: 302 代表暂时性转移(Temporarily Moved )。80. forward 和 redirect 的区别?Forward和Redirect代表了两种请求转发方式:直接转发和间接转发。直接转发方式(
异常(七) 异常74. throw 和 throws 的区别?throws是用来声明一个方法可能抛出的所有异常信息,throws是将异常声明但是不处理,而是将异常往上传,谁调用我就交给谁处理。而throw则是指抛出的一个具体的异常类型。75. final、finally、finalize 有什么区别?final可以修饰类、变量、方法,修饰类表示该类不能被继承、修饰方法表示该方法不能被重写、修饰变量表示该变量是一个常量不能被重新赋值。 finally一般作用在try-catch代码块中,在处理异常的时候
JavaWeb(六) Java Web64. jsp 和 servlet 有什么区别? jsp经编译后就变成了Servlet.(JSP的本质就是Servlet,JVM只能识别java的类,不能识别JSP的代码,Web容器将JSP的代码编译成JVM能够识别的java类) jsp更擅长表现于页面显示,servlet更擅长于逻辑控制。 Servlet中没有内置对象,Jsp中的内置对象都是必须通过HttpServletRequest对象,HttpServletResponse对象以及HttpServlet对