04 2025 档案
摘要:
常见缓存类型,可以分为本地缓存以及分布式缓存两种,Caffeine就是一种优秀的本地缓存,而Redis可以用来做分布式缓存。Caffeine是Google开发的,是在Guava cache的基础上改良而来的,底层设计思路、功能和使用方式与Guava非常类似,但是各方面的性能都要远远超过前者,可以看做
阅读全文
常见缓存类型,可以分为本地缓存以及分布式缓存两种,Caffeine就是一种优秀的本地缓存,而Redis可以用来做分布式缓存。Caffeine是Google开发的,是在Guava cache的基础上改良而来的,底层设计思路、功能和使用方式与Guava非常类似,但是各方面的性能都要远远超过前者,可以看做
阅读全文
摘要:
外汇经纪商处理订单的很多模式:MM、ECN、STP、DMA等等,而在国外的经纪商则通常会称为A-Book、B-Book。外汇经纪商是帮助客户完成外汇交易的服务商,是客户进行外汇交易的桥梁,就跟券商是帮用户做股票交易的一样。但是外汇与股票和期货交易不同,因为你的经纪商可以选择与你做对手交易,这就是常说
阅读全文
外汇经纪商处理订单的很多模式:MM、ECN、STP、DMA等等,而在国外的经纪商则通常会称为A-Book、B-Book。外汇经纪商是帮助客户完成外汇交易的服务商,是客户进行外汇交易的桥梁,就跟券商是帮用户做股票交易的一样。但是外汇与股票和期货交易不同,因为你的经纪商可以选择与你做对手交易,这就是常说
阅读全文
摘要:
在项目中使用到分布式任务框架,用起来比较好用实用,便研究了一下设计的原理。由于是公司自研的分布式框架,不便写的太过详细,这里主要记录一下设计的原理。对我以前使用的任务框架,做一下对比 公司自研的分布式任务对客户端来说,使用感觉友好,代码基本没有的业务入侵。任务框架使用了一些第三方的中间件,主要使用了
阅读全文
在项目中使用到分布式任务框架,用起来比较好用实用,便研究了一下设计的原理。由于是公司自研的分布式框架,不便写的太过详细,这里主要记录一下设计的原理。对我以前使用的任务框架,做一下对比 公司自研的分布式任务对客户端来说,使用感觉友好,代码基本没有的业务入侵。任务框架使用了一些第三方的中间件,主要使用了
阅读全文
摘要:
最近在做公司交易系统时,接到需求要做条件订单,组合订单。同时条件的触发要基于监听实时行情,如果满足条件就触发下单送交易所。此类订单对于系统设计和性能都有一定的复杂性,故记录一些思考。条件单类型有触及限价单,触及市价单,多条件单。而需求二级还要支持组合策略订单。OCO,OTO,OTOCO,止盈止损单等
阅读全文
最近在做公司交易系统时,接到需求要做条件订单,组合订单。同时条件的触发要基于监听实时行情,如果满足条件就触发下单送交易所。此类订单对于系统设计和性能都有一定的复杂性,故记录一些思考。条件单类型有触及限价单,触及市价单,多条件单。而需求二级还要支持组合策略订单。OCO,OTO,OTOCO,止盈止损单等
阅读全文
摘要:
本文转载,也是自己认同的一些想法,工作五六年后,越发感觉对行业的认知和理解,比提高代码的水平和技能要重要的多。这大概也是领域专家这么值钱的原因吧。所以转行的风险随着年龄的增长也会越来越大 很少有人从头开始构建代码 在大学,他们会教你如何编写一个400行的程序,从头到尾地解决一个问题。你手头有一个白板
阅读全文
本文转载,也是自己认同的一些想法,工作五六年后,越发感觉对行业的认知和理解,比提高代码的水平和技能要重要的多。这大概也是领域专家这么值钱的原因吧。所以转行的风险随着年龄的增长也会越来越大 很少有人从头开始构建代码 在大学,他们会教你如何编写一个400行的程序,从头到尾地解决一个问题。你手头有一个白板
阅读全文
摘要:
BFT拜占庭容错不是指一种算法,而是解决拜占庭将军问题的一类算法。分布式一致性算法选择最简单的BFT拜占庭容错,作为一致性算法入门一定能事半功倍。在分布式(一)中我们了解了一些基本理论,我们知道在有分区存在的情况下不能能出现完美的可用性和数据一致性,我们在项目中必须要最大限度做到分布式一致性,同时又
阅读全文
BFT拜占庭容错不是指一种算法,而是解决拜占庭将军问题的一类算法。分布式一致性算法选择最简单的BFT拜占庭容错,作为一致性算法入门一定能事半功倍。在分布式(一)中我们了解了一些基本理论,我们知道在有分区存在的情况下不能能出现完美的可用性和数据一致性,我们在项目中必须要最大限度做到分布式一致性,同时又
阅读全文
摘要:
比特币的区块数据里包含了比特币链上的核心信息,包括比特币如何交易,区块扩容等问题。比特币从诞生到现在,每10分钟诞生一个区块,访问 https://blockchain.info/ 查看最近的区块信息,可以看到当前的区块大小已经接近或超过中本聪设置的1MB容量。 区块链数据结构 一个完整的区块结构主
阅读全文
比特币的区块数据里包含了比特币链上的核心信息,包括比特币如何交易,区块扩容等问题。比特币从诞生到现在,每10分钟诞生一个区块,访问 https://blockchain.info/ 查看最近的区块信息,可以看到当前的区块大小已经接近或超过中本聪设置的1MB容量。 区块链数据结构 一个完整的区块结构主
阅读全文
摘要:
要说目前最火最热的技术,区块链一定榜上有名。区块链在国外其实早已如火如荼,被认为是最具潜力的最有颠覆性的技术,海外科技巨头争相布局区块链。在国内,很多公司也成立了区块链研究所。 区块链技术的概述 区块链本质上是分布式的数据库,它记录了所有执行的交易,并在所有参与者之中共享。每一笔交易都通过参与者的共
阅读全文
要说目前最火最热的技术,区块链一定榜上有名。区块链在国外其实早已如火如荼,被认为是最具潜力的最有颠覆性的技术,海外科技巨头争相布局区块链。在国内,很多公司也成立了区块链研究所。 区块链技术的概述 区块链本质上是分布式的数据库,它记录了所有执行的交易,并在所有参与者之中共享。每一笔交易都通过参与者的共
阅读全文
摘要:
期权与期货是金融衍生品市场的重要组成部分,但二者在诸多方面存在本质区别。期权买卖的是一种“权利”,具有交易双方权利义务不对等、损益结构非线性、仅卖方缴纳保证金、杠杆高且可变等特征;而期货签订的是一张“合同”,具有交易双方都是义务方、损益结构线性、双方均缴纳保证金、杠杆固定等特征。简而言之,期权与期货
阅读全文
期权与期货是金融衍生品市场的重要组成部分,但二者在诸多方面存在本质区别。期权买卖的是一种“权利”,具有交易双方权利义务不对等、损益结构非线性、仅卖方缴纳保证金、杠杆高且可变等特征;而期货签订的是一张“合同”,具有交易双方都是义务方、损益结构线性、双方均缴纳保证金、杠杆固定等特征。简而言之,期权与期货
阅读全文
摘要:
八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。 高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作者发表
阅读全文
八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。 高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作者发表
阅读全文
摘要:
分布式锁的实现有多种方式,但是不管怎样,设计分布式锁一般要满足以下条件: 互斥性:任意时刻,只能有一个客户端获取锁,不能同时有两个客户端获取到锁。 安全性:锁只能被持有该锁的客户端删除,不能由其它客户端删除。 避免死锁:分布式锁一定能得到释放,即使client在释放之前崩溃或者网络不可达 可重入性:
阅读全文
分布式锁的实现有多种方式,但是不管怎样,设计分布式锁一般要满足以下条件: 互斥性:任意时刻,只能有一个客户端获取锁,不能同时有两个客户端获取到锁。 安全性:锁只能被持有该锁的客户端删除,不能由其它客户端删除。 避免死锁:分布式锁一定能得到释放,即使client在释放之前崩溃或者网络不可达 可重入性:
阅读全文
摘要:
力扣上几道关于股票最佳买卖时机的算法题,在此记录一下解题思路,对比官方的解题发现自己的思路还是太弱了 题号 题解 121. 买卖股票的最佳时机 暴力解法、动态规划 122. 买卖股票的最佳时机 II 暴力搜索、贪心算法、动态规划 123. 买卖股票的最佳时机 III 动态规划 188. 买卖股票的最
阅读全文
力扣上几道关于股票最佳买卖时机的算法题,在此记录一下解题思路,对比官方的解题发现自己的思路还是太弱了 题号 题解 121. 买卖股票的最佳时机 暴力解法、动态规划 122. 买卖股票的最佳时机 II 暴力搜索、贪心算法、动态规划 123. 买卖股票的最佳时机 III 动态规划 188. 买卖股票的最
阅读全文
摘要:
select与epoll是操作系统提供的两种I/O多路复用的机制,I/O多路复用就是通过一种机制,一个进程可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。select是比较早出现的技术,但是select同时处理的描述符有个数限制(默认1024)。为了
阅读全文
select与epoll是操作系统提供的两种I/O多路复用的机制,I/O多路复用就是通过一种机制,一个进程可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。select是比较早出现的技术,但是select同时处理的描述符有个数限制(默认1024)。为了
阅读全文
摘要:
力扣上一道中等题,求两个字符串的最长公共子序列。说实话这道题我完全没有思路,一开始尝试用双指针去遍历两个数组,但是公共子序列可以是不连续的,这样情况就会变得很复杂。在和力扣度过美好的一天后,我最终放弃了。看完题解后,茅塞顿开。故此记录一下思考过程 题目 给定两个字符串 text1 和 text2,返
阅读全文
力扣上一道中等题,求两个字符串的最长公共子序列。说实话这道题我完全没有思路,一开始尝试用双指针去遍历两个数组,但是公共子序列可以是不连续的,这样情况就会变得很复杂。在和力扣度过美好的一天后,我最终放弃了。看完题解后,茅塞顿开。故此记录一下思考过程 题目 给定两个字符串 text1 和 text2,返
阅读全文
摘要:
今天刷一道有意思的题目,逻辑很简单,有点像消消乐。就是当车发生碰撞时,车辆就是会静止,最后所有车辆都因为碰撞而会静止,题目如下 在一条无限长的公路上有 n 辆汽车正在行驶。汽车按从左到右的顺序按从 0 到 n - 1 编号,每辆车都在一个 独特的 位置。给你一个下标从 0 开始的字符串 direct
阅读全文
今天刷一道有意思的题目,逻辑很简单,有点像消消乐。就是当车发生碰撞时,车辆就是会静止,最后所有车辆都因为碰撞而会静止,题目如下 在一条无限长的公路上有 n 辆汽车正在行驶。汽车按从左到右的顺序按从 0 到 n - 1 编号,每辆车都在一个 独特的 位置。给你一个下标从 0 开始的字符串 direct
阅读全文
摘要:
有效市场假说(Efficient Markets Hypothesis,EMH)是由尤金·法玛(Eugene Fama)于1970年提出并深化的。“有效市场假说”的研究起源于路易斯·巴舍利耶(Bachelier,1900),他从随机过程角度研究了布朗运动以及股价变化的随机性,并且他认识到市场在信息方
阅读全文
有效市场假说(Efficient Markets Hypothesis,EMH)是由尤金·法玛(Eugene Fama)于1970年提出并深化的。“有效市场假说”的研究起源于路易斯·巴舍利耶(Bachelier,1900),他从随机过程角度研究了布朗运动以及股价变化的随机性,并且他认识到市场在信息方
阅读全文
摘要:
异或是一种基于二进制的位运算,任何数和 0 做异或运算,结果仍然是原来的数,即 a ⊕ 0=a⊕0=a。 任何数和其自身做异或运算,结果是 0,即 a ⊕ a=0 a⊕a=0。简单理解就是两个 bit 位异或,如果两个 bit 位值相同则结果为0,如果两个 bit 位值不同则结果为1。异或运算满足交
阅读全文
异或是一种基于二进制的位运算,任何数和 0 做异或运算,结果仍然是原来的数,即 a ⊕ 0=a⊕0=a。 任何数和其自身做异或运算,结果是 0,即 a ⊕ a=0 a⊕a=0。简单理解就是两个 bit 位异或,如果两个 bit 位值相同则结果为0,如果两个 bit 位值不同则结果为1。异或运算满足交
阅读全文
摘要:
利弗莫尔关键点交易法包括支撑,阻力的交易,突破交易。至今西方仍有大量交易员仅仅依靠支撑阻力位交易而取得过人业绩。要想灵活运用支撑与阻力获利,必须要了解支撑与阻力形成的真正原因,同其它的技术分析的根源一样,它们都是心理因素造成的。除阻力和支持外还有其他的关键点位 根据有效市场假说,利弗莫尔关键点交易法
阅读全文
利弗莫尔关键点交易法包括支撑,阻力的交易,突破交易。至今西方仍有大量交易员仅仅依靠支撑阻力位交易而取得过人业绩。要想灵活运用支撑与阻力获利,必须要了解支撑与阻力形成的真正原因,同其它的技术分析的根源一样,它们都是心理因素造成的。除阻力和支持外还有其他的关键点位 根据有效市场假说,利弗莫尔关键点交易法
阅读全文
摘要:
最近在LeetCode刷到一类数组问题,在这里总结一下,数组问题无非是排序,合并,移位之类的,大致思路是通过指针遍历或双指针从数组两头遍历,还有就是交换思想,这个用的好可以减少空间复杂度。下面是几道算法题的Go语言实现 移动零 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保
阅读全文
最近在LeetCode刷到一类数组问题,在这里总结一下,数组问题无非是排序,合并,移位之类的,大致思路是通过指针遍历或双指针从数组两头遍历,还有就是交换思想,这个用的好可以减少空间复杂度。下面是几道算法题的Go语言实现 移动零 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保
阅读全文
摘要:
git已经成为日常开发必不可少的工具之一,在开发新项目时常会在本地搭建好项目再上传到远程git仓库,需要用到几个命令在这里记录一下 本地关联远程 首先在远程仓库中创建好git项目仓库 控制台中进入本地文件夹,执行 git init 命令初始化本地项目 执行 git remote add origin
阅读全文
git已经成为日常开发必不可少的工具之一,在开发新项目时常会在本地搭建好项目再上传到远程git仓库,需要用到几个命令在这里记录一下 本地关联远程 首先在远程仓库中创建好git项目仓库 控制台中进入本地文件夹,执行 git init 命令初始化本地项目 执行 git remote add origin
阅读全文
摘要:
最近几天研究了下一致性哈希算法,总算是搞明白它是怎么一回事了,这里记录一下自己的理解。一致性哈希算法主要是针对分布式缓存系统的算法。要想搞清楚一致性哈希的的优缺点,那就必须从它的发应用场景说起,也就是为什么分布式缓存中要使用一致性哈希算法,传统的做法有什么缺点,会带来什么问题。首先来看一下传统的
阅读全文
最近几天研究了下一致性哈希算法,总算是搞明白它是怎么一回事了,这里记录一下自己的理解。一致性哈希算法主要是针对分布式缓存系统的算法。要想搞清楚一致性哈希的的优缺点,那就必须从它的发应用场景说起,也就是为什么分布式缓存中要使用一致性哈希算法,传统的做法有什么缺点,会带来什么问题。首先来看一下传统的
阅读全文
摘要:
title: 聊聊对ThreadLocal的理解 date: 2019-06-22 18:04:17 tags: - java categories: java JDK 1.2的版本中就提供java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路
阅读全文
title: 聊聊对ThreadLocal的理解 date: 2019-06-22 18:04:17 tags: - java categories: java JDK 1.2的版本中就提供java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路
阅读全文
摘要:
最近公司有个基于Mysql做增量数据同步的需求需要我要完成。源端是两个不同业务系统数据库的两张表,需要把这两张表的数据字段做一些过滤和处理,然后增量同步到本地服务的数据库中。由于数据量不大,源端两个表都是几十万的数据,因此当时首先想到的就是通过java定时读取表数据的方式做数据同步,但这种方式太过呆
阅读全文
最近公司有个基于Mysql做增量数据同步的需求需要我要完成。源端是两个不同业务系统数据库的两张表,需要把这两张表的数据字段做一些过滤和处理,然后增量同步到本地服务的数据库中。由于数据量不大,源端两个表都是几十万的数据,因此当时首先想到的就是通过java定时读取表数据的方式做数据同步,但这种方式太过呆
阅读全文
摘要:
Java虚拟机既然是一台虚拟的计算机,那必有一套完善指令集,指令由一个字节长度,代表某种特定操作含义的操作码构成。这里在最初接触计算机的时候,我是有一些疑问的。例如为什么计算机都有它的指令集,这些指令是怎么被CPU执行的。由于我当初学的是电子科学,包含模电数电,单片机等内容,其中单片机就是一个小
阅读全文
Java虚拟机既然是一台虚拟的计算机,那必有一套完善指令集,指令由一个字节长度,代表某种特定操作含义的操作码构成。这里在最初接触计算机的时候,我是有一些疑问的。例如为什么计算机都有它的指令集,这些指令是怎么被CPU执行的。由于我当初学的是电子科学,包含模电数电,单片机等内容,其中单片机就是一个小
阅读全文
摘要:
又到一年金三银四的黄金跳槽季,相信很多人都在这期间蠢蠢欲动,不是正在离职,就是在纠结要不要跳槽。各大公司呢,也开始招兵买马为今年公司的发展储备人才。2019年的金三银四可以说比较特殊了,人们都说,互联网寒冬来了。各大互联网公司裁员,在互联网巨头中有京东,腾讯都裁员不少。再到2019年年初的 996,
阅读全文
又到一年金三银四的黄金跳槽季,相信很多人都在这期间蠢蠢欲动,不是正在离职,就是在纠结要不要跳槽。各大公司呢,也开始招兵买马为今年公司的发展储备人才。2019年的金三银四可以说比较特殊了,人们都说,互联网寒冬来了。各大互联网公司裁员,在互联网巨头中有京东,腾讯都裁员不少。再到2019年年初的 996,
阅读全文
摘要:
做开发的对于算法这个词都不陌生,每当谈论到某人是个算法工程师,某人写了个什么厉害的算法。都会不由得对他产生敬意,有人说,程序=数据结构+算法。虽然有失偏颇,但足以体现出算法的重要性。那什么是算法呢,它可以是一个公式,一个食谱,一本操作手册,其实在没有电脑之前,就已经有算法了,算法是解决特定问题的方法
阅读全文
做开发的对于算法这个词都不陌生,每当谈论到某人是个算法工程师,某人写了个什么厉害的算法。都会不由得对他产生敬意,有人说,程序=数据结构+算法。虽然有失偏颇,但足以体现出算法的重要性。那什么是算法呢,它可以是一个公式,一个食谱,一本操作手册,其实在没有电脑之前,就已经有算法了,算法是解决特定问题的方法
阅读全文
摘要:
公司做项目需要报表统计,用到Echarts。但是UI给出的风格和Echarts官方的风格差别有点大,因此需要自己去调整报表的风格样式,官方文档非常详细。但是每次都要去不同的菜单下去查看文档也很麻烦,在使用过程中个人对报表的统计参数做了一些总结,方便查阅。ECharts,是一个由百度前端技术部开源的纯
阅读全文
公司做项目需要报表统计,用到Echarts。但是UI给出的风格和Echarts官方的风格差别有点大,因此需要自己去调整报表的风格样式,官方文档非常详细。但是每次都要去不同的菜单下去查看文档也很麻烦,在使用过程中个人对报表的统计参数做了一些总结,方便查阅。ECharts,是一个由百度前端技术部开源的纯
阅读全文
摘要:
Paxos是用于一种分布式系统并且具有容错性的一致性算法,是目前业界公认能解决分布式系统一致性的问题算法之一。它晦涩难懂的程度完全可以跟它的重要程度相匹敌。Paxos于1990年由Lamport提出,但直到1998才正式被计算机科学界接受。因为Lamport刚开始采用描述故事的方式来描述算法,但不被
阅读全文
Paxos是用于一种分布式系统并且具有容错性的一致性算法,是目前业界公认能解决分布式系统一致性的问题算法之一。它晦涩难懂的程度完全可以跟它的重要程度相匹敌。Paxos于1990年由Lamport提出,但直到1998才正式被计算机科学界接受。因为Lamport刚开始采用描述故事的方式来描述算法,但不被
阅读全文
摘要:
作为一名Java开发者,掌握JVM的体系结构也是很有必要的,了解底层的东西,有助于更好的理解和掌握程序运行中的原理。JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的
阅读全文
作为一名Java开发者,掌握JVM的体系结构也是很有必要的,了解底层的东西,有助于更好的理解和掌握程序运行中的原理。JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的
阅读全文
摘要:
Java平台自动集成了线程以及多处理器技术,这种集成程度比Java以前诞生的计算机语言要厉害很多,该语言针对多种异构平台的平台独立性而使用的多线程技术支持也是具有开拓性的一面,有时候在开发Java同步和线程安全要求很严格的程序时,往往容易混淆的一个概念就是内存模型。究竟什么是内存模型?内存模型描述了
阅读全文
Java平台自动集成了线程以及多处理器技术,这种集成程度比Java以前诞生的计算机语言要厉害很多,该语言针对多种异构平台的平台独立性而使用的多线程技术支持也是具有开拓性的一面,有时候在开发Java同步和线程安全要求很严格的程序时,往往容易混淆的一个概念就是内存模型。究竟什么是内存模型?内存模型描述了
阅读全文
摘要:
Java线程池是使用频率很高的开源框架。也是在面试中常被问到的组件。它的实现源码在J.U.C包下,本人也经常使用线程池,简单方便。大多是浮于表面的一些API的调用,对于框架实现中具体做了哪些事情,却是知之甚少。本文将从源码角度,深入了聊一聊Java线程池的源码实现中到底做了什么事情。Java线程池的
阅读全文
Java线程池是使用频率很高的开源框架。也是在面试中常被问到的组件。它的实现源码在J.U.C包下,本人也经常使用线程池,简单方便。大多是浮于表面的一些API的调用,对于框架实现中具体做了哪些事情,却是知之甚少。本文将从源码角度,深入了聊一聊Java线程池的源码实现中到底做了什么事情。Java线程池的
阅读全文

浙公网安备 33010602011771号