persist

Dresdon二次开发

我怕爱的太早我们不能终老 提交于 2020-08-11 01:52:50
  在 上一篇文章 中,我们已经对 Dresdon所提供的功能进行了简单的介绍。在这篇文章中,我们将介绍如何基于 Dresdon进行二次开发。 Dresdon 的扩展点   就像上一篇文章所介绍的那样, Dresdon主要是一个量化引擎。用户可以通过脚本或者 Java编程的方式来描述模型的买卖条件,并进一步通过扫描该模型在所有股票中的所有匹配来评估该模型的具体表现。通过这种方式,用户可以很大程度地优化自己的交易系统,从而实现稳定盈利。   通过脚本来描述股票的买入卖出条件十分简单: // 当日和前日股价上涨 $isRaisingUp = growth(close()) > 0.01 && growth(close(), 1) > 0.01 // 5日前存在着一个长度至少为30,震荡幅度小于5%的平台 $isPlatform = platform_exists(0.05, 30, 5 ) // 在平台前存在长度至少为20日,最大上涨幅度为12%的缓慢增长 $isSlowRaiseBeforePlatform = is_slow_raise(0.12, 20, platform_start(0.05, 30, 5 )) …… $buyCondition = $isRaisingUp && $isPlatform && $isSlowRaiseBeforePlatform && ……

Java操作Redis之Jedis用法详解

大兔子大兔子 提交于 2020-08-11 01:45:11
Redis(Remote Dictionary Server,远程数据字典服务器)是一个开源的高性能内存数据库,常用作缓存服务器使用,也做消息队列使用。因其高性能、丰富的数据类型、可扩展等特性受开发者青睐,这里介绍在java中使用Jedis操作Redis的基本用法。 1. 字符串String。 package com.zws.redis.examples; import java.util.concurrent.TimeUnit; import redis.clients.jedis.Jedis; public class RedisString { public static void main(String[] args) throws InterruptedException { String host = "192.168.137.131"; int port = 6379; String password = "redis"; Jedis jedis = new Jedis(host, port); jedis.auth(password); jedis.ping(); jedis.set("name", "张三"); //设置 jedis.set("age", "23"); String name = jedis.get("name");//获取 String age

akka-typed(8)

本小妞迷上赌 提交于 2020-08-10 21:16:42
前面介绍了事件源(EventSource)和集群(cluster),现在到了讨论CQRS的时候了。CQRS即读写分离模式,由独立的写方程序和读方程序组成,具体原理在以前的博客里介绍过了。akka-typed应该自然支持CQRS模式,最起码本身提供了对写方编程的支持,这点从EventSourcedBehavior 可以知道。akka-typed提供了新的EventSourcedBehavior-Actor,极大方便了对persistentActor的应用开发,但同时也给编程者造成了一些限制。如手工改变状态会更困难了、EventSourcedBehavior不支持多层式的persist,也就是说通过persist某些特定的event然后在event-handler程序里进行状态处理是不可能的了。我这里有个例子,是个购物车应用:当完成支付后需要取个快照(snapshot),下面是这个snapshot的代码: snapshotWhen { (state,evt,seqNr) => CommandHandler.takeSnapshot(state,evt,seqNr) } ... def takeSnapshot(state: Voucher, evt: Events.Action, lstSeqNr: Long)( implicit pid: PID) = { if (evt

Spark之RDD持久化大全

风格不统一 提交于 2020-08-10 17:11:12
什么是持久化? 持久化的意思就是说将RDD的数据缓存到内存中或者持久化到磁盘上,只需要缓存一次,后面对这个RDD做任何计算或者操作,可以直接从缓存中或者磁盘上获得,可以大大加快后续RDD的计算速度。 为什么要持久化? 在之前的文章中讲到Spark中有tranformation和action两类算子,tranformation算子具有lazy特性,只有action算子才会触发job的开始,从而去执行action算子之前定义的tranformation算子,从hdfs中读取数据等,计算完成之后,Spark会将内存中的数据清除,这样处理的好处是避免了OOM问题,但不好之处在于每次job都会从头执行一边,比如从hdfs上读取文件等,如果文件数据量很大,这个过程就会很耗性能。这个问题就涉及到本文要讲的RDD持久化特性,合理的使用RDD持久化对Spark的性能会有很大提升。 持久化带来的好处及原理 Spark可以将RDD持久化在内存中,当对RDD执行持久化操作时,每个节点都会将自己操作的RDD的partition持久化到内存中,并且在之后对该RDD的反复使用中,直接使用内存缓存的partition。这样的话,对于针对一个RDD反复执行多个操作的场景,就只要对RDD读取一次即可,后面直接使用该RDD,而不需要反复计算多次该RDD。 Spark 中一个很重要的能力是将数据持久化(或称为缓存)

php与Redis实现分布式锁

社会主义新天地 提交于 2020-08-10 16:36:55
一、分布式锁的作用: redis写入时不带锁定功能,为防止多个进程同时进行一个操作,出现意想不到的结果,so...对缓存进行插入更新操作时自定义加锁功能。 二、Redis的NX后缀命令 Redis有一系列的命令,其特点是以NX结尾,NX的意思可以理解为 NOT EXISTS(不存在),SETNX命令 (SET IF NOT EXISTS) 可以理解为如果不存在则插入,Redis分布式锁的实现主要就是使用SETNX命令。 三、实现原理 在进程请求执行操作前进行判断,加锁是否成功,加锁成功允许执行下步操作; 如果不成功,则判断锁的值(时间戳)是否大于当前时间,如果大于当前时间,则获取锁失败不允许执行下步操作; 如果锁的值(时间戳)小于当前时间,并且GETSET命令获取到的锁的旧值依然小于当前时间,则获取锁成功允许执行下步操作; 如果锁的值(时间戳)小于当前时间,并且GETSET命令获取到的锁的旧值大于当前时间,则获取锁失败不允许执行下步操作; 四、$redis->setnx() 设置锁 $expire = 10;//有效期10秒 $key = 'lock';//key $value = time() + $expire;//锁的值 = Unix时间戳 + 锁的有效期 $lock = $redis->setnx($key, $value); //判断是否上锁成功,成功则执行下步操作 if

聊聊rocketmq-client-go的PullConsumer

ぐ巨炮叔叔 提交于 2020-08-09 11:36:29
序 本文主要研究一下rocketmq-client-go的PullConsumer PullConsumer rocketmq-client-go-v2.0.0/consumer/pull_consumer.go type PullConsumer interface { // Start Start() // Shutdown refuse all new pull operation, finish all submitted. Shutdown() // Pull pull message of topic, selector indicate which queue to pull. Pull(ctx context.Context, topic string, selector MessageSelector, numbers int) (*primitive.PullResult, error) // PullFrom pull messages of queue from the offset to offset + numbers PullFrom(ctx context.Context, queue *primitive.MessageQueue, offset int64, numbers int) (*primitive.PullResult, error)

使用IDEA实现SSM整合(Maven+Spring+Mybatis+SpringMvc)

二次信任 提交于 2020-08-09 04:06:53
我是阿福,公众号「阿福聊编程」作者, 一个在后端技术路上摸盘滚打的程序员 ,在进阶的路上,共勉! 文章已收录在 JavaSharing 中,包含Java技术文章,面试指南,资源分享。 本文是基于Maven工程实现SSM整合,主要是通过XML实现三大框架的整合,可能有的小伙伴会说XML早就过时了,现在人们都使用注解开发,但是不是这么认为,我个人觉得你XML 整合会了,注解能不会吗? 开干!!!! SSM整合总体思路 Spring和MyBatis整合 整合JAR包 <dependencies> <!-- Spring依赖 --> <!-- https://mvnrepository.com/artifact/org.springframework/spring-orm --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-orm</artifactId> <version>4.3.2.RELEASE</version> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc --> <dependency> <groupId>org.springframework<

在 docker 中(linux 系统)运行 sql server

梦想的初衷 提交于 2020-08-08 08:58:29
很简单,按官方说明操作即可: https://hub.docker.com/_/microsoft-mssql-server 在官方说明中没有说明的有: 1、注意配置 LCID,指定为 2052,也就是中国(-e LCID=2052); 参考: https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-configure-environment-variables#environment-variables 2、如果需要持久化数据库,需要映射目录到 docker 外(默认数据库存储在:/var/opt/mssql/data,官方推荐映射上级目录:/var/opt/mssql); 参考: https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-configure-docker#persist 3、系统时区默认为 UTC,根据需要可修改为 UTC+8(-e TZ='Asia/Shanghai'); 参考: https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-configure-docker#tz 来源: oschina 链接: https://my.oschina.net/u/4324735

Spark常见面试题

天大地大妈咪最大 提交于 2020-08-06 23:26:48
什么是RDD RDD是弹性分布式数据集,Spark最基本的数据集,它不可变、可分区、可并行计算。 弹性表示:可以将数据存储在内存或者磁盘,RDD的分区是可以改变的,task如果失败会进行特定次数的重试,stage如果失败会自动进行特定次数的重试且只会计算失败的分片,基于lineage的高效容错 RDD有什么特性 A list of partitions A function for computing each split A list of dependencies on other RDDs Optionally,a Partitioner for key-value RDDs(eg:to say that the RDD is hash-partitioned) 可选项,数据本地性,数据位置最优 map、flatMap与mapPartition的区别 map 函数会对每一条输入进行指定的操作,然后为每一条输入返回一个对象 flatMap函数则是两个操作的集合——正是“先映射后扁平化” 对每一条输入进行指定的操作,然后为每一条输入返回一个对象 将所有对象合并为一个对象 mapPartition每次处理一个分区的数据,但是可能导致OOM repartition和coalesce异同 前者会产生shuffle,后者不会

C# 标签(条码)的打印与设计(一)

大憨熊 提交于 2020-08-06 08:33:59
相信目前稍有规模的公司已进入或正在进入信息化之中,尤其在制造企业中,少不了一个条码的打印功能,而这类应用大多是使用斑马打印机,所以就会遇到了怎么打印的问题了。本人也已经从事ERP,MES等系统多年,也有去了解过一些公司的做法。知道条码的打印的一些做法,下面我们来谈一谈,如有错误之处,请大家不吝指出。   1.一些规模小的企业是用标签设计软件做好模板,在标签设计软件中打印,这种办法不用写代码,但对大多数公司来说并不适合,因为企业的数据动态的比较多,如果纯手工修改打印肯定不能接受,于是唯一的出路只能是代码解决问题。 2.首先做好模板,然后替换其中动态变化的内容为变量名,在代码中动态替换变量,再把指令输出至打印机而在一开这个博客的时候我就写了一篇ZPL如何打印中文信息的随笔(大家可以去参考一下)。   3.还有就是用绘图方式打印至打印机的,也叫GDI打印,这种可以用报表工具画好标签,运行报表时,把结果输出位图,再发送至打印机。(这种需要较新的打印机) 上面的这些做法都有其缺点。第1是手动,工作量大;第二是需要了解斑马打印指令(新人不便接手);第三是较新的做法,大多公司不是采取这种方式;而我要介绍的是另一种做法,而这种做法比较接近第二类,但又不需要开发者了解斑马指令(EPL/ZPL),而且就算再老的斑马打印机也能用,在速度和质量上都有其优越性。最最主要的是:1.代码相当的少