1658538813089932_社区达人页

个人头像照片
1658538813089932
已加入开发者社区1858

勋章 更多

个人头像照片
专家博主
专家博主
个人头像照片
星级博主
星级博主
个人头像照片
技术博主
技术博主
个人头像照片
初入江湖
初入江湖

成就

已发布153篇文章
3条评论
已回答0个问题
0条评论
已发布0个视频
github地址

我关注的人 更多

技术能力

兴趣领域
擅长领域
技术认证

暂时未有相关云产品技术能力~

暂无个人介绍

暂无精选文章
暂无更多信息

2022年04月

  • 04.28 00:02:00
    发表了文章 2022-04-28 00:02:00

    通过官方文档高效学习ElasticSearch的JavaAPI实现!

    有人说学习一项技术最好的资料是官方文档,对大部分技术来说确实是这样的。但是官方文档不一定适合每个人去看,比如一个初学者,直接让他看Spring的官方文档,其实是不合适的。今天我会结合ElasticSearch的一个客户端官方文档介绍ES在Java中的API应用。
  • 04.27 23:25:53
    发表了文章 2022-04-27 23:25:53

    ElasticSearch究竟是个什么东西

    ElasticSearch的目标就是实现搜索。在数据量少的时候,我们可以通过索引去搜索关系型数据库中的数据,但是如果数据量很大,搜索的效率就会很低,这个时候我们就需要一种分布式的搜索引擎。Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。
  • 04.27 23:10:48
    发表了文章 2022-04-27 23:10:48

    想在一个项目中实现多数据源切换?几行代码就搞定了

    在实际的应用场景中,我们经常会遇到一个系统要调用多个数据源的情况。可能是同一个mysql的不同库,也有可能是从不同的mysql中调用数据进行使用。这里提供一种十分高效的多数据源切换框架---dynamicdatasource
  • 04.27 23:04:47
    发表了文章 2022-04-27 23:04:47

    Sentinel快速入门:这可能是目前最好的分布式系统限流降级框架

    在分布式系统中,许多服务之间通过远程调用实现信息交互,调用时难免会出现调用失败的情况,Sentinel能保证在一个服务出现问题的情况下,不会导致整体服务失败,防止服务雪崩,提高分布式系统的可用性。
  • 04.27 22:54:50
    发表了文章 2022-04-27 22:54:50

    Dubbo两小时快速上手教程(直接代码、Spring、SpringBoot)

    最近项目中需要用到dubbo,虽然我知道dubbo是一个RPC框架,但是没有去详细了解这个框架。既然项目要用,那就先把Dubbo的应用给学会,等熟练使用之后,再去了解Dubbo内部的原理。如果想要项目代码,直接联系我即可。如果想要demo代码,直接联系我即可。
  • 04.27 22:45:14
    发表了文章 2022-04-27 22:45:14

    如何在工作中快速上手Git

    如果你进入的是一家互联网公司,那么一定会听到版本控制这个东西,所谓版本控制就是在开发过程中对文件、代码等内容的修改历史进行记录,方便查看、备份以及回滚历史代码。 同时可以用于管理多人协同开发项目,通过版本控制实现多个人并行开发,提高开发效率。 Git就是版本控制的一种实现,同样的还有Svn等。 Git又可以称为分布式版本控制,所有的版本信息仓库全部同步到每隔用户的本地,可以离线在本地提交,在有网络的时候push到相应的服务器上即可。
  • 04.27 22:39:05
    发表了文章 2022-04-27 22:39:05

    还不知道项目中怎么写日志?slf4j+log4j帮你搞定!

    之前讲到了排查问题最重要的两种方法:查日志、debug。断点调试在上一期讲了,这期就讲讲日志。本文将从Log4j入手,分别介绍slf4j、Log4j2以及SpringBoot中的日志使用。
  • 04.27 22:20:56
    发表了文章 2022-04-27 22:20:56

    你真的会用idea进行debug吗?idea实用debug教程

    解决一眼无法发现的代码问题有两种方式最靠谱,第一种是查日志,第二种就是dubug。但是我发现很多程序员只会打上一个最简单的普通断点,这可完全没有发挥出idea的强大,这一期就带来我认为idea中最实用的debug教程。
  • 04.27 19:43:17
    发表了文章 2022-04-27 19:43:17

    浅析五种最常用的Java加密算法,以后可以直接拿来用了

    信息加密是现在几乎所有项目都需要用到的技术,身份认证、单点登陆、信息通讯、支付交易等场景中经常会需要用到加密算法,所谓加密算法,就是将原本的明文通过一系列算法操作变成密文。接下来就介绍一下目前比较常用的一些加密算法,本期不涉及算法底层,以应用介绍和代码展示为主。 如果只想了解原理,可跳过代码部分,代码可直接拿来使用。
  • 04.27 19:33:27
    发表了文章 2022-04-27 19:33:27

    服务发现、配置中心,Nacos帮我们都搞定了

    如今微服务架构已经被炒的如火如荼,互联网公司况且不说,连我接触的一个国企现在都开始往微服务分布式架构发展。因此,我会通过最近几篇博客介绍目前比较流行的一些微服务组件,其实微服务并没有那么难。如果在跑项目过程中,想要知道整个项目的所有依赖pom文件或者任何疑问,直接联系我即可。
  • 04.27 19:23:14
    发表了文章 2022-04-27 19:23:14

    平稳运行半年的系统宕机了,记录一次排错调优的全过程!

    最近发生了一件很让人头疼的事情,已经上线半年且平稳运行半年系统在年后早高峰的使用时发生了濒临宕机的情况。访问速度特别慢,后台查到大量time_wait的连接,从代码层面到架构层面到网络层面排查了几天几夜,总算是有了结果。
  • 04.27 19:20:18
    发表了文章 2022-04-27 19:20:18

    2021年,快速Deno上手指南 | 🏆 技术专题第九期征文

    又是一年春草绿。无数个技术框架在更新,在成长。那么,什么前景巨大呢?我想,Deno,值得拥有!
  • 04.27 19:11:10
    发表了文章 2022-04-27 19:11:10

    DAY6:你必须知道的java虚拟机之类篇——类文件的加载(2)

    1.类加载的七个过程清楚吗? 2.和类初始化相关的6个条件能说一下吗 3.数组的加载和引用类型的加载有哪些区别 这几个知识点还说不上来的,传送门
  • 04.27 19:00:20
    发表了文章 2022-04-27 19:00:20

    Java程序员需要知道的操作系统知识汇总(持续更新)

    操作系统管理着计算机的硬件和软件,它是软件和硬件能够交互的基础。从本质上来讲,操作系统还是一个运行在计算机上的程序。操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入设备与输出设备、操作网络与管理文件系统等基本事务。操作系统也提供一个让用户与系统交互的操作界面。
  • 04.27 18:56:55
    发表了文章 2022-04-27 18:56:55

    关于ThreadLocal的九个知识点,看完别再说不懂了!

    ThreadLocal顾名思义是保存在每个线程本地的数据,ThreadLocal提供了线程局部变量,即每个线程可以有属于自己的变量,其他线程无法访问。如果创建了一个ThreadLocal变量,那么访问这个变量的每个线程都会有这个变量的本地副本。每个线程可以通过set()和get()方法去访问ThreadLocal变量。
  • 04.27 13:43:56
    发表了文章 2022-04-27 13:43:56

    关于JVM调优,我理了一些工具和思路出来

    JVM调优是争取高薪必须要掌握的一项技能,但是许多程序员在工作中很少遇到去JVM调优的情况,在这篇文章中,我整理了一些调优工具以及调优的思路,希望对大家有所帮助。
  • 04.27 13:08:21
    发表了文章 2022-04-27 13:08:21

    一步步教你如何在SpringBoot项目中引入支付功能

    支付功能如今已经成为一个需要盈利的网站的基本功能了,如今的网站如果想要做支付功能,往往都是将支付宝或者微信的支付功能集成进来。尽管支付宝已经给出了许多文档和代码,但是这项工作并没有那么简单。今天我就一步步带大家去实现在SpringBoot项目中对支付宝的功能引入。
  • 04.27 13:03:16
    发表了文章 2022-04-27 13:03:16

    如何使用Zookeeper去实现分布式锁?

    在单体环境中,遇到临界资源的时候我们会使用Synchronized或者RetreenLock在调用临界资源前上锁。但是在分布式的环境下,锁住单体资源就不起作用了,这个时候就需要用到分布式锁。分布式锁的原理就是借用外部的一个系统来充当锁的作用,比如Mysql、Redis、Zookeeper等都可以用作分布式锁。在实际业务中,Redis和Zookeeper用到的最多。
  • 04.27 12:59:54
    发表了文章 2022-04-27 12:59:54

    你知道JWT是什么吗?它和Session的区别又在哪里?

    在前面一篇讲分布式session的时候,有读者问了一句用JWT不香吗,连Redis服务器都省了,又可以实现分布式环境下的人员信息认证。正好我也还没写过关于JWT的文章,刚好在项目中又用过这项技术,今天就来分享一下。还是一样,先理论后实践,有问题评论一起头脑风暴。
  • 04.27 12:52:23
    发表了文章 2022-04-27 12:52:23

    一个成熟的Java项目如何优雅地处理异常

    异常处理是一个系统最重要的环节,当一个项目变得很大的时候,异常处理和日志系统能让你快速定位到问题。对于用户或者接口调用者而言,优雅的异常处理可以让调用者快速知道问题所在。本文将介绍如何优雅地处理异常。
  • 04.27 12:47:12
    发表了文章 2022-04-27 12:47:12

    作为一个后端开发,你需要了解多少Nginx的知识?

    最近做的一个项目在迁移公网环境的时候出了一个问题,明明服务都起来了,但是怎样都访问不进来。后来才发现是Nginx的配置出了问题。无奈自己关于Nginx的学习在大学毕业后就差不多遗忘了,当时又紧急找不到运维人员,差点就只能以失败结束迁移。 因此觉得就算是干后端开发,对于基本的nginx配置依旧需要有所了解,于是写了这篇后端人员应该懂的nginx文章,希望对大家有所帮助。
  • 04.27 12:37:26
    发表了文章 2022-04-27 12:37:26

    基于SpringBoot实现文件的上传下载

    文件上传下载一直都是一个系统最常用也是最基本的功能点,刚好最近公司的项目上有用到这个功能,于是自己就用SpringBoot也写了一个简化的版本,已实现文件的上传和下载功能。
  • 04.27 12:26:10
    发表了文章 2022-04-27 12:26:10

    白话Mysql的锁和事务隔离级别!死锁、间隙锁你都知道吗?

    我们把那些可能会被多个线程同时操作的资源称为临界资源,加锁的目的就是让这些临界资源在同一时刻只能有一个线程可以访问。这是当时在讲synchronized锁时提出的锁的概念。 数据库作为用户共享的一个资源,如何保证数据并发访问一致性也是所有数据库必须解决的问题,如何加锁是数据库并发访问性能的一个重要因素。
  • 04.27 00:16:15
    发表了文章 2022-04-27 00:16:15

    产品经理问我:手动创建线程不香吗,为什么非要用线程池呢?

    每次写线程池的文章时,总会想起自己大三第一次面试就是挂在这上面,当时年少轻狂,连SpringBoot是什么都不知道就敢面阿里,真是初生牛犊不怕虎。
  • 04.26 23:50:56
    发表了文章 2022-04-26 23:50:56

    如何用Java写一个规范的http接口?

    在平常的工作中,经常会遇到要写接口的情况,现在最常用的就是http接口,今天我就介绍一下如何去写一个规范的http接口。
  • 04.26 22:48:10
    发表了文章 2022-04-26 22:48:10

    图解Mysql索引的数据结构!看不懂你来找我

    索引是帮助Mysql更加高效获取数据的一种数据结构,索引的使用很简单,但是如果不能理解索引底层的数据结构的话,就谈不上去优化索引了。
  • 04.26 22:43:10
    发表了文章 2022-04-26 22:43:10

    Java16都快上线了,你该不会连Java8的特性都不会用吧?

    2020年,Java16有了新的消息,预计将在2021年的3月16日正式发布。但是这一消息对于百分之九十的国内程序员来说都只是一个新闻而已,因为国内的绝大部分公司依然使用着Java8。这款发布于2014年的JDK版本深受各大公司的喜爱,最大的原因取决于它的稳定性。 即使如此,依然有一半以上的程序员对于Java8的特性不了解,于是我用一个周末的时间把JDK8的”新“特性肝了一遍,希望对大家有所帮助。
  • 04.26 13:44:35
    发表了文章 2022-04-26 13:44:35

    一文汇总数据库基础知识点!(建议收藏)

    在考研的时候,我有一门专业课是数据库,因此当时我对数据库的基础知识掌握的还算比较扎实,上周我再翻开当时考研时翻了无数遍的数据库书籍的时候,发现好多内容都忘掉了。刚好也决定开始写数据库相关的文章,就有了下面的内容。
  • 04.26 13:40:06
    发表了文章 2022-04-26 13:40:06

    面试被问AQS、ReentrantLock答不出来?这些知识点让我和面试官聊了半小时!

    Java并发编程的核心在于java.concurrent.util包,juc中大多数同步器的实现都围绕了一个公共的行为,比如等待队列、条件队列、独占获取、共享获取等,这个行为的抽象就是基于AbstractQueuedSynchronized(AQS)。AQS定义了多线程访问共享资源的同步器框架。
  • 04.26 09:38:55
    发表了文章 2022-04-26 09:38:55

    Spring的艺术(六):一文搞定Spring整合Mybatis

    在这里我会用spring-jdbc代替mybatis的数据源,因此额外引入了一个spring-jdbc的依赖,其余就是Spring相关依赖和Mybatis相关依赖以及最重要的mybatis-spring
  • 04.26 09:31:21
    发表了文章 2022-04-26 09:31:21

    Spring的艺术(五):通俗易懂的AOP切面详解

    在前面的学习中,我们已经把Spring的一个核心IOC学习完毕,下面开始学习Spring的另外一个核心--Spring AOP。AOP翻译为面向切面编程,刚开始接触的小伙伴肯定不明白什么是面向切面。简单来讲,面向切面就是对业务逻辑的各个部分进行隔离。 最常见的就是日志与业务逻辑分离,我们就可以通过AOP在业务逻辑执行前写日志,也可以在业务逻辑执行后写日志,而不会动已经写好的业务逻辑代码。
  • 04.26 09:24:44
    发表了文章 2022-04-26 09:24:44

    Spring的艺术(四):Spring5竟然可以彻底抛弃xml配置

    前面看了这么多,不知道大家有没有这样一种感觉,如果每写一个对象都要去xml文件中定义这个bean,似乎依然还是很繁琐。Spring也考虑到了,因此在后续的Spring版本中,慢慢地开始用注解去代理xml文件配置。
  • 04.26 09:20:34
    发表了文章 2022-04-26 09:20:34

    Spring的艺术(三):关于Spring中的Bean,一文搞定

    spring中的bean默认使用单例作用域,即全局只创建这一个bean对象,在程序中获取到的bean都是同一个。当然也可以显式的配置作用域
  • 04.26 09:14:16
    发表了文章 2022-04-26 09:14:16

    有关synchronized锁的知识点,我用一篇文章总结了

    在多线程的程序执行中,有可能会出现多个线程会同时访问一个共享并且可变资源的情况,这种时候由于线程的执行是不可控的,所以必须采用一些方式来控制该资源的访问,这种方式就是“加锁”。 我们把那些可能会被多个线程同时操作的资源称为临界资源,加锁的目的就是让这些临界资源在同一时刻只能有一个线程可以访问。
  • 04.26 09:09:51
    发表了文章 2022-04-26 09:09:51

    Spring的艺术(二):控制反转(IOC)和依赖注入(DI)的完美实现

    IOC叫做控制反转,从本质上讲,IOC就是把原本由程序员创建的对象的这个动作交给Spring去实现,程序员无需再去管理对象的创建,这种方式可以大大减少系统的偶尔性。 没有IOC之前,对象的创建和对象间的依赖关系都完全编码在程序中,使用IOC之后,对象的创建由程序自己控制,使得程序解耦合。 IOC并不是一种技术,他是一种思想,即控制权反转的思想,DI(依赖注入)则是Spring实现IOC的方法。 Spring容器在初始化时根据配置文件或元数据创建和组织对象存入容器中,需要使用时再从IOC容器中获取。
  • 04.26 09:02:14
    发表了文章 2022-04-26 09:02:14

    Volatile只会用不知道原理?一篇文章带你深究volatile

    要了解并发编程,首先就需要了解并发编程的三大特性:可见性、原子性和有序性。我们今天要讲的volatile保证了可见性和有序性,但是不保证原子性。接下来会通过几段代码和几张图来强化对volatile的了解。
  • 04.26 00:05:47
    发表了文章 2022-04-26 00:05:47

    指令重排序、内存屏障很难?看完这篇你就懂了!

    面试官在问到多线程编程的时候,指令重排序、内存屏障经常会被提起。如果你对这两者有一定的理解,那这就是你的加分项。
  • 04.26 00:03:16
    发表了文章 2022-04-26 00:03:16

    面试官:我问的是Java内存模型,你回答堆栈方法区干嘛?

    很多人会把Java内存区域(运行时数据区)和Java内存模型(JMM)搞混,这两者是完全不一样的东西。 Java内存区域是指JVM运行时数据分区域存储,而Java内存模型是定义了线程和主内存之间的抽象关系,了解Java内存模型是学好Java并发编程的基础。
  • 04.26 00:00:53
    发表了文章 2022-04-26 00:00:53

    坚持写技术博客,我得到了什么?

    最开始写博客的目的只是为了记录自己的学习,比如上面的这条,通过Inception V3模型实现花朵识别,用的是tensorflow框架实现了一个植物的识别,但是对于代码我理解并不够,因此我写下了自己对每行代码的注释,保存下来并发布。后来删除的原因是,我觉得这篇博客写的太没有博客的样子了。后来断断续续写了十来篇,然后就没有然后了。
  • 04.25 23:57:57
    发表了文章 2022-04-25 23:57:57

    类加载的全过程,我给大家理一理

    在加载阶段,虚拟机需要完成以下三件事情: 1、通过一个类的全限定名获取定义此类的二进制字节流。 2、将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构。 3、在Java堆中生成一个代表这个类的Class对象,作为方法区这些数据的访问入口。 其中加载的类可以来自于不同地方:
  • 04.25 23:53:02
    发表了文章 2022-04-25 23:53:02

    图解类加载器和双亲委派机制,一看就懂

    我们都知道Java代码会被编译成class文件,在class文件中描述了该类的各种信息,class类最终需要被加载到虚拟机中才能运行和使用。 虚拟机把Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成虚拟机可以直接使用的Java类型,这就是虚拟机的类加载机制。
  • 04.25 23:41:17
    发表了文章 2022-04-25 23:41:17

    Mybatis从小白到小黑(七)Mybatis缓存详解

    在 Web 系统中,最重要的操作就是查询数据库中的数据。但是有些时候查询数据的频率非常高,这是很耗费数据库资源的,往往会导致数据库查询效率极低,影响客户的操作体验。于是我们可以将一些变动不大且访问频率高的数据,放置在一个缓存容器中,用户下一次查询时就从缓存容器中获取结果。
  • 04.25 23:35:02
    发表了文章 2022-04-25 23:35:02

    Mybatis从小白到小黑(六)Mybatis动态Sql详解

    动态sql简单来讲就是我们能通过条件的设置生成不同的sql,在Mybatis中主要学习四种表达式即可:
  • 04.25 22:57:35
    发表了文章 2022-04-25 22:57:35

    关于垃圾收集器你了解多少?一文总结七大垃圾收集器

    如果说垃圾收集算法是内存回收的理论,那么垃圾收集器就是内存回收的具体实现。 垃圾收集器目前存在的有很多,但是依旧没有哪个收集器是万能的存在,我们只能选择一个最适合应用的收集器。
  • 04.25 22:55:00
    发表了文章 2022-04-25 22:55:00

    Mybatis从小白到小黑(五)Mybatis日志原来是这样使用的

    日志作为定位问题最重要的依据之一,在任何系统下都是不可或缺的,Mybatis 通过使用内置的日志工厂提供日志功能。在前面讲设置的时候,我们已经看到了Mybatis可以配置以下几种日志工厂:
  • 04.25 22:50:00
    发表了文章 2022-04-25 22:50:00

    JVM垃圾回收机制是怎样的,何时触发YoungGC或FullGC操作,一文搞定

    在垃圾回收之前,首要的问题是确定哪些垃圾需要被回收,现在Java通过根搜索算法(GC Roots Tracing)来判断一个对象是否存活,这个算法的思路就是通过一系列名为“GC Roots”的对象作为起始点,从这些节点向下搜索,当GC Roots到达不了这个某个对象时(或者说某个对象没有被任何其他对象所引用),就证明这个对象是不可用的,这些对象会被判定为需要回收的对象。
  • 04.25 22:47:37
    发表了文章 2022-04-25 22:47:37

    什么是接口的幂等性,如何实现接口幂等性?一文搞定

    幂等性原本是数学上的概念,用在接口上就可以理解为:同一个接口,多次发出同一个请求,必须保证操作只执行一次。 调用接口发生异常并且重复尝试时,总是会造成系统所无法承受的损失,所以必须阻止这种现象的发生。 比如下面这些情况,如果没有实现接口幂等性会有很严重的后果: 支付接口,重复支付会导致多次扣钱 订单接口,同一个订单可能会多次创建。
  • 04.25 22:38:18
    发表了文章 2022-04-25 22:38:18

    Mybatis从小白到小黑(四)MyBatis实现复杂环境的Sql查询

    在前面的学习中,我们差不多把Mybatis的基本增删改查、配置文件的配置都讲解了一遍,但是在实际的开发中我们编写的sql不会那么简单,今天就来模拟复杂环境的Sql查询
  • 04.25 13:37:26
    发表了文章 2022-04-25 13:37:26

    Mybatis从小白到小黑(三)Mybatis配置详细解析

    Mybatis的核心配置文件是mybatis-config.xml。我还是先把Mybatis官方中文网站的地址拿出来:
  • 04.25 13:31:14
    发表了文章 2022-04-25 13:31:14

    JVM的内存分代,这篇文章帮你理一理

    堆内存是JAVA虚拟机所管理的内存最大的一块,Java堆被所有线程共享,几乎所有的对象实例都是在堆中分配内存,因此Java的堆是垃圾回收的主要区域。
  • 发表了文章 2022-08-07

    列式存储?OLAP?ClickHouse究竟是何方神圣

  • 发表了文章 2022-07-05

    JDK9相比于JDK8,究竟变强了多少

  • 发表了文章 2022-05-25

    如何快速学习一门新技术

  • 发表了文章 2022-05-15

    时间类有多复杂,JDK竟设计了三版

  • 发表了文章 2022-04-28

    你真的了解Maven吗?

  • 发表了文章 2022-04-28

    【设计模式】快速理解装饰者模式,及其在JDK源码中的应用

  • 发表了文章 2022-04-28

    最实用的设计模式:策略模式的快速理解

  • 发表了文章 2022-04-28

    【设计模式】快速理解建造者模式,及其在JDK源码中的应用

  • 发表了文章 2022-04-28

    如何使用SpringBoot写一个属于自己的Starter

  • 发表了文章 2022-04-28

    Kafka生产者是如何发送消息的?

  • 发表了文章 2022-04-28

    大数据场景下的消息队列:Kafka3.0快速入门

  • 发表了文章 2022-04-28

    【设计模式】快速理解原型模式,及其在源码中的应用

  • 发表了文章 2022-04-28

    像写SQL一样去处理内存中的数据,SparkSQL入门教程

  • 发表了文章 2022-04-28

    学会RDD就学会了Spark,Spark数据结构RDD快速入门

  • 发表了文章 2022-04-28

    软件行业和互联网行业究竟有什么区别?又该如何去选择?

  • 发表了文章 2022-04-28

    十亿条数据需要每天计算怎么办?Spark快速入门

  • 发表了文章 2022-04-28

    MongoDB快速上手,聊聊这款火了一阵又销声匿迹的非关系型数据库

  • 发表了文章 2022-04-28

    基于SpringCloudGateway实现微服务网关

  • 发表了文章 2022-04-28

    深入了解ElasticSearch的Nested数据类型

  • 发表了文章 2022-04-28

    详解单例模式及其在Sping中的最优实践

正在加载, 请稍后...
滑动查看更多
正在加载, 请稍后...
暂无更多信息
正在加载, 请稍后...
暂无更多信息