javaedge_社区达人页

关注公众号:JavaEdge,后台回复面试,领取更多大厂求职资源。曾在百度、携程、华为等大厂搬砖,专注Java生态各种中间件原理、框架源码、微服务、中台等架构设计及落地实战,只生产硬核干货!

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

2021年12月

  • 12.24 15:07:12
    发表了文章 2021-12-24 15:07:12

    Redis可重入锁的实现设计(下)

    但是仍然有些场景是不满⾜的,例如⼀ 个⽅法获取到锁之后,可能在⽅法内调这个⽅法此时就获取不到锁了。这个时候我们就需要把锁改进成可 重⼊锁了。 重⼊锁,指的是以线程为单位,当⼀个线程获取对象锁之后,这个线程可以再次获取本对象上的锁,⽽其 他的线程是不可以的。可重⼊锁的意义在于防⽌死锁。 实现原理是通过为每个锁关联⼀个请求计数器和⼀个占有它的线程。当计数为 0 时,认为锁是未被占有 的;线程请求⼀个未被占有的锁时,JVM 将记录锁的占有者,并且将请求计数器置为 1 。 如果同⼀个线程再次请求这个锁,计数将递增;每次占⽤线程退出同步块,计数器值将递减。直到计数器 为 0, 锁被释放。
  • 12.24 15:05:04
    发表了文章 2021-12-24 15:05:04

    Redis可重入锁的实现设计(上)

    但是仍然有些场景是不满⾜的,例如⼀ 个⽅法获取到锁之后,可能在⽅法内调这个⽅法此时就获取不到锁了。这个时候我们就需要把锁改进成可 重⼊锁了。 重⼊锁,指的是以线程为单位,当⼀个线程获取对象锁之后,这个线程可以再次获取本对象上的锁,⽽其 他的线程是不可以的。可重⼊锁的意义在于防⽌死锁。 实现原理是通过为每个锁关联⼀个请求计数器和⼀个占有它的线程。当计数为 0 时,认为锁是未被占有 的;线程请求⼀个未被占有的锁时,JVM 将记录锁的占有者,并且将请求计数器置为 1 。 如果同⼀个线程再次请求这个锁,计数将递增;每次占⽤线程退出同步块,计数器值将递减。直到计数器 为 0, 锁被释放。
  • 12.24 15:03:05
    发表了文章 2021-12-24 15:03:05

    Redis解决库存超卖问题(下)

    商品服务的库存变化时,通过 MQ 通知订单服务库存变化。
  • 12.24 15:01:57
    发表了文章 2021-12-24 15:01:57

    Redis解决库存超卖问题(上)

    商品服务的库存变化时,通过 MQ 通知订单服务库存变化。
  • 12.24 15:00:12
    发表了文章 2021-12-24 15:00:12

    JUnit单元测试报错NoClassDefFoundError: org/junit/platform/launcher/core/LauncherFactory

    因为 JUnit 5 = JUnit Platform + JUnit Jupiter + JUnit Vintage JUnit Platform是提供了运行(测试框架)环境的平台 JUnit Jupiter 是新的Junit5(子项目提供了一个基于平台测试运行Jupiter的测试引擎) JUnit Vintage提供了Junit3/4的测试引擎(向前兼容) 所以这里报错的原因应该是:缺少对应依赖()。
  • 12.24 14:58:43
    发表了文章 2021-12-24 14:58:43

    教你微信IM即时消息系统的架构设计(下)

    IM系统组成 用户账号 聊天的参与需要用户,所以需要有一个用户账号,用来给用户提供唯一标识,以及头像、昵称等可供设置的选项 账号关系 账号之间通过某些方式(比如加好友、互关等)构成账号间关系网 联系人列表 你的好友列表或聊天对象的列表。其中你可选择一个联系人进行聊天互动等操作 消息 在聊天互动这个环节产生了消息 聊天会话 你和对方的聊天消息记录就组成了一个聊天会话,在会话里能看到你们之间所有的互动消息
  • 12.24 14:57:48
    发表了文章 2021-12-24 14:57:48

    教你微信IM即时消息系统的架构设计(中)

    IM系统组成 用户账号 聊天的参与需要用户,所以需要有一个用户账号,用来给用户提供唯一标识,以及头像、昵称等可供设置的选项 账号关系 账号之间通过某些方式(比如加好友、互关等)构成账号间关系网 联系人列表 你的好友列表或聊天对象的列表。其中你可选择一个联系人进行聊天互动等操作 消息 在聊天互动这个环节产生了消息 聊天会话 你和对方的聊天消息记录就组成了一个聊天会话,在会话里能看到你们之间所有的互动消息
  • 12.24 14:56:59
    发表了文章 2021-12-24 14:56:59

    教你微信IM即时消息系统的架构设计(上)

    IM系统组成 用户账号 聊天的参与需要用户,所以需要有一个用户账号,用来给用户提供唯一标识,以及头像、昵称等可供设置的选项 账号关系 账号之间通过某些方式(比如加好友、互关等)构成账号间关系网 联系人列表 你的好友列表或聊天对象的列表。其中你可选择一个联系人进行聊天互动等操作 消息 在聊天互动这个环节产生了消息 聊天会话 你和对方的聊天消息记录就组成了一个聊天会话,在会话里能看到你们之间所有的互动消息
  • 12.24 14:44:34
    发表了文章 2021-12-24 14:44:34

    ReactJS实战之生命周期(下)

    组件初始化: 先调用getDefaultProps() getInitialState() render 第一次 render 后,调用 componentWillMount、componentDidMount 之后:componentWillUpdate、componentDidUpdate 这些流程就是为了形成钩子方法。
  • 12.24 14:42:06
    发表了文章 2021-12-24 14:42:06

    ReactJS实战之生命周期(中)

    组件初始化: 先调用getDefaultProps() getInitialState() render 第一次 render 后,调用 componentWillMount、componentDidMount 之后:componentWillUpdate、componentDidUpdate 这些流程就是为了形成钩子方法。
  • 12.24 14:39:04
    发表了文章 2021-12-24 14:39:04

    ReactJS实战之生命周期(上)

    组件初始化: 先调用getDefaultProps() getInitialState() render 第一次 render 后,调用 componentWillMount、componentDidMount 之后:componentWillUpdate、componentDidUpdate 这些流程就是为了形成钩子方法。
  • 12.24 14:36:06
    发表了文章 2021-12-24 14:36:06

    案例教你一步步设计DDD微服务项目(下)

    DDD战略设计从事件风暴开始,然后我们要找出实体等领域对象,找出聚合根构建聚合,划分限界上下文,建立领域模型。 战术设计从事件风暴的命令开始,识别和设计服务,建立各层服务的依赖关系,设计微服务内的实体和值对象,找出微服务中所有的领域对象,并建立领域对象与代码对象的映射关系。
  • 12.24 14:34:20
    发表了文章 2021-12-24 14:34:20

    案例教你一步步设计DDD微服务项目(中)

    DDD战略设计从事件风暴开始,然后我们要找出实体等领域对象,找出聚合根构建聚合,划分限界上下文,建立领域模型。 战术设计从事件风暴的命令开始,识别和设计服务,建立各层服务的依赖关系,设计微服务内的实体和值对象,找出微服务中所有的领域对象,并建立领域对象与代码对象的映射关系。
  • 12.24 14:30:35
    发表了文章 2021-12-24 14:30:35

    案例教你一步步设计DDD微服务项目(上)

    DDD战略设计从事件风暴开始,然后我们要找出实体等领域对象,找出聚合根构建聚合,划分限界上下文,建立领域模型。 战术设计从事件风暴的命令开始,识别和设计服务,建立各层服务的依赖关系,设计微服务内的实体和值对象,找出微服务中所有的领域对象,并建立领域对象与代码对象的映射关系。
  • 12.24 14:27:29
    发表了文章 2021-12-24 14:27:29

    DDD领域驱动设计实战-服务和数据在微服务各层协作的最佳实践(下)

    按分层架构设计出的微服务,其内部各层服务主要功能和职责如下:Facade服务、应用服务、领域服务、基础服务
  • 12.24 14:25:58
    发表了文章 2021-12-24 14:25:58

    DDD领域驱动设计实战-服务和数据在微服务各层协作的最佳实践(中)

    按分层架构设计出的微服务,其内部各层服务主要功能和职责如下:Facade服务、应用服务、领域服务、基础服务
  • 12.24 14:23:28
    发表了文章 2021-12-24 14:23:28

    DDD领域驱动设计实战-服务和数据在微服务各层协作的最佳实践(上)

    按分层架构设计出的微服务,其内部各层服务主要功能和职责如下:Facade服务、应用服务、领域服务、基础服务
  • 12.24 14:19:17
    发表了文章 2021-12-24 14:19:17

    前端基础:node.js、npm、webpack(下)

    前端基础:node.js、npm、webpack
  • 12.24 14:16:31
    发表了文章 2021-12-24 14:16:31

    前端基础:node.js、npm、webpack(中)

    前端基础:node.js、npm、webpack
  • 12.24 14:14:04
    发表了文章 2021-12-24 14:14:04

    前端基础:node.js、npm、webpack(上)

    前端基础:node.js、npm、webpack
  • 12.24 14:01:07
    发表了文章 2021-12-24 14:01:07

    DDD领域驱动设计实战-微服务架构演进的关键:边界(下)

    微服务的设计要涉及到逻辑边界、物理边界和代码边界等。 逻辑边界:微服务内聚合之间的边界是逻辑边界。它是一个虚拟的边界,强调业务的内聚,可根据需要变成物理边界,也就是说聚合也可以独立为微服务。 物理边界:微服务之间的边界是物理边界。它强调微服务部署和运行的隔离,关注微服务的服务调用、容错和运行等。 代码边界:不同层或者聚合之间代码目录的边界是代码边界。它强调的是代码之间的隔离,方便架构演进时代码的重组。
  • 12.24 13:59:39
    发表了文章 2021-12-24 13:59:39

    DDD领域驱动设计实战-微服务架构演进的关键:边界(上)

    微服务的设计要涉及到逻辑边界、物理边界和代码边界等。 逻辑边界:微服务内聚合之间的边界是逻辑边界。它是一个虚拟的边界,强调业务的内聚,可根据需要变成物理边界,也就是说聚合也可以独立为微服务。 物理边界:微服务之间的边界是物理边界。它强调微服务部署和运行的隔离,关注微服务的服务调用、容错和运行等。 代码边界:不同层或者聚合之间代码目录的边界是代码边界。它强调的是代码之间的隔离,方便架构演进时代码的重组。
  • 12.24 12:09:09
    发表了文章 2021-12-24 12:09:09

    领域对象映射到微服务代码模型(下)

    将领域对象映射到微服务代码模型中。DDD强调 先构建领域模型 然后设计微服务 以保证领域模型和微服务的一体性。但在构建领域模型时,我们往往是在业务视角,并且有些领域对象还带业务语言。我们还需要将领域模型作为微服务设计的输入,对领域对象进行设计和转换,让领域对象与代码对象建立映射关系。
  • 12.24 11:56:52
    发表了文章 2021-12-24 11:56:52

    领域对象映射到微服务代码模型(中)

    将领域对象映射到微服务代码模型中。DDD强调 先构建领域模型 然后设计微服务 以保证领域模型和微服务的一体性。但在构建领域模型时,我们往往是在业务视角,并且有些领域对象还带业务语言。我们还需要将领域模型作为微服务设计的输入,对领域对象进行设计和转换,让领域对象与代码对象建立映射关系。
  • 12.24 11:53:53
    发表了文章 2021-12-24 11:53:53

    领域对象映射到微服务代码模型(上)

    将领域对象映射到微服务代码模型中。DDD强调 先构建领域模型 然后设计微服务 以保证领域模型和微服务的一体性。但在构建领域模型时,我们往往是在业务视角,并且有些领域对象还带业务语言。我们还需要将领域模型作为微服务设计的输入,对领域对象进行设计和转换,让领域对象与代码对象建立映射关系。
  • 12.24 11:50:55
    发表了文章 2021-12-24 11:50:55

    Go实战(三)-数组array、切片slice语法详解(下)

    数组:同一种数据类型的固定长度的序列。 切片是数组的一个引用,因此切片是引用类型。但自身是结构体,值拷贝传递。 切片的长度可以改变,因此,切片是一个可变的数组。
  • 12.24 11:46:30
    发表了文章 2021-12-24 11:46:30

    Go实战(三)-数组array、切片slice语法详解(上)

    数组:同一种数据类型的固定长度的序列。 切片是数组的一个引用,因此切片是引用类型。但自身是结构体,值拷贝传递。 切片的长度可以改变,因此,切片是一个可变的数组。
  • 12.24 11:16:53
    发表了文章 2021-12-24 11:16:53

    JDK为何自己首先破坏双亲委派模型?(下)

    当一个类加载器收到一个类加载请求 在 JDK9 后,会首先搜索它的内建加载器定义的所有“具名模块”: 如果找到合适的模块定义,将会使用该加载器来加载 如果未找到,则会将该请求委派给父级加载器去加载 因此所有的类加载请求最终都应该被传入到启动类加载器(Bootstrap ClassLoader)中,只有当父级加载器反馈无法完成这个列的加载请求时(它的搜索范围内不存在这个类),子级加载器才尝试加载。 在类路径下找到的类将成为这些加载器的无名模块。
  • 12.24 11:13:21
    发表了文章 2021-12-24 11:13:21

    JDK为何自己首先破坏双亲委派模型?(上)

    当一个类加载器收到一个类加载请求 在 JDK9 后,会首先搜索它的内建加载器定义的所有“具名模块”: 如果找到合适的模块定义,将会使用该加载器来加载 如果未找到,则会将该请求委派给父级加载器去加载 因此所有的类加载请求最终都应该被传入到启动类加载器(Bootstrap ClassLoader)中,只有当父级加载器反馈无法完成这个列的加载请求时(它的搜索范围内不存在这个类),子级加载器才尝试加载。 在类路径下找到的类将成为这些加载器的无名模块。
  • 12.24 11:09:58
    发表了文章 2021-12-24 11:09:58

    Java9模块化编程

    new 一个 module-info.java 即可
  • 12.24 11:09:05
    发表了文章 2021-12-24 11:09:05

    ASM 字节码增强框架详解(下)

    ASM是Java中比较流行的用来读写字节码的类库,用来基于字节码层面对代码进行分析和转换。 ASM是一个Java字节码操纵框架,它能被用来动态生成类或者增强既有类的功能。 ASM可以直接产生二进制class文件,也可在类被加载入虚拟机之前动态改变类行为, ASM从类文件中读入信息后,能够改变类行为,分析类信息,甚至能根据要求生成新类。目前许多框架如cglib、Hibernate、 Spring都直接或间接使用ASM操作字节码。
  • 12.24 11:07:50
    发表了文章 2021-12-24 11:07:50

    ASM 字节码增强框架详解(上)

    ASM是Java中比较流行的用来读写字节码的类库,用来基于字节码层面对代码进行分析和转换。 ASM是一个Java字节码操纵框架,它能被用来动态生成类或者增强既有类的功能。 ASM可以直接产生二进制class文件,也可在类被加载入虚拟机之前动态改变类行为, ASM从类文件中读入信息后,能够改变类行为,分析类信息,甚至能根据要求生成新类。目前许多框架如cglib、Hibernate、 Spring都直接或间接使用ASM操作字节码。
  • 12.24 11:03:58
    发表了文章 2021-12-24 11:03:58

    ASM基础教程-方法

    本文解释如何用核心 ASM API 生成和转换已编译的方法。首先介绍编译后的方法,然后介绍 用于生成和转换它们的相应 ASM 接口、组件和工具,并给出大量说明性示例。
  • 12.24 11:01:26
    发表了文章 2021-12-24 11:01:26

    Java微服务选型Dubbo V.S SpringCloud(下)

    若业务场景仅一种语言,可选择跟语言绑定的RPC框架 如果涉及多个语言平台之间的相互调用,必须选择跨语言平台的RPC框架。 支持多语言是RPC框架未来的发展趋势。正是基于此判断,各个RPC框架都提供了Sidecar组件来支持多语言平台之间的RPC调用。
  • 12.24 10:58:44
    发表了文章 2021-12-24 10:58:44

    Java微服务选型Dubbo V.S SpringCloud(上)

    若业务场景仅一种语言,可选择跟语言绑定的RPC框架 如果涉及多个语言平台之间的相互调用,必须选择跨语言平台的RPC框架。 支持多语言是RPC框架未来的发展趋势。正是基于此判断,各个RPC框架都提供了Sidecar组件来支持多语言平台之间的RPC调用。
  • 12.24 10:55:32
    发表了文章 2021-12-24 10:55:32

    图解什么是Java虚拟机(JVM)

    JVM : Java Virtual Machine ,也就是Java虚拟机。 虚拟机是指:通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的计算机系统。 JVM是通过软件来模拟Java字节码的指令集,是Java程序的运行环境。
  • 12.24 10:51:42
    发表了文章 2021-12-24 10:51:42

    原来阿里华为等大厂都是这么设计微服务接口的!(下)

    第一,针对响应体的设计混乱、响应结果的不明确问题,服务端需要明确响应体每一个字段的意义,以一致的方式进行处理,并确保不透传下游服务的错误。 第二,针对接口版本控制问题,主要就是在开发接口之前明确版本控制策略,以及尽量使用统一的版本控制策略两方面。 第三,针对接口的处理方式,我认为需要明确要么是同步要么是异步。如果API列表中既有同步接口也有异步接口,那么最好直接在接口名中明确。
  • 12.24 10:45:39
    发表了文章 2021-12-24 10:45:39

    原来阿里华为等大厂都是这么设计微服务接口的!(中)

    第一,针对响应体的设计混乱、响应结果的不明确问题,服务端需要明确响应体每一个字段的意义,以一致的方式进行处理,并确保不透传下游服务的错误。 第二,针对接口版本控制问题,主要就是在开发接口之前明确版本控制策略,以及尽量使用统一的版本控制策略两方面。 第三,针对接口的处理方式,我认为需要明确要么是同步要么是异步。如果API列表中既有同步接口也有异步接口,那么最好直接在接口名中明确。
  • 12.24 10:41:50
    发表了文章 2021-12-24 10:41:50

    原来阿里华为等大厂都是这么设计微服务接口的!(上)

    第一,针对响应体的设计混乱、响应结果的不明确问题,服务端需要明确响应体每一个字段的意义,以一致的方式进行处理,并确保不透传下游服务的错误。 第二,针对接口版本控制问题,主要就是在开发接口之前明确版本控制策略,以及尽量使用统一的版本控制策略两方面。 第三,针对接口的处理方式,我认为需要明确要么是同步要么是异步。如果API列表中既有同步接口也有异步接口,那么最好直接在接口名中明确。
  • 12.24 10:34:09
    发表了文章 2021-12-24 10:34:09

    DDD领域驱动设计实战(六)-领域服务(下)

    DDD领域驱动设计实战(六)-领域服务
  • 12.24 10:32:10
    发表了文章 2021-12-24 10:32:10

    DDD领域驱动设计实战(六)-领域服务(中)

    DDD领域驱动设计实战(六)-领域服务
  • 12.24 10:29:44
    发表了文章 2021-12-24 10:29:44

    DDD领域驱动设计实战(六)-领域服务(上)

    DDD领域驱动设计实战(六)-领域服务
  • 12.24 10:27:38
    发表了文章 2021-12-24 10:27:38

    微服务服务器集群Session管理演进史(下)

    微服务服务器集群Session管理演进史
  • 12.24 10:25:33
    发表了文章 2021-12-24 10:25:33

    微服务服务器集群Session管理演进史(上)

    微服务服务器集群Session管理演进史
  • 12.24 10:23:00
    发表了文章 2021-12-24 10:23:00

    DDD领域驱动设计实战-分层架构及代码目录结构(下)

    DDD领域驱动设计实战-分层架构及代码目录结构
  • 12.24 10:19:50
    发表了文章 2021-12-24 10:19:50

    DDD领域驱动设计实战-分层架构及代码目录结构(中)

    DDD领域驱动设计实战-分层架构及代码目录结构
  • 12.24 10:16:25
    发表了文章 2021-12-24 10:16:25

    DDD领域驱动设计实战-分层架构及代码目录结构(上)

    DDD领域驱动设计实战-分层架构及代码目录结构
  • 12.24 10:11:50
    发表了文章 2021-12-24 10:11:50

    微服务监控系统Skywalking下载安装与启动

    微服务监控系统Skywalking下载安装与启动
  • 12.24 10:09:54
    发表了文章 2021-12-24 10:09:54

    Linux内核实战(二)-操作系统概述(下)

    Linux内核实战(二)-操作系统概述
  • 12.24 10:05:38
    发表了文章 2021-12-24 10:05:38

    Linux内核实战(二)-操作系统概述(上)

    Linux内核实战(二)-操作系统概述
  • 发表了文章 2025-04-18

    释放数据潜力:利用 MCP 资源让大模型读懂你的服务器

  • 发表了文章 2025-02-11

    免费+数据安全!手把手教你在PC跑DeepSeek-R1大模型,小白也能秒变AI大神!

  • 发表了文章 2025-02-11

    DeepSeek-R1论文细节时间线梳理

  • 发表了文章 2025-02-11

    三分钟让Dify接入Ollama部署的本地大模型!

  • 发表了文章 2025-02-11

    Java工程师如何理解张量?

  • 发表了文章 2025-01-02

    【阿里云云服务诊断】调研报告

  • 发表了文章 2024-11-01

    ES常见Index API操作最佳实践!

  • 发表了文章 2024-10-31

    Elasticsearch 复制模型揭秘:如何保持数据一致性?

  • 发表了文章 2024-10-30

    set 方法是坏味道?

  • 发表了文章 2024-10-29

    Java8函数式接口Function<T, R> 的意义和应用场景

  • 发表了文章 2024-10-28

    为什么“低代码”是未来趋势?

  • 发表了文章 2024-10-27

    全面理解Maven Compiler Plugin-Maven编译插件

  • 发表了文章 2024-10-26

    不懂数据分析思维?怪不得你一直被淘汰!

  • 发表了文章 2024-10-25

    Java 中线程和纤程Fiber的区别是什么?

  • 发表了文章 2024-10-24

    真没想到!虚拟线程竟然这样提高程序效率!

  • 发表了文章 2024-10-23

    颠覆编程!通义灵码、包阅AI、CodeGeeX三大AI助手解锁无限潜力!

  • 发表了文章 2024-10-22

    Redis Quicklist 竟让内存占用狂降50%?

  • 发表了文章 2024-10-21

    别再用老旧架构了!单元化构建超强弹性和容错系统!

  • 发表了文章 2024-10-20

    单元化架构,分布式系统的新王!

  • 发表了文章 2024-10-19

    Java21虚拟线程:我的锁去哪儿了?

正在加载, 请稍后...
滑动查看更多
  • 回答了问题 2020-05-12

    Java 为什么不支持多继承? #Java

    因为 c++里类的多继承问题太多,前面两个也都说了,但为了持有这个特性,更简单的接口来了
    踩0 评论0
正在加载, 请稍后...
滑动查看更多
正在加载, 请稍后...
暂无更多信息