mesh

技术科普丨服务发现和负载均衡的来龙去脉

社会主义新天地 提交于 2020-10-26 08:29:35
问题缘由 单机时代,传统软件大多是单体/巨石架构(Monolithic)。大家往一个代码仓库提交CODE,这会导致应用膨胀,难以理解和修改,以及扩展受限,无法按需伸缩等诸多问题。单体架构怎么解决多人合作的问题?模块化,对,按功能拆分,模块之间定义编程接口(API),彼此关心功能而不关心实现。 随着时代发展,单机程序遇到了计算力和存储的双重瓶颈,分布式架构应运而生。单体应用通过函数名(标识)便可轻松完成本地函数调用,在分布式系统中,服务(RPC/RESTful API)承担了类似的角色,但请求服务单靠服务名还不够,服务名只是服务能力(服务类型)的标识,还需要指示服务位于网络何处,而部署在云中的服务实例IP是动态分配的,扩缩容、失败和更新则让问题变得更加复杂,静态配置服务实例适应不了新变化,需要更精细化的服务治理能力,为了解决或者说简化这个问题, 服务发现作为一种基础能力被抽象和提供,它试图让请求网络服务像调用本地函数一样简单透明。 服务即功能(函数)。只是服务跟网络紧密联系在一起,所有才会出现网络服务这个名词,服务提供者通过网络发布服务,服务使用者通过网络请求服务,分布式系统突破了单机算力和存储的限制,提升了系统稳定性,使得高并发高可用的海量服务成为可能,但这也增加了软件复杂度,引入软件分层、负载均衡、微服务、服务发现/治理、分布式一致性等新的问题和挑战。 服务发现 服务分服务提供者

Python mayavi库及mayavi管线

心不动则不痛 提交于 2020-10-26 07:54:59
Mayavi库的基本元素 Mayavi库中主要有两大部分功能   一类是用于处理图形可视化和图形操作的mlab模块   一类是操作管线对象窗口对象的api mlab包含   绘图函数:实现已有的数据进行可视化显示,可以是numpy数组构建的,也可以是外部读取的,比如读取一个文件   图形控制函数:实质上是对mayavi中的figure进行控制,比如可以通过gcf获得当前视图的指针,也可以通过clf来清空当前图形,通过close关闭当前图形   图形修饰函数:对当前绘制的函数进行一定的修饰和装饰,比如说绘制完图形之后需要增加一个颜色标识栏   图形控制函数,其他函数和Mlab管线控制函数或者是对坐标轴增加相应的标签等,比如使用xlaber可以在x轴上增加相应的标签   相机控制函数:对相机的操作,比如说move函数来移动相机到某个位置上,使用pitch,roll,yaw函数控制相机进行旋转等   其他函数:     animate:生成一段动态的可视化效果     get_engine:获得当前管线的engine   Mlab管线控制:可以设置当前管线的数据源也可以为当前绘制管线增加数据集使用addataset等 Mayavi API   管线基础对象:可以通过这类函数获得Mayavi管线的各个基本对象   包括Scene,Source,Filter,ModuleManager

Cocos Creator 3D初体验

∥☆過路亽.° 提交于 2020-10-26 03:09:22
同步发布在Cocos论坛 Cocos Creator 3D初体验 官方文档 https://docs.cocos.com/creator3d/manual/zh/ 下载 https://www.cocos.com/creator3d 目前个人使用的版本是v1.1.1,官方已发布v1.2版本 整体的使用感受 UI界面的制作一如既往的便捷高效 对Cocos Creator 2D上手很友好 有自己的3D编辑器 材质系统非常的灵活 当前版本对2D游戏的支持不够完善 目前不太完善的地方 2D方面 不支持LabelAtlas,可以使用bmfont间接来实现 mask不支持图片作为模板 场景资源的自动释放不可用,可以通过一些特殊手段来释放内存 暂不支持动态合图 暂不支持spine、龙骨 3D方面 不支持动画分层,也就是不支持角色上下半身播放不同的动作。 v1.1.1阴影只支持平面阴影,也就是说阴影只能投到地上但无法投射到模型身上。v1.2阴影支持shadowMap但不是很完善。 v1.1.1不支持雾效,v1.2已支持。 暂不支持后处理(HDR、景深、泛光) 其他 暂不支持通过npm的方式引入代码库 帮助美术同学上手新引擎的相关文档 材质系统 https://docs.cocos.com/creator3d/manual/zh/material-system/overview.html

matlab练习程序(三种方法解最小二乘)

旧巷老猫 提交于 2020-10-24 17:04:01
解最小二乘的方法有很多,这里给出常见的三种方法实现。 一是一般方法, 之前博客 一般都用这种方法。 二是svd分解法,之前有用过svd(见 这里 , 这里 , 这里 和 这里 )解其他问题,但是没用来解过最小二乘。 三是qr分解法,这个好像没用过。 这里主要总结记录一下实现方法。 代码如下: clear all; close all; clc; a = 2 ;b= 2 ;c=- 3 ;d= 1 ;e= 2 ;f= 30 ; % 系数 [x,y] =meshgrid( 0 : 0.1 : 30 ); z =a*x.^ 2 +b*y.^ 2 +c*x.*y+d*x+e*y +f; % 原始模型 mesh(x,y,z) hold on; X = x(:); Y = y(:); Z = z(:); X =X( 1 : 100 : end ); Y =Y( 1 : 100 : end ); Z =Z( 1 : 100 : end ); plot3(X,Y,Z, ' ro ' ) XX =[X.^ 2 Y.^ 2 X.*Y X Y ones(length(X), 1 )]; YY = Z; % 一般方法 C1 =inv(XX ' *XX)*XX ' * YY; % svd分解法 Y =zeros( 6 , 1 ); [U,S,V] = svd(XX); B =U ' *YY; for i= 1

UE4 Shader编译以及变种实现

有些话、适合烂在心里 提交于 2020-10-24 16:59:13
一、动机 这篇文章主要是我对UE4中Shader编译过程以及变种的理解,了解这一块还是挺有必要的,毕竟动辄几千上万个Shader的编译在UE里简直是家常便饭。了解它底层的实现机制后内心踏实一点,如果要去修改,大方向也不会错。 这部分工作是我之前就做好的,文章里涉及内部修改的地方都被我阉割掉了。所以这篇文章主要用于知识普及,分享给广大被UE4中的Shader编译折磨的码农们,凑活着看,看完其实应该就了解了。 二、UE4中Shader的组织和获取 在讲具体的Shader编译过程时,先讲UE4的渲染过程,渲染过程中是怎么拿Shader的,最后再讲这些Shader是怎么生成的。 虚幻引擎中讲到线程主要有三个:游戏线程、渲染线程和RHI线程。 其中我们平时关心的比较多的就是游戏线程和渲染线程了,至于RHI线程偏向于底层硬件接口,是甚少关心的,一般情况下也很少有需要改动到RHI线程的东西。 1. 渲染线程 虚幻引擎在FEngineLoop::PreInit中对渲染线程进行初始化。 具体的位置是在StartRenderingThread函数里面,此时虚幻引擎主窗口是尚未被绘制出来的,渲染线程的启动位于StartRenderingThread函数里面,这个函数大概做了以下几件事: 1)通过FRunnableThread::Create函数创建渲染线程 2

[译]为任意网格计算tangent空间的基向量

∥☆過路亽.° 提交于 2020-10-24 14:43:18
+BIT祝威+悄悄在此留下版了个权的信息说: [译]为任意网格计算tangent空间的基向量 Computing Tangent Space Basis Vectors for an Arbitrary Mesh (Lengyel’s Method) Modern bump mapping (also known as normal mapping) requires that tangent plane basis vectors be calculated for each vertex in a mesh. This article presents the theory behind the computation of per-vertex tangent spaces for an arbitrary triangle mesh and provides source code that implements the proper mathematics. +BIT祝威+悄悄在此留下版了个权的信息说: 现代凹凸映射(也被称为法线映射)要求为网格中的每个顶点计算出其tangent平面基向量。本文描述了对任意三角形网格计算逐顶点tangent空间的数学理论,还提供了实现数学计算的源代码。 Mathematical Derivation 数学推导 [This

网格优化中,你遇到过哪些吃性能的设置?

£可爱£侵袭症+ 提交于 2020-10-24 04:06:44
节前,我们已经将【性能黑榜】上的Top10规则均做了详细的解读(可戳文末相关链接回顾)。 无论是大家在开发时的疏忽,还是相关知识点的缺失,这些问题的积累最终都会反映到项目的性能表现上。 为此,我们将这些规则曝光出来,并且以一个个知识点的形式逐一解读。 今天,我们来继续剖析 【UWA本地资源检测】 中和 网格设置 相关的规则: “包含Color属性的网格”,“未开启OptimizeMesh选项的网格”,“包含Tangent属性的网格”和“包含uv3或uv4属性的网格”。 我们将力图以浅显易懂的表达,让职场萌新或优化萌新深入理解。 1、包含Color属性的网格 在一些建模软件中导出的模型可能会带有顶点的颜色属性,在Unity中即表现为Mesh的Colors属性。有些Shader可以使用这个属性进行运算与着色,如Sprites Shader。然而大多数Shader都选择忽略Colors属性(Unity标准着色器就不使用这个属性)。在这种情况下,如果Mesh带有Colors属性,那么对其本身而言没有实际意义,却会对内存、物理体积和加载性能造成影响。 所以本条规则会针对Mesh的Colors属性进行检测,以供开发团队根据实际使用需求去除不必要的Colors属性。 在此大家可以参考一下UWA问答中一位热心朋友提供的批量去除网格color属性的工具: https://answer.uwa4d

国货之光业务增长背后的技术支持

跟風遠走 提交于 2020-10-21 02:27:36
“使用 ACK 容器服务可以帮助我们快速拉起测试环境,利用 PTS 即时高并发流量压测确认系统水位,结合 ARMS 监控,诊断压测过程中的性能瓶颈,最后通过 AHAS 对突发流量和意外场景进行实时限流降级,加上阿里云 团队保驾护航,保证了我们每一次大促活动的系统稳定性和可用性,同时利用 ACK 容器快速弹性扩缩容,节约服务器成本 50% 以上。” ——完美日记技术中台负责人 如果你对美妆产品略知一二,就一定听说过这个号称“国货之光”的品牌——完美日记。虽然完美日记主打的唇膏、唇釉、眼影等彩妆产品的市场竞争十分激烈,它却以惊人的增长速度杀出重围。2019 年仅用 8 个月时间,销量增长了近 50 倍,不但力压美康粉黛等国货同行而且全面赶超 YSL、SK-II 等国际大牌。 要知道,2016 年这个才刚刚诞生的品牌,2017 年才有了天猫旗舰店。而在 2018 年天猫 双11,第一次参与该活动的完美日记 ,仅用 90 分钟即突破 1 亿销售额;从 2019 年 1 月到 4 月,完美日记一直稳居天猫美妆销量第一;到了 2019 年 天猫618,完美日记第一小时就荣登天猫彩妆 Top1。截至 2020 年 4 月, 品牌 SKU 超过 700 个,全网用户粉丝数量超过 2500 万,月曝光量 10 亿 +。 对于一个爆款品牌,尤其是在消费品行业竞争如此激烈的情形下

网格优化中,你遇到过哪些吃性能的设置?

落花浮王杯 提交于 2020-10-17 10:21:50
节前,我们已经将【性能黑榜】上的Top10规则均做了详细的解读(可戳文末相关链接回顾)。 无论是大家在开发时的疏忽,还是相关知识点的缺失,这些问题的积累最终都会反映到项目的性能表现上。 为此,我们将这些规则曝光出来,并且以一个个知识点的形式逐一解读。 今天,我们来继续剖析 【UWA本地资源检测】 中和 网格设置 相关的规则: “包含Color属性的网格”,“未开启OptimizeMesh选项的网格”,“包含Tangent属性的网格”和“包含uv3或uv4属性的网格”。 我们将力图以浅显易懂的表达,让职场萌新或优化萌新深入理解。 1、包含Color属性的网格 在一些建模软件中导出的模型可能会带有顶点的颜色属性,在Unity中即表现为Mesh的Colors属性。有些Shader可以使用这个属性进行运算与着色,如Sprites Shader。然而大多数Shader都选择忽略Colors属性(Unity标准着色器就不使用这个属性)。在这种情况下,如果Mesh带有Colors属性,那么对其本身而言没有实际意义,却会对内存、物理体积和加载性能造成影响。 所以本条规则会针对Mesh的Colors属性进行检测,以供开发团队根据实际使用需求去除不必要的Colors属性。 在此大家可以参考一下UWA问答中一位热心朋友提供的批量去除网格color属性的工具: https://answer.uwa4d

API Gateway

ぃ、小莉子 提交于 2020-10-17 06:03:32
目录 文章目录 目录 微服务架构中的 API 问题 API Gateway API 的组合/聚合 Kong Gateway APIGW vs ServiceMesh 微服务架构中的 API 问题 根据 Gartner 对微服务的定义:“ 微服务是范围狭窄、封装紧密、松散耦合、可独立部署且可独立伸缩的应用程序组件 。” 与将模块高度耦合并部署为一个大的应用程序相比,微服务的目标是将应用程序充分分解或者解耦为松散耦合的许多微服务或者模块,这样做对下面几点有很大帮助: 每个微服务都可以独立于应用程序中的同级服务进行部署、升级、扩展、维护和重新启动。 通过自治的跨职能团队进行敏捷开发和敏捷部署。 运用技术时具备灵活性和可扩展性。 在微服务架构中,我们根据各自的特定需求部署不同的松耦合服务,其中每个服务都有其更细粒度的 API 模型,用以服务于不同的客户端(Web,移动和第三方 API)。 在考虑客户端与每个已部署的微服务直接通信的问题时,应考虑以下挑战: 如果微服务向客户端公开了细粒度的 API,则客户端应向每个微服务发出请求。在典型的单页中,可能需要进行多次服务器往返,才能满足请求。对于较差的网络条件下运行的设备(例如:移动设备),这可能会更糟。 微服务中存在的多种通信协议(例如:gRpc、thrift、REST、AMQP 等)使客户端很难轻松采用所有这些协议。