首页 文章 精选 留言 我的

精选列表

搜索[通用文字识别],共10000篇文章
优秀的个人博客,低调大师

Weex布局尺寸通用适配方案的研究

问题 weex为前端赋予了强大的跨端开发能力和较一致的良好的用户体验。weex一般是与native进行协作开发: 同app内不同页面用两者分别开发,统一串联 同页面两者协作开发,比如native提供组件,weex使用 由于native布局一般采用定高不定宽的方式,以求不同尺寸的屏幕可以得到基本一致的布局体验,然而weex布局采用基于750的等比例缩放,这种不一致导致的问题: 同一元素在不同屏幕的尺寸展现不一致,大屏手机尺寸偏大,小屏手机尺寸偏小 与native尺寸偏差较多 字号的差异也比较明显。 默认依据ip6尺寸布局,惨不忍睹的现场直击... 红框部分的滑动组件是native的,而背景容器是weex布局的,由于weex等比例缩放,而native使用pt,导致iphone 5s native组件溢出,而iphone 6p组件相比于容器过小。 下面是i

优秀的个人博客,低调大师

Openstack_通用技术_RPC 远程异步调用

目录 目录 RPC 一个通过 HTTP Request 调用操作函数的 RPC 实现样例 环境 接收 HTTP Request RPC 调用具体的操作函数 测试 RPC RPC: 同一个项目内的不同服务进程之间的交互方式。为不同的进程服务提供了 call()(同步) 和 cast()(异步) 两种调用方式。 问题 1: 在一个 Openstack 项目中拥有多个不同的进程服务,EG. API Service/Manage Service。 当我们通过 Client 发送 API Request 去调用 Manage Service 执行一个操作任务时,我们会希望这个调用的结果是能够快速响应到 Client 的(保证用户体验)。 问题 2: 而且进程服务之间的调用我们还需要考虑如何有效的避免进程服务之间调用的阻塞问题。EG. API Service 调用 Manage Service 时,如果不能及时的将 API Service 释放掉,那么 API Request 就会因为被占用,而无法处理新的请求。 对于上面两个问题,我们可以通过将具体的执行过程和响应过程分离来达到理想的效果。这也是 RPC 和 API 存在的原因之一。 一个通过 HTTP Request 调用操作函数的 RPC 实现样例 包含了下列两个过程实现: 接收 HTTP Request RPC 调用操作函数 环境 Devstack 用的 L 版,样例在自定义的 Openstack 项目中实现,详见自动化生成 Openstack 新项目开发框架。 接收 HTTP Request 定义 HTTP Request URL 路由转发的 Resource 详见Openstack Restful API 开发框架 Paste + PasteDeploy + Routes + WebOb 和 Openstack Paste.ini 文件详解 # project/api/v1/router.py from project.api.v1 import new_resource class APIRouter(octopunch.api.openstack.APIRouter): """Routes requests on the API to the appropriate controller and method.""" ExtensionManager = extensions.ExtensionManager def _setup_routes(self, mapper, ext_mgr): self.resources['versions'] = versions.create_resource() mapper.connect("versions", "/", controller=self.resources['versions'], action='show') mapper.redirect("", "/") self.resources['new_resource'] = new_resource.create_resource(ext_mgr) mapper.resource('new_resource', 'new_resource', controller=self.resources['new_resource']) 将 Resource 和 HTTP 方法绑定到 Controller 的 Action 函数中 # project/api/v1/new_resource.py class NewResourceController(wsgi.Controller): def __init__(self, ext_mgr): self.ext_mgr = ext_mgr super(NewResourceController, self).__init__() # Create() 对应了 HTTP 的 POST 方法 @wsgi.serializers() def create(self, req, body): """Create a NewResource.""" context = req.environ['project.context'] # Sync the project database. self.new_resource_api.db_sync(context) def create_resource(ext_mgr): """project resource factory method.""" return wsgi.Resource(NewResourceController(ext_mgr)) 上述两个文件实现了通过 HTTP Request 的 POST 方法来执行指定的 Create() 函数。 RPC 调用具体的操作函数 通过 API 调用 RPC-API # project/new_resource/api.py # import rpcapi module from project.new_resource import rpcapi as new_resource_rpcapi class API(base.Base): """API for interacting with the new_resource manager.""" def __init__(self, db_driver=None, image_service=None): self.new_resource_rpcapi = new_resource_rpcapi.NewResourceAPI() super(API, self).__init__(db_driver) # 定义调用 rpcapi 的接口函数 def db_sync(self, context): """Call rpc api to start db sync for new_resource database.""" self.new_resource_rpcapi.db_sync(context) API 的存在是为了能够快速的响应请求,至于之后的执行过程交由 RPC-API 和 Manager 来处理 rpc-api.py 调用 manager.py 在 rpcapi.py 定义的 RPC 接口函数会自动的映射到 manager.py 中指定的处理函数。 # project/new_resource/rpcapi.py class NewResourceAPI(object): def __init__(self): super(NewResourceAPI, self).__init__() target = messaging.Target(topic=CONF.manage_topic, version=self.RPC_API_VERSION) serializer = objects_base.ProjectObjectSerializer() self.client = rpc.get_client(target, version_cap='1.8', serializer=serializer) # 定义 rpcapi 函数,使用 cast 异步调用方式 def db_sync(self, context): cctxt = self.client.prepare() # 指定 rpcapi 的调用方式,和指定映射到 manager.py 的处理函数 cctxt.cast(context, 'db_sync') RPC-API 的存在是为了快速的响应进程服务之间的调用请求。 # project/new_resource/manager.py class NewResourceManager(manager.Manager): RPC_API_VERSION = '1.8' target = messaging.Target(version=RPC_API_VERSION) def __init__(self, service_name=None, *args, **kwargs): super(NewResourceManager, self).__init__(*args, **kwargs) self._startup_delay = True def init_host_with_rpc(self): eventlet.sleep(CONF.periodic_interval) self._startup_delay = False def db_sync(self, context): print "这里是具体的 RPC 操作函数" 小结: Openstack 的 PRC 调用的过程为: api.py ⇒ rpcapi.py ⇒ manager.py 详见:Openstack Nova 源码分析 — RPC 远程调用过程 测试 启动 API 服务 project-api --config-file /etc/project/proname.conf 启动 Manager 服务 project-manager --config-file /etc/project/project.conf 发送 HTTP 请求 curl -i 'http://<Service_host_ip>:<service_port>/v1/<project_id>/<ResourceUrl>' -X POST -H "Content-Type: application/json" -H "X-Auth-Project-Id: admin" -H "X-Auth-Token: <token_id>" -d '<body_content_dict>' 注意: 样例需要根据自身开发环境进行调整,

优秀的个人博客,低调大师

人脸识别、AR交互、3D物体云识别...

2017年“天猫618理想生活狂欢节”已经结束,不管是线上的会场还是线下的体验馆都给大家留下了很深刻的印象:天眼AR、跨屏互动、虚拟魔镜、3D交互、全景漫游等黑科技,让今年的618前所未有地热闹纷呈。相信很多小伙伴对这些体验背后的技术体系比较感兴趣。此次将为大家揭开神秘面纱,介绍一下618这些黑科技出自谁的手,又是如何在大促的快节奏中高质、高效生产出来的。 从“互动开放+TidaSDK”到“互动联盟+海螺码头”天猫在2014年双11开始启动互动开放,目的是让消费者能从狂欢城进入品牌店铺玩小游戏获取权益,为品牌商带来进店流量的同时也让消费者在进店的时候更加有趣。所以天猫联合商家事业部为双11进行ISV的招募,以满足店铺与消费者的多样性选择。 ISV入驻与代码托管底层还是基于聚石塔的开放平台,由天猫互动平台根据互动场景以及手机天猫、手机淘

优秀的个人博客,低调大师

6 份企业文档交给 AI 审计,连无文字流程图都被拿捏了!

先把几个硬数字放前面,没时间的朋友看完这段就可以走了。这次扛大梁的模型是 Seed-2.1-pro-0915,我冲的就是它的视觉理解和 Agent 工具调用,这场文档审计正好两样都用上了。6 份真实格式的企业文档丢进去,出来 13 条确认过的问题,10 条高风险 3 条中风险,51 条证据每一条都能点回原文找到出处。评测里 49 个考察点命中 46 个,误报 0。模型返回的原始内容全部留档,一个字没动过。

资源下载

更多资源
Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册