- 博客(173)
- 收藏
- 关注
原创 【每日一题】前缀树
请实现一个数据结构,在给定若干个字符串时,可以计算以随机给定的字符结尾的字符串的个数有多少个,该数据结构要求有插入字符串和删除字符串的方法
2022-09-12 23:20:16
301
原创 【每日一题】加强堆
设计一个数据结构,1. 在插入数据时可以保证有序,2.在插入相同的数据时,更新该集合中的数据,并且依然保持有序 3. 需要提供删除集合中的指定数据
2022-08-21 23:21:14
191
原创 【每日一题】最大线段重合问题
给定很多线段,每个线段都有两个数[start, end],表示线段开始位置和结束位置,左右都是闭区间,规定:1. 线段开始和结束的位置一定都是整数值 2. 线段重合区域的长度必须>=1,返回线段最多重合区域中,包含了几条线段...
2022-08-14 23:48:05
332
原创 最详细的一篇关于Redis主从复制
Redis高可用的方案包括持久化、主从复制(及读写分离)、哨兵和集群。其中持久化侧重解决的是Redis数据的单机备份问题(从内存到硬盘的备份);而主从复制则侧重解决数据的多机热备。此外,主从复制还可以实现负载均衡和故障恢复。不过真正解决Redis的单点负载和内存问题,还是需要依赖集群模式Redis的主从复制功能有两种模式,Redis2.8版本之前的旧版复制功能和新版的复制功能,新版复制是为了解决旧版复制功能的低效和复制的冗余,下面就介绍两种复制功能的流程与复制的工作原理。Redis主从复制的流程.
2021-06-27 23:20:23
285
原创 Redis的持久化机制—RDB与AOF
Redis之所以那么快的一个重要原因就是Redis是一个高性能的key-value内存数据库,所有的数据都保存在内存中,为了保证在宕机或者重启之后内存数据不丢失,Redis提供了持久化机制,将内存中的数据库状态保存到磁盘,并且在启动的时候可以快速进行恢复。RDB持久化机制RDB是Redis提供的一个保存内存数据库状态快照的一个功能,防止内存中的数据丢失。RDB持久化功能生成的RDB文件是一个经过压缩的二进制文件,可以通过这个文件在Redis启动的时候恢复Redis的内存状态到保存RDB文件时。因为R
2021-06-20 23:44:02
189
2
原创 Mysql如何执行GroupBy与Union
Mysql在进行分组或者子查询的过程中一般会使用到内部临时表的机制来帮助完成数据的统计,而group by与union在这个过程中,也可能会使用到内部临时表来完成数据的统计Group By的执行流程分组字段无索引执行语句select id%10 as m, count(*) as c from t1 group by m;这个简单的分组语句是将id%10分组进 行统计,并统计每个计算之后的数据的数量,并且会按照m的结果排序后输出。通过explain可以看到:using temporar
2021-06-15 23:47:57
1454
2
原创 你真的了解Redis的数据结构吗
Redis作为高并发程序的必备神器,基本是必不可少的一款中间件,在日常使用中,对Redis的增删改查的过程中,你有没有想过每条命令在Redis中是如何执行的,不同的数据类型是通过什么样的数据结构保存在Redis的内存中呢?什么!不知道? 没关系,看完这篇文章你就知道了~Redis在日常开发中常用的五种数据结构,分别为String、List、Hash、Set、Zset,不同的应用场景不同的数据结构来支持,下面就一起看看到底是什么样的数据结构让Redis这么快,开干!对象Redis数据库中,我们常用.
2021-06-07 00:04:32
180
原创 @ConditionalOnProperty注解使用
在日常的开发中,经常遇到当某些条件不满足是不加载bean或者在某一段时间不加载某些配置,或者在不同的机房中使用不同的配置,那么就需要控制这个bean在不同的条件下是否需要加载,那么这个时候就需要根据配置或者某些条件来控制配置是否启用。那么如何控制spring的bean,@ConditionalOnProperty注解会告诉你@ConditionalOnProperty注解作用在Spring Boot的自动配置中经常看到@ConditionalOnProperty注解的使用,这个注解就是控制在指定的
2021-05-30 23:16:09
838
3
原创 Redis的过期键机制
Redis最大的特点是不仅可以保存key/value数据对象,还可以对这个键设置过期时间,有没有想过在设置过期时间时,Redis是如何维护这些key,和普通的没有设置过期时间的key有什么区别吗?当Key的过期时间到大之后,Redis是通过什么方式来删除这些Key的呢?带着这些问题我们一起看看吧~Redis的数据库在了解键的过期机制之前,我们先了解一下Redis中的数据库,当使用Redis可视化工具时,连接到Redis时,可以看到很多个数据库,在执行select命令时就会切换数据库。可以看到有16个
2021-05-23 23:20:12
741
原创 Mysql如何Join一条语句
为什么在执行Join语句时,常说需要小表驱动大表去查询,小表驱动大表就可以查询的更快呢?在了解这个机制之前,先了解一下Mysql是如何执行一条Join语句,那么自然也就知道了为什么Mysql建议小表驱动大表的方式去进行查询,可以有效的提升查询效率Simple Nested-Loop Join简单join查询,Mysql并没用使用这种查询方式,因为这种查询方式会产生笛卡尔积,导致在表关联的查询过程中,扫描大量的行数,导致查询效率非常慢。SLJ的执行过程select * from t1 str.
2021-05-23 00:20:26
775
1
原创 手写一个简易版Sentinel
SpringCloud Alibaba Sentinel是当前最为流行一种熔断降级框架,简单易用的方式可以快速帮助我们实现服务的限流和降级,保证服务的稳定性。Sentinel 是什么?随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。不可否认的是,Sentinel功能丰富,并且在提供好用的dashboard提供配置,但是Sentinel在集成到项目中时需要引入多个依赖,并且需要阅读相关文档,以及d
2021-05-17 00:44:36
207
原创 ElasticSearch集成SpringBoot
上一篇介绍了JavaAPI来操作ES,虽然易用,但是如果操作大量的数据并且程序相对复杂,那么会有大量冗余的代码和API操作,SpringBoot作为轻量级易用框架自然也帮我们封装好了各种API操作,只需要操作数据库一样操作ES即可,一起看看吧代码已上传Github: https://github.com/chenliang15405/common-study/tree/main/es-springMaven依赖pom.xml中增加依赖<!-- elasticsearch 依赖 .
2021-05-09 22:48:53
549
原创 ElasticSearch的JavaAPI简单使用
ES是一个**开源的高扩展的分布式全文搜索引擎,**是整个Elastic Stack技术栈的核心。它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。Elasticsearch软件是由Java语言开发的,所以也可以通过Java API的方式对Elasticsearch服务进行访问,并且操作的方式基本和Http操作一致本文已经收录到我的Github: https://github.com/chenliang15405/common-study/tree/main/e
2021-05-05 23:21:18
1504
3
原创 简单的几点Sql优化
对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。应尽量避免在 where 子句中对字段进行 null 值判断is not null,否则将导致引擎放弃使用索引而进行全表扫描,如:解决方案: 可以在改字段上设置默认值,确保表中没有null值,否则会全表扫描。应尽量避免在 where 子句中使用!=或<>操作符,否则引擎将放弃使用索引而进行全表扫描。应尽量避免在 where 子句中使用or 来连接条件,否则将导致引擎放弃..
2021-04-24 23:29:27
104
原创 什么是消息中间件
什么是消息中间件MQ全称为Message Queue,消息队列是应用程序和应用程序之间的通信方法。为什么使用MQ在项目中,可将一些无需即时返回且耗时的操作提取出来,进行异步处理,而这种异步处理的方式大大的节省了服务器的请求响应时间,从而提高了系统的吞吐量。开发中消息队列通常有如下应用场景:1、任务异步处理将不需要同步处理的并且耗时长的操作由消息队列通知消息接收方进行异步处理。提高了应用程序的响应时间。2、应用程序解耦合MQ相当于一个中介,生产方通过MQ与消费方交互,它将应用程序进行解
2021-04-18 22:49:17
144
原创 最详细的一篇关于Oauth2.0认证模式
OAuth(开放授权)是一个开放标准,允许用户授权第三方应用访问他们存储在另外的服务提供者上的信息,而不 需要将用户名和密码提供给第三方应用或分享他们数据的所有内容。OAuth2.0是OAuth协议的延续版本,但不向 后兼容OAuth 1.0即完全废止了OAuth1.0。很多大公司如Google,Yahoo,Microsoft等都提供了OAUTH认证服 务,这些都足以说明OAUTH标准逐渐成为开放资源授权的标准Oauth协议目前发展到2.0版本,1.0版本过于复杂,2.0版本已得到广泛应用。参考:h.
2021-04-11 23:55:34
3206
原创 【一起学习JVM】Java中的语法糖是什么味道
Java提供了多种 不同口味的语法糖,每种口味的糖都有不同的食用方法和魔力,你知道哪几种口味的糖呢? 让我们一起来尝一尝吧泛型和类型擦除Java中的泛型只存在于编译阶段,因为只有在编译的时候会对泛型的类型进行校验,在运行期,其实是没有泛型的概念,在经过javac编译之后,就已经将泛型擦除了。示例1——判断字节码对象public class Test { // public static void main(String[] args) { Array.
2021-04-10 23:29:22
116
原创 【一起学习JVM】锁优化与锁升级
在JDK1.5之后,JVM开发团队对Synchronized关键进行了优化,并且实现了各种锁优化技术,并且各种测试表明Synchronized并不比ReentrantLock慢,下面就一起看看Synchronized的锁升级以及有哪些锁优化吧~自旋锁和自适应自旋锁自旋锁什么是自旋锁是指当一个线程在获取锁的时候,如果锁已经被其它线程获取,那么该线程将循环等待,然后不断的判断锁是否能够被成功获取,直到获取到锁才会退出循环。自旋锁的默认自选次数是10次,可以通过JVM参数-XX:PreBloc.
2021-03-28 23:16:05
356
原创 Mysql数据库创建用户、数据备份操作
记录Mysql创建用户、赋权、修改密码、数据备份、恢复等操作语句创建账户&赋权use mysq;grant 权限列表 on 数据库 to '用户名'@'访问主机' identified by '密码';Example:(1) grant select,insert on jd.* to 'guest'@'localhost' identified by '123456'如果访问的主机是任意,则使用’%’, 或者可以指定为固定的ip(2) 如果需要授权所有grant a.
2021-03-28 23:14:11
469
原创 org.hibernate.PropertyAccessException 实体类属性转换异常
org.hibernate.PropertyAccessException: Null value was assigned to a property of primitive type setter of com.agenda.api.entity.M2FEntrance.inputtype这个异常,从异常信息的提示和查询的解决方案来看:数据库的数据的类型和当前实体类中映射的类型不一致。但是经过查看,数据库中的数据类型和实体类中定义的数据类型一致,Oracle数据库中为number类型,在实体类中
2021-03-21 22:52:24
516
原创 【一起学习JVM】Java中的线程安全
Java中在多线程的环境下,多线程并发的操作可能会导致某些变量发生数据不一致的情况,那么如何去保证线程安全,更好的使用多线程呢?可以使用同步锁,但是同步锁在保证线程安全的同时,也会导致程序的并发性降低,操作比较重量级,JVM是如何对锁进行优化,来保证锁的效率和功能呢?一起来学习JVM关于线程安全与锁优化的相关知识吧~线程安全线程安全的实现方法互斥同步含义:互斥同步又叫阻塞同步,简单来讲就是让本来是多线程执行的操作变为单线程,即保证共享数据在同一时刻制备一个线程使用。实现方式:sync.
2021-03-21 22:48:56
130
原创 Springboot服务Docker化自动部署?你值得拥有
还在手动将springboot项目打包,然后上传服务器,手动执行启动命令将项目启动吗?你out了!通过Docker配置DockerMaven插件,快速部署,一键将springboot服务器部署到服务器,一键启动,告别传统部署方式,实现自动化运维的第一步,心动吗?快来一起看看~微服务部署方式(1)手动部署:首先基于源码打包生成jar包(或war包),将jar包(或war包)上传至虚拟机并拷贝至JDK容器。(2)通过Maven插件自动部署。对于数量众多的微服务,手动部署无疑是非常麻烦的做法,并且容易.
2021-03-14 22:20:19
772
1
原创 Docker的迁移与备份
docker容器在启动之后,如果需要迁移到其他的机器节点或者部署到其他的服务器中,如何直接部署为一样的容器呢?将自定义的容器保存下来如何做呢 下面的方式可以帮助到你镜像备份将docker镜像通过保存为文件,可以导出为文件,可以在其他的机器节点创建相同的镜像将容器保存为镜像docker commit [container_name] [image_name]构建自定义镜像,后续可以保存为镜像文件,或者可以再次基于该自定义镜像创建新的容器镜像备份docker save -o [fi.
2021-03-13 23:22:21
267
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人