自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 收藏
  • 关注

原创 Java深拷贝与浅拷贝

Java深拷贝、浅拷贝浅谈

2022-10-11 10:01:45 145 1

原创 索引的设计原则

1、适合素引的列是出现在 where 子句中的列,或者连接子句中指定的列2、基数较小的表,索引放果较差,没有必要在此列建立索引3、使用短索引,如果对长字符串列进行索引,应该指定一个前缀长度,这样能够节省大量索引空间,如果搜索词超过索引前缀长度,则使用引排除不匹配的行,然后检查其余行是否可能匹配。4、不要过度索引。索引需要额外的磁盘空间,并降低写操作的性能。在修改表内容的时候,索引会进行更新甚至重构,素引列越多,这个时间就会越长。所以只保持需要的索引有利于查询即5、定义有外键的数据列一定要建立索引。

2022-03-27 16:23:14 1006

原创 mysql索引的数据结构以及各自优势

索引的数据结构和具体存储引擎的实现有关,在MySQL中较多的索引有Hash索引、B+树索引等。InnoDB存储引擎的默认索引实现为:B+树索引。对于哈希索引来说,底层的数据结构就是哈希表,因此在绝大多数需求为单条记录查询的时候,可以选择哈希索引,查询性能最快;其余大部分场景,建议使用BTree索引。B+树B+树是一个平衡树,从根节点到每个叶子节点的高度差不超过1,而且同层级的节点间有指针相互链接。在B+树上的常规检索,从根节点到叶子节点的搜索效率基本相当,不会出现大幅波动,而且基于索引的顺序扫描时,

2022-03-27 16:22:25 1293

原创 mysql聚簇和非聚簇索引

都是B+树的数据结构聚簇索引:将数据存储和索引放到一起,都是按照一定的顺序组织,找到索引也找到了数据,数据的物理存储和索引顺序是一致的,即:只要索引相连,那么对应的数据一定也是相邻存储在磁盘上的非聚簇索引:叶子节点不存储数据,存储的是数据行地址,也就是说根据索引查找到数据行的位置再去磁盘查找数据,这个有点类似一本书的目录。优势:1、根据聚簇索引可以直接获取数据,相比非聚簇索引需要第二次查询效率要高2、聚簇索引对于范围查询效率更高,因为其数据是按大小排列的3、聚簇索引适合用在排序的场合,非聚簇

2022-03-27 16:21:36 3200

原创 MVCC实现原理

PostgreSQL、Oracle/MySQL和SQL Server的MVCC实现原理方式关系数据库管理系统使用MVCC(Multiversion Concurrency Control多版本并发控制)来避免写操作堵塞读操作的并发问题,MVCC也就是通过使用数据的多个版本保证并发读写不冲突的一种机制,不同的数据库有不同的实现,这也是数据库系统让人头疼的地方,关系数据库表面看上去很简单方便,使用标准的SQL语句操作让人很放心,但是随着系统规模增加,并发用户增加,数据库会出现性能降低的现象,这时我们可能需要从

2022-03-27 16:20:47 308

原创 SQL存储引擎

InnoDB存储引擎InnoDB是事务型数据库的首选引擎,支持事务安全表(ACID),支持行锁定和外键,上图也看到了,InnoDB是默认的MySQL引擎。InnoDB主要特性为MySQL提供了具有提交、回滚和崩溃恢复能力的事物安全(ACID兼容)存储引擎。InnoDB锁定在行级并且也在SELECT语句中提供一个类似Oracle的非锁定读。这些功能增加了多用户部署和性能。在SQL查询中,可以自由地将InnoDB类型的表和其他MySQL的表类型混合起来,甚至在同一个查询中也可以混合InnoDB存储引擎

2022-03-27 16:19:18 653

原创 SQL事务隔离级别

第一级别:Read Uncommitted(读取未提交内容)(1)所有事务都可以看到其他未提交事务的执行结果(2)本隔离级别很少用于实际应用,因为它的性能也不比其他级别好很多(3)该级别引发的问题-脏读(读取了未提交的数据)第二级别:Read Committed(读取提交内容)(1)Oracle、SQL Server默认隔离级别(2)该隔离级别出现的问题-不可重复读(在同一个事务中执行完全相同的select语句时可能看到不一 样的结果)第三级别:Repeatable Read..

2022-03-27 16:18:24 705

原创 redis数据结构

字符串:简单的数据存储哈希表:存储key-value,更适合存储对象列表:命令的租户,栈、队列集合:和列表类似,但元素不能重复,无序有序集合:

2021-11-21 13:06:09 207

原创 redis分布式锁实现

setnx+setex:存在设置超时时间失败的情况,导致死锁set(key,value,nx,px):将setnx+setex变成原子操作问题:任务超时,锁自动释放,导致并发问题。使用redisson解决(看门狗监听,自动续期)加锁和释放锁不是同一个线程。在value中存入uuid(唯一标识),删除锁时判断该标识(使用lua脚本保证原子操作)不可重入,使用redisson解决(实现机制类似AQS,计数)异步复制可能造成锁丢失,使用redLock解决lua脚本的示例--[

2021-11-21 13:05:36 273

原创 缓存过期策略

定时过期惰性过期

2021-11-21 13:03:21 292

原创 缓存淘汰策略

先进先出FIFO(First In First Out)最近最少使用LRU(Least Recently Used)最不常使用LFU(Least Frequently Used)使用次数最少的被淘汰

2021-11-21 13:02:49 326

原创 redis单线程为什么这么快

redis是基于内存操作的,不会与磁盘进行IO的交互redis采用IO多路复用机制单线程避免了多线程的频繁上下文切换带来的性能问题

2021-11-21 13:02:16 438

原创 redis的持久化机制

RDB:Redis Database将某一时刻的内存快照,以二进制的方式写入磁盘手动触发1、save命令,使redis处于阻塞状态,直到RDB持久化完成2、bgsave命令,fork出一个子进程执行持久化自动触发1、save m n:在m秒,如果有n个键发生变化,则自动触发持久化,通过bgsave执行2、flushall:清空所有redis数据库,flushdb清空当期那所在库的数据3、主从同步:全量同步时会自动触发bgsave命令,生成rdb发送给从节点AOF:Append Only

2021-11-21 13:01:40 586

原创 redis限流方式

博文https://mp.weixin.qq.com/s/F6xW_RdrWmeJcLwD5wDWUw限流方式基于Redis的setnx的操作基于Redis的数据结构zset基于Redis的令牌桶算法

2021-11-21 13:01:09 309

原创 redis缓存雪崩、击穿、穿透

redis缓存雪崩、击穿、穿透1、缓存雪崩产生原因:缓存雪崩是指在我们设置缓存时采用了相同的过期时间,导致缓存在某一时刻同时失效,请求全部转发到DB,DB瞬时压力过重雪崩。解决方式:缓存失效时的雪崩效应对底层系统的冲击非常可怕。大多数系统设计者考虑用加锁或者队列的方式保证缓存的单线 程(进程)写,从而避免失效时大量的并发请求落到底层存储系统上。这里分享一个简单方案就时讲缓存失效时间分散开,比如我们可以在原有的失效时间基础上增加一个随机值,比如1-5分钟随机,这样每一个缓存的过期时间的重复率就会降低

2021-11-21 12:59:07 81

原创 软件设计7大原则

软件设计7大原则概括:设计原则一句话概括目的开闭原则对扩展开放,对修改关闭降低维护带来的新风险依赖倒置原则高层不应该依赖低层,要面向接口编程更利于代码结构的升级扩展单一职责原则一个类只干一件事,实现类要单一便于理解,提高代码的可读性接口隔离原则一个接口只干一件事,接口要精简单一功能解耦,高聚合、低耦合迪米特法则不该知道的不要知道,一个类应该保持对其它对象最少的了解,降低耦合度只和朋友交流,不和陌生人说话,减少代码臃肿里氏替换原则不要

2021-07-05 23:20:54 57

原创 Spring AOP 配置使用

一、基本原理1、什么是aop专业术语:在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方 式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个 热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑 的各个部分进行隔离,从而使得业务逻辑各部分之间的...

2020-04-06 21:52:29 256

转载 Linux中查看磁盘大小、文件大小、排序方法小结

转载:https://blog.csdn.net/lkforce/article/details/80917306

2020-04-06 21:50:56 112

原创 阿里巴巴Java面试题

1、主键索引与非主键索引有什么区别2、redis与memcached有什么区别,为什么选择Redis,而不是memcached3、JVM的内存模型可以说下吗?4、选择一个做过的比较熟悉的项目说一下5、生产环境排查过什么问题?是如何排查的?6、MySQL建立索引有什么规则7、为什么在技术选型时选择MySQL,而不是选择Oracle...

2020-04-06 21:50:41 101

原创 vivo Java后端面试题

1、redis主要用于什么业务场景2、zooker是基于什么原理做分布式锁的?3、关于数据库索引唯一索引、联合索引有什么区别?索引生效与失效的情况?如何查看索引的执行情况?4、Dubbo如何进行流量控制5、JDK中的bin目录下的工具使用过哪些?6、分析过应用宕机的内存堆文件吗?如何进行分析?7、ActiveMQ、rabbitmq和rockmq的特性?这些消息中间件的消息延...

2020-04-06 21:50:32 1403 1

原创 字节跳动Java后端笔试题

1、第一题. 字节跳动在北京有N个工区,形成一个环状,Bytebus是往返在各个工区的通勤车,按工区的顺序行驶,其中第 i 个工区有汽油 gas[i] 升。你有一辆油箱容量无限的的Bytebus,从第 i 个工区开往第 i+1 个工区需要消耗汽油 cost[i] 升。你从其中的一个工区出发,开始时油箱为空。如果你可以绕环路行驶一周,则返回出发时工区的编号,否则返回 -1。输入:ga...

2020-04-06 21:50:06 2075

原创 招银网络Java后端笔试题

1、MySQL的索引有什么数据结构?Hash与B+tree有什么区别2、Spring MVC的执行流程是怎样的,请详述一下3、怎样实现分布式锁?有哪些方式实现?4、实现线程有什么方式?线程有哪些状态?状态之间是怎样转换的?5、如何优化SQL、优化数据库6、redis的数据过期过期策略是怎样的7、nginx用来做什么?请大概说下8、MyBatis的#与$有什么区别,ret...

2020-04-06 21:49:27 8439

原创 免密登录远程机器

一、通过SSH隧道登录1、跳板机配置隧道 1.1登录跳板机 ssh user@xxx.xxx.xxx.xxx -p xxxxx 1.2修改 .ssh/config 配置(如果无此文件,需创建,设置权限 600 chmod 600 .ssh/config),我的配置:[user@xxx ~]$ cat .ssh/configHost xxx.xxx.xxx.xx...

2020-02-15 14:01:34 138

原创 postman的使用

一、postman的介绍用户在开发或者调试网络程序或者是网页B/S模式的程序的时候是需要一些方法来跟踪网页请求的,用户可以使用一些网络的监视工具比如著名的Firebug等网页调试工具。今天给大家介绍的这款网页调试工具不仅可以调试简单的css、html、脚本等简单的网页基本信息,它还可以发送几乎所有类型的HTTP请求!Postman在发送网络HTTP请求方面可以说是Chrome插件类产品中的代表...

2019-10-27 12:51:56 74

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除