首页 文章 精选 留言 我的

精选列表

搜索[QClaw脑洞名场面],共3175篇文章
优秀的个人博客,低调大师

存储市场面临转折 定制化或成主流趋势

随着我国“智慧城市”建设步伐的推进、物联网的发展和“大数据”概念的提出,视频监控产品和技术逐步从专业化向通用化转变。国内安防监控市场在最近几年开始进入高速增长期,而增长的动力来自于城镇化步伐的加快,无论是智能交通,还是大量的楼宇监控,都是安防监控市场成长的动力。 安防监控市场的发展势必带动相关领域的同步发展,无论是行业系统集成商还是软件或硬件供应商,以至于周边设备供应者都将从这种发展中获益,存储作为重要的一环,自然也不例外。 安防存储大有可为 国内安防市场的强劲增长,主要源于绝对数量持续增长的刚性需求。首先,国家加速城镇化建设步伐,一些旧有街区、乡镇都在陆续加装监控设备,纳入数字化的城市视频监控体系;其次,以交通为主的大规模城市基础公共设施建设仍在继续,加之房地产市场依然热络,这些都成为安防市场需求持续旺盛的有力支撑;最后,各省市积极倡导“平安城市”、“物联网”建设,这也让安防设备大有用武之地。在庞大的国内安防市场中,视频监控、防盗报警产值及销售占整个产业的近七成。这得益于强大的政府采购、厂矿学校、行业应用,以及交通事业的超高速增长。这些领域对视频监控和防盗报警的安防设备采购及配置需求量巨大。由于视频监控网络系统由模拟升级优化至数字高清以及视频采集监控管理的要求提升,客户对监控视频画面与图像的清晰度诉求也有极大提高,目前1080P分辨率已是许多安防采购及应用客户的“标配”。 另一方面,视频监控的普及以及高清化也令数据总量几何级增长。一路720P摄像头,按照2-4Mbps码流计算,一天的存储容量为21GB-42GB;一路1080P摄像头,按照6-8Mbps码流计算,一天的存储容量为63GB-84GB。存储信息保存时长一般为30天以上。对于大规模的监控系统,特别像平安城市这样的项目,前端摄像头一般在1000路以上,数据量极为庞大,对数据的保存、备份、易查的要求更高,因此存储量也就更大。 产品创新永无止境 在高清时代来临之际,安防存储面临三大挑战,如何应对这些挑战,将直接决定存储企业未来的发展走向,作为身处其中的厂商希捷来说,产品和技术创新是决定在此市场中能否更近一步的重要因素。 首先是容量挑战。随着高清监控技术的普及,监控图像质量提高的同时,随之而来的就是对数据存储的要求越来越高。以高清最基本的720P效果为例,正常监控录像需要的硬盘容量大约为4G~8G/路每小时,出于经济性考虑,降低每小时视频录像可压缩到3GB左右容量。以此为例,按一个月时间计算,8路监控大约17T容量左右。而根据相关规定,公共场所的监控录像至少需要保存一个月(30天)以上,有些地方则更久,由此带来的海量数据存储问题可想而知。希捷旗舰级的监控硬盘SurveillanceHDD近期推出了容量高达6TB的产品,显然是对市场需求的快速反应。 其次是性能挑战。高清监控对存储总带宽要求较高,而且存储性能要根据监控特点进行调优,这就要求我们搭建存储系统的时候,必需首先考虑存储介质,也就是硬盘的性能。与此同时,云计算、大数据技术的应用,使得一直以来分散的监控数据可以整合分享,并且得到有效的挖掘,这样在公安部门进行电子取证的时候,效率更高。而云和大数据技术的应用前提也是建立在可靠存储系统,高性能存储介质上的。希捷SurveillancHDD专门针对高负荷的工作环境(比如大中型高清监控应用场合)和NVR的视频应用来设计和研发,把运用在企业级硬盘上的RVsensor(旋转震动传感器)技术首先用在了视频监控硬盘上,在多硬盘同时工作的环境中保持卓越性能。此外,其专有的Idle3电源管理模式,可以保证硬盘在"夜间和动态感应检测模式"下快速响应,不丢帧!它还可以24×7全天候运行,支持长达400多小时的高清内容以及100万小时平均无故障时间。 最后是安全挑战。从某种角度上说,安全挑战与性能挑战是互为对应的,能应对性能挑战,也就能够应对安全挑战。一般来说,存储面临的安全挑战来自两个方面,一方面是外部安全风险,如病毒、黑攻击等。未来监控数据将在云中共享和传送,也就必然面临被截取的风险,认证加密手段必不可少。另一方面是内部安全风险,包括存储系统自身故障、误操作,甚至包括人为故意损坏数据。 目前各行各业对安防监控的要求越来越严格,对监控数据都出台了相应的保留监管保留制度,为了保证这些重要数据的安全,存储系统设计时做好容错,采用质量过硬的硬盘,都是不容忽视的。而希捷Surveillance HDD拥有一项Rescue?数据恢复服务技术,此项技术提供数据恢复服务,而且可恢复两周内的数据,成功率高达90%。数据恢复计划在购买硬盘时即可激活,能够提供三年的数据恢复服务。对于因电脑中毒、自然灾害或其他原因导致的数据丢失,这项数据恢复技术可以说具有革命性意义。 市场渠道面临转折 从市场和渠道端来看,国内安防监控市场在最近两三年正面临着新的转折,这种转折的最大特点表现在业内不同企业间的横向联合,形成优势互补,在营销上单打独斗会的行为会越来越少,而依靠整体作战取得优势将成为未来的营销新趋势。此外,软件及硬件供应商针对这个行业领域的渠道架构也会陆续进行调整,无论是设立专门的总代理还是其他方式,目的就是为了适应市场形势发展,更好服务于客户,促进安防监控市场健康有序良性发展。 在安防监控领域,擅长项目集成的企业未必清楚哪种摄像头适合夜晚监控,也未必知道哪种专用硬盘更适合用在监控中。毕竟,监控是一个相对特殊的领域,对数据存储的需求也完全不同,只有为监控应用做出特别优化乃至定制的硬盘,才能担当这一重任。同理,无论是摄像头还是硬盘厂商,对于不同领域的需求和需要什么样的解决方案,也所知甚少。正因为如此,不同企业间的交流和协同就显得更加重要。 传统的安防监控集成商拥有解决方案优势以及对不同行业用户需求的准确把握,而IT厂商在技术、软硬件产品方面也有不可替代的优势。 定制化是市场未来 在越发细分的行业化进程中,国内存储专业企业都提出关于安防定制化服务,在安防监控市场,不同的应用场景、不同的系统规模,也影响着存储系统的选择。 例如,在平安城市视频监控中,要求存储系统高效、易管理;在地铁监控中,要求存储系统稳定、可扩展;在交警卡口系统中,要求存储设备能提供良好的并发读写性;而在园区监控中,则希望存储系统灵活可嵌入。 比如智慧仓在北京外国语大学综合楼、北京金盾印刷厂、中信物流等项目。可以这样认为定制化的视频存储方案与通用存储设备最大的不同在于,它可以对视频流进行优化和管理,以最大的系统资源保证视频流稳定,并尽力保证持续传输,而不是瞬间传送最大的数据量。定制化的视频存储设备内部增加了对视频流进行监控和管理的功能,可以针对视频流的特点进行硬件配置的最优化设计,而通用存储设备往往只能看到系统带宽的使用情况。 可以了解到,从2014年起中国进一步加大了政府投如,尤其卫生、教育和公共安全方面的投资,与此同时医疗、服务、能源业呈现了良好的增长态势,都带动监控存储的增长。在后续几年的发展中,教育医疗将呈现出巨大的市场潜力。可以预见在未来的几年,国产存储将会持续保持高速增长,民族企业在存储市场逐鹿群雄的时代即将来临。 原文发布时间为:2016年8月12日 本文来自云栖社区合作伙伴至顶网,了解相关信息可以关注至顶网。

优秀的个人博客,低调大师

空指针,段错误,这场面试我栽倒在这里了!

关注、星标公众号 ,直达精彩内容 ID:技术让梦想更伟大 作者:李肖遥 面试官:满头的汗的,来面试的路一定很远吧? 还好还好,骑车不到俩小时 面试官:来先喝杯水,咱们面试不急,边喝边聊 哇,谢谢您啦,咕隆咕隆喝下半杯 面试官:那咱们开始吧,看你项目做的还不少啊,不错不错,咱们随便聊聊。 哇,“这面试官还不错,感觉有戏” 面试官:说说空指针NULL是本质什么,与0一样吗 嗯嗯,这个,NULL不就是0吗? 面试官:你确定是吗,面带微笑,淡定的眼神...... 嗯嗯,应该是吧,,,不是吧,汗又开始冒起了来了...... 面试官:嗯嗯,了解了,不急慢慢喝水,我先上个厕所。 水的滋润与口水相互交织,骑车两小时,面试3分钟,这次我哉在这里了。 NULL在C/C++中的标准定义 NULL的标准定义 #if!defined(NULL)&&defined(__NEEDS_NULL)#ifdef_cplusplus#defineNULL0//这里对应C++的情况#else#defineNULL(void*)0//这里对应C语言的情况#endif 编译器预先定义了一个宏_cplusplus,来判断当前的编译环境是C++的还是C语言的,在C++定义为0,在C语言中定义为(void *)0。 在C/C++中的区别 在C语言中,C中的“标准”写法,NULL被替换为一个void* 类型的指针右值,值等于0;由于是void* 类型,可以隐式转化为其它类型的指针。 在C++中,void* 无法自由隐式转换为其它类型的指针,而字面量0可以隐式转换为指针类型。 NULL 的本质是什么 我们从指针,空指针,空指针常量以及指向的内存说起 从指针角度来看 我们看以下定义,p是一个函数内的局部变量,则p的值是随机的,也就是说p是一个野指针。 intfunc(){int*p;...} 再看以下函数,p是一个局部变量,分配在栈上的地址,p的值是(void *)0,实际就是0x00000000,意思就是指针p指向内存的0x00000000地址处。这时候p就不是野指针了。 intfunc(){int*p=NULL;...} 什么是空指针(null pointer)? 如果将空指针常量转换为指针类型,则保证生成的指针(称为空指针)将不相等的值与指向任何对象或函数的指针进行比较。 定义char *p=0后,在之后p的任何一种赋值操作之后,p 都成为一个空指针,即p不指向任何实际的对象或者函数。反过来说,任何对象或者函数的地址都不可能是空指针。 什么是空指针常量(null pointer constant)? 值为0的整数常量表达式,或强制转换为void *类型的表达式,称为空指针常量 空指针(null pointer)指向了哪里的内存 这里标准没有定义,取决于系统的实现。我们常见的空指针一般指向0x00000000地址,即空指针的内部用全0x00000000来表示,也有一些系统用一些特殊的地址值或者特殊的方式表示空指针。 在我们实际写代码时,关键点在于判断哪个是空指针。 NULL 有什么作用 在大部分的CPU中,内存的0x00000000地址处都不是可以随便访问的,所以野指针指向了这个区域可以保证野指针有个安家之所,否则会发生段错误。 当你尝试访问的时候会阻止你,但是有些地址不是只读的,如果一个指针指向了这个地址,你又在不经意间修改了它,可能会导致一些重要的文件被修改,所以指针初始化成NULL是有必要的。 注意不要混用'\0' 和 '0' 和 0 和 NULL '\0'是一个转义字符,他对应的ASCII编码值是0,本质就是0;常用于表示字符串的结尾标志,以判断字符串有没有到头。 '0'是一个字符,他对应的ASCII编码值是48,本质是48。 0是一个int类型的数字,本质就是0。 NULL是一个表达式,是强制类型转换为 void *类型的0,一般用来比较指针是否是一个野指针。 NULL是不是0呢 NULL 就是0? 我们先来看以下代码: //https://tool.lu/coderunner/#include<stdio.h>intmain(){int*p=NULL;printf("%s",p);} 结果如下: 输出(null) ,在执行int *p=NULL,打印出来空白,实际上p的值为0x00000000,在C语言中,NULL的本质是0,但是这个0不是当一个整形数据来解析,而是当一个内存地址来解析的,代表的是内存的0地址。 (void *)0这个整体表达式表示一个指针,地址在哪里取决于指针变量本身,这个指针变量指向0地址(实际是0地址开始的一段内存)。 NULL 不是0? 如果一个指针被赋予NULL,相当于这个指针执行了0x00000000这个逻辑地址,但是在C语言中0x0000这个逻辑地址用户是不能使用的,所以当你试图取一个指向了NULL的指针的内容时,就会提示段错误,测试一下代码如下: //https://tool.lu/coderunner///来源:技术让梦想更伟大//作者:李肖遥#include<stdio.h>intmain(){int*node=NULL;intp=0;p=*node;printf("%d\n",p);return0;} 编译结果如下: 由于指针node执行的是NULL,也就是逻辑地址0x00000000,而这个地址不能访问,所以编译器提示段错误。 那么看到这里你觉得NULL还是0吗?根据宏定义我们知道:(void *)0表示把数值0强制转换为void *类型,所以最后运行结果为0。 变量在定义时,系统会给他分配内存空间,指针变量也是一样,如果指针没有指向的话,那么地址就是随机值,如果不小心用的话就会导致数据错误,从而使程序退出。 NULL 使指针p指向地址0x00000000,在大多数系统中都将0x00000000作为不被使用的地址,所以运用p也不会毁坏数据。 但也有系统会使用地址0x00000000,而将 NULL 定义为其他值,所以不要把 NULL 和 0 等同起来。 我们使用值传递的方式来看,在网上有一个面试题,这里我参考一下代码,能够帮助大家更好的理解,其代码如下: //https://tool.lu/coderunner///来源:技术让梦想更伟大//作者:李肖遥#include<stdio.h>voidvPassByFun(int*node){staticintN=1024;node=&N;}intmain(){int*node=NULL;intp=0;vPassByFun(node);p=*node;printf("%d\n",p);return0;} 输出结果如下: vPassByFun函数是值传递,node指针变量的值并不受影响,所以这个程序的效果和上一个程序运行结果都是段错误。 如果要让结果为1024,应该怎样写代码呢?我们来这样写代码: //https://tool.lu/coderunner///来源:技术让梦想更伟大//作者:李肖遥#include<stdio.h>voidvPassByFun(int**node){staticintN=1024;*node=&N;}intmain(){int*node=NULL;intp=0;vPassByFun(&node);p=*node;printf("%d\n",p);return0;} 运行结果如下: 传递一个二级指针也就是传递node指针变量的指针给vPassByFun函数,这样的话结果就对了。 最后 编码过程中,我们需要对自己的指针负责,往往导致bug出现或者找不到问题所在地的就是这种细节。最后,原创不易,希望能够改正文章的错误,多提意见留言,谢谢。 推荐阅读: 嵌入式编程专辑 Linux 学习专辑 C/C++编程专辑 关注 微信公众号『技术让梦想更伟大』,后台回复“ m ”查看更多内容,回复“ 加群 ”加入技术交流群。 长按前往图中包含的公众号关注 本文分享自微信公众号 - 技术让梦想更伟大(gh_f7effb2fbc1c)。如有侵权,请联系 support@oschina.cn 删除。本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

资源下载

更多资源
Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册