有一组数字,想判断一组数字中最多的有几位小数,乘以10的指定幂,转为整数,此处教大家一个高级的写法,拒接无脑for循环
decimal:
decimal[] numbers = new decimal[] { 1.2345m, 2.3456789m, 3.456m, 4.56789m, 5.67890m, 6.78901234m };
int maxDecimalPlaces = numbers.Max(n => decimal.GetBits(n)[3] >> 16);
int[] intNumbers = numbers.Select(n => (int)(n * (decimal)Math.Pow(10, maxDecimalPlaces))).ToArray();
double: 如果想更短,可以double转decimal然后用上面的
double[] numbers = new double[] { 1.2345, 2.3456789, 3.456, 4.56789, 5.67890, 6.78901234 };
int maxDecimalPlaces = numbers.Max(n => {
string str = n.ToString();
int decimalIndex = str.IndexOf(".");
return decimalIndex >= 0 ? str.Length - decimalIndex - 1 : 0;
});
int[] intNumbers = numbers.Select(n => (int)(n * Math.Pow(10, maxDecimalPlaces))).ToArray();
EasyCVR平台支持多类型设备、多协议方式接入,包括市场主流标准协议国标GB/T28181、RTMP、RTSP/Onvif协议等,以及厂家私有协议,如海康SDK、大华SDK、海康Ehome等。平台可将接入的流媒体进行处理及分发,分发的视频格式包括RTSP、RTMP、FLV、HLS、WebRTC等。有用户反馈,将设备接入EasyCVR,播放RTSP流时会出现卡顿现象,不知道什么原因,请求我们协助排查。导致视频播放卡顿的原因有很多,比如网络不稳定、磁盘读写消耗过大、内存占用过高、服务器性能低等等。针对用户反馈的情况,技术人员立刻进行了多方面排查。登录用户的EasyCVR平台测试播放视频,观察到画面帧率有波动,于是初步判断是不是存在丢帧情况。将原本的UDP传输协议更改成TCP再观察,发现视频依旧还是卡顿。为了排除是否为丢包情况,用wireshark进行了抓包,通过抓包数据分析得出,并不存在丢包现象。经过上述排查,技术人员用VLC进行播放,发现并未出现卡顿情况,那么这种情况我们判断是否为用户的摄像机设备视频帧率的问题。查看摄像机设备视频帧率,将其配置调整成25fps,在EasyCVR平台观察
大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。C++基础语法基础语法第一个程序#include<iostream> usingnamespacestd; intmain() { cout<<"Helloworld"<<endl; return0; }复制#include<iostream>复制包含了一个iostream的文件头。头文件作为一种包含功能函数、数据接口声明的载体文件,通常编译器通过头文件找到对应的函数库,把引用的函数实际内容导出来。<>引起来代表导入的是标准库的头文件,而使用""引起来的则是导入用户自定义的头文件。usingnamespacestd;复制使用std命名空间。return0;复制终止main()函数,并向调用进程返回值0。注释作用:在代码中加一些说明和解释,方便自己或其他程序员程序员阅读代码两种格式单行注释://描述信息通常放在一行代码的上方,或者一条语句的末尾,对该行代码说明多行注释:/*描述信息*/通常放在一段代码的上方,对该段代码做
十五、Kafka152.kafka可以脱离zookeeper单独使用吗?为什么?kafka不能脱离zookeeper单独使用,因为kafka使用zookeeper管理和协调kafka的节点服务器。153.kafka有几种数据保留的策略?kafka有两种数据保存策略:按照过期时间保留和按照存储的消息大小保留。154.kafka同时设置了7天和10G清除数据,到第五天的时候消息达到了10G,这个时候kafka将如何处理?这个时候kafka会执行数据清除工作,时间和大小不论那个满足条件,都会清空数据。155.什么情况会导致kafka运行变慢?cpu性能瓶颈磁盘读写瓶颈网络瓶颈156.使用kafka集群需要注意什么?集群的数量不是越多越好,最好不要超过7个,因为节点越多,消息复制需要的时间就越长,整个群组的吞吐量就越低。集群数量最好是单数,因为超过一半故障集群就不能用了,设置为单数容错率更高。十六、Zookeeper157.zookeeper是什么?zookeeper是一个分布式的,开放源码的分布式应用程序协调服务,是googlechubby的开源实现,是hadoop和hbase的重要组件。它
上周我们讲解了sam的基本原理,这一周,我们将把目光转向他的应用,主要通过题目讲解。后缀自动机三·重复旋律6Hihocoder1449题意字符串S中,求出长度为k(1\lek\le|S|)的子串出现次数最多的出现了几次。分析每个状态x所表示的所有子串的出现次数都相同。我们把原始点(没有被拆分,或者拆分前的点)标记为1,其余为0。如果一个状态x出现了,显然它的所有link前缀都出现了。利用拓扑序,做一个前缀和,显然就是每个状态的出现次数。每个状态x,所代表的子串的长度范围为[len[link[x]]],len[x]。又显然,不同长度的最大出现次数递减,所以我们只需要在len[x]处打标记,再倒着更新一遍就好了。#include<bits/stdc++.h> #defineLLlonglong usingnamespacestd; #defineN2000010 constintM=N<<1; structsam { intt[M][26],len[M]={-1},fa[M],sz=2,last=1,f[M]; voidinit(){memset(t,0,(sz+
最近处于不太忙碌的状态,对项目做了结案报告,整理了不少的项目文档,给项目做了个完美的收尾。 今天上班的时候有同事让我推荐一些工作中常用的好用的软件,因此整理了工作中常用的软件,有了这些软件,让你的工作爽到爆。1、Java开发,必须是最强大的idea,没有之一,是最好用的java开发工具,用过都会爱上,拥有不错的插件环境,你可以安装一些插件支持更多的语言开发,节省工作效率。2、数据库开发关系型数据库工具,我常用的是Navicat,但是也有不少同事用sqlog,个人感觉sqlog不怎么好用。不过也没发现更好的。推荐Navicat,可以直接选中数据的某一行直接修改,可以多选直接复制,可以直接选中表在多个数据库之间复制。调试存储过程用dbForgeStudio,Navicat不能调试存储过程,dbForge存储过程的调试还是很方便,可以单步跟踪,可以看到变量的值,不错的工具。但是我仅仅用来调试存储过程,一般常用还是Navicat,因为比较熟悉Navicat。redis我用redismanager,没发现什么好用的工具,凑合着用,可以直接修改值。3、设计文档记录:typora非常好用的markd
一、基础概念1、单服务所有业务服务和应用组件部署在一台服务上,节省成本,这是单服务结构,适用于并发低,业务单一的场景。2、集群模式业务量逐渐增大,并发高,把一台服务进行水平扩展,做一个服务群,请求压力分散到不同的服务上处理,每台服务称为集群的一个节点,到这就是集群服务。3、分布式架构分布式结构就是按照业务功能,拆分成独立的子服务,独立的库表,可以独立运行,且服务之间通信和交互,带来的好处降低业务间的耦合度,方便开发维护,水平扩展,复用性高等等。4、技术体系服务基础架构:Dubbo框架,SpringCloud框架;容器化运维:Docker、Kubernetes;数据存储:关系型MySQL,NoSQL数据库,OLAP引擎;常用组件:Zookeeper协调,MQ异步,Redis缓存;二、分布式框架1、Dubbo框架垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。此时,用于提高业务复用及整合的分布式服务框架(RPC)是关键。Dubbo框架的核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自
聊起AI,画面都充斥着机械语言:精密高级的芯片,光怪陆离的智能产业……你眼中的AI有什么样的能力?能给传统行业带来哪些变革与发展?基于此,腾讯云开发者社区联手知乎科技,从知乎AI与传统行业相关话题中精选内容落地社区专题「AI与传统行业的融合」。本文为“AI将如何影教育”的精华内容分享。人工智能运用于教育,可以分2条思路来看,1/进行人工智能教育,简单点就是学生接受人工智能相关内容的学习,如机器人、编程类、机器学习(MachineLearning)等,或者利用人工智能相关的逻辑思维解决问题,即学习与人工智能相关的知识技能。2/运用人工智能技术,引领教育系统性变革,比如说智能化感知,智能化的教育评价,智能化推荐数字教育资源,实现个性化学习等,即人工智能技术在各类教育场景的应用,本回答答主要阐述2。这个话题当前已经有不少回答者,提了很多AI与教育的结合点,有的分享者从技术的成熟度度分析;有的是从实际落地案例出发,阐述人工智能在教育中的实践;也有辩证思维观点的分享。私以为,大家在看回答之前不妨先了解一下相关的基本政策,磨刀不误砍柴工。 人工智能运用在K12教育大家怎么看?www.zhihu.
2020年VVC视频编码进入标准化最后阶段,有望在年底正式成为国际标准。文/ChristianFeldmann译/元宝原文https://bitmovin.com/compression-standards-vvc-2020/2020年是属于VVC的一年,至少是在标准化的最后阶段。在最近一次布鲁塞尔会议举行之后,VVC委员会的草案获得了通过。因此,VVC有望在2020年底最终成为国际标准。这也意味着标准化过程正在慢慢地接近尾声,标准草案没有添加任何新的主要特性。然而,标准化是一个持续进行的过程,包括对文本的清理和错误修复、对现有工具的简化以及高级语法的完成。那么,VVC到底有什么新特性呢?对于视频编码来说,这是一次真正的革命吗?简而言之:不是的。虽然它在技术上非常先进,但它也只是HEVC的一个进化产物。它仍然使用基于块的混合视频编码方法,这是自H.261(1988年起)以来所有主要视频编码标准的基础概念。在这个概念中,视频的每一帧都被分割成块,然后按顺序依次去处理所有块。在解码器端,解码器会在一次循环中处理每一个块,循环从码流的熵解码开始。然后对解码后的变换系数进行反量化和反变换运算。
1)postgresql默认存储的是堆表,数据按行存储在heappage中。行记录除了存储字段的值外还会存储对应的ctid即行号,表示在哪个页第几个记录。2)进行select的时候也可以直接指定ctid进行扫描:heaphandler中表访问方法的函数为table_tuple_fetch_row_version函数,它来完成通过ctid获取元组。postgres=#select*fromtwherectid='(0,2)'; id1|id2 -----+----- 2|b (1row)复制3)堆栈为Breakpoint4,table_tuple_fetch_row_version(rel=0xae9da164,tid=0xbfb2d4c6,snapshot=0x8c06364,slot=0x8c4b7f4)at../../../src/include/access/tableam.h:1026 1026 returnrel->rd_tableam->tuple_fetch_row_version(rel,tid,snapshot,slot); (gdb
(使用vs2010所带的编译器)转载请注明来源 http://www.cnblogs.com/jerry19880126/隐式转换(implicitconversion)shorta=2000;intb;b=a;short是两字节,int是四字节,由short型转成int型是宽化转换(bit位数增多),编译器没有warning,如下图所示。宽化转换(如char到int,int到longlong,int到float,float到double,int到double等)构成隐式转换,编译器允许直接转换。但若反过来doublea=2000;shortb;b=a;此时,是从8字节的double型转成2字节的short型变量,是窄化转换,编译器就会有warning了,如下所示,提醒程序员可能丢失数据。不过需要注意的是,有些隐式转换,编译器可能并不给出warning,比如int到short,但数据溢出却依然会发生。C风格显式转换(Cstyleexplicitconversion)要去掉上述waring很简单,熟悉C语言的程序员知道,有两种简单的写法(C风格转换与函数风格转换):doublea=200
数据加密的基本过程:对原来为明文的文件或数据按某种算法进行处理,使其成为不可读的一段代码(“密文”)一个加密系统S可以用数学符号描述如下:S={P,C,K,E,D}其中P——明文空间,表示全体可能出现的明文集合,C——密文空间,表示全体可能出现的密文集合,K——密钥空间,密钥是加密算法中的可变参数,E——加密算法,由一些公式、法则或程序构成,D——解密算法,它是E的逆。当给定密钥kÎK时,各符号之间有如下关系:C=Ek(P),对明文P加密后得到密文CP=Dk(C)=Dk(Ek(P)),对密文C解密后得明文P如用E-1表示E的逆,D-1表示D的逆,则有:Ek=Dk-1且Dk=Ek-1因此,加密设计主要是确定E,D,K。加密算法原理分为三种:对称加密,非对称加密,(摘要算法)(1)对称式加密就是加密和解密使用同一个密钥。常见对称加密DES(DataEncryptionStandard):对称算法,数据加密标准,速度较快,适用于加密大量数据的场合;3DES(TripleDES):是基于DES的对称算法,对一块数据用三个不同的密钥进行三次加密,强度更高。RC2和RC4:对称算法,用变长密钥对大
帐号权限体系PostgreSQL的权限管理模型,是一种典型的RBAC(基于角色的权限控制)的实现。其将用户、角色、权限通过此模型管理起来。 PostgreSQL中的“用户”概念和“角色”概念实际是等同的,唯一的区别在于“用户”拥有login权限,而“角色”拥有nologin权限。 PostgreSQL的权限可以分为两类,“系统权限”和“数据库对象权限”。PostgreSQL通过角色来进行权限管理,角色可以拥有系统权限和数据库对象权限。并且也可以作为一组权限集合,授予给其他的角色或者用户。可以通过授予角色/用户相应的系统权限和对象权限来对数据库进行管理。 系统权限系统权限是指可以执行特定数据库操作的权限。PostgreSQL中使用“角色属性(RoleAttributes)”和“默认角色(DefaultRoles)”两种方式来管理系统权限。 角色属性角色属性可以在CREATEROLE时指定,或者通过ALTERROLE来修改。角色属性保存在pg_authid系统表中。CREATEROLE语法如下:CREATEROLEname[[WITH]option[...]] whereoptioncan
简介 最近在看代码时,发现了两个之前没见过的数据类型:intptr_t,uintptr_t。这两个数据类型是ISOC99定义的,具体代码在linux平台的/usr/include/stdint.h头文件中。 /*Typesfor`void*'pointers.*/ #if__WORDSIZE==64 #ifndef__intptr_t_defined typedeflongint intptr_t; #define__intptr_t_defined #endif typedefunsignedlongint uintptr_t; #else #ifndef__intptr_t_defined typedefint intptr_t; #define__intptr_t_defined #endif typedefunsignedint uintptr_t; #endif 复制 为什么会根据不同的位数定义不同的长度呢? 先看下不同的数据类型在不同字长机器上长度大小。 位数 char short int long 指针 16 1个字节8位 2个字节16位 2个字节1
同样代码表现的不同行为 创建基类(Super)和派生类(Sub)每个类有一个字段field和一个公共方法getField,并且使用内联的方式初始化为1,方法getField返回字段field。C#和Java代码及运行结果如下 C# classSuper { publicintfield=0; publicintgetField() { returnfield; } } classSub:Super { publicintfield=1; publicintgetField() { returnfield; } } classProgram { privatestaticvoidMain(string[]args) { Supersup=newSub(); Console.WriteLine("sup.getField()result:"+sup.getField()); Console.ReadKey(); } }复制 Java classSuper{ publicintfield=0; publicintgetField(){ returnfield; }
5.Maven 为什么要学习Maven 1.在javaweb开发中,需要使用大量的jar包,然后大部分是需要手动导入; 2.如何能够让一个东西自动帮我们导入和配置这个jar包; 由此,Maven诞生了; 5.1Maven项目架构管理工具 我们目前用来就是方便导入jar包的! Maven的核心思想:约定大于配置 有约束不要去违反 下载完成后,解压即可; 建议:电脑所有的环境都放在一个文件夹中去; 5.2下载Maven apache下载maven压缩包 5.4配置环境变量 1.M2_HOME配置环境变量 2.Maven_HOME配置环境变量 3.%Maven_home%\bin; 查看是否安装成功:mvn-version 5.4本地仓库 本地仓库,远程仓库; 建立一个本地仓库:localRepository <localRepository>D:\env\java8\apache-maven-3.3.9\maven_repo</localRepository> 复制 5.6在IDEA中使用Maven 4.观察maven本地仓库是否有东西; 6.这里,Maven
TeamC# 一.团队成员简介 杜正远,队长。 博客地址:http://www.cnblogs.com/kevindu/ 崔强,全职PM。 博客地址:http://www.cnblogs.com/mavourneen 王嘉豪,前端工程师,专注负责界面。 博客地址:http://www.cnblogs.com/ACEWJH/ 曾哲昊,后端工程师。 博客地址:http://www.cnblogs.com/ace123/ 黄上,测试员。 博客地址:http://www.cnblogs.com/hshang 石岚,负责提醒更新博客,并发布。 博客地址:http://www.cnblogs.com/yuccalan/ 金知焕 博客地址:http://www.cnblogs.com/geeffan/ 二.项目展示 团队日程管理(AgendaManager) 主要功能:1、添加好友 &nbs
基于DeepFM模型的广告推荐系统研究(郁等) 摘要 信息呈指数爆炸增长的时代,如何在这个信息千变万化的世界里获得用户想要的数据显得尤其重要。作者们提出了DeepFM模型并且实验结果发现,DeepFM模型比逻辑回归和因子分解机模型的效果都要好。 关键词 DeepFM特征提取广告推荐深度神经网络因子分解机 引言 海量信息与人难以获得准确信息的矛盾现状 广告推荐问题一般可理解为广告点击率问题(基于用户行为的预测问题)。难以解决的问题:数据量大、数据稀疏、异常数据等。复杂模型训练难度大,容易出现过拟合问题(模型越复杂,考虑参数影响因素越多,训练拟合越好),因此工业界一般使用较为浅层的模型,解决的主要问题就是特征工程。 过拟合:模型过度拟合,在训练集(trainingset)上表现好,但是在测试集上效果差。训练时尽可能的兼顾每个数据,曲线过于完美,训练时数据分散,拟合效果差 欠拟合:模型拟合不够,在训练集(trainingset)上表现效果差,没有充分的利用数据,预测的准确度低。 防止过拟合的方法有: 获取更多数据 减少特征变量 限制权值(正则化) 贝叶斯方法 结合多种模型 其中最有
给定一颗大小为\(n\)的树,\(m\)次操作,维护一个初始为空的路径集合\(P\)。 定义树上一条路径的\(d\)邻居(一个点集)\(S\)为:\(x\inS\)当且仅当存在一个路径上的点\(y\)满足\(dis(x,y)\led\)。 操作分为三种: 输入\(u,v\),在\(P\)中加入\(u\)到\(v\)的路径。 输入\(u,v\),删除\(P\)中一个\(u\)到\(v\)的路径。(注意\(u\)到\(v\)的路径与\(v\)到\(u\)的路径是相同的,若有多个\(u\)到\(v\)的路径只删除一个) 输入\(d\),询问\(P\)中所有路径的\(d\)邻居交集是否为空,若不为空输出Yes,否则输出No。 \(1\len,m\le2\times10^5.\) 3500的datastructure题。感觉也没那么恶心? 首先我们分析问题实质,判断是否有交?那直接找到交集里的一个关键点不就好了?画一画图发现选取所有路径中lca最深的路径的lca向上跳\(d\)步的点即可,设为点\(u\)。那么所有只要有一端在\(u\)子树内的路径都合法了。 考虑什么时候一定
<scripttype="text/javascript"> varx=1; vary=0; varz=0; functionadd(n){n=n+1;} y=add(x); functionadd(n){n=n+3;} z=add(x); s=y+z; </script> 求: y的值是? z的值是? s的值是? 我相信,肯定有同学会答错,当然,不是说他们不会,而是他们可能太大意了! 我们首先看functionadd,两个add都没有返回值,而我们知道,没有明确返回值的,全部返回undefined,所以,y和z都会是undefined,那么s自然也就不会是一个数字了,没错,s应该是NaN。 假如我们将题目改一下呢?如下: <scripttype="text/javascript"> varx=1; vary=0; varz=0; functionadd(n){returnn=n+1;} y=add(x); functionadd(n){returnn=n+3;} z=add(x); s=y+z; </script> 两个f