标签目录:侗族娱乐怎么样

摩登3测速代理_LED灯杆屏+路灯形成了新的产业渠道?

目前来说,LED灯杆屏与智慧灯杆已经是切割不开的利益共同体,加上政策上的大力支持,则更加如同插上了一双腾飞的翅膀。在大家的期盼下,今年以来多地的智慧灯杆项目相应落地,LED灯杆屏的单个订单出货量也有所增长。 在科技以及智慧普及快速发展的时代,随着LED产品的不断功能不断细化,人们的信息化需求也不断在变化,而灯杆屏这一新型LED终端也在细分的市场中,顺利搭载智慧灯杆产业而获得更大的市场应用,信息化应用也在不断凸显。 在智慧城市概念提出之后,更先兴起的是智慧灯杆产业。可以说,智慧灯杆是一个以路灯场景为载体,应用功能较为全面的全新领域,而在智慧城市概念尚未得到普及的时刻,智慧灯杆犹如一个“马前卒”成为了智慧城市发展的前期入口。智慧灯杆囊括了通信、照明、监控、环境监测、信息发布等模块,因此LED灯杆屏作为专为路灯场景而诞生的拥有信息显示、发布功能的载体也被视作一个重要的配套。 而随着智慧城市概念的不断深入,信息化也越来越成为建设普及的重点,所以当今已经是信息化的时代,越来越多的信息化载体得到应用,灯杆屏也不例外。灯杆屏是一种以户外显示为载体,能够起到信息传播与采集的新型媒体平台,在智慧灯杆普及力度愈渐加大的时候,灯杆屏的应用层面也得到了相应的提升。 可以看出,在智慧城市建设以及物联网等技术迅速发展的趋势下,具有多功能的智慧灯杆为城市建设带来新思路,LED灯杆屏的信息传播优势也被挖掘出来,所以说当下“LED灯杆屏+智慧灯杆”的巨大机遇已经来临。 实际上,智慧灯杆能单杆安全挂载通信、灯杆屏信息发布、环境检测、视频监控、一键报警等多项设备,满足了智慧城市推广和5G超密集组网的布局要求。尤其是5G网络要实现深度覆盖就必须深挖共享潜力,所以“一杆多用”的智慧灯杆建设项目就是当下5G网络部署的重要基础,在这需求下的智慧灯杆无疑已经成为一个“香饽饽”,而相对地灯杆屏的项目需求也得到整体的上升。 因此,在智慧化应用、信息技术和路场景不断融合的过程中,灯杆屏还突显出了一种新型、高效的广告投放模式,为智慧灯杆项目的成本回收带来更高的可能,并且灯杆屏与智慧灯杆的融合应用,还是实现加强公共照明管理信息化建设,节约城市公共照明能耗的效果,实时监测交通、安防、人流、温湿度、PM2.5值等数据,并通过后台整合后在屏幕上实时播报。 从现有的大环境看来,智慧灯杆上搭载5G基站建设已经是一个既定的事实,而LED灯杆屏在整个的系统当中的公共信息传播部分的应用也已不可撼动。还有一点可以肯定的就是,5G基站建设催生出的智慧灯杆大需求同时也映射到了LED灯杆屏领域。 虽然,目前LED灯杆屏配套智慧灯杆、路灯已经是一个常态,并且由于位置的的关系,更细的东西大家应该还未了解。LED灯杆屏之所以会成为智慧灯杆的重要配套,不仅仅是信息发布与传递那么简单,同时LED灯杆屏还是体现智慧灯杆颜值,质量与档次,智能与否,节省成本,运营收益的关键。 因此,LED灯杆屏可以用以广告投放,民生信息传播和应急通知,特色文化呈现,当地活动内容推送等,丰富路灯场景的应用,同时LED灯杆屏本身也可以安装智慧监控,在安防层面也能有所体现。以太龙智显LED灯杆屏为例,可以及时提醒人们每天的天气变化、环境监测数据、交通疏导、停车位占用、突发事件预警等情况,更加突出LED灯杆屏在路灯场景的位置优势和应用的价值。 实际上,智慧灯杆并不需要每一个都配套LED灯杆屏,但是在同一路段,相隔几百米投放一个是非常有必要,所以智慧灯杆市场的繁荣也会侧面地带给LED灯杆屏厂家许多的机会。 时至今日,5G商用牌照已经正式发布,这也意味着5G基站建设已经刻不容缓,因此接下来就是智慧灯杆建设的大刚需使其,而我们太龙智显作为核心LED灯杆屏提供商也在持续发力,以更优质的LED灯杆屏配套应用,助力智慧灯杆项目与5G基站建设。 免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

摩登3测速登录地址_泰雷兹推出“Ready to Fly”解决方案组合,更加安全健康的旅行成为现实

· 继引入低碳未来战略,旨在 “到2023年使飞机的二氧化碳排放量减少10%”之后,泰雷兹正在利用先进技术为全球航空公司客户提供支持,通过提高健康安全环境来重塑乘客对航空旅行的信心。 · 这些经济实惠的解决方案可以快速部署于所有新装及运营中的机载娱乐系统,以满足航空公司的即时需求。 ©Thales 泰雷兹的“Ready to Fly”解决方案组合旨在帮助我们的航空公司客户在疫情危机期间和后疫情时代恢复乘客对航空旅行的信心。 借助Ready to Fly,泰雷兹的机载娱乐体验(Thales InFlyt Experience)专注于通过以乘客为中心的解决方案、集成产品以及能够提高机组人员效率的服务,来加快行业的数字化转型。Ready to Fly解决方案所实现的客舱创新可以帮助减少接触,并通过管理客流缓解乘客拥堵。 Ready to Fly“非接触式”解决方案使乘客能够使用自己的手机或平板电脑安全地控制机载娱乐系统,以享受完整的机载娱乐体验,包括数字版的机上纸质菜单、杂志以及重要的安全和健康信息。为了减少与机组人员的身体接触,同时尽可能地提高服务质量,Thales Travel Assistant解决方案让乘客能够通过座椅靠背上的显示器请求服务和自动接收信息。机组人员还可以通过自己安全的个人手机或平板电脑收集信息、接收通知和控制客舱。 展望未来,泰雷兹将充分利用其强大的合作伙伴网络来开发客舱自动化解决方案,通过使用综合数据减少拥挤、方便乘客离舱和管理客流。 泰雷兹将利用先进的、具备网络安全的技术来创建更安全、更加互联的数字生态系统,通过重新构想人们的出行方式来构建一个共信未来。 “对于泰雷兹而言,最重要的是我们在这里为航空公司客户们提供我们的支持,在史无前例的疫情时期与他们一起应对最严峻的挑战。我们的解决方案高度自动化,可以减少互动需求,并提高航空公司地面和空中人员的效率。Ready to Fly带来的多项创新能够帮助增进客舱内的健康环境,同时提供最佳的乘客体验。”Thales InFlyt Experience销售副总裁Neil James表示。

摩登3平台登录_CPU:网卡老哥,你到底怎么工作的?

阿Q造访 我是一个网卡,居住在一个机箱内的主板上,负责整台计算机的网络通信,要是没有我,这里就成了一个信息孤岛了,那也太无聊了~ 上个周末,服务器断电维护了,这是我难得的休息时间,我准备打个盹儿眯一会儿。 这才刚合上眼,CPU一号车间的阿Q跑过来串门了。 “怎么是你小子,听说你背后说了我很多坏话啊!今天怎么想起找我来了” “网卡老哥,你这都听谁造的谣,我想来拜访你很久了,这不平时工作太忙抽不开身,今天停电了一有空就找你来了嘛!”,阿Q笑着说到。 “你可是大忙人,无事不登三宝殿,说吧,找我什么事儿” 阿Q露出了尴尬而不失礼貌的微笑,“那我就开门见山了,这不年底了吗,咱们厂里最近评优呢,想学点网络知识,特来向你讨教讨教” “就这啊,好说好说,来里边坐”,我招待阿Q进门坐下。 刚刚落座,阿Q就忍不住提问:“老哥,你们网卡是怎么工作的?听说你可以抓到别的主机通信的数据包?可以给我露一手吗?” “唉,现在不行了”,我叹了一口气。 “咋了这是?” 我抬头凝望,开始给阿Q讲起了我的故事。 集线器时代 很久很久以前,那时候网络中的各个计算机都是通过一个叫集线器Hub的家伙来相连的,通过集线器,我们大家在物理上构成了一个星型的网络,还给取了个名字:以太网。那时候我们的传输速度能做到10Mbps,在那个年代,已经非常了不起了!。 集线器这家伙,不知道该说他笨,还是该说他懒,他从来不会管数据是谁发给谁,只是一个没有感情的转发机器,工作在物理层,把收到的信号做一个增强处理后就一股脑的发给所有端口。 这样一来,我们在逻辑上就变成了一个总线型网络了。总线属于公共资源,由所有连接在上面的主机共享,有人在传输数据的时候其他人就得等着,不然数据就会发生冲突,全乱套了。 为了让大家都能和平共处,不必为了争抢线路发生不愉快,我们制定了一套规则:CSMA/CD。 每次要发送数据之前,我都得要监听一下线路上是否空闲,如果有别人在传输数据,那我就得等待。至于等待多久,我也不知道,因为这是一个随机值。 等到空闲的时候,我就可以发送数据了。不过一边发送,我还得一边检测是否有冲突发生,因为说不定有别人跟我一样以为现在空闲都在发送数据呢! 所以这就是CSMA/CD——载波侦听多路访问/冲突检测名字的来历了。 但是如果数据的长度太短,我很快就发送完了,结果先头部队还在路上,这之后再遇到冲突那我就发现不了了。为了应对这种情况,我们还得考虑即便是在极端情况下发生冲突,我们还是能够检测到。 我们这个网络能够支持的最远距离是2500米,极端情况下,到达最远端的时候冲突才发生。冲突信号得赶在我发送完最后一个bit之前传回来,这一来一回就是5000米。 线路上的信号跑个来回需要57.6微秒,我们的传输速度是10Mbps,一个来回的时间我就能发送576bit,也就是72个字节,除开8个字节的帧前导符和帧开始符,剩下的以太网帧长度不能低于64个字节,这样就算在最远两端发生的碰撞冲突都能及时传递回去被检测到。 有了这套协议,大家再也不用争抢,可以专心工作了。 “我说为什么非得要至少64字节你才发送,原来还有这段历史呢!那你们具体是怎么收发数据的呢?”,说到这儿,阿Q打断了我。 “那你听我继续给你说” 数据收发过程 我每天的工作就是接收、发送数据包,操作系统把数据交给我以后,我就按照以太网的数据格式,把数据封装成一个个的以太网帧发出去 帧的头部有收件人和发件人的地址,我们叫它MAC地址,这是我们每个网卡的身份证号码,从我们出生那一刻起就确定了。 发件人是我的MAC地址,但收件人地址我不知道啊!操作系统协议栈部门交给我的数据包只有IP地址,我们又不认识这个,我们收发数据帧只用MAC地址。 为了解决这个问题,我们又制定了一套协议:ARP,地址解析协议,来实现这两个地址的转换。在不知道IP对应的MAC地址时候,就发送一个广播,这个广播的发件人地址填我的,然后收件人地址是FF:FF:FF:FF:FF:FF,这是一个特殊的MAC地址,我们约定好了每个人收到广播都要接收而不能丢弃。 这个广播里面填了IP地址,谁收到以后发现跟自己的匹配上就来应答我,这样我就能知道对方的MAC地址了,接下来就能通信了。 当然,为了避免每一次都去询问一遍浪费时间,我会把查询过的记录缓存起来,下次就能直接用啦。 不过这样做也有安全风险,要是有人冒充真正的收件人给我回信,我也没办法分辨,这就叫ARP欺骗。 “唉,等等,你还是给我讲讲你是怎么可以抓到别人的通信数据吧,我对这个更有兴趣。”,阿Q又一次打断了我。 因为集线器这家伙闭着眼睛到处转发,所以不管是谁发的数据,所有人都可以看到。 就因为这样,总线中每天有大量数据在流动,但我通常也不会全部都抓下来交给你们处理,不然你们CPU的人估计要骂死我了。所以我每次拿到一个数据帧,就会检查它的收件人是不是我,如果不是那就直接丢弃了,当然,前面我说的广播消息例外。 我能抓到别人通信数据的秘密就在于:我提供了一种工作模式叫做混杂模式,这种模式下,我就会把总线中我看到的所有数据帧全部都抓下来交给你们CPU去处理,一般都是一些抓包软件才会要求我这么做,但也有一些流氓软件和病毒木马经常让我抓别人的数据包,这样他们就能嗅探网络中的其他主机的通信了。 我并不喜欢这样,因为每次一开启混杂模式,我和你们CPU就忙的要死,主板上的风扇都会疯狂的转起来。 “原来是这样,那你开启混杂模式给我露一手看看呗,可以看到别人的通信数据,这也太刺激了!”,阿Q又又又一次打断了我。 “你别着急,听我继续说嘛,别老是打断我,而且现在停电了,我想露一手也露不了啊?” “好好好,你继续,继续,我不插嘴了。” 不知道从什么时候开始,就算我开启混杂模式,也抓不到别人的数据包了,因为我发现网络中的数据包只有跟我相关的了。 后来一打听才知道,不只是我一个网卡这样,别的也一样。 原来集线器那家伙退休了,新来了一个叫交换机的大佬取代了他的位置。 这位大佬名不虚传,他不只是简单的把大家连接在一块儿,它还会学习,用一张表把大家的MAC地址和连接的端口号记录下来。每次收到数据后,它只转发给对应的端口,而不会像集线器那样到处转发,我再也看不到别人的通信数据了! “啊?交换机那家伙可真多事!”,阿Q露出了失望的表情。 这也是件好事啊,交换机大佬不用到处转发数据占用线路,相当于把冲突域进行了隔离,我连接的线路上只有我自己的数据,没有别人的数据,就不会和别的主机传输数据发生冲突了。不仅如此,我们连接的网线也进行了升级换代了,现在我们可以全双工通信,一边收一边发,也不用和交换机发给我的下行数据发生冲突! ,现在再也不用CSMA/CD,因为不会有冲突发生,可以随心发送数据了,真是爽太多了!我们的传输速度也是日新月异,从10Mbps到100Mbps,再到1000Mbps,越来越快,这在以前想都不敢想。 阿Q点了点头说到:“厉害了,网卡老哥!真是塞翁失马焉知非福” 说完,CPU六号车间的小六出现在了门口,只见他满头大汗的说到:“Q哥,到处找你都找不到,原来你在这,快回去,领导叫我们出趟差” 长按订阅更多精彩▼ 免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

摩登3娱乐登录地址_从Servlet入手带你看架构和框架设计的套路

以下代码相信大家都很熟悉,大学时学 Java Web 都写过这样的代码。 从第一次接触 Servlet 到之后的很长一段时间内,我都没理解 Servlet 是个什么玩意? 为什么要有 Servlet ? 为什么要有 Servlet 容器? 啥又是 Web 容器、HTTP 服务器? 今儿咱们就来盘盘,并且从中来看看架构和框架的设计套路。 看完之后可能对接口、抽象会有进一步的认识。 来,上车! 正文 首先浏览器发起 HTTP 请求,像早期的时候只会请求一些静态资源,这时候需要一个服务器来处理 HTTP 请求,并且将相应的静态资源返回。 这个服务器叫 HTTP 服务器。 简单点说就是解析请求,然后得知需要服务器上面哪个文件夹下哪个名字的静态文件,找到返回即可。 而随着互联网的发展,交互越发得重要,单纯的静态文件满足不了需求。 业务变得复杂,需要我们编写代码来处理诸多业务。 需要根据 HTTP 请求调用不同的业务逻辑来响应,但是我们的业务代码不能跟 HTTP 服务器耦合起来。 总不能在 HTTP 服务器的具体实现里面来做判断到底需要调用哪个业务类吧? 这就把非业务和业务强相关了。 所以需要做一层抽象,将 HTTP 的解析和具体的业务隔离。 本质上的需求就是根据 HTTP 请求找到对应的业务实现类然后执行逻辑再返回。 而业务千千万,所以需要规定一个接口,所以业务类都实现这个接口这样才好对接。 这就是接口的含义,就像 USB。 这个接口就是 Servlet,当然这是最狭义的解释。 Servlet 其实是 Server Applet,全称 Java Servlet,指的是用Java 编写的服务端程序。 其实指代的是实现 Servlet 接口的那些业务类。 这就是 Servlet 的由来。 而 Servlet 容器其实就是用来管理和加载这些 Servlet 类的,根据 HTTP 请求找到对应的 Servlet 类这就是 Servlet 容器要做的事情。 看到这是不是觉得还能再抽一层?因为这好像也和具体的业务实现没关系? 是的,还能抽一层。 没必要把 Servlet 容器做的事情和具体的业务耦合起来,业务反正照着 Servlet 接口实现就行,这样 Servlet 容器就可以加载它和管理它。 把请求和哪个 Servlet 对应关系也抽象出来,就是 web.xml 了,咱们在配置里面告诉 Servlet 容器对应关系即可。 我图中的业务实现其实对应的就是我们平常的 war 包,这就是业务和 Servlet 容器的解耦。 想必你也听过 Servlet 规范,其实 Servlet 接口和 Servlet 容器这一整套包括目录命名啊啥的合起来就叫 Servlet 规范。 所有相关的中间件按照 Servlet 规范实现,我们也按 Servlet 规范来实现业务代码,这样我们就能在不同场景选择不同的 Web 中间件。 反正规范的目的就是为了对接方便,减少对接成本。 至此 HTTP 服务器、Servlet 、Servlet 容器想必都清晰了。 而 Web…

摩登3测速登陆_花5分钟看这篇之前,你才发现你不懂RESTful

前言 在学习RESTful 风格接口之前,即使你不知道它是什么,但你肯定会好奇它能解决什么问题?有什么应用场景?听完下面描述我想你就会明白: 在互联网并没有完全流行的初期,移动端也没有那么盛行,页面请求和并发量也不高,那时候人们对接口的要求没那么高,一些动态页面(jsp)就能满足绝大多数的使用需求。 但是随着互联网和移动设备的发展,人们对Web应用的使用需求也增加,传统的动态页面由于低效率而渐渐被HTML+JavaScript(Ajax)的前后端分离所取代,并且安卓、IOS、小程序等形式客户端层出不穷,客户端的种类出现多元化,而客户端和服务端就需要接口进行通信,但接口的规范性就又成了一个问题: 所以一套结构清晰、符合标准、易于理解、扩展方便让大部分人都能够理解接受的接口风格就显得越来越重要,而RESTful风格的接口(RESTful API)刚好有以上特点,就逐渐被实践应用而变得流行起来。 现在,RESTful是目前最流行的接口设计规范,在很多公司有着广泛的应用,其中Github 的API设计就是很标准的RESTful API,你可以参考学习。 在开发实践中我们很多人可能还是使用传统API进行请求交互,很多人其实并不特别了解RESTful API,对RESTful API的认知可能会停留在: 面向资源类型的 是一种风格 (误区)接口传递参数使用斜杠(/)分割而不用问号(?)传参。 而其实一个很大的误区不要认为没有查询字符串就是RESTful API,也不要认为用了查询字符串就不是RESTful API,更不要认为用了JSON传输的API就是RESTful API。 本篇将带你了解RESTful并用SpringBoot实战RESTful API. 一、REST介绍 REST涉及一些概念性的东西可能比较多,在实战RESTful API之前,要对REST相关的知识有个系统的认知。 REST的诞生 REST(英文:Representational State Transfer,简称REST,直译过来表现层状态转换)是一种软件架构风格、设计风格,而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。 它首次出现在 2000 年 Roy Thomas Fielding 的博士论文中,这篇论文定义并详细介绍了表述性状态转移(Representational State Transfer,REST)的架构风格,并且描述了 如何使用 REST 来指导现代 Web 架构的设计和开发。用他自己的原话说: 我写这篇文章的目的是:在符合架构原理前提下,理解和评估基于网络的应用软件的架构设计,得到一个功能强、性能好、适宜通信的架构。 需要注意的是REST并没有一个明确的标准,而更像是一种设计的风格,满足这种设计风格的程序或接口我们称之为RESTful(从单词字面来看就是一个形容词)。所以RESTful API 就是满足REST架构风格的接口。 Fielding博士答辩 Fielding博士当时提出的是REST架构在很久的时间内并没有被关注太多,而近些年REST在国内才变得越来越流行。下面开始详细学习REST架构特征。 REST架构特征 既然知道REST和RESTful的联系和区别,现在就要开始好好了解RESTful的一些约束条件和规则,RESTful是一种风格而不是标准,而这个风格大致有以下几个主要特征: 以资源为基础 :资源可以是一个图片、音乐、一个XML格式、HTML格式或者JSON格式等网络上的一个实体,除了一些二进制的资源外普通的文本资源更多以JSON为载体、面向用户的一组数据(通常从数据库中查询而得到)。统一接口: 对资源的操作包括获取、创建、修改和删除,这些操作正好对应HTTP协议提供的GET、POST、PUT和DELETE方法。换言而知,使用RESTful风格的接口但从接口上你可能只能定位其资源,但是无法知晓它具体进行了什么操作,需要具体了解其发生了什么操作动作要从其HTTP请求方法类型上进行判断。具体的HTTP方法和方法含义如下: GET(SELECT):从服务器取出资源(一项或多项)。 POST(CREATE):在服务器新建一个资源。 PUT(UPDATE):在服务器更新资源(客户端提供完整资源数据)。 PATCH(UPDATE):在服务器更新资源(客户端提供需要修改的资源数据)。 DELETE(DELETE):从服务器删除资源。 当然也有很多在具体使用的时候使用PUT表示更新。从请求的流程来看,RESTful API和传统API大致架构如下: URI指向资源:URI = Universal Resource Identifier 统一资源标志符,用来标识抽象或物理资源的一个紧凑字符串。URI包括URL和URN,在这里更多时候可能代指URL(统一资源定位符)。RESTful是面向资源的,每种资源可能由一个或多个URI对应,但一个URI只指向一种资源。 无状态:服务器不能保存客户端的信息, 每一次从客户端发送的请求中,要包含所有必须的状态信息,会话信息由客户端保存, 服务器端根据这些状态信息来处理请求。当客户端可以切换到一个新状态的时候发送请求信息, 当一个或者多个请求被发送之后, 客户端就处于一个状态变迁过程中。每一个应用的状态描述可以被客户端用来初始化下一次的状态变迁。 REST架构限制条件 Fielding在论文中提出REST架构的6个限制条件,也可称为RESTful 6大原则, 标准的REST约束应满足以下6个原则: 客户端-服务端(Client-Server): 这个更专注客户端和服务端的分离,服务端独立可更好服务于前端、安卓、IOS等客户端设备。 无状态(Stateless):服务端不保存客户端状态,客户端保存状态信息每次请求携带状态信息。 可缓存性(Cacheability) :服务端需回复是否可以缓存以让客户端甄别是否缓存提高效率。 统一接口(Uniform Interface):通过一定原则设计接口降低耦合,简化系统架构,这是RESTful设计的基本出发点。当然这个内容除了上述特点提到部分具体内容比较多详细了解可以参考这篇REST论文内容。 分层系统(Layered System):客户端无法直接知道连接的到终端还是中间设备,分层允许你灵活的部署服务端项目。 按需代码(Code-On-Demand,可选):按需代码允许我们灵活的发送一些看似特殊的代码给客户端例如JavaScript代码。 REST架构的一些风格和限制条件就先介绍到这里,后面就对RESTful风格API具体介绍。 二、RESTful API设计规范 既然了解了RESTful的一些规则和特性,那么具体该怎么去设计一个RESTful API呢?要从URL路径、HTTP请求动词、状态码和返回结果等方面详细考虑。至于其他的方面例如错误处理、过滤信息等规范这里就不详细介绍了。 URL设计规范 URL为统一资源定位器 ,接口属于服务端资源,首先要通过URL这个定位到资源才能去访问,而通常一个完整的URL组成由以下几个部分构成: URI = scheme "://" host  ":"  port "/" path [ "?" query ][ "#" fragment ] scheme: 指底层用的协议,如http、https、ftphost: 服务器的IP地址或者域名port: 端口,http默认为80端口path: 访问资源的路径,就是各种web 框架中定义的route路由query: 查询字符串,为发送给服务器的参数,在这里更多发送数据分页、排序等参数。fragment: 锚点,定位到页面的资源 我们在设计API时URL的path是需要认真考虑的,而RESTful对path的设计做了一些规范,通常一个RESTful API的path组成如下: /{version}/{resources}/{resource_id} version:API版本号,有些版本号放置在头信息中也可以,通过控制版本号有利于应用迭代。resources:资源,RESTful API推荐用小写英文单词的复数形式。resource_id:资源的id,访问或操作该资源。 当然,有时候可能资源级别较大,其下还可细分很多子资源也可以灵活设计URL的path,例如: /{version}/{resources}/{resource_id}/{subresources}/{subresource_id} 此外,有时可能增删改查无法满足业务要求,可以在URL末尾加上action,例如 /{version}/{resources}/{resource_id}/action 其中action就是对资源的操作。 从大体样式了解URL路径组成之后,对于RESTful API的URL具体设计的规范如下: 不用大写字母,所有单词使用英文且小写。 连字符用中杠"-"而不用下杠"_" 正确使用 "/"表示层级关系,URL的层级不要过深,并且越靠前的层级应该相对越稳定 结尾不要包含正斜杠分隔符"/" URL中不出现动词,用请求方式表示动作 资源表示用复数不要用单数 不要使用文件扩展名…

摩登3平台开户_大彩串口屏在RTOS编程中应该注意的要点

这个月20号准备去参加RT-Thread一年一度的RDC开发者大会,顺便会带上我们公司的产品,这个产品就用到了大彩串口屏,所以昨天我也写了一篇表驱动法在大彩串口屏上的应用,文章如下: 【12月】大彩串口屏RT-Thread Nano STM32表驱动法产品应用开发 接下来我会做一个产品级的基于大彩串口屏的开源项目,用的大彩串口屏型号是:DC80480F070_6111_ON,128M,如下,这是一个7寸屏幕,分辨率800*480;当然价格也是超级便宜的了,入手价也就180块钱,今年屏疯狂涨价,这个价格已经很良心了。 近年来,RTOS在嵌入式系统设计中的主导地位也越来越明确,越来越多的工程师选用RTOS来完成产品功能的开发;从最熟悉不过的ucos,到后来的freertos、rt-thread、Tencentos tiny等等,以使用者的角度,我在产品开发上用过的RTOS非常多;但最后得出一个结论,只要通一个,其它则一通百通;正因为RTOS种类越来越多,所以ARM公司推出了CMSIS-RTOS,为统一操作系统、降低嵌入式门槛而发布的操作系统标准软件接口,CMSIS-RTOS的作用用通俗的话来讲就是:劳资不管你是什么RTOS,你只需要学习我的CMSIS-RTOS怎么用就可以了,但前提是你要把那些RTOS的接口适配到CMSIS-RTOS上,然后你就可以抛弃那些含义相同,写法不同的RTOS API,通通都可以不用它们,只用CMSIS-RTOS的API接口即可! CMSIS-RTOS架构图如下: 详情学习可以参考世伟兄之前在腾讯实习的时候周末写的文章: RTOS内功修炼记(八)— CMSIS RTOS API,内核通用API接口 1、串口屏是什么? 串口屏,在百度百科上是这么来解释的: 一套由单片机或PLC带控制器的显示方案,显示方案中的通讯部分由串口通讯,UART串口或者SPI串口等;它由显示驱动板、外壳、LCD液晶显 示屏三部分构成。接收用户单片机串口发送过来的指令,完成在LCD上绘图的所有操作。 1.1、大彩串口屏的数据收发接口 1.1.1、大彩串口屏数据接收处理 收的部分昨天的文章已经介绍过了: 【12月】大彩串口屏RT-Thread Nano STM32表驱动法产品应用开发 是通过一种类似消息机制的队列来进行实现,然后将队列里的数据进行拼接加工后满足大彩科技定义的一种协议指令集,所以中断服务函数实现如下,这样就可以持续的来接收串口屏回复的指令: /**  * @brief This function handles USART2 global interrupt.  */void USART2_IRQHandler(void){    /* USER CODE BEGIN USART2_IRQn 0 */    uint32_t i ;    uint32_t uart2_dma_rxlen ;    /*进入中断调用*/    rt_interrupt_enter();    if(__HAL_UART_GET_IT_SOURCE(&huart2, UART_IT_IDLE) != RESET)    {        __HAL_UART_CLEAR_IDLEFLAG(&huart2);        HAL_UART_DMAStop(&huart2);        uart2_dma_rxlen = HMI_LCD_U2_BUFFER_SIZE - (__HAL_DMA_GET_COUNTER(huart2.hdmarx));            for(i = 0; i < uart2_dma_rxlen; i++)        {            queue_push(HMI_LCD_Handler.HMI_LCD_U2_Buffer[i]);        }        __HAL_UART_ENABLE_IT(&huart2, UART_IT_IDLE);        HAL_UART_Receive_DMA(&huart2, HMI_LCD_Handler.HMI_LCD_U2_Buffer, HMI_LCD_U2_BUFFER_SIZE);    }    /* USER CODE END USART2_IRQn 0 */    HAL_UART_IRQHandler(&huart2);    /* USER CODE BEGIN USART2_IRQn 1 */   /*离开中断调用*/   rt_interrupt_leave();  /* USER CODE END USART2_IRQn 1 */} 以下是大彩科技提供给开发者的MCU例程文档中接收指令集的流程图: 以使用RT-Thread为例,在进入中断前调用:rt_interrupt_enter,在离开中断前调用:rt_interrupt_leave。 以上描述来自RT-Thread文档中心。 比如TencentOS tiny也提供了一组API: tos_knl_irq_entertos_knl_irq_leave 在进入中断处理函数调用tos_knl_irq_enter,在退出前调用tos_knl_irq_leave。 又比如UCOSIII也提供了一组API: OSIntEnter();OSIntExit(); 在进入中断处理函数调用OSIntEnter,在退出前调用OSIntExit。 其它的RTOS也是类似的,这里就不多做介绍了,有兴趣可以自己测试和研究。 1.1.2、大彩串口屏数据发送处理 大彩串口屏提供了hmi_driver.c这个文件,这个文件提供了一系列串口命令驱动的函数,例如设置控件的值等等,这些 操作依赖于以下这些发送接口: #define TX_8(P1) SEND_DATA((P1)&0xFF)                    //发送单个字节#define TX_8N(P,N) SendNU8((uint8 *)P,N)                 //发送N个字节#define TX_16(P1) TX_8((P1)>>8);TX_8(P1)                 //发送16位整数#define TX_16N(P,N) SendNU16((uint16 *)P,N)              //发送N个16位整数#define TX_32(P1) TX_16((P1)>>16);TX_16((P1)&0xFFFF)     //发送32位整数 上面这些接口,最终我们需要提供这样一个发送单个字节的函数: /*! *  \brief  发送一个字节*  \param  c */void SEND_DATA(uint8 c){    SendChar(c);} 那我们就直接实现SendChar这个函数就行了,以带RT-Thread操作系统的STM32工程为例,编写如下接口: void SendChar(uint8_t data){    /*调度器上锁*/    rt_enter_critical();    HAL_UART_Transmit(&huart2, &data, 1, 1000);    while(__HAL_UART_GET_FLAG(&huart2, UART_FLAG_TXE) != SET);    /*调度器解锁*/    rt_exit_critical();} 这里为什么要加上调度锁呢??假设,你在界面上需要在不同任务里同时调用如下接口: void SetTextValue(u16 screen_id, u16 control_id, u8 *str){    BEGIN_CMD();    TX_8(0xB1);    TX_8(0x10);    TX_16(screen_id);    TX_16(control_id);    SendStrings(str);    END_CMD();} 这个接口是用来在给界面上某个文本控件显示字符串用的;当多个任务同时调用该接口时,这样不就是我们之前谈的打架问题了吗?在多任务系统中,这就是一种潜在的风险,当一个任务在使用某个资源的过程中,还没有完全结束对资源的访问时就被打断了,这样就会出现一些奇奇怪怪的问题,比如之前我用OLED结合RTOS编程时候也会出现像屏幕花屏的现象,这里我采用的方法是直接在底层的接口函数处加上调度锁,以防止这种情况发生,当然,还有另外一种方法可以实现,那就是互斥锁。 至于互斥锁该怎么用,打开各大RTOS的API参考手册,上面会详细的告诉你如何创建,如何使用,照着做就是了,这里就不多说了。 让传感器数据更直观之LCD曲线显示 【12月】大彩串口屏RT-Thread Nano STM32表驱动法产品应用开发 开源作品:基于TencentOS tiny英国达特甲醛探测仪产品级开发(二) 整理了很久之前在码云/Github/CSDN上收藏的嵌入式产品级项目分享开源 免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

摩登3平台首页_RSL10 Mesh平台荣获2020年度中国IoT创新奖之“IoT技术创新奖”

12月4日,由电子发烧友举办的第七届中国IoT大会于深圳举办。在当天晚上的中国IoT创新奖颁奖典礼上,安森美半导体的RSL10 Mesh 平台荣获“IoT技术创新奖”。 安森美半导体医疗分部亚洲区高级市场经理杨正龙(Henry Yang) RSL10 Mesh平台。这Strata赋能的方案提供智能感知和云联接,支持节点对节点通信。 使用RSL10 Mesh平台,工程师可轻松实现使用低功耗蓝牙技术的超低功耗的网状网络,并迅速走向全面部署。该多面方案优化用于智能家居、楼宇自动化、工业IoT、远程环境监控以及资产跟踪和监控应用,具有开发和部署网状网络所需的所有基本要素。 与传统的点对点 (P2P) 蓝牙联接不同,蓝牙低功耗网状网络实现了,比传统的P2P蓝牙通信覆盖更大的距离,因为节点可以将数据包中继到传输节点范围之外的目标节点以执行消息传递。 这使以前无法用蓝牙技术实现的各种IoT应用成为可能,包括联网照明和远程传感器监控。蓝牙低功耗网状网络的价值和消除范围限制,现已在工业、农业、企业和物流领域以及智慧城市的兴起等多个不同环境得以认可。 但是,运作限制和实施便利性仍是主要挑战。安森美半导体的RSL10 Mesh平台,以更快地部署节点,推进在范围、灵活性和功率预算的性能极限。 RSL10 Mesh平台基于超低功耗RSL10系统级封装(RSL10 SIP),含两个RSL10 Mesh节点和一个Strata网关,以联接到Strata Developer Studio™。 RSL10 SIP辅以一系列传感器和指示器,已集成到节点硬件中,包括环境光传感器(LV0104CS)、温度传感器(N34TS108)、磁性传感器、LED指示器和三路输出NCP5623B LED驱动器 (用于混色)。另外还内置一个电池充电器,适用于具有锂离子或锂聚合物化学性质的电池。 网格节点可以简单地配置成不同的角色并展示特定的功能面。与之配套的Strata 网关支持使用高度直观的Strata Developer Studio进行评估过程。这云联接的软件可实现更多网格的配置,并支持空中固件升级(FOTA)。 使用虚拟工作区用于包括智能办公室在内的常见网状网络示例,开发人员可以访问传感器数据和触发设置。该高能效RSL10无线电配以基于Eclipse的集成开发环境、用于预配、配置和控制低功耗蓝牙网状网络的移动应用程序,以及符合蓝牙特别兴趣小组(Bluetooth SIG)的网状网络软件包。 免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

摩登3测速登录地址_为了忽悠大厂面试官,熬夜总结了这些Spring面试题!

1.说说Spring 里用到了哪些设计模式? 单例模式:Spring 中的 Bean 默认情况下都是单例的。无需多说。 工厂模式:工厂模式主要是通过 BeanFactory 和 ApplicationContext 来生产 Bean 对象。 代理模式:最常见的 AOP 的实现方式就是通过代理来实现,Spring主要是使用 JDK 动态代理和 CGLIB 代理。 模板方法模式:主要是一些对数据库操作的类用到,比如 JdbcTemplate、JpaTemplate,因为查询数据库的建立连接、执行查询、关闭连接几个过程,非常适用于模板方法。 2.谈谈你对IOC 和 AOP 的理解?他们的实现原理是什么? IOC 叫做控制反转,指的是通过Spring来管理对象的创建、配置和生命周期,这样相当于把控制权交给了Spring,不需要人工来管理对象之间复杂的依赖关系,这样做的好处就是解耦。在Spring里面,主要提供了 BeanFactory 和 ApplicationContext 两种 IOC 容器,通过他们来实现对 Bean 的管理。 AOP 叫做面向切面编程,他是一个编程范式,目的就是提高代码的模块性。Srping AOP 基于动态代理的方式实现,如果是实现了接口的话就会使用 JDK 动态代理,反之则使用 CGLIB 代理,Spring中 AOP 的应用主要体现在 事务、日志、异常处理等方面,通过在代码的前后做一些增强处理,可以实现对业务逻辑的隔离,提高代码的模块化能力,同时也是解耦。Spring主要提供了 Aspect 切面、JoinPoint 连接点、PointCut 切入点、Advice 增强等实现方式。 3. JDK 动态代理和 CGLIB 代理有什么区别? JDK 动态代理主要是针对类实现了某个接口,AOP 则会使用 JDK 动态代理。他基于反射的机制实现,生成一个实现同样接口的一个代理类,然后通过重写方法的方式,实现对代码的增强。 而如果某个类没有实现接口,AOP 则会使用 CGLIB 代理。他的底层原理是基于 asm 第三方框架,通过修改字节码生成成成一个子类,然后重写父类的方法,实现对代码的增强。 4. Spring AOP 和 AspectJ AOP 有什么区别? Spring AOP 基于动态代理实现,属于运行时增强。 AspectJ 则属于编译时增强,主要有3种方式: 编译时织入:指的是增强的代码和源代码我们都有,直接使用 AspectJ 编译器编译就行了,编译之后生成一个新的类,他也会作为一个正常的 Java 类装载到JVM。 编译后织入:指的是代码已经被编译成 class 文件或者已经打成 jar 包,这时候要增强的话,就是编译后织入,比如你依赖了第三方的类库,又想对他增强的话,就可以通过这种方式。 加载时织入:指的是在 JVM 加载类的时候进行织入。 总结下来的话,就是 Spring AOP 只能在运行时织入,不需要单独编译,性能相比 AspectJ 编译织入的方式慢,而 AspectJ 只支持编译前后和类加载时织入,性能更好,功能更加强大。 5. FactoryBean 和 BeanFactory有什么区别? BeanFactory 是 Bean 的工厂, ApplicationContext 的父类,IOC 容器的核心,负责生产和管理 Bean 对象。 FactoryBean 是 Bean,可以通过实现 FactoryBean 接口定制实例化 Bean…