• 蜂窝移动通信技术笔记分享
    2G      2G 技术可能年代已经比较久远了,2G 的出现标志着数字通信的起源,2G 又叫 GSM,全名 为:Global System for Mobile Communications,中文为全球移动通信系统。通过 2G 网 络,用户可以打电话,发短信。之后就是 GPRS,又称作是 2.5G,它是 GSM 的延续,同时它 的传输速率基于 2G 又有了提升。3G      到了 3G,用户的数据传输速率就更高了,一般可以达到几百 kbps,3G 用户可以视频通话, 同时也可以用手机看电视。在 3G 当中,国内的运营商都使用了不同的标准,它们分别是 CDMA2000、WCDMA 和 TD-SCDMA。其中联通的 WCDMA 最新演进技术 HSPA+可以支持 最高 42Mbps 的传输速率,目前仍然被应用于大部分视频数据传输领域。4G      3G 当中的 HSPA+技术虽然可以用于视频数据的传输,但是如果想要传输高清的视频数据,就 需要使用到 4G。虽然说 5G 非常热门,但是大部分用户用的运营商网络其实还是 4G 网络。 到了 4G,它的数据速率就更高了,用户可以用手机看视频听歌等一系列多媒体业务。 同时在 4G 网络当中,还有一点需要阐述的就是 4G 的不同等级,也就是 LTE-Cat。其中 Cat 的意思是 Category 等级,它指的是终端设备接入 4G 网络的所支持的不同的速率等级。在 4G 当中,设计者使用不同的等级方式来规定某一个设备所能达到的最高传输速率。在 4G 刚 开始的时候,市面上常见的各种终端设备使用的是 Cat.4 这个等级,但是现如今生活中所使用 的 4G 设备基本都是 Cat.6 这个等级了。至于设置这些不同等级的原因就在于不同等级的模组 芯片的价格是不一样的。                                                                                 LTE UE 接入能力等级等级DL Speed/MbpsDL-MIMOUL Speed/Mbps1101525022531002504150250530047563002 or 45073002 or 415081200860094502 or 450104502 or 4100      同时在物联网领域,目前使用比较多的是 Cat.1 这个等级,因为除了大部分设备使用低功耗广 域网这个场景之外,还有一部分对于网络速率有需求的设备就会使用 Cat.1 等级,尽管 Cat.4 及更高版本的解决方案支持高速率,但是对于物联网终端设备来说,这些模组的成本太高了, 所以 Cat.1 等级就成了使用 LTE 网络最具有性价比的等级。 Cat.1 支持高达 10Mbps 的终端下行链路速率,从而能够将更低功耗和更低成本的 IoT 设备连 接到 LTE 网络。由于世界各地的 4G LTE 运营商均基于最低 3GPP Release8 协议版本进行部 署,因此运营商无需升级网络,仅需要简单的参数配置即可允许 Cat.1 终端访问网络。5G      5G 网络是第五代移动通信网络,5G 的理论峰值速率可以达到 10Gbps。同时 5G 定义了三大 应用场景:增强型移动互联网业务 eMBB(Enhanced Mobile Broadband)对应的就是 10Gbps 的速率,海量连接的物联网业务 mMTC(Massive Machine Type Communication)对应的是 1 million/km2 的设备连接数,超高可靠性与超低时延业务 uRLLC(Ultra Reliable & Low Latency Communication)对应的是 1ms 的时延。在这三大 场景当中,eMBB 场景与用户的关联性比较大,因为它能给用户提供大带宽的上网速率。但是 另外两个场景就与物联网的关联性比较大了,海量的连接与超低的时延能够帮助物联网在很多 不同的应用当中进行业务能力的提升。在本节内容当中,读者们只需要了解 5G 的三大场景名 称即可,关于 5G 的详细内容将在之后的章节进行呈现。蜂窝移动通信网络技术对比2G3G4G5G频段授权频段 (以900M为 主)授权频段 (900、1800M为 主)授权频段 (1800M-2600M)授权频段: C-band 毫米波传输速率GSM: 9.6KbpsGPRS:56- 114KbpsTD-SCDMA:2.8MbpsCDMA2000: 3.1Mbps WCDMA: 14.4Mbps下行 Cat.6、7: 300Mbps 下行 Cat.9、10: 450Mbps10Gbps (巴龙5000芯片支 持 下行速率4.6Gbps; 上行 速率- 2.5Gbps)典型应用POS、智能可 穿戴设备自动售货机、智能 家居移动终端、视频监 控AR、VR、辅助驾 驶、自动驾驶、 远程医疗
  • 一文看懂华为云IoT第三方物联网业务无感迁移方案
    近期在物联网领域,掀起的热门技术话题,莫过于“云云迁移”。业务快速增长,导致原有物联网平台无法匹配业务发展,如何选择一个灵活、安全、可靠、可用的IoT物联网平台、物联网业务如何快速实现云迁移?这类问题成为了困扰企业的难题。华为云IoT融合了华为自身长期在ICT及千行百业沉淀的技术与服务经验,基于华为云强大的技术底座,提供丰富的设备接入方式和全生命周期的设备管理能力,同时,也具备物联网业务无感迁移能力。即使企业物联网业务已与其它或自研平台对接,在不修改设备业务逻辑和协议情况下,也可实现快速接入华为云IoT平台。01物联网业务如何快速迁移至华为云IoT平台?为满足企业多云容灾和第三方云IoT迁移至华为云IoT平台的需求,华为云IoT平台IoTDA从设备端、平台端、应用端提供了低成本,零改造的存量设备无感迁移方案,可以在无感迁移的情况下保持云上业务系统稳定。平台端迁移自动化迁移第三方云平台设备信息:IoTDA提供自动化,高效的迁移能力,支持第三方云平台的存量产品和设备信息全量+增量数据同步到IoTDA,实现设备信息无感自动迁移。迁移流程如下:兼容第三方云平台Topic策略:IoTDA支持自定义Topic的策略,存量设备可以依据现有的Topic来定义Topic策略,不要求Topic固定前缀,实现存量设备的Topic免改动。Topic策略详情链接如下:https://support.huaweicloud.com/usermanual-iothub/iot_01_1111.html兼容第三方云平台鉴权模式:IoTDA支持自定义鉴权方式,存量设备可以依据现有的设备鉴权方式,来配置设备的鉴权策略,实现存量设备鉴权方式免改动。设备端迁移对于存量设备,客户只需要将设备接入域名修改为华为云IoTDA的接入点,即可批量化完成平台迁移。Topic策略详情链接如下:https://support.huaweicloud.com/usermanual-iothub/iot_01_1111.html对尚未接入三方平台的设备,华为云IoTDA提供设备侧SDK支持设备快速完成设备轻量化改动。华为云IoT设备侧SDK获取链接如下:https://support.huaweicloud.com/sdkreference-iothub/iot_02_0178.html应用端迁移华为云IoTDA提供应用端SDK,开发者只需做少量代码修改就可完成应用端适配,实现应用端的快速迁移。应用端SDK参考链接如下:https://support.huaweicloud.com/sdkreference-iothub/iot_10_1002.html02为什么选择迁移至华为云IoT平台?华为云IoT平台(IoTDA)是一个融合了设备接入、设备管理、安全可靠的双向通信、消息灵活流转引擎、监控运维、最优发放功能为一体的物联网服务平台。配合华为云其他产品同时使用,帮助物联网行业用户快速完成设备联网及行业应用集成,简化海量设备接入、管理的复杂性,节省人工操作,提升效率。支持端到端物联网解决方案构建:IoTDA提供丰富的Restful API,将能力开放给物联网应用、其他云服务和中间件,使能客户快速、低成本的构建自己的物联网解决方案。提供物模型以及云端编解码插件的能力:实现物联网数据的标准化和格式化,实现各种设备的数据汇聚、融合和协同,解决物联网各子系统烟囱式发展以及数据孤岛问题。多种协议接入:IoTDA支持多网络接入(2G/3G/4G/5G/NB-IoT/LoraWAN)、多协议接入(MQTT/CoAP/LwM2M/HTTPS)、多种接入模式(直连、网关、边缘计算平台、子系统、第三方云接入)、安全接入(TLS、DTLS、DTLS+、一机一密、X.509证书)来帮助行业各类设备安全可靠轻松上云,实现解决方案数据的完整融合。鸿蒙底座:IoTDA加入了Open Harmony开源鸿蒙项目,开发者集成Open Harmony能力或者鸿蒙模组可以无缝对接华为云设备接入服务,同时可以配套更高阶的安全、可信、运维能力。丰富的生态开放:使能开发者通过丰富的API、SDK、预集成模组的方式,实现设备上电即上云。设备SDK兼容设备端侧的OS包括LiteOS、OpenHarmony LiteOS-M、FreeRTOS、linux、ucos_ii、windows、Android等,帮助用户设备减少大量适配工作,快速接入IoTDA平台。提供开发者开发私有协议插件,进行协议动态加载能力。提供协议插件生态市场,支持更多行业协议,开放度更加灵活。协议插件可以一键部署,灵活插拔,实现不同行业品类的设备无代码或者低代码适配上云的能力。提供300+标准物模型,同时提供厂商生态开放物模型,覆盖主流设备场景。物模型设备数据格式统一,开箱即用、批量复用,提高开发集成效率。物模型支持零代码数据格式转换,可以通过界面托拉拽、函数serverless的方式进行设备数据格式转换,免运维、易部署。拥有多样化、灵活的数据转发能力,可以将数据转发至其他华为云服务进行进一步的数据处理。开发者可以通过自身情况,灵活选择应用服务器组件来对设备数据进行接收,依托华为云海量数据转存和分析能力,提升方案的构建效率。03如何联系华为云IoT获取迁移帮助?为满足客户的需求,华为云IoT设备接入服务提供迁移专家团队支持,为您提供一对一的迁移方案制定和帮助。
  • 物联网SIM卡和手机SIM卡真的是一回事吗?
    物联网卡?相信大家第一反应都是一愣。大家听过银行卡、电话SIM卡、会员卡…等等,很多人可能都是第一次听说物联网卡。那它到底是个什么东东?它能干什么呢?今天就带大家一探究竟。那在物联网世界里,物与物之间是怎么感知和链接的呢?我们首先要知道物联网的一个运行流程:物联网是通过设备上的各种传感器如温湿度传感器、RFID标签等感知终端来识别物体,采集数据等。然后,通过固定宽带、NB-IoT、2/3/4/5G在内的多种网络,将设备接入到物联网平台进行互联。若设备使用2/3/4/5G和NB-IoT网络接入,则需要通过物联网SIM卡接入运营商网络。而随着物联网的发展,设备类型越来越多,设备尺寸越来越小,对物联网SIM卡外部环境的适配性要求越来越高,对物联网SIM卡寿命的要求越来越长,对物联网SIM卡尺寸的要求越来越小,促使物联网SIM卡的形态从插拔式SIM卡,演进到嵌入式SIM卡和vSIM卡。Nano卡虽然看起来已经很小了,但是它们还需要设备具有配套的卡槽。这个卡槽的结构和走线,对于一些智能穿戴设备(智能手环、智能眼镜等)来说还是太大了。而且插拔式SIM卡里面的用户信息固定不可更改,一张SIM卡就是一个用户与运营商之间的契约,若您想要切换运营商,必须换卡。为了解决这些问题,eSIM和vSIM诞生了。嵌入式SIM卡:eSIM,也称eUICC(embedded UICC),顾名思义,与传统可插拔的SIM卡不同,eSIM的概念是将SIM卡直接嵌入到设备中。eSIM的本质还是SIM卡,不过它的“卡体”是一颗直接嵌在电路板的可编程的集成电路,其大小比Nano还要小上几倍。因为其可编程特性,eSIM支持通过OTA(空中写卡)方式进行远程配置,更新运营商配置文件,实现网络切换。vSIM卡:即virtual-SIM,虚拟SIM卡技术。可以说,vSIM就是eSIM的进一步演进,继承了eSIM的功能,并完全消灭了卡体,直接依托通信模块自身软硬件实现通信。终端设备拥有vSIM功能的通信模块,配合为vSIM特殊定制的底层软件,实现了内置加密存储数据(IMSI、KI等)。在登陆网络、鉴权、通信时,自动处理相应的逻辑,从而实现不需要实体SIM卡也能提供稳定的通信体验。eSIM和vSIM除了进一步缩小甚至消灭了实体卡之外,它们更重要的功能是解除了用户和运营商的直接绑定,对用户来说,切换运营商变得和切换WIFI一样简单。物联网SIM卡如何选在物联网时代,分享智慧,物联网不再是遥不可及的时代,它不知不觉地影响了我们的工作和生活,作为物联网的重要支撑,物联网卡已广泛应用于医疗卫生、能源和电力、智能服装、物流零售、智能农业和智能交通等领域。不同行业对物联网SIM卡的需求不同,我们可以总结出以下场景:物联网设备除了无线流量需求外,还需要以下两个场景流量:海外流量:企业在国内生产设备,销售海外。使用海外流量,则需和多个海外运营商洽谈,部分企业可能没有海外渠道。典型的行业有车企(销售海外)、物流、运输、保健等。不换卡切换运营商:因网络信号不好或订购套餐到期要更换运营商套餐,需要手工更换不同运营商SIM卡,人工成本高;典型的行业有新零售、运输等。可以预见的,随着5G的到来,物联网行业面临的功耗高、带宽速度慢和成本高等阻碍也将有效解决,届时,物联网卡将随5G和物联网行业迎来爆发。那么,如何选择一个长期稳定、可靠的物联网卡服务商成为企业的强烈需求。购物联网卡实质上是购买服务,只有把服务做好,通过功能强大的平台为用户提供流量长期使用的运营支撑,用户才能安心无忧地使用物联网卡。针对以上场景,华为云的 “全球SIM联接”云服务。它支持实体卡、eSIM卡和vSIM卡方式,提供卡购买、卡管理、设备接入、设备发放能力,借助定向流量、空中写卡和远程设备发放技术。华为云物联卡合作运营商达80家以上,网络覆盖全球100+国家和地区,实现设备全球就近接入公有云站点,享受当地资费,一站式的SIM卡流量管理;与国内主流模组厂家预集成,降低了eSIM/vSIM卡和设备接入集成难度,还可实现多运营网络按需选择,号码自动切换,向客户提供一站式设备连接管理的优质服务。
  • NB-IoT 技术亮点&行业挑战
    NB-IoT技术亮点10年电池寿命:支持PSMeDRX/长周期TAU,水表场景下寿命高达10年20dB增益:覆盖等级比GPRS提升20dB,具备更强的信号穿透力50K联接数每小区:单小区最大的接入数量50K,能够支持更多数量设备接入高性价比模组:芯片设计简化,外围电路精简,极大程度降低模组成本海思是NB-IoT技术的引领者,是NB-IoT标准以及产业的主要推动者。海思长期坚持NB-IoT研发投入,推动行业标准落地、推动技术及商用场景应用创新。致力与生态伙伴一起打造一个稳健、开放的NB-IoT生态系统。2016年随着R13标准冻结, 海思率先推出NB-IoT 商用芯片Boudica120,助力模组厂商和行业客户物联网方案商用。截至当前海思NB-IoT Boudica系列芯片已经在水表、气表、智慧消防、资产跟踪等领域实现千万级商用部署数量,在门锁、白电、物流、路灯等领域实现数百万级商用,同时海思与合作伙伴探索更多的创新商用场景,在农业、穿戴、支付、共享经济等领域创新完成商用落地。伴随NB-IoT技术带来的商用场景广泛部署及物联网设备的成倍增长,行业对NB-IoT也提出了更多的挑战,如典型场景下, 如何有效的通过技术演进降低部署成本、大规模组网下如何解决功耗问题、设备互联后如何保证数据安全等。NB-IoT 行业挑战功耗挑战大在智慧表计行业,电池不可更换、设备不能反复充电,电池的使用时间制约了整个表计设备的寿命。在电池容量有限的情况下,想让表计的使用寿命达到10年,对NB-IoT的综合功耗要求非常高。近点运维困难传统智慧表计产品如果出现故障,会导致远程上报和升级无法完成,必须人工拆除返修,维修综合成本高,且影响用户用水用气,急需一个近点的无线维护手段,达到不拆表即可完成诊断、维护和升级的目的。设备安全等级低行业对提升设备安全等级的诉求日益急迫。例如在水表、燃气表等涉及计费和支付的领域,一旦出现被劫持、篡改的情况,将会对运营方和终端客户造成不可估量的损失。终端网络适配性NB-IoT网络设备厂家众多,且伴随不定时的网络升级改造;户外环境中存在遮挡、干扰等因素,还会恶化无线环境。这些情况对终端设备的网络适配性提出了很高的需求。文章来源:上海海思
  • Linux中可引起文件时间戳改变的相关命令
    在命令行中,用stat查看文件的状态信息如图所示,会出现3个类型的时间,分别是Access,Modify,Change。access time:表示最后一次访问(仅仅是访问,没有改动)文件的时间。modify time:表示最后一次修改文件的时间。change time:表示最后一次对文件属性(metadata)改变的时间,包括权限,大小,属性等等。当我们仅访问文件(cat、cp)时,access time 改变,而modify time ,change time 不会改变。当修改文件内容(vim)时,modify time改变,一般都会修改access time和change time。当修改文件权限属性(chmod)时,change time 改变,而access time ,modify time 不会改变。我们可以使用touch命令修改这些时间戳,如:touch -d 1999-01-01 a.txt // 将a.txt的Access和Modify时间改为1999-01-01 touch -a a.txt // 只将a.txt的Access时间改为当前系统时间 touch -m a.txt // 只将a.txt的Modify时间改为当前系统时间我统计了几点关于在Linux中可引起文件时间戳改变的相关命令一览表:SN时间戳命令示例备注1Avi sss(退出不保存)cat sssmore ssstail ssshead sssless ssscp test AAA/123左边的命令在该文件时间戳M或者C发生更新的前提下使用一次有效,并且使用其中任意一个命令引起该文件访问时间发生更新后,再使用其他命令则不会引起访问时间的更新。2M—按照时间戳M的字面意思来理解,只要文件内容发生变化该时间戳就会更新,但M更新的同时会引起C的更新。3Cmv sss aaamv sss /AAAchmod 744 ssschown sss testchgrp root testchattr +i sssln test file/H_link(硬链接可以)与文件属性相关的操作会单独引起该时间戳的更新。4A+Mtouch -amd "2 hours ago" testtouch:-a只更文件改访问时间.-m只更文件改修改时间.-d 以字符串格式接收时间-t 接收时间格式为:MMDDhhmm。若不加d或t,则默认更新为当前系统时间作。会引起C的更新,相当于A+C+M。5A+Ctouch -ad "2 hours ago" test6M+Cls -l /root > ssscat CCC > sssmore CCC > sssless CCC > ssshead CCC > ssstail CCC > sssnl CCC > sssecho 'HELLO' > ssstouch -md “2 hours ago” sss7A+C+Mvim sss(退出并保存)touch test(test文件已存在)touch -am test(test文件已存在)使用touch时,将A、C、M更新为当前系统时间。
  • 轻松快速地调整Kubernetes的CPU和内存
    在Kubernetes中分配和管理CPU和内存资源可能很棘手,但也很容易。本文,我将向你展示什么是Kubernetes资源和限制以及如何管理它们。本文的目标是简单–如何帮助你快速调整项目中的Kubernetes资源信息,主要通过三种方式:1. 为容器和 Pod 分配CPU和内存资源2. Resources Quota: 限制namespace的资源消耗3. Limit Ranges:配置默认的CPU请求和限制为容器和 Pod 分配CPU和内存资源下图,解释了Kubernetes资源的度量单位,资源状态工作流以及如何使用资源限制。CPU和内存单位Kubernetes 中的一个 cpu 等于:1 AWS vCPU1 GCP Core1 Azure vCore1 Hyperthread 在带有超线程的裸机 Intel 处理器上以下,Deployment使用了内存资源和CPU资源的请求和限制将CPU和内存 请求 (request)和内存 限制 (limit)分配给一个容器更详细的信息和代码段:将内存资源分配给容器和Pod将CPU资源分配给容器和PodKubernetes最佳实践资源要求和限制应用程序开发人员在Azure Kubernetes Service(AKS)中管理资源的最佳实践Resources Quota: 限制namespace的资源消耗资源配额,通过 ResourceQuota 对象来定义,对每个namespace的资源消耗总量提供限制。它可以限制namespace中某种类型的对象的总数目上限,也可以限制命令空间中的 Pod 可以使用的计算资源的总上限。资源配额的工作方式如下:不同的团队可以在不同的namespace下工作,目前这是非约束性的,在未来的版本中可能会通过 ACL (Access Control List 访问控制列表) 来实现强制性约束。集群管理员可以为每个namespace创建一个或多个 ResourceQuota 对象。当用户在namespace下创建资源(如 Pod、Service 等)时,Kubernetes 的配额系统会 跟踪集群的资源使用情况,以确保使用的资源用量不超过 ResourceQuota 中定义的硬性资源限额。如果资源创建或者更新请求违反了配额约束,那么该请求会报错(HTTP 403 FORBIDDEN), 并在消息中给出有可能违反的约束。如果namespace下的计算资源 (如 cpu 和 memory)的配额被启用,则用户必须为 这些资源设定请求值(request)和约束值(limit),否则配额系统将拒绝 Pod 的创建。 提示: 可使用 LimitRanger 准入控制器来为没有设置计算资源需求的 Pod 设置默认值。以下,是对持久卷声明和namespace资源的配额定义。你可以使用该kubectl apply命令来设置namespace的配额限制。kubectl apply -f resource-quota.yaml — namespace backend如何使用配额的详细说明,请参考https://kubernetes.io/docs/concepts/policy/resource-quotas/Limit Ranges:配置默认的CPU请求和限制如果你的namespace有资源配额,那么默认内存限制是很有帮助的。将 LimitRange 添加到namespace,不仅会限制cpu和内存,还会为存储请求大小强制设置最小值和最大值。存储是通过 PersistentVolumeClaim 来发起请求的。执行限制范围控制的准入控制器会拒绝任何高于或低于管理员所设阈值的 PVC。更详细的信息和代码段。为namespace配置默认的 CPU 请求和限制限制名称空间的存储使用量Kubernetes中的 Limit Range工具:管理Kubernetes的CPU和内存Popeye 会扫描集群中是否存在与配置,资源和网络漏洞有关的问题,并生成有关所有问题的详细报告。Goldilocks 扫描Pod中的资源限制,并使用建议的资源创建报告。Kube-advisor 来自Azure团队的工具,可扫描容器中缺少的资源并限制请求。K9s+benchmark 提供了一个命令行界面(CLI),使你可以轻松地管理,监视甚至对 你喜欢的终端软件中的集群进行基准测试你还可以将这些工具与 Datadog, Grafana + Prometeus,Azure Monitor结合使用,以改善资源并限制监视。总结设置资源请求:获取有关特定应用程序/容器的CPU和内存使用情况的信息。设置资源限制:运行负载测试以检测高负载下容器的CPU和内存。监视容器的CPU和内存使用情况。监视持久卷使用情况。检查是否可以使用Limit Range应用资源限制使用配额(不建议在生产环境中应用配额)文章来源:K8s中文社区译者:王延飞原文链接:https://dzone.com/articles/easy-and-fast-adjustment-of-kubernetes-cpu-and-mem
  • SSH 组合框架模式小知识分享
    SSH=Struts+Spring+Hibernate      集成SSH框架的系统从职责上分为四层:表示层、业务逻辑层、数据持久层和域模块层,以帮助开发人员在短期内搭建结构清晰、可复用性好、维护方便的Web应用程序。其中使用Struts作为系统的整体基础架构,负责MVC的分离,在Struts框架的模型部分,控制业务跳转,利用Hibernate框架对持久层提供支持,Spring做管理,管理struts和hibernate。      Struts 是一个很好的MVC框架,主要技术是Servlet和Jsp。Struts的MVC设计模式可以使我们的逻辑变得很清晰,让我们写的程序层次分明。基于Struts开发可以简化开发难度,提高开发效率。  Spring 提供了管理业务对象的一致方法,并鼓励注入对接口编程而不是对类编程的良好习惯,使我们的产品在最大程度上解耦。Hibernate 是用来持久化数据的,提供了完全面向对象的数据库操作。Hibernate对JDBC进行了非常轻量级的封装,它使得与关系型数据库打交道变得非常轻松。在Struts+Spring+Hibernate系统中,对象之间的调用流程如下: Struts——>Spring——>Hibernate  JSP——>Action——>Service——>DAO——>Hibernate比如:1.Spring的配置文件bean.xml<?xml version="1.0" encoding="UTF-8"?><beans         xmlns="http://www.springframework.org/schema/beans"         xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"         xmlns:tx="http://www.springframework.org/schema/tx">     <bean id="dataSource"           class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">         <property name="jdbcUrl"                   value="jdbc:mysql://localhost:3306/samblog?useUnicode=true&amp;characterEncoding=UTF-8&amp;autoReconnect=true">         </property>         <property name="user" value="root"></property>         <property name="password" value="123456"></property>         <property name="driverClass" value="org.gjt.mm.mysql.Driver"/>     </bean>     <bean id="sessionFactory"           class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">         <property name="dataSource">             <ref bean="dataSource"/>         </property>         <property name="hibernateProperties">             <value>                 hibernate.dialect=org.hibernate.dialect.MySQL5Dialect                 hibernate.hbm2ddl.auto=update                 hibernate.show_sql=false                 hibernate.format_sql=false            </value>         </property>         <property name="mappingResources">             <list>                 <value>site/sambloger/domain/Users.hbm.xml</value>                 <value>site/sambloger/domain/Blog.hbm.xml</value>                 <value>site/sambloger/domain/Category.hbm.xml</value>                 <value>site/sambloger/domain/Comment.hbm.xml</value>             </list>         </property>     </bean>     <bean id="transactionManager"           class="org.springframework.orm.hibernate5.HibernateTransactionManager">         <property name="sessionFactory" ref="sessionFactory"/>     </bean>     <tx:annotation-driven transaction-manager="transactionManager"/>     <!-- 配置Blog  spring进行管理  服务层直接调用实现与数据库的CRUD-->     <bean id="blogDao" class="site.sambloger.dao.impl.BlogDAOImpl">         <property name="sessionFactory" ref="sessionFactory"/>     </bean>     <bean id="blogService" class="site.sambloger.service.impl.BlogServiceImpl" scope="prototype">         <property name="blogDao" ref="blogDao"/>     </bean>     <bean id="blogAction" class="site.sambloger.action.BlogAction">         <property name="blogService" ref="blogService"/>         <property name="commentService" ref="commentService"/>     </bean>     <!-- 配置Comment -->     <bean id="commentDao" class="site.sambloger.dao.impl.CommentDAOImpl">         <property name="sessionFactory" ref="sessionFactory"/>     </bean>     <bean id="commentService" class="site.sambloger.service.impl.CommentServiceImpl" scope="prototype">         <property name="commentDao" ref="commentDao"/>     </bean>     <bean id="commentAction" class="site.sambloger.action.CommentAction">         <property name="commentService" ref="commentService"/>         <property name="blogService" ref="blogService"/>     </bean>     <!-- 配置Users -->     <bean id="usersDao" class="site.sambloger.dao.impl.UsersDAOImpl">         <property name="sessionFactory" ref="sessionFactory"></property>     </bean>     <bean id="usersService" class="site.sambloger.service.impl.UsersServiceImpl" scope="prototype">         <property name="usersDao" ref="usersDao"/>     </bean>     <bean id="usersAction" class="site.sambloger.action.UsersAction">         <property name="userService" ref="usersService"></property>     </bean></beans>2.Struts的配置文件 struts.xml<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"><struts>     <package name="samblog" extends="struts-default" namespace="/">              <action name="init" class="blogAction" method="init">                     <result name="success">/bloglist.jsp</result>             </action>             <action name="getBlog" class="blogAction" method="getBlog">                     <result name="success">/displayBlog.jsp</result>             </action>              <action name="getAllNote" class="blogAction" method="getAllNote">                 <result name="success">/notelist.jsp</result>             </action>             <action name="addComment" class="commentAction" method="addComment">                 <result name="success"  type="redirect">/getBlog</result>             </action>     </package></struts>3.Hibernate其中的一个配置文件:<?xml version="1.0" encoding="utf-8"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><!--      Mapping file autogenerated by MyEclipse Persistence Tools--><hibernate-mapping>     <class name="site.sambloger.domain.Blog" table="blog">         <!--id标签表示映射到数据库中是作为主键 其他property表示普通键-->         <id name="id" type="java.lang.Integer">             <column name="id" />             <generator class="increment" />         </id><!--该标签加N方 会有一个字段叫category_id作为外键参照1(Category)的主键字段 并且用来存储这个主键的信息-->         <many-to-one name="category" class="site.sambloger.domain.Category"  lazy="false" cascade="all">             <column name="category_id" not-null="true" />         </many-to-one>         <property name="title" type="java.lang.String">             <column name="title" length="400" not-null="true" />         </property>         <property name="content" type="java.lang.String">             <column name="content" length="4000" not-null="true" />         </property>         <property name="createdTime" type="java.util.Date">             <column name="created_time" length="10" not-null="true" />         </property><!--在一对多的关联中,在一的一方(Blog)设置inverse=”true”让多的一方来维护关联关系更有助于优化,因为可以减少执行update语句-->         <set name="comments" inverse="true">             <key>                 <column name="blog_id" not-null="true" />             </key>             <one-to-many class="site.sambloger.domain.Comment" />         </set>     </class></hibernate-mapping>Spring框架的作用和好处:    Spring框架提供了一个容器,该容器可以管理应用程序的组件,还提供了IoC和AoP机制,实现组件之间解耦,提高程序结构的灵活性,增强系统的可维护和可扩展性。     在SSH整合开发中,利用Spring管理Service、DAO等组件,利用IoC机制实现Action和Service,Service和DAO之间低耦合调用。利用AoP机制实现事务管理、以及共通功能的切入等。     功能是整合,好处是解耦。Hibernate中操作并发处理(乐观锁和悲观锁)    Hibernate框架可以使用锁的机制来解决操作并发。    a.悲观锁         在数据查询出来时,就给数据加一个锁,锁定。这样其他用户再执行删、改操作时不允许。当占用着事务结束,锁会自动解除。          Hibernate采用的是数据库锁机制实现悲观锁控制。        缺点:将并发用户操作同步开,一个一个处理。当一个用户处理时间比较长时,效率会比较低。      b.乐观锁         允许同时更新提交,但是最快的会成功,慢的失败。         在记录中追加一个字段值,用该字段值当做版本。当最先提交者提交后,会自动将版本字段值提升,这样其他用户提交,会发现版本低于数据库记录目前版本,因此抛出异常提示失败。    特点:允许用户同时处理,但只能有一个成功,其他失败,以异常方式提示。SSH工作流程       a.启动服务器,加载工程以及web.xml.           (实例化Lisener,Filter等组件,将Spring容器和Struts2控制创建)       b.客户端发送请求,所有请求进入Struts2控制器。控制器根据请求类型不同,分别处理。           (action请求,*.action会进入struts.xml寻找<action>配置.            其他请求,*.jsp会直接调用请求资源,生成响应信息)       c.Struts2控制器根据<action>配置调用一个Action对象处理。         整合方法一:将Action交给Spring容器          (Action对象由struts2-spring-plugin.jar插件提供的                      StrutsSpringObjectFactory负责去Spring容器获取)         整合方法二:将Action置于Spring容器之外          (Action对象由struts2-spring-plugin.jar插件提供的                      StrutsSpringObjectFactory负责创建,然后到Spring容器中寻找与Action属性匹配的Bean对象,给Action对象注入。(默认采用名称匹配规则)       d.Struts2控制器执行defaultStack拦截器、Action对象、Result等组件处理.       e.执行Action的execute业务方法时,如果使用Service或DAO采用Spring的IoC机制调用。       f.执行Result生成响应信息,执行后续拦截器处理       g.将响应信息输出。
  • 敏捷项目管理基础笔记分享
    1.敏捷项目管理基础1.1 项目管理和迭代开发方式项目的定义:一系列活动,有一个明确的目标或目的,并且必须在特定的时间和预算内依据规范完成项目管理:运用技能,方法与工具,为满足或超越项目有关各方对项目的要求与期望,所开展的各种计划,组织,领导控制等方面的活动。项目的三角:范围:要求做什么,也规定了不能做什么时间:必须完成的时间框架或最后期限成本:可用于项目的费用质量:产品的质量:项目的可交付成果的质量过程的质量:项目管理过程本身的质量项目管理的目的:在有限的资源投入条件下,在要求的时间内完成既定的项目目标。迭代开发模式      迭代式开发也被称作迭代增量式开发或迭代进化式开发,是一种与传统的瀑布式开发相反的软件开发过程,它弥补了传统开发方式中的一些弱点,具有更高的成功率和生产率。      在迭代式开发方法中,整个开发工作被组织为一系列的短小的、固定长度的小项目,被称为一系列的迭代。      每次迭代都包括了定义、需求分析、设计、实现与测试。采用这种方法,开发工作可以在需求被完整地确定之前启动,并在一次迭代中完成 系统的一部分功能或业务逻辑的开发工作。再通过客户的反馈来细化需求,并开始新一轮的迭代。1.2 Scrum方法——3 3 3 53个理论支柱:-高透明性(Transparency)- 检查(Inspection)-适应(Adaptation)3个工件:-产品待办列表-迭代待办列表-潜在可交付的产品增量3个角色:-产品负责人Product Owner-Scrum Master-开发团队5个事件:-迭代计划会议                 -迭代-迭代评审会议                 -每日立会-迭代回顾会议1.3 KANBAN方法看板:一种可视化流程管理系统三个原则:可视化,限制在制品,管理流动五个核心实践:可视化工作流(价值流):工作流程,由各种工作项构成限制在制品数量:工作项在本状态数量的上限,取决与整体团队的能力度量与管理流动:让价值流动起来,方法:累计流量图协同改进:整个团队一起合作显示化流程规则:不同状态转换的规则Scrum方法还是KANBAN方法都是为了顺畅,高质量地交付有用的价值大家可以在华为云DevCloud平台中体验:cid:link_01.4 风险管理四个阶段:1.风险识别2.风险分析3.风险应对计划4.风险监控和控制
  • [技术干货] 文件系统 :存储介质、原理与架构【转】
    前言从系统角度来看,文件系统是对文件存储器空间进行组织、分配、负责文件存储并对存入的文件进行保护和检索的一个系统。它的目的是使用户和应用程序能够方便地管理存储器上的文件和目录,比如常见的对文件的增、删、改、查。每当我们操作一个文件的时候,实际都会涉及到存储器、管理系统、被管理文件,还有就是实施文件管理所需的数据结构。存储器,我们也叫存储介质,也就是电子设备用来存储数据信息的器件。(一)存储介质介绍存储介质,也就是用来存储信息的介质,从远古的石壁刻画,到古代的笔墨纸砚记录,再到电气时代的磁存储、光存储、半导体芯片存储。光盘存储已近逐渐地退出大众的视野,我们这里主要介绍磁存储和半导体存储。磁存储的代表就是机械硬盘,半导体存储已近被非常广泛地应用了,比如我们常用的U盘、SD卡、TF卡、固态硬盘等。机械硬盘因为它容量大、价格低,在个人电脑中广泛使用,固态存储速度快,功耗低,无噪音,同等容量的价格也比较的平民,在各种便携式存储设备中广泛使用。(二)固态存储固态存储,也就是不依赖机械传动,直接使用半导体芯片为介质的一种存储。大的分类可以分为两种: RAM和ROM。Flash其实也算是ROM的一种变种,现在广泛使用的 ROM 大部分都是基于Flash设计的。大部分固态硬盘的存储介质也是Flash。(1)RAM与ROMRAM(随机访问存储器):是一种临时存储器,用于保存正在运行时所需的数据和程序,可读可写,允许在需要时快速读取或写入数据,但它也是易失性存储器,设备断电时里面的数据会丢失。ROM(只读存储器) :用于存储固定的、不经常变化的数据和程序,它是只读的,通常在制造时被写入,并且其内容在正常操作期间不可更改。但它存在一些变种,如可擦写可编程只读存储器(EPROM)和闪存(Flash),它们允许有限次的可编程操作。Flash存储器 :它是一种非易失性存储技术,广泛用于各种电子设备、USB、固态硬盘等产品。它分为NOR Flash 和NAND Flash 两种(2) NOR Flash它采用 NOR(不或非)门结构,与NAND Flash相比,NOR Flash具有一些特定的特性和优势:读取速度快随机访问能力适用于代码存储写入擦除速度较慢低功耗NOR门结构NOR Flash, NOR就是“非或”的意思NOR门是由两个输入端(A和B)和一个输出端组成的。其输出取决于输入信号的状态,具体逻辑运算规则如下:输出为高电平(1)的条件:只有当A和B都为低电平(0)时,NOR门的输出才为高电平。输出为低电平(0)的条件:如果A或B中至少有一个为高电平,NOR门的输出就会是低电平。NOR门的逻辑运算符号通常用符号“+”表示,其输出(Y)可以表示为:Y = A + B(其中,“+”表示逻辑或运算)。NOR门的逻辑符号如下所示:(3) NAND FlashNAND Flash采用NAND门结构,与NOR Flash相比,它具有一些独特的特点和优势。高密度存储相对低成本擦写熟读快适用于大容量数据存储顺序访问NAND门结构:NAND门由两个输入端(A和B)和一个输出端组成。其输出取决于输入信号的状态,具体逻辑运算规则如下:输出为高电平(1)的条件:当A和B都为高电平时,NAND门的输出为低电平(0)。输出为低电平(0)的条件:只有当A和B中至少有一个为低电平时,NAND门的输出才为高电平。NAND门的逻辑运算符号通常用“⊼”(或称“AND非”)表示,其输出(Y)可以表示为:Y = A ⊼ B(其中,“⊼”表示逻辑AND非运算)。NAND门的逻辑符号如下所示:----- A --| | | NAND|---- Y B --| | -----(4)基于Flash的应用嵌入式设备中的应用在嵌入式设备,一般是直接使用Flash存储器来存储程序和代码,按总线类型,可以分为串行和并行总线接口,在嵌入式设备中使用的比较多的是SPI串行总线。比如常用来存储程序的SPI NOR Flash: PY25Q128HA、MX25L51245G、FM25Q128A、EN25QH128A、BY25Q128AS它的特点是容量较小,可以随机访问。组合应用我们日常生活中使用到的固态存储器,比如U盘、SD卡、TF卡、固态硬盘等,它里面除了Flash存储芯片外,还有主控芯片、DDR内存、接口、PCB电路板。Flash存储芯片:是主要的存储介质,通常采用NAND型闪存。主控芯片:是固态硬盘的核心控制单元,负责管理数据的读写、错误校正、垃圾回收和性能优化等任务。DDR(双数据速率缓存):用于缓存数据和提高读写速度接口:决定了存储设备与主板之间的数据传输速度和通信方式PCB电路板:提供了这些组件之间的电气连接下面是一个固态硬盘的内部器件,其它的固态存储设备也类似。我们日常使用到的固态存储设备,比如TF卡、SD卡、U盘等,一般内部使用的都是NAND flash,它的优点是:存储密度高、改写速度快,同等容量下价格相对比较便宜。(三)固态存储架构体系(1)NAND flash 特性我们在上面看到一块固态硬盘内部包括了主控芯片、DDR内存、接口、PCB电路板,为啥需要这么复杂?为什么不能直接操作Flash芯片呢?主要原因是跟NAND flash 的特性有关系。NAND flash 有些独特的物理组成和使用特性:(a)写入的最小单元是页:NAND Flash 存储器的最小可编程单元是页。每次写入操作都需要覆盖整个页,而不能仅修改其中的一小部分。这使得写入操作的最小单元限定在一页的大小,即使只有一页中的一小部分数据需要更新,整个页也需要被写入。(b)擦除的最小单元是块:NAND Flash 存储器的最小可擦除单元是块。在擦除之前,需要将整个块的数据读取出来,修改后的数据写回。由于擦除操作是比较慢且磨损较大的操作,为了降低擦除的频率,设计选择以页为单位进行写入,而不是以块为单位。典型的页大小为2KB、4KB或8KB,常见的块大小为64页或128页。(c)擦写次数有限制每个块都有一个有限的擦写寿命,即可以执行的擦写次数是有限的。频繁地在原地更新数据可能导致某些块更快达到擦写寿命上限,进而影响整个NAND Flash的寿命。因此,设计者更倾向于采用写入新页并擦除旧块的策略,以减少擦写次数的集中发生。(d)随机位翻转NAND Flash芯片中会因为自然放电、电场噪声、辐射等原因出现随机位翻转的现象,导致存储的数据位发生不可预测的变化。(2)flash FTL因为 nand flash 有擦写次数的限制、有随机位翻转的问题、还有写入和擦除大小不一致的限制,现有针对机械磁盘设计的文件系统是不能直接应用在Flash上的,需要借助一个特殊的软件层——闪存转换层(FTL),来屏蔽闪存的底层差异,使上层系统可以透明地使用闪存。相应的,固态存储的软件架构也要复杂很多。(3)地址映射FTL 中的地址映射确保上层文件系统可以使用逻辑块地址,而不用担心 NAND Flash 存储器的底层细节。这种映射关系的管理是 FTL 在保障 NAND Flash 数据稳定性、提高寿命以及提供高效读写的关键功能之一逻辑块地址(LBA):这是上层文件系统使用的块地址,通常是顺序递增的逻辑块编号。应用程序或文件系统将数据按逻辑块地址组织,而不需要关心底层 NAND Flash 存储的特性。物理块地址:这是 NAND Flash 存储器中实际的物理块的地址。由于 NAND Flash 进行擦写时只能对整个块进行,FTL 负责将逻辑块地址映射到物理块地址,并处理擦写时的块移动操作。映射表:FTL 维护一个映射表,记录逻辑块地址到物理块地址的映射关系。这个映射表通常存储在 Flash 存储器的特殊区域,如页或块中。写入时的地址映射:当应用程序向 NAND Flash 写入数据时,FTL 将逻辑块地址映射到一个可用的物理块。如果该物理块已经被写入过数据,FTL 需要擦除该物理块,将其标记为可用,并将新数据写入。这一过程需要更新映射表。擦除时的块移动:由于 NAND Flash 存储器的特性,每次擦写操作都会引发整个块的擦除。当需要擦除一个物理块时,FTL 需要将该块中的有效数据移动到其他块,然后标记该块为可用。这一过程同样需要更新映射表。(4)垃圾回收为什么会产生垃圾?(a)不可原位更新:当需要更新NAND Flash中的数据时,无法直接在原地进行更新。相反,新的数据必须写入一个新的空白页中,而原有的数据所在的页则被标记为无效。这导致存储器中同时存在有效和无效的数据,即产生了垃圾。(b)擦写操作的不可细粒度:NAND Flash的最小擦除单位是一个块,而最小写入单位是一页。如果需要更新某个页面的数据,整个块都需要被擦除,然后将更新后的数据写入。由于擦写和写入的单位不同,更新操作可能会导致未更改的数据也被重新写入,形成了垃圾。(c)擦除前数据的标记:当需要删除数据时,NAND Flash通常会将相应的页标记为无效,而不是立即擦除。这样,数据被删除后,原来的页仍然存在,但被标记为无效状态,形成了垃圾。(d)写入放大:写入放大是指为了写入少量数据而触发的大量物理写入。由于不可原位更新和擦写操作的不可细粒度,写入操作可能导致更多的物理页被写入,从而增加了实际写入量,也增加了垃圾的产生。这些因素共同作用,导致NAND Flash中垃圾的产生。为了解决这个问题,存储系统采用垃圾回收机制,定期清理无效的数据,擦除无效块,以便重新利用存储空间,并最大程度地减少擦写次数,延长NAND Flash的寿命。垃圾回收的一般流程:标记无效页选择目标块数据迁移擦除目标块更新元数据(5)坏块管理为什么会产生坏块?(a)擦写次数限制:NAND Flash的每个块都有一个有限的擦写寿命,即可以执行的擦写次数是有限的。当某个块达到了其擦写寿命上限,该块就会被标记为坏块,不再可用。这是由于擦写操作引起的物理损耗。(b)随机位翻转:存储器单元可能受到环境中的辐射、电场噪声或其他干扰,导致数据位发生随机翻转。当这种情况发生在存储器中的某个块时,该块可能变成坏块,因为存储的数据无法正确读取。(c)存储介质的不稳定性:NAND Flash使用的存储介质(通常是浮栅)可能因为制造过程或质量问题而导致某些块不稳定。这种不稳定性可能导致块的性能下降,或者在使用中产生坏块。(d)擦写时的错误:在擦写操作中,由于电压不稳定、温度变化或其他因素,可能发生错误。这些错误可能导致擦写操作未能正确完成,从而使得块成为坏块。(e)制造过程中的缺陷:制造过程中可能存在一些缺陷,导致某些块在生产阶段就不完整或有问题。这些块可能在设备制造过程中被标记为坏块。坏块管理的一般流程(a)坏块检测:初始化阶段:在系统初始化时,进行坏块检测。这包括检查 NAND Flash 存储器中是否存在已经标记为坏块的块。运行时检测:在系统运行时,定期或在需要时进行坏块检测。这可以通过读取存储器中的坏块表或直接尝试读取每个块的方式来实现。(b)坏块标记:如果检测到坏块,将其标记为坏块。这可以通过在坏块表中记录坏块的位置或使用其他元数据方式来实现。(c)坏块替代:一旦坏块被检测并标记,系统需要寻找可替代的块。这通常包括从备用块池中选择一个可用的块来替代坏块。备用块通常是在 NAND Flash 设备制造时预留的。(d)更新坏块表:如果替代块被选择,需要更新坏块表,将新块的位置标记为有效块。这确保了系统在后续操作中不会再使用已标记为坏块的块。(e)数据迁移:如果坏块替代发生在运行时,系统可能需要将原始块中的有效数据迁移到替代块中,以确保数据的完整性和可靠性。(6)损耗均匀(磨损平衡)磨损均衡是为了最大程度地平衡 NAND Flash 存储器中擦写寿命的消耗,从而提高存储器的性能、可靠性和寿命。磨损均衡的策略一般有:(a)块循环使用:块循环使用是最简单的磨损均衡策略之一。它通过轮流使用存储器中的块,而不是过度依赖于特定的块。这有助于分散擦写操作,减轻存储单元的磨损。(b)Wear Leveling(磨损均衡)算法:Wear Leveling 算法是一种专门设计的算法,旨在在整个存储器中均匀分配擦写操作。这种算法考虑每个块的使用情况,优化写入和擦除操作的分布,以降低存储单元的不均匀磨损。常见的 Wear Leveling 算法包括静态均衡和动态均衡算法。(c)动态坏块管理:动态监测并管理坏块,确保它们不会集中在特定区域。当检测到新的坏块时,系统可以调整块的分布,以确保损耗均匀。(d)块交换:进行块交换,将频繁写入的块与很少写入的块进行交换。这有助于平衡擦写操作,减缓块的磨损。块交换可以是静态的,也可以是动态的,根据系统的需要进行调整。(e)备用块池的合理使用:在 NAND Flash 制造时,通常会预留一些备用块。合理使用备用块池,确保块的磨损相对均匀。(f)周期性的擦除操作:定期执行擦除操作,即使块中没有无效页。这有助于重置块的状态,减小块的磨损程度。(7)为什么手机越用越卡手机越用越卡,除了器件的老化问题之外,还有一个原因就是存储设备里面的数据接近存储卡容量,导致存储设备写数据变慢了。为什么容量满了就会变慢了呢?这主要与写放大和垃圾回收有关系。假设要写入一个4KB的数据,但已经没有干净空间了,只有失效的数据可以擦除,所以主控就把所有的数据读取到缓存存,然后擦除一个块,再加上这个4KB新数据写回去,这就造成了写入放大,本来是需要写4K的数据,却写入了512K的数据,也就是128倍放大。上面只是个假设,实际有垃圾回收策略的接入,不会是128倍这么大。下面是IBM Zurich Research Laboratory做的研究,实际证明写放大与空闲净块关系极大上图可以看出,空闲块少后,写放大可以到达3~4倍(四)机械硬盘尽管固态存储设备发展迅猛,但传统的机械硬盘存储还是有很大的市场占有量,因为它数据稳定,同等价格下,存储容量更大。(1)外部结构我们从外部看,一个机械硬盘上有:主控芯片、高速缓存、电源接口、主从设置电路、数据接口、控制电路板。主控芯片:是机械硬盘的核心控制器,负责管理硬盘的整体操作。它控制数据的读写、定位磁头、管理电机旋转等。高速缓存:是一块用于临时存储数据的内存。它能够提高读取和写入数据的效率,尤其在处理频繁访问的数据时。电源接口: 为硬盘提供电力主从设置电路: 用于配置硬盘在IDE链路上的身份。数据接口:用于与主板或控制器通信的接口(2)内部结构机械硬盘的内部结构主要有:磁头组件、盘片、主轴组件、电机、接口等磁头组件: 负责在盘片上读取和写入数据。它是机械硬盘中的核心组件之一,通过悬浮在盘片表面上并移动,实现对数据的访问。盘片: 是机械硬盘内的磁性圆盘,数据存储在其表面上。硬盘通常包含多个盘片,它们叠放在主轴上。主轴组件: 包含主轴电机,负责旋转盘片。盘片通过主轴组件旋转,磁头组件通过它来读取和写入数据。电机:提供硬盘所需的动力,主要包括驱动主轴组件的主轴电机和控制磁头的定位电机。(3) 盘面、磁道、柱面与扇区我们用一张唱片的盘面来类比硬盘的的盘面,可以看到上面有明显的盘面、磁道、柱面,机械硬盘的内部盘面也类似。盘面(Platter):盘面是硬盘内部的物理圆盘,通常由非磁性材料制成,表面涂有可磁化的材料,用于存储数据。一个硬盘通常包含多个盘面,它们叠在一起并通过主轴电机旋转磁道(Track):磁道是盘面上的一个圆形路径,从盘片的中心延伸到边缘。数据在硬盘上以磁道的形式存储一个盘面上通常有多个同心圆状的磁道,每个磁道上的数据可以被磁头读取或写入柱面(Cylinder)柱面是多个盘面上相同磁道的集合,它们在垂直方向上对齐,构成一个立体的数据存储结构通过沿着同一柱面的不同盘面上的磁道进行读写,可以提高数据的访问效率扇区(Sector):扇区是磁道上的一个小块,是硬盘中最小的数据存储单元。数据按磁道和扇区的组合方式进行存储。一个磁道上通常被划分成多个扇区,每个扇区可以存储一定容量的数据,通常是512字节或4K字节(4)机械硬盘工作原理1. 盘片旋转:机械硬盘内部有多个盘片,这些盘片通过主轴组件旋转。主轴电机提供动力,使得盘片以高速旋转,通常以每分钟转数(RPM)来度量。2. 数据的磁性存储:每个盘片的表面被分成许多磁道和扇区。数据以磁性的形式存储在这些磁道和扇区上。磁道是圆形的环,而扇区是磁道上的一个小片段。3. 磁头的运动:机械硬盘中有多个磁头,每个磁头对应一个盘片的表面。磁头悬浮在盘片表面上,可以通过机械臂的运动进行定位。机械臂负责将磁头移动到指定的磁道上,以读取或写入数据。磁头的精确定位是机械硬盘关键的技术之一。4. 读写数据:当需要读取数据时,控制电路会指示磁头移动到特定的磁道上,并从磁盘上的扇区读取磁性信息。这些信息会被转换为电信号,传递到计算机系统进行处理。当需要写入数据时,磁头会根据指令移动到指定位置,然后将电信号转换为磁性信息,写入到磁盘的相应扇区。(5)寻址模式CHS寻址模式(Cylinder-Head-Sector)在CHS寻址模式中,数据的物理位置由柱面(Cylinder)、磁头(Head)和扇区(Sector)三个参数确定计算机使用上面参数来指定硬盘上的数据位置,每个柱面上的磁道由多个扇区组成,磁头负责在柱面上移动,读取或写入指定磁道的指定扇区这种寻址方式已经逐渐过时,因为它在处理大容量硬盘时存在限制,难以管理大量柱面、磁头和扇区的信息逻辑块地址(LBA)寻址模式LBA是一种更为直观和简化的寻址方式在LBA寻址模式中,硬盘被视为一个线性的地址空间,每个扇区都有一个唯一的逻辑编号计算机系统直接使用这个逻辑块地址来访问硬盘上的数据,而无需考虑具体的物理位置LBA寻址模式对于大容量硬盘和简化操作系统的数据管理来说更为方便,因为它不涉及复杂的CHS参数现代计算机系统几乎都使用LBA寻址模式,这种方式提供了更高的灵活性和可扩展性,同时简化了硬盘管理(五)分区格式化我们买的U盘、SD卡等存储设备,一般我们买回来就可以直接使用,并不需要做什么分区格式化。那是因为在设备出厂之前,厂家已经预先做了这些工作。一个存储设备在出厂之前,一般都是需要做:低级格式化选择分区方式建立分区格式化详细的分区格式化我们在下一章在介绍。结尾计划将文件系统相关的知识点整理输出成一个系列的文章:存储介质介绍、分区格式化、系统启动、FAT系列文件系统、ext系列文件系统、NTFS文件系统、嵌入式文件系统、文件IO等
  • 【话题交流】大家都知道哪些存储服务
    华为云都提供有许多的存储服务,看看大家讨论讨论都知道有哪些存储服务
  • 存储服务2024.1月干货/资讯合集
    技术文章实现MQTT消息的存储和检索https://bbs.huaweicloud.com/forum/thread-0257141284298301008-1-1.html华为存储电力大数据知识点https://bbs.huaweicloud.com/forum/thread-0222141316567324011-1-1.html相对Wi-Fi 5,华为Wi-Fi 6的优势有哪些https://bbs.huaweicloud.com/forum/thread-0282141318035318007-1-1.html华为输变电通信网知识点https://bbs.huaweicloud.com/forum/thread-0222141318365754013-1-1.html华为IP骨干网方案的主要优势https://bbs.huaweicloud.com/forum/thread-0222141318614074016-1-1.htmlAJAX开发小知识https://bbs.huaweicloud.com/forum/thread-0296141900925615012-1-1.htmlMVC小知识https://bbs.huaweicloud.com/forum/thread-0296141900971033013-1-1.htmlMySql和Oracle数据库的区别总结一览https://bbs.huaweicloud.com/forum/thread-0231141901041116025-1-1.htmlHibernate笔记分享https://bbs.huaweicloud.com/forum/thread-0224141901103428014-1-1.htmlMX记录优先级笔记分享https://bbs.huaweicloud.com/forum/thread-0267141901446132025-1-1.html资讯合集资讯|以务实重行创生态新篇,华为云生态大会2024领航数智新开局https://bbs.huaweicloud.com/forum/thread-0202141908777958019-1-1.html资讯|【云享问答】第6期:如何筑造数据安全边界?https://bbs.huaweicloud.com/forum/thread-02112141908854079020-1-1.html资讯|金融级分布式数据库,增长和创新指数双第一!https://bbs.huaweicloud.com/forum/thread-0202141908981075020-1-1.html资讯|华为云GaussDB,助力企业数字化高质量发展https://bbs.huaweicloud.com/forum/thread-0267141909095449027-1-1.html资讯|华为云应用平台运维中心:一站式智能运维,为企业应用稳定性保驾护航https://bbs.huaweicloud.com/forum/thread-0271141909397805001-1-1.html
  • 资讯|华为云应用平台运维中心:一站式智能运维,为企业应用稳定性保驾护航
    近日,由中国信息通信研究院、中国通信标准化协会主办的2023系统稳定性与精益软件工程大会在京隆重举行,在云服务稳定性保障技术专场暨稳定性保障实验室年会上,华为云aPaaS应用平台AppStage运维中心专家受邀发表了“云原生时代如何构建应用稳定性”的演讲,分享华为云应用平台AppStage运维中心在如何应对云原生应用运维挑战及保障应用稳定性上做出的探索和实践。云原生时代应用运维模式从传统的以资源管理为核心,升级为以应用管理为核心,原有运维方式面临着多方面的挑战:业务软件快速迭代、运维工具林立、业务快速发展与应用高稳定性要求存在矛盾。为应对云原生时代运维挑战而生的华为云应用平台AppStage运维中心,围绕云原生的业务场景,构建了4大能力:基于智能运维AIOps,实现无人值守变更。通过Everything as a Code (XaC)声明,华为云应用平台AppStage运维中心将变更的评审、执行和验证等步骤自动化,避免人因失误,缩短变更过程中的步骤和操作时间,实现无人值守变更,帮助企业提升了运维效率;通过端、管、边、云的联动监控,实现故障生命周期智能化管理。华为云应用平台AppStage运维中心通过端、管、边、云的联动监控,让指标、日志、调用链全栈可观测,打通了数据孤岛。在端侧告警后,通过AI异常检测算法及AI根因诊断等能力,实现1分钟发现、5分钟定位、10分钟恢复,大大降低了故障恢复时间,提升了业务质量;通过混沌工程故障注入,充分验证应用可靠性。华为云应用平台AppStage运维中心支持80多种故障注入方式,预定义了50多种故障演练场景,通过模拟各种故障、全自动化演练,使业务对故障具备免疫能力,提升了业务的稳定性;FinOps运维成本可视化,帮助企业降本增效。华为云应用平台AppStage运维中心通过将AIOps的灰度评估、告警归并、异常检测、故障根因诊断等能力,嵌入运维的各个活动中,将以前的被动运维转为主动运维,帮助企业优化资源利用,实现降本增效。华为云应用平台AppStage运维中心将华为内部沉淀多年的构建、管理、使用和维护大规模云原生应用的经验构建到平台上来,通过平台化的开放,让更多的能力、经验共享出来,实现向产业‘经验即服务’的能力复制。以往需要大量工作的可靠性、韧性、安全等基础的工程能力,都通过平台提供,让企业可以聚焦于业务代码。转自华为云开发者联盟
  • 资讯|华为云GaussDB,助力企业数字化高质量发展
    2024年1月16日,以“聚焦数智融合 驱动生态创新”为主题的2023(第三届)数字经济领航者大会暨2023创新影响力年会在北京顺利举行。本次活动总结了2023年度数字经济领域的创新成果及下一年的科技趋势和方向,分享了最成功的技术、产品、解决方案、成功案例,以此推动行业数字经济发展新格局。活动盛典上,华为云GaussDB凭借产品优异的性能获得“2023年度国产云数据库应用推荐优秀产品奖”。同时,华为云数据库服务产品部总经理苏光牛作为特邀嘉宾,发表了《华为云GaussDB助力企业数字化高质量发展》的主题演讲,通过对中国行业数字化应用的全面分析,围绕华为云GaussDB“五高两易”的核心技术,引领行业数字化转型。坚持自主创新打造承载企业关键业务负载的数据库GaussDB是华为基于20余年战略投入的新一代分布式数据库,核心代码完全自主创新,拥有高可用、高安全、高性能、高弹性、高智能、易部署、易迁移的技术特性,是当前国内唯一能够做到软硬协同、全栈自主的数据库品牌。打造全栈可信的数据库软件GaussDB基于华为软件工程全栈可信的框架,构建多层级测试防护网,保障GaussDB数据库端到端可信、安全、高质量。高可用,切换业务微感知GaussDB同城双集群方案实现了工商银行信贷5A级核心系统中业务的高可用。一致性、可靠性满足金融级要求,RPO=0,跨Region切换RTO < 120 秒,且100%实现了软硬件故障完全隔离;应用无损透明(ALT)主备切换时让用户在故障时对业务无感知。高性能,新一代存储引擎UstoreGaussDB打造的Ustore存储引擎,从数据库内核架构实现自主创新,确保了数据库的高性能和极低抖动,稳定度是国内其他数据库的6倍+;存储空间利用率提升了17%,降低企业成本。纯软全密态,保障全生命周期安全GaussDB提供了业界首个纯软件形态的全密态数据库,并且是国内唯一一个通过CC EAL4+源码级认证的数据库,标志着其设计和源代码达到了国际最高安全水平,相比业界同类产品性能领先35%以上,性能更优,保障数据全生命周期安全,实现SQL零改造。全栈智能运维GaussDB基于大模型平台和AI引擎,实现了SQL的全量全链路感知、分析及优化能力,以及基于覆盖全流程的监控、智能化诊断能力等,运维效率提升50%,在全栈监控、审计、运维指导方面为客户提供了更优体验。多形态,灵活部署GaussDB分布式架构在部署方式上有单分片、多分片两种灵活的部署方式。其中,单分片分布式对应用迁移更为友好,可满足绝大多数传统数据库的应用平滑迁移;单分片多租户适合小微应用,可限制跨租户间的资源占用和冲突;多分片分布式则支持超大规模及快速爆发的业务的分布式改造,最大支持256分片,1024节点,最大可存储4PB的海量数据。GaussDB轻量化部署形态,架构简单,可减少初期建设投资,与HCS标准方案体验基本保持一致,支持最大管理5000数据库节点,同时可被标准HCS管理面纳管,可长期演进。一站式解决方案,让客户迁移无忧一站式迁移解决方案“GaussDB+UGO+DRS”,让客户迁移无忧。其中,UGO用于应用迁移,完成数据库对象、语句自动转换和语句审核;DRS完成数据的迁移和校验,还可以用于后续数据库版本升级的数据同步等工作。其中,流量回放可以在业务上线前通过业务真实流量负载对业务进行验证,确保迁移的成功率。各大利器相结合,保障客户数据库迁移无忧。从金融到关键基础设施行业GaussDB成为客户第一选择GaussDB历经全球顶尖银行严苛场景的商用考验,获得行业的认可和市场的好评。根据金融信息化研究所的统计数据,59.8%的金融机构选择使用GaussDB。同时,Gartner发布的《Voice of the Customer for Cloud Database Management Systems, 2023》指出:华为云成为全球唯一获得云数据库管理系统“客户之选”的云厂商,客户满意和推荐度高达98%。目前,GaussDB在政策性银行、国有6大行中的5家,以及40余家股份制银行、城商农信、保险、证券客户实现规模落地,同时,也广泛应用于政务、电信、能源、交通等关键基础设施行业客户的核心业务系统中,全力支撑客户数字化转型升级。GaussDB是企业数字化转型、核心业务上云、分布式改造的可信之选。生态协同赋能行业做厚未来人才基础数据库的兴盛,离不开数据库的生态建设。在数据库产业生态方面,华为云GaussDB一直保持战略性投入,目前已有超100家合作伙伴加入到GaussDB生态体系,共推出了超300个联合解决方案,覆盖金融、政企办公等多个行业,以及数据库交付与服务、运维、工具、人才培养等方方面面;一直以来,GaussDB坚持做厚未来人才基础,累计培养2000多位合作伙伴数据库人才,并通过职业认证培训帮助10000多数据库人才实现职业生涯转型。在产教融合方面,华为云已与125所高校合作,开设超170门GaussDB数据库课程,累计培养4.5万未来数据库人才。在未来三年,华为云将新增5万名学生人才培养,保障行业人才供给。转自华为云开发者联盟
  • 资讯|金融级分布式数据库,增长和创新指数双第一!
    近日,沙利文联合头豹研究院发布《2023年中国金融级分布式数据库市场报告》报告显示,华为云GaussDB在2023年中国金融级分布式数据库市场综合竞争表现位居领导者象限在增长指数和创新指数皆排名第一在数据库等根技术的研发过程中,华为始终坚持走自主创新道路。历经20多年技术积累,并融入华为长期以来对企业服务的质量与可信规范,华为云推出了当前国内唯一能够做到软硬协同、全栈创新的分布式数据库GaussDB。目前,华为云GaussDB已成为金融、政务、交通等关键信息基础设施行业客户首选的数据库。华为云GaussDB核心代码100%自主创新,具备高可用、高安全、高性能、高弹性、高智能的技术优势。在数据库替换场景中,又具备易迁移,易部署的特性。基于上述核心优势,华为云正携手生态伙伴,在为全行业的自主创新进程贡献力量。华为云GaussDB不仅支撑了华为内部MetaERP系统和华为终端云等业务的稳定运行,同时服务于中国工商银行、中国邮政储蓄银行等国有大行的核心业务,以及陕西省财政厅、中海油、国家管网、国网陕西电力、首都公路发展集团等关键信息基础设施行业客户。在华为内部华为云GaussDB成功支撑华为公司新MetaERP系统全面上线,采购履行耗时缩短到15秒,端到端订单履行耗时缩短到9秒,历史峰值5倍压力下性能稳定不下降。实现业务需求快速响应、经营决策科学高效、应用数据安全可信。在金融领域华为云GaussDB助力邮储银行数字化升级。新一代个人业务分布式核心系统为6.5亿个人客户、4万+网点提供日均20亿笔、峰值6.7万笔/秒的交易处理能力。自2023年6月华为云正式发布新一代分布式数据库GaussDB以来,已有50多家金融机构选择了GaussDB。在财政领域广东省财政厅“非税收入收缴一体化平台”以华为云GaussDB为核心组件进行改造升级,新平台面向1.2亿公众用户,支持日均30万-100万笔交易量的能力,高效实现自主创新,成为数字财政建设的新范本。未来,华为云GaussDB将持续深耕技术创新,锤炼核心竞争力,支撑全行业数字化转型升级,并从中国市场走向全球市场,给世界一个更优选择。转自华为云开发者联盟
  • 资讯|【云享问答】第6期:如何筑造数据安全边界?
    当前AI技术的快速发展,大模型、大数据正在加速对海量多样化数据的应用。数据已经成为核心资产,而数据安全和隐私保护的重要性也日益凸显。数据脱敏作为数据安全管控体系的关键环节,能够有效地保护敏感数据的安全。为了满足开发者对于数据脱敏的需求,GaussDB(DWS) 动态脱敏功能应运而生。本期【云享问答】通过这10个问题,带你全方位了解GaussDB(DWS) 动态脱敏功能及效果。什么是数据脱敏?数据脱敏是通过屏蔽敏感数据来保护数据安全的一种方法。它可以将敏感数据变形,例如身份证号、手机号、客户姓名、邮箱地址等。数据脱敏分为静态数据脱敏和动态数据脱敏两种。GaussDB(DWS)提供列级别的数据脱敏(Dynamic Data Masking)功能,GaussDB (DWS)数据脱敏功能,基于SQL引擎既有的实现框架,在受限用户执行查询语句过程中,实现外部不感知的实时脱敏处理。数据脱敏能解决什么问题?数据脱敏能力对于用户具有多重重要价值。它不仅能够消除暴露个人敏感数据的风险,确保个人隐私安全,还能助力企业遵守CPRA、GDPR、HIPAA等隐私法规,避免因违规而引发的法律风险。同时,数据脱敏技术在处理数据时能够保持数据的一致性和可用性,确保脱敏后的数据依然能够支持业务运营和决策分析。此外,通过脱敏处理,还可以降低数据在高效共享过程中的风险,防止敏感信息被恶意利用,从而保护企业免受网络攻击和数据泄露的威胁。脱敏策略是什么?脱敏策略(Redaction Policy)在数据安全管理中扮演着至关重要的角色。脱敏策略是与数据库中表对象是一一对应的。一个完整的脱敏策略通常由三个关键部分组成:表对象、生效条件以及脱敏列与脱敏函数的对应关系。表对象指定了策略应用的数据库表。生效条件则是一个布尔表达式,它决定了何时应用脱敏规则。脱敏列与脱敏函数的对应是脱敏策略的核心。不同的字段根据其存储数据的特性和敏感性可以采用不同的脱敏函数。当且仅当生效条件为真时,查询语句才会触发敏感数据的脱敏,而脱敏过程是内置在SQL引擎内部实现的,对生成环境用户是透明不可见的,既保障了数据安全,又不干扰用户的数据访问。在实际开发过程中,数据脱敏怎么用?以DWS为例,在创建脱敏策略时,需要先确定受限制的用户角色,识别和梳理具体业务场景的敏感字段,然后确定脱敏列需要绑定的脱敏函数,最后构造策略创建的语句并执行,从而预制好脱敏策略。数据脱敏应用过程中,如何做到数据库内可算仅库外不可见?数据库内要求原始的敏感数据能够参与加工计算,仅在出库的时刻敏感数据才会被脱敏处理。例如投影列表达式、投影列函数、聚集函数、过滤条件、分组条件、子查询位置投影列表达式等,需要原敏感数据直接参与加工计算。在表查询、视图查询、COPY查询、GDS外表导出等场景触发时会进行数据脱敏。可算不可见功能有一个前置的条件,需要打开开关enable_redactcol_computable=on!。GaussDB(DWS)的动态脱敏功能是如何进行数据保护的?GaussDB(DWS)的动态脱敏引擎与底层系统紧密配合,高效、安全、可靠地处理数据。其直观的DDL语法界面,使用户能轻松配置、调整脱敏策略,灵活应对不同场景。系统不仅内置多种常见脱敏方法,还支持用户自定义脱敏函数,满足个性化需求。在保障数据安全的基础上,该引擎确保脱敏数据的高可用性,维持业务价值。同时,通过严格的权限和访问控制,仅授权用户可访问敏感数据,全面守护数据的安全与隐私。第三方脱敏工具多为外挂式,仅支持静态脱敏,无法实现实时动态处理。相比之下,GaussDB(DWS)的内置脱敏功能更加透明、高效。在GaussDB(DWS)中,如何快速配置和使用动态脱敏功能,并支持非固定格式的数据脱敏?GaussDB(DWS)提供DDL语法支持用户快速配置脱敏策略,使用无特殊要求,原SELECT语句即可触发。GaussDB(DWS)对于常规数据类型均支持,且提供用户自定义脱敏函数,可以对更多场景支持更灵活脱敏效果。GaussDB(DWS)是否支持跨数据表传递脱敏数据,传递过程中是否继承原脱敏策略?在GaussDB(DWS)的库内可算库外不可见场景下,由于参与数据运算的是原始数据,故DML语句执行过程,写入更新目标表都是原始数据去更新的,故需要引入脱敏策略继承机制,分析语句中子查询的脱敏信息,并继承到目标表中,此场景即涉及脱敏策略的继承。在应用GaussDB(DWS)过程中,如何保证数据脱敏的实时性?为了确保实时性,GaussDB(DWS)采用动态数据脱敏方式。动态数据脱敏,是指数据查询过程边输出边脱敏,策略定制的脱敏函数发生变化,查询的脱敏效果也实时更新。这就意味着DWS在数据查询过程中,数据会边输出边脱敏。这种并行交互的方式最大限度地减少了性能损失,使得实时性得以保证。根据提供的信息,性能劣化在10%以内是可以接受的。因此,各种场景下的实时性需求都能得到满足。针对不同的用户或角色,GaussDB(DWS)能否有不同的脱敏策略?GaussDB(DWS)数据脱敏含有三要素:脱敏策略应用的表对象、脱敏字段-脱敏函数对、脱敏生效条件,此三部分信息通过REDACTION POLICY语法承载。WHEN表达式子句可以传递生效条件,针对不同的用户或角色去判断。转自华为云开发者联盟
总条数:298 到第
上滑加载中