throwsnew

  • 首页

  • 标签

  • 专题

  • 归档

2020年理财总结

发表于 2020-12-31 | 更新于 2021-01-04

收益总结

2020年预期总收益率10%,实际整体收益率9.85%,稳健组合收益率2.8%,积极组合收益率17%
积极组合中基金收益率25%(年收益率=年持有收益/(当前总市值-年持有收益))

在投入成本/回报上,稳健/积极成本占比保持在1:1左右,基金成本占积极组合的50%左右,而在收益贡献上,稳健组合占总收益的15%,积极组合占总收益的85%,其中基金收益占总收益的74%

在大环境上,今年沪深300上涨27%,创业板上涨64%,黄金上涨13%,中证白酒上涨119%。。

今年做错的事

阅读全文 »

如何设计布隆过滤器(1)

发表于 2020-08-19 | 更新于 2020-10-19

what.布隆过滤器是什么

示意图

阅读全文 »

理解CMS回收器的preclean阶段

发表于 2020-06-21 | 更新于 2020-06-26

在《深入理解Java虚拟机:JVM高级特性与最佳实践(第二版)》里这样介绍CMS回收器的工作过程:

CMS收集器是基于“标记—清除”算法实现的,它的运作过程相对于前面几种收集器来说更复杂一些,整个过程分为4个步骤,包括: •初始标记(CMS initial mark) •并发标记(CMS concurrent mark) •重新标记(CMS remark) •并发清除(CMS concurrent sweep)

很多人可能只看了这本书的介绍(实际这应该只是作者的概括),就认为CMS回收器就只有这4个阶段,看一下这里的gc log:

阅读全文 »

为什么别人能把java gc讲清楚

发表于 2020-05-27 | 更新于 2020-06-21

你关于JavaGC的知识都是从哪儿学习的呢?是看博客或者看书还是看oracle的文档?今天来推荐 Plumbr.io上的一个文章(Plumbr是一家提供jvm监控和优化方案的公司),标题叫《Java Garbage Collection handbook》整个文章大概有75页,包括GC概念介绍/算法介绍/算法实现/gc调优等7个小节,这里只引用其中几个段落,来看一下作者是怎么介绍JavaGC知识的.

阅读全文 »

用机器学习判断ins内容是否能上热门

发表于 2020-05-21 | 更新于 2020-05-23

背景

假设现在要使用爬虫从ins抓取内容,在ins的网页版上每个#tag标签下都有’热门’和’最新’两部分tab页,因为热门内容的质量更好,所以希望能抓取更多热门内容,但是网页版每个#tag只显示最近的9条热门内容,不过’最新’tab下可以一直向前翻页,所以如果能从’最新’下的内容中过滤出热门内容就可以满足内容抓取质量的要求,需要找到一个能将内容分类为热门和非热门的算法.

阅读全文 »

量化交易入门

发表于 2020-01-31 | 更新于 2020-05-21

之前听说过一些通过python编写交易策略的量化交易平台,现在来了解一下交易平台的使用方式。这篇文章会演示怎么在交易平台上编写一个简单基金定投策略。

量化交易介绍

量化交易(Quantitative Trading)是指借助现代统计学和数学的方法,利用计算机技术来进行交易的证券投资方式。

量化交易的核心是数学模型,编程只是量化交易的实现方式。数学模型的评估方式是通过输入历史数据让我们“穿越”回之前的某一个时刻,然后按照模型进行交易,对比策略带来的收益(回测)。如果严格按照数据进行决策,量化交易可以克服人性的弱点,也可以克服认知偏差,另外在一个很大的资本市场,比如有成千上万只股票的时候,量化交易有更强的信息处理能力,能捕捉更多的投资机会。不过因为模型主要是根据历史数据来构建的,所以它吸收新的信息的能力比较迟钝。一旦发生某些重大事件(比如东哥事件~),有效性很可能就会受到影响。现在国内也有一些量化交易的主题基金,和其他主题的基金相比表现比较一般。

阅读全文 »

thrift源码(五)非阻塞服务端其他实现

发表于 2019-11-18 | 更新于 2020-01-30 | 分类于 thrift源码

THsHaServer

HsHa=HalfSync HalfAsync 半同步,半异步
在处理IO事件时是同步的,在执行invoke方法时是在线程池异步执行的。
本质上是一个添加了工作线程池的Reactor模型:

内部使用了一个自定义的线程池ExecutorService,用线程池中的线程执行FrameBuffer的Invoke方法,非常简单。上面已经说明invoke()方法只执行了服务端本地的接口实现类,并没有做IO操作,所以在THsHaServer中IO操作还是在SelectThread线程内完成的。

阅读全文 »

thrift源码(四)非阻塞服务端

发表于 2019-10-25 | 更新于 2019-11-18 | 分类于 thrift源码

非阻塞服务端TNonblockingServer

thrift的非阻塞服务端,采用还是类似Reactor的IO复用模型

reactor uml
对于TNonblockingServer,使用的是单线程的reactor模式,
客户端的请求会被公平的处理(没有优先级,看哪个请求先触发selector),使用TNonblockingServer时必须使用TFramedTransport,不然无法确定数据包何时读取完成(数据边界)。

阅读全文 »

thrift源码(三)服务端

发表于 2019-10-24 | 更新于 2019-10-25 | 分类于 thrift源码

简单的服务端实现 TThreadPoolServer

TProcessor

和TServiceClient接口类似,TProcessor是thrift为服务端生成代码时要实现的接口,定义了服务端根据客户端请求调用本地接口实现的过程。

HelloService.Processor代码如下:

阅读全文 »

thrift源码(二)异步客户端

发表于 2019-08-05 | 更新于 2019-10-25 | 分类于 thrift源码

异步客户端简介

异步客户端使用java nio实现,和许多NIO的例子相同,启动一个线程执行select()操作,然后把获得的SocketChannel交给统一的handler处理。
异步客户端初始化并发起请求的调用栈如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//初始化
HelloServiceClient.main()
= TAsyncClientManager.TAsyncClientManager()

= = TAsyncClientManager.SelectThread.run()
= = TAsyncClientManager.SelectThread.transitionMethods()
= = = TAsyncMethodCall.transition()
= = TAsyncClientManager.SelectThread.timeoutIdleMethods()
= = TAsyncClientManager.SelectThread.startPendingMethods()
= = = TAsyncMethodCall.start()
//发起调用
= HelloService.AsyncClient.helloVoid()
= = TAsyncClientManager.call()
= = = TAsyncMethodCall.prepareMethodCall()
= = = = HelloService.AsyncClient.helloVoid_call.write_args()
= = = TAsyncClientManager.SelectThread.getSelector().wakeup()
= = = TAsyncMethodCall.start()
= = = TAsyncMethodCall#registerForFirstWrite
= = = TAsyncMethodCall#doWritingRequestSize
= = = TAsyncMethodCall#doWritingRequestBody
= = = TAsyncMethodCall#doReadingResponseSize
= = = TAsyncMethodCall#doReadingResponseBody

阅读全文 »
123
Xianfeng Song

Xianfeng Song

a blog learn share practice

26 日志
7 分类
29 标签
GitHub
京ICP备19018367号 © 2021 Xianfeng Song
Powered By 云开发