生成函数

Protocol Buffer技术详解(C++实例)

孤街浪徒 提交于 2020-02-05 02:11:47
这篇Blog仍然是以Google的官方文档为主线,代码实例则完全取自于我们正在开发的一个Demo项目,通过前一段时间的尝试,感觉这种结合的方式比较有利于培训和内部的技术交流。还是那句话,没有最好的,只有最适合的。我想写Blog也是这一道理吧,不同的技术主题可能需要采用不同的风格。好了,还是让我们尽早切入主题吧。 一、生成目标语言代码。 下面的命令帮助我们将MyMessage.proto文件中定义的一组Protocol Buffer格式的消息编译成目标语言(C++)的代码。至于消息的内容,我们会在后面以分段的形式逐一列出,同时也会在附件中给出所有源代码。 protoc -I=./message --cpp_out=./src ./MyMessage.proto 从上面的命令行参数中可以看出,待编译的文件为MyMessage.proto,他存放在当前目录的message子目录下。--cpp_out参数则指示编译工具我们需要生成目标语言是C++,输出目录是当前目录的src子目录。在本例中,生成的目标代码文件名是MyMessage.pb.h和MyMessage.pb.cc。 二、简单message生成的C++代码。 这里先定义一个最简单的message,其中只是包含原始类型的字段。 option optimize_for = LITE_RUNTIME; message

生成函数

流过昼夜 提交于 2020-01-28 21:22:48
生成函数 计算机学院有许多喜欢火火的女生。一班有2个,二班有3个,三班有2个,四班是火火的后宫,有8个喜欢火火的女生(全班女生) 如果用一个函数“f(班级)=喜欢火火女生的个数”,那么我们可以把上述信息表示成:f(1)=2,f(2)=3,f(3)=2,f(4)=8 构造这么一个多项式函数g(x),使得x的n次方系数为f(n)。 \[ a0,a1,a2.....an对应的生成函数是g(x)=a0+a1x+a2x^2+...+anx^n \] 问题1. 火火在这些女生中选择自己的后宫成员,现在他对女生们的颜值等级进行排序,颜值等级为1的妹子有3个,颜值等级为2的妹子有2个,颜值等级为3的妹子有5个,颜值等级为4的妹子有5个,假设火火的后宫等级取决于所有妹子的颜值等级之和,那么火火的后宫等级共有多少种可能的情况?每种等级各有几种可能方案? 3个1级妹子可以看成 \[ 1+3x+3x^2+x^3 \] 其中1表示不要这个等级的妹子,3表示有三种情况只要1个1等级的妹子........同理,另外三种情况为 \[ 1+2x^2+x^4、1+5x^3+10x^6+10x^9+5x^{12}+x^{15}、1+5x^4+10x^8+10x^{12}+5x^{16}+x^{20} \] 则所阐述的生成函数为 \[ g(x)=(1+3x+3x^2+x^3)*(1+2x^2+x^4)*(1+5x^3

V8 引擎是如何工作的?

老子叫甜甜 提交于 2020-01-27 21:59:51
V8 引擎是如何工作的? CSDN ​ 已认证的官方帐号 17 人赞同了该文章 作者 | Fundebug 来源|Fundebug 最近,JavaScript生态系统又多了2个非常硬核的项目。 大神Fabrice Bellard发布了一个新的JS引擎QuickJS,可以将JavaScript源码转换为C语言代码,然后再使用系统编译器(gcc或者clang)生成可执行文件。 Facebook为React Native开发了新的JS引擎Hermes,用于优化安卓端的性能。它可以在构建APP的时候将JavaScript源码编译为Bytecode,从而减少APK大小、减少内存使用,提高APP启动速度。 作为JavaScript程序员,只有极少数人有机会和能力去实现一个JS引擎,但是理解JS引擎还是很有必要的。本文将介绍一下V8引擎的原理,希望可以给大家一些帮助。 JavaScript引擎 我们写的JavaScript代码直接交给浏览器或者Node执行时,底层的CPU是不认识的,也没法执行。CPU只认识自己的指令集,指令集对应的是汇编代码。写汇编代码是一件很痛苦的事情,比如,我们要计算N阶乘的话,只需要7行的递归函数: function factorial(N) { if (N === 1) { return 1; } else { return N * factorial(N - 1);

Python模块知多少?这里有五百不知够不够你用?

此生再无相见时 提交于 2020-01-26 19:01:21
常用模块 Chardet -- -- -- -- -- -- - 字符编码探测器,可以自动检测文本、网页、xml的编码。 colorama -- -- -- -- -- -- 主要用来给文本添加各种颜色,并且非常简单易用。 Prettytable -- -- -- -- - 主要用于在终端或浏览器端构建格式化的输出。 difflib -- -- -- -- -- -- - [ Python ] 标准库,计算文本差异 Levenshtein -- -- -- -- - 快速计算字符串相似度。 fuzzywuzzy -- -- -- -- -- 字符串模糊匹配。 esmre -- -- -- -- -- -- -- - 正则表达式的加速器。 shortuuid -- -- -- -- -- - 一组简洁 URL / UUID 函数库。 ftfy -- -- -- -- -- -- -- -- Unicode文本工具 7 unidecode -- -- -- -- -- - ascii和Unicode文本转换函数。 xpinyin -- -- -- -- -- -- - 将汉字转换为拼音的函数库 pangu . py -- -- -- -- -- -- 调整对中日韩文字当中的字母、数字间距。 pyfiglet -- -- -- -- -- -- Python写的figlet程序

C#发现之旅第二讲 C#-XSLT开发

走远了吗. 提交于 2020-01-26 15:43:16
C#发现之旅第二讲 C# - XSLT 开发 袁永福 2008-5-15 系列课程说明 为了让大家更深入的了解和使用C#,我们开始这一系列的主题为“C#发现之旅”的技术讲座。考虑到各位大多是进行WEB数据库开发的,而所谓发现就是发现我们所不熟悉的领域,因此本系列讲座内容将是C#在WEB数据库开发以外的应用。目前规划的主要内容是图形开发和XML开发,并计划编排了多个课程。在未来的C#发现之旅中,我们按照由浅入深,循序渐进的步骤,一起探索和发现C#的其他未知的领域,更深入的理解和掌握使用C#进行软件开发,拓宽我们的视野,增强我们的软件开发综合能力。 本系列课程配套的演示代码下载地址为 http://www.cnblogs.com/Files/xdesigner/cs_discovery.zip 。 本系列课程已发布的文章有 C#发现之旅第一讲 C#-XML开发 C#发现之旅第二讲 C#-XSLT开发 C#发现之旅第三讲 使用C#开发基于XSLT的代码生成器 C#发现之旅第四讲 Windows图形开发入门 C#发现之旅第五讲 图形开发基础篇 C#发现之旅第六讲 C#图形开发中级篇 C#发现之旅第七讲 C#图形开发高级篇 C#发现之旅第八讲 ASP.NET图形开发带超链接的饼图 C#发现之旅第九讲 ASP.NET验证码技术 C#发现之旅第十讲 文档对象模型 本课程说明

理解 Android Build 系统

爷,独闯天下 提交于 2020-01-26 10:23:50
摘自: https://www.ibm.com/developerworks/cn/opensource/os-cn-android-build/index.html 前言 Android Build 系统是 Android 源码的一部分。关于如何获取 Android 源码,请参照 Android Source 官方网站: http://source.android.com/source/downloading.html 。 Android Build 系统用来编译 Android 系统,Android SDK 以及相关文档。该系统主要由 Make 文件,Shell 脚本以及 Python 脚本组成,其中最主要的是 Make 文件。 众所周知,Android 是一个开源的操作系统。Android 的源码中包含了大量的开源项目以及许多的模块。不同产商的不同设备对于 Android 系统的定制都是不一样的。 如何将这些项目和模块的编译统一管理起来,如何能够在不同的操作系统上进行编译,如何在编译时能够支持面向不同的硬件设备,不同的编译类型,且还要提供面向各个产商的定制扩展,是非常有难度的。 但 Android Build 系统很好的解决了这些问题,这里面有很多值得我们开发人员学习的地方。 对于 Android 平台开发人员来说,本文可以帮助你熟悉你每天接触到的构建环境。

关于随机数的前世今生

对着背影说爱祢 提交于 2020-01-24 20:15:11
首发于:洛谷日报#224 提起随机数,大家一定都不陌生。无论是在计算机科学领域,还是现实生活中,随机数的作用都不可小觑。 但随机数究竟是怎么一会事?它的作用是什么?它有事如何产生的? 本文会着重谈计算机的随机数以及产生算法,偏理论的只是会放到另一篇博客上 随机数那些事 随机数定义及其性质 想要讨论随机数,首先应该明确一下随机数的定义。毕竟这个东西比较虚,并不像算法那样明确。在各大网上也没有给出很好的定义。 那...就不死抠定义了。 随机数一般来说符合下面这几个性质。 它产生时后面那个数与前面的毫无关系 给定样本的一部分和随机算法,无法推出样本的剩余部分 其随机样本不可重现 另外还要说一下统计学伪随机数概念, 划重点 统计学伪随机性。统计学伪随机性指的是在给定的随机比特流样本中,1的数量大致等于0的数量,同理,“10”“01”“00”“11”四者数量大致相等。类似的标准被称为统计学随机性。满足这类要求的数字在人类“一眼看上去”是随机的。(摘自百度词条) 实际上这也是在计算机中对伪随机数优劣的概念。 continue-> 伪随机数 伪随机数,也就是我们c++中常用的随机数。为什么说它是“伪”随机呢?其实只要稍微详细的了解过c++ rand函数的人应该都能懂得这一点。 因为计算机本身并不能够产生和随机数,只能通过产生一组循环节很长的数来“伪造”随机。 c+

如何保护你的 Python 代码 (一)—— 现有加密方案

独自空忆成欢 提交于 2020-01-23 00:33:08
https://zhuanlan.zhihu.com/p/54296517 0 前言 去年11月在PyCon China 2018 杭州站分享了 Python 源码加密 ,讲述了如何通过修改 Python 解释器达到加解密 Python 代码的目的。然而因为笔者拖延症发作,一直没有及时整理成文字版,现在终于战胜了它,才有了本文。 本系列将首先介绍下现有源码加密方案的思路、方法、优点与不足,进而介绍如何通过定制 Python 解释器来达到更好地加解密源码的目的。 由于 Python 的动态特性和开源特点,导致 Python 代码很难做到很好的加密。社区中的一些声音认为这样的限制是事实,应该通过法律手段而不是加密源码达到商业保护的目的;而还有一些声音则是不论如何都希望能有一种手段来加密。于是乎,人们想出了各种或加密、或混淆的方案,借此来达到保护源码的目的。 常见的源码保护手段有如下几种: 发行 .pyc 文件 代码混淆 使用 py2exe 使用 Cython 下面来简单说说这些方案。 1 发行 .pyc 文件 1.1 思路 大家都知道,Python 解释器在执行代码的过程中会首先生成 .pyc 文件,然后解释执行 .pyc 文件中的内容。当然了,Python 解释器也能够直接执行 .pyc 文件。而 .pyc 文件是二进制文件,无法直接看出源码内容。如果发行代码到客户环境时都是

生成函数入门笔记

早过忘川 提交于 2020-01-22 10:45:01
详见pdf。 感悟: 生成函数中的x并不是未知数, 利用的是x的系数 , 2 x 3 2x^3 2 x 3 通常表示得到大小为3的方案数为2。 生成函数符合 方案数的相乘和相加 ,并常用ntt/fft加速 生成函数可转化成一些 简化形式 (如 1 / ( 1 − x ) 1/(1-x) 1 / ( 1 − x ) ),并参与生成函数和序列的运算,可以通过 广义二项式定理 重新拆分为系数形式。 关于pdf: p11:A和N集合生成的序列即为从所有元素中任选一个,seq则可以选择多个集合并到一起,故选择方案数:选择一个集合为一,两个集合也为一,三个,四个…故有p12中的生成序列的方程 而关于A与N的大小 A中选一个,大小都为1,而有选“0”,“1”两种不同方案,故A=2x N中选一个,而每一个元素的大小等于每一个数,所以大小为一的方案为选“1”,大小为二的方案为选“2”…故有N=…的方程 最后带入A和N,易得最后的方程。 来源: CSDN 作者: xagadrd 链接: https://blog.csdn.net/qq_42725189/article/details/104067431

HiveQL函数10—表生成函数(UDTF)

不想你离开。 提交于 2020-01-22 00:02:33
目录 1.explode(ARRAY<T> a) 2.explode(MAP<Tkey,Tvalue> m) 3.posexplode(ARRAY<T> a) 4.inline(ARRAY<STRUCT<f1:T1,...,fn:Tn>> a) 5.stack(int r,T1 V1,...,Tn/r Vn) 6.json_tuple(string jsonStr,string k1,...,string kn) 7.parse_url_tuple(string urlStr,string p1,...,string pn) 参考 1.explode(ARRAY<T> a) 返回值:T 功能:将数组分解为多行。返回具有单个列(col)的行集,数组中每个元素为一行。 示例: > select explode ( array ( 'A' , 'B' , 'C' ) ) as col ; + ------+ | col | + ------+ | A | | B | | C | + ------+ 2.explode(MAP<Tkey,Tvalue> m) 返回值:Tkey,Tvalue 功能:将MAP分解为多行。返回具有2个列(key,value)的行集,map中每组KV对为一行。 示例: > select explode ( map ( 'A' , 10 , 'B' , 20 ,