yanzigejuly
码龄14年
关注
提问 私信
  • 博客:18,613
    18,613
    总访问量
  • 11
    原创
  • 137,137
    排名
  • 232
    粉丝
  • 0
    铁粉
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:四川省
  • 目前就职: 百度在线网络科技(北京)有限公司成都分公司
  • 加入CSDN时间: 2011-09-13
博客简介:

yanzigejuly的博客

查看详细资料
  • 原力等级
    当前等级
    3
    当前总分
    232
    当月
    2
个人成就
  • 获得326次点赞
  • 内容获得0次评论
  • 获得275次收藏
  • 代码片获得345次分享
创作历程
  • 12篇
    2024年
成就勋章
TA的专栏
  • Java
    7篇
  • redis
    1篇
  • 分布式锁锁
    1篇
  • 数据库
    1篇
  • mybatis plus
    1篇
  • MySql
    1篇
  • TiDB
    1篇
  • git
    2篇
兴趣领域 设置
  • Python
    python
  • Java
    javakafkaspring boot
  • 后端
    sql爬虫后端架构
  • 云原生
    dockerkubernetes
  • 服务器
    linux
  • AIGC
    AI作画stable diffusionchatgptAIGC
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

关于 ReentrantLock 中锁 lock() 和解锁 unlock() 的底层原理浅析

当我们在使用 ReentrantLock 进行加锁和解锁时,底层到底是如何帮助我们进行控制的啦?带着这样的疑问,我们先后跟进 lock()和unlock() 源码一探究竟。
原创
发布博客 2024.09.25 ·
934 阅读 ·
25 点赞 ·
0 评论 ·
12 收藏

记一次分布式锁失效的生产事故

在给某项目做业务开发的时候,有一个任务派发的定时任务,该定时任务通过算法,把系统源源不断的任务每隔一分钟派发给不同的审核员进行审核。因为考虑到分布式任务调度器(如:xxljob/elasticjob)需要单独服务器搭建服务,所以为了减少服务器成本,就自己基于现有资源编写分布式锁,因为现有redis环境,于是就基于redis编写分布式锁,来保证多个实例只有一台实例在同一个时间点在执行派发任务。
原创
发布博客 2024.09.25 ·
825 阅读 ·
22 点赞 ·
0 评论 ·
30 收藏

数据库设计范式

大部分业务开发都需要我们开发人员自己进行表结构的设计,设计关系数据库时,会要求我们遵从不同的规范要求,设计出合理的关系型数据库,只有设计出更加合理的数据库表结构,才能在业务处理和后期维护变得更加方便。这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。关系数据库有六种范式(Normal form):第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。第一范式主要针对具体某一列;
原创
发布博客 2024.08.08 ·
667 阅读 ·
17 点赞 ·
0 评论 ·
28 收藏

Mybatis Plus配置多数据源

该项目主要描述了Mybatis Plus多数据源的配置和使用,其中详细记录的配置过程,整个过程从数据库表的创建到数据初始化都有详细的记录说明。另外,如果存在同一个表在多个数据源中都存在的情况,有一些注意事项,下面看文章通过例子说明。
原创
发布博客 2024.08.07 ·
7050 阅读 ·
54 点赞 ·
0 评论 ·
44 收藏

MySQL数据清洗到TiBD

一、业务背景公司主要做的业务是类似贝壳的二手房租售,数据库中存了上亿级别的房源数据,之前数据库使用的是 mysql,后面需要将 mysql 数据库切换成了 Tidb,在切换的过程中,需要将老库的数据经过数据清洗后再存入新库(因为有一些表结构的设计变了),其中我们处理的一个逻辑就是将房间下业主信息从老库清洗到新库:我们需要按照城市维度,查询新库所有的房间,然后拿着新老库的房间对应关系,再到老库中找到所有对应的房间,然后通过房间再找到每个房间对应的业主信息,最后将业主的不同维度信息(一共5个维度信息)清洗到新
原创
发布博客 2024.08.01 ·
2177 阅读 ·
55 点赞 ·
0 评论 ·
56 收藏

记一次for update“同一事务”中update无法获取数据锁的解决

问题原因就在这,虽然测试环境实际上只有一个数据库,但是ShardingJDBC配置了主从,那么即使只有一个数据库,也会产生两条连接,一条用于主、一条用于从,所以在select for update语句的时候默认使用从库的链接的事务中获取数据,并且将数据加锁,而表面上看代码是同一事务的update时,实际上是使用主库的链接的事务进行更新数据,所以select 和 update不在同一个事务中,故代码层面看是同一事务的先后两个操作,update时实际获取不到之前的select的锁,所以发生等待直至超时报错。
原创
发布博客 2024.07.30 ·
990 阅读 ·
9 点赞 ·
0 评论 ·
8 收藏

git简单使用总结

Git是一种分布式版本控制系统。本地工作目录、暂存区和仓库,也可以称为三棵树,不过在仓库这个地方又可以分为本地仓库和远程仓库。:本地工作目录(工作区):暂存区Repository:仓库,仓库又分本地仓库和远程仓库Remote:远程仓库整个Git版本管理过程可以简单的理解为文件在三棵树上的管理过程:本地(本机)创建的文件,首先会存在本地工作目录,当使用git add命令后,会将文件同时保存到暂存区,在暂存区的文件使用git commit后,会将暂存区的文件提交到仓库,使用git push。
原创
发布博客 2024.07.30 ·
828 阅读 ·
18 点赞 ·
0 评论 ·
18 收藏

各种集合、对象的对比记忆

同类型的StringBuilder和StringBuffer的实现原理一样,其父类都是AbstractStringBuilder。StringBuffer是线程安全的,StringBuilder是JDK 1.5新增的,其功能和StringBuffer类似,但是非线程安全。因此,在没有多线程问题的前提下,使用StringBuilder会取得更好的性能。String是不可变对象,每次对String类型进行操作都等同于产生了一个新的String对象,然后指向新的String对象。
原创
发布博客 2024.07.29 ·
776 阅读 ·
31 点赞 ·
0 评论 ·
11 收藏

Java的12个语法糖

前面介绍了12种Java中常用的语法糖。所谓语法糖就是提供给开发人员便于开发的一种语法而已。但是这种语法只有开发人员认识。要想被执行,需要进行解糖,即转成JVM认识的语法。当我们把语法糖解糖之后,你就会发现其实我们日常使用的这些方便的语法,其实都是一些其他更简单的语法构成的。有了这些语法糖,我们在日常开发的时候可以大大提升效率,但是同时也要避免过渡使用。使用之前最好了解下原理,避免掉坑。说明:本文转载自公众号 Hollis 的文章《原创 | 不了解这12个语法糖,别说你会Java!侵权删。
转载
发布博客 2024.07.27 ·
89 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

GIT使用log命令显示中文乱码

1、运行Git Bash窗口,在该窗口导航条(即最上面)右键,选择Options−>Text,找到下面两处:Locale:选择 zh_CN ;Charector set:选择 UTF-8。2、到Git Bash命令窗口输入如下设置命令语句:git config --global i18n.commitencoding utf-8git config --global i18n.logoutputencoding utf-8export LESSCHARSET=utf-8
原创
发布博客 2024.07.26 ·
1282 阅读 ·
8 点赞 ·
0 评论 ·
2 收藏

深入理解HashMap扩容机制(JDK8)

Java 8 在新增数据存入成功后进行扩容。扩容会发生在两种情况下(满足任意一种条件即发生扩容):(1)当前存入数据大于阈值即发生扩容;(2)存入数据到某一条链表时,此时该链表数据个数大于8,且数组长度小于64即发生扩容。此外需要注意一点java7是在存入数据前进行判断是否扩容,而java8是在存入数据后再进行扩容的判断。
原创
发布博客 2024.07.26 ·
1079 阅读 ·
28 点赞 ·
0 评论 ·
15 收藏

深入理解HashMap扩容机制(JDK7)

Hashmap的扩容需要满足两个条件:当前数据存储的数量(即size())大小必须大于等于阈值;当前加入的数据发生了hash冲突。因为上面这两个条件,所以存在下面这些情况就是hashmap在存值的时候(默认大小为16,负载因子0.75,阈值12),可能达到最后存满16个值的时候,再存入第17个值才会发生扩容现象,因为前16个值,每个值在底层数组中分别占据一个位置,并没有发生hash碰撞。当然也有可能存储更多值(超多16个值,最多可以存27个值)都还没有扩容。
原创
发布博客 2024.07.26 ·
1873 阅读 ·
59 点赞 ·
0 评论 ·
50 收藏

springmvc jar包

发布资源 2017.09.22 ·
rar

JavaScript中文api.chm

发布资源 2014.06.19 ·
chm

jQuery中文API.chm

发布资源 2014.06.19 ·
chm

jquery1.8.2_中文api.chm

发布资源 2014.06.19 ·
chm

jQuery1.8.0_中文api.CHM

发布资源 2014.06.19 ·
CHM

spring3.0_api.CHM

发布资源 2014.06.19 ·
CHM

Struts2 API.chm

发布资源 2014.06.19 ·
chm

Hibernate中文API.CHM

发布资源 2014.06.19 ·
CHM
加载更多