Tangram 2.0发布,顺带开源了一种动态化组件的方案
Tangram 2.0发布,顺带开源了一种动态化组件的方案
Tangram 2.0发布,顺带开源了一种动态化组件的方案
如何用普通设备实现海量数据的毫秒级查询?文章分享了在 ThinkPad 上构建 Redis 系统的完整方案,详细解析了数据分片、查询优化和资源调配等关键技术,还提供了针对高效查询的实际案例。轻量化实现,高性能表现,为开发者提供了实用的参考思路,值得深入学习!
本文探讨了后端通用查询方案的设计,通过 `Gridify` 库启发,提出基于泛型和接口的查询模型,优化分页和过滤功能。实现细节包括 `QueryParameter` 类和 `IQueryableFilter` 接口的使用,自定义模型绑定方式,使查询参数更灵活,支持多种前后端兼容格式。文章强调开发中平衡灵活性与规范性,并认为在 AI 辅助编程背景下,程序员应专注于复杂问题解决和生产关系的改善。
本文对比游戏服务器中C++搭配脚本语言(Lua、Python)以及纯编译型语言(C++、Golang)来进行开发时,进行线上服务器热更新的方案。
写过文档的大佬们都知道 MDX 这个东西,对原本的 Markdown 进行了扩展,可以在 Markdown 中直接使用框架组件(React,Vue 等等)。
现在也有很多静态生成的博客使用 MDX 去编写博文,在博文中内嵌了 React 组件,在一些需要交互式的场景中,在传统的 Markdown 只能展示内容,而使用了组件就可以把死的文字变活。
MDX 的原理是在项目构建时,解析 Markdown 抽象语法树,把引入的组件进行了编译,然后嵌入到了文章内部。
而使用 MDX,就必须要引入编译时。而对于 CMS 类型的博客网站,因为内容都是动态生成的,就无法使用 MDX。
那么有没有办法去想一个歪路子去实现呢。
炫酷一下,为了能让备用机一直有电,计划将备用机插在智能插座上,然后通过iOS的Shortcuts来监控手机电量——当手机电量小于30%的时候自动开启插座;当手机电量充到80%的时候自动关闭插座。
MinIO是一个开源的分布式对象存储组件,它兼容Amazon S3API,适合于存储大容量的非结构化数据,支持单个对象最大5TB。MinIO特点:部署简单,仅需要单独一个二进制文件;支持纠删码机制,能恢复部分数据块丢失的情况;读写性能高。
本篇文章聊聊网上聊的比较少的具体量化操作,非常见整型位数的量化,来自让各种开源模型能够在 CPU 环境、CPU & GPU 环境混合推理的技术方案:llama.cpp 。
最近,给当台式服务器一样使用了两年的 ThinkPad 做了存储升级和数据迁移,对硬盘也做了额外的散热处理。本篇文章里,我们分享下相关的经验和思考,希望能够帮助到有同样诉求的你。
如何用最少的成本,来获得最大的性能提升呢?
为了最大化获取网络性能,最少的折腾现有设备,降低成本投入,结合我只需要部分设备之间存在更高规格的带宽,我选择了相对不常见的方案:雷电组网(thunderbolt)。
讨论 · 1 条
技术背景
一直以来,无线应用都在不断寻求动态化页面的解决方案,在阿里巴巴集团内,除了风风火火地 Weex 项目外,各个团队都有大大小小的解决方案。我们猫客一直持续基于 Tangram 方案来解决页面动态化的问题,然而在面对持续升级的业务需求时,原有的开发模式也慢慢变得无法胜任,本年度以来,我们 Tangram 体系在各个层面都进行了大跨度的技术升级(可参考文章天猫APP改版之首页架构&开发模式全面升级),本文再详细介绍一下页面内组件体系升级方案。
老组件体系的问题
在原有的 Tangram 体系里,主要解决了页面内布局结构的动态化能力,通过 json 数据描述可以组合出常用的页面结构。然而页面内具体的坑位样式,我们称之为业务组件,是采用常规的 native 代码开发的,除非内置了足够多的逻辑,否则组件的样式调整或者新组件的开发都要发布版本,无法满足业务节奏;当然我们也尝试过使用 Weex 开发业务组件贴到页面上,但是在体验和性能上还是有较大的缺陷。
所以总结起来,就是两点问题:
业务组件无法动态更新;
现有的动态组件方案较重,影响性能和体验;
解决之道
对于上述问题,解决思路其实是比较通用的,要动态更新界面视图,就需要用界面模板描述视图,模板与数据分离。将动态下发的模板和数据在端上绑定渲染。要提升性能,也有三大着力点——减少视图层级与个数,结构尽量扁平化;异步布局渲染流程,解放主线程计算量;回收与复用组件,减少内存开销。
新的组件体系就是在模板化描述视图,动态更新视图,减少视图层级几个方面做文章,至于组件的回收复用,则是在页面级别统一完成;而异步布局渲染流程,则是后续的优化方向。
新的组件方案称之为 VirtualView,简称 VV,也称为2.0组件,它的设计遵循以下几个思路:
以了一种虚拟化开发基础组件的技术,使用方只要按照指定协议实现一个基础组件的尺寸计算、绘制逻辑、布局逻辑,即能实现在宿主容器的 canvas 里实现直接绘制 UI 内容的,让最终渲染出来的视图结构呈现扁平化,提升组件渲染性能。同时为了解决虚拟化 View 带来的原生 View 的能力损失的问题,它支持加载和渲染原生基础组件,两者组合产生合力,既能减少开销,又能满足特殊场景下的业务需求。
内置实现了一系列基础组件,可以让使用方直接上手尝试;而搭建业务组件的方式采用 XML 模板来编写,配套 XML 模板更新 sdk,这使得业务组件动态更新成为了可能。XML 模板里还支持写数据绑定的表达式,在样式动态化、数据动态化的场景下能非常方便地实现业务需求。
XML 模板里涉及到的基础节点、属性、字符串资源等都被提前编译成二进制资源,客户端加载通过加载编译后的模板数据来创建视图。