自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

aileitianshi的博客

一名开发工作者的技术分享

  • 博客(22)
  • 资源 (2)
  • 收藏
  • 关注

原创 Java-Tomcat的请求参数解析分析

项目场景:特殊场景需要写代码解析url的请求参数问题描述:网上查了一下, 大多数的工具类是使用&号分割, 然后再使用=号分割得到参数的key和value这种写法有问题: 当value包含&或者=符号都会产生分割不准确的问题而且单纯的分隔不会解码%22这种url编码我们来分析一下tomcat是怎么解析的这里说的参数是GET请求?号后面的参数 和 POST下application/x-www-form-urlencoded类型的参数解析源码分析:Tomcat环境中参数解析的方法

2021-05-14 17:17:05 447

原创 谈谈文件备份: 推荐几款免费又好用的文件同步备份工具软件

云备份先说说我一直在使用的云备份金山WPS 和 微软OneDrive免费的有5G云空间, 用来存放一些文档和小工具是足够的如果5G不够, WPS可以开会员, 目前最高可以升级到到365GWPS有个好处, 会员可以使用wps的其他服务, 比如优质模板等等微软的比较直接, 单纯的升级空间, 最高可以升级到6T两者升级按年买大概都是三到四百, 比起数据的重要和便捷性还可以接受微软OneDrive的目录与win10系统结合比WPS完美硬盘备份随着文件越来越多, 尤其是一些大文件使用云空间显然

2021-05-08 14:44:27 10648

原创 RabbitMQ-消息的可靠性投递实现方案

保障100%的消息可靠性投递方案落地实现保障100%消息投递成功设计方案(一)蓝色区域: 生产者红色区域: broker(MQ服务)总共有7个步骤第一步: 存储业务数据(订单), 存储MQ消息记录(MQ日志)第二步: 发送确认类型的MQ消息到broker第三步: 监听该结果, broker收到消息,返回(应答)确认收到第四步: 操作MQ消息记录表做状态更新(0消息发送中,1消息发送成功,2消息发送失败)如果没有收到第三步的确认则会有定时任务定时轮询第五步: 定时任务获取状态为0的消息,

2021-04-28 22:34:40 443

原创 CAS单点登录系统实现强制用户下线退出

需求背景当管理员冻结用户时, 立即退出所有服务的登陆状态当前项目架构用户管理系统: 管理用户的状态与权限等用户信息CAS单点登录系统: 对用户进行认证授权管理后台: 公司的微服务系统当前认证流程红色虚线内为用户与CAS交互的部分也是后边需要改动CAS认证流程逻辑的部分实现冻结立即下线下线实现管理后台开放的一个删除Redis中Session的接口 /session/deleteByUserId然后管理员在用户服务进行冻结操作时调用管理后台的 /session/deleteByUser

2021-04-28 22:26:32 1835

原创 RocketMQ核心原理

主要整理关于RocketMQ的刷盘, 存储, 高可用, NameServer的一些基本知识Broker消息存储结构解析消息的存储结构-单队列消息的存储结构-多队列生产者把消息投递到commit Logcommit Log用于存储实际消息的数据, 是一个物理文件的存储然后会有多个Consume Queue用于存储消息在Commit Log中的位置信息,每一个Topic下的每一个Message Queue都对应一个Consume Queue文件, 具体的存储位置可以.

2020-10-09 18:11:35 129

原创 Synchronized的锁关系

锁的状态存放于对象头中,有4中锁状态, 无锁, 偏向锁, 轻量级锁, 重量级锁.锁的状态也是依次升级且一旦升级就不会降级,偏向锁:从jdk.6加入对锁的优化手段, 偏向锁的场景为锁不存在竞争, 一个时刻总是仅有一个线程持有. 如果锁不存在竞争那么CAS的操作也是多余的.偏向锁的核心思想是当一个线程获取了锁, 那么这个锁就进入了偏向状态, 这里的"偏"就是偏心于一个线程的意思.偏向锁的获得和撤销流程获取锁步骤:1)判断锁对象是否是偏向锁(即锁标志位为01,偏向锁位为1),.

2020-09-28 11:03:58 266

原创 Synchronized的原理(汇编层)

原理描述:通过C++层可以了解到其常用方法为CAS方法, 比如://通过CAS尝试把monitor的`_owner`字段设置为当前线程cur = Atomic::cmpxchg_ptr (Self, &_owner, NULL) ;调用的Atomic类中的cmpxchg_ptr方法, 其实java中原子类Atomic包中的底层也是atomic.cpp这个类这里从java里Atomic包中的Unsafe类的compareAndSwapInt()方法入手直到最后的cmpxchg.

2020-09-28 10:56:23 855

原创 Synchronized的原理(C++层)

Synchronized的原理(C++层)原理描述:重量级锁通过对象内部的监视器(monitor)实现,其中monitor的本质是依赖于底层操作系统的Mutex Lock实现。当系统检查到锁是重量级锁之后,会把等待想要获得锁的线程进行阻塞,被阻塞的线程不会消耗cup。但是阻塞或者唤醒一个线程时,都需要操作系统来帮忙,这就需要从用户态转换到内核态,而转换状态是需要消耗很多时间的,有可能比用户执行代码的时间还要长。这就是说为什么重量级线程开销成本很高。无论是ACC_SYNCHRONIZED(方法锁)

2020-09-28 10:29:03 2481

原创 Synchronized的原理(字节码层)

◆synchronized: 依赖JVM◆Lock: 依赖特殊的CPU指令, 由代码实现, ReentrantLock◆以下内容主要讨论重量级锁(标志10)的原理. 偏向锁, 轻量级锁相关有空再发.synchronized的字节码pubLic class Decompilation14 { private Object object = new 0bject() ; public void insert(Thread thread) { synchro.

2020-09-28 10:14:38 109

原创 Redis Desktop Manager 2020.2 Windows 源码编译

Redis Desktop Manager 2020.2 Windows 源码编译

2020-08-10 20:37:52 5707 5

原创 升级SpringCloud到Hoxton.SR3后SpringMVC的端点路径映射不打印,分析和解决

升级版本就是事多...SpringMVC版本5.2.4.RELEASE版本信息升级前版本SpringBoot SpringCloud SpringMVC 2.0.6.RELEASE Finchley.SR2 5.0.10.RELEASE 升级后版本SpringBoot SpringCloud SpringMVC 2...

2020-04-10 14:54:58 381

原创 升级SpringCloud到Hoxton.SR3后使用Fegin出现jackson反序列化失败,源码分析,原因lombok版本升级

关键词Caused by: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `xxx.PageResult` (no Creators, like default construct, exist): cannot deserialize from Objec...

2020-04-10 01:35:15 1104

原创 升级SpringCloud到Hoxton.SR3出现The bean 'xxx.FeignClientSpecification' could not be registered. 源码分析和解决

最近提升项目的SpringCloud版本后出错误导致项目无法启动关键词The bean 'xxx.FeignClientSpecification' could not be registered. A bean with that name has already been defined and overriding is disabled.版本信息升级前版本SpringB...

2020-03-27 15:55:18 3071 3

原创 解决@FeignClient的地址被映射成Mapping地址, 导致重复注册端点错误

前端时间打算将FeignClient进行服务调用的接口类抽取成独立的模块发生报错后看了一遍SpringMVC的初始化源码后解决问题过程比较清晰觉得有必要记录一下项目情况:项目API模块A项目 Controller实现API模块的接口B项目 FeignClient继承API模块的接口这样子A项目的Controller与B项目的FeignClient方法就通过API...

2019-07-15 19:00:15 5805 1

原创 jpa与mybatis混用导致程序卡死

测试接口并发时发现程序并发几十的时候卡死超时无数据返回.通过日志发现程序每个请求都已经正常的接收,也就是程序并没有问题.于是通过jstack打印线程状态:如下"http-nio-30001-exec-31" #296 daemon prio=5 os_prio=0 tid=0x00000000622f5000 nid=0xa680 waiting on condition [0x000...

2019-05-14 14:47:34 3433

原创 记一次内存溢出分析-Http11OutputBuffer

我一时兴起对测试环境的服务在进行压测的时候发现瞬时并发量居然不到三十就挂了.我通过jstack导出内存线程发现很多请求线程在处理,因为是并发压测这很正常啊,没发现有死锁的情况.然后我通过jstat -gc指令查看时发现jvm各区域的内存都满了,并且在不停的执行Full GC我使用过jmap指令将内存快照导出,然后用MAT工具打开可以看到内存被两种对象类型吃满,我去看一下Tr...

2019-05-12 23:29:10 6806 3

原创 ES6语法与nodejs中使用

6、ES66.1 什么是ES6编程语言JavaScript是ECMAScript的实现和扩展 。ECMAScript是由ECMA(一个类似W3C的标准组织)参与进行标准化的语法规范。ECMAScript定义了:[语言语法] – 语法解析规则、关键字、语句、声明、运算符等。[类型]– 布尔型、数字、字符串、对象等。[原型和继承]内建对象和函数的[标准库] – [JSON]...

2018-10-15 22:02:08 2279

原创 nodejs快速入门

nodejs快速入门2.3.1 控制台输出我们现在做个最简单的小例子,演示如何在控制台输出,创建文本文件demo01.js,代码内容var a=1;var b=2;console.log(a+b);我们在命令提示符下输入命令node demo01.js2.3.2 使用函数创建文本文件demo02.jsvar c=add(100,200);conso...

2018-10-15 21:54:23 452

原创 熔断器Hystrix

1 熔断器Hystrix1.1 为什么要使用熔断器​ 在微服务架构中通常会有多个服务层调用,基础服务的故障可能会导致级联故障,进而造成整个系统不可用的情况,这种现象被称为服务雪崩效应。服务雪崩效应是一种因“服务提供者”的不可用导致“服务消费者”的不可用,并将不可用逐渐放大的过程。​ 如果下图所示:A作为服务提供者,B为A的服务消费者,C和D是B的服务消费者。A不可用引起了B的不可用,并...

2018-10-15 17:12:19 684

原创 RabbitMQ直接模式(Direct)

2.2 直接模式(Direct)2.2.1 什么是Direct模式我们需要将消息发给唯一一个节点时使用这种模式,这是最简单的一种形式。任何发送到Direct Exchange的消息都会被转发到RouteKey中指定的Queue。1.一般情况可以使用rabbitMQ自带的Exchange:”"(该Exchange的名字为空字符串,下文称其为default Exchange)。...

2018-10-15 02:55:22 3035

原创 AOP 术语

 Joinpoint(连接点):所谓连接点是指那些被拦截到的点。在 spring 中,这些点指的是方法,因为 spring 只支持方法类型的连接点。Pointcut(切入点):所谓切入点是指我们要对哪些 Joinpoint 进行拦截的定义。Advice(通知/增强):所谓通知是指拦截到 Joinpoint 之后所要做的事情就是通知。通知的类型: 前置通知,后置通知,...

2018-09-14 21:37:28 438

原创 VueJS 常用系统指令

 v-on可以用 v-on 指令监听 DOM 事件,并在触发时运行一些 JavaScript 代码 1.0v-on:click <!DOCTYPE html><html><head> <meta charset="utf-8" /> <title>事件处理 v-on示例1</titl..

2018-09-14 21:10:17 185

Redis Desktop Manager 2020.2.0 Windows

redis免费的可视化桌面管理工具, Redis Desktop Manager 2020.1.0版本 下载, 安装时会提示需要安装VC++环境, 一定要装, 否则启动时会提示xxx.dll找不到, 该工具为Windows版本, 是一款非常实用的轻量级Redis桌面管理工具

2020-08-10

Redis Desktop Manager 2020.1.0 Windows

Redis可视化工具 Redis Desktop Manager 2020.1.0版本 下载, 安装时会提示需要安装VC++环境, 一定要装, 否则启动时会提示xxx.dll找不到, 该工具为Windows版本, 是一款非常实用的轻量级Redis桌面管理工具

2020-07-06

空空如也

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

TA关注的人

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