- 博客(20)
- 资源 (13)
- 问答 (2)
- 收藏
- 关注
原创 并发下加锁不当,踩坑了!
本来是不打算写这个文章但是在一个群里面发现又有群友遇到和我一样的问题不知道咋办知识点1、并发(勉强)2、mysql MVCC原理3、spring 事务机制起因这个话题是由最近一次对接第三方商城发现的,该商城执行流程很奇特,流程如下:1、用户购买,三方平台调用本系统积分扣除接口,返回结果给三方。2、三方回调本系统商品兑换接口,是否兑换成功,否单独调用三方失败处理接口(有步骤3回调),并返回现有接口结果给三方(有步骤3回调)。3、三方回调用本系统商品兑换成功/失败接口(确认三方已经收到消.
2021-01-07 11:04:48 996
转载 分布式锁,redisson是如何解决死锁问题
使用redis做分布式锁时大家可能都知道使用setnx容易发生死锁情况,大多数都会推荐使用redission来实现,那么redission是如何解决死锁问题的呢?有关Redisson作为实现分布式锁,总的分3大模块来讲。 1. `1、Redisson实现分布式锁原理` 2. `2、Redisson实现分布式锁的源码解析` 3. `3、Redisson实现分布式锁的项目代码(可以用于实际项目中)`一、高效分布式锁当我们在设计分布式锁的时候,我们应该考虑分布式锁至少要满
2020-09-02 22:30:26 13570 4
转载 必须了解的mysql三大日志
日志是mysql数据库的重要组成部分,记录着数据库运行期间各种状态信息。mysql日志主要包括错误日志、查询日志、慢查询日志、事务日志、二进制日志几大类。作为开发,我们重点需要关注的是二进制日志(binlog)和事务日志(包括redo log和undo log),本文接下来会详细介绍这三种日志。binlogbinlog用于记录数据库执行的写入性操作(不包括查询)信息,以二进制的形式保存在磁盘中。binlog是mysql的逻辑日志,并且由Server层进行记录,使用任何存储引擎的mysql数据库都会记录b
2020-09-02 22:28:26 2595 1
原创 mysql中IS NULL、IS NOT NULL不能走索引?
mysql中IS NULL、IS NOT NULL不能走索引?不知道是啥原因也不知道啥时候, 江湖上流传着这么一个说法 mysql查询条件包含IS NULL、IS NOT NULL、!=、like %* 、like %*%,不能使用索引查询,只能使用全表扫描。刚入行时我也是这么认为的,还奉为真理!但是时间工作中你会发现还是走索引啊!下面我们来一一探究其中的奥秘。一、首先验证一下是会走索引的创建一个表,结构如下: create table u
2020-08-03 16:34:23 3493
原创 70%人答不全!线程池中的一个线程异常了会被怎么处理?
线程池中的一个线程异常了会被怎么处理?估计很多人会是以下三点答案(me too):1.抛异常出来并打印在控制台上2.其他线程任务不受影响3.异常线程会被回收但是这里我先提前说一下以上三点不全对,下面我们来具体分析一下。话不多说用代码来证明熟悉Executors线程池(本文线程池都是指Executors)都知道 有两种提交线程的方式execute和submit方式,下面将以这两种提交方...
2020-04-26 23:38:01 6256 7
原创 javaMail正确读取邮箱内容的方式
javaMail收邮件主要有两种协议,一种是pop3,一种是imap。这两种协议都可以用来收邮件,但是在其中的处理上是有区别的。pop3是不支持判断邮件是否为已读的,也就是说你不能直接从收件箱里面取到未读邮件,这需要自己进行判断,然而imap就提供了这样的功能,使用imap时可以很轻松的判断该邮件是否为已读或未读或其他。此外收件箱中的每一封邮件都对应着一个MessageNumber,所以可以通...
2020-02-13 20:56:55 6624 1
转载 数据库中COUNT(*)的执行原理
来源:https://url.cn/5zSuErM“SELECT COUNT() FROM t” 是个再常见不过的 SQL 需求了。在 MySQL 的使用规范中,我们一般使用事务引擎 InnoDB 作为(一般业务)表的存储引擎,在此前提下,COUNT()操作的时间复杂度为 O(N),其中 N 为表的行数。而 MyISAM 表中可以快速取到表的行数。这些实践经验的背后是怎样的机制,以及为什么需要...
2019-12-24 22:40:16 3937 1
原创 MongoDB 主从复制及 自动故障转移
1、MongoDB 主从复制MongoDB复制是将数据同步在多个服务器的过程。复制提供了数据的冗余备份,并在多个服务器上存储数据副本,提高了数据的可用性, 并可以保证数据的安全性。复制还允许您从硬件故障和服务中断中恢复数据。官方文档 https://docs.mongodb.com/manual/replication/1.1 什么是复制?保障数据的安全性数据高可用性 (24*7)灾难...
2019-12-21 19:27:36 1736
原创 springboot2.x基础-整合mongdb
本文是springboot结合SpringBoot starter-data-mongodb 进行增删改查 快速入门教程 一、准备请参考以下几篇文章手把手 linux 下 MongoDB 的安装手把手 linux 下 MongoDB 的使用(一)手把手 linux 下 MongoDB 的使用(二)二、添加依赖在POM 中添加如下依赖<dependency> &...
2019-12-21 19:07:50 879
原创 手把手 linux下 MongoDB 的使用方法(二)
1. 条件操作符条件操作符用于比较两个表达式并从MongoDB集合中获取数据。MongoDB中条件操作符有:(>) 大于 - $gt(<) 小于 - $lt(>=) 大于等于 - $gte(<= ) 小于等于 - $lte清空集合数据db.col.remove({})插入以下数据> db.col.insert({ title: '测试数...
2019-12-21 18:56:03 418
原创 手把手 linux下 MongoDB 的安装
一、了解MongoDBMongoDB 是由C 语言编写的,是一个基于分布式文件存储的开源数据库系统。在高负载的情况下,添加更多的节点,可以保证服务器性能。MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。二、优缺点详细解1.内置GridFS,支持大容量的存储:Gri...
2019-12-21 18:53:51 886
原创 手把手 linux下 MongoDB 的使用方法(一)
1、 创建数据库语法use DATABASE_NAME创建一个 user_data 的数据库,使用 db 命令查看> use user_dataswitched to db user_data> dbuser_data>查看所有数据库使用show dbs> show dbsadmin 0.000GBconfig 0.000GBlocal ...
2019-12-21 18:33:22 1130
转载 并发场景下MySQL常见问题及解决方案
一、背景对于数据库系统来说在多用户并发条件下提高并发性的同时又要保证数据的一致性一直是数据库系统追求的目标,既要满足大量并发访问的需求又必须保证在此条件下数据的安全,为了满足这一目标大多数数据库通过锁和事务机制来实现,MySQL数据库也不例外。尽管如此我们仍然会在业务开发过程中遇到各种各样的疑难问题,本文将以案例的方式演示常见的并发问题并分析解决思路。二、表锁导致的慢查询的问题首先我们看一个简...
2019-12-18 22:08:25 1310
原创 springboot2.x基础-整合redis
在SpringBoot中一般使用RedisTemplate提供的方法来操作Redis。那么使用SpringBoot整合Redis需要那些步骤呢。准备环境安装(任选)Centos7 搭建redis-5单机服务CentOs7 搭建 Redis-5 Cluster 集群服务添加依赖在项目中添加 spring-boot-starter-data-redis 依赖<dependency&...
2019-12-17 23:57:06 484
转载 100个服务,Eureka作为微服务注册中心,一天要被请求多少次?
微服务架构体系中,注册中心是一个至关重要的组件,所有的服务注册与服务发现,都是依赖注册中心。Eureka作为微服务注册中心的核心原理今天我们这就一起看看,SpringCloud微服务在落地公司生产环境部署时,我们估计心里会有这样的疑惑:1、各个服务找Eureka Server拉取注册表的时候,是什么样的频率?2、一个有几百个服务,部署了上千台机器的大型分布式系统,会对Eureka Serv...
2019-12-16 23:57:38 713
原创 分布式事物
1、什么是分布式事务分布式事务就是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。以上是百度百科的解释,简单的说,就是一次大的操作由不同的小操作组成,这些小的操作分布在不同的服务器上,且属于不同的应用,分布式事务需要保证这些小操作要么全部成功,要么全部失败。本质上来说,分布式事务就是为了保证不同数据库的数据一致性。2、分布式事务的产生的原因...
2019-12-13 23:33:13 221
原创 springboot整合mybatisplus异常Invalid bound statement (not found)
近在搭建springboot项目在整合mybatisplus时抛出的异常是BindingException:Invalid bound statement (not found) ** 在此记录一下希望对大家有所帮助。异常如下:排除此类错误我们要从以下几个地方来排查:1、jar冲突 <dependency> <group...
2019-12-12 16:44:30 15070 4
转载 Redis+Spring Session 实现单点登录
在最初,我们的User模块是这样的,用户登录信息存入Tomcat容器自带的Session中,这也是通用的做法,也很简单,适合单服务器部署:v1.0 版本/** *用户登录 */ @RequestMapping(value = "login.do",method = RequestMethod.GET) @ResponseBody public ...
2018-08-22 15:33:56 615 1
转载 集群模式下的定时任务与Redis分布式锁
业务场景:在电商项目中,往往会有这样的一个功能设计,当用户下单后一段时间没有付款,系统就会在超时后关闭该订单。通常我们会做一个定时任务每分钟来检查前半小时的订单,将没有付款的订单列表查询出来,然后对订单中的商品进行库存的恢复,然后将该订单设置为无效。比如我们这里使用Spring Schedule的方式做一个定时任务:注:打开Spring Schedule 的自动注解扫描,在Spring...
2018-08-22 15:30:13 615
原创 linux单机部署多tomcat+nginx实现负载均衡
一、nginx安装1、安装基本编译软件 yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel yum install pcre2、下载安装nginx 2.1下载 可以通过 wget http://nginx.org/download/ngi...
2018-08-01 12:17:55 892
中国电信IOT开发套件软件模拟终端
2018-11-28
spring+quartz实现定时任务动态管理
2018-06-09
springboot+mybatis+dubbo 分布式框架搭建及日志配置
2018-01-02
shiro限制登录人数报There is no session with id
2018-03-19
shiro整合ehcache总是报错
2018-03-18
TA创建的收藏夹 TA关注的收藏夹
TA关注的人