自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 收藏
  • 关注

原创 支付超时取消订单实现方案 - 定时任务、延迟队列、消息队列等

在实际业务场景中,我们经常会碰到类似一下场景:+ 淘宝等购物平台在订单支付时,如果30分钟内未支付自动取消。+ 腾讯会议预约会议后,在会议开始前15分钟提醒。+ 未使用的优惠券有效期结束后,自动将优惠券状态更新为已过期。+ 等等。。。像这种支付超时取消的场景需求,其实有很多种实现方法,比如定时任务轮询、Java中的延时队列、时间轮算法、Redis过期监听等

2024-04-19 10:38:36 1004

原创 RocketMQ安装部署+简单实战开发

此部分不做赘述,可从官网查阅说明文档下载地址(建议下载二进制包)安装和启动教程其实官网讲解已经很详细了,所以这里只是详细描述一下启动和停止命令### 启动namesrv, 表示安装好的二进制包中bin目录下的 mqnamesrv 文件地址,使用命令时替换为实际地址即可### 先启动broker 表示安装好的二进制包中bin目录下的 mqbroker 文件地址### -n NameServer地址。

2024-04-13 10:00:00 838

原创 JVM 方法调用之方法分派

如果某个方法在子类中没有被重写,那子类的虚方法表里面的地址入口和父类相同方法的地址入口是一致的,都指向父类的实现入口。为了程序实现上的方便,具有相同签名的方法,在父类、子类的虚方法表中都应当具有一样的索引序号,这样当类型变换时,仅需要变更查找的方法表,就可以从不同的虚方法表中按索引转换出所需的入口地址。动态分派是执行非常频繁的动作,而且动态分派的方法调用版本需要运行时在接收者类型的方法元数据中搜索合适的目标方法,因此,JVM 实现基于执行性能的考虑,真正运行时一般不会如此频繁地去反复搜索类型元数据。

2024-04-11 19:00:00 934

原创 JVM指令:方法调用之解析调用

首先要清楚的是,在Java中,有关字节码文件的编译过程不包含传统程序语言编译的连接步骤,一切方法调用在字节码文件中只是符号引用,而不是在方法在实际运行时内存布局中的入口地址,也就是直接引用。在上一篇文章《探索JVM类加载机制》中,分析了在类加载的解析阶段,会将一部分的符号引用转化为直接引用,这种解析能够成立的前提条件就是:方法在程序真正运行之前就有一个可以确定的调用版本,并且这个方法的调用版本在运行期间是不可变的,也就是该方法调用具有唯一的目标方法。

2024-04-09 22:53:13 801

原创 探索JVM类加载机制

Why?其实,网络上已经有许多有关JVM的干货分享,而且也有许多优质的书籍,例如周志明大佬的《深入理解Java虚拟机》,还有官方发版的《JAVA虚拟机规范》等。但是鄙人每次温故或者解惑的时候,也不会随时随地都有书籍在旁,经常上网查询,而且内容良莠不齐,定位到满足需求文章也浪费时间。所以鄙人就向对技术知识进行具有个人需求特色的归档,同时也温习一下阅读过的优质干货和书籍。以下内容都是基于《深入理解Java虚拟机》和 Oracle的官方文档所总结。

2024-04-09 10:00:00 1243 1

原创 ZooKeeper 实战(五) Curator实现分布式锁

分布式锁是一种用于实现分布式系统中的同步机制的技术。它允许在多个进程或线程之间实现互斥访问共享资源,以避免并发访问时的数据不一致问题。分布式锁的主要目的是在分布式系统中提供类似于全局锁的效果,以确保在任何时刻只有一个进程或线程可以访问特定的资源。zookeeper基于临时有序节点实现分布式锁。每个客户端对某个临界资源加锁时,在zookeeper上的与该临界资源对应的指定节点的目录下,生成一个唯一的临时有序节点。判断是否获取锁的方式很简单,只需要判断临时有序节点中序号最小的那个是否由自身创建。

2024-01-16 16:29:21 665 1

原创 ZooKeeper 实战(四) Curator Watch事件监听

Curator 中提供了三种 Cache(Watcher)来监听不同节点变化类型:+ NodeCache:监听指定的节点。+ PathChildrenCache:监听指定节点的子节点。+ TreeCache:监听指定节点及其子孙节点。

2024-01-12 15:46:31 1195 1

原创 ZooKeeper 实战(三) SpringBoot整合Curator-开发使用篇

Curator是Apache软件基金会下的一个开源框架,目前是Apache下的顶级项目。Curator起初是 Netflix公司开源的一套ZooKeeper客户端框架,后捐献给Apache。和 ZkClient一样,它解决了非常底层的细节开发工作,包括连接、重连、反复注册Watcher的问题以及 NodeExistsException异常等。现在客户端已经配置好了,启动CuratorDemoApplication.class,观察一下是否能够正常启动。观察输出日志,显示如下信息表示客户端连接成功。

2024-01-11 17:10:45 1130

原创 ZooKeeper 实战(二) 命令行操作篇

ZooKeeper允许用户在指定Znode注册 Watcher(绑定监听事件),当特定事件触发时(节点数据变更、节点删除、子节点状态变更等事件),ZooKeeper服务端会将事件通知到注册过该事件Watcher的客户端,该机制是ZooKeeper实现分布式协调服务的重要特性,通过这个事件机制,可以基于ZooKeeper实现分布式锁、集群管理等功能。id表示 用户名:密码。如下所示,是整个acl表达式的形式,除去验证模式和权限控制剩下的,也就是中间内容表示id。:监听节点数据变化,子节点的数据变化不会触发。

2024-01-08 23:25:10 1335 2

原创 ZooKeeper 实战(一) 超详细的单机与集群部署教程(MacOS)

ZooKeeper是一个提供包括配置维护、域名服务、分布式同步、组服务等功能的集中式服务。主要功能如下:分布式锁:Zookeeper可以帮助开发人员实现分布式锁,用于控制多个节点的并发访问。通过Zookeeper的原子广播和顺序一致性特性,可以实现高效且可靠的分布式锁。配置管理:在分布式系统中,节点的配置信息可能需要动态地更改和共享。Zookeeper提供了一个简单而可靠的方式来实现配置的管理,开发人员可以将配置信息存储在Znode中,当配置发生变化时,Zookeeper会及时通知相关的节点。

2024-01-05 16:07:32 1069 1

原创 DBeaver安装与使用教程(MacOS)

DBeaver 是一个通用的数据库管理工具和客户端,几乎支持所有主流的数据库(MySQL, MariaDB, PostgreSQL, SQLite, Clickhouse等)。DBeaver需要JDK1.8以上的环境,使用DBeaver之前电脑需配置好JDK环境。

2024-01-03 12:43:06 2904 1

原创 分布式定时任务(三) Elastic Job 高级使用篇

由于上一篇有关实践的博客更受读者欢迎,本篇将继续分享更多关于 Elastic Job 的一些相对高级用法,以便读者追求更丰富、强大的使用需求。实现JobShardingStrategy接口并实现sharding方法,接口方法参数为作业服务器IP列表和分片策略选项,分片策略选项包括作业名称,分片总数以及分片序列号和个性化参数对照表,可以根据需求定制化自己的分片策略。

2024-01-02 16:36:41 837 1

原创 分布式定时任务(二) Elastic Job 开发使用篇(结合Spring Boot开发分布式任务调度)

在上一篇中我们已经学会了部署ElasticJob,本文将以上一篇部署的项目为基础,讲解有关定时任务作业开发的代码实战。⚠️ 以下所有案例在测试定时任务之前,请先启动ZK。在进行开发之前,需要读者掌握 Ideal 同一项目启动多个实例的能力。首先点击启动类下拉框,选择 Edit Configurations…选择ElasticJobApplicaiton启动类,点击左上角的复制按钮在新增的启动配置中,添加启动参数(设置端口号为9932)

2023-12-27 12:06:55 967 1

原创 分布式定时任务(一) Elastic Job 开发部署实战(结合Spring Boot开发分布式任务调度)

elastic-job是当当网基于Zookepper 、Quartz开源的一个java分布式定时任务,解决了Quartz不支持分布式的弊端.elastic-job由两个相互独立子项目Elastic-Job-Lite 、 Elastic-Job-Cloud组成.Elastic-Job-Lite定位为轻量级无中心化解决方案,使用jar包的形式提供最轻量级的分布式任务的协调服务,外部依赖仅Zookeeper

2023-12-18 15:08:34 1145 1

原创 旁路缓存模式(Cache-Aside Pattern)如何保证一致性的问题

经典缓存模式:旁路缓存模式 (Cache-Aside Pattern)读缓存:接收用户读请求 --> 从缓存中查询数据 --> 命中缓存数据直接返回 --> 未命中则从数据库中查询数据。写缓存:接收用户写请求 --> 先写入数据库 --> 再写入缓存。读/写穿透模式 (Read/Write Through)将缓存操作(具体来说是数据读写操作)封装成一个缓存服务(Cache Provider),所有数据的读写操作都调用这个缓存服务。

2023-12-14 15:47:31 391 1

原创 Java高并发核心编程- Java 内置锁的核心原理

锁对象的锁标志位(lock)被改为01,偏向标志位(biased_lock)被改成1,然后线程的ID记录在锁对象的Mark Word 中(使用CAS 操作完成),以后该线程获取锁时判断一下线程ID 和标志位,就可以直接进入同步块,连CAS 操作都不需要,这样就省去了大量有关锁申请的操作,从而也就提升了程序的性能。​ 线程是操作系统调度的最小单位,有自己的栈空间,可以按照既定的代码逐步执行,但是如果每个线程间都孤立地运行,就会造成资源浪费。重量级锁:会让其他申请的线程之间进入阻塞,性能降低。

2023-08-24 11:10:20 63 1

原创 Java高并发核心编程-多线程原理与实战

​ ThreadLocal 是解决线程安全问题的较好方案,它通过为每个线程提供一个独立的本地值去解决并发冲突问题。ThreadLocal 的英文字面意思为 “ 本地线程 ”,实际上ThreadLocal 代表的是线程的本地变量,可能将其命名为ThreadLocalVariable 更加容易让人理解。Thread的两个静态方法currentThread() 和sleep();执行shutdownNow()执行shutdownNow()执行shutdown()如何优雅的关闭线程池。

2023-08-22 16:00:06 156 1

原创 《Effective Java》(Third Edition) java开发经验分享

3.避免创建不必要的对象:例如String实例,new String("") 和直接赋值是有区别的,可参考《深入理解Java虚拟机:JVM高级特 性与最佳实践》(周志明著),这本书看了两遍(第1,4章简单略过,字节码指令部分粗读),每看一遍都会有新的收 获,了解JVM就如同修炼了”体会:这本书传递了许多用于改进程序和设计的条目,能够避免我们处在学习阶段所学的那些“刻板”知识(主要指教材),因为两者的侧重点不同,教材类知识旨在学习Java,而这类书籍旨在实际运用(掌握好基础知识的前提下)。

2023-08-04 16:24:22 62 1

原创 凸优化: 障碍函数法

一般约束问题的内点法(障碍函数法)

2021-12-25 23:05:34 2003

原创 凸优化: 惩罚函数之内罚函数法(等式消除的newton法,一般约束问题的障碍函数法)

相信不少小伙伴在学习惩罚函数时会遇到不少障碍,接下来我将从结合个人学习过程,通过例题给小伙伴们讲解一下自己的见解。 这里由于外罚函数法的等式约束和不等式约束相对而言较容易,网上有很多很好讲解,感兴趣的小伙伴可以去搜一下。 这里我就只介绍一下一般约束问题。例如我们现在有一个例题:求解首先,求罚函数可得增广目标函数为...

2021-12-25 18:37:25 1804 1

原创 java写netcrawler

目录1.网页源代码... 22.网站的图片... 23.全站最佳小说... 24.小说文字... 21.网页源代码import java.io.*;import java.net.URL;public class RetrivePage { public static String downloadPage(String url,String filepath) throws IOException { URL pageURL = new URL(

2021-12-19 21:59:59 262

原创 XML实验报告(XML,DTD,SCHEMA,XPATH,XSLT,利用JAVA对XML进行读写操作)

〇、XML课程设计要求... 31.课程设计说明:... 32.课程设计要求... 3一、场景选取... 41.场景描述... 42.层次数据模型... 43.用表格表示... 5二、XML文档编写... 61. XML文档代码... 62. 格式良好验证... 83. grid视图... 8三、DTD和SCHEMA.. 101.DTD文件... 102.SCHEMA文件... 11四、XPATH.. 131.查看所有老师的姓名... 132.

2021-12-18 22:12:21 3357 23

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除