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

本文通过一个纯 Java(无任何第三方依赖)的 Demo 项目,拆解中心化交易所(CEX)永续合约(Perpetual Swap)后端的三大核心子系统:撮合引擎、保证金系统与风控引擎。代码可直接编译运行,适合 Java 合约开发方向的学习与研究。 ...
推荐阅读:股票问题系列通解(转载翻译) 为了更好的理解和记忆,这里给出我重新整理后的解法,每个解法都很相似,只需改动少量的条件 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 这是六大问题中最难的一个,所对应的解法是最通用的 ...
方鹏飞 魏鹏 程晓明 机械工业出版社 2020 年 12 月第 1 版 第 1 章 并发编程的挑战 (多线程会出现什么问题) 上下文切换过多, 解决: 1) 无锁; 2) CAS; 3) 减少线程; 4) 协程; ...
程序员经常会遇到灵魂拷问:你有对象吗? 没有,但我可以 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} 没问题,老铁!但如果对象的属性太多,咋办? ...
前言 看到crossoverJie的文章《利用策略模式优化过多 if else 代码》后受到启发,可以利用策略模式简化过多的if else代码,文章中提到可以通过扫描实现处理器的自注册,我在这里介绍在Spring Boot框架中的实现方法。 ...
介绍 位运算(&)效率要比取模运算(%)高很多,主要原因是位运算直接对内存数据进行操作,不需要转成十进制,因此处理速度非常快。 1a % b == a & (b - 1) 前提:b 为 2^n ...
本文介绍基于Spring Boot和JDK8编写一个AOP,结合自定义注解实现通用的接口参数校验。 缘由 目前参数校验常用的方法是在实体类上添加注解,但对于不同的方法,所应用的校验规则也是不一样的,例如有一个AccountVO实体: ...
Python 作为服务端,Java 作为客户端调用 Python 提供的接口。本文主要按照这篇文章的思路连通 Python 与 Java,下面简单介绍一下如何使用,具体可参看原文章。最后重点提供一个 Java 的通用工厂方法,用来调用 Thrift 提供的接口。 ...
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等项目。 ...
Spring Boot提倡以JavaConfig的方式进行配置,就是使用注释来描述Bean配置的组件,从而取代让许多开发者诟病已久的xml配置方式。Spring Boot官方也提供了很多相关的JavaConfig例子,例如数据库配置,消息队列配置等。本文将提供一个JavaConfig配置Dubbo的例子。 ...