lottery

领域驱动设计(DDD)

别来无恙 提交于 2020-11-28 04:01:53
领域驱动设计的概念 大家都知道软件开发不是一蹴而就的事情,我们不可能在不了解产品(或行业领域)的前提下进行软件开发,在开发前通常需要进行大量的业务知识梳理,然后才能到软件设计的层面,最后才是开发。而在业务知识梳理的过程中,必然会形成某个领域知识,根据领域知识来一步步驱动软件设计,就是领域驱动设计(DDD,Domain-Driven Design)的基本概念 。 为什么需要 DDD 在业务初期,功能大都非常简单,普通的 CRUD 就基本能满足要求,此时系统是清晰的。但随着产品的不断迭代和演化,业务逻辑变得越来越复杂,我们的系统也越来越冗杂。各个模块之间彼此关联,甚至到后期连相应的开发者都很难说清模块的具体功能和意图到底是啥。这就会导致在想要修改一个功能时,要追溯到这个功能需要修改的点就要很长时间,更别提修改带来的不可预知的影响面。 比如下图所示: 订单服务中提供了查询、创建订单相关的接口,也提供了订单评价、支付的接口。同时订单表是个大表,包含了非常多字段。我们在维护代码时,将会导致牵一发而动全身,很可能原本我们只是想改下评价相关的功能,却影响到了创建订单的核心流程。虽然我们可以通过测试来保证功能的完备性,但当我们在订单领域有大量需求同时并行开发时将会出现改动重叠、恶性循环、疲于奔命修改各种问题的局面,而且大量的全量回归会给测试带来不可接受的灾难。 但现实中绝大部分公司都是这样一个状态

java操作lua脚本

柔情痞子 提交于 2020-10-23 12:17:10
java操作lua脚本实例 前言 在上一篇文章 Redis中使用Lua脚本来实现并发下的原子操作 中我对Lua语言的一些简单的语法及其在Redis中的操作进行了介绍,但是在Java开发中我们还需要进一步的学习才能使这种技术落地。今天就结合Spring Data Redis这个我们经常使用的Redis开发组件来实际尝试一下Lua 脚本。 Lua 实现抽奖 模拟一个抽奖场景,从奖池中进行随机抽奖。规则如下: 中奖的人只能从奖池中抽取。 每个人只能中奖一次。 中奖总人数不能超过奖项的设置数。 生成中奖名单。 规则有了,我们先来分析如何使用Redis实现。Redis提供了SET集合,这种集合有点类似Java中的Set,放无重复的元素而且是无序的,可以满足随机性和奖池候选人的唯一性。同时它还提供了很多操作来满足抽奖的需要。接下来我们进行一一演示。 Redis SET 的一些操作。 基于篇幅我这里只演示一些抽奖可以用的上的Redis操作。 SET添加元素。 添加一个到多个元素,使用SADD命令往lottery中添加多个元素来模拟往奖池中加人。 127.0.0.1:6379> sadd lottery u1 u2 u3 u4 u5 u6 u7 (integer) 7 127.0.0.1:6379> sadd lottery u1 (integer) 0

以太坊彩票项目

半世苍凉 提交于 2020-08-15 13:25:02
以太坊彩票项目 目录 项目概述 项目具体实现 [1].彩票业务规则示例图 [2].整体项目搭建 [3].彩票合约 lottery.sol [4].编译合约 01-compile.js [5].部署合约 02-deploy.js [6]. 从区块链获取合约实例 [7].完善界面 [8].最终效果 创作声明 备注 目录 项目概述 solidity 编写合约,node.js 编译、部署、获取、交互合约,react搭建前端界面 超详细~ (1)彩票业务规则-智能合约lottery.sol [1] 全民参与(play函数) [2] 每次投注只能投注1eth [3] 每个人可以投多注 [4] 仅限管理员可以开奖(KaiJiang函数) [5] 仅限管理员可以退奖(TuiJiang函数) (2)编译智能合约 01-compile.js [1] 导入solc编译器和fs库 [2] fs读取contracts文件夹下lottery.sol合约 [3] solc编译合约 [4] 导出bytecode(机器码)和interface(ABI) (3)部署智能合约上链 02-deploy.js [1] 获取bytecode和interface [2] 导入web3 [3] 设置网络,管理员(部署合约的人)实例化web3(.setProvider) [4] 拼接合约数据 [5] 拼接bytecode [6]

随机列表<T>

夙愿已清 提交于 2020-08-09 10:30:01
问题: What is the best way to randomize the order of a generic list in C#? 在C#中随机化泛型列表顺序的最佳方法是什么? I've got a finite set of 75 numbers in a list I would like to assign a random order to, in order to draw them for a lottery type application. 为了给彩票类型的应用程序绘制一个数字,我想分配一个随机顺序的列表中有75个数字的有限集合。 解决方案: 参考一: https://stackoom.com/question/196H/随机列表-T 参考二: https://oldbug.net/q/196H/Randomize-a-List-T 来源: oschina 链接: https://my.oschina.net/u/4428122/blog/4327046

中奖彩票,子网络的觉悟

吃可爱长大的小学妹 提交于 2020-05-07 08:49:21
本篇对彩票假说的发展及其扩展应用做了分析研究。 机器之心分析师网络,作者:张雨嘉,编辑:H4O。 如今,深度学习在机器学习中占有非常重要的地位。但随着对深度学习的要求越来越多,需要的网络层数越来越深,参数越来越多,消耗的计算资源也随之扩张,而这很大程度上阻碍了其产业化应用和推广。 从上世纪 90 年代开始,Yan Lecun 等人【1】首先提出了 神经网络剪枝 的思想,即将网络中某些对输出结果贡献不大的参数进行剪除。这种方法可以大大提高模型运行速度,但同时会对模型准确度有一定影响。经过近 30 年的研究,现在的神经网络剪枝技术可以减少训练网络时 90% 以上的参数,以减少存储需求,提高模型的推理计算性能。通常的网络剪枝步骤如下图 1 所示,首先训练一个大的、过参数化的模型,然后根据一定的准则对训练过的模型参数进行修剪,最后将修剪过的模型微调以获得失去的精度。 图 1 经典网络剪枝步骤 然而,既然一个网络可以缩小规模,为什么我们不直接训练这个较小的体系结构,使训练更有效率呢?但是人们通过长期实验发现,网络越稀疏,训练越难、学习速度越慢,所以剪枝产生的稀疏体系结构网络很难从一开始就进行训练。 1. 提出「彩票假说」 随着网络剪枝研究的深入,Jonathan Frankle 等人【2】发表了一篇名为《The Lottery Ticket Hypothesis :Finding

【Vue.js游戏机实战】- Vue.js实现老虎-机抽奖总结

倖福魔咒の 提交于 2020-04-18 01:49:32
大家好!先上图看看本次案例的整体效果。 完整版实战课程附源码 : 【Vue.js游戏机实战】- Vue.js实现老虎-机抽奖 实现思路: Vue component实现老虎-机组件,可以嵌套到任意要使用的页面。 css3 transform控制老虎-机抽奖过程的动画效果。 抽奖组件内使用钩子函数watch监听抽奖结果的返回情况播放老虎-机动画并给用户弹出中奖提示。 中奖结果弹窗,为抽奖组件服务。 实现步骤如下: 构建api奖品配置信息和抽奖接口,vuex全局存放奖品配置和中奖结果数据信息。 api: export default { getPrizeList () { let prizeList = [ { id: 1 , name: '小米8' , img: 'https://i1.mifile.cn/f/i/g/2015/cn-index/m8-140.png' }, { id: 2 , name: '小米电视' , img: 'https://i1.mifile.cn/f/i/g/2015/TV4A-43QC.png' }, { id: 3 , name: '小米平衡车' , img: 'https://i1.mifile.cn/f/i/g/2015/cn-index/scooter-140!140x140.jpg' }, { id: 4 , name: '小米耳机' ,