Libra

用欧拉计划学习Rust编程(第13~16题)

为君一笑 提交于 2021-02-13 15:22:19
最近想学习Libra数字货币的MOVE语言,发现它是用Rust编写的,所以先补一下Rust的基础知识。学习了一段时间,发现Rust的学习曲线非常陡峭,不过仍有快速入门的办法。 学习任何一项技能最怕没有反馈,尤其是学英语、学编程的时候,一定要“用”,学习编程时有一个非常有用的网站,它就是“欧拉计划”,网址: https://projecteuler.net 这个网站提供了几百道由易到难的数学问题,你可以用任何办法去解决它,当然主要还得靠编程,编程语言不限,论坛里已经有Java、C#、Python、Lisp、Haskell等各种解法,当然如果你直接用google搜索答案就没任何乐趣了。 学习Rust最好先把基本的语法和特性看过一遍,然后就可以动手解题了,解题的过程就是学习、试错、再学习、掌握和巩固的过程,学习进度会大大加快。 第1~6题 第7~12题 第13题 大整数求和 问题描述: 有100个长达50位的大整数,求和,只取前10位数字。 各种编程语言都有大整数的函数库,直接使用就行了,不用自己造轮子。在Rust里一样也有大量的现成的库,称为crate,这个单词翻译为“柳条箱”,不知道官方的翻译是什么。大整数的官方实现是num_bigint。 需要修改Cargo.toml文件: [dependencies] num-bigint = "0.2.2" 文件头加上相关的引用: extern

经典算法之回溯法

牧云@^-^@ 提交于 2021-02-12 11:31:37
概念 回溯法(探索与回溯法)是一种选优搜索法,又称为试探法,按选优条件向前搜索,以达到目标。 但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯 条件 的某个 状态 的点称为“ 回溯点 ”。 基本思想 回溯法按深度优先策略搜索问题的解空间树。 首先从根节点出发搜索解空间树,当算法搜索至解空间树的某一节点时,先利用剪枝函数判断该节点是否可行(即能得到问题的解)。 如果不可行,则跳过对该节点为根的子树的搜索,逐层向其祖先节点回溯; 否则,进入该子树,继续按深度优先策略搜索。 回溯法的基本行为是搜索,搜索过程使用剪枝函数来为了避免无效的搜索。 剪枝函数包括两类: 1. 使用约束函数,剪去不满足约束条件的路径; 2.使用限界函数,剪去不能得到最优解的路径。 问题的关键在于如何定义问题的解空间,转化成树(即解空间树)。 解空间树分为两种: 子集树和排列树。 两种在算法结构和思路上大体相同。 实现思路 回溯法的实现方法有两种: 递归和迭代 。 一般来说,一个问题两种方法都可以实现,只是在算法效率和设计复杂度上有区别。 1. 递归 思路简单,设计容易,但效率低,其设计范式如下: //针对N叉树的递归回溯方法 void backtrack ( int t ) { if ( t > n ) output ( x ); //叶子节点

清华大学发布首个自动图机器学习工具包AutoGL,开源易用可扩展,支持自定义模型

时间秒杀一切 提交于 2021-01-12 02:27:50
机器之心报道 机器之心编辑部 如何应用自动机器学习 (AutoML) 加速图机器学习任务的处理?清华大学发布全球首个开源自动图学习工具包:AutoGL (Auto Graph Learning),支持在图数据上全自动进行机器学习。 人工智能的蓬勃发展离不开数据、算力、算法这三大要素。而在浩瀚的数据中,有一种数据结构既普遍又复杂,它就是图(graph)。 图是一种用于描述事物之间关系的结构,其基本构成元素为节点和连接节点的边。 很多不同领域的研究问题都可以很自然地建模成图机器学习,例如蛋白质建模、物理系统模拟、组合优化等基础研究;社交媒体分析、推荐系统、虚假新闻检测等互联网应用;以及金融风控、知识表征、交通流量预测、新药发现等。 社交网络图示例。 图结构丰富且具有与生俱来的导向能力,因此非常适合机器学习模型。同时,它又无比复杂,难以进行大规模扩展应用。而且不同的图数据在结构、内容和任务上千差万别,所需要的图机器学习模型也可能相差甚远,这就导致不同任务的模型自动化面临巨大挑战。 如何设计最优的图自动机器学习模型 ,是一个尚未解决的难题。 图 + AutoML = ? 自动机器学习 (AutoML) 旨在将机器学习的过程自动化,在降低机器学习使用门槛的同时,提升机器学习的效果。但现有的自动机器学习工具,无法考虑图数据的特殊性,因此无法应用在图机器学习模型中。 为了解决该问题

江湖读书|银行必须做数字化转型吗?

两盒软妹~` 提交于 2020-12-13 12:43:35
图片由作者提供 24年前的旧话重提 早在1994年,比尔·盖茨曾预言创新技术将会改变金融业,并直言: “银行业是必要的,银行不是。” 时隔24年,布莱特·金(BrettKing)先生在2018年出版的《BANK 4.0》一书中指出,“Banking Everywhere, Never at a Bank”(金融业务无处不在,但绝不在银行),有如一次螺旋上升。 在2018年12月16日,T-EDGE 创新大会上,布莱特·金先生更是指出:“如果银行不想成为第二个诺基亚或摩托罗拉,你必须要思考一下,我们银行体系在未来世界当中存在的基础是什么。” 在这24年中,我们看到的是技术对金融的改变,以及科技公司在做强自身的场景和业务之后,对金融服务领域的侵蚀。 无论是国内以阿里巴巴为“首”的科技公司对互联网金融的尝试,还是国外一直在寻机登场的亚马逊金融“野望”,都令原有的从业机构和监管机构感到“头疼”。 在这24年中,我们也看到了两次大型金融危机,1998年的亚洲金融危机和2008年的全球金融危机,这两次危机催生了更严格的全球监管,“全球系统重要性银行”这一概念也在2011年诞生,这意味着有29家大银行是接受世界标准的监管,但这并没能阻止人们认为下一次金融危机正在接近。 尽管做了无数努力,银行似乎并没有让自己变得更健康,究其根本,也许又回到了布莱特·金先生说的,“如果你思考一下银行的历史

百年印钞厂转型求生:投资区块链、开发数字货币

此生再无相见时 提交于 2020-10-21 18:09:17
对于以纸币印刷为核心业务的机构来说,恶性通货膨胀无疑是生意最好的时候,而数字交易则是最大的敌人。 最近哪类企业的日子最难过?纸币印刷厂。虽然美国财政部下辖的雕刻与印刷局正一刻不停地发钞,但在世界上的其他大部分地区(从亚美尼亚到秘鲁,再到泰国与斯威士兰)的纸币印刷实际上都是由少数几家企业负责的。 截至 2018 年底,全球约 11% 的钞票由私营印钞公司印刷而成。而位于德国慕尼黑的 Giesecke & Devrient 公司是全球第二大印钞企业,拥有 23% 的市场份额,仅次于占比 27% 的英国 De La Rue 公司。De La Rue近期因委内瑞拉无法偿还欠款、未能拿下英国护照印刷合同以及管理层重组等原因,目前已经陷入严重的经营危机。 2019 年,G&D 公司总营收 29 亿美元,其中 46% 来自货币技术部门。G&D 公司拥有 4800 名员工,并与全球 145 家央行(全球共存在 195 家央行)开展合作的钞票设计与印刷服务业务。 如今,G&D 在全球五大洲拥有超过 80 家子公司,并在德国和马来西亚部署有最先进的印刷设施。他们设计出安全、防伪的专用钞票,甚至还考虑到了批量销毁的需求。虽然货币印刷业务不够稳定,但 G&D 公司依靠开发出的可供政府机构乃至赌场进行现钞扫描的安全设备,仍保持着可靠的经常性收入。 G&D 公司由两位极富进取心的年轻工匠于 1852

目标检测中的Anchor Free方法

牧云@^-^@ 提交于 2020-10-03 00:27:26
转自: https://zhuanlan.zhihu.com/p/86270414 https://zhuanlan.zhihu.com/p/62103812 最近大致梳理了下最近一些Anchor Free方法的发展脉络,不考虑早期的YOLO和DenseBox等算法的话,SOTA的应该是18年CVPR提出的CornerNet,而进入2019年之后,Anchor Free方法颇有点井喷的感觉。今天将总结一下CornerNet/CenterNet/ExtremeNet这一基于keypoint启发的Anchor Free思路,而FCOS/FSAF/FoveaBox这一完全不同的Anchor Free会放在下次,总结不会涉及太多细节,主要介绍一些Motivation和整体网络思想,细节将在之后具体谈论文的时候给出介绍。 1. 从Anchor Based方法谈起 目前主流的目标检测算法,包括多阶段的各种RCNN和单阶段的SSD、RetinaNet上都是基于Anchor来做的。Anchor的本质是候选框,在设计了不同尺度和比例的候选框后,DNN学习如何将这些候选框进行分类:是否包含object和包含什么类别的object,对于postive的anchor会学习如何将其回归到正确的位置。它扮演的角色和传统检测算法中的滑动窗口等机制比较类似。但是,这种设计思路有很多问题:

小师妹学JVM之:JDK14中JVM的性能优化

孤人 提交于 2020-08-12 08:03:54
简介 上一篇文章我们讲到了JVM为了提升解释的性能,引入了JIT编译器,今天我们再来从整体的角度,带小师妹看看JDK14中的JVM有哪些优化的方面,并且能够从中间得到那些启发。 更多精彩内容且看: 区块链从入门到放弃系列教程-涵盖密码学,超级账本,以太坊,Libra,比特币等持续更新 Spring Boot 2.X系列教程:七天从无到有掌握Spring Boot-持续更新 Spring 5.X系列教程:满足你对Spring5的一切想象-持续更新 java程序员从小工到专家成神之路(2020版)-持续更新中,附详细文章教程 String压缩 小师妹:F师兄,上次你给我讲的JIT真的是受益匪浅,原来JVM中还有这么多不为人知的小故事。不知道除了JIT之外,JVM还有没有其他的性能提升的姿势呢? 姿势当然有很多种,先讲一下之前提到过的,在JDK9中引入的字符串压缩。 在JDK9之前,String的底层存储结构是char[],一个char需要占用两个字节的存储单位。 因为大部分的String都是以Latin-1字符编码来表示的,只需要一个字节存储就够了,两个字节完全是浪费。 于是在JDK9之后,字符串的底层存储变成了byte[]。 目前String支持两种编码格式LATIN1和UTF16。 LATIN1需要用一个字节来存储。而UTF16需要使用2个字节或者4个字节来存储。 在JDK9中

深入理解编译优化之循环展开和粗化锁

假装没事ソ 提交于 2020-08-10 02:02:04
目录 简介 循环展开和粗化锁 分析Assembly日志 禁止Loop unrolling 总结 简介 之前在讲JIT的时候,有提到在编译过程中的两种优化循环展开和粗化锁,今天我们和小师妹一起从Assembly的角度来验证一下这两种编译优化方法,快来看看吧。 循环展开和粗化锁 小师妹:F师兄,上次你讲到在JIT编译的过程中会进行一些编译上面的优化,其中就有循环展开和粗化锁。我对这两种优化方式很感兴趣,能不能展开讲解一下呢? 当然可以,我们先来回顾一下什么是循环展开。 更多精彩内容且看: 区块链从入门到放弃系列教程-涵盖密码学,超级账本,以太坊,Libra,比特币等持续更新 Spring Boot 2.X系列教程:七天从无到有掌握Spring Boot-持续更新 Spring 5.X系列教程:满足你对Spring5的一切想象-持续更新 java程序员从小工到专家成神之路(2020版)-持续更新中,附详细文章教程 循环展开就是说,像下面的循环遍历的例子: for (int i = 0; i < 1000; i++) { x += 0x51; } 因为每次循环都需要做跳转操作,所以为了提升效率,上面的代码其实可以被优化为下面的: for (int i = 0; i < 250; i++) { x += 0x144; //0x51 * 4 } 注意上面我们使用的是16进制数字

小师妹学JavaIO之:文件编码和字符集Unicode

僤鯓⒐⒋嵵緔 提交于 2020-08-06 09:43:18
文章目录 简介 使用Properties读取文件 乱码初现 字符集和文件编码 解决Properties中的乱码 真.终极解决办法 总结 简介 小师妹一时兴起,使用了一项从来都没用过的新技能,没想却出现了一个无法解决的问题。把大象装进冰箱到底有几步?乱码的问题又是怎么解决的?快来跟F师兄一起看看吧。 更多精彩内容且看: 区块链从入门到放弃系列教程-涵盖密码学,超级账本,以太坊,Libra,比特币等持续更新 Spring Boot 2.X系列教程:七天从无到有掌握Spring Boot-持续更新 Spring 5.X系列教程:满足你对Spring5的一切想象-持续更新 java程序员从小工到专家成神之路(2020版)-持续更新中,附详细文章教程 使用Properties读取文件 这天,小师妹心情很愉悦,吹着口哨唱着歌,标准的45度俯视让人好不自在。 小师妹呀,什么事情这么高兴,说出来让师兄也沾点喜庆? 小师妹:F师兄,最新我发现了一种新型的读取文件的方法,很好用的,就跟map一样: public void usePropertiesFile ( ) throws IOException { Properties configProp = new Properties ( ) ; InputStream in = this . getClass ( ) . getClassLoader