从零实现永续合约核心引擎:撮合、保证金与风控

本文通过一个纯 Java(无任何第三方依赖)的 Demo 项目,拆解中心化交易所(CEX)永续合约(Perpetual Swap)后端的三大核心子系统:撮合引擎、保证金系统与风控引擎。代码可直接编译运行,适合 Java 合约开发方向的学习与研究。 ...

2026年4月12日 · 8 分钟 · 3625 字

LeetCode 六大股票问题解法

推荐阅读:股票问题系列通解(转载翻译) 为了更好的理解和记忆,这里给出我重新整理后的解法,每个解法都很相似,只需改动少量的条件 121. 买卖股票的最佳时机 1 public int maxProfit(int[] prices) { 2 int buy = -prices[0]; // 第一天买,减去买的价钱 3 int sale = 0; // 第一天卖,不存在这种情况,没有收益 4 for (int price : prices) { 5 buy = Math.max(buy, -price); // 买,减去买的价钱 6 sale = Math.max(sale, buy + price); // 卖,在买的收益基础上加上卖的价钱 7 } 8 return sale; 9 } 122. 买卖股票的最佳时机 II 1 public int maxProfit(int[] prices) { 2 int buy = -prices[0]; // 第一天买,扣掉买的价钱 3 int sale = 0; // 第一天卖,不存在这种情况,没有收益 4 for (int price : prices) { 5 buy = Math.max(buy, sale - price); // 买,在卖的收益基础上减去买的价钱 6 sale = Math.max(sale, buy + price); // 卖,在买的收益基础上加上卖的价钱 7 } 8 return sale; 9 } 123. 买卖股票的最佳时机 III 1 public int maxProfit(int[] prices) { 2 int buy1 = -prices[0]; // 第一天买,减去买的价钱 3 int sale1 = 0; // 第一天卖,不存在这种情况,没有收益 4 int buy2 = -prices[0]; // 第一天买,减去买的价钱 5 int sale2 = 0; // 第一天卖,不存在这种情况,没有收益 6 for (int price : prices) { 7 buy1 = Math.max(buy1, -price); // 第一次买,减去买的价钱 8 sale1 = Math.max(sale1, buy1 + price); // 第一次卖,在第一次买的收益基础上加上卖的价钱 9 buy2 = Math.max(buy2, sale1 - price); // 第二次买,在第一次卖的收益基础上减去买的价钱 10 sale2 = Math.max(sale2, buy2 + price); // 第二次卖,在第二次买的收益基础上加上卖的价钱 11 } 12 return sale2; 13 } 188. 买卖股票的最佳时机 IV 这是六大问题中最难的一个,所对应的解法是最通用的 ...

2021年11月4日 · 2 分钟 · 982 字

《Java 并发编程的艺术》读书笔记

方鹏飞 魏鹏 程晓明 机械工业出版社 2020 年 12 月第 1 版 第 1 章 并发编程的挑战 (多线程会出现什么问题) 上下文切换过多, 解决: 1) 无锁; 2) CAS; 3) 减少线程; 4) 协程; ...

2021年5月7日 · 6 分钟 · 2530 字

你还在 new 对象吗?Java8 通用 Builder 了解一下?

程序员经常会遇到灵魂拷问:你有对象吗? 没有,但我可以 new 一个! 1public class GirlFriend { 2 3 private String name; 4 private int age; 5 6 // 省略 getter & setter ... 7 8 public static void main(String[] args) { 9 GirlFriend myGirlFriend = new GirlFriend(); 10 myGirlFriend.setName("小美"); 11 myGirlFriend.setAge(18); 12 } 13} 没问题,老铁!但如果对象的属性太多,咋办? ...

2019年8月30日 · 4 分钟 · 1593 字

Spring Boot 中如何干掉 if else

前言 看到crossoverJie的文章《利用策略模式优化过多 if else 代码》后受到启发,可以利用策略模式简化过多的if else代码,文章中提到可以通过扫描实现处理器的自注册,我在这里介绍在Spring Boot框架中的实现方法。 ...

2019年2月2日 · 4 分钟 · 1976 字

Java 使用位运算(&)代替取模运算(%)

介绍 位运算(&)效率要比取模运算(%)高很多,主要原因是位运算直接对内存数据进行操作,不需要转成十进制,因此处理速度非常快。 1a % b == a & (b - 1) 前提:b 为 2^n ...

2018年10月11日 · 1 分钟 · 476 字

Spring Boot 实现通用的接口参数校验

本文介绍基于Spring Boot和JDK8编写一个AOP,结合自定义注解实现通用的接口参数校验。 缘由 目前参数校验常用的方法是在实体类上添加注解,但对于不同的方法,所应用的校验规则也是不一样的,例如有一个AccountVO实体: ...

2018年5月10日 · 3 分钟 · 1486 字

Thrift 连接 Java 与 Python,附 Java 通用工厂方法

Python 作为服务端,Java 作为客户端调用 Python 提供的接口。本文主要按照这篇文章的思路连通 Python 与 Java,下面简单介绍一下如何使用,具体可参看原文章。最后重点提供一个 Java 的通用工厂方法,用来调用 Thrift 提供的接口。 ...

2017年9月22日 · 3 分钟 · 1055 字

Spring Cloud 服务发布与消费

Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一种简单的开发方式。 Spring Cloud包含了多个子项目(针对分布式系统中涉及的多个不同开源产品),比如:Spring Cloud Config、Spring Cloud Netflix、Spring Cloud CloudFoundry、Spring Cloud AWS、Spring Cloud Security、Spring Cloud Commons、Spring Cloud Zookeeper、Spring Cloud CLI等项目。 ...

2017年4月14日 · 6 分钟 · 2592 字

Spring Boot 使用 JavaConfig 方式配置 Dubbo

Spring Boot提倡以JavaConfig的方式进行配置,就是使用注释来描述Bean配置的组件,从而取代让许多开发者诟病已久的xml配置方式。Spring Boot官方也提供了很多相关的JavaConfig例子,例如数据库配置,消息队列配置等。本文将提供一个JavaConfig配置Dubbo的例子。 ...

2017年4月14日 · 2 分钟 · 738 字
👋欢迎来到我的技术博客🌟
这是一片专注于前沿技术探索的园地,涵盖:
  • Web3与区块链(BTC、ETH、区块链基础设施)
  • 后端技术栈(Java、Go、Python)
  • 人工智能与数据科学(ML、DL、数据挖掘)
  • 系统安全与运维(服务器、网络、容器化)
📫 联系方式