摘要:
注解 还记得刚开始学注解时,很天真。傻傻以为创建一个注解类,加到类、方法、属性上就能有某种功能。 现在对注解的理解很简单:标记,可以被程序读取到的标记!(注释是程序不会去执行的) 如果我们单单创建一个注解放到类或方法上面,此时并无啥用,只有编写类通过反射的手段去读取类或方法上的注解,再进行我们自己的 阅读全文
摘要:
概念 Aop原指面向切面编程。但在spring中对aop的实现指的是: 对方法执行前后加入其它逻辑代码,达到增强方法的目的 spring-aop的底层实现 一般实现aop,有两种方案: JDK动态代理 cglib代理 spring中两者都可使用,默认使用JDK动态代理。具体如何实现不作讨论,本文仅讲 阅读全文
摘要:
分页查询优化 最简单的select分页是这样的: select * from user limit 2000,10 mysql实际上会默认 order by id asc,然后再进行limit。这个有个问题是先对user表的所有数据排好序了再进行limit,其他页的数据不是自己想要的但也排序浪费时间 阅读全文
摘要:
索引失效的常见场景 不符合最佳左前缀原则 比如说现在创建一个联合索引:index_union(name,age),然后你的select语句是这样的 select * from user where age = 18 此情况下并不会触发index_union,因为where没使用上name 查询语句中 阅读全文
摘要:
explain mysql提供了一种方式,目的是为了让我们知道sql的执行顺序、索引使用情况、执行效率的情况 table table是展示执行计划过程中,会使用到的表。 执行explain出现的每条记录都会对应一张单表(可能是存在表,可能是临时表) id 执行explain后,处于同一个select 阅读全文
摘要:
适合创建索引的情况 情况1:字典值在业务上是唯一的 比如说用户表的身份证字段,此字段在业务上肯定是唯一性的,因此我们可以给此字段添加唯一索引 情况2:where条件中频繁使用的字段(包含update和delete) where条件中频繁使用的字段。这个应该很好理解,其实很多表会有code字段,常常通 阅读全文
摘要:
创建索引的方式 创建表时,创建索引 在已存在的表,创建索引 创建表添加索引 添加普通索引、唯一索引、主键索引、联合索引、全文索引 CREATE TABLE `kuajing_oms`.`cc_bill_lading` ( `id` bigint(19) NOT NULL COMMENT 'id' P 阅读全文
摘要:
什么情况下需要拷贝对象 需要A对象的属性值,且拷贝完的B对象属性发生修改时,不影响到A对象 拷贝方式错误的方式 对象拷贝 CcBillLading ccBillLading = new CcBillLading(); ccBillLading.setBlCode("test111"); CcBill 阅读全文
摘要:
加锁的前提 共享资源被多个线程同时所消费,造成业务逻辑错误 加锁位置 有两种方案: 共享资源在哪,就对哪进行加锁 如果共享资源在应用上,可以使用JVM自带的本地锁,如synchronized和lock 如果在数据库上,使用数据库自带的锁 在统一的第三方程序上加锁(如redis、zookeeper) 阅读全文
摘要:
什么是并发和并行 并发:单个CPU在做多个线程的任务。简单理解:1位服务员(CPU),同一时间只能服务1位客人(线程),但可以服务完这位后,去服务下一位,服务多位客人即多个任务。 并行:多个CPU在做多个线程的任务。简单理解:多位服务员(CPU),同一时间可以服务多位客人(线程) Java多线程 J 阅读全文