自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

一颗小陨石的博客

https://gitee.com/xiaoyunshi

  • 博客(118)
  • 资源 (4)
  • 论坛 (2)
  • 问答 (4)
  • 收藏
  • 关注

原创 JVM笔记《四》七个常见的垃圾收集器

目录垃圾收集器一、 Serial (新生代)二、 ParNew(新生代)三、 Parallel Scavenge(新生代)相关参数四、 Parallel Old(老年代)五、 Serial Old(老年代)六、 CMS(老年代)运作过程缺点总结七、 Garbage First(G1)几个问题运行过程特色和优点:缺点(与CMS比)垃圾收集器一、 Serial (新生代)1.单线程(收集期间需要...

2020-03-15 20:05:23 300

原创 JVM笔记(三)垃圾收集算法以及HotSpot的算法实现(安全点、记忆集与卡表、写屏障、三色标记等)

目录一、垃圾收集算法1.1 堆的布局1.2 GC类型1.2.1 Minor GC流程1.2.2 分配担保1.3 内存分配策略二、垃圾收集算法2.1 标记-清除算法2.2 标记-复制算法2.3 标记-整理算法三、HotSpot的算法细节实现3.1 根节点枚举3.2 安全点如何在垃圾收集时让所有线程跑到最近的安全点停顿下来3.3 安全区域原理3.4 记忆集与卡表3.4.1 记忆集的实现卡表3.5 写屏...

2020-03-15 19:56:10 1748

原创 RocketMQ 源码分析—Broker启动流程与注册原理

文章较长,建议先收藏再看上一篇文章中介绍了 NameServer 的启动流程,并介绍了 NameServer 启动涉及到的几个核心点:加载NameServer 配置类和 NettyServer配置类,创建核心组件 NamesrcControllerController 内初始化各个数据,包括 Netty 网络处理类、工作线程池、路由管理器、两个定时任务,一个用于每10s扫描不活跃的 Broker 从 NameServer 端移除,一个每10min 打印一次 KV 配置路由管理器中维护了 Broke

2021-11-21 11:35:19 1579

原创 RocketMQ源码分析——NameServer启动流程与路由管理器

一、NameServer作用NameServer作为 RocketMQ 的服务路由中心,其主要起到了如下的作用:服务注册Broker 在启动的时候会向 NameServer 注册自己的信息,Broker 宕机时 NameServer 也会剔除该 Broker 信息路由发现Produer 发送消息或 Consumer 拉取消息,都需要从 NameServer 获取路由信息通信、维持心跳Producer、Consumer和 Broker 都会与 NameServer 进行通信或定时发送

2021-11-21 11:31:22 1595

原创 Linux 下的一次性任务 at、batch 和定时任务 cron、anacron

文章目录一、 任务分类二、at 一次性任务2.1 运行方式2.2 at 的使用权限2.3 at语法2.4 例子2.4.1 -m2.5 batch:空闲时运行 atCPU 负载查询 uptime三、循环任务 crontab3.1 用户级创建和权限设置3.2 语法编辑一个任务查看任务删除任务3.3 系统级cron 任务/etc/crontab3.4 其他cron 配置/etc/cron.d四、anacronanacron 执行流程五、总结atcron一、 任务分类Linux 中的定时任务可以分为 at 和

2021-09-11 16:54:20 331

原创 Linux——四、Shell脚本

文章目录一、编写与执行执行方式二、运算符、判断以及流程控制基本运算符2.1 test2.1.1 文件名【文件类型】测试2.1.2 文件权限测试2.1.3 文件比较2.1.4 关系运算符2.1.5 字符串运算符2.1.6 逻辑【布尔】运算test脚本例子2.2 [] 判断2.3、默认变量shift2.4 if2.5 case...esac三、 函数四、循环4.1 while4.2 forletshell变量相关知识可以先看https://blog.csdn.net/weixin_43696529/artic

2021-08-28 23:23:39 43

原创 Linux——三、数据处理(正则、sed、awk)

一、正则使用正则字符作用^str查找在行首的字符串strstr$查找在行尾的字符串str.除换行符\n外的任何单个字符\转义符*匹配前面的字符或子表达式 0-N次+重复前面的字符或子表达式 1-N次?重复前面的字符或子表达式 0-1次[list]匹配中括号里的字符【注:q[wert] 表示的字符可以是qw、qe、qr、qt,即只要包含括号里的单个字符都匹配】[^list]与[list]相反,表示不包含括号里的字符s

2021-08-28 22:56:13 33

原创 《Linux私房菜》——二、BASH以及相关命令(变量、配置文件、数据流定向、pipe、sort、选取命令等)

本文来自《鸟哥的Linux私房菜》学习以及知识点整理,仅供学习使用文章目录一、查看系统合法的shell二、bash的优点历史命令文件补全别名三、查看命令类型type四、命令执行、删除快捷键五、变量5.1变量规则5.2 环境变量功能envset5.3 ==read、array、declare====5.4 ulimit==5.5 变量的删除与替换5.5.1 变量的删除5.5.2 替换5.5.3 替换时添加测试六、Base shell的操作环境6.1 路径与命令查找顺序6.2 bash的环境配置文件6.2.1

2021-08-22 10:23:31 47

原创 《Linux私房菜》——一、linux基础整理

本文均来自《鸟哥的Linux私房菜》的学习整理,仅供学习使用文章目录·一、基础命令1.1 date日期1.2 man1.3 info page1.4 关机相关1.4.1 sync1.4.2 shutdown1.4.3 重启二、文件权限相关2.1 权限基础2.2 修改文件属性和权限2.2.1 修改用户组chgrp2.2.2 修改文件拥有者chown2.2.3 修改文件权限chmod2.3 权限的作用2.3.1权限对于文件的作用2.3.2 权限对于目录的作用三、目录与路径3.1 目录操作3.1.1 pwd3.

2021-08-22 10:20:38 27

原创 vue 踩坑记录 cannot read property xxx of undefined

项目使用了swiper轮播图,本来好好的,但是渲染完数据后 refs.swiperName.refs.swiperName.refs.swiperName.swiper 跟着失效了,渲染的数据地方也报 undefined ,虽然数据可以渲染出来。原因:复杂数据接收时需要指定内部结构,因为Vue只能读取其原始的数据结构,后面再加进去的会出问题。如: goods:[] //要指定内部结构: goods:[ detail:{}, shopList:[]]swiper没啥事 是因为这个问题间.

2021-01-01 01:21:09 26240

原创 Oauth2配置permitAll()无效 小坑

@Override public void configure(HttpSecurity http) throws Exception { //所有请求必须认证通过 http.authorizeRequests() //下边的路径放行 .antMatchers(..... "/web/member/member-register" .

2020-12-24 21:21:29 1798 3

原创 Oauth2拓展授权方式的原理分析和设计

需求:基于手机+密码+图形验证码基于邮箱+密码+图形验证码基于用户名+密码+图形验证码基于手机+手机验证码其实无论哪个需求,oauth2自带的授权方式都没办法实现。看了网上很多都是添加SpringSecurity的过滤器来拦截的,但总感觉这样就脱离了Oauth2,且我这边是通过自定义的登录接口然后通过RestTemplate调用/oauth/token接口申请token,因此不方便通过过滤器直接拦截登录的URL。较好的方式是拓展Oauth2的授权方式。首先需要了解调用申请令牌的接口的原理

2020-12-15 14:36:05 441

原创 JAVA线程的六个状态和转换关系

java 的线程状态共有6种,在Thread.State枚举中定义:public enum State { /** * 创建后尚未启动的线程 */ NEW, /** * 可能正在执行,也可能正在等操作系统分配执行时间 */ RUNNABLE, /** * 阻塞状态 * 在等待获取一个排它锁。调用了Object.wai

2020-09-05 12:12:36 301

原创 【SpringBoot】ConditionXX的作用与原理以及自定义Condition

在前面一文中,我们讲了SpringBoot启动的几个阶段和自动装配的原理,我们会发现,在Spring中,使用了大量的@ConditionXXX注解,本文就来介绍下@Condition注解的原理。问题:ConditionXX注解是做什么的?如何使用?如何自定义Condition?Condition实现原理是什么?一、@ConditionXXX注解的作用常见的一些@Condition相关的注解如上。该类注解的作用就是在满足某个条件的时候才将某个类进行实例化并加入到Spring容器中来。如:

2020-08-29 20:09:29 168

原创 SpringBoot启动和自动装配那点事儿

文章目录SpringBoot启动时做了什么?一、SpringApplication构造【准备】1.1 服务启动类型判断1.2 加载应用上下文初始器 ApplicationContextInitializer1.2.1 SPI服务加载1.2.2 实例化实现类1.3 加载应用事件监听器ApplicationListener1.4 获取启动类二、SpringApplication运行2.1 加载SpringApplicationRunListener2.2 封装启动参数2.3 加载外部化配置2.4 创建上下文对象

2020-08-29 16:24:36 130

原创 Mycat(三)——几种分片规则 分库 一致性hash的原理及使用

Mycat分片规则取模在前面演示分表的时候,使用了取模的方式实现。取模的话是根据节点个数进行,会有一些弊端,如:hash不均匀,生成的分布式id未必是连续的id,因此大概率可能会有很多id被hash到同一个节点;扩容需要rehash。假如有3个节点,一个id被id%3 hash到了第一个节点,如果进行扩容,增加一个实例,那么再对这个id进行hash,id%4,可能就到了另外一个节点,这样的话就无法查询到这个id的数据信息。分库这里使用两组主从实例。master-01——slave01m

2020-08-09 10:18:11 927 1

原创 Mycat(二)——分布式ID生成策略

当我们分表分库后,就不可以使用数据库的自增id了,否则肯定会出现id一样的数据。因此就需要使用分布式ID生成策略进行id的生成。mycat序列号(文件)在mycat中提供了全局序列号:在sequence_conf.properties文件中:# 表示使用过的历史分段(一般无特殊需要可不配置)GLOBAL_SEQ.HISIDS= # 最小ID值GLOBAL_SEQ.MINID=1001# 最大ID值GLOBAL_SEQ.MAXID=1000000000# 当前ID值。GLOBAL_S

2020-08-08 22:47:58 320

原创 Mycat(一)——基本概念和使用

在介绍mycat前,先看一下数据库拆分的几种常见的方式:数据库拆分就是指通过某种特定的条件,将我们存放在同一个数据库中的数据分散存放到多个数据库(主机)上面,以达到分散单台设备负载的效果垂直拆分优点◆ 数据库的拆分简单明了,拆分规则明确;◆ 应用程序模块清晰明确,整合容易;◆ 数据维护方便易行,容易定位;缺点◆ 部分表关联无法在数据库级别完成,需要在程序中完成,存在跨库join的问题,对于这类的表,就需要去做平衡,是数据库让步业务,共用一个数据源,还是分成多个库,业务之间通过接口来做调用

2020-08-08 22:42:12 211

原创 SpringCloud(六)——Zuul

Zuul是SpringCloud的一个网关组件,提供整个项目的请求过滤和转发等功能,如在前置过滤器中,我们可以完成用户的认证。接下来看看如何使用:一、引入依赖<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-zuul</artifactId>

2020-08-02 16:18:07 102

原创 SpringCloud(五)——SpringCloudConfig

SpringCloud-ConfigSpringCloudConfig提供分布式配置中心,抽取各个服务的公共配置,并提供配置文件的热加载等功能。一、引入依赖<dependencies><!--主要是该依赖--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-c

2020-08-02 16:14:21 70

原创 SpringCloud(四)——Feign

#全局超时时间hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=5000hystrix.command.default.metrics.rollingStats.timeInMilliseconds=4000#hystrix.command.default.metrics.healthSnapshot.intervalInMilliseconds=2000#hystrix.command.<comm

2020-08-02 16:10:36 77

原创 SpringCloud(三)——Hystrix

Hiystrix,熔断器,用于微服务系统中的保护中间件。在微服务项目中,各个微服务相互调用,如果中间某个接口出现了异常,或是因为网络延迟、或是因为高并发下某个节点被阻塞而导致整个服务的资源耗尽,这样就可能会影响整个调用链的上游系统,出现服务雪崩现象。针对服务雪崩,我们在这里可以采用要介绍的Hystrix组件,进行资源隔离、快速失败等处理方法,避免一直占用系统资源无法正常响应。接下来看下如何使用:一、依赖 <dependency> <groupId&g

2020-08-02 16:06:32 86

原创 SpringCloud(二)——Ribbon

Ribbon组件主要用来进行远程调用的负载均衡,基于HTTP和TCP的客户端负载均衡工具。虽然是SpringCloud的组件,但也可以单独进行使用。1.1 依赖SpringCloud项目直接引用如下依赖:<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-ribbon</artifact

2020-08-02 15:59:51 78

原创 SpringCloud(一)——Eureka

Eureka作为SpringCloud中的注册中心组件,所有服务需要注册到Eureka,同时可以拉取注册在Eureka中的服务进行调用。一、Eureka服务端1.1 依赖<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:sc

2020-08-02 15:51:33 214

原创 多线程顺序打印ABC

Lock+CASimport java.util.concurrent.CountDownLatch;import java.util.concurrent.LinkedBlockingQueue;import java.util.concurrent.ThreadPoolExecutor;import java.util.concurrent.TimeUnit;import java.util.concurrent.atomic.AtomicInteger;import java.util.c

2020-07-30 10:40:48 87

原创 手写简易Mybatis——体会骨架之美

手写Mybatis,首先要明确手写的目的,不是为了方方面面都去模仿实现,而是为了走通mybatis的核心流程,以及中间涉及到的部分核心组件。我们从基础的查询走起,为了方便,我们只实现最多带一个参数的查询。基本流程一、读取配置初始化相关数据结构:1.1 MappedStatement该类用于保存mapper.xml中sql节点的所有信息,在这里我们只保存基本的信息:public class MappedStatement { private String nameSpace; p

2020-07-17 15:34:41 106

原创 Mybatis执行流程三大阶段(源码解析)

这里写自定义目录标题一、流程概述二、加载配置的三个核心类三、Configuration对象四、流程解析4.1 初始化阶段parse()解析Mapper.xml1.解析mapper节点1.1解析缓存节点1.2 解析resultMapResultMapResultMapping1.3解析sql标签1.4 解析select、update、delete等标签MappedStatement解析sql语句动态sql判断2.将mapper文件添加到Configuration中3.注册Mapper接口初始化涉及到的设计模式

2020-07-16 22:35:24 248

原创 Redis设计与实现(八)Redis中的事件

文章目录一、文件事件1.0 Reactor模式1.1 文件事件处理器的构成1.2 事件类型1.3 文件事件处理器1.3.1连接应答处理器1.3.2命令请求处理器1.3.3 命令回复处理器二、时间事件时间事件的属性实现时间事件处理器原理serverCron函数事件的调度和执行Redis是一个事件驱动程序,服务器需要处理两类事件:1.文件事件2.时间时间一、文件事件Redis通过套接字和客户...

2020-05-08 14:01:52 93

原创 Redis设计与实现(七)RDB和AOF持久化及其原理、RDB文件结构

文章目录一、RDB1.1自动保存原理1.2 RDB文件结构1.2.1 database1.2.1.1 key_value_pair1.2.2value字符串对象二、AOF2.1追加2.2写入和同步2.3载入与还原2.4 AOF重写2.5 重写的实现注意:2.6后台重写子进程重写的问题:解决:redis有两种持久化的方式,一个是RDB一个是AOF。一、RDBRDB方式会生成一个RDB文件,该文...

2020-05-07 14:45:40 212

原创 Redis设计与实现(六)数据库结构、过期键删除策略

文章目录一、数据库结构1.1 数据库的切换1.2 redisDb1.3 读写键的维护二、键的生存/过期时间原理2.1过期时间的保存2.2 过期时间的判定三、过期键删除策略3.1定时删除【主动】优点缺点3.2惰性删除【被动】优点缺点3.3定期删除【主动】四、Redis后的过期键删除策略4.1 惰性删除的实现4.2 定期删除策略的实现五、AOF、RDB和复制功能对过期键的处理5.1RDB5.2 AOF...

2020-05-06 17:25:45 261

原创 Redis设计与实现(五)——Redis五种对象、内存回收/共享

文章目录一、对象类型和编码1.1 类型1.2 编码和底层实现1.3 内存回收1.4 对象的共享1.5对象空转时长二、字符串对象2.1 embstr和raw的区别2.2 long double类型的存储2.3 编码转换2.3字符串指令的实现三、列表对象编码的转换quicklistquicklistNodequicklistLZF四、哈希对象ziplist编码hashtable编码编码转换五、集合对象...

2020-05-06 00:47:33 251

原创 Redis设计与实现(四)列表和哈希键的实现——压缩列表

当列表项或者哈希键的键和值是一些小整数或是长度较短的字符串时,redis就使用压缩列表作为列表键的底层实现。压缩列表的实现压缩列表,压缩,就是为了节约内存。它是由一系列特殊编码的连续内存块组成的顺序型数据结构。一个压缩列表可包含任意多个节点,每个节点可保存一个字节数组或一个整数值。二、压缩列表结构一个压缩列表由以下几个部分组成:zlbytes、zltail、zllen、N个entry...

2020-05-06 00:43:31 584

原创 redis设计与实现(三)有序集合和集合的实现——跳跃表和整数集合

跳跃表是一种有序的数据结构每个节点都维护多个指向其他节点的指针,达到快速访问节点的目的平均查找复杂度为O(logN)、最坏为O(N),可通过顺序操作批量处理接地那。大部分情况其效率可和平衡树媲美每个跳跃表层高都是1到32之间的随机数跳跃表在redis中用于有序集合的实现。另外也用在集群节点的内部数据结构。一、跳跃表的实现zskiplist该结构保存了跳跃表节点的信息。跳跃表节点...

2020-05-06 00:39:26 191

原创 redis慢查询、弱事务以及发布订阅

同mysql一样,执行时间超过设定值时,将命令以及耗时等信息记录下来。redis的指令会放在一个队列中,单线程顺序获取执行。1.慢查询设置127.0.0.1:6379> config set slowlog-log-slower-than 10000OK -- 默认10ms127.0.0.1:6379> config rewriteOK -- 刷新到配置文件值设为...

2020-05-06 00:38:22 175

原创 redis常见的场景设计

key尽量简短易懂,有文档。一、String场景1.计数如浏览次数,每浏览一次,就调用incr keyName.或者是编号,如每下一个单,自增2.session共享用SpringSession和redis完成session共享二、分布式锁锁场景:多任务环境-------多对一操作有状态的资源-------会不一样(有状态类)基础要点缓存有效期可以给key设置过期时间,ke...

2020-05-06 00:37:15 183

原创 redis基础——有序集合

同集合不同,有序集合给每个成员添加了一个score字段,即分数,集合中按照分数对成员进行排序。不允许重复有序按分值排序可用于排行榜,点赞数等1.zadd127.0.0.1:6379> zadd libai 1 zhangsan 10 lisi 5 wanger 90 wanagwu(integer) 4如果我们某个用户收到的点赞排行榜,即哪些用户给该用户点了多少赞(一个...

2020-05-06 00:34:54 88

原创 redis基础——集合使用

不允许重复不有序可用于标签,社交等1.saddadd fav jump game run ball(integer) 4向fav中添加多个元素。2.smembers127.0.0.1:6379> smembers fav1) "jump"2) "game"3) "run"4) "ball"查看key中所有的成员3.srem127.0.0.1:6379&g...

2020-05-06 00:33:42 74

原创 redis基础——hash

哈希就类似于java中的map结构,只不过给这个map指定了一个key,因此一个key中可以存储多个键值对1.hset hset user name wml(integer) 1结构:key field value2.hget127.0.0.1:6379> hget user name"wml"hget +key +field3.Hmset一次设置多个字段127.0...

2020-05-06 00:32:29 52

原创 Redis设计与实现(二)——列表与字典

一、链表用途:列表键发布与订阅慢查询监视器数据结构:双向链表,有前驱和后驱指针有头尾指针无环的维护了一个len表示链表长度比较简单就详细讲了。二、字典保存键值对的抽象数据结构。哈希键的底层实现之一就是字典,集合也会使用到字典结构。如:set name "wml"该键值对就保存在数据库的字典中。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直...

2020-05-06 00:31:28 140

原创 Redis(一)——String和底层数据结构实现

一、Stringredis使用自己构建的名为简单动态字符串(SDS)的抽象类型作为默认字符串表示。数据结构为:struct sdshdr{ int len;//buf数组已使用的字节,即SDS保存的字符串长度 int free;//未使用的字节长度 char buf[];//保存字符串的字节数组}如要保存redis这几个字符,则其SDS结构为:buf[]: ...

2020-05-06 00:24:41 691

logstash_6.3版本.zip

logstash6.3.2 linux版本 a

2019-10-25

kibana 6.3.2windows版本.zip

kibana6.3.2 windows版本 a

2019-10-25

Elasticsearch.zip

elasticsearch 6.3.2 ik分词器6.3.2 head-master6.3.2

2019-10-25

请问使用JPA本地查询,如果没有参数绑定,占位符怎么写?

发表于 2019-11-04 最后回复 2019-11-05

JPA如何查询中间表信息?

发表于 2019-11-01 最后回复 2019-11-01

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

TA关注的人 TA的粉丝

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