Shepherd_社区达人页

个人头像照片
Shepherd
已加入开发者社区1473

勋章 更多

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

成就

已发布79篇文章
19条评论
已回答0个问题
0条评论
已发布0个视频

我关注的人 更多

技术能力

兴趣领域
  • Java
  • SQL
  • BI
  • 数据可视化
  • 开发框架
  • 设计模式
  • 容器
擅长领域
技术认证

分享点点滴滴,滴水穿石

  • 10个月前
    docker高级篇:镜像原理和Dockerfile
    镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容,包括代码、运行时、库、环境变量和配置文件
    131
  • 10个月前
    docker终极篇:再谈docker容器
    容器其实是一种沙盒技术。顾名思义,沙盒就是能够像一个集装箱一样,把你的应用“装”起来的技术。这样,应用与应用之间,就因为有了边界而不至于相互干扰;而被装进集装箱的应用,也可以被方便地搬来搬去
    82
  • 10个月前
    docker基础篇:概念和命令
    Docker是一种应用容器引擎。首先说一下何为容器,Linux系统提供了`Namespace`和`CGroup`技术实现环境隔离和资源控制,其中Namespace是Linux提供的一种内核级别环境隔离的方法,能使一个进程和该进程创建的子进程的运行空间都与Linux的超级父进程相隔离,注意Namespace只能实现运行空间的隔离,物理资源还是所有进程共用的,为了实现资源隔离,Linux系统提供了CGroup技术来控制一个进程组群可使用的资源(如CPU、内存、磁盘IO等),把这两种技术结合起来,就能构造一个用户空间独立且限定了资源的对象,这样的对象称为容器。
    103
  • 9个月前
    Spring Boot自动配置原理详解和自定义封装实现starter
    我们一直在强调`Spring Boot`能成为当下主流首选开发框架的主要原因在于其核心思想:**约定大于配置,自动配置,条件装配**。基于这些特性使得`Spring Boot`集成其他框架非常简单快捷
    126
  • 10个月前
    Spring Boot项目如何实现分布式日志链路追踪
    作为一名后端开发工程师,排查系统问题用得最多的手段之一就是查看系统日志,在当下主要的分布式集群环境中一般使用`ELK(Elasticsearch , Logstash, Kibana)`来统一收集日志,以便后续查看日志定位追踪相关问题。但是在并发情况下,大量的系统用户即多线程并发访问后端服务导致同一个请求的日志记录不再是连续相邻的,此时多个请求的日志是一起串行输出到文件中,所以我们筛选出指定请求的全部相关日志还是比较麻烦的,同时当后端异步处理功能逻辑以及微服务的下游服务调用日志追踪也有着相同的问题。
    455
  • 10个月前
    Spring Boot如何优雅实现结果统一封装和异常统一处理
    当下基于`Spring Boot`框架开发的系统几乎都是前后端分离的,也都是基于`RESTFUL`风格进行接口定义开发的,意味着前后端开发大部分数据的传输格式都是json,因此定义一个统一规范的数据格式返回有利于前后端的交互与UI的展示
    611
  • 9个月前
    Spring Boot如何优雅实现数据加密存储、模糊匹配和脱敏
    我们也都知道在日常开发系统过程中,数据安全是非常重要的。特别是在当今互联网时代,个人隐私安全极其重要,一旦个人用户数据遭到攻击泄露,将会造成灾难级的事故问题。所有之前我们基于接口层进行数据安全处理是远远不够的,今天我们就来谈谈如何Model层(数据访问层)怎样做到优雅数据加密存储、模糊匹配及其脱敏展示,本文的主题:**数据加密存储、模糊匹配和脱敏展示**。
    434
  • 9个月前
    Spring Boot如何优雅提高接口数据安全性
    在Spring Boot项目中提高接口安全的核心所在:**加密和加签**,加固接口参数、验证复杂度。 **加密:**对参数进行加密传输,拒绝接口参数直接暴露,这样就可以有效做到防止别人轻易准确地获取到接口参数定义和传参格式要求了。 **加签:**对接口参数进行加签,可以有效防止接口参数被篡改和接口参数被重放恶刷。
    1470
  • 9个月前
    Spring Bean生命周期详解
    之前我们在总结Spring扩展点:后置处理器时谈到了Spring Bean的生命周期和其对Spring框架原理理解的重要性,所以接下来我们就来分析一下Bean生命周期的整体流程。首先Bean就是一些Java对象,只不过这些Bean不是我们主动new出来的,而是交个Spring IOC容器创建并管理的,因此Bean的生命周期受Spring IOC容器控制
    736
  • 9个月前
    Spring扩展点(一):后置处理器PostProcessor
    `Spring`框架中大致提供了以下三个核心后置处理器:**`BeanDefinitionRegistryPostProcessor`,`BeanFactoryPostProcessor`,`BeanPostProcessor`**,其他的后置处理器都是继承自这三个
    114
  • 9个月前
    Spring循环依赖解决方案
    循环依赖其实就是一个闭环,像图中情况二Spring在创建单例bean A的时候发现引用了B,这时候就会去容器中查找单例bean B,发现没有然后就会创建bean B,创建bean B时又发现引用了bean A,这时候又会去容器中查找bean A,发现没有,接下来就会循环重复上面的步骤,这是不是像极了死锁?其实循环依赖就是一个死循环的过程
    129
  • 10个月前
    Redis集群总结
    主从复制是指将一台Redis服务器的数据复制到其他的Redis服务器。前者称为主节点(master/leader) 后者称为从节点(slave/follower) 数据的复制是单向的。只能由主节点到从节点。Master以写为主,Slave 以读为主。
    13277
暂无更多
暂无更多信息

2023年07月

  • 07.12 15:30:39
    发表了文章 2023-07-12 15:30:39

    Redis(基础篇): 数据结构和常用指令

    Redis 的大部分操作在内存上完成,再加上它采用了高效的数据结构,例如哈希表和跳表,这是它实现高性能的一个重要原因。另一方面,就是 Redis 采用了多路复用机制,使其在网络 IO 操作中能并发处理大量的客户端请求,实现高吞吐率
  • 07.12 15:08:26
    发表了文章 2023-07-12 15:08:26

    正则表达式

    正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。
  • 07.12 15:06:42
    发表了文章 2023-07-12 15:06:42

    接口幂等性解决方案

    **幂等性**原本是数学上的概念,即使公式:f(x)=f(f(x)) 能够成立的数学性质。用在编程领域,则意为对同一个系统,使用同样的条件,一次请求和重复的多次请求对系统资源的影响是一致的。幂等函数,或幂等方法,是指可以使用相同参数重复执行,并能获得相同结果的函数。这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变。
  • 07.12 15:04:14
    发表了文章 2023-07-12 15:04:14

    RabbitMQ:基础篇

    MQ:消息队列(message queue): 顾名思义,MQ本质是个队列,FIFO先入先出,只不过队列中存放的内容是message,还是一种跨进程的通信机制,用于上下游传递消息。在互联网架构中,MQ是一种非常常见的上下游“逻辑解耦+物理解耦”的消息通信服务。使用了MQ之后,消息发送上游只需要依赖MQ,不用依赖其他服务
  • 07.12 15:02:32
    发表了文章 2023-07-12 15:02:32

    如何优雅的记录操作日志

    操作日志几乎存在于每个系统中,而这些系统都有记录操作日志的一套 API。操作日志和系统日志不一样,操作日志必须要做到简单易懂。所以如何让操作日志不跟业务逻辑耦合,如何让操作日志的内容易于理解,如何让操作日志的接入更加简单?上面这些都是本文要回答的问题。我们主要围绕着如何“优雅”地记录操作日志展开描述,希望对从事相关工作的同学能够有所帮助或者启发。
  • 07.12 15:00:39
    发表了文章 2023-07-12 15:00:39

    系统高可用番外篇:浅析sentinel源码

    Sentinel 是面向分布式服务架构的流量控制组件,主要以流量为切入点,从**限流、流量整形、熔断降级、系统负载保护、热点防护**等多个维度来帮助开发者保障微服务的稳定性。
  • 07.12 14:54:16
    发表了文章 2023-07-12 14:54:16

    系统之高可用(二):熔断降级

    分布式系统环境下,服务间类似依赖非常常见,一个业务调用通常依赖多个基础服务。如下图,对于同步调用,当库存服务不可用时,商品服务请求线程被阻塞,当有大批量请求调用库存服务时,最终可能导致整个商品服务资源耗尽,无法继续对外提供服务。并且这种不可用可能沿请求调用链向上传递,这种现象被称为级联故障效应,最终结果导致整个系统服务不可用
  • 07.12 14:52:16
    发表了文章 2023-07-12 14:52:16

    系统高可用(一):限流

    限流是对某一时间窗口内的请求数进行限制,保持系统的可用性和稳定性,防止因流量暴增而导致的系统运行缓慢或宕机
  • 07.12 14:47:54
    发表了文章 2023-07-12 14:47:54

    Java设计模式(三):工厂模式

    工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象
  • 07.12 14:44:53
    发表了文章 2023-07-12 14:44:53

    Java设计模式(二):单例模式

    **单例设计模式**(Singleton Design Pattern)理解起来非常简单。一个类只允许创建一个对象(或者实例),那这个类就是一个单例类,这种设计模式就叫作单例设计模式,简称单例模式
  • 07.12 14:42:34
    发表了文章 2023-07-12 14:42:34

    Java设计模式(一):责任链模式

    将请求的发送和接收解耦,让多个接收对象都有机会处理这个请求。将这些接收对象串成一条链,并沿着这条链传递这个请求,直到链上的某个接收对象能够处理它为止。实际上,责任链模式还有一种变体,那就是请求会被所有接收对象都能处理一遍,直到某个接收对象不能正常处理再退出,或者全部执行一遍,不存在中途终止的情况
  • 07.12 14:37:20
    发表了文章 2023-07-12 14:37:20

    K8S核心篇:Pod

    Pod 是k8s 系统中可以创建和管理的最小单元,是资源对象模型中由用户创建或部署的最小资源对象模型,也是在k8s 上运行容器化应用的资源对象,其他的资源对象都是用来支撑或者扩展Pod 对象功能的,比如控制器对象是用来管控Pod 对象的,Service 或者Ingress 资源对象是用来暴露Pod 引用对象的,PersistentVolume 资源对象是用来为Pod提供存储等等,k8s 不会直接处理容器,而是Pod,Pod 是由一个或多个container 组成。
  • 07.12 14:34:05
    发表了文章 2023-07-12 14:34:05

    K8S基础篇:概念与架构

    **Kubernetes** 是一个可移植的、可扩展的开源平台,用于**管理容器化的工作负载和服务,可促进声明式配置和自动化**。 Kubernetes 拥有一个庞大且快速增长的生态系统。Kubernetes 的服务、支持和工具广泛可用
  • 07.12 14:28:32
    发表了文章 2023-07-12 14:28:32

    docker终极篇:再谈docker容器

    容器其实是一种沙盒技术。顾名思义,沙盒就是能够像一个集装箱一样,把你的应用“装”起来的技术。这样,应用与应用之间,就因为有了边界而不至于相互干扰;而被装进集装箱的应用,也可以被方便地搬来搬去
  • 07.12 14:26:27
    发表了文章 2023-07-12 14:26:27

    docker高级篇:镜像原理和Dockerfile

    镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容,包括代码、运行时、库、环境变量和配置文件
  • 07.12 14:23:45
    发表了文章 2023-07-12 14:23:45

    docker基础篇:概念和命令

    Docker是一种应用容器引擎。首先说一下何为容器,Linux系统提供了`Namespace`和`CGroup`技术实现环境隔离和资源控制,其中Namespace是Linux提供的一种内核级别环境隔离的方法,能使一个进程和该进程创建的子进程的运行空间都与Linux的超级父进程相隔离,注意Namespace只能实现运行空间的隔离,物理资源还是所有进程共用的,为了实现资源隔离,Linux系统提供了CGroup技术来控制一个进程组群可使用的资源(如CPU、内存、磁盘IO等),把这两种技术结合起来,就能构造一个用户空间独立且限定了资源的对象,这样的对象称为容器。
  • 07.12 10:56:04
    发表了文章 2023-07-12 10:56:04

    浅析ThreadLocal使用及实现原理

    提供了线程局部 (thread-local) 变量。这些变量不同于它们的普通对应物,因为访问某个变量(通过其`get` 或 `set`方法)的每个线程都有自己的局部变量,它独立于变量的初始化副本。`ThreadLocal`实例通常是类中的 private static 字段,它们希望将状态与某一个线程(例如,用户 ID 或事务 ID)相关联 。所以ThreadLocal与线程同步机制不同,线程同步机制是多个线程共享同一个变量,而ThreadLocal是为每一个线程创建一个单独的变量副本,故而每个线程都可以独立地改变自己所拥有的变量副本,而不会影响其他线程所对应的副本。可以这么说Th
  • 07.06 16:39:34
    发表了文章 2023-07-06 16:39:34

    Java独有特性:注解(annotation)

    注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。它本身并不起任何作用,可以说有它没它都不影响程序的正常运行,注解的作用在于**「注解的处理程序」**,注解处理程序通过捕获
  • 07.06 16:37:35
    发表了文章 2023-07-06 16:37:35

    JavaSE高级特性:反射

    Java反射是框架的灵魂,大量框架底层都用到了反射机制,例如Spring.... Java反射是在**运行状态时**,可以构造任何一个类的对象,获取到任意一个对象所属的类信息,以及这个类的成员变量或者方法,可以调用任意一个对象的属性或者方法。可以理解为具备了**动态加载对象**以及**对对象的基本信息进行剖析和使用**的能力的一种机制。
  • 07.06 16:28:21
    发表了文章 2023-07-06 16:28:21

    Fluent mybatis

    众多框架都是从无到有,从有到简的一个过程,核心理念都是为简化开发为生。
  • 07.06 16:19:02
    发表了文章 2023-07-06 16:19:02

    Java线程池实现原理详解

    在面向对象编程中,创建和销毁对象是很费时间的,因为创建一个对象要获取内存资源或者其它更多资源。在Java中更是如此,虚拟机将试图跟踪每一个对象,以便能够在对象销毁后进行垃圾回收。所以提高服务程序效率的一个手段就是尽可能减少创建和销毁对象的次数,特别是一些很耗资源的对象创建和销毁。如何利用已有对象来服务就是一个需要解决的关键问题,其实这就是一些"池化资源"技术产生的原因
  • 07.06 16:12:36
    发表了文章 2023-07-06 16:12:36

    浅析动态代理原理与实现

    代理是一种软件设计模式,目的地希望能做到代码重用。具体上讲,代理这种设计模式是通过不直接访问被代理对象的方式,而访问被代理对象的方法。这个就好比 商户---->明星经纪人(代理)---->明星这种模式。我们可以不通过直接与明星对话的情况下,而通过明星经纪人(代理)与其产生间接对话
  • 07.05 11:44:11
    发表了文章 2023-07-05 11:44:11

    抖音数据库解析总结

    抖音数据库解析总结
  • 07.05 11:42:17
    发表了文章 2023-07-05 11:42:17

    QQ数据库解析总结

    QQ数据库解析总结
  • 07.05 11:39:39
    发表了文章 2023-07-05 11:39:39

    微信数据库解析总结

    微信数据库解析总结
  • 07.05 11:34:22
    发表了文章 2023-07-05 11:34:22

    亿级流量短链接地址服务企业级实现

    短链接服务核心就是构建短链接和长链接的唯一映射关系,当浏览器通过短 URL 生成器访问这个短 URL 的时候,重定向访问到原始的长 URL 目标服务器
  • 07.04 17:50:49
    发表了文章 2023-07-04 17:50:49

    Spring循环依赖解决方案

    之前我们对Spring Bean生命周期和Bean实例化、属性填充、初始化、销毁等整体流程进行全面分析与总结,不熟悉的可查看:Spring Bean生命周期。我们也提到在创建Bean过程中贯穿着循环依赖问题,Spring使用三级缓存解决循环依赖,这也是一个重要的知识点,所以我们下面就来看看Spring是如何使用三级缓存解决循环依赖的
  • 07.04 17:43:44
    发表了文章 2023-07-04 17:43:44

    Spring Boot如何优雅实现结果统一封装和异常统一处理

    当下基于`Spring Boot`框架开发的系统几乎都是前后端分离的,也都是基于`RESTFUL`风格进行接口定义开发的,意味着前后端开发大部分数据的传输格式都是json,因此定义一个统一规范的数据格式返回有利于前后端的交互与UI的展示
  • 07.04 17:35:46
    发表了文章 2023-07-04 17:35:46

    Spring Boot项目分布式锁实现方案:Redisson

    `Redisson`是一个在Redis的基础上实现的Java驻内存数据网格(In-Memory Data Grid)。它不仅提供了一系列的分布式的Java常用对象,还提供了许多分布式服务。其中包括(`BitSet`, `Set`, `Multimap`, `SortedSet`, `Map`, `List`, `Queue`, `BlockingQueue`, `Deque`, `BlockingDeque`, `Semaphore`, `Lock`, `AtomicLong`, `CountDownLatch`, `Publish / Subscribe`, `Bloom filter`,
  • 07.04 16:06:59
    发表了文章 2023-07-04 16:06:59

    Spring Boot项目如何实现分布式日志链路追踪

    作为一名后端开发工程师,排查系统问题用得最多的手段之一就是查看系统日志,在当下主要的分布式集群环境中一般使用`ELK(Elasticsearch , Logstash, Kibana)`来统一收集日志,以便后续查看日志定位追踪相关问题。但是在并发情况下,大量的系统用户即多线程并发访问后端服务导致同一个请求的日志记录不再是连续相邻的,此时多个请求的日志是一起串行输出到文件中,所以我们筛选出指定请求的全部相关日志还是比较麻烦的,同时当后端异步处理功能逻辑以及微服务的下游服务调用日志追踪也有着相同的问题。
  • 发表了文章 2023-12-20

    知乎上高频提问:Redis到底是单线程还是多线程程序?

  • 发表了文章 2023-12-01

    既生瑜何生亮,浅析下层出不穷的新ORM框架: MyBatis-Flex

  • 发表了文章 2023-11-21

    你知道MyBaits-Plus有哪些plus高级功能”玩法“吗?

  • 发表了文章 2023-11-10

    MyBatis-plus最详细的入门使用教程来了

  • 发表了文章 2023-11-06

    为了理直气壮怼回去,写了一个日志切面输出接口出入参数

  • 发表了文章 2023-10-16

    Spring Boot如何优雅实现动态灵活可配置的高性能数据脱敏功能

  • 发表了文章 2023-10-12

    详解Zookeeper(铲屎官)在众多中间件的应用和在Spring Boot业务系统中实现分布式锁和注册中心解决方案

  • 发表了文章 2023-10-08

    你知道Spring Boot插件开发模式思想—SPI机制是什么吗?

  • 发表了文章 2023-09-15

    Spring Boot业务系统如何实现海量数据高效实时搜索

  • 发表了文章 2023-08-14

    Spring Boot业务代码中使用@Transactional事务失效踩坑点总结

  • 发表了文章 2023-08-07

    Spring Boot多级缓存实现方案

  • 发表了文章 2023-07-31

    Spring基于AOP事务控制实现原理

  • 发表了文章 2023-07-24

    Spring AOP切面编程实现原理

  • 发表了文章 2023-07-17

    Spring Boot如何优雅实现数据加密存储、模糊匹配和脱敏

  • 发表了文章 2023-07-17

    Spring Boot如何优雅提高接口数据安全性

  • 发表了文章 2023-07-17

    浅析SaaS多租户系统数据隔离实现方案

  • 发表了文章 2023-07-17

    Spring Boot如何优雅实现结果统一封装和异常统一处理

  • 发表了文章 2023-07-17

    Spring循环依赖解决方案

  • 发表了文章 2023-07-17

    Spring Bean生命周期详解

  • 发表了文章 2023-07-17

    Spring扩展点(一):后置处理器PostProcessor

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