自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

江南一点雨的专栏

专注Java一百年

  • 博客(876)
  • 资源 (55)
  • 收藏
  • 关注

原创 手把手带领小伙伴们写一个分布式事务案例

这个主要和大家讲了如何通过自定义注解实现多数据源的切换。有小伙伴看完后就提出来问题了,既然这样,那事务怎么办呢?如果在一个 Service 方法中切换了数据源,那么传统的事务解决方案必然失效!特别是在微服务中,这种一个服务中调用多个数据源的事情还很常见。怎么办?对于这个问题,我们可以按照分布式事务的思路去解决。松哥去年其实也写过分布式事务的文章,但是比较粗糙,没有带领小伙伴们通过手写代码去体验分布式事务,这次因为要录制 TienChin 项目视频,而且刚好小伙伴们也提出来这个问题了,所以就认认真真写几篇文章

2022-06-02 14:09:04 1260

原创 一文搞明白分布式事务解决方案,真的 so easy

那么今天,我就再来一篇文章,和大家捋一捋这个话题。以下的内容主要围绕阿里的 seata 来和大家解释。首先,来和大家解释一个名词,大家在看分布式事务相关资料的时候,经常会看到一个名词:反向补偿。啥是反向补偿呢?我举一个例子:假设我们现在有三个微服务分别是 A、B、C,现在在 A 服务中分别调用 B 和 C 服务,为了确保 B 和 C 同时成功或者同时失败,我们需要使用到分布式事务。但是按照我们之前对本地事务的理解,B 和 C 中的本地事务,当 B 服务中的事务执行完毕并且提交之后,现在 C 服务中的事务出现

2022-06-02 09:29:04 1501

原创 Spring Security 中的权限注解很神奇吗?

最近有个小伙伴在微信群里问 Spring Security 权限注解的问题:很多时候事情就是这么巧,松哥最近在做的 tienchin 也是基于注解来处理权限问题的,所以既然大家有这个问题,咱们就一块来聊聊这个话题。当然一些基础的知识我就不讲了,对于 Spring Security 基本用法尚不熟悉的小伙伴,可在公众号后台回复 ss,有原创的系列教程。1. 具体用法先来看看 Spring Security 权限注解的具体用法,如下:@PreAuthorize("@ss.hasPermi('tien

2022-05-23 10:19:15 1597 4

原创 Spring Boot 整合流程引擎 Flowable,so easy

为啥想写 flowable 呢?原因很简单,因为最近在录的 tienchin 项目视频会用到,先写一篇文章和大家打打预防针,后面视频再细讲。流程引擎,也算是一个比较常见的工具了,我们在日常的很多开发中都会用到,当然用的最多的就是 OA 系统了,但是在一些非 OA 系统中,我们也会涉及到,比如一个 CRM 中,可能会有合同管理的需求,合同的审批,也是需要流程引擎的。所以今天我们来简单聊聊流程引擎,顺便写一个简单的例子,小伙伴们一起来感受下流程引擎到底是个啥。1. 流程引擎介绍Flowable 是一个使

2022-05-18 08:42:51 11731 9

原创 Redis 做接口限流,一个注解的事

Redis 除了做缓存,还能干很多很多事情:分布式锁、限流、处理请求接口幂等性。。。太多太多了~今天想和小伙伴们聊聊用 Redis 处理接口限流,这也是最近的 TienChin 项目涉及到这个知识点了,我就拎出来和大家聊聊这个话题,后面视频也会讲。1. 准备工作首先我们创建一个 Spring Boot 工程,引入 Web 和 Redis 依赖,同时考虑到接口限流一般是通过注解来标记,而注解是通过 AOP 来解析的,所以我们还需要加上 AOP 的依赖,最终的依赖如下:<dependency&gt

2022-05-17 20:42:38 1394 2

原创 吹爆这个Java 结构化数据处理开源库 SPL

现代Java应用架构越来越强调数据存储和处理分离,以获得更好的可维护性、可扩展性以及可移植性,比如火热的微服务就是一种典型。这种架构通常要求业务逻辑要在Java程序中实现,而不是像传统应用架构中放在数据库中。应用中的业务逻辑大都会涉及结构化数据处理。数据库(SQL)中对这类任务有较丰富的支持,可以相对简易地实现业务逻辑。但Java却一直缺乏这类基础支持,导致用Java实现业务逻辑非常繁琐低效。结果,虽然架构上有各种优势,但开发效率却反而大幅下降了。如果我们在Java中也提供有一套完整的结构化数据处理和计

2022-05-16 11:48:58 2327 3

原创 手把手教你玩多数据源动态切换

为了提高应用的可靠性,多数据源现在也很常见,数据库可以搭建双 M 结构,这个松哥之前也发文和大家分享过如何搭建双 M 结构的主从备份?,那么 Java 代码里该如何操作多数据源呢?我在 19 年的时候写过几篇文章教大家配置 JdbcTemplate、MyBatis 以及 JPA 中的多数据源(公众号江南一点雨后台回复 666 有相关的资料),不过那几篇文章的整体思路都是弄多个 Dao 层实例,然后手动选择用哪个实例,这样总感觉不太方便。MyBatis-Plus 也提供了相应的工具,感兴趣的小伙伴可以自行

2022-05-16 08:01:11 4144 3

原创 一个简单易用的文件上传方案

现在 OSS 服务算是一个基础服务了,很多云服务厂商都有提供这样的服务,价格也不贵,松哥自己的 www.javaboy.org 用的就是类似的服务。不过对于中小公司来说,除了购买 OSS 服务之外,也可以自己搭建专业的文件服务器,自己搭建专门的文件服务器的话,曾经比较专业的做法是 FastDFS,松哥之前也专门为之录过视频发在 B 站上,感兴趣的小伙伴可以自行查看。不过 FastDFS 搭建比较麻烦,非常容易出错,所以对各位小伙伴来说多多少少有一点门槛。松哥在之前的文章录制的一些项目视频中,如果涉及到文

2022-05-09 19:59:17 1362

原创 不能再简单的意向锁

InnoDB 存储引擎支持多粒度锁(multiple granularity locking),也就是允许行锁和表锁共存。当允许行锁和表锁共存的时候,可能会存在下面这样一个问题:例如我执行如下 SQL:这段 SQL 执行完成后,给 id 为 1 的记录加了排他锁。此时,在另外一个会话中,我如果想给这张表再来一个表级共享锁,如下:lock table user read;此时就会有一个问题,共享锁和排他锁是互斥的,要给表上共享锁,就得去检查一下表中的每一条记录都不存在排他锁,如果表中的数据量比较

2022-04-21 18:18:56 1215

原创 一个简单易用的文件上传方案

现在 OSS 服务算是一个基础服务了,很多云服务厂商都有提供这样的服务,价格也不贵,松哥自己的 www.javaboy.org 用的就是类似的服务。不过对于中小公司来说,除了购买 OSS 服务之外,也可以自己搭建专业的文件服务器,自己搭建专门的文件服务器的话,曾经比较专业的做法是 FastDFS,松哥之前也专门为之录过视频发在 B 站上,感兴趣的小伙伴可以自行查看。不过 FastDFS 搭建比较麻烦,非常容易出错,所以对各位小伙伴来说多多少少有一点门槛。松哥在之前的文章录制的一些项目视频中,如果涉及到文

2022-04-21 16:30:41 3633 3

原创 MySQL 总是差八个小时,如何破?

今天来聊一个简单的话题,这是一个小伙伴在微信上问我的,对于初学者我非常能理解这类问题带来的困扰,各种尝试,各种搜索,别人说的头头是道,但是就是解决不了自己的问题,今天我简单从两个方面来和大家聊聊这个问题,如果小伙伴们有其他的解决思路,也可以留言一起分享。这个问题我们可以从两方面来分析:MySQL 本身的问题。Java 代码的问题。1. MySQL 本身问题MySQL 本身问题,这个其实很好验证,不就是时间么,我们执行如下 SQL 看看 MySQL 上的时间跟我的电脑时间是否是一致的:sele

2022-04-11 20:37:39 22350 7

原创 如何搭建双 M 结构的主从备份?

关于 MySQL 主从搭建,松哥之前写过好多篇文章了,还录过一个视频。不过之前的都是一主一从的结构,但是小伙伴们知道,我们在项目中,更常见一种结构是双 M 结构,即两个 MySQL 实例,每个 MySQL 实例互为主备,这样在主节点突然断电或者不可用的时候,slave 节点可以很快切换为 master,架构图如下:在这种结构中,两个 MySQL 实例的地位是平等的,互为对方的主备,我们判断谁是主机谁是从机的方式主要是看 readonly,谁是只读的,那谁就是从机,所以这种情况下,主从切换也很方便,只要修

2022-04-08 18:15:19 2290

原创 MySQL 怎么保证备份数据的一致性?

为了数据安全,数据库需要定期备份,这个大家都懂,然而数据库备份的时候,最怕写操作,因为这个最容易导致数据的不一致,松哥举一个简单的例子大家来看下:假设在数据库备份期间,有用户下单了,那么可能会出现如下问题:库存表扣库存。备份库存表。备份订单表数据。订单表添加订单。用户表扣除账户余额。备份用户表。如果按照上面这样的逻辑执行,备份文件中的订单表就少了一条记录。将来如果使用这个备份文件恢复数据的话,就少了一条记录,造成数据不一致。为了解决这个问题,MySQL 中提供了很多方案,我们来逐一进行

2022-04-08 12:47:48 7608 4

原创 MySQL 多表联合查询有何讲究?

今天我们来聊聊微信中的多表联合查询,应该是小表驱动大表还是大表驱动小表?1. in VS exists在正式分析之前,我们先来看两个关键字 in 和 exists。假设我现在有两张表:员工表和部门表,每个员工都有一个部门,员工表中保存着部门的 id,并且该字段是索引;部门表中有部门的 id、name 等属性,其中 id 是主键,name 是唯一索引。这里我就直接使用 vhr 中的表来做试验,就不单独给大家数据库脚本了,小伙伴们可以查看 vhr 项目(https://github.com/lenve

2022-04-07 22:08:50 2461

原创 如何保证缓存和数据库的一致性?

文章目录1. 问题分析2. Cache-Aside2.1 读缓存2.2 写缓存2.3 延迟双删2.4 如何确保原子性3. Read-Through/Write-Through3.1 Read-Through3.2 Write-Through4. Write Behind很多小伙伴在面试的时候,应该都遇到过类似的问题,如何确保缓存和数据库的一致性?如果你对这个问题有过研究,应该可以发现这个问题其实很好回答,如果第一次听到或者第一次遇到这个问题,估计会有点懵,今天我们来聊聊这个话题。1. 问题分析首先我

2022-03-29 18:30:09 2516 2

原创 MySQL 为什么需要两阶段提交?

文章目录1. 什么是两阶段提交1.1 binlog 与 redologbinlogredo log1.2 两阶段提交2. 为什么需要两阶段提交3. 小结为什么要两阶段提交?一阶段提交不行吗?小伙伴们知道,MySQL 中的事务是两阶段提交,我们见到的很多分布式事务也都是两阶段提交的,例如 Seata,那么为什么要两阶段提交呢?一次直接提交了不行吗?今天我们来聊聊这个话题。关于分布式事务 seata,不懂的小伙伴可以参考松哥之前的文章,传送门:五分钟带你体验一把分布式事务!so easy!看了那么多

2022-03-29 12:05:58 3337 2

原创 xxl-job Vs ElasticJob,谁牛?

文章目录1. xxl-job2. 运行 xxl-job3. 开发定时任务3.1 项目创建及配置3.2 定时任务开发方式3.2.1 BEAN 模式(类形式)3.2.2 BEAN模式(方法形式)3.2.3 GLUE 模式(Java)4. 小结前两天写了一篇文章介绍了一下 ElasticJob,有不少小伙伴强烈建议讲讲 xxl-job,其实 ElasticJob 本来就是一个引子,松哥本来就是想和大家分享 xxl-job 的(手动狗头。1. xxl-job松哥也在微信群里和小伙伴们讨论过各自到底用的是 xx

2022-03-28 23:01:12 4103 2

原创 MySQL 表分区?涨知识了

文章目录1. 什么是表分区2. 分区的两种方式2.1 水平切分2.2 垂直切分3. 为什么需要表分区4. 分区实践4.1 RANGE 分区4.2 LIST 分区4.3 HASH 分区4.4 KEY 分区4.5 COLUMNS 分区5. 常见分区命令6. 小结松哥之前写过文章跟大家介绍过用 MyCat 实现 MySQL 的分库分表,不知道有没有小伙伴研究过,MySQL 其实也自带了分区功能,我们可以创建一个带有分区的表,而且不需要借助任何外部工具,今天我们就一起来看看。1. 什么是表分区小伙伴们知道,M

2022-03-27 22:10:07 8038 4

原创 主键索引就是聚集索引?MySQL 索引类型大梳理

文章目录1. 按照功能划分2. 按照物理实现划分2.1 聚集索引2.2 非聚集索引3. 小结之前松哥在前面的文章中介绍 MySQL 的索引时,有小伙伴表示被概念搞晕了,主键索引、非主键索引、聚簇索引、非聚簇索引、二级索引、辅助索引等等,今天咱们就来捋一捋这些概念。1. 按照功能划分按照功能来划分,索引主要有四种:普通索引唯一性索引主键索引全文索引普通索引就是最最基础的索引,这种索引没有任何的约束作用,它存在的主要意义就是提高查询效率。普通索引创建方式如下:CREATE TABLE `

2022-03-24 12:04:36 6797 2

原创 S 锁与 X 锁,当前读与快照读

MySQL 中的锁还是蛮多的,在之前的文章中,松哥和大家介绍过 MySQL 中的 MDL 锁(为什么执行 alter 更新表要慎重?),今天我们再来看看 MySQL 中比较重要的两个锁:S 锁和 X 锁。1. S 锁S 锁,英文为 Shared Lock,中文译作共享锁,有时候我们也称之为读锁,即 Read Lock。S 锁之间是共享的,或者说是互不阻塞的。当事务读取一条记录时,需要先获取该记录的 S 锁。举个例子:事务 T1 对记录 R1 加上了 S 锁,那么事务 T1 可以读取 R1 这一行记

2022-03-21 22:10:45 2535 1

原创 MySQL 主从复制数据不一致,怎么办?

文章目录1. 准备工作1.1 主机配置1.2 从机配置2. 数据不一致问题3. 原因分析4. 问题解决5. 小结今天的文章来晚了,主要是我一觉起来变黄码了,关键是我还不知道,早上 8.20 到了公司楼下,保安要看健康码,当我自信满满的打开粤省事却傻眼了,折腾一早上,绿码总算回来了,真是生活处处有惊喜。。。书接上回,闲话不表。今天来说说 MySQL 主从复制数据不一致的问题,通过几个具体的案例,来向小伙伴们展示 binlog 不同 format 之间的区别。1. 准备工作以下配置基于 Docker

2022-03-17 20:18:21 4823 1

原创 MySQL 的 binlog 的三种格式这么好玩

MySQL 中的日志比较重要的有 binlog(归档日志)、redo log(重做日志)以及 undo log,那么跟我们本文相关的主要是 binlog,另外两个日志松哥将来有空了再和大家详细介绍。1. binlogbinlog 我们中文一般称作归档日志,如果大家看过松哥之前发的 MySQL 主从搭建,应该对这个日志有印象,当我们搭建 MySQL 主从的时候就离不开 binlog(传送门:MySQL8 主从复制踩坑指南)。binlog 是 MySQL Server 层的日志,而不是存储引擎自带的日志,

2022-03-16 13:59:49 1101

原创 MySQL 为什么需要 redo log?

文章目录1. 谁的 redo log2. buffer pool3. change buffer4. redo log 的诞生4.1 redo log buffer4.2 redo log 落盘今天想和大家聊一聊 MySQL 中的 redo log,其实最早我是想聊两阶段提交的,后来想想可能有小伙伴还不了解 binlog,所以就先整了一篇 binlog:手把手教你玩 MySQL 删库不跑路,直接把 MySQL 的 binlog 玩溜!MySQL删库不跑路(视频版)binlog 大家懂了之后,接下

2022-03-15 16:22:43 2783

原创 Spring Boot 整合定时任务,可以动态编辑的定时任务

定时任务,松哥之前写过多篇文章和大家介绍,上次还自己 DIY 了一个可以动态编辑的定时任务,还录了一个配套视频:相关的资料链接戳这里:Spring 定时任务玩出花!手把手教你定制可编辑的定时任务!开发可配置的定时任务~第二弹Vue非典型用法,一个简单的管理页面不过我们当时自己写的这个不支持分布式环境,想要支持倒也不是啥难事,弄一个 zookeeper 或者 redis 作为公共的信息中心,里边记录了定时任务的各种运行情况,有了这个就能支持分布式环境了。今天咱们不自己写了,我们来看一个现成

2022-03-09 20:13:03 4498 5

原创 一个不留神,索引就创建重复了

相信没有人会故意创建重复的冗余的索引,很多重复和冗余的索引都是在不经意间创建的,今天松哥来和大家捋一捋这个问题。因为我们日常在使用 MySQL 的过程中,基本上都是使用 InnoDB 引擎,所以接下来的讨论主要是基于 InnoDB 引擎的 B+Tree 索引来讨论,其他的哈希索引全文索引等不在讨论范围种。1. 与联合索引重复在前面的文章中,松哥通过好几篇文章和大家分享了联合索引,包括它涉及到的覆盖索引、前缀匹配等等,联合索引好用,但是对联合索引理解不到位的话,可能会创建出如下的重复索引:CREATE

2022-03-08 15:55:30 1666 1

原创 一个没有 Postman 好用的工具,不试一下?

忘了 postman 是被谁种草的,很长一段时间内 postman 都是我做接口测试的首选工具,之前也有小伙伴跟我安利过 IDEA 中的 RestfulToolkit 插件,但是一直没机会体验,最近抽空玩了一把,感觉在某些场景下还蛮不错的(不需要认证的场景下),和小伙伴们分享下。1. RestfulToolkitRestfulToolkit 是一套 RESTful 服务开发辅助工具集,它主要提供了如下功能:根据 URL 直接跳转到对应的方法定义 ( Ctrl \ or Ctrl Alt N );提

2022-03-02 15:59:16 1844

原创 查询中,有没有可能多个索引一起用呢?

其实我们之前所讲的回表,就是两个索引树同时使用,先在二级索引树中搜索到对应的主键值,然后在再去主键索引树中查询完整的记录。但是我今天的问题是,两个不同的二级索引树,会同时生效吗?理论上来说,应该是可以同时生效的,不然这个 MySQL 也太笨了。不过根据松哥日常开发经验,这种事情最好能够避免,如果发生了同时搜索两棵索引树的事情,大概是你的索引设计有问题,此时就要去检查一下索引的设计是否合理。加粗的是实践经验,但是对于两个索引同时生效的知识点,我们还是要懂,一起来看下。1. 索引合并例如我有如下一张表结

2022-03-01 19:53:27 3445 1

原创 IDEA 中如何完成 Git 版本回退?

文章目录1. 基于命令行1.1 工作区的代码想撤销1.2 add 到暂存区的代码想撤销1.3 提交到本地仓库的代码想撤销1.4 远程仓库撤销2. 基于 IDEA2.1 未提交就撤销2.2 commit 了想撤销2.2.1 Undo Commit2.2.2 Revert Commit2.3 push 了想撤销3. 小结上周的文章发了后,有小伙伴问如何在 IDEA 中进行 Git 的版本回退?其实这个松哥之前写过文章,但是时间久远了,所以今天再和小伙伴们重新捋一捋这个话题,顺便也来聊聊如何在 IDEA 中进

2022-03-01 10:07:40 13255 5

原创 可前进可后退,IDEA 中这个功能神了

当我写这篇文章的时候,想起来 N 年前一件往事,我一不小心删除了一个刚刚写好的页面,又气又恼,后来趁着还有印象默默的花了半个多小时又重写了一遍,那个时候要是知道 IDEA 中这个功能该有多好呀!今天跟小伙伴们介绍一下 IDEA 中的 Local History 功能。1. Local History其实 IDEA 中这些小功能可能大家也都知道,但是如果没留意可能就辜负了开发 IDEA 的同行们的一篇苦心了。IDEA 中的 Local History 功能可以帮助我们不断跟踪对项目文件所作的更改,并且

2022-02-28 12:06:00 5488 9

原创 IDEA 中玩转 Git

Git 有很多客户端工具,不过感觉还是命令行操作最好用,方便又快捷,不过命令行操作需要小伙伴们对 Git 命令比较熟练,这可能对有的人来说会有一些难度,所以,客户端工具有时候也不能抛弃,如果非要推荐一个 Git 客户端工具,我觉得还是 IDEA 中的 Git 插件吧。其他的 Git 客户端工具松哥之前也有体验过一些,不过感觉还是 IDEA 中的用起来更加省事。今天这篇文章算是我第二次教大家在开发工具中使用 Git 了,刚毕业的时候,松哥写过一篇文章,教大家在 Eclipse 中使用 Git,那时候在 Ec

2022-02-22 20:55:02 4793 3

原创 Git 最|佳实践,什么才是最|佳工作流?

很久以前我出过一个 Git 教程,小伙伴们要是还不懂 Git 的用法,可以在公众号底部菜单中,有一个教程合集,里边有 Git 教程的索引。今天我们不聊基本用法,聊一聊 Git 到底应该怎么用?我们知道相比于 Svn,Git 最牛的地方在于它的分支,分支很灵活,但是如果缺乏一个使用套路,又会用的乱糟糟的,特别是在团队协作中,该怎么玩 Git 分支?咱们也不发明什么轮子,也不设计什么全新流程,本文主要是和大家介绍三种常见的工作流:Git Flow、GitHub Flow 以及 GitLab Flow。介绍完

2022-02-21 17:41:10 2102

原创 Jpa 中怎么玩一对多?

Jpa 中的一对一、一对多没搞明白的话,总会觉得有点绕,今天咱们来简单聊聊这个话题。1. 一对一比如说一个学校有一个地址,一个地址只有一个学校。那么我们可以按照如下方式来设计类:@Data@Entity@Table(name = "t_address")public class Address { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer aid; privat

2022-02-18 15:41:00 1696 1

原创 Spring Boot 发送邮件,端口号大有玄机

文章目录1. 什么是 SMTP2. SMTP Port2.1 252.2 5872.3 4652.4 小结3. 号外3.1 邮件基础3.2 准备工作3.3 项目创建3.3.1 发送简单邮件3.3.2 发送带附件的邮件3.3.3 发送带图片资源的邮件3.3.4 使用 Freemarker 作邮件模板3.3.5 使用 Thymeleaf 作邮件模板Spring Boot 发送邮件,松哥之前专门写过文章,这里就不啰嗦了。还不懂 Spring Boot 如何发送邮件的小伙伴,翻到本文后半部分,有介绍。今天想和大

2022-02-16 11:45:48 2559

原创 Spring Boot 如何监控 SQL 运行情况?

今天想和大家聊一聊 Druid 中的监控功能。Druid 数据库连接池相信很多小伙伴都用过,个人感觉 Druid 是阿里比较成功的开源项目了,不像 Fastjson 那么多槽点,Druid 各方面一直都比较出色,功能齐全,使用也方便,基本的用法就不说了,今天我们来看看 Druid 中的监控功能。1. 准备工作首先我们来创建一个 Spring Boot 工程,引入 MyBatis 等,如下:选一下 MyBatis 和 MySQL 驱动,做一个简单的测试案例。先来连接一下数据库:spring.da

2022-02-15 11:58:36 3242 3

原创 前缀索引,中看也中用

文章目录1.什么是前缀索引2.什么是索引选择性3.创建前缀索引3.1 一个小案例3.2 前缀索引3.3 一个问题4.小结最近几篇文章,都是在和大家聊索引的问题,今天我们来看看前缀索引。1.什么是前缀索引所谓前缀索引说白了就是对文本的前几个字符建立索引(具体是几个字符在建立索引时指定),这样建立起来的索引更小,所以查询更快。这有点类似于 Oracle 中对字段使用 Left 函数来建立函数索引,只不过 MySQL 的这个前缀索引在查询时是内部自动完成匹配的,并不需要使用 Left 函数。那么为什么不对

2022-02-11 12:03:23 2059

原创 放弃深漂,回长沙

周六,松哥和几个小伙伴一起吃了个饭,给一位即将离开深圳回长沙的小伙伴践行。最近这两年,身边有好几位小伙伴回老家发展了,有去武汉的,有去大连的,有去长沙的,也有回西安的,还有一个 2021 回西安干了一年 2022 又要来深圳的,哎这就是人生百态,我在深圳搬砖,对于回老家发展的小伙伴,我是打心底羡慕,但你要问我回不回,我不回。我要是回去了,99% 可能会后悔,故乡,可望不可及可能才是最美的。深圳这座城市,哪哪都好:空气好、充满活力、不排外,就是房价有点高,高的离谱。深漂的小伙伴吃不完的猪脚饭,交不完的房租,

2022-01-27 11:53:54 3898 14

原创 听说唯一性索引搜索快?

文章目录1. 准备工作2. 查询2.1 普通索引查询2.2 唯一性索引查询2.3 PK3 插入/修改3.1 准备知识3.1.1 buffer pool3.1.2 change buffer3.2 PK4. 小结我们建索引的时候,有全文索引、主键索引、唯一性索引、普通索引等,前面两个好理解好区分,大家都知道啥时候用,后面两个该如何区分呢?唯一性索引和普通索引该如何选择呢?今天我们就来聊聊这个话题。1. 准备工作假设我有如下表:CREATE TABLE `user` ( `id` int(11) u

2022-01-25 14:36:56 2794 1

原创 索引下推,yyds?

索引的问题,已经跟大家聊了两篇文章了~今天再聊一个索引下推问题,也是非常有意思!索引下推是从 MySQL5.6 开始引入一个特性,英文是 index condition pushdown,一般简称为 ICP,索引下推通过减少回表的次数,来提高数据库的查询效率。有的小伙伴可能也看过一些关于 ICP 的概念,但是我觉得,概念比较简单,说一下很容易懂,但是在实际应用中,各种各样的情况非常多。所以接下来的内容我想通过几个具体的查询分析来和大家分享 ICP 到底是怎么一回事。1. 索引下推为了给大家演示索引下

2022-01-24 11:53:57 6534 2

原创 其实 MySQL 中的 like 关键字也能用索引

上篇文章中,松哥和大家分享了索引的两个使用规则:索引上不要使用函数运算。使用覆盖索引避免回表。当然,凡事有个度,用哪一种策略也要结合具体的项目来定,不能为了 SQL 优化而抛弃了业务。今天,松哥在前文的基础上,再来和大家分享一条索引规则,一起来学习下。我们常说,MySQL 中的 like 要慎用,因为会全表扫描,这是一件可怕的事!不过呢,也看情况,有的 like 其实也能用索引:有的时候 like 用索引效率很高,有的时候 like 虽然用了索引效率却低的可怕。我们一起来分析下。1. 最左

2022-01-19 16:16:01 5883

原创 是时候检查一下使用索引的姿势是否正确了

索引,可以有效提高我们的数据库搜索效率,各种数据库优化八股文里都有相关的知识点可背,不过单纯的被条目其实很容易忘记。所以松哥想通过几篇文章,和大家仔细聊一聊索引的正确使用姿势,结合一些具体的例子来帮助大家理解索引优化,这是一个小小的系列,可能会有几篇文章,今天先来第一篇。1. 索引列独立当我们将带有索引的列作为搜索的条件的时候,需要确保索引不在表达式中,索引中也不包含各种运算。我举个简单例子,假设我有如下一张表:一个 user 表,里边就四个字段,每个字段上都建了索引,现在有三条测试数据:我

2022-01-17 14:52:38 2170 1

Android开发中线程池的使用Demo

Android开发中线程池的使用Demo,详情见博客http://blog.csdn.net/u012702547/article/details/52259529

2016-08-20

Dagger2中Scope使用Demo

Dagger2中@Scope注解的使用,详见博客http://blog.csdn.net/u012702547/article/details/52213706

2016-08-15

Dagger2Demo

Dagger2使用Demo,详情见博客http://blog.csdn.net/u012702547/article/details/52200927

2016-08-14

ButterKnife使用Demo

Android注解框架ButterKnife使用Demo,详情见博客http://blog.csdn.net/u012702547/article/details/52194594

2016-08-12

Android模拟登录知乎

Android模拟登录知乎,Cookie持久化,具体请看我的博客:http://blog.csdn.net/u012702547/article/details/52156315

2016-08-09

DataBindingDemo3

Android开发中的数据绑定DataBindingDemo3,具体请看我的博客http://blog.csdn.net/u012702547/article/details/52077515

2016-07-31

DataBindingDemo2

Android开发中的数据绑定DataBindingDemo,具体请看我的博客http://blog.csdn.net/u012702547/article/details/52077515

2016-07-31

DataBindingDemo

Android开发中的数据绑定DataBindingDemo,具体请看我的博客http://blog.csdn.net/u012702547/article/details/52077515

2016-07-31

zxing的aar包

详情见博客http://blog.csdn.net/u012702547/article/details/51501350

2016-05-26

Android在线视频播放器Demo

Android在线视频播放器Demo,详见http://blog.csdn.net/u012702547/article/details/51317709

2016-05-04

Android自定义View值ProgressBar

Android自定义View值ProgressBar,详情请看http://blog.csdn.net/u012702547/article/details/51290266

2016-05-01

android自定义View之NotePad出鞘记

android自定义View之NotePad出鞘记,自定义NotePad,android自定义笔记本

2016-04-25

android自定义View之仿通讯录侧边栏滑动,实现A-Z字母检索

android自定义View之仿通讯录侧边栏滑动,实现A-Z字母检索

2016-04-24

Android中Dialog使用详解

android中AlertDialog使用详解,详细请看我的个人博客http://blog.csdn.net/u012702547/article/details/50676606

2016-02-16

ImageView的scaleType属性练习

ImageView的scaleType属性练习,具体请查看我的博客http://blog.csdn.net/u012702547/article/details/50586946

2016-01-26

snackbar使用Demo

snackbar使用demo,详情见博客http://blog.csdn.net/u012702547/article/details/50284355

2015-12-13

导航栏Demo

TabLayout使用Demo,详情见博客http://blog.csdn.net/u012702547/article/details/50273523

2015-12-12

android文件存储源码及笔记

android文件存储工具类及相关笔记,详情请查看博客http://blog.csdn.net/u012702547/article/details/50269639

2015-12-12

自定义ContentProvider

自定义ContentProvider的一个Demo,详情查看我的博客http://blog.csdn.net/u012702547/article/details/50193087

2015-12-06

GitForWindows2.6.3

由于众所周知的原因,下载该文件网速非常差,这里下载好了,大家可以直接下载。详情请见http://blog.csdn.net/u012702547/article/details/50129773

2015-12-01

flowable实战教程.pdf

251页原创flowable实战教程

2022-12-14

Spring入门.pdf

江南一点雨原创 Spring 入门教程,更多 Spring教程请关注我的 CSDN 博客:https://blog.csdn.net/u012702547

2020-02-17

SpringMVC 入门教程.pdf

江南一点雨原创 SpringMVC 入门教程,更多 SpringMVC教程请关注我的 CSDN 博客:https://blog.csdn.net/u012702547

2020-02-17

MyBatis入门教程

江南一点雨原创 MyBatis 入门教程,更多 MyBatis教程请关注我的 CSDN 博客:https://blog.csdn.net/u012702547

2020-02-17

Spring Boot2 教程.pdf.zip

江南一点雨原创 Spring Boot2 教程合集。更多Spring Boot2资料可以关注我的 CSDN博客https://blog.csdn.net/u012702547

2020-02-17

GitHub入门与实践

GitHub入门与实践,GitHub入门与实践 是本人花钱买的电子版。是一个带你入门Github的优秀书籍。此PDF带完整书签。此次上传 纯属赚点csdn积分。

2017-10-16

websocket使用案例

websocket使用入门案例,详情请见博客http://blog.csdn.net/u012702547/article/details/77655826

2017-08-28

dubbo入门案例-参考官方文档

dubbo入门案例,详情见博客http://blog.csdn.net/u012702547/article/details/77601538

2017-08-26

dubbo入门案例参考

dubbo的一个入门案例,主要参考了官方文档,详情见博客http://blog.csdn.net/u012702547/article/details/77601538

2017-08-26

Ajax上传文件Demo

Ajax上传文件Demo以及Ajax上传文件前的预览效果实现。详情见博客http://blog.csdn.net/u012702547/article/details/77585111

2017-08-25

SpringSession+Redis实现Session共享案例

SpringSession+Redis实现Session共享案例,详情请看http://blog.csdn.net/u012702547/article/details/72991283

2017-06-10

省市县三级联动数据库

省市县三级联动数据库,文件是导出的SQL语句,下载后直接执行即可。

2017-04-27

Java单元测试相关的两个jar包

Java单元测试相关的两个jar包

2017-01-13

Binder详解Demo

Binder详解Demo,详见博客http://blog.csdn.net/u012702547/article/details/52748403

2016-10-07

AIDL使用DEMO

AIDL使用DEMO,详情见博客http://blog.csdn.net/u012702547/article/details/52747989

2016-10-07

SQLBrite使用Demo

SQLBrite使用Demo,详见博客http://blog.csdn.net/u012702547/article/details/52577403

2016-09-18

干货集中营App

干货集中营App,详见博客:http://blog.csdn.net/u012702547/article/details/52566120

2016-09-17

Retrofit使用Demo

retrofit使用Demo,详见博客http://blog.csdn.net/u012702547/article/details/52143090#comments

2016-09-13

ViewPager之PageTransformer属性使用Demo

ViewPager之PageTransformer属性使用Demo,详情见博客http://blog.csdn.net/u012702547/article/details/52334161

2016-08-28

Android5.0水波纹效果Demo

Android5.0水波纹效果Demo,详见博客http://blog.csdn.net/u012702547/article/details/52325418

2016-08-26

空空如也

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

TA关注的人

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