自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 深度优先遍历和广度优先遍历

一个简单的树结构图:深度优先遍历深度优先遍历指的是,从树的根节点开始,先遍历左子树,然后遍历右子树。我们借助栈结构来实现深度优先遍历。上图的深度优先遍历结果为:ABDECFG应用场景: 前序遍历、中序遍历、后序遍历例如《二叉树(#144 前序遍历、#94中序遍历、#145后序遍历)&深度优先遍历》广度优先遍历从根节点开始,沿着树的宽度依次遍历树的每个节点。我们借助队列结构来实现树的广度优先遍历。上图的遍历结果为:ABCDEFG应用场景: 层序遍历例如《#102 二叉树的层序遍

2021-04-30 19:21:50 13122 1

原创 【leetcode】#101 对称二叉树

难度:简单思路:对称二叉树,即左节点和右节点对称,那么某层的节点,我们以第三层为例,存在左节点L、右侧节点R,L的子节点为L1和L2,R的子节点为R1和R2,只要L1和R2一致,L2和R1一致即可。class Solution { public boolean isSymmetric(TreeNode root) { if(root==null){ return true; } return isSymmetric(root.left,r

2021-04-30 15:06:54 84 1

原创 【leetcode】剑指 Offer 55 - I. 二叉树的深度

比较简单,主要是2种思路前序中序后序遍历时,记录当前节点的深度,并传入子节点,当叶子节点时,进行比较《二叉树(#144 前序遍历、#94中序遍历、#145后序遍历)》利用层序遍历,那么层的数值就是树深度我们这里才用第一种,前序遍历:class Solution { int maxDep = 0; public int maxDepth(TreeNode root) { if(root==null){ return 0; }

2021-04-30 10:23:20 73

原创 【leetcode】#102 二叉树的层序遍历

class Solution { public List<List<Integer>> levelOrder(TreeNode root) { List<List<Integer>> result = new ArrayList<List<Integer>>(); if(root==null){ return result; } Queue<Tr

2021-04-29 19:42:11 166

原创 【redis】idea报jedisConnectionFactory找不到

首先确认引入了spring-data-redis,但是idea识别不了。spring-data-redis 与 jedis 版本匹配问题 spring-data-redis2.1.9搭配jedis 3.0.1会报错,替换一个较低版本的jedis:这两个版本的匹配可以 <dependency> <groupId>redis.clients</groupId> <artifactId>

2021-04-28 13:50:19 2602

原创 【spring】基于注解的spring mvc入门例子

文章目录1. 前言2. 配置2.1 配置maven2.2 web.xml2.3 springmvc.xml2.4 HelloController2.5 index.jsp2.6 success.jsp3. 运行4. 引入ContextLoaderListener4.1 新增HelloService.java和applicationContext.xml4.2 修改HelloController,注入HelloService4.3 修改web.xml4.4 执行1. 前言基于xml的配置,请参见《11.S

2021-04-27 21:38:13 141

原创 【springmvc】<mvc:default-servlet-handler/>、<mvc:resources />的作用

文章目录1. 概述方法1.采用方法2.采用1. 概述优雅REST风格的资源URL不希望带 .html 或 .do 等后缀,由于早期的Spring MVC不能很好地处理静态资源,所以在web.xml中配置DispatcherServlet的请求映射,往往使用 *.do 、 *.xhtml等方式。这就决定了请求URL必须是一个带后缀的URL,而无法采用真正的REST风格的URL。如果将DispatcherServlet请求映射配置为"/",则Spring MVC将捕获Web容器所有的请求,包括静态资源的请

2021-04-27 14:12:40 324

原创 【Redis】JedisCluster与ShardedJedisPool的区别

JedisCluster与ShardedJedisPool的区别jedis客户端操作redis主要三种模式:单台模式、分片模式(ShardedJedis)、集群模式(BinaryJedisCluster),分片模式是一种轻量级集群。ShardedJedisPool是redis没有集群功能之前客户端实现的一个数据分布式方案,redis3.0提供集群之后,客户端则采用JedisCluster实现连接redis集群环境。ShardedJedisPool使用的是JedisShardInfo的insta

2021-04-27 00:13:26 705

原创 【Redis】主从、哨兵、集群各自架构的优点和缺点对比

文章目录1. 单机模式2. 主从架构3. 哨兵4. 集群模式1. 单机模式Redis 单副本,采用单个 Redis 节点部署架构,没有备用节点实时同步数据,不提供数据持久化和备份策略,适用于数据可靠性要求不高的纯缓存业务场景。优点:架构简单,部署方便。高性价比:缓存使用时无需备用节点(单实例可用性可以用 supervisor 或 crontab 保证),当然为了满足业务的高可用性,也可以牺牲一个备用节点,但同时刻只有一个实例对外提供服务。高性能。缺点:不保证数据的可靠性。在缓存使用,

2021-04-26 21:10:39 15399 2

原创 【k8s】pod内容器被重新拉起后,pod state与laststate描述、Restart Count

可以通过describe查看pod的运行状态:kubectl describe xxxPodId如果容器没有异常重启过,看到的内容如下:Containers: em-tm-analysis: Container ID: docker://f4a1b0f40eee1b2bbaa1e1ffb7c46c17f728d03620518044166065f7815a027e Image: swr:6666/zenap/em-tm-analysis:16.21.10.

2021-04-26 11:27:43 2580 1

原创 【Redis】Spring Boot整合Redis集群cluster

文章目录1、引入相关依赖:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId></dependency><dependency> <groupId>org.apache.commons</groupId>

2021-04-25 23:32:40 434

原创 【Redis】Java操作redis集群cluster

文章目录借助redis的java客户端jedis可以操作以上集群,引用jedis版本的maven坐标如下:<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version></dependency>Java编写访问redis集群的代码非常简单,如

2021-04-25 23:26:42 1756

原创 【Redis】访问保护属性/参数protected-mode

redis3.2版本后新增protected-mode配置,默认是yes,即开启。设置外部网络连接redis服务,设置方式如下:1、关闭protected-mode模式,此时外部网络可以直接访问2、开启protected-mode保护模式,需配置bind ip或者设置访问密码...

2021-04-24 13:57:33 5666 2

原创 【Redis】Info 命令

文章目录Redis Info 命令以一种易于理解和阅读的格式,返回关于 Redis 服务器的各种信息和统计数值。通过给定可选的参数 section ,可以让命令只返回某一部分的信息:redis 127.0.0.1:6379> INFO [section] section可选项:Server 服务器运行的环境参数Clients 客户端相关信息Memory 服务器运行内存统计数据Persistence 持久化信息Stats 通用统计数据Replication 主从复制相关信息CPU

2021-04-24 00:12:30 537

原创 【Redis】client客户端 工具 redis-cli

语法:redis-cli -h 192.168.20.33 -p 6379如果是连接本机,并且采用默认的端口,可以直接用redis-cli详细解释:用法:redis-cli [OPTIONS] [cmd [arg [arg ...]]]-h <主机ip>,默认是127.0.0.1-p <端口>,默认是6379-a <密码>,如果redis加锁,需要传递密码--help,显示帮助信息参考:《redis-cli,Redis命令行工具》...

2021-04-24 00:04:12 2159

原创 【java】comparator接口与Comparable接口的区别

文章目录1. 概述2. Comparable3. Comparator4. 总结1. 概述Comparator 和 Comparable都是java的一个接口, 并且是用来对自定义的class比较大小的。2. ComparableComparable 定义在 Person类的内部,子类需要实现compareTo()方法:public class Person implements Comparable { String name; int age public int

2021-04-23 19:16:12 1040

原创 【idea】自动补全/提示/完成

文章目录1. 设置快捷键2. 自动补全失效1. 设置快捷键Idea的默认快捷键是 Ctrl + 空格。 对于安装中文输入法的用户来说,容易产生冲突,比如搜狗输入法。修改方法如下2步:移除原来的Cycle Expand Word 的 Alt+斜杠 快捷键绑定。在 Basic 上点击右键,去除原来的 Ctrl+空格 绑定,然后添加 Alt + 斜杠 快捷键。2. 自动补全失效默认在自动补全时,会区分大小写,因此我们要改为不分区大小写。打开设置页面,然后依次点击-> Edito

2021-04-23 18:52:56 4656

原创 【Redis】Lua脚本(Eval 命令)

文章目录语法Redis Eval 命令使用 Lua 解释器执行脚本。语法redis Eval 命令基本语法如下:EVAL script numkeys key [key ...] arg [arg ...] 参数说明:script: 参数是一段 Lua 5.1 脚本程序。脚本不必(也不应该)定义为一个 Lua 函数。numkeys: 用于指定键名参数的个数。作用是区分key 数组和arg数组,例如2 a b c ,假设numkeys是2,说明前2个参数 a 和b是key,第三个参数c

2021-04-22 23:13:39 3778

原创 【Redis】GETBIT和SETBIT

《Redis中的GETBIT和SETBIT(转载)》《redis 用setbit(bitmap)统计活跃用户》

2021-04-22 19:49:31 199

原创 【Redis】Java Redis Pipeline(管道) 使用示例

文章目录概述概述一般情况下,大家使用redis去put/get都是先拿到一个jedis实例,然后操作,然后释放连接,这种模式是 请求-响应,请求-响应这种模式,下一次请求必须得等第一次请求响应回来之后才可以,因为redis是单线程的,按部就班,一步一步来。而pipeline管道改变了这种请求模式,客户端可以一次发送多个命令,无须等待服务器的返回,请求,请求,请求,响应,响应,响应这种模式大大减少了影响性能的关键因素-网络往返时间。package com.test.jedis;import

2021-04-22 19:29:52 2699

原创 【Redis】复制风暴

文章目录1. 复制风暴1.1 单节点复制风暴1.2 单机器复制风暴1.3 总结1. 复制风暴复制风暴是指大量从节点对同一主节点或者对同一台机器的多个主节点短时间内发起全量复制的过程。复制风暴对发起复制的主节点或者机器造成大量开销,导致 CPU、内存、带宽消耗。因此我们应该分析出复制风暴发生的场景,提前采用合理的方式规避。规避方式有如下几个。1.1 单节点复制风暴当一个主机下面挂了很多个 slave从机的时候,主机 master 挂了,这时 master 主机重启后,因为 runid 发生了变化,所有

2021-04-22 14:43:13 932 1

转载 【Redis】Redis的版本演进核心的变化

参见《Redis的版本演进核心的变化》

2021-04-22 11:10:30 288

原创 【Redis】主从复制之repl_backlog(部分复制、断点续传)

文章目录1. 前言2. 配置项1. 前言注意,repl_backlog只针对部分复制(Partial Replication),而非全量复制。本文内容基于redis-5.0.5(截至2019/6/6的最新版本),本文深入介绍REdis主从复制的部分复制核心要素repl_backlog,与其相关的配置直接影响主从间的稳定性,对提升集群的稳定性十分重要。注意REdis的主节点把所有从节点也当作一个Client看待,正常的数据同步并不涉及repl_backlog。当从节点断开重连,这个时候repl_bac

2021-04-22 10:58:45 1697

转载 【linux】pid file解读

文章目录pid file 是什么?pid file 的作用?如何实现pid file的功能?pid file的使用pid file 是什么?pid file是一个文件,里面保存了后台程序的pid。pid file 的作用?其他程序可以通过这个pid文件,获取这个后台程序的pid,然后执行一些任务。当别的用户启动这个后台程序的时候,可以检查这个文件,防止出现多个相同后台程序。如何实现pid file的功能?使用pid file,需要几个步骤:找个目录创建这个pid文件,在linux系统中

2021-04-21 23:29:27 5292

原创 【Redis】keys命令和SCAN命令

文章目录1 keys2 SCAN1 keyskeys:全量遍历键,用来列出所有满足特定正则字符串规则的key,假设redis此时正在生产环境下,使用该命令就会造成隐患,当redis数据量比较大时:keys会一次性返回所有符合条件的key,所以会造成redis的卡顿另外如果一次性返回所有key,对内存的消耗在某些条件下也是巨大的。keys性能比较差,要避免使用:2 SCANSCAN是一个基于游标的迭代器,需要基于上一次的游标延续之前的迭代过程。SCAN以0作为游标,开始一次新的迭代,直到命

2021-04-21 16:43:15 4106

原创 【Redis】 Zunionstore 命令

文章目录1. 概述2. 语法3. 实例1. 概述Redis Zunionstore 命令计算给定的一个或多个有序集的并集,其中给定 key 的数量必须以 numkeys 参数指定,并将该并集(结果集)储存到 destination 。默认情况下,结果集中某个成员的分数值是所有给定集下该成员分数值之和 。2. 语法redis Zunionstore 命令基本语法如下:redis > ZUNIONSTORE destination numkeys key [key ...] [WEIGHTS

2021-04-21 14:47:38 1373

原创 【Redis】解决分布式锁——死锁问题(SETNX 、EXPIRE 、EX、NX、PX )

文章目录1. Redis分布式锁实现原理2. 针对该问题,redis 在2.6.12版本过后增加新的解决方案1. Redis分布式锁实现原理SETNX key value //如果key不存在,则创建并赋值,成功加入缓存并且返回1;如果已存在,则返回0。EXPIRE key seconds //设置key的生存时间,当key过期(生存时间为0),会自动删除存在风险:SETNX和EXPIRE 为两个指令,如果设置了SETNX后程序崩溃,EXPIRE未成功执行则会出现资源锁死的情况。2. 针对该问题

2021-04-20 20:01:24 8602

转载 详述 IaaS、PaaS 和 SaaS 的含义及区别

文章目录概述SaaSPaaSIaaS概述越来越多的软件,开始采用云服务。云服务只是一个统称,可以分成三大类:IaaS:基础设施服务,Infrastructure-as-a-servicePaaS:平台服务,Platform-as-a-serviceSaaS:软件服务,Software-as-a-service它们有什么区别呢?IBM 的软件架构师 Albert Barron 曾经使用披萨作为比喻,解释这个问题。David Ng 进一步引申,让它变得更准确易懂。请设想你是一个餐饮业者,

2021-04-20 11:45:55 871

转载 【SpringBoot】扩展机制之Spring Factories(例如EnableAutoConfiguration接口、spring.factories文件)

https://blog.csdn.net/lvoyee/article/details/82017057

2021-04-19 19:19:46 1108

原创 【SpringBoot】启动原理源码剖析(含加载spring.factories扩展点)

文章目录1. 概念&原理2 源码2.1 SpringBoot 事件监听器发布顺序2.2 详细步骤2.2.1 调用SpringApplication.run启动springboot应用2.2.2 使用自定义SpringApplication进行启动2.2.2.1 创建SpringApplication2.2.2.1 启动2.2.2.1.1 [3]去spring.factroies中读取了SpringApplicationRunListener 的组件2.2.2.1.2 [4] 预初始化环境2.2.2

2021-04-19 16:28:39 721

原创 【SpringBoot、maven】 创建一个springboot工程入门例子 helloworld(以springmvc为例,从官网创建工程)

《官方入口》

2021-04-19 10:12:07 177

原创 【微服务专题】01-Spring Boot自动装配核心源码剖析 2 自动配置原理 2 HttpEncodingAutoConfiguration详解

文章目录1. HttpEncodingAutoConfiguration源码1.1 @Conditional派生注解1. HttpEncodingAutoConfiguration源码@Configuration(proxyBeanMethods = false)@EnableConfigurationProperties(ServerProperties.class)@ConditionalOnWebApplication(type = ConditionalOnWebApplication.Ty

2021-04-17 17:15:33 227

原创 【web】spring、servlet 、web.xml 解决中文乱码

文章目录1. spring处理中文2. Servlet处理中文1. spring处理中文为了防止前端传入的中文数据出现乱码问题,使用Spring提供的编码过滤器来统一编码。要使用编码过滤器,只需要在web.xml中添加如下代码:<!-- 配置utf-8编码过滤器 --> <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.spr

2021-04-17 17:11:25 479

原创 【OpenStack 】OpenStack Cinder之过滤器affinity/anti-affinity(亲和性、反亲和性)介绍

文章目录1. 简介Openstack Cinder的调度服务用于选择一个合适的cinder-volume节点来处理用户有关云盘生命周期的请求。本文介绍调度器affinity/anti-affinity的原理和使用方法。1. 简介过滤器affinity/anti-affinity描述了云盘之间的关系:affinity表示新创建的云盘跟指定的云盘在同一个后端(back-end/pool)anti-affinity表示新创建的云盘跟指定的云盘在不同一个后端(back-ends/pools).为

2021-04-16 14:41:16 1343

原创 【Spring】注解(RetentionPolicy.RUNTIME)

文章目录注解按生命周期来划分可分为3类:1、RetentionPolicy.SOURCE:注解只保留在源文件,当Java文件编译成class文件的时候,注解被遗弃;2、RetentionPolicy.CLASS:注解被保留到class文件,但jvm加载class文件时候被遗弃,这是默认的生命周期;3、RetentionPolicy.RUNTIME:注解不仅被保存到class文件中,jvm加载class文件之后,仍然存在;这3个生命周期分别对应于:Java源文件(.java文件) —> .cl

2021-04-15 22:05:43 625

转载 【线程池】如何正确设置线程池的线程数,提高性能

文章目录概述如何设置线程池的线程数3. 总结3.1 怎么计算IO与cpu时间占比呢?概述往往在生产环境中,工作线程数,设置小了,无法充分利用CPU资源,性能会下降。设置大,线程上下文切换过于频繁,反而会使性能降低。可以关注一下协程,如java库提供的Quasar fiber轻量级线程、kilim以及kotlin语言支持的协程。java线程是用户线程与内核线程之间映射的,1:1模式,是通过内核完成调度的。而协程是N个内核线程多路复用M个协程的,N:M的模式,也就是在用户态的协程调度器完成的,减少了与内

2021-04-15 15:08:35 1712

转载 【spring】@AliasFor 使用规则

文章目录1. @AliasFor2. 作用2.1 AliasFor可以定义一个注解中的两个属性互为别名2.2 跨注解的属性别名3. @SpringBootApplication1. @AliasFor@AliasFor是一个注解,用于为注解属性声明别名。代码如下:它有两个属性value和attribute @AliasFor注解注释了自身,并且value和attribute互为别名:@Retention(RetentionPolicy.RUNTIME)@Target({ElementType.ME

2021-04-14 19:39:45 810

原创 【spring】@ComponentScan详解&@SpringBootApplication的scanBasePackages属性

文章目录https://www.jianshu.com/p/64aac6461d5bhttps://blog.csdn.net/neulily2005/article/details/83750027

2021-04-14 17:21:17 37694

原创 【mybatis3】分页和插件

文章目录1、插件1.1 Mybatis插件典型适用场景1.1.1 分页功能1.1.2 公共字段统一赋值1.1.3 性能监控1.1.4 其它2 分页插件2.1 自带的分页RowBounds2.2 pagehelper分页插件的使用3 分页插件原理3.1 代理和拦截是怎么实现的?3.2 PageHelper 原理3.2.1 使用ThreadLocal存储分页参数3.2.2 实现拦截器1、插件MyBatis 通过提供插件机制,让我们可以根据自己的需要去增强MyBatis 的功能。需要注意的是,如果没有完全理

2021-04-13 21:36:10 404

原创 【mybatis】必须为元素类型 “mapper“ 声明属性 “namespace“解决

在使用mybatis进行mapper.xml测试的时候发生"必须为元素类型 “mapper” 声明属性 “namespace” "的错误:网上找了一下发现我的UserMapper.xml下应该引错了:应该将Config改成Mapper

2021-04-13 20:14:44 907

空空如也

空空如也

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

TA关注的人

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