分类目录:摩登3平台开户

摩登3娱乐怎么样?_C语言执行效率如何保证,看这一文就够了!

来自公众号:嵌入式ARM 嵌入式开发基本都会选择C语言 这是因为C语言有出色的可移植性 能在多种不同体系结构的软/硬平台上运行 虽然代码的复用性差 代码的维护性差 扩展性很差 但,C语言简洁紧凑 使用灵活的语法机制 并且,C语言具有很高的运行效率 那么如何保证C语言的执行效率? 嵌入式ARM告诉你! 01 C代码执行效率与哪些因素有关 C代码执行效率与时间复杂度和空间复杂度有关: 1、空间复杂度是指算法在计算机内执行时所需存储空间的度量 2、一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n)/f(n)的极限值为不等于零的常数,则称f(n)是T(n)的同数量级函数。 记作T(n)=O(f(n)),称O(f(n))为算法的渐进时间复杂度,简称时间复杂度。在各种不同算法中,若算法中语句执行次数为一个常数,则时间复杂度为O(1),另外,在时间频度不相同时,时间复杂度有可能相同,如T(n)=n2+3n+4与T(n)=4n2+2n+1它们的频度不同,但时间复杂度相同,都为O(n2)。 按数量级递增排列,常见的时间复杂度有:常数阶O(1),对数阶O(log2n),线性阶O(n),线性对数阶O(nlog2n),平方阶O(n^2),立方阶O(n^3),。。。,k次方阶O(n^k),指数阶O(2^n)。随着问题规模n的不断增大,上述时间复杂度不断增大,算法的执行效率越低。 02 保障C代码执行效率的原则 1、选择合适的算法和数据结构 选择一种合适的数据结构很重要,如果在一堆随机存放的数中使用了大量的插入和删除指令,那使用链表要快得多。数组与指针语句具有十分密切的关系,一般来说,指针比较灵活简洁,而数组则比较直观,容易理解。对于大部分的编译器,使用指针比使用数组生成的代码更短,执行效率更高。 在许多种情况下,可以用指针运算代替数组索引,这样做常常能产生又快又短的代码。与数组索引相比,指针一般能使代码速度更快,占用空间更少。使用多维数组时差异更明显。下面的代码作用是相同的,但是效率不一样。 数组索引 指针运算 For(;;){ p=array A=array[t++]; for(;;){ a=*(p++); 。。。。。。。。。。。。。。。    }                      } 指针方法的优点是,array的地址每次装入地址p后,在每次循环中只需对p增量操作。在数组索引方法中,每次循环中都必须根据t值求数组下标的复杂运算。 时间复杂度更低、效率更高的算法可以提高执行效率。一个简单的例子,计算1~100这些数的和,可以循环100次,也可以直接使用求和公式,在执行效率上,是显而易见的。 2、代码尽量简洁,避免重复 在10天学会单片机那本书上看到写的数码管显示那部分代码,选中一个位,然后送数据,再选中一个位,再送数据,依次做完。代码重复率太高了,不仅占用过多的类存,而且执行效率差可读性差,仅仅是实现了功能而已,实际的编程可以做一个循环,for循环或者while循环。这样的代码看起来更有水平。 3、合理使用宏定义 在程序中如果某个变量或寄存器经常用到,可以使用宏定义定义一个新的名代替它。这样的好处是方便修改,比如液晶的数据端总线接的P1,现在想改到P0,那么只需要修改宏定义这里就可以了,编译器编译的时候,会自动的把定义的名替换成实际的名称。 函数和宏的区别就在于,宏占用了大量的空间,而函数占用了时间。大家要知道的是,函数调用是要使用系统的栈来保存数据的,如果编译器 里有栈检查选 项,一般在函数的头会嵌入一些汇编语句对当前栈进行检查;同时,CPU也要在函数调用时保存和恢复当前的现场,进行压栈和弹栈操作,所以,函数调用需要一 些CPU时间。而宏不存在这个问题。宏仅仅作为预先写好的代码嵌入到当前程序,不会产生函数调用,所以仅仅是占用了空间,在频繁调用同一个宏的时候,该现象尤其突出。 举例如下: 方法A: #define bwMCDR2_ADDRESS 4#define bsMCDR2_ADDRESS 17int BIT_MASK(int __bf){return ((1U << (bw ## __bf)) - 1)<< (bs ## __bf);}void SET_BITS(int __dst,int __bf, int __val){__dst = ((__dst) & ~(BIT_MASK(__bf))) |/(((__val) << (bs ## __bf))& (BIT_MASK(__bf))))}SET_BITS(MCDR2, MCDR2_ADDRESS,ReGISterNumber); 方法B: #define bwMCDR2_ADDRESS 4#define bsMCDR2_ADDRESS 17#define bmMCDR2_ADDRESS BIT_MASK(MCDR2_ADDRESS)#define BIT_MASK(__bf)(((1U << (bw ## __bf)) - 1)<< (bs ## __bf))#define SET_BITS(__dst, __bf, __val)/((__dst) = ((__dst) & ~(BIT_MASK(__bf)))| /(((__val) << (bs ## __bf))& (BIT_MASK(__bf))))SET_BITS(MCDR2, MCDR2_ADDRESS,RegisterNumber); B方法是我看到的最好的置位操作函数,是ARM公司源码的一部分,在短短的三行内实现了很多功能,几乎涵盖了所有的位操作功能。A方法是其变体,其中滋味还需大家仔细体会。 4、以空间换取时间 程序的复杂度包含时间复杂度和空间复杂度,而随着计算机硬件的发展,渐渐放低了对空间复杂度的要求,在很多情况下,为了换取程序的执行效率,牺牲计算机的空间。比如字符串的相关操作、使用缓存技术等。 计算机程序中最大的矛盾是空间和时间的矛盾,那么,从这个角度出发逆向思维来考虑程序的效率问题,我们就有了解决问题的第1招–以空间换时间。比如说字符串的赋值: 方法A:通常的办法 #define LEN 32char string1 [LEN];memset (string1,0,LEN);strcpy (string1,"This is…

摩登3测速登录地址_双非渣硕的秋招之路总结(已拿抖音研发岗SP)

前言       最近应邀在牛客网写 C++ 求职专栏,又把以前的秋招总结补充了很多东西,现在想想还是发出来,希望能够帮助更多的新手小伙伴们。 个人情况简介 楼主本硕均读于双非院校(普通二本学校)、本硕都是计算机相关专业,英语六级水平,本科时期辅修了一个水的不能再水的英语第二学位。 本科时期学过很多语言:VB、C、C++、Java、C# 都有所涉猎,研究生时期则主攻 Python 和 C++。研二上学期开始系统学习 C++,并且不断系统看书和实践,中间崩溃过、迷茫过、放纵过,但从未放弃,始终相信自己,坚持咬牙走下去。所幸天道酬勤,最终也是拿到了一些不错的 offer 。 投递经历 笔者从 2020.6.15 号正式开始投递简历,到 2020.8.23 号截止一共投递过 94家公司,其中既有提前批(2020年 6 月- 7 月),也包括正式批(2020 年 7 月- 10月)。 小建议:如果说求职者对自身实力不自信,可以多投投一些公司,选择面放宽一些,不要死盯着那几个大厂投。 共计笔试 59 场(最多一天做了 5 场笔试,那天天差点去世),54 家公司给了面试机会,54 家企业中有些企业是免笔试的。 秋招结果        最终成功走到了 6 家公司的 offer 环节:字节跳动研发岗 SP、华为通用软件开发、百度 C++ 研发岗、B 站后端研发岗、深信服 C++ 研发岗以及农业银行研发岗,最后签了字节跳动,也是自己心心念念的大厂之一,十分满意了~         接下来从 6 个方面对秋招进行复盘和总结,希望能够帮到大家鸭,特别是大三大四的小学弟们。 1、算法         在秋招过程中,算法是极其重要的,再次重申一遍,真的很重要!笔试就不提了,算法不过关,笔试基本凉凉,面试过程中基本都要手撕代码,很多面试中算法题是具有一票否决权的,如果你能够顺利解出来,面试不敢说一定会过,至少是有很大加分项,但如果算法题做不出来或者说 bug 太多调试不通的话,面试上基本上就跪了(个人以及身边朋友经历,不一定准确)。在牛客网上也看到过很多基础很好的牛友就是因为面试过程中的算法题没解出来而直接饮恨的,希望大家千万重视算法这一块,千万千万要重视算法。         我大概在力扣上刷了 300+,HOT100 都刷了,剑指 offer 刷了 3 遍,刷完这些基本够用了,自己也有注意总结题型,常见题型就是那些,所以算法题基本没怎么拉过我后腿。一般来说,主要考的就是动态规划、贪心、二叉树、链表、数组、字符串之类的。 推荐资料: 力扣1-300题(前300道题非常经典,建议学有余力的同学都刷一刷) 力扣HOT100(跟上面有不少是重复的,刷的时候要注意总结) 啊哈!算法、大话数据结构(这两本书都是面向新手的图书,图画很多,有基础的可以直接跳过不看) 剑指offer(这本书不需要多做介绍,校招必备) 挑战程序设计竞赛(这本书属于进阶一点的算法书籍了,作者是ACM-ICPC全球总冠军,可以说是世界顶级程序设计高手的经验总结了,需要慢慢消化,经典题型太多) 程序员代码面试指南(左程云大神的书,阿秀并没有看完,只是看了其中的海量数据处理部分的题目就已经十分受用了,在百度三面中就考查到了其中的海量数据集处理的问题) 2、操作系统         操作系统是比较重要的,面试三大要点之一(操作系统、计网、数据库),我是在 B 站上看过一些操作系统视频,同时自己慢慢看书、看博客学的。其中死锁、虚拟内存、堆栈、进程线程、内存管理、磁盘调度等都是重点,也是面试过程中问的比较多的一些知识点。你如果能够在面试过程中讲出来一些具体的操作系统知识,而不是泛泛而谈,肯定是很加分的,比如常见知识点进程线程区别,在提到线程切换比进程更快时,你如果能够很清楚明白的说出来进程切换做了哪些、线程切换做了哪些以及线程为什么比进程快,毫无疑问很加分的。  推荐资料: B站哈工大操作系统:https://www.bilibili.com/video/BV1d4411v7u7 B站清华大学操作系统:https://www.bilibili.com/video/BV1js411b7vg B站美国麻省理工MIT 6.828操作系统神级课程:https://www.bilibili.com/video/BV1px411E7ST 现代操作系统(也是讲操作系统的一本好书,讲的很细) 深入理解计算机系统(大名鼎鼎的CSAPP,被誉为“和金子一样重要的计算机基础书籍” , 很厚的一本黑皮书,需要慢慢看) 现代操作系统:原理与实现(上海交通大学陈海波教授的著作,书中主要介绍操作系统的理论与具体实现细节等,感觉不如CSAPP) 3、计算机网络         计算机网络也是重点之一,特别是 HTTP 以及 TCP/UDP 相关知识点,算是校招必备考点了,面试必问,但是难度是逐年上升的,原因可能就在于内卷程度越来越严重了吧。比如说以前对于三次握手四次挥手只问过程,现在直接让面试者画出客户端以及服务器端的各个状态码以及解释各种意外情况,比如 SYN 请求丢失会怎么样?         建议计网的学习先从视频入手,然后再看经典书籍,毕竟视频中的知识都是别人总结好又给你讲解的,只有自己亲自揣摩、亲自动手实践得来的知识才是自己的,自己学来的才是真,经过实践方知分晓的~ 推荐资料: B站韩立刚老师的计算机网络(韩老师讲课诙谐易懂,让你在哈哈大笑中学到很多知识点:https://www.bilibili.com/video/BV17p411f7ZZ) 图解HTTP、图解TCP/IP(这两本书比较简单,日本人写的,把复杂的知识点简单化) 网络是怎样连接的(这本书紧紧围绕一个问题:输入一个URL,直到我们在网页端看到请求的内容,这中间发生了什么?抽丝剥茧将这个问题逐步细化,带你走完整个网页访问的过程) 计算机网络:自顶向下方法 (也是常见经典书籍之一,重点看第三章传输层TCP/UDP) 4、Linux        C++ 跟 Linux 基本是离不开的,特别是后端方向跟网络通信关系很大。在实际工作里,很多成熟的项目都是在 Linux 上进行开发的。所以有必要学一些 Linux 以及一些网络通信编程,网络通信涉及到的知识点很多,比如 IO 模型、线程池、多线程之类的。本人在秋招过程中被问过不少网络通信的问题,最频繁的就是 select、poll、epoll…

摩登3测速代理_数据处理,你不得不会的「正则表达式」

若要判断一个输入的QQ号是否有效,你会如何处呢? 首先你得分析一下其对应规则,依次列出: 长度大于5,小于等于11; 首位不能为0; 是否为纯数字? 规则既列,接着就该尝试实现了,那么用什么来表示字符串呢?在C++中,最容易想到的就是string了,其中提供了许多成员函数可以处理字符串,所以有了如下实现: 1std::string qq; 2std::cin >> qq; 3 4// 1. 判断位数是否合法 5if (qq.length() >= 5 && qq.length() <= 11) 6{ 7    // 2. 判断是否非'0'开头 8    if (qq[0] != '0') 9    {10        // 3. 判断是否为纯数字11        auto pos = std::find_if(qq.begin(), qq.end(), [](const char& ch) {12            return ch < '0' || ch > '9';13        });14        if (pos == qq.end())15            std::cout << "valid.\n";16    }17} 虽然写出来了,但是有没有感到异常繁琐?这还仅仅是一个对应规则较少的处理,便如此麻烦,若是要检测IP地址、身份证号,或是解析一段HTML数据,或是其它更复杂的字串,那岂非更令人叫苦不迭? 当然,也有许多扩展库对字符串处理提供了方便,其中比较好用的是boost中的string_algo库(已于C++17纳入了标准库,并改名为string_view),但本篇主要说C++11的regex库,其对复杂数据的处理能力非常强,比如可以用它来检测QQ号: 1std::regex qq_reg("[1-9]\\d{4,11}");2bool ret = std::regex_match(qq, qq_reg);3std::cout << (ret ? "valid" : "invalid") << std::endl; 是不是超级方便呢?那么接下来便来看看如何使用「正则表达式」。 正则程序库(regex) 「正则表达式」就是一套表示规则的式子,专门用来处理各种复杂的操作。 std::regex是C++用来表示「正则表达式」(regular expression)的库,于C++11加入,它是class std::basic_regex<>针对char类型的一个特化,还有一个针对wchar_t类型的特化为std::wregex。 正则文法(regex syntaxes) std::regex默认使用是ECMAScript文法,这种文法比较好用,且威力强大,常用符号的意义如下: 符号 意义 ^ 匹配行的开头 $ 匹配行的结尾 . 匹配任意单个字符 […] 匹配[]中的任意一个字符 (…) 设定分组 \ 转义字符 \d 匹配数字[0-9] \D \d 取反 \w 匹配字母[a-z],数字,下划线 \W \w 取反 \s 匹配空格 \S \s 取反 + 前面的元素重复1次或多次 * 前面的元素重复任意次 ? 前面的元素重复0次或1次 {n} 前面的元素重复n次 {n,} 前面的元素重复至少n次 {n,m} 前面的元素重复至少n次,至多m次 | 逻辑或 上面列出的这些都是非常常用的符号,靠这些便足以解决绝大多数问题了。 匹配(Match) 字符串处理常用的一个操作是「匹配」,即字符串和规则恰好对应,而用于匹配的函数为std::regex_match(),它是个函数模板,我们直接来看例子: 1std::regex reg("<.*>.* "); 2bool ret = std::regex_match("value", reg); 3assert(ret); 4 5ret = std::regex_match(" value " , reg); 6assert(!ret); 7 8std::regex reg1("<(.*)>.* "); 9ret = std::regex_match(" value ", reg1);10assert(ret);1112ret = std::regex_match(" value ", std::regex("<(.*)>value "));13assert(ret);1415// 使用basic文法16std::regex reg2("<\\(.*\\)>.* ", std::regex_constants::basic);17ret = std::regex_match("value", reg2);18assert(ret); 这个小例子使用regex_match()来匹配xml格式(或是html格式)的字符串,匹配成功则会返回true,意思非常简单,若是不懂其中意思,可参照前面的文法部分。 对于语句中出现\\,是因为\需要转义,C++11以后支持原生字符,所以也可以这样使用: 1std::regex reg1(R"(<(.*)>.* )");2auto ret = std::regex_match(" value ", reg1);3assert(ret); 但C++03之前并不支持,所以使用时要需要留意。 若是想得到匹配的结果,可以使用regex_match()的另一个重载形式: 1std::cmatch m; 2auto ret = std::regex_match(" value ", m, std::regex("<(.*)>(.*) ")); 3if (ret) 4{ 5    std::cout << m.str() << std::endl; 6    std::cout << m.length() << std::endl; 7    std::cout << m.position() << std::endl; 8} 910std::cout << "----------------" << std::endl;1112// 遍历匹配内容13for (auto i = 0; i < m.size(); ++i)14{15    // 两种方式都可以16    std::cout << m[i].str() << " " << m.str(i) << std::endl;17}1819std::cout << "----------------" << std::endl;2021// 使用迭代器遍历22for (auto pos = m.begin(); pos != m.end(); ++pos)23{24    std::cout << *pos << std::endl;25} 输出结果为: 1 value 216 30 4---------------- 5…

摩登3咨询:_5G数字化运维,到底是如何实现的?

从2G到4G,移动通信改变了我们每一个人的生活。已经到来的5G,更是加速了各个行业的数字化转型。 就在移动通信网络改变人类的同时,它自身也在发生巨变——网元变得越来越多,网元之间的接口和协议也变得越来越复杂。 令人头秃的2/3/4/5G网络 那么,你有没有想过,面对如此复杂的网络,我们究竟该如何进行有效的 管理和维护 呢? 其实,我们可以把5G看作是一个人。我们对人进行健康监测,通常是在他身上安装监测设备,采集样本(例如验血、心电图、X光等)。 根据采集到的数据,我们再进行指标分析,最终得出健康报告。 早期的通信网络也是这样,每个网元设备都有自己的管理软件,通过软件可以查看该网元的指标情况。 但是,这种方式过于分散,属于典型的“头痛医头,脚痛医脚”。对人体来说姑且可行,但是,对于移动通信网络(尤其是5G这样的复杂网络)来说,增加了运维难度。 因为,一个业务问题,通常涉及到多个(甚至十多个)网元。全靠人工分散运维的话,需要面对巨大的工作量,很难快速找到问题根因。 真正优秀的医生,会根据身体全方位的检查结果汇总,给出准确的诊疗判断。网络运维,亦是如此。 网络是一个整体。对于网络的维护,应该“站得更高,看得更全”。 我们可以在每一个接口安装探针,进行抓包,获取数据。然后,对数据进行汇总整理,找出规律,并给出结论。 这种抓取网元之间接口数据包,并对其进行分析和识别的技术,就是业界常说的深度报文识别技术,DPI(Deep Packet Inspection)。 而抓取报文之后形成的记录,则被称为XDR(X Data Recording)。 常见的XDR有两种,分别是信令XDR和业务XDR: (1) 信令XDR:记录网元间发号施令的详细过程,这些指令包括接入、释放、切换等。 (2) 业务XDR:记录用户有关的信息如IMSI,以及用户上网、打电话等业务的详细过程。 大家会注意到,单个接口产生的XDR,只会记录该接口相关的信息,即“单接口XDR”。 然而,任何一次完整的用户行为(比如打电话),肯定会涉及到多个接口。 因此,我们在采集到多个相关接口的“单接口XDR”数据之后,还需要根据用户号码、时间顺序等,对它们进行关联、合成,形成能够全面描述整个业务过程的“完整XDR”。 XDR的关联合成 这些完整XDR,会被打包送到上层运维系统中,等待解析、使用。 字段名 说明 Length 整个XDR所占用的字节数 Interface 接口名称:Mw/Mg/Mi/Mj/ISC/Gm/…… XDR ID XDR唯一编号 IMSI IMSI号码 Procedure  Type 流程类型编码,取值如下:1:Register(注册)2:Deregister(注销) 3:3rd-Register(第三方注册)4:3rd-Deregister(第三方注销) 5:Calling(语音通话) 6:…… Procedure  Start Time 业务流程开始时间 Procedure  End Time 业务流程结束时间 …… …… XDR内部信息示例 如上表所示, XDR里面的各种字段信息,完整地描述了一次业务流程。例如,Procedure Type字段为5,则表明该次业务类型是 “Calling(语音通话)”。 大家搞明白了吧?DPI技术,有点像移动通信网络的“生命监测仪”,是运维支撑工作的神器。 接下来,我们就通过“语音通话”这个基本业务,深入了解一下DPI究竟如何帮助运维人员进行“5G生命监测”。 大家应该都听说过,5G通过VoNR(Voice over NR),实现对语音通话业务的支持。 其实,在5G网络建设早期,5G信号并没有做到无缝覆盖。所以,为保证通话的成功率,我们可能会更多地采用另一种语音技术方案,那就是EPS Fallback。 简单来说,就是当工作在5G网络上的终端,发起语音呼叫或有语音呼入时,网络通过切换流程,将5G终端切换到4G网络上,通过VoLTE(Voice over LTE)技术提供语音业务。 这样一来,打通5G语音电话,就需要跨无线域、5GC域(5G核心网)、EPC域(4G核心网)、IMS域,调动数量众多的网元、接口,进行大规模协作。 EPS Fallback的业务流程大致可以分为 起呼、回落、接通、返回 四大阶段,整个过程极为复杂(如下图所示)。 EPS Fallback的信令流程 这么多域,这么多网元,这么多接口,这么多信令,稍有一丁点差错,就会影响用户的语音通话体验,甚至导致通话失败。这么复杂的协同流程,一旦出现问题,想要反查原因,也是非常困难的。 在中兴通讯的EPS Fallback方案中,为了让用户能够 “打得通、接得快、不掉话、听得见” ,他们针对起呼、回落、接通、保持全流程建立了KQI-KPI指标体系。 KQI:关键业务指标,Key Quality Indicator KPI:关键性能指标,Key Performance Indicator 5G语音业务感知指标体系 指标体系建好之后,就轮到中兴通讯 VMAX智能大数据平台 闪亮登场了。 这个平台就是前面我们所说的移动通信网络“生命监测仪”。它可以通过查询XDR(监测数据),关联合成之后,完整“还原”一次EPS FallBack业务流程。 结合前面提到的“生命指标体系”,VMAX平台进行多维分析、信令回溯,就能精准定位出“病因(问题点)”。 中兴通讯VMAX平台的架构并不复杂,它分为数据采集层、数据解码层和应用层,可以面向核心网域以及无线域进行数据采集和解码。合成后的数据,可以提供给上层应用进行深度分析。 VMAX 5G DPI系统架构 大家应该能看出来,EPS Fallback 5G语音业务分析只是中兴VMAX平台强大功能的一个缩影。基于对XDR的深度分析,整个系统能够实现对网络、业务和用户的全面洞察。 运营商不仅可以了解网络各方面的运行状态,还可以监控具体业务的运行质量,更能够实现用户体验的主动感知。 除了发现和解决问题之外,VMAX系统还可以用于 精准营销 。 VMAX采用业界领先的加密业务识别技术,可以实时DPI解析用户流程的业务特征,判断业务流量类型。 也就是说,借助VMAX,运营商可以知道用户到底在使用哪种类型的App(抖音、微信、爱奇艺等)。这样一来,可以建立用户画像,进行针对性的推广营销(例如定向流量包推荐、App权益赠送)。 中兴VMAX可以识别10000种以上的协议,识别准确率高达95%,远远高于行业80%的平均水平。系统的规则库会持续更新,增加对最新业务的识别能力。 相比行业同类产品,中兴VMAX还具有以下特点: 全域数据采集能力 中兴通讯在信令分析领域有20多年的技术沉淀,是业内唯一具备2/3/4/5G/NB-IoT全网全域数据采集能力的厂家,同时具备核心网、无线的事务级话单关联能力,真正能做到业务端到端分析。 智能的AI采集,赋能5G 针对5G网络特征,中兴VMAX可以提供基于切片的采集方案,分场景、分时间、分区域、分流量等进行智能化DPI采集。 免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

摩登3注册网址_一个让我感到毛骨悚然的GitHub项目!

想必你永远不会想到,有一天你也会被自己的键盘出卖。 对,就是你每日敲击的键盘。当指尖在键盘上跳跃,清脆的噼啪声此起彼落时,你输入的所有信息,包括那些情真意切的词句,那些不欲人知的心事,还有你的网络账户、银行密码…… 全都被它泄露了。 键盘,还能被黑??? 前不久,一个叫做 Keytap 的 “黑科技” 在国外火了。Keytap 通过监听你敲击键盘的声音,就能还原出你输入的内容。 而且,只需要通过你电脑里的麦克风,就能完成声波采集的任务。 在一段发布于网上的 Demo 里,Keytap 作者展示了在 iMac+Filco 机械键盘环境中,这个算法的优秀程度,请看: 四步偷窥大法 搭建这样一个 “偷窥” 打字的模型并不难,Keytap 算法也已经开源了。跟着做,只要如下四步: 一是,收集训练数据; 二是,搭建预测模型,学习一下数据; 三是,检测出有人在敲键盘; 四是,检测出 ta 在打什么字。 收集训练数据 Keytap 收集数据时,只保留每次敲击前后 75-100 毫秒的音频。 这就是说,并非连续取样, 两次敲击之间有一部分是忽略的。 这种做法是会牺牲一些信息量的。 从敲下按键,到程序受到指令,这之间有随机延时,与硬件和软件都有关系。 比如,按下 g 键的完整波形长这样: 看图像可以发现,敲击时出现了一个峰值,而再过大约 150 毫秒,又有一个按键被抬起的小峰值。 这样说来,100 毫秒之外的信息也可能有用,不过这里为了简便就忽略了。 最终,收集到的数据长这样: 除此之外,局限性还在于,如果两次按键之间相隔不久,后者落在前者的后 75 毫秒之内,那数据可能就有些混杂了。 搭个预测模型 这个部分是最能发挥创造力的部分。Keytap 用了一个非常简单的方法,分为三步: 1. 把收集到的波形的峰值对齐。这样可以避免延时带来的影响。 2. 基于相似度指标 (Similarity Metric) ,更精细地对齐波形。 需要更精确的对齐方法,是因为有时候峰值未必是最好的判断依据。 那么,可不可以跳过峰值对齐呢? 之所以第 2 步之前要先做第 1 步,是因为相似度指标的计算很占 CPU。而第 1 步可以有效缩小对齐窗口 (Alignment Window) ,减少计算量。 3. 对齐后,做简单加权平均。权重也是用相似度指标来定义的。 完成第 3 步之后,每一个按键都会得出一个平均波形 (a Single Averaged Waveform) ,用来和实时捕捉的数据做 比对。 Keytap 用的 相似度指标是互相关 (Cross Correlation, CC) ,长这样: 这里,Ai 和 Bi 都是某个按键的波形样本,比对就在它们之间进行。CC 值越高,表示两者越相似。 当然,也可以用其他相似度指标来做。 顺便一说,两次按键之间的 间隔时长,其实也可以用来预测的,但开发者怕麻烦就省略了,勇敢的少年可以去源代码基础上自行实验。 检测出在敲键盘 平均波形和比对标准都有了,可是麦克风实时收录的声音连绵不绝,该和哪一段来比对呢? 这就需要从连续的音频里,找到敲击键盘的声音。 Keytap 用了一个非常简单的阈值方法,在原始音频里监测敲击动作: 按下去的时候,会有一个大大的峰值,这就是侦测目标。 不过,这个阈值不是固定的,是自适应 (Adaptive) 的:根据过去数百毫秒之内的平均样本强度来调整的。 检测打了什么字 当系统发现有人在敲键盘,就用相似度指标来测到底按了哪个键,CC 值最高的就是答案。方法就像上文说的那样。 现在,代码实现已经 开源了,传送门见文底。 不过,作者在博客中说,这个方法目前只有 机械键盘适用。 “薯片间谍” 听音识字的研究不止这一个,去年一篇 Don’t Skype & Type!Acoustic…

摩登3咨询:_美国力挺的Open RAN,真的能成功吗?

今年以来,关于Open RAN的新闻不绝于耳。这种全新的网络架构在打开我们视野的同时,也带来了很多的困惑。 究竟什么是Open RAN?它真的是美国的5G杀手锏吗?它会成功吗? 1     Open RAN剑指开放   说起Open RAN,Open这个“词”的含义相当直白,就是开放的意思。RAN则是Radio Access Network缩写,意思就是无线接入网。因此,Open RAN的含义就是开放的无线接入网。 对于2G和3G来说,RAN包含两个网元:基站,以及管理基站的控制器(2G叫BSC,3G叫RNC)。到了4G,网络开始扁平化,控制器被取消,基站直连核心网,RAN就只有基站这一个网元,5G时代依然如此。 2G和3G现在已在退网,我们暂且不提。关键是4G和5G,RAN侧就是孤零零的一个基站,还要怎样开放呢? 其实,这看似小小的基站,里面大有乾坤。 在无线网络发展的远古时代,基站是浑然一体的一个设备,仅仅对外出两类接口:连接核心网的传输接口,以及连接天线的射频接口。 这两类接口之间的基站主设备,就像是一个“黑盒子”,我们只是大概知道里面是由电源,交换,基带,收发信机,数字中频,射频等零件组装起来的,运行着相关软件来支撑这一系统的正常工作。 这些基站的硬件和软件都是各个厂家自研的,内部各模块的划分和之间的接口对外不可见,其内运行的软件也是如此。运营商要买基站就只能整套买,出了问题厂家包排查包解决。 到了4G时代,这个“黑盒子”稍微打开了点,大家都把基站划分成了两大模块:BBU和RRU,以及它们之间的接口CPRI(通用公共无线接口)。 但是,BBU和RRU的内部实现还是不对外开放的,各厂家的方案各异。它们之间的CPRI接口虽然名字上带着“通用公共”,其实也是私有的,各厂家都有各自的数据格式,不能互通。 因此,运营商要买基站,还是得BBU,RRU连带软件从一家整套买,爱立信的BBU是不可能接诺基亚的RRU的。 从2G到5G至今,随着供应商之间竞争的加剧,倒闭的倒闭,并购的并购,供应商越来越少,而由于通信行业的技术壁垒又非常高,新的玩家很难进入,最终形成了近似少数厂家寡头垄断的客观现实。 运营商设备投资的费用高企,各供应商的产品同质化,价格难以降低,又没有新的厂家可以替代,这可如何是好? 于是,无数期望的目光纷纷投向了“白盒化”基站。 白盒基站,就是要把传统的黑盒基站打开,并大卸八块,软硬件解耦,并将所有的接口开放。这样一来,即使这些部件由不同厂家提供,只要大家都遵循相同的协议就可以组装起来运行。 其中的BBU硬件需要使用通用服务器(也称作COTS,Commercial Off-The-Shelf,意为商用现成品),可以从市场上的任意服务器厂家购买。 在BBU使用了通用服务器之后,就必须支持虚拟化功能(称作vRAN),才能在上面灵活地部署来自不同厂家的功能软件。 RRU硬件由于不仅仅处理数据,还要进行无线信号的发送和接收,必须使用专用的功放和滤波器等部件,因此不能直接使用通用服务器,需要由专业的RRU厂家提供。 不同厂家的RRU硬件,怎样运行不同软件提供商的软件呢?这就需要这些硬件遵循同样的开放架构,并且支持虚拟化。这样一来,运营商不论从哪家购买RRU,都可以运行第三方的软件。 RRU怎样和不同厂家的BBU软件对接呢?这就要求RRU和BBU之间的接口也是要开放的,大家都完全遵守相同的协议,才能互通有无。 在5G时代,传统的BBU可进一步拆分成CU和DU,这两个网元也可以采用不同的软件供应商,运营商的选择更多,网络的灵活性进一步增加。  比如,基站RRU的硬件采用供应商A,B,C三家,RRU软件采用供应商D,E,F三家,CU和DU的硬件采用供应商G,DU的软件采用供应商H,I,J三家,CU的软件采用供应商K。 这样一来,原先只能由2到3个传统设备商提供的同质化的基站,现在可以由11家厂商提供。原先孤零零的一颗大树,现在变成了一片树林,还形成了新的生态系统,各厂家在自己的生态位上各司其职! 这样一来,对运营商来说,其供应商体系将更加灵活,更加多元化,还能引入充分的竞争来激发创新活力,不必再担心因网络被某家供应商独占而丧失议价权。网络建设的成本也得以降低。 基站白盒化的诉求,核心在于软硬件解耦和接口开放,承载着运营商对于成本的节省,以及摆脱设备商胁迫的梦想,成就了如今Open RAN的风起云涌。 上图是一个关于Open RAN部署动机的调查。可以看出,28%的运营商的诉求是降低成本;21%的运营商考虑解除供应商锁定,引入竞争;15%的运营商想要借此增强网络部署的灵活性。此三点需求占了64%,是绝对的主流。 2     Open RAN背后的组织 当大家在讨论Open RAN的时候,经常能看到C-RAN,xRAN,O-RAN,ORAN,oRAN,OpenRAN,Open vRAN,O-vRAN这些字眼,让人眼花缭乱。 它们又都是什么意思,跟Open RAN之间的关系是什么呢? 上面这些说法其实来源于三个不同的组织:O-RAN联盟,OpenRAN工作组,以及Open vRAN计划。我们先从O-RAN联盟说起。 2018年,那是一个春天,在西班牙巴塞罗那一年一度的世界移动大会(MWC)期间,中国移动,美国AT&T,德国电信,日本NTT DOCOMO,以及法国的Orange这五巨头联合起来,宣布了O-RAN联盟的诞生。 O-RAN联盟的前身,就是中国移动发起的C-RAN联盟,以及日本NTT DOCOMO主导的xRAN论坛。 C-RAN,就是Centralized RAN或者Cloud RAN,由中国移动在2009年提出。其核心思想是把多个BBU集中部署形成基带池,然后再进行虚拟化和云化,从而降低能耗,基础设施投入以及运维成本。   xRAN成立于2016年,其主要目标是用开放可替代的通用服务器来替换传统基站的专用硬件,从而将基站的软硬件解耦,核心思想也无非是开放二字。  基于相同的目标,C-RAN联盟和xRAN论坛合二为一,成为了新的O-RAN联盟。上文提到的ORAN,oRAN等不同写法也都代表的是O-RAN联盟。 O-RAN联盟的成员众多,参与的运营商除了包含创始的五巨头之外,还有中国电信和联通,西班牙电信,英国沃达丰,日本软银,KDDI等,几乎囊括了全球绝大部分主流运营商。 设备商里面,爱立信,诺基亚,中兴,三星,中国信科等都是O-RAN联盟成员,只有华为没有参与。高通,Intel等芯片厂家也位列其中。 此外,还有大量新兴的中小设备商的参与,包括美国的Altiostar, Parallel,Mavenir,以及来自中国的佰才邦,赛特斯,亚信,京信等,他们都想从中分得一杯羹。 那么,O-RAN是怎样对基站进行拆分呢?主要有下面四个目标(新四化): 接口开放化:把基站内部原有的封闭接口的开放,在这个基础上,不同厂家的软件才有可能无缝配合,以此降低对单一厂商的依赖,鼓励创新,降低成本。 软件开源化:推动无线协议栈开源,共享代码,降低研发成本,让产业企业把更多精力聚焦在核心算法和差异化功能软件的研发上。  硬件白盒化:将传统基站的专用硬件用通用服务器代替,充分进行软硬件解耦,降低行业门槛,吸引更多中小企业参与竞争。  网络智能化:RAN开放和解耦之后,可以引人工智能,实现复杂组网环境下的高效运维管理,提升频谱资源的利用率,降低网络能耗。 在上述四点思路的指导下,基站就被分解成了下面的样子: O-RAN联盟负责制定统一的技术规范,以及互操作测试规范,在顺从3GPP定义的5G基站标准接口(E1/F1/FH/X2/Xn/NG)的基础上,还自行扩展了A1/O1/O2/E2等接口,约束非常严格。 为了实现上述目标,O-RAN联盟成立了9个工作组,3个焦点组,以及1个开源软件社区。 下面再说另一个主要组织:OpenRAN。 2016年,Facebook发起了一个叫做TIP(Telecom Infra Project,电信基础设施)的项目,下面包含了很多子项目,其中就有一个OpenRAN的项目计划。 2017年,全球运营商巨头沃达丰把自己研究的SDR RAN的成果奉献给了TIP,并创建OpenRAN工作组,旨在建立一个基于通用服务器,可软件定义技术的白盒化RAN解决方案。 参与OpenRAN的运营商成员以欧美地区为主,中国的三大运营商都没有参与。项目由沃达丰和西班牙电信牵头,沃达丰负责全力推进。 传统设备商中,除诺基亚积极参与之外,爱立信,华为和中兴都没有参与。此外新晋设备商三星对此也非常激进。 此外,希望夹缝生存,在通信市场分得一杯羹的大量欧美新兴的中小设备商的参与非常积极,他们已经在全球开始部署OpenRAN商用网络,并开始组建自己的生态系统。 跟O-RAN联盟不同,OpenRAN工作组并没有对开放网络的内外部接口进行严格规范的定义,他们属于务实行动派,积极鼓励各运营商和设备商进行Open RAN网络的实际部署,并在外场进行互操作测试。 也就是说,O-RAN联盟是标准先行,而OpenRAN则是先部署验证,标准后续再补。因此目前实际部署的开放接入网络基本都是基于OpenRAN的。 总体而言,O-RAN和OpenRAN这两个组织的参与成员虽然不尽相同,推进策略也各有侧重,但其目标和产品方案却大体一致,拥有非常广泛的共同语言。 在2020年2月份,两者携起手来,共同在欧洲成立了开放测试和集成中心(OTIC),共享资源来进行Open RAN的研究和推进。 从上图可以看出,OpenRAN定义了一套自己的工作流程,并和3GPP,开源软件社区,以及O-RAN联盟之间都有广泛的合作。 话说另外一个组织:Open vRAN的起源,也要从2018年说起。 同样是在当年的巴塞罗那全球移动通信大会上,思科发布了一个名为Open vRAN生态系统的计划,目标同样是基于通用硬件,以及开放式模块化的软件架构来让RAN走向开放之路。 Open vRAN也被称作O-vRAN。vRAN里面的v就是virtualized,指的是虚拟化,Open RAN的基础。 据悉,在2020年6月,思科和Telenor在挪威总部已经开始了Open vRAN的实验,进一步验证使用虚拟化的开放架构的成本和效率。 从上面的介绍可以看出,Open RAN是一个统称,代表了目前的基站白盒化,接口开放化,以及软件开源化,网络智能化等网络发展架构,而O-RAN,OpenRAN,Open vRAN等则是推动Open RAN不断前进的组织名称。 正是这些组织的诸多工作,不断为Open RAN添柴加火,成就了Open RAN今日的热度。 3     Open RAN需要面对的问题 毫无疑问,Open RAN代表了无线网络发展的方向,在技术上是可行的。但与此同时,它的成熟度又是明显不够的,面临的挑战也是巨大的。 技术复杂度增加 开放的接口会带来更加复杂的处理机制,部分接口还需定义全新规范的信令流程,增加了整体的设备复杂度和系统集成的难度。 并且,多个供应商之间要互联互通,就必须进行互操作测试。目前该测试也就是仅限于基站,核心网两个网元,涉及的厂家也不多,即便这样在前期也是困难重重,常有不兼容的情况发生。 Open RAN把基站拆地七零八碎,由于各厂家的技术方案各不相同,他们之间对接口相关规范的理解也可能存在差异,所需互操作验证的工作量是非常巨大的。…

摩登3测速代理_一个轻量级事件驱动嵌入式系统应用框架Quantum Platform

QP(Quantum Platform)是一个轻量级的、开源的、基于状态机的、事件驱动型应用程序框架。这个框架包括四部分: 事件处理器(QEP); 轻量级的事件驱动框架(QF); 任务调度微内核(QV、QK、QXK); 实时跟踪调试器(QS)。 (1)QEP Quantum Event Processor是一个通用的,可移植的,可重用的状态机引擎。 QEP允许你直接把UML样式的状态图映射为代码。 QEP提供了传统的简单平面状态机和层次式状态机。QEP可以直接操作事队列和事件分发机制。 (2)QF QF是一个通用的,事件驱动的应用框架,是一个实时框架,面向嵌入式系统。 QF被设计成和QEP,RTOS协同工作。 QF包含了事件队列,活动对象,事件遍历等。 (3)QK QK是一个轻量级可抢占型实时内核 QK是一个极小的,按RTC习惯的,执行独立任务的内核。 QK必须和QF版本相匹配。 (4)QS 一个强大的调试工具 事件处理器,也可以理解为一个状态机引擎,当有事件需要处理时,调用当前状态的状态函数处理这个事件,并处理调用状态函数的返回值,根据返回值进行相应的状态变换(如转移到父状态)。而且状态引擎也处理某状态的进入(ENTER)、退出(EXIT)、初始伪状态(INIT)。 QF是轻量级的、事件驱动、active objects框架。这个框架的主要任务是保证每个active object的线程安全,运行-到-完成(run-to-completion )的事件处理。它包含了直接的事件传送,发布-订阅(publish-subscribe)的事件转发,事件队列,时间事件(延时传送时间事件)。 协作内核(Vanilla内核),它只在time to completion的时候处理event,并在处理所有event后,对active object执行基于priority-based的调度器。它是隐式合作(implicitly-cooperative),因为活跃定时器不需要明确的放弃CPU。代替的是在完成事件处理后,简单的return到QV调度器中。 QK是一个超快速的抢占式,基于优先级的,单stack,实时内核专门为执行active objects而设计的。它总是会处理event queued中的高优先级的active objects,但它将event当作一次性的函数来调用(而不是像传统内核那样的endless循环)。尽管如此,如果新的事件优先级比当前处理的事件优先级高,QK内核依然提供了抢占式的一次性的event处理功能(像抢占式中断处理器允许中断彼此抢占)。这意味着,QK可以使用单stack来保存所有active objects的context。 QXK是一个简单的抢占,基于优先级的,阻塞,实时内核专门为传统的阻塞代码的主动对象,如商用中间件(TCP / IP协议栈,UDP协议栈,嵌入式文件系统等)或遗留代码混合设计。 QS是软件追踪系统,使开发人员能够以最少的系统资源监控目标,并没有停止或显著放缓代码直播事件驱动QP的应用程序。QS是用于测试,故障排除和优化QP应用的理想工具。QS甚至可以用于支持产品制造验收测试。 免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

摩登3平台注册登录_中兴SSB 1+X方案规模商用助力运营商5G领航城市网络建设

如何高效、低成本地实现5G高层覆盖、让高楼用户也能畅享5G呢? 中兴提出了一种SSB 1+X的创新方案,助力运营商解决高楼场景网络建设。 免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

摩登3娱乐怎么样?_“曙光城市云”助力南召脱贫攻坚,走出发展新路径

2020年是打赢脱贫攻坚战,全面建成小康社会的决战之年,一场突如其来的疫情更让脱贫攻坚决战之路难上加难。然而,随着数字经济在“新基建”推动下快速发展并向各领域渗透逐渐加深,以曙光城市云中心为核心的数字技术在精准扶贫、公共服务均等化和产业扶贫三方面赋能脱贫攻坚的作用不断凸显,有力保障了脱贫攻坚决战的胜利。 数字技术助力精准扶贫 地处伏牛山腹地的河南省南召县,是典型的深山县、库区淹没县,是国家扶贫开发工作重点县。2017年,南召提出建设“实力、生态、智慧、幸福”新南召的发展定位,“智慧南召”开启了数字扶贫的新篇章。随着曙光城市云中心投入使用,南召县108个单位实现了市、县、乡镇的互联互通,南召以“一网通办”为突破口,打响了脱贫攻坚的“数字战役”。 该县将县域内各项社会、人口、经济数据录入云平台,使数据在全县各单位、各乡镇实现共享,通过大数据技术推动行政、社会、经济、民生多方面一体化统筹,取得了因地制宜,因人而异的精准扶贫,在今年2月彻底摘掉了“国家级贫困县”的帽子。 “信息高速路”带来发展新路径 按照智慧南召的发展要求,南召县凭借曙光城市云中心带来的政务信息化优势,以“政用、民用、商用”为主线,以“优政、利民、兴业”为基本目标,以数据开放和资源共享为途径,深入推进技术融合、业务融合、数据融合,推动政府决策科学化、社会治理精准化、公共服务高效化,乘着“新基建”的东风,着力打造数字经济大县,为实现南召县“三网建设”培育高质量发展新优势扫清障碍。 2017年以来,南召县着重发力交通网络建设、大数据网络和电商物流网络“三网建设”。在大数据网络建设方面,南召县依托曙光城市云,通过整合、优化38个部门的960多项具体审批事项,实现了政务服务跨行业、跨部门、跨层级协作,建立了智慧政务服务平台,实现了“一窗受理、一网通办”,大大加快了信息资源共享和业务协同,以及数据资源的整合与挖掘。目前已推出948项网上可办事项,审批服务事项网上可办率达到了97%,做到了“让数据多跑路,让群众少跑腿”。 此外,曙光城市云中心还有力支撑了南召“电商网”的发展,成为了南召县打赢脱贫攻坚战役的新武器。凭借强大的算力,南召曙光城市云中心可支撑1万个大中型企业应用或10万个小微型企业应用,为县域经济的发展提供了强劲后劲。目前该县已建成电子商务产业园,注册服务类、平台类、应用类电子商务企业100余家,2020年该县电子商务从业人数达2000余人,全年电子商务交易额突破22亿元。 曙光依据南召县的实际情况,结合社会经济发展目标与规划布局,以曙光城市云中心为核心,打造的智慧社会治理、智慧生态环保、智慧园区等N个智慧应用平台,有序推进南召新兴智慧城市建设各项任务,实现全域协调发展。 2017年11月,中科曙光与南召县签署战略合作协议,通过曙光首创的“企业投建云中心,政府购买云服务”的商业模式,为政府电子政务平台和政务服务平台提供安全可靠、性能优异、应用丰富、成本低廉的云服务平台。随着云服务的逐渐深入,曙光与南召各乡镇、重点企业进行了广泛而深入的合作,推进了行业间技术融合、业务融合与数据融合发展,实现了智慧交通、智慧文旅、智慧生态、智慧水利、智慧医疗、智慧教育等应用板块建设,全面提升了城市智慧水平,带动了区域经济转型升级和高质量发展。 曙光城市云中心作为推动高质量发展的主抓手和突破口,为南召县的发展打通了信息“大动脉”。其意义,不仅在于大幅度提升了南召新兴基础设施水平,更重要的是,把数字经济和互联网的思维方式、生产方式、生活方式引入经济社会发展之中,为政府的科学施政、及时处理提供了有力依据。此外,该中心经过两年的运营,已形成一套符合南召实际情况的完整运营与运维机制,为今后主导产业转型升级,实施乡村振兴战略,提升社会治理水平,促进县域经济高质量发展提供全新动力。 未来,南召依托曙光城市云中心,双方将深化合作,全面建成南召新兴智慧城市平台和体系,形成统筹协调发展、体制机制完善、政府运行高效、社会治理、数字经济、智慧经济创新活跃的南召新局面,树立先进智慧城市建设新典范。

摩登3主管554258:_微软:Windows10将永久删除Flash Player

微软已经确认Windows 10下一次更新将自动删除Flash Player,这意味着Flash Player将成为历史。与此同时,Adobe公司也发布了新的弹窗提醒,到时受到提醒的用户可永久删除该软件。 (Adobe Flash Player弹窗通知) 事实上,微软早就开始了行动。今年9月份,微软确认正在开发新的自动Windows更新,其中就包括从控制面板和其他区域删除Flash Player的选项,为此微软还专门发布了一项名为“删除Adobe Flash Player的更新 ”的可选更新。 目前,微软和Adobe正计划在2021年一起永久删除Flash Player。Adobe表示,出于安全方面的考虑,公司即使不手动删除Flash Player,也会在明年1月份停止该播放器的工作。 免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!