Navigation

    西南IT社区
    • Register
    • Login
    • Search
    • 主页
    • 问答
    • 话题
    • 热门
    • 圈子
    • 工作机会
    • 活动
    • 项目
    1. Home
    2. tarao616
    • Profile
    • Following 0
    • Followers 0
    • Topics 45
    • Posts 45
    • Best 0
    • Groups 0

    tarao616

    @tarao616

    0
    Reputation
    1
    Profile views
    45
    Posts
    0
    Followers
    0
    Following
    Joined Last Online

    tarao616 Follow

    Latest posts made by tarao616

    • Popup控件的主要属性

      Popup控件是从FrameworkElement直接继承⽽来的,属于⾮常⾼的层级,我们在使⽤中使⽤的最多的属性就是下⾯这些属性:
      PlacementTarget 表⽰Popup控件的放置的位。
      Popup表示具有内容的弹出窗口,其主要属性为:Child:获取或设置 Popup控件的内容。
      IsOpen:获取或设置一个值,该值指示Popup 是否可见。
      Placement:获取或设置 Popup 控件打开时的控件方向,并指定Popup 控件在与屏幕边界重叠时的控件行为。
      PlacementTarget:获取或设置当打开 Popup 控件时该控件相对于其放置的元素。PopupAnimation:获取或设置Popup 控件的打开和关闭动画。
      StaysOpen:获取或设置一个值,该值指示当 Popup 控件焦点不再对准时,是否关闭该控件。
      Popup主要事件为:Opened:当IsOpen 属性更改为 true 时发生。
      fcd2ca20-deee-4bf7-8684-11bc0709ee28-image.png

      posted in 技术答疑
      tarao616
      tarao616
    • 数据库技术

      01d0726a-0a2a-4acd-9952-d0f7a5db7ad0-image.png
       数据技术主要有InnoSQL和NTSDB,NTSDB是最近研发的新产品,预计明年将向外推荐此产品,InnoSQL属于MySQL分支方面的研究大概从2011年开始的,InnoSQL的主要目标是提供更好的性能以及高可用性,同时便于DBA的运维以及监控管理。
      8ef408d1-69d3-40a1-b51d-40d76eab63f2-image.png
       RocksDB是以树的形式组织数据的产品,MySQL有一个MyRocks产品,我们内部将其集成到InnoSQL分支上。这样做的原因是公司有很多业务,很多都是利用缓存保持其延迟,其规模会越来越大,这样就导致缓存、内存成本很高;其业务对延迟要求不是特别高,但要保持延迟稳定(小于50毫秒)。

       RocksDB能够很好地将缓存控制的很好,随着缓存越来越大,有的公司会将其放到HBase上,但是其延迟有时波动会很大,如小米HBase很强,但还是做了一个基于K-V模式的缓存处理,主要解决延迟波动问题。我们主要是基于开源产品来解决,如将RocksDB集成起来解决公司业务对延迟稳定的一些需求。

       InnoRocks由于是基于LSM,因此对写入支持非常好,后续有内部测试数据可以展示。还有就是LSM压缩比很高,网易一种是替换缓存,一种是普通数据库存储,目前还是用InnoDB存储,如果用InnoRocks存储会节省很多存储空间;还有一个就是结合DB做扩展,将其集成到公司内部。
      71aea032-d4cc-4aec-8aee-c783f116386b-image.png
       上图是写入对比,是一个普通的写入测试,其主介质是递增型的,对于两个都是一个顺序读写过程;如果要完全对比还要测试RFID写入测试,这样能够明显反应RocksDB和InnoDB的差距。图中RocksDB写入性能比InnoDB要好,读取性能InnoDB性能比RocksDB。300GB原始数据,分别导入到Inno DB(未压缩)和Inno Rocks后的存储容量对比,Inno DB为315GB左右,Inno Rocks为50 ~ 60GB,存储容量是Inno DB的20%到30%。

       InnoRock一般场景是替换InnoDB写入,因为其写入性能、压缩性能更好、成本也更低。另一方面能够解决InnoDB延迟不稳定,替换大量的缓存应用,只要其对相应时间没有特殊要求。

       大量数据写入场景,比如日志、订单等;需要高压缩以便存储更多的数据,Inno DB --> Inno Rocks;对写入延迟波动比较敏感,HBase --> Inno Rocks;相对较低的延迟要求(10 ~ 50ms)下替换缓存场景(延迟<5ms),节省内存成本, Redis --> Inno Rocks。
      433b2e37-45fb-40b3-8049-c2dd163498a9-image.png

      posted in 技术答疑
      tarao616
      tarao616
    • 订单机器状态机

      状态机是有限状态自动机的简称,是现实事物运行规则抽象而成的一个数学模型。
      有限状态机一般都有以下特点:
      第一:可以用状态来描述事物,并且任一时刻,事物总是处于一种状态;
      第二:事物拥有的状态总数是有限的。
      第三:通过触发事物的某些行为,可以导致事物从一种状态过渡到另一种状态;
      第四:事物状态变化是有规则的,A状态可以变换到B,B可以变换到C,A却不一定能变换到C;
      第五:同一种行为,可以将事物从多种状态变成同种状态,但是不能从同种状态变成多种状态。

      状态机这种描述客观世界的方式就是将事物抽象成若干状态,然后所有的事件和规则导致事物在这些状态中游走。最终使得事物“自圆其说”。很多通信协议的开发都必须用到状态机;一个健壮的状态机可以让你的程序,不论发生何种突发事件都不会突然进入一个不可预知的程序分支。
       
      状态机示例:
      503d598b-19ba-4126-b3d7-5ebde6f091a2-image.png
      信息系统是现实世界一种抽象和描述。而业务领域中那些已经发生的事件就是事实,信息系统就是将这些事实以信息的形式存储到数据库中,即:信息就是一组事实

      信息系统就是存储这些事实,对这些事实进行管理与追踪,进而起到提供提高工作效率的作用。
      信息系统就是记录已经发生的事实,信息系统中的状态机基本和事实匹配。即:标识某个事实的完成度。

      业务系统,根据实际业务,具体会有哪些发生的事实需要记录,基本这些事实就至少对应一个状态。需要记录的事实就是一种稳态,一种结果。

      posted in 技术答疑
      tarao616
      tarao616
    • 事务的一些操作

      事务的四个ACID特性:

      • 原子性(Atomicity):原子性即这个事务的任务要么全做了,要么全部没做,不能出现做一半这种情况。

      • 一致性Consistency:一致性即数据库中的数据必须满足数据满足数据库的约束。

      • 隔离性Isolation:即事务与事务之间相互不打扰,比如两个事务在实际过程中并不是原子的,两个事务中的语句是交替运行的,但是隔离性就是要保证两个事务之间状态转换不会互相影响。

      • 持久性Durability:就是一旦事务结束,就要将其保存到磁盘中防止丢失。

      • 事务的状态活跃的active:即事务正在运行其中的SQL语句。

      • 部分提交的partially commited:事务执行完成,但是其结果还在内存中保存着,没有刷新到磁盘中。

      • 提交的 commited : 结果成功刷新到磁盘,就从上面部分提交进入该状态。

      • 失败的 failed : 就是事务执行过程出现数据库或操作系统自身的错误,就导致了事务提交失败。中止

      • aborted : 就是事务提交失败,需要将已经修改的语句回滚到事务未执行以前。
        99093374-18eb-4273-a8d7-f2340f7e96fa-image.png

      posted in 技术答疑
      tarao616
      tarao616
    • MindSpore中的算子

        算子的调用是构建模型的基础,准确的找到能满足需求的算子并能正确的使用,可以有事半功倍的效果。本次就分享下MindSpore中算子的使用和遇到问题时的解决方法给大家。
      79d7c000-9c2e-4f3a-bcbe-c81022abe924-image.png
        一般情况下在自定义网络模型时会用到各种类型的算子,MindSpore中分为Primitive算子和nn算子,Primitive算子是开放给用户的最低阶算子接口,一个Primitive算子对应一个原语,它封装了底层的Ascend、GPU、AICPU、CPU等多种算子的具体实现,为用户提供基础算子能力。

        还可以继续分为计算算子和框架算子。计算算子主要负责具体的计算,而框架算子主要用于构图,自动微分等功能,都可以从mindspore.ops模块导入使用。同时mindspore.nn模块是对mindspore.ops模块的封装。所以在构建网络模型时建议使用mindspore.nn模块,优点是使用方便,当然如果想要探索更多算子的信息,建议使用mindspore.ops模块。
        需求大致可以分成两种,自定义网络模型时的算子需求和从第三方框架迁移模型时对标算子的需求。

        方法:在mindspore中,可以手动将embedding的padding_idx位置对应的权重初始化为0;并且在训练时通过mask的操作,过滤掉padding_idx位置对应的Loss。MindSpore中与Mask相关的算子有:nn.Dropout、RandomChoicWithMask、NMSWithMask。

        当然即使找到了符合需求的算子,并且单独运行时也没有问题,也不能够避免在加入到自己的项目代码中完全不报错。在算子使用中通常的报错原因是使用的MindSpore版本和参考的教程不一致、算子不支持目前的硬件环境以及传入的参数不符合算子要求,所以为了避免不必要的报错,下面给大家提供几个查看接口的正确姿势:
        根据自己安装的MindSpore版本查找对应版本的接口;第三方模型迁移时建议先通过API映射查找;查看算子是否支持自己的硬件平台以及内存大小;重点:到算子详情页查看参数和参数的类型。

      posted in 技术答疑
      tarao616
      tarao616
    • 计算机控制单元的功能

        控制单元是中央处理器(CPU)的子部件,它管理着计算机中所有在这一区域执行的操作。它负责从计算机、指令和数据中获取各种输入,并告诉处理器如何处理它们。由于CPU被认为是计算机的大脑,它有时被称为大脑中的大脑。根据CPU结构的不同,控制单元可能有不同的任务要执行。
      0a0c4b6b-e71f-4122-844e-233b1f8119af-image.png
        什么是指令周期、机器周期和时钟周期?三者有何关系?CPU每取出并执行一条指令所需的全部时间叫指令周期;
      c56eee58-214e-4613-b440-d7c82d91ac9f-image.png
        机器周期是在同步控制的机器中,执行指令周期中一步相对完整的操作(指令步)所需时间,通常安排机器周期长度等于主存周期;

        时钟周期是指计算机主时钟的周期时间,它是计算机运行时最基本的时序单位,对应完成一个微操作所需时间,通常时钟周期等于计算机主频的倒数。

        那么能不能说机器的主频越快,机器的速度就越快,为什么呢?正确的答案是不能说机器的主频越快,机器的速度就越快。原因是因为机器的速度不仅与主频有关,还与数据通路结构、时序分配方案、ALU运算能力、指令功能强弱等多种因素有关,要看综合效果。
      2bd770fe-b2f5-4822-bdaa-3dd227ff8f45-image.png

      posted in 技术答疑
      tarao616
      tarao616
    • 如何解构HE2E项目

      首先我们先来了解一下HE2E技术架构图:
      be854668-5e58-4671-8d64-fa7f2ada34df-image.png
      第一步:创建项目:在华为云DevCloud中创建项目时选择DevOps样例项目,即可创建出预置了代码仓库、编译构建、部署等任务的DevOps样例项目,此项目即HE2E项目。
      770458e5-bdec-4b7b-8eef-994759582607-image.png
      代码仓库,HE2E项目中预置了代码仓库phoenix-sample。
      在根目录下可以看到images、kompose、result、vote、worker五个文件夹,以及LICENSE、README.md和docker-compose-standalone、docker-compose两个yml文件。Images文件夹存了几张图片,LICENSE和README也与代码内容无关,docker-compose.yml文件是应用于本地开发时的测试文件。
      在进行代码解构时,对构建任务的部分内容已经进行过分析了,其中就包括如何通过指定Dockerfile文件制作镜像,即docker build(制作)的操作。除此之外,制作XX镜像并推送到SWR的步骤中还包括了推送镜像所需的信息。这里设置了推送区域、组织、镜像名字、镜像标签,其实就是我们进行docker tag(打标签)和docker push(推送)的操作。
      在vote、result、worker的镜像制作并推送的过程中,通过参数BUILDNUMBER定义镜像的版本号。BUILDNUMBER是系统预定义参数,随着构建日期及次数变化。
      worker镜像在制作之前,需要先对worker目录下的工程进行Maven构建,这样就会生成Dockerfile.j2中(制作镜像时)所需的target文件。

      posted in 极客生涯
      tarao616
      tarao616
    • 存储在计算器上的信息—数据

        自从计算机出现以来,我们一直在尝试寻找计算机存储一些信息的方法,存储在计算机上的信息(也称为数据)有多种形式,数据变得如此重要,以至于信息现在已成为触手可及的商品。多年来数据以多种方式存储在计算机中,包括数据库、blob存储和其他方法,为了进行有效的业务分析,必须对现代应用程序创建的数据进行处理和分析,并且产生的数据量非常巨大!有效地存储数PB数据并拥有必要的工具来查询它以便使用它至关重要,只有这样对该数据的分析才能产生有意义的结果。
        大数据是一门处理分析方法、有条不紊地从中提取信息或以其他方式处理对于典型数据处理应用程序软件而言过于庞大或复杂的数据量的方法的学科。为了处理现代应用程序产生的数据,大数据的应用是非常必要的,考虑到这一点,本文旨在提供一个关于如何创建数据湖的小教程,该数据湖从应用程序的数据库中读取任何更改并将其写入数据湖中的相关位置,我们将为此使用的工具如下:Debezium,MySQL数据库,Apache Kafka,Apache Hudi,Apache Spark等。
      我们将要构建的数据湖架构如下:
      0aa8c431-a4fa-4981-a667-95d091498b8a-image.png
        第一步是使用 Debezium 读取关系数据库中发生的所有更改,并将所有更改推送到 Kafka 集群。
        Debezium 是一个用于变更数据捕获的开源分布式平台,Debezium 可以指向任何关系数据库,并且它可以开始实时捕获任何数据更改,它非常快速且实用,由红帽维护。
        首先,我们将使用 docker-compose 在我们的机器上设置 Debezium、MySQL 和 Kafka,您也可以使用这些的独立安装,我们将使用 Debezium 提供给我们的 mysql 镜像,因为其中已经包含数据,在任何生产环境中都可以使用适当的 Kafka、MySQL 和 Debezium 集群。
        在创建容器后,我们将能够为 Kafka Connect 激活 Debezium 源连接器,我们将使用的数据格式是 Avro 数据格式,Avro 是在 Apache 的 Hadoop 项目中开发的面向行的远程过程调用和数据序列化框架。它使用 JSON 来定义数据类型和协议,并以紧凑的二进制格式序列化数据。
        Apache Hudi 是一个开源数据管理框架,用于简化增量数据处理和数据管道开发。 该框架更有效地管理数据生命周期等业务需求并提高数据质量。 Hudi 使您能够在基于云的数据湖上管理记录级别的数据,以简化更改数据捕获 (CDC) 和流式数据摄取,并帮助处理需要记录级别更新和删除的数据隐私用例。 Hudi 管理的数据集使用开放存储格式存储在云存储桶中,而与 Presto、Apache Hive 和/或 Apache Spark 的集成使用熟悉的工具提供近乎实时的更新数据访问Apache Spark 是用于大规模数据处理的开源统一分析引擎。 Spark 为具有隐式数据并行性和容错性的集群编程提供了一个接口。 Spark 代码库最初是在加州大学伯克利分校的 AMPLab 开发的,后来被捐赠给了 Apache 软件基金会,该基金会一直在维护它。

      posted in 极客生涯
      tarao616
      tarao616
    • Spring Cache缓存框架

        Spring内部支持的缓存,可实现无缝平滑迁移,无需修改业务逻辑。注解缓存的实现依赖于动态代理。
        大多数情况下使用的是注解版、少数情况下也能使用编程版。注解版与业务代码高度解藕,因其依托动态代理技术实现,使用场景上有一定的限制。编程版嵌入业务代码,代码顺序执行,无前置使用条件。
      92f1f7fe-1753-4ff4-91fa-5344b2553188-image.png

      • 核心概念:Spring有一个应用可以有多个缓存管理器,每个缓存管理器可以有多个缓存,每个缓存可以存储多条记录。
      • 缓存管理器:缓存的存储介质不同、缓存连接不同的数据库、缓存值序列化等由缓存管理器配置。缓存管理器有主次之分,默认情况下使用主(首要)缓存管理器。
        当服务内只有一个CacheManager时,默认使用此缓存管理器;当超过一个缓存管理器时,需要使用Primary注解指定默认缓存管理器。
      • 缓存:Cache是一组配置相同缓存的集合,可以理解为命名空间,Spring Cache体系下的缓存生命时间是以Cache为单位的,不支持以Key为单位设置生存时间。不同的业务对应不同的缓存配置,应在缓存处予以区分。

        CacheName应具有显著的业务区分度以及过期时间区分度,并且以全局常量的方式提供,采取集中化管理的方式,禁止采用魔术变量的方式指定CacheName。

      posted in 极客生涯
      tarao616
      tarao616
    • Apache Hudi介绍

        Apache Hudi 是一种变更数据捕获 (CDC) 工具,可在不同时间线将事务记录在表中。 Hudi 代表 Hadoop Upserts Deletes and Incrementals,是一个开源框架。 Hudi 提供 ACID 事务、可扩展的元数据处理,并统一流和批处理数据处理。
        以下流程图说明了该过程。 使用安装在 Apache Spark 上的 Hudi 将数据处理到 S3,并从 Vertica 外部表中读取 S3 中的数据更改。
      e3f91fef-320e-427e-a3d7-5ec558e2b3db-image.png
        环境准备:首先需要Apache Spark 环境。 使用具有 1 个 Master 和 3 个 Worker 的 4 节点集群进行了测试。 按照在多节点集群上设置 Apache Spark 中的说明安装 Spark 集群环境。 启动 Spark 多节点集群。
        Vertica 分析数据库。 使用 Vertica Enterprise 11.0.0 进行了测试。AWS S3 或 S3 兼容对象存储。 使用 MinIO 作为 S3 存储桶进行了测试。
        需要以下 jar 文件。将 jar 复制到 Spark 机器上任何需要的位置,将这些 jar 文件放在 /opt/spark/jars 中。

      posted in 极客生涯
      tarao616
      tarao616