<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[tengxvincent的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/tengxvincent</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; tengxvincent]]></copyright><item><title><![CDATA[Spring AOP   @Around增强处理实现方法级防重]]></title><link>https://blog.youkuaiyun.com/tengxvincent/article/details/116646690</link><guid>https://blog.youkuaiyun.com/tengxvincent/article/details/116646690</guid><author>tengxvincent</author><pubDate>Tue, 11 May 2021 12:13:42 +0800</pubDate><description><![CDATA[1 定义 PointCut 连接点注解类


/**
 * DB 锁
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)  //表示该注解只能用在方法上
public @interface DbLock {
    public BusiType type(); // 锁定的类型

    public String[] key() default {}; // 锁的值，只能用在第一个参数上
}


2 定义切面类



.]]></description><category></category></item><item><title><![CDATA[Http协议与TCP协议简单理解]]></title><link>https://blog.youkuaiyun.com/tengxvincent/article/details/81281068</link><guid>https://blog.youkuaiyun.com/tengxvincent/article/details/81281068</guid><author>tengxvincent</author><pubDate>Wed, 23 Sep 2020 14:14:44 +0800</pubDate><description><![CDATA[编写代码，很多时候会遇到Http协议或者TCP协议，这里做一个简单的理解。TCP协议对应于传输层，而HTTP协议对应于应用层，从本质上来说，二者没有可比性。Http协议是建立在TCP协议基础之上的，当浏览器需要从服务器获取网页数据的时候，会发出一次Http请求。Http会通过TCP建立起一个到服务器的连接通道，当本次请求需要的数据完毕后，Http会立即将TCP连接断开，这个过程是很短的。所以Htt...]]></description><category></category></item><item><title><![CDATA[《深入理解 Java 内存模型》 整理]]></title><link>https://blog.youkuaiyun.com/tengxvincent/article/details/82842266</link><guid>https://blog.youkuaiyun.com/tengxvincent/article/details/82842266</guid><author>tengxvincent</author><pubDate>Wed, 23 Sep 2020 14:13:29 +0800</pubDate><description><![CDATA[目录

基础

JAVA 内存模型的抽象

重排序

1， 处理器重排序

2 ，内存屏障指令

3， HAPPENS-BEFORE

4 ， 数据依赖性

5 ，AS-IF-SERIAL 语义

6， 重排序对多线程的影响

顺序一致性

1， 顺序一致性内存模型

2， 同步程序的顺序一致性效果

3，未同步程序的执行特性 

Volatile

1，VOLATILE 特性

2，VOL...]]></description><category></category></item><item><title><![CDATA[高并发下的限流解决方案]]></title><link>https://blog.youkuaiyun.com/tengxvincent/article/details/101287605</link><guid>https://blog.youkuaiyun.com/tengxvincent/article/details/101287605</guid><author>tengxvincent</author><pubDate>Tue, 24 Sep 2019 17:01:41 +0800</pubDate><description><![CDATA[目录

限流的目的

传输层中的限流

基于漏桶(Leaky bucket)与令牌桶(Token bucket)算法的流量控制

限流算法的实际应用

单机玩法

1，SemaPhore

2，RateLimiter

分布式中的玩法

redis+lua:令牌桶算法实现

使用延迟队列

限流的目的

限流的目的是防止恶意请求流量、恶意攻击、或者防止流量超过系统峰值
限流是对资源访问做...]]></description><category></category></item><item><title><![CDATA[多线程五  线程池 ThreadPoolExecutor]]></title><link>https://blog.youkuaiyun.com/tengxvincent/article/details/100769315</link><guid>https://blog.youkuaiyun.com/tengxvincent/article/details/100769315</guid><author>tengxvincent</author><pubDate>Thu, 12 Sep 2019 16:58:19 +0800</pubDate><description><![CDATA[目录

什么是线程池

线程池的优势

Java 中提供的线程池 API

Excutors

ThreadpoolExecutor

线程池初始化以后做了什么事情

newFixedThreadPool

newCachedThreadPool

newSingleThreadExecutor

线程池原理分析(FixedThreadPool)

源码分析

execute

状...]]></description><category></category></item><item><title><![CDATA[多线程四 JUC的阻塞队列和原子类]]></title><link>https://blog.youkuaiyun.com/tengxvincent/article/details/100705354</link><guid>https://blog.youkuaiyun.com/tengxvincent/article/details/100705354</guid><author>tengxvincent</author><pubDate>Tue, 10 Sep 2019 19:33:53 +0800</pubDate><description><![CDATA[目录

生产者消费者的实际使用

阻塞队列的使用案例注册成功后增加积分

J.U.C 中的阻塞队列

J.U.C 提供的阻塞队列

阻塞队列的操作方法

 1. 插入操作

 2. 移除操作

ArrayBlockingQueue 原理分析

1，构造方法

2，Add 方法

3，offer 方法

4，enqueue方法

5，put 方法

6，take 方...]]></description><category></category></item><item><title><![CDATA[多线程三   JUC之Reentrantlock]]></title><link>https://blog.youkuaiyun.com/tengxvincent/article/details/100016617</link><guid>https://blog.youkuaiyun.com/tengxvincent/article/details/100016617</guid><author>tengxvincent</author><pubDate>Fri, 23 Aug 2019 20:51:24 +0800</pubDate><description><![CDATA[目录

J.U.C 简介

Lock

1 Lock 的实现

2 Lock 的类关系图

3 重入锁 Reentrantlock

4 ReentrantReadWriteLock

5 ReentrantLock 的实现原理

6 ReentrantLock 的源码分析

ReentrantLock 和 Synchronized 区别

使用condition实现线程通信


...]]></description><category></category></item><item><title><![CDATA[多线程二]]></title><link>https://blog.youkuaiyun.com/tengxvincent/article/details/99681468</link><guid>https://blog.youkuaiyun.com/tengxvincent/article/details/99681468</guid><author>tengxvincent</author><pubDate>Sun, 18 Aug 2019 16:57:19 +0800</pubDate><description><![CDATA[对象头

对象在jvm中是如何存储的

在 Hotspot 虚拟机中，对象在内存中的存储布局，可以分 为三个区域:对象头(Header)、实例数据(Instance Data)、对 齐填充(Padding)





每一个Java类，在被JVM加载的时候，JVM会给这个类创建一个instanceKlass，保存在方法区，用来在JVM层表示该Java类。当我们在Java代码中，使用new创建一...]]></description><category></category></item><item><title><![CDATA[多线程一]]></title><link>https://blog.youkuaiyun.com/tengxvincent/article/details/99625091</link><guid>https://blog.youkuaiyun.com/tengxvincent/article/details/99625091</guid><author>tengxvincent</author><pubDate>Fri, 16 Aug 2019 16:44:06 +0800</pubDate><description><![CDATA[目录

一 实现多线程的三种方式

二 线程的生命周期

三 线程的开启，中断，复位

四 yield与join方法的区别

一 实现多线程的三种方式

继承Thread类

实现Runnable接口

实现Callable接口


public class DothreadDemo extends Thread {
    @Override
    public void run() {
...]]></description><category></category></item><item><title><![CDATA[rabbitmq总结]]></title><link>https://blog.youkuaiyun.com/tengxvincent/article/details/92839406</link><guid>https://blog.youkuaiyun.com/tengxvincent/article/details/92839406</guid><author>tengxvincent</author><pubDate>Wed, 19 Jun 2019 17:37:32 +0800</pubDate><description><![CDATA[rabbitmq简介
rabbitmq 是spring所在公司Pivotal自己的产品  是基于AMQP（advanced message queue protocol）高级队列协议的消息中间件 采用erlang开发   因此安装需要erlang环境  具体安装根据自己的环境  因为跟spring有共同的血缘关系 所以spring 全家桶对其的支持应该是相当完善的
简单概念
一般消息队列 都是生产...]]></description><category></category></item><item><title><![CDATA[SpringBoot 一 CommandLineRunner接口]]></title><link>https://blog.youkuaiyun.com/tengxvincent/article/details/91038945</link><guid>https://blog.youkuaiyun.com/tengxvincent/article/details/91038945</guid><author>tengxvincent</author><pubDate>Thu, 06 Jun 2019 09:52:39 +0800</pubDate><description><![CDATA[目录

前言

一 如何使用CommandLineRunner接口

1）和@Component注解一起使用

2）和@SpringBootApplication注解一起使用

3)声明一个实现了CommandLineRunner接口的Bean

二 用@Order注解去设置多个CommandLineRunner实现类的执行顺序

前言

Spring boot的CommandLineRunner...]]></description><category></category></item><item><title><![CDATA[mysql一锁概述一]]></title><link>https://blog.youkuaiyun.com/tengxvincent/article/details/90600438</link><guid>https://blog.youkuaiyun.com/tengxvincent/article/details/90600438</guid><author>tengxvincent</author><pubDate>Mon, 27 May 2019 16:08:30 +0800</pubDate><description><![CDATA[目录

一 数据库锁设计的初衷

二 全局锁：对整个数据库实例加锁。全局锁的典型使用场景是，做全库逻辑备份。

1 ）加全局读锁  命令是 Flush tables with read lock (FTWRL)。

2 ）既然要全库只读，为什么不使用set global readonly=true的方式呢？

3） 如何在不加锁的情况下保证视图的一致性？

二 表级锁

1，表锁

2...]]></description><category></category></item><item><title><![CDATA[mysql一索引概述二]]></title><link>https://blog.youkuaiyun.com/tengxvincent/article/details/89705709</link><guid>https://blog.youkuaiyun.com/tengxvincent/article/details/89705709</guid><author>tengxvincent</author><pubDate>Tue, 30 Apr 2019 16:56:46 +0800</pubDate><description><![CDATA[目录

一 索引的常见模型

1 哈希表

2 有序数组

3 二叉搜索树

3 多叉树

二 InnoDB 的索引模型

三 索引维护 -----从性能、存储空间的角度

四 离散性原则、覆盖索引、最左前缀原则、索引下推

一 索引的常见模型

用于提高读写效率的数据结构很多，这里我先给你介绍三种常见、也比较简单的数据结构，它们分别是哈希表、有序数组和搜索树

1 哈希表

是一种以键-值...]]></description><category></category></item><item><title><![CDATA[Redis 分布式锁--MySQL事务使用实践]]></title><link>https://blog.youkuaiyun.com/tengxvincent/article/details/89633874</link><guid>https://blog.youkuaiyun.com/tengxvincent/article/details/89633874</guid><author>tengxvincent</author><pubDate>Sun, 28 Apr 2019 11:58:11 +0800</pubDate><description><![CDATA[正确的示范：A

相关数据操作的事务的开启和结束 在Redis 分布式锁的范围内的情况下


    @Override
    @Transactional
    public  void productOccupyOperate(Integer operateType, Long productId, String orderCode){
        String lockKey...]]></description><category></category></item><item><title><![CDATA[Redis 分布式锁--基于Spring-boot-start-data-redis]]></title><link>https://blog.youkuaiyun.com/tengxvincent/article/details/89253653</link><guid>https://blog.youkuaiyun.com/tengxvincent/article/details/89253653</guid><author>tengxvincent</author><pubDate>Fri, 12 Apr 2019 19:34:07 +0800</pubDate><description><![CDATA[目录

1 build.gradle 引入JAR 

2 配置文件：bootstrap-dev.yml

3 RedisConfig.java

4 CacheService.java

目前Java操作redis的客户端有jedis跟lettuce。 在springboot1.x系列中，其中使用的是jedis,但是到了springboot2.x其中使用的是Lettuce。 因为我...]]></description><category></category></item><item><title><![CDATA[SpringBoot配置Cors解决跨域请求问题]]></title><link>https://blog.youkuaiyun.com/tengxvincent/article/details/89154950</link><guid>https://blog.youkuaiyun.com/tengxvincent/article/details/89154950</guid><author>tengxvincent</author><pubDate>Tue, 09 Apr 2019 17:12:50 +0800</pubDate><description><![CDATA[目录



一、同源策略简介

什么是源

什么是同源

是否是同源的判断

哪些操作不受同源策略限制

跨域

如何跨域

二、CORS 简介

三、Spring Boot 配置 CORS

1、使用@CrossOrigin注解实现

2、原理剖析

一、同源策略简介

同源策略[same origin policy]是浏览器的一个安全功能，不同源的客户端脚本在没有明确授权的情况下，不能读写...]]></description><category></category></item><item><title><![CDATA[Spring IO Platform简介及示例]]></title><link>https://blog.youkuaiyun.com/tengxvincent/article/details/88931177</link><guid>https://blog.youkuaiyun.com/tengxvincent/article/details/88931177</guid><author>tengxvincent</author><pubDate>Sun, 31 Mar 2019 17:13:08 +0800</pubDate><description><![CDATA[目录

为什么要用Spring IO Platform

什么是Spring IO Platform

Maven使用Spring IO Platform

Spring IO Platform中维护了哪些依赖

如何使用Spring IO Platform

在Maven中使用Spring IO Platform

在Gradle中使用Spring IO Platform

一个完整的示例，基于...]]></description><category></category></item><item><title><![CDATA[mysql一事务及ACID特性的实现原理]]></title><link>https://blog.youkuaiyun.com/tengxvincent/article/details/88867460</link><guid>https://blog.youkuaiyun.com/tengxvincent/article/details/88867460</guid><author>tengxvincent</author><pubDate>Thu, 28 Mar 2019 14:49:09 +0800</pubDate><description><![CDATA[MySQL 事务基础概念

事务（Transaction）是访问和更新数据库的程序执行单元；事务中可能包含一个或多个 sql 语句，这些语句要么都执行，要么都不执行。

作为一个关系型数据库，MySQL 支持事务，本文介绍基于 MySQL 5.6。首先回顾一下 MySQL 事务的基础知识。



逻辑架构和存储引擎





如上图所示，MySQL 服务器逻辑架构从上往下可以分为三层：


	...]]></description><category></category></item><item><title><![CDATA[Git Step by Step -- git  remote]]></title><link>https://blog.youkuaiyun.com/tengxvincent/article/details/88863148</link><guid>https://blog.youkuaiyun.com/tengxvincent/article/details/88863148</guid><author>tengxvincent</author><pubDate>Thu, 28 Mar 2019 10:40:06 +0800</pubDate><description><![CDATA[本地git项目的相关配置信息可以从 .git/config 文件中查看


[core]
	repositoryformatversion = 0
	filemode = false
	bare = false
	logallrefupdates = true
	symlinks = false
	ignorecase = true
[remote "origin"]
	url = http://...]]></description><category></category></item><item><title><![CDATA[Gradle、Gradle Wrapper区别和联系]]></title><link>https://blog.youkuaiyun.com/tengxvincent/article/details/88355527</link><guid>https://blog.youkuaiyun.com/tengxvincent/article/details/88355527</guid><author>tengxvincent</author><pubDate>Fri, 08 Mar 2019 17:50:15 +0800</pubDate><description><![CDATA[首先用一段通俗易懂但是不是非常专业的话描述一下三者的概念、区别和联系。


	Gradle是个构建系统，能够简化你的编译、打包、测试过程。熟悉Java的同学，可以把Gradle类比成Maven。
	
	
	Gradle Wrapper的作用是简化Gradle本身的安装、部署。wrapper的意思：包装。那么可想而已，这是gradle包装不同版本的项目可能需要不同版本的Gradle，手工部署的话...]]></description><category></category></item></channel></rss>