- 博客(18)
- 收藏
- 关注
原创 微服务架构设计:探究服务注册中心,深入分析Nacos服务注册原理
在介绍注册中心之前,我们不妨先来考虑这样一个场景。假设现在你所负责系统包含两个微服务即服务A和服务B。由于服务并未采用原先的单体架构,这也就导致如果需要进行服务间的通信时,不能像之前那样通过Bean注入的方式来完成业务间的调用。这主要是因为在微服务的架构风格下,由于不同的服务间相互部署,所以服务间的通信需要通过Http来完成。因此服务A和服务B的通信,需要借助网络来完成服务间的通信。进一步,根据网络通信的知识,我们知道如果要借助Http来进行网络通信的话,需要要知道目标服务的IP和端口信息。
2024-11-04 14:06:48
762
原创 Java历代版本中对多线程的支持以及背后适应现代计算需求的发展趋势
Java多线程支持的演进背后体现了一种逐步适应现代计算需求的发展趋势。每一阶段的改进都针对了特定的编程需求和硬件趋势,致力于让并发编程更高效、易用且适合更广泛的场景。
2024-11-04 14:04:21
615
原创 SpringBoot整合Hmily实现TCC分布式事务
首先我们创建三个springboot项目大家不要在意项目名称了,我就随意取的,大家好创建好三个服务然后在和服务的resources目录下创建文件,文件内容如下:yaml代码解读复制代码然后我们需要创建一个的数据库。
2024-11-04 14:03:06
268
原创 什么是分布式系统中的幂等性?
在数学中,如果多次应用一个操作产生的结果与应用一次相同,那么这个操作就是幂等的。比如,绝对值函数是幂等的:||-8|| = |-8| = 8。分布式系统的幂等性(Idempotency)源自数学中的概念,在分布式系统中,幂等性通常指一个操作可以被重复执行一次或多次,但结果总是相同,不会造成系统状态发生非预期的改变。这意味着,在发生网络失败、超时或其他错误时,客户端可以安全地重试请求而不必担心恶化错误。
2024-11-04 14:00:43
592
原创 谈谈在大环境低迷下,找工作和入职三个月后的感受
今天是新公司入职后的三个多月了个人也是如愿的转正了,对于我个人而言此时的心情好像没有三个月前刚拿到offer那样的喜悦和兴奋了,更像一件很普通的事情在你身边发生了吧。从2023年底离职在到2024年初开始找工作中间休息了三个月,找工作到入职花了一个多月,在这个过程中也是第一次真真切切感受到了所谓大环境低迷下的“前端已死的言论”,也给大家分享一下自己入职三个月的个人感受吧。
2024-11-02 23:59:45
971
原创 利用 Web 浏览器构建 Java Media Player
每种方法都有其优缺点:JavaFX Media API 方法是跨平台的,适用于 Windows、Linux 和 macOS。它在 JavaFX 中运作良好。但是,如果您使用 Swing 或 SWT,则需要诸如JFXPanel和FXCanvas这样的桥接器。封装本机媒体播放器的功能需要为每个平台单独进行配置,因为播放器可能不支持所有必需的平台。例如,VLCJ 就不支持 Linux。此外,您可能还需要在目标平台上安装缺失的视频和音频编解码器,以播放各种媒体格式。
2024-11-01 13:49:48
662
原创 什么?你让我自定义sw的traceId规则?
修改sw8跨进程头部协议,这个方式会让skywalking收集到错误的信息,如:链路的跨度信息。根据父委托机制,在项目里重写一个类,自定义规则。(打成jar包不生效了,目前不知道原因)重写源码,这是最简单直接的方式。自定义一个探针,在字节码层面上对生成traceId的方法进行拦截。其中3,4是肯定可以的,特别是方法3。
2024-11-01 13:49:11
979
原创 算法Day13|110-平衡二叉树;257-二叉树的所有路径;404-左叶子之和;222-完全二叉树的节点个数
的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。:在递归的本层处理逻辑中,判断节点是否为左叶子是无法判断的,必须要通过节点的父节点来判断其左孩子是不是左叶子。如果该节点的左节点不为空,且该节点的左节点的左节点为空,且该节点的左节点的右节点为空,则找到一个左叶子。我们的逻辑是处理找到叶子节点,当cur 不为空,且左右孩子都为空的时候,就找到叶子节点/,返回所有从根节点到叶子节点的路径。是指没有子节点的节点。
2024-11-01 13:48:39
513
原创 详解Spring Boot 启动时执行特定代码逻辑的实现方案
接下来我将一一讲述实现方式,这些操作的源码流程已经在启动过程总结一文中详细叙述过, 这里就只做定义解析和案例展示了,关于源码实现细节可跳转链接查看哈。
2024-11-01 13:47:47
643
原创 go的生态真的一言难尽
通过这个构建工具,你可以轻松管理 Go 项目的依赖、构建过程和发布任务。安装构建工具:使用安装脚本或手动下载二进制文件。配置项目:创建build.yaml文件,定义依赖、构建任务和发布任务。执行任务:通过命令行执行构建、测试、清理等任务。发布项目:将项目的构建产物发布到 GitHub 或其他平台。
2024-10-31 13:39:06
1147
原创 开发属于自己的微服务框架--从现在开始
相信很多 Java 程序员都有从一个 2~3 人初创阶段的团队到百人规模技术团队的演变的经历,也会见证了技术栈和系统架构从传统到现代的变迁。从最初使用的JSP,到如今前后端分离+SpringCloud的微服务架构。我们的技术、架构和运维模式经历了翻天覆地的变化。随着公司的发展,老板钱多了想做大做强、招架构师、招总监、系统用户量大了等问题,所以系统需要升级,需要改造,那么必经之路就是微服务架构的应用。微服务架构其实就是把一个大应用拆成一堆小服务。每个服务负责特定的功能,能独立开发和部署。
2024-10-31 13:36:55
728
原创 高并发神器!ConcurrentHashMap为何如此高效?
高并发性能:JDK 1.8后的ConcurrentHashMap通过CAS操作和synchronized,避免了全面锁的低效问题,锁的粒度更小,提高了整体并发性。高效数据结构:引入红黑树,提升了查询效率,使得冲突严重的情况下,依然能保持较高的访问效率。分段扩容:扩容过程可由多个线程协作进行,进一步提升了多线程环境下的性能表现。
2024-10-31 13:35:43
912
原创 重学Java设计模式-抽象工厂模式
抽象工厂模式(Abstract Factory Pattern)是一种创建型设计模式,它提供了一种方式,用于创建一系列相关或相互依赖的对象,而不需要指定它们具体的类。抽象工厂模式允许系统在不指定具体类的情况下,通过配置或参数来选择需要的工厂子类,从而创建出所需的对象抽象工厂模式和工厂方法模式的区别:工厂方法模式主要用于创建一个具体类的实例,这个类有一个共同的父类或接口。它关注于处理对象的创建。抽象工厂模式用于创建一系列相关或相互依赖的对象,这些对象通常属于同一个产品族。简单选取了菜单栏,工具栏,编辑器。
2024-10-31 13:33:52
428
原创 2024年JAVA面试八股文之线程中的并发锁
CAS的全称是: Compare And Swap(比较再交换),它体现的一种乐观锁的思想,在无锁情况下保证线程操作共享数据的原子性。在JUC( java.util.concurrent )包下实现的很多类都用到了CAS操作AbstractQueuedSynchronizer(AQS框架)AtomicXXX类线程1与线程2都从主内存中获取变量int a = 100,同时放到各个线程的工作内存中。
2024-10-30 21:38:13
1134
1
原创 使用IntelliJ IDEA中的Live Templates自定义代码模板
平时用IntelliJ IDEA写代码的时候,你有没有用过这些快捷方式:输入,会弹出自动补全完整的结构:输入,会弹出自动补全完整的语句:那么问题来了:该功能来自于IntelliJ IDEA的Live Templates配置,你可以通过菜单进入,然后搜索找到它:点开就能看预定义的模板了:不是很多,可以挑你常用的记一下即可。如果要定义要用的模板,可以点击上面的:选择之后在下面会看到一个编辑框:根据自己需要填写要创建的快捷模板内容。最后记得保存,就可以成功创建了。尝试在编码框内输入上面定义的快捷方式:,就可以用到
2024-10-30 21:31:26
325
原创 手写实现简易版本的Redission分布式锁
我们从一个简单的扣减库存例子开始js代码解读复制代码如果在并发情况下,是有可能发生超卖的情况的,为了避免这种情况发生,我们一般采取的方案之一就是加锁。
2024-10-30 21:30:11
505
原创 JDK高性能套路: 自旋(for(;;)) + CAS
自旋(for(;;)) + CAS 实现无锁并发控制。理解这个套路,对于掌握很多并发包中的源码非常有帮助。当然这个套路也能运用到日常工作中,实现无锁并发控制。但需要注意:CAS 存在 ABA 问题自旋会持有 CPU,避免大量线程、长时间自旋一定要控制退出条件。
2024-10-30 21:29:16
793
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人