网站一般怎么维护企业的网站建设费用

news/2025/9/22 21:11:33/文章来源:
网站一般怎么维护,企业的网站建设费用,广州网络科技公司有哪些,品牌设计机构公司字节数组转为二进制数 c#低延迟系统需要高性能的消息处理和传递。 由于在大多数情况下#xff0c;数据必须通过有线传输或序列化才能保持持久性#xff0c;因此编码和解码消息已成为处理管道的重要组成部分。 高性能数据编码的最佳结果通常涉及应用程序数据细节的知识。 本文… 字节数组转为二进制数 c# 低延迟系统需要高性能的消息处理和传递。 由于在大多数情况下数据必须通过有线传输或序列化才能保持持久性因此编码和解码消息已成为处理管道的重要组成部分。 高性能数据编码的最佳结果通常涉及应用程序数据细节的知识。 本文介绍的技术是一个很好的示例说明了如何利用数据的某些方面在延迟和空间复杂度方面都有利于编码。 通常高频交易系统周围传递的最大消息以订单簿摘录的形式表示某种交换状态。 即典型的市场数据报价消息包含标识工具的信息和代表订单簿顶部的一组值。 数据集的强制性成员是以实数表示的价格/汇率信息用于买卖双方。 从优化的角度来看使该数据集非常有趣的原因是 单调的 低方差 非负* 因此在实践中我们处理的是浮点数集这些浮点数不仅经过排序升序出价和降价要求而且相邻值彼此相对“接近”。 请记住消息处理延迟对于大多数交易系统而言至关重要因此市场行情波动因为关键实体之一需要尽可能高效地传递。 让我演示如何利用所有这些功能将数字数据编码为非常紧凑的二进制形式。 首先两个前导图说明了不同序列化方法之间的差异 到目前为止我们可以看到与基于标准ByteBuffer的序列化相比增量编码在编码时间上可获得更好的结果但是一旦数组长度超过40它就会比Kryo 最流行的高性能序列化库之一更差。不过在这里重要的是一个典型的用例场景对于高频交易市场消息恰好适合阵列长度的10-40 当我们检查生成的消息大小作为数组长度的函数时它会变得更加有趣 此时应用增量编码的好处将变得显而易见蓝色曲线同样适用于字节缓冲区和Kryo​​序列化。 这里发生的是在掌握了一些有关要处理的数据的特定知识之后可以安全地进行假设从而导致序列化占用更多的CPU资源但是在空间方面却要荒唐得多。 增量压缩背后的想法非常简单。 让我们从一个整数数组开始 [85103、85111、85122、85129、85142、85144、85150、85165、85177] 如果这些是整数则不进行任何压缩就必须使用4 * 9 36字节来存储数据。 在这组数字中特别有趣的是它们彼此相对紧密地聚集在一起。 我们可以通过引用第一个值轻松地减少存储数据所需的字节数然后生成一个对应的增量数组 参考85103[8、19、26、39、41、47、62、74] 哇 现在我们可以缩小为字节数组。 让我们再次进行计算。 我们需要4个字节作为参考值仍为int每个增量 8 * 1个字节 12个字节。 与原始的36个字节相比这是一个很大的改进但仍有一些优化的余地。 与其从参考值计算增量不如依次存储每个前任的差异 参考85103[8、11、7、13、2、6、15、12] 结果是一组具有低方差和标准偏差的非单调数字。 我希望事情已经明确了。 尽管如此还是值得详细说明。 至此我们最终得到的是一组二进制编码的理想选择。 对于我们的示例这仅意味着可以在单个字节中容纳2个增量。 我们只需要一个半字节4位即可容纳0-15范围内的值因此我们可以轻松地最终将原始数组压缩为4供参考 8 * 1/2 8个字节。 由于价格是用十进制数字表示的因此应用带有二进制编码的增量压缩将涉及建立最大支持的精度并将小数作为整数将它们乘以10 ^精度从而使精度为6的1.12345678成为1123456整数。 到目前为止所有这些都是纯粹的理论推测本文开头有一些预告片。 我想这是演示如何使用2个非常简单的类在Java中实现这些想法的恰当时机。 我们将从编码方面开始 package eu.codearte.encoder;import java.nio.ByteBuffer;import static eu.codearte.encoder.Constants.*;public class BinaryDeltaEncoder {public static final int MAX_LENGTH_MASK ~(1 (LENGTH_BITS - 1));public ByteBuffer buffer;public double[] doubles;public int[] deltas;public int deltaSize, multiplier, idx;public void encode(final double[] values, final int[] temp, final int precision, final ByteBuffer buf) {if (precision 1 PRECISION_BITS) throw new IllegalArgumentException();if ((values.length MAX_LENGTH_MASK) ! values.length) throw new IllegalArgumentException();doubles values; deltas temp; buffer buf;multiplier Utils.pow(10, precision);calculateDeltaVector();if (deltaSize DELTA_SIZE_BITS) throw new IllegalArgumentException();buffer.putLong((long) precision (LENGTH_BITS DELTA_SIZE_BITS) | (long) deltaSize LENGTH_BITS | values.length);buffer.putLong(roundAndPromote(values[0]));idx 1;encodeDeltas();}private void calculateDeltaVector() {long maxDelta 0, currentValue roundAndPromote(doubles[0]);for (int i 1; i doubles.length; i) {deltas[i] (int) (-currentValue (currentValue roundAndPromote(doubles[i])));if (deltas[i] maxDelta) maxDelta deltas[i];}deltaSize Long.SIZE - Long.numberOfLeadingZeros(maxDelta);}private void encodeDeltas() {if (idx doubles.length) return;final int remainingBits (doubles.length - idx) * deltaSize;if (remainingBits Long.SIZE || deltaSize Integer.SIZE) buffer.putLong(encodeBits(Long.SIZE));else if (remainingBits Integer.SIZE || deltaSize Short.SIZE) buffer.putInt((int) encodeBits(Integer.SIZE));else if (remainingBits Short.SIZE || deltaSize Byte.SIZE) buffer.putShort((short) encodeBits(Short.SIZE));else buffer.put((byte) encodeBits(Byte.SIZE));encodeDeltas();}private long encodeBits(final int typeSize) {long bits 0L;for (int pos typeSize - deltaSize; pos 0 idx deltas.length; pos - deltaSize)bits | (long) deltas[idx] pos;return bits;}private long roundAndPromote(final double value) {return (long) (value * multiplier .5d);} } 在详细介绍之前请先介绍几句话。 该代码不是完整的成熟的解决方案。 它的唯一目的是演示提高应用程序序列化协议的某些位的难易程度。 由于它受到了微基准测试因此它也不会引起gc压力因为即使是最快的次要gc的影响也会严重扭曲最终结果从而使api变得丑陋。 该实现也是次优的尤其是在CPU方面但是证明微优化不是本文的目标。 话虽如此让我们看看它的作用大括号中的行号。 编码方法首先进行一些基本的健全性检查{17,18}计算将十进制转换为整数{20}所使用的乘数并计算calculateDeltaVector。 这又有两个作用。 通过将小数转换为整数从前任减去最后将结果存储在临时数组{33}中计算整个集合的滚动增量 作为副作用得出表示增量{34,36}所需的最大位数 然后encode方法存储正确反序列化所需的一些元数据。 它以位为单位打包精度增量大小并以前64位{24}打包数组长度。 然后它存储参考值{25}并启动二进制编码{27}。 编码增量执行以下操作 检查它是否已经处理了所有数组条目如果已​​退出则退出{40} 计算要编码的剩余位数{41} 选择最合适的类型给定大小以位为单位对剩余的位进行编码然后将这些位写入缓冲区{43-46} 递归{47} 最后一点可能需要详细说明是encodeBits方法本身。 根据在参数中传递的类型大小以位为单位它循环一个临时long其唯一目的是充当位集并写入代表从long值的最高有效部分到最低有效部分的连续增量的位范围为字号。 正如预期的那样解码与编码完全相反并且主要是关于使用元数据来重建原始double数组直至达到指定的精度 package eu.codearte.encoder;import java.nio.ByteBuffer;import static eu.codearte.encoder.Constants.DELTA_SIZE_BITS; import static eu.codearte.encoder.Constants.LENGTH_BITS;public class BinaryDeltaDecoder {private ByteBuffer buffer;private double[] doubles;private long current;private double divisor;private int deltaSize, length, mask;public void decode(final ByteBuffer buffer, final double[] doubles) {this.buffer buffer; this.doubles doubles;final long bits this.buffer.getLong();divisor Math.pow(10, bits (LENGTH_BITS DELTA_SIZE_BITS));deltaSize (int) (bits LENGTH_BITS) 0x3FFFFFF;length (int) (bits 0xFFFFFFFF);doubles[0] (current this.buffer.getLong()) / divisor;mask (1 deltaSize) - 1;decodeDeltas(1);}private void decodeDeltas(final int idx) {if (idx length) return;final int remainingBits (length - idx) * deltaSize;if (remainingBits Long.SIZE) decodeBits(idx, buffer.getLong(), Long.SIZE);else if (remainingBits Integer.SIZE) decodeBits(idx, buffer.getInt(), Integer.SIZE);else if (remainingBits Short.SIZE) decodeBits(idx, buffer.getShort(), Short.SIZE);else decodeBits(idx, buffer.get(), Byte.SIZE);}private void decodeBits(int idx, final long bits, final int typeSize) {for (int offset typeSize - deltaSize; offset 0 idx length; offset - deltaSize)doubles[idx] (current ((bits offset) mask)) / divisor;decodeDeltas(idx);}} 带有一些测试类的源代码可以在这里找到。 请记住即使事实证明该代码可以正常工作也不适合生产。 您绝对可以使它工作而无需临时数组用聪明的方法代替最大数组大小时替换全数组扫描或者通过进行倒数近似除以重量级除法就可以摆脱困境。 随意选择这些提示或应用不同的微优化并构建自己的专有增量编码协议。 对于对延迟敏感的交易应用程序而言它具有很大的区别可将液体工具的市场数据消息大小减小20-30倍。 当然如果切换到增量压缩二进制编码会对您的应用程序生态系统带来任何价值那么您必须弄清楚自己。 随便发表评论与您的​​发现 参考 如何从Fast的 JCG合作伙伴 Wojciech Kudla 获得一个带有字节的双精度数组的序列化二进制delta编码用于低差单调浮点数据集 。 快点。 怪胎的博客。 翻译自: https://www.javacodegeeks.com/2014/01/how-to-serialize-an-array-of-doubles-with-a-byte-binary-delta-encoding-for-low-varianced-monotonic-sets-of-floating-point-data.html字节数组转为二进制数 c#

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/910386.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

做外贸网站市场分析金华 网站建设

Bug(俗称"八阿哥") 是软件开发绕不过的一道坎,因此调试便成了每位程序员一项必备的核心技能。调试不仅有助于理解程序的运行流程,还能改进代码质量,最终提高开发者解决问题的能力以及交付软件的品质。本文旨在讨论 Java 调试关键技…

2345网站入口大数据网络营销

Python 语言的基本语法和编码规范 Python 编程教程教师 : 工作 :Python 语言的基本语法和编码标 准课程描述本章将介绍 Python 语言的基本语法和编码标准,重点介 绍 Python 语言的基本知识,如数据类型、运算符、常量、变量、表 达式和常用语句&#xff0…

上海网站建设-新闻动态金融培训网站源码

引言 曾想过轻松获取亚马逊上的商品图片用于项目或研究吗?是否曾面对网络速度慢或被网站反爬虫机制拦截而无法完成数据采集任务?如果是,那么本文将为您介绍如何用OkHttp和Kotlin构建一个高效的Amazon图片爬虫解决方案。 背景介绍 亚马逊&a…

动力 网站建设广州市网站搭建制作

AI绘画图生图是指通过人工智能技术生成的具有艺术价值的图像。它可以根据用户提供的参考图像或描述,自动生成具有艺术风格的新图像。这些图像可以是风景、人物、抽象画等各种形式。那么ai绘画图生图到底怎么样? AI绘画图生图的优点在于它可以快速、高效地…

网络加速原理

GA的核心原理:不是单纯靠Anycast,而是“Anycast + 智能DNS + 四层代理转发”三位一体 虽然常说“GA使用Anycast”,但更准确地说:✅ GA的本质是:通过智能DNS将用户导向最近的Anycast接入点,再经由阿里云高质量骨干…

无意中在应用层瞥见了一个微内核的操作系统调度器

你好呀,我是歪歪。 最近遇到一个业务上的问题,在网上看到一个对应场景下的解决方案,我感觉这个场景还挺有通用性的,分享一下。 以后遇到类似问题,或者当它以面试场景题出现的时候,你可以拿去就用。事情是这样的。…

数据结构思维题选做(长期更新)

到处乱找的. 用到的数据结构在 NOIP 考纲内,主要是学习、锻炼各种处理思路. 代码的实现都不算困难. 倍增思想 P10198 [USACO24FEB] Infinite Adventure P Hint:跳的步数明显提示倍增. 根据 \(\sum T_i\) 的限制直接预…

龙泉公路建设投资有限公司网站网站到期怎么续费

Prometheus是一款基于时序数据库的开源监控告警系统,非常适合Kubernetes集群的监控。Prometheus的基本原理是通过HTTP协议周期性抓取被监控组件的状态,任意组件只要提供对应的HTTP接口就可以接入监控。不需要任何SDK或者其他的集成过程。这样做非常适合做…

网站建设宣传视频教程河北移动端网站制作

1.安装docker服务,配置镜像加速器 2.下载系统镜像(Ubuntu、 centos) 3.基于下载的镜像创建两个容器 (容器名一个为自己名字全拼,一个为首名字字母) 4.容器的启动、 停止及重启操作 5.怎么查看正在运行的容器…

陕西省建设监理协会网站证件查询什么是网络营销产生的技术原因

Swift 可选(Optionals)类型 Swift 的可选(Optional)类型,用于处理值缺失的情况。可选表示"那儿有一个值,并且它等于 x "或者"那儿没有值"。 Swfit语言定义后缀?作为命名类型Optional的简写&…

cdn网站加速如何免费创建自己的小程序

说明 在大量数据处理任务下的缓存与分发 这个算是来自顾同学的助攻1,我有点java绝缘体的体质,碰到和java相关的安装部署总会碰到点奇怪的问题,不过现在已经搞定了。测试也接近了kafka官方标称的性能。考虑到网络、消息的大小等因素&#xff0…

网站建设初稿哪家建站好

初始标记 需要暂停所有的其他线程,但这个阶段会很快完成。它的目的是标记所有的根对象,以及被根对象直接引用的对象,以及年轻代指向老年代的对象,不会遍历对象关系,单线程执行。 并发标记阶段 不需要暂停应用线程&a…

营销型网站建设和规划lnmp下安装wordpress

文章目录 四、流程控制语句4.1 选择结构4.1.1 if语句 4.1.2 三目运算符4.1.3 switch语句注意事项 4.1.4 if和switch的区别【CHAT】4.2 循环结构4.2.1 while循环语句4.2.2 do...while循环语句 4.2.3 for循环语句九九乘法表 4.3 跳转语句4.3.1 break语句4.3.2 continue语句4.3.3 …

政治笔记/错题

生产力:是指人们改造自然,使之适应人的需要的物质力量,标志着人类改造自然的实际能力和水平。 生产关系:生产力诸要素相结合的社会形式,指的是人们在物质生产和再生产过程中所形成的经济关系,它是由生产资料所有…

9.22模拟赛总结

赛时 模拟赛 赛时记录: 剩余时间2:33开始打T2 剩余时间1:32开始打完T2 剩余时间1:00结束T2 剩余时间0:30T4有思路,开始打 时间到了放弃T4 赛时状态: T1怎么看起来好复杂,完全没有顺序和思路 T2回文串,每个位置…

莫队 n的序列,多次查询一段区间内的数字的个数

莫队 n的序列,多次查询一段区间内的数字的个数 // 普通莫队 O(n*sqrt(n)) include include include include using namespace std; const int N=50005; int n,m,k,B,a[N]; int sum,c[N],ans[N]; struct Q{ int l,…

巴州建设局网站网站建设与app开发

任务一:挖掘反射型XSS漏洞(以弹窗test13)证明 任务二:复现环境中的CSRF漏洞,设计表单,当管理员点击URL后自动将自己密码重置为:123456 任务三:复现环境中的JSON Hijacking漏洞&#…

免费发布推广的网站wordpress页面几层

https://support.huawei.com/enterprise/zh/doc/EDOC1100325140/f6eeacd6 打开链接,里面的内容很详细。

建设银行官方网站个人深圳市建设交易中心官网

应用场景 有的时候,我们对于同一通道中的消息处理,会通过判断头信息或者消息内容来做一些差异化处理,比如:可能在消息头信息中带入消息版本号,然后通过if判断来执行不同的处理逻辑,其代码结构可能是这样的…

杭州网站运营国外排版网站

目录 概述 环境依赖 数据描述 代码概述 导包 数据读取 统计缺失值 数据结构概述 描述统计 时间轴数据转换 月交易统计直方图 周交易统计图 小时数据转换 小时折线图 销售关系可视化统计 销售占比扇形图 价格箱线图 各类别多维度条形图统计 商店位置交易量折线…