首页 文章 精选 留言 我的

精选列表

搜索[分片功能],共10000篇文章
优秀的个人博客,低调大师

App Inspector-iOS真机功能详解

前言: App Inspector:浏览器端的移动设备 UI 查看器,使用树状态结构查看 UI 布局,自动生成 XPaths。官网:https://macacajs.github.io/app-inspector/cn/ 本次教程仅支持iOS,Mac 一、环境安装: 1、安装Node.js brew install node 2、安装macaca npm i -g macaca-cli 3、安装 ideviceinstaller brew install ideviceinstaller 4、安装 usbmuxd brew install usbmuxd 5、安装iOS驱动 npm i macaca-ios -g 6、安装App Inspector npm install app-inspector -g 二、安装XCTestWD 1、进入App Inspector安装目录下XCTestWD文件夹,具体路径参照自己的路径,可以通过find命令查找。 cd /usr/local/lib/node_modules/app-inspector/node_modules/xctestwd/XCTestWD 2、用xcode打开XCTestWD.xcodeproj文件 image.png 3、每个文件修改Bundle id和添加Team,请按下图操作步骤更改。Bundle id可自定义。 image.png image.png image.png image.png image.png 4、项目文件直接编译,test结尾的文件build for Testing。编译成功即可。 三、将 TEAM_ID 通过环境变量传入覆盖安装App Inspector、iOS驱动 1、获取你的TEAM_ID ,见下图。 image.png 2、覆盖安装iOS驱动 DEVELOPMENT_TEAM_ID=TEAM_ID npm i macaca-ios -g 3 、覆盖安装App Inspector DEVELOPMENT_TEAM_ID=TEAM_ID npm install app-inspector -g 四、使用App Inspector 1、获取测试机uuid,并执行以下命令: app-inspector -u DEVICE-ID 2、chrome浏览器自动打开地址:http://192.168.21.101:5678/ (推荐用 Chrome 浏览器) image.png 3、点击页面元素,即可获取元素xpath,name 4、若切换页面,需现在手机上切换,然后刷新浏览器,则获取手机的最新页面。 以上~

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

额外功能

10.1. 对Redis节点的操作 Redisson的NodesGroup对象提供了许些对Redis节点的操作。 NodesGroup nodesGroup = redisson.getNodesGroup(); nodesGroup.addConnectionListener(new ConnectionListener() { public void onConnect(InetSocketAddress addr) { // Redis节点连接成功 } public void onDisconnect(InetSocketAddress addr) { // Redis节点连接断开 } }); 也可以用来PING单个Redis节点或全部节点。 NodesGroup nodesGroup = redisson.getNodesGroup(); Collection<Node> allNodes = nodesGroup.getNodes(); for (Node n : allNodes) { n.ping(); } // 或者 nodesGroup.pingAll(); 10.2. 复杂多维对象结构和对象引用的支持 Redisson突破了Redis数据结构维度的限制,通过一个特殊引用对象的帮助,Redisson允许以任意的组合方式构建多维度的复杂对象结构,实现了对象之间的类似传统数据库里的关联关系。使用范例如下: RMap<RSet<RList>, RList<RMap>> map = redisson.getMap("myMap"); RSet<RList> set = redisson.getSet("mySet"); RList<RMap> list = redisson.getList("myList"); map.put(set, list); // 在特殊引用对象的帮助下,我们甚至可以构建一个循环引用,这是通过普通序列化方式实现不了的。 set.add(list); list.add(map); 可能您已经注意到了,在map包含的元素发生改变以后,我们无需再次“保存/持久”这些对象。因为map对象所记录的并不是序列化以后的值,而是元素对象的引用。这让Redisson提供的对象在使用方法上,与普通Java对象的使用方法一致。从而让Redis成为内存的一部分,而不仅仅是一个储存空间。 以上范例中,一共创建了三个Redis数据结构:一个Redis HASH,一个Redis SET和一个Redis LIST。 10.3. 命令的批量执行 多个连续命令可以通过RBatch对象在一次网络会话请求里合并发送,这样省去了产生多个请求消耗的时间和资源。这在Redis中叫做管道。 RBatch batch = redisson.createBatch(); batch.getMap("test").fastPutAsync("1", "2"); batch.getMap("test").fastPutAsync("2", "3"); batch.getMap("test").putAsync("2", "5"); batch.getAtomicLongAsync("counter").incrementAndGetAsync(); batch.getAtomicLongAsync("counter").incrementAndGetAsync(); // 原子化(事务)批量执行所有的命令 batch.atomic(); // 告知Redis不用返回结果(可以减少网络用量) batch.skipResult(); // 将写入操作同步到从节点 // 同步到2个从节点,等待时间为1秒钟 batch.syncSlaves(2, 1, TimeUnit.SECONDS) // 处理结果超时为2秒钟 batch.timeout(2, TimeUnit.SECONDS); // 命令重试等待间隔时间为2秒钟 batch.retryInterval(2, TimeUnit.SECONDS); // 命令重试次数,仅适用于未发送成功的命令 batch.retryAttempts(4); BatchResult res = batch.execute(); // 或者 Future<BatchResult> asyncRes = batch.executeAsync(); 在集群模式下,所有的命令会按各个槽所在的节点,筛选分配到各个节点并同时发送。每个节点返回的结果将会汇总到最终的结果列表里。 10.4. 脚本执行 redisson.getBucket("foo").set("bar"); String r = redisson.getScript().eval(Mode.READ_ONLY, "return redis.call('get', 'foo')", RScript.ReturnType.VALUE); // 通过预存的脚本进行同样的操作 RScript s = redisson.getScript(); // 首先将脚本保存到所有的Redis主节点 String res = s.scriptLoad("return redis.call('get', 'foo')"); // 返回值 res == 282297a0228f48cd3fc6a55de6316f31422f5d17 // 再通过SHA值调用脚本 Future<Object> r1 = redisson.getScript().evalShaAsync(Mode.READ_ONLY, "282297a0228f48cd3fc6a55de6316f31422f5d17", RScript.ReturnType.VALUE, Collections.emptyList()); 10.5. 底层Redis客户端 Redisson在底层采用了高性能异步非阻塞式Java客户端,它同时支持异步和同步两种通信模式。如果有哪些命令Redisson还没提供支持,也可以直接通过调用底层Redis客户端来实现。Redisson支持的命令在Redis命令和Redisson对象匹配列表里做了详细对比参照。 // 在使用多个客户端的情况下可以共享同一个EventLoopGroup EventLoopGroup group = new NioEventLoopGroup(); RedisClientConfig config = new RedisClientConfig(); config.setAddress("redis://localhost:6379") // 或者用rediss://使用加密连接 .setPassword("myPassword") .setDatabase(0) .setClientName("myClient") .setGroup(group); RedisClient client = RedisClient.create(config); RedisConnection conn = client.connect(); // 或 RFuture<RedisConnection> connFuture = client.connectAsync(); conn.sync(StringCodec.INSTANCE, RedisCommands.SET, "test", 0); // 或 conn.async(StringCodec.INSTANCE, RedisCommands.GET, "test"); conn.close() // 或 conn.closeAsync() client.shutdown(); // 或 client.shutdownAsync();

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

智能农业物联网系统功能分析

随着农业物联网技术广泛应用在农业生产中后,越来越多的人放弃了传统的耕作方式,开始使用农业物联网系统来实现农业的精准管理和轻松化管理。农业物联网系统将彻底转变农业生产者的管理理念,改变过去生产者单纯依靠经验进行农业生产经营的模式。 对于菜农来说,凭经验给作物施肥、浇水、打药,这是很寻常的事情,但当菜农们看到设施农业生产基地中的蔬菜不需要人工去浇水,也可以得到适量的水分条件时,菜农们终于发现靠感觉施肥、浇水、打药并不是管理农田的唯一方法。物联网技术在农业中的应用,既能改变粗放的农业经营管理方式,也能提高动植物疫情疫病防控能力,确保农产品质量安全,引领现代农业发展。 农业物联网系统组成:数据采集系统。主要负责温室内部光照、温度、湿度和土壤含水量以及视频等数据的采集和控制。数据传感器的上传采用ZigBee和Rs485两种模式。根据传输方式的不同,温室现场部署分为无线版和有线版两种。无线版采用ZigBee发送模块将传感器的数值传送到zigBee节点上;有线版采用电缆方式将数据传送到Rs485节点上。无线版具有部署灵活,扩展方便等优点;有线版具有高速部署,数据稳定等优点。 视频采集系统。该系统采用高精度网络摄像机,系统的清晰度和稳定性等参数均符合国内相关标准。 控制系统。该系统主要由控制设备和相应的继电器控制电路组成,通过继电器可以自由控制各种农业生产设备,包括:喷淋、滴灌等喷水系统和卷帘、风机等空气调节系统等。 无线传输系统。该系统主要将设备采集到的数据,通过3G网络传送到服务器上,在传输协议上支持IPv4现网协议及下一代互联网IPv6协议。 数据处理系统。该系统负责对采集的数据进行存储和信息处理,为用户提供分析和决策依据,用户可随时随地通过电脑和手机等终端进行查询。 农业物联网系统能够采集农作物生长环境信息,能够有效改善农作物生态环境。基于精准的农作物传感器进行实时监测,利用云计算、数据挖掘等技术进行多层次分析,并将分析指令与各种控制设备进行联动完成农业生产、管理,显著提高农业生产经营效率。 农业物联网系统能够在无人化管理的过程中种好蔬果,解决了农业劳动力日益紧缺的问题。目前农业劳动力不足是农业生产中面临的一个主要问题之一,通过实施农作物物联网系统可以实现一个人管理多个大棚,一个人开展大面积的土壤施肥和灌溉,因此有效解决了农业劳动力日益紧缺的问题,同时也实现了农业生产高度规模化、集约化、工厂化。

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

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应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

用户登录
用户注册