自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(270)
  • 资源 (1)
  • 收藏
  • 关注

转载 MyBatis缓存机制

原文地址 前言 MyBatis是常见的Java数据库访问层框架。在日常工作中,开发人员多数情况下是使用MyBatis的默认缓存配置,但是MyBatis缓存机制有一些不足之处,在使用中容易引起脏数据,形成一些潜在的隐患。个人在业务开发中也处理过一些由于MyBatis缓存引发的开发问题,带着个人的兴趣,希望从应用及源码的角度为读者梳理MyBatis缓存机制。 本次分析中涉及到的代码和数据库表均放在GitHub上,地址: mybatis-cache-demo 。 目录 本文按照以下顺序展开。 一

2021-04-13 17:10:45 149

转载 Spring Cloud Zuul通过zuul-ratelimit实现限流

原文地址 前言 本篇文章主要讲解 zuul-ratelimit 组件如何来作为服务限流的。并且只讲解他的默认存储类型,因为我想后期能力允许,我会单独讲解利用 redis 来做限流。 本文 Demo 摘自《重新定义》   正文 首先简单说一下 spring cloud zuul-ratelimit,他是外国人专门针对 zuul 编写的限流库,提供来4种限流策略,如下。 限流粒度/类

2021-04-10 17:03:25 440

转载 常见限流算法

原文地址 在开发高并发系统时,有三把利器用来保护系统:缓存、降级和限流。那么何为限流呢?顾名思义,限流就是限制流量,就像你宽带包了1个G的流量,用完了就没了。通过限流,我们可以很好地控制系统的qps,从而达到保护系统的目的。本篇文章将会介绍一下常用的限流算法以及他们各自的特点。 1、计数器算法计数器算法是限流算法里最简单也是最容易实现的一种算法。比如我们规定,对于A接口来说,我们1分钟的访问次数不能超过100个。那么我们可以这么做:在一开 始的时候,我们可以设置一个计数器counter,每当一个请求

2021-04-10 16:26:44 181

转载 Redis哨兵选举算法

原文地址 Redis哨兵核心选举算法 发表于2021 2019-12-07  |  分类于 前端  |  没有评论 楔子:刚好在整Redis缓存高可用,阿汤哥的一句话Redis哨兵集群只有2个节点无法正常工作把俺给说晕了,网上也没找到比较通俗易懂的文章,所以自己理解了一下哨兵选举算法,为啥两个结点就是一个死局?。才疏学浅有错误的地方还望指出,多多包涵 一、类比开车举报算法 1

2021-04-01 17:21:13 842

转载 错误:The user specified as a definer (‘root‘@‘%‘) does not exist

原文地址 ERROR 1449 (HY000): The user specified as a definer ('root'@'%') does not exist 一、MySQL错误现象:  执行创建的存储过程或者触发器报: ERROR 1449 (HY000): The user specified as a definer ('root'@'%') does not exist  二、错误原因:  这样由于创建存储过程或者触发器时间,指定的

2021-03-24 20:15:51 19752 4

转载 两段锁协议

原文地址 两阶段锁协议   在数据库系统领域,并发控制机制主要有两种,即锁和多版本机制。   1.事务在加锁时有多种方式:   一次性锁协议,事务开始时,即一次性申请所有的锁,之后不会再申请任何锁,如果其中某个锁不可用,则整个申请就不成功,事务就不会执行,在事务尾端,一次性释放所有的锁。一次性锁协议不会产生死锁的问题,但事务的并发度不高。   两阶

2021-02-26 17:15:42 994

转载 IDEA查看Java源码技巧

原文地址 1 查看接口的实现类:Ctrl+Alt+B 选中按快捷键,然后跳到实现类的地方去   2 返回上/下个光标地方:Alt+<- 和 Alt+-> 可通过修改快捷键(搜关键字left、right)找到对应并改为 Ctrl+J。。。。   3 查看Java方法调用树(被调/主调):Ctrl+Alt+H 分为调用当前方法的树、当前方法调用的下级方法 &nbs

2021-01-02 22:10:29 313

转载 spring cloud bus注意事项

原文地址 基于Spring Boot 2.0.2 利用spring cloud bus 搭建分布式配置中心遇到的坑 1.在所有需要刷新属性的类上必须加@RefreshScop,只在启动类上加,其它类的属性不能自动刷新. 2.请求如果带destination参数,spring cloud bus 只支持json格式的参数 3.请求必须要用post的方式,因为第二点,所以content-type必须是application/json;chars

2020-11-28 23:03:16 158

转载 feign之间传递oauth2-token的问题和解决

原文地址 在微服务架构里,服务与服务之间的调用一般用feign就可以实现,它是一种可视化的rpc,并且集成了ribbon的负载均衡能力,所以很受欢迎。 授权服务 在授权服务里,用户通过用户名密码,或者手机和验证码等方式登陆之后,在http头里会有授权的标识,在客户端调用时,需要添加当时有效的token才可以正常访问被授权的页面。 Content-Type:application/jsonAuthorization:Bearer d79c064c-8675-4047-a119-

2020-10-12 18:53:20 1532

转载 OAuth 2.0 的四种方式

原文地址 OAuth 2.0 的四种方式 作者: 阮一峰 日期: 2019年4月 9日 上一篇文章介绍了 OAuth 2.0 是一种授权机制,主要用来颁发令牌(token)。本文接着介绍颁发令牌的实务操作。 下面我假定,你已经理解了 OAuth 2.0 的含义和设计思想,否则请先阅读这个系列的上一篇文章。 进入正文之前,插播一则活动消息。 4月22日(周一)到4月29日(下周一),每天晚上八点都有两小

2020-10-07 21:17:59 203

原创 Excel导入校验工具

基于poi,excel导入验证工具1. 需求​ 项目中excel 导入导出框架是用的poi(新项目推荐使用easyexcel),excel导出比较简单,比较麻烦的是excel导入,因为几乎每个字段都必须校验是否合法,所有字段的校验都写在一起的话,代码会很乱,特别是字段很多,业务校验规则有比较复杂的时候,很容易出bug,后续也很难维护。excel导入,项目中还有一个需求是,把excel中所有校验不通过的错误信息一起提示出来,而不是检查到一个错误就终止读取,这样可以提高用户的效率。所以封装了一个校验和业务分

2020-10-07 12:55:25 1614

转载 Java上传本地jar包到maven中央仓库02

原文地址 平时自己开发的工具类或者其他的框架的jar包一般都是放在本地。或者把代码上传到github让别人去下载然后自己打包。今天就说说如何把自己的jar包发布到Maven的中央仓库。让其他使用你的jar包的直接去中央仓库下载。如果你用的是阿里云的maven中央仓库。同样阿里云的中央仓库也会同步你的jar包。 1 注册JIRA账号 注册地址:https://issues.sonatype.org/secure/Dashboard.jspa 2 创建 i

2020-10-06 20:19:37 307

转载 Java上传本地jar包到maven中央仓库01

原文地址 前言 本次目的:将jar包上传到maven远程中央仓库上 作用:在Java - maven项目中可在pom文件中引入相应jar包依赖 问题:maven不支持直接上传jar包 解决:将jar包部署到第三方Maven仓库(如:sonatype ossrh仓库)中,之后再将jar包同步更新到Maven中央仓库中 Sonatype OSSRH官方介绍地址:https://central.sonatyp

2020-10-06 20:17:00 629 1

原创 checkbox复选框跨页多选,不依赖于后端实现

checkbox复选框跨页多选,不依赖于后端实现1. 需求实现表格在分页情况下,能跨页多选,刷新或改变分页条数,仍能正确多选2. 实现方案利用sessionStorage 保存复选框勾选信息在客户端,不依赖后端实现。每一个复选框的value值都保存一个唯一id(也可以自定义一个属性保存唯一id),监听checkbox onchange事件,选中时sessionStorage.setItem(id, ‘1’),取消选中时sessionStorage.setItem(id, ‘0’),保存选择信息。

2020-09-21 09:50:22 1230

转载 MySQL函数find_in_set

原文地址 转载请注明来源-作者@loongshawn:http://blog.csdn.net/loongshawn/article/details/78611636,建议读者阅读原文,确保获得完整的信息 场景介绍 人有时会身兼数职,需要查找出其中担任某一职务的都有哪些人,如下面position字段,不同的职务用数字表示,多个职务以逗号隔开。 先要查找出担任1职务的人员,通过以下两种方式来查询。 方

2020-09-16 10:16:44 90

转载 Zookeeper与paxos算法

原文地址 阅读更多 一、            zookeeper是什么 官方说辞:Zookeeper 分布式服务框架是Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。 好抽象,我们改变一下方式,先看看它都提供了哪些功能,然后再看看使用

2020-09-12 09:52:08 246

转载 ConcurrentLinkedQueue源码探究

原文地址 JDK 中基于链表的非阻塞无界队列 ConcurrentLinkedQueue 原理剖析,ConcurrentLinkedQueue 内部是如何使用 CAS 非阻塞算法来保证多线程下入队出队操作的线程安全? ConcurrentLinkedQueue是线程安全的无界非阻塞队列,其底层数据结构是使用单向链表实现,入队和出队操作是使用我们经常提到的CAS来保证线程安全的。 我们首先看一下ConcurrentLinkedQueue的类图结构先,好有一个内部逻辑有一个大概的印象,如下图所示:

2020-08-20 15:01:07 115

转载 CopyOnWriteArrayList详解

原文地址     可以提前读这篇文章:多读少写的场景 如何提高性能   写入时复制(CopyOnWrite)思想   写入时复制(CopyOnWrite,简称COW)思想是计算机程序设计领域中的一种优化策略。其核心思想是,如果有多个调用者(Callers)同时要求相同的资源(如内存或者是磁盘上的数据存储),他们会共同获取相同的指针指向相同的资源,直到某个调用者视图修改资源内容时,系统才会真正复制一份专用副本(private copy)给该调用者,而其他

2020-08-19 16:35:45 314

原创 ThreadLocal基本原理

ThreadLocal基本原理设置值 public void set(T value) { Thread t = Thread.currentThread(); // 拿到当前线程对象 ThreadLocalMap map = getMap(t); // 拿到当前线程对象的ThreadLocalMap 对象 if (map != null) map.set(this, value); // 设置值,以当前ThreadL

2020-07-27 14:42:06 98

转载 mybatis延迟加载

原文地址 mybatis的延迟加载就是按需查询,在需要的时候进行查询。 有两张表: 图书表(book): 图书类型表(category): 他们之间通过类型id进行关联,现在我要显示图书类型名,点击类型名再显示该类型下的所有图书。 我们可以这样做在类型实体类里面添加一个属性存放该类型下的图书 publi...

2020-04-16 16:13:24 162

转载 服务注册与发现组件比较

原文地址 Eureka 是 Netflix 开源的一款提供服务注册和发现的产品,已闭源,提供了完整的服务注册和发现,springcloud中最核心的组件之一,需要手动配置 Eureka Server 服务器。服务器端:pom.xml 中引入spring-cloud-starter-netflix-eureka-server,启动类添加@EnableDiscoveryClient 或@Enabl...

2020-04-16 11:41:53 570

转载 Zuul限流实现

原文地址 【推荐阅读】微服务还能火多久?>>> 一、前言 1、什么是RateLimiter、Spring Cloud Zuul RateLimiter? RateLimiter是Google开源的实现了令牌桶算法的限流工具(速率限制器)。http://ifeve.com/guava-ratelimiter/ Spring Cloud Zuul...

2020-04-15 17:03:17 458

转载 Java指令重排

原链接数据依赖性如果两个操作访问同一个变量,且这两个操作中有一个为写操作,此时这两个操作之间就存在数据依赖性。数据依赖分下列三种类型:名称 代码示例 说明写后读 a = 1;b = a; 写一个变量之后,再读这个位置。写后写 a = 1;a = 2; 写一个变量之后,再写这个变量。读后写 a = b;b = 1; 读一个变量之后,再写这个变量。上面三种情况,只要重排序两个操作的执行顺...

2020-04-13 16:58:26 1077

转载 缓存双写一致性方案

原文地址 引言 为什么写这篇文章? 首先,缓存由于其高并发和高性能的特性,已经在项目中被广泛使用。在读取缓存方面,大家没啥疑问,都是按照下图的流程来进行业务操作。 但是在更新缓存方面,对于更新完数据库,是更新缓存呢,还是删除缓存。又或者是先删除缓存,再更新数据库,其实大家存在很大的争议。目前没有一篇全面的博客,对这几种方案进行解析。于是博主战战兢兢,顶着被大家喷的风险,写了这篇文章。...

2020-04-13 15:39:29 1014

转载 mysql索引最左匹配原理

原文地址 poype 317 MySql索引 mysql 发布于 2017-09-03  约 16 分钟 索引(key)是存储引擎用于快速找到记录的一种数据结构。它和一...

2020-04-13 14:41:05 382

转载 数据库索引原理

原文地址 前段时间,公司一个新上线的网站出现页面响应速度缓慢的问题, 一位负责这个项目的但并不是搞技术的妹子找到我,让我想办法提升网站的访问速度 ,因为已经有很多用户来投诉了。我第一反应觉的是数据库上的问题,假装思索了一下,摆着一副深沉炫酷的模样说:“是不是数据库查询上出问题了, 给表加上索引吧”,然后妹子来了一句:“现在我们网站访问量太大,加索引有可能导致写入数据时性能下降,影响用户使用的”...

2020-04-13 12:01:54 91

转载 红黑树,B树和B+树

原文地址 ———————————— ———————————— ...

2020-04-13 11:28:38 79

转载 Synchronized优化原理

原文地址 用最通俗的语言解释Synchronized原理以及偏向锁,自旋锁,轻量级锁和重量级锁的区别(附面试中涉及到的锁的解释) 发表于 2019-10-25 分类于 Java 阅读次数: 在早之前的版本中,synchronized一直...

2020-04-12 19:50:16 105

转载 Java锁

原文地址 前言 Java提供了种类丰富的锁,每种锁因其特性的不同,在适当的场景下能够展现出非常高的效率。本文旨在对锁相关源码(本文中的源码来自JDK 8和Netty 3.10.6)、使用场景进行举例,为读者介绍主流锁的知识点,以及不同的锁的适用场景。 Java中往往是按照是否含有某一特性来定义锁,我们通过特性将锁进行分组归类,再使用对比的方式进行介绍,帮助大家更快捷的理解相关知识。下面给出本...

2020-04-12 19:46:52 108

转载 用AtomicStampedReference解决ABA问题

原文地址 用AtomicStampedReference解决ABA问题 用AtomicStampedReference解决ABA问题 2011年9月28日 Hesey | 沐剑 Comments 0 Comment 在运用CAS做Lock-Free操作中有一个经典的ABA问题: 线程1准备用CAS将变量的值由A替换为...

2020-04-10 13:45:12 112

转载 sharding-jdbc实现按年分库按月分表

原文地址 sharding-jdbc官方文档:https://shardingsphere.apache.org/document/current/cn/overview/ 本文采用当当的shardingjdbc实现按年分库,按月分表 最终数据库结果如下 image.png 例如有如下sql语句 s...

2020-04-10 10:17:16 6453 2

转载 关系型数据库设计范式

原文地址 2015-1-9 更新,回答了 @李德竹 的问题============2015-1-6 更新,补充了 BCNF 的解释============国内绝大多数院校用的王珊的《数据库系统概论》这本教材,某些方面并没有给出很详细很明确的解释,与实际应用联系不那么紧密,你有这样的疑问也是挺正常的。我教《数据库原理》这门课有几年了,有很多学生提出了和你一样的问题,试着给你解释一下吧。(基本...

2020-04-10 10:15:00 238

转载 公司内部搭建git服务器

原文地址 2016-03-29 开启阅读模式 git干货系列:(六)公司内部搭建git服务器 git 前言 因为gitHub上的项目是公开的,不适合公司内部项目放在上面,而私人的需要收费,这绝非是我们愿意的。所以找了个跟...

2020-04-09 14:22:04 3408

转载 MySQL全文索引

原文地址 最近在复习数据库索引部分,看到了 fulltext,也即全文索引,虽然全文索引在平时的业务中用到的不多,但是感觉它有点儿意思,所以花了点时间研究一下,特此记录。 引入 概念 通过数值比较、范围过滤等就可以完成绝大多数我们需要的查询,但是,如果希望通过关键字的匹配来进行查询过滤...

2020-04-09 10:25:33 134

转载 索引失效的情况

原文地址 1. 对于创建的多列索引(复合索引),不是使用的第一部分就不会使用索引        alter table student add index my_index(name, age)   // name左边的列, age 右边的列&nbsp...

2020-04-08 16:39:19 92

转载 MySQL聚集索引和非聚集索引

原文地址 声明:本文中提到的索引都是以B+ tree组织的 MySQL的Innodb存储引擎的索引分为聚集索引和非聚集索引两大类,理解聚集索引和非聚集索引可通过对比汉语字典的索引。汉语字典提供了两类检索汉字的方式,第一类是拼音检索(前提是知道该汉字读音),比如拼音为cheng的汉字排在拼音chang的汉字后面,根据拼音找到对应汉字的页码(因为按拼音排序,二分查找很快就能定位),这就是我们通常...

2020-04-08 16:09:49 90

转载 redis事务

原文地址 事务¶ Redis 通过 MULTI 、 DISCARD 、 EXEC 和 WATCH 四个命令来实现事务功能, 本章首先讨论使用 MULTI 、 DISCARD 和 EXEC 三个命令实现的一般事务, 然后再来讨论带有 WATCH 的事务的实现。 因为事务的安全性也非常重要, 所以本章最后通过常见的 ACID 性质对 Redis 事务的安全性进行了说明。 事务¶...

2020-04-07 16:46:03 87

转载 Redisson基本用法

原文地址 1.  Redisson Redisson是Redis官方推荐的Java版的Redis客户端。它提供的功能非常多,也非常强大,此处我们只用它的分布式锁功能。 https://github.com/redisson/redisson 1.1.  基本用法 1 <dependency>2 <groupId&gt...

2020-03-04 14:58:27 1095

转载 Redisson实现Redis分布式锁的原理

原文地址 一、写在前面   现在面试,一般都会聊聊分布式系统这块的东西。通常面试官都会从服务框架(Spring Cloud、Dubbo)聊起,一路聊到分布式事务、分布式锁、ZooKeeper等知识。   所以咱们这篇文章就来聊聊分布式锁这块知识,具体的来看看Redis分布式锁的实现原理。   说实话,如果在公司里落地生产环境用分布式锁的时候...

2020-03-01 17:43:47 292

转载 基于Springboot和LUA脚本的Redis分布式锁

原文地址 1.前言 Redis实现分布式锁,本身比较简单,就是Redis中一个简单的KEY。一般都利用setnx(set if not exists)指令可以非常简单的实现加锁,锁用完后,再调用del指令释放锁。要确保锁可用,一般需要解决几个问题: 不能出现死锁情况,一个获得锁的客户端宕机或者异常后,要保障其他客户端也能获得锁。 应用程序通过网络与Redis交互,为避免网络...

2020-03-01 16:38:56 1018 3

工资管理系统

工资管理系统,基于VC开发平台,用C语言编写

2014-02-22

空空如也

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

TA关注的人

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