god-jiang
码龄8年
关注
提问 私信
  • 博客:77,214
    77,214
    总访问量
  • 57
    原创
  • 599,633
    排名
  • 60
    粉丝
  • 0
    铁粉
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:广东省
  • 目前就职: 广州小迈网络科技有限公司
  • 加入CSDN时间: 2017-02-27
博客简介:

god-jiang的博客

博客描述:
本科时期的数据结构和算法,还有其他比较常用的技术和知识
查看详细资料
个人成就
  • 获得208次点赞
  • 内容获得175次评论
  • 获得387次收藏
创作历程
  • 19篇
    2021年
  • 39篇
    2020年
成就勋章
TA的专栏
  • MySQL
    15篇
  • Java
    10篇
  • 工作踩坑记录
    4篇
  • 源码解读
    7篇
  • 计算机基础
    3篇
  • 缓存
    2篇
  • 算法基础
    12篇
  • 剑指offer系列
    4篇
  • LeetCode系列
    2篇
  • 排序算法
    4篇
  • 设计模式
    1篇
兴趣领域 设置
  • 大数据
    mysqlredis
  • 后端
    spring
  • 服务器
    linux
创作活动更多

如何做好一份技术文档?

无论你是技术大神还是初涉此领域的新手,都欢迎分享你的宝贵经验、独到见解与创新方法,为技术传播之路点亮明灯!

342人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

MySQL的binlog日志

前言相信很多用过MySQL开发的程序员们都知道binlog,binlog可以用来归档,也可以用来做主备同步。毫无夸张地说,MySQL能够成为现今最流行的数据库,binlog功不可没,今天就来分享一下binlog里面的内容binlog三种格式对比相信大家都知道binlog有两种格式,一种是statement,一种是row,但是还会从别的资料看到第三种格式,叫mixed,mixed其实就是前面两种格式的混合为了描述三种格式的区别,我先来创建一张表,并且初始化5条数据create table t( i
原创
发布博客 2021.11.20 ·
915 阅读 ·
1 点赞 ·
2 评论 ·
1 收藏

hutool工具类的时间使用

前言由于小编最近开发的功能都是爬取api的数据,一直需要操作时间,所以使用了一段时间的hutool工具类,发现是真的方便,所以分享博客记录一下,方便以后开发回来可以直接找到相关的apiDateUtilDateUtil中都是静态方法,方便调用String now() 表示当前时间yyyy-MM-dd HH:mm:ssString today() 表示今天时间yyyy-MM-ddint thisMonth()。表示月份(从0开始)int thisDayOfMonth() 表示本月第几天(从1
原创
发布博客 2021.09.19 ·
3838 阅读 ·
7 点赞 ·
1 评论 ·
3 收藏

MySQL之索引下推

说到索引下推之前,我们先讲一下“覆盖索引”,也称为“联合索引”覆盖索引一张表名为test,有两个字段name和age,建立联合索引idx(name,age)表的数据为(“张三”,18),(“李四”,24),(“王五”,35)然后开始用select * from test where name='张三'可以直接匹配到(“张三”,18)这条记录。但是使用select * from test where name like '张%'就会查询(“张三”,18)这条记录,然后继续往后查询,直到没有匹配上的记
原创
发布博客 2021.09.04 ·
470 阅读 ·
1 点赞 ·
0 评论 ·
3 收藏

江神制作的面经总结.pdf

发布资源 2021.08.05 ·
pdf

Java8 lambda表达式

java8的lambda表达式提供了一些方便list操作的方法,主要涵盖分组、过滤、求和、最值、排序、去重。跟之前的传统写法对比,能少写不少代码。实体类import java.math.BigDecimal;import java.util.Date; public class User { private Long id; //姓名 private String name; //年龄 private int age; //工号
转载
发布博客 2021.07.31 ·
201 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

批量插入或更新.zip

发布资源 2021.06.20 ·
zip

阿里云oss图片上传

背景上周接到一个新的需求,要在客户端上报图片信息,以前是存在七牛上,现在要全部转到阿里云的oss上,然后那周基本都在啃阿里云的官方文档,最后完成了这个需求,现在来分享一下Java开发的SpringBoot项目怎么引入oss并且使用还有我的踩坑经历。阿里云oss使用1、先引入maven依赖 <dependency> <groupId>com.aliyun.oss</groupId> <artifac
原创
发布博客 2021.06.19 ·
463 阅读 ·
5 点赞 ·
6 评论 ·
1 收藏

HMacSHA1.java

发布资源 2021.06.13 ·
java

阿里云日志配置告警

背景我所在的公司目前用的是ELK日志查询,但是用ELK都是出了问题我们开发人员上去查询对应的报错日志最后解决问题。但是出了问题我们开发人员要怎么知道的,只能通过业务人员反馈才能知道。所以我们后面就把日志服务迁移到阿里云日志服务上,可以查询、分析日志也可以配置相对应的告警功能。配置告警功能一、创建用户和用户组用户和用户组的作用是告警通知的对象,下面是创建步骤。登录阿里云,选择日志服务在Project区域中选择你想要配置的目标Project在左侧导航栏中选择告警打开告警中心,选择告警管理>
原创
发布博客 2021.06.12 ·
1880 阅读 ·
3 点赞 ·
7 评论 ·
3 收藏

JVM的类加载过程

前言近来读了《深入理解JVM虚拟机》的部分内容,对JVM也慢慢有个整体的认识,今天就来分享一下我对JVM类加载过程的学习和理解。基础知识我们平时写的Java写代码一般都是.java文件,编译成为.class字节码文件,然后类加载器把.class文件加载到JVM内存中,接下来JVM就执行我们的字节码文件,整个过程就是这样。画个图方便大家好理解:类加载过程其实非常琐碎且复杂,但是我们只要把握其中的核心工作原理即可一个类从加载到使用会经历以下步骤:加载-〉验证-〉准备-〉解析-〉初始化-〉使用-〉
原创
发布博客 2021.05.29 ·
241 阅读 ·
6 点赞 ·
5 评论 ·
1 收藏

JVM核心参数图解

前言作为一名Java开发工程师,基本上都要接触到JVM,实际开发中也许也会遇到JVM的相关问题,面试中肯定也会问到JVM的相关知识。所以今天这篇主要分享JVM的各个参数所代表的意思并且通过图解的方式帮助读者更加好理解。JVM核心参数在JVM里有几个比较核心的参数,今天就主要来讲这几个:-Xms:JVM初始堆内存大小-Xmx:JVM堆内存的最大值-Xmn:JVM中新生代大小-XX:PermSize:永久代大小-XX:MaxPermSize:永久代最大值-Xss:JVM每个线程的大小下面我们
原创
发布博客 2021.05.15 ·
886 阅读 ·
4 点赞 ·
4 评论 ·
3 收藏

JVM定位问题之jstack使用

背景本人在刚开始接触企业级开发的时候,就曾经写过一段类似于死循环的代码。然后把这个代码发布到线上,Grafana显示改应用上线后CPU一直接近100%,于是在大佬的帮助下用jstack定位到问题并且解决了,所以总结一下jstack的使用吧。jstack描述此命令是为Java进程或核心文件或远程调试服务器打印Java线程的堆栈跟踪。jstack可以同时打印所有线程的Java和本机栈帧。jstack常用于定位线程的死循环、死锁等情况。场景模拟package JVM;import java.util
原创
发布博客 2021.05.03 ·
1908 阅读 ·
4 点赞 ·
4 评论 ·
6 收藏

MySQL的间隙锁

你好,我是god-jiang~接上篇的MySQL行锁,我分享了RC隔离级别下的各种常见情况的加锁分析。这次分享的是MySQL间隙锁,分析RR隔离级别下各种常见情况的加锁分析。create table `test`( `id` int(11) NOT NULL, `a` int(11) NOT NULL, `b` int(11) NOT NULL, `c` int(11) NOT NULL, PRIMARY KEY(`id`), UNIQUE KEY unix_key('a'),
原创
发布博客 2021.03.20 ·
595 阅读 ·
3 点赞 ·
10 评论 ·
3 收藏

MySQL的行锁

背景自从过年值班就一直在公司读《 MySQL实战45讲》这本书,当时看完了MySQL的全局锁、表级锁还有行锁和间隙锁。其中的行锁和间隙锁迟迟无法理解,最近趁着有空再次阅读了一遍,并且对照了《深入浅出MySQL》,发现对MySQL锁的理解又上了一个台阶,今天就来分享一下MySQL的行锁。行锁MySQL的行锁又分为共享锁(S锁)和排他锁(X锁)。一般普通的select语句,InnoDB不加任何锁,我们称之为快照读select * from test;通过加S锁和X锁的select语句或者插入/更
原创
发布博客 2021.03.12 ·
10246 阅读 ·
6 点赞 ·
16 评论 ·
35 收藏

MySQL的全局锁和表级锁

前言在真实的企业开发环境中使用MySQL,MySQL肯定不会只有我一个人使用,而是一个团队显式的使用MySQL,或者是业务隐式的使用MySQL,那么多个用户或者客户端连接使用的时候,我们应该考虑一个问题:如果保证数据并发访问的一致性呢?这一篇我就来聊聊MySQL的锁,不涉及MySQL的事务隔离级别。全局锁MySQL的全局锁会关闭所有打开的表,并使全部的表处于只读状态,它们的命令为:# 全局锁,简称FTWRLFLUSH TABLES WITH READ LOCK;# 解锁命令UNLOCK TA
原创
发布博客 2021.02.27 ·
1476 阅读 ·
7 点赞 ·
10 评论 ·
9 收藏

MySQL日志之redo log和binlog

前言只要是接触过MySQL的程序员,那么或多或少都有听过redo log(重做日志)和binlog(归档日志)。今天就来分享一下这两个日志的用处和区别。简单来说,redo log是InnoDB特有的日志,如果使用的是其他存储引擎,就没有redo log,只有binlog。binlog是MySQL的Server层的日志,不管使用什么存储引擎,都会有binlog的存在。那么,为什么要有redo log和binlog呢?一个binlog不就可以全部解决了吗?接下来我们就来详细看一下redo log和binl
原创
发布博客 2021.02.15 ·
2513 阅读 ·
5 点赞 ·
8 评论 ·
6 收藏

MySQL的基础架构

前言临近春节,这段时间闲来无事又读了一些关于MySQL的文章和书籍,觉得受益良多。尤其是阿里巴巴丁奇的MySQL实战45讲,真的让我感觉到有质的提升。以前看书看博客都是优先看索引部分,优化部分。都是一些工作中常用的知识点。但现在我对MySQL的底层越来越好奇,所以从MySQL的基础架构开始学起,就有了这篇博客。MySQL逻辑结构大体来说,MySQL可以分为Server层和存储引擎层两部分。Server层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖MySQL的大多数核心服务功能以及内置函数。
原创
发布博客 2021.02.10 ·
2515 阅读 ·
5 点赞 ·
10 评论 ·
10 收藏

手撸一个SpringBoot-Starter

前言SpringBoot几乎是我们所有Java开发者必须掌握的一个技能,它为所有开发者更快的入门,做到开箱即用,没有冗余的代码和XML配置要求,对于开发者来说几乎是“零配置”。这个得益于SpringBoot的“约定大于配置”。SpringBoot的starter帮我们把繁琐的配置和注册到IOC容器的过程都做了,我们只需要按照约定配置就可以开箱即用,实现零配置,下面我们就手撸一个spring-boot-starter来加深对“零配置”和“约定大于配置”的理解吧。spring-boot-starter介绍
原创
发布博客 2021.02.01 ·
2810 阅读 ·
12 点赞 ·
15 评论 ·
29 收藏

Spring自带的线程池ThreadPoolTaskExecutor

前言上一篇分享了JDK自带的线程池ThreadPoolTaskExecutor的配置和参数详解,然而我们实际开发中更多的是使用SpringBoot来开发,Spring默认也是自带了一个线程池方便我们开发,它就是ThreadPoolTaskExecutor,接下来我们就来聊聊Spring的线程池吧。Spring默认线程池simpleAsyncTaskExecutorSpring异步线程池的接口类是TaskExecutor,本质还是java.util.concurrent.Executor,没有配置的情况
原创
发布博客 2021.01.24 ·
977 阅读 ·
8 点赞 ·
8 评论 ·
8 收藏

JDK线程池之ThreadPoolExecutor

前言在真实的企业开发过程中,有时候我们需要通过并行计算提高程序执行的性能,或者是遇到等待网络、IO响应导致耗费大量的执行时间,这些情况下我们可以通过采用异步多线程的方式来减少阻塞。这个时候我们就要学习多线程并发来实现这些业务场景。使用线程池的好处降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗提高响应速度。当任务到达时,可以不需要等待线程的创建就能立刻执行提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以统一分配、调优
原创
发布博客 2021.01.17 ·
518 阅读 ·
7 点赞 ·
3 评论 ·
2 收藏
加载更多