- 博客(18)
- 收藏
- 关注
转载 数据库优化——SQL 性能优化
目录文章目录数据库优化——SQL 性能优化一、创建索引二、避免在索引上使用计算三、使用预编译查询四、调整WHERE字句中的连接顺序五、尽量将多条SQL语句压缩到一句SQL中六、用WHERE字句替换HAVING字句七、用UNION ALL 替换UNION八、考虑使用 “临时表” 暂存中间结果九、只在必要的情况下才使用事务begin translation十、尽量避免使用游标十一、用varchar/nvarchar 代替 char/nchar十二、查询select语句优化十三、 删除DELETE语句优化语句十
2020-05-12 16:54:39
532
原创 MySQL相关知识点整理
文章目录文章目录一、数据库的三范式二、一张自增表里面总共有 7 条数据,删除了最后 2 条数据,重启 mysql 数据库,又插入了一条数据,此时 id 是几?三、如何获取当前数据库版本四、事务的四大特性(ACID) 是什么?五、并发事务带来的问题六、事务隔离等级,MySQL的默认隔离等级七、索引相关1> 索引是干嘛用的?2> 数据库的索引有哪些?3> 哪些不走索引?4> 索引具体采用的哪种数据结构5> B+ Tree索引和Hash索引区别6> MySQL的索引实现方式
2020-05-12 11:17:25
488
原创 缓存相关问题
一、缓存的优缺点优点 (加速读写,降低后端负载)加速读写:因为缓存通常都是全内存的(例如Redis、Memcache),而存储层通常读写能力差,通过缓存的使用可以有效的加速读写降低后端负载:缓存可以减少访问量和复杂计算(例如复杂的SQL语句),在很大程度降低后端的负载缺点 (数据不一致、代码维护成本和运维成本)数据不一致:缓存层和存储层有一定时间窗口的不一致性代码维护成本和运维成本:加入缓存后,需要同时处缓存层和处理层的逻辑,增加了代码的复杂性,同样也增加了运维成本
2020-05-09 13:24:15
430
原创 四种常见的创建线程池方法及线程池分析
一、线程池的好处:线程池的重用线程创建和销毁的开销是巨大的,而线程池的重用就大大减少不必要的开销,减少了消费内存的开销,其线程执行速度也会有所提升。控制线程池的并发数并发:在某个时间段,多个程序都在执行和执行完毕之间,但是在同一时刻只有一个程序在运行;并行:在某个时间段,每个程序都按照自己独立异步执行,程序之间互不干扰;控制线程池的并发数,可以有效的避免大量的线程争夺CPU资源而造成阻塞。线程池可以对线程进行管理线程池可以定时、定期、单线程、并发数控制等功能。二、创建线程池
2020-05-08 19:03:02
275
转载 MySQL拼接字符串,GROUP_CONCAT
两位员工馮大和馮二也要面对无情的 KPI 考核了为例进行,他们工作干得很不错,performance 分别是 4 和 5 领导想要查看每个 performance 下都有谁,同时要求将这些人的名称要逗号拼接成一个字符串,也就是说要得到下面的结果: 要将结果集中某个指定的列进行字符串拼接,这要怎么做呢?GROUP_CONCAT(expr) 在 Mysql 官方文档 中,该...
2020-04-29 14:21:25
3007
1
原创 HashMap 面试知识点整理
HashMap 原理 JDK8后采用 数组+链表+红黑树 的数据结构。我们通过put和get存储和获取对象。当我们给put()方法传递键和值时,先对键做一个hashCode()的计算来得到它在bucket数组中的位置来存储Entry对象。当获取对象时,通过get获取到bucket的位置,再通过键对象的equals()方法找到正确的键值对,然后在返回值对象HashMap 的特性HashM...
2020-04-26 09:05:14
196
1
原创 MySql 乐观锁 与 悲观锁 的概念与使用
MySql 的乐观锁 与 悲观锁先上图:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8fFZxcim-1587634926298)(https://i.loli.net/2020/04/23/V6p9kBeuo5Z3Ybx.jpg)]乐观锁 乐观锁,就是很乐观,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在提交更新的时候会判断一下在此期间别...
2020-04-23 17:45:31
533
转载 mysql的for update 用法
mysql的for update 用法在高并发场景下对数据的准确行有很高的要求,用到了 FOR UPDATE。for update的使用场景 一般这些操作都是很长一串并且是开启事务的。如果库存刚开始读的时候是1,而立马另一个进程进行了update将库存更新为0了,而事务还没有结束,会将错的数据一直执行下去,就会有问题。 需要 for upate 进行数据加锁防止高并发时候数据...
2020-04-23 14:13:57
641
原创 antd vue中,表单动态添加input
本文章用于学习记录,原文地址最近做项目用的组件库Ant Design Vue,这个组件看起来文档很详细,但也会遇到一些意想不到的问题,最后看文档没办法解决,只能去看源码,折腾了好久,终于把问题给解决了,遇到的问题主要是当添加input的时候验证不能友好的使用,当一个input添加,然后删除,提交表单的时候会提示填写删除的input,还有个问题就是当把填写好的内容,删除提交的时候,已删除的内容...
2020-04-21 14:43:43
2061
原创 springboot学习笔记:前后台传值方式
一、后台接收URL拼接参数后台代码:@GetMapping("/item/{code}") //对应的链接为:/item/10001public List getProduct(@PathVariable(“code”) String productCode) { //your code}二、后台接收查询参数后台代码:@GetMapping("/detail") //对应的链接为...
2020-04-20 15:01:19
367
原创 RabbitMQ学习知识点
RabbitMQ一、rabbitMQ 的使用场景跨系统的异步通信,所有需要异步交互的地方都可以使用消息队列。多个应用之间的耦合,由于消息是平台无关和语言无关的,而且语义上也不再是函数调用,因此更适合作为多个应用之间的松耦合的接口。应用内的同步变异步,比如订单处理,就可以由前端应用将订单信息放到队列,后端应用从队列里依次获得消息处理,高峰时的大量订单可以积压在队列里慢慢处理掉。由于同步通...
2020-04-12 17:52:48
249
原创 Mybatis
Mybatis 相关知识点mybatis 中的 #{} 和 ${} 的区别在 mybatis 的映射配置文件中,动态传递参数的两种方式:(1)、#{} :占位符 (2)、${}:拼接符 区别:#{} 为参数占位符,即sql 预编译${} 为字符串拼接符,即 sql 拼接#{}:动态解析 -> 预编译 -> 执行${}:动态解析 ->...
2020-04-10 09:57:36
170
原创 Spring
SpringSpring原理 是一个轻量级的控制反转(IOC)和面向切面(AOP)的容量框架。控制反转(IOC) spring通过一种控制反转(ioc)的技术促进了耦合性 面向切面(AOP) spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务进行内聚性的开发。 AOP(面向切面编程),可以说是OOP(面向对象编程)的补充和完善。OOP引入封装...
2020-03-31 17:05:49
167
原创 设计模式
设计模式单例模式一个应用程序中,某个类的实例对象只有一个,你没有办法去new,因为构造器是被private修饰的,一般通过getInstance()的方法来获取它们的实例懒汉式:public class SingletonDemo1 { private static SingletonDemo1 singletonDemo1; private SingletonDemo1(...
2020-03-27 18:19:48
131
原创 创建线程池用法
创建线程池用法创建线程池实体类:RunnableTest:public class RunnableTest implements Runnable { @Override public void run() { ThreadLocal threadLocal = new ThreadLocal(); threadLocal.set(Thre...
2020-03-27 11:56:49
116
原创 反射和序列化
什么是反射?反射主要是指程序可以访问、检测和改变它本身状态或行为的一种能力Java反射Java的反射机制主要提供以下功能:在运行时判断任意一个对象所属的类在运行时构造任意一个类的对象在运行时判断任意一个类所具有的成员变量和方法在运行时调用任意一个对象的方法什么是序列化?什么情况下需要序列化?为了保存在内存中的各种对象状态(也就是实例变量),并且可以把保存的对象状态再读出来。...
2020-03-27 09:56:02
303
原创 动态代理
动态代理动态代理: 给实现了某个接口的类的方法,加一些额外的处理。比如说加日志,加事务等。可以给这个类创建一个代理,顾名思义就是创建一个新的类,这个类不仅包含原来类方法的功能,而且还在原来的基础上添加了额外处理的新类。这个代理类就是动态生成的,据有解耦意义,灵活,扩展性强动态代理的应用:Spring的AOP加事务加权限加日志实现动态代理定义一个接口和一个Invocation...
2020-03-27 09:54:56
124
转载 启动redis服务(window系统)
在windows环境下启动redis服务,前提是你安装好了,启动如下:一,进入redis的安装目录下,在地址栏输入“cmd”,回车二,然后会进入cmd界面,直接运行命令redis-server.exe redis.windows.conf。如果报错,依次执行第一条指令:redis-cli.exe,第二条指令:shutdown第三条指令:exit三,在命令行窗口输入redis-server...
2020-02-17 16:11:54
1072
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅