element

鸿蒙OS应用开发实践(四)

生来就可爱ヽ(ⅴ<●) 提交于 2020-12-17 07:49:39
通 过前面的学习:快速入门一个hello world程序和编写一个简单的交互程序,我们已经基本了解鸿蒙应用开发的基本流程,这一篇,我们来细化学习下鸿蒙的UI框架(基于JAVA)。 (一)Ability 在开始之前,我们先来了解一个基础概念:Ability Ability从英文的字面上理解是“能力”的意思,同样在鸿蒙的架构体系里,官方的释意:Ability表示应用程序所具备能力的抽象,是应用程序的重要组成部分。一个应用可以具备多种能力(即可以包含多个 Ability),HarmonyOS 支持应用以 Ability 为单位进行部 署。Ability 可以分为 FA(Feature Ability)和 PA(Particle Ability)两种类型,每种类 型为开发者提供了不同的模板,以便实现不同的业务功能。 Ability支持三种模版: PageAbility : 页面模版,用于提供与用户交互的能力。这个也是FA唯一支持的模版。 ServiceAbility : 服务模版,用于提供后台运行任务的能力。 DataAbility:数据模版,用于对外部提供统一的数据访问抽象。 简单说,你要做UI交互,那么就用FA。需要做非界面的服务/数据处理就用PA。 层次结构可以参考下图: 在配置文件(config.json)中去注册Ability时

使用selenium模拟登陆淘宝、新浪和知乎

限于喜欢 提交于 2020-12-17 06:38:19
如果直接使用selenium访问淘宝、新浪和知乎这些网址。一般会识别出这是自动化测试工具,会有反制措施。 当开启开发者模式后,就可以绕过他们的检测啦。(不行的,哭笑) 如果网站只是对windows.navigator.webdriver进行检测。 绕过网站对webdriver的特征识别 1-使用splash,navigator.webdriver只适用使用webdriver的渲染工具,对splash这种使用webkit内核开发的渲染工具是无效的。 2-利用selenium或者其他渲染工具执行js使navigator.webdriver的返回值为false或undefined,比如在请求url后执行这句js Object.defineProperty(navigator, "webdriver", {get: () => false ,}); 3-使用mitmdump改请求出去时的数据包。 几个站模拟登陆的套路都是差不多。 麻烦一点的是知乎,老是弹出验证码。这里不提验证码的绕过,真的有大量的登录获取cookie的需求。连接打码平台应该是个不错的选择... 其实用selenium操作浏览器时尽量模拟人的操作,就可以减少验证码出现的几率了。 直接上代码吧,注释里会说明逻辑: 淘宝(注意这个账号是淘宝绑定微博的账号): from selenium.webdriver.chrome

jQuery知识梳理20190817

霸气de小男生 提交于 2020-12-17 01:19:59
jQuery知识梳理20190817 [TOC] 1. jQuery的特征 强大选择器: 方便快速查找DOM元素 隐式遍历(迭代): 一次操作多个元素 读写合一: 读数据/写数据用的是一个函数 链式调用: 可以通过.不断调用jQuery对象的方法 事件处理 DOM操作(CUD) 样式操作 动画 浏览器兼容 2. jQuery的两把利器 2.1 jQuery核心函数 简称:jQuery函数($/jQuery) jQuery库向外直接暴露的就是$ / jQuery 当引入jQuery库后,直接使用$即可 当函数用: $(xxx) 当对象用:$.xxx() 2.2 jQuery核心对象 简称:jQuery对象 得到jQuery对象:执行jQuery函数返回的就是jQuery对象 使用jQuery对象:$obj.xxx() console.log(typeof $) //$是一个function console.log($ === jQuery) //true $与jQuery等同 console.log($ === window.$) //true $是一个全局函数 console.log(typeof $()) //"object" 这个对象就是jQuery对象 $('button').click(function () { alert(this.innerHTML) }) 3.

三步搞定!手写Mybatis框架

旧时模样 提交于 2020-12-16 23:47:16
点击上方“ 猿程之家 ”,选择“置顶公众号” 关键时刻,第一时间送达! 阅读本文需要5分钟 来源:my.oschina.net/liughDevelop/blog/1631006 整编:Java技术栈(公众号ID:javastack) 继上一篇手写SpringMVC之后《 从0开始手写一个 SpringMVC 框架,向高手进阶! 》,我最近趁热打铁,研究了一下Mybatis。MyBatis框架的核心功能其实不难,无非就是动态代理和jdbc的操作,难的是写出来可扩展,高内聚,低耦合的规范的代码。 本文完成的Mybatis功能比较简单,代码还有许多需要改进的地方,大家可以结合Mybatis源码去动手完善。 1 Mybatis框架流程简介 在手写自己的Mybatis框架之前,我们先来了解一下Mybatis,它的源码中使用了大量的设计模式,阅读源码并观察设计模式在其中的应用,才能够更深入的理解源码(ref:Mybatis源码解读-设计模式总结)。 我们对上图进行分析总结: 1、mybatis的配置文件有2类 mybatisconfig.xml,配置文件的名称不是固定的,配置了全局的参数的配置,全局只能有一个配置文件。 Mapper.xml 配置多个statemement,也就是多个sql,整个mybatis框架中可以有多个Mappe.xml配置文件。 2

Pytorch: list, numpy. Tensor 格式转化 (附 only one element tensors can be converted to Python scalars 解决)

蓝咒 提交于 2020-12-16 13:55:49
Pytorch :list, numpy.array, torch.Tensor 格式相互转化 同时解决 ValueError:only one element tensors can be converted to Python scalars 问题 torch.Tensor 转 numpy ndarray = tensor.numpy() 如果是在 gpu,命令如下 ndarray = tensor.cpu().numpy() # 这是因为 gpu上的 tensor 不能直接转为 numpy numpy 转 torch.Tensor tensor = torch.from_numpy(ndarray) list 转 torch.Tensor tensor=torch.Tensor(list) 注意:有时,上面操作会出现报错: ValueError:only one element tensors can be converted to Python scalars 原因是:要转换的list里面的元素包含多维的tensor。 在 gpu 上的解决方法是: val= torch.tensor([item.cpu().detach().numpy() for item in val]).cuda() # 这是因为 gpu上的 tensor 不能直接转为 numpy; 需要先在 cpu

C# LIST(T)中Contains(T)和IndexOf(T)方法实现细节介绍

半城伤御伤魂 提交于 2020-12-16 11:11:48
C#中的List(T)类型代表T类的列表,该类型位于 System.Collections.Generic 命名空间,提供了按位置索引获取对象的方法,并且列表支持搜索、排序等其它操作。本文重点介绍List(T)中的两个方法:Contains(T)和IndexOf(T),特别的,T为自定义类类型。 (1)List(T).Contains(T)方法 该方法用于检测某个T对象是否存在于List(T)对象中,List(T).Contains(T)方法继承自ICollection(T).Contains(T),并对其进行了实现。首先看.net中该方法对应的代码 // Contains returns true if the specified element is in the List. // It does a linear, O(n) search. Equality is determined by calling // item.Equals(). // public bool Contains(T item) { if ((Object) item == null) { for(int i=0; i<_size; i++) if ((Object) _items[i] == null) return true; return false; } else {

C++ 用map的例子

孤街醉人 提交于 2020-12-16 08:57:04
map的基本操作函数: C++Maps是一种关联式容器,包含“关键字/值”对 begin() 返回指向map头部的迭代器 clear() 删除所有元素 count() 返回指定元素出现的次数 empty() 如果map为空则返回true end() 返回指向map末尾的迭代器 equal_range() 返回特殊条目的迭代器对 erase() 删除一个元素 find() 查找一个元素 get_allocator() 返回map的配置器 insert() 插入元素 key_comp() 返回比较元素key的函数 lower_bound() 返回键值>=给定元素的第一个位置 max_size() 返回可以容纳的最大元素个数 rbegin() 返回一个指向map尾部的逆向迭代器 rend() 返回一个指向map头部的逆向迭代器 size() 返回map中元素的个数 swap() 交换两个map upper_bound() 返回键值>给定元素的第一个位置 value_comp() 返回比较元素value的函数 一个使用map的例子: #include <map> #include <string> #include <iostream> using namespace std; void map_insert(map<string, string>* mapStudent, string

XML file parsing Python

瘦欲@ 提交于 2020-12-15 04:37:05
问题 I am having trouble collecting 2 more pieces of data to convert from XML to CSV using Python They are the description tag and the generatedOn tag. For the description tag I tried item.find('description').text but it did not work. For the generatedOn tag I would like it concatenate the items inside like this: Please see the sample XML below: <?xml version="1.0" encoding="UTF-8"?> <omGroups xmlns="urn:nortel:namespaces:mcp:oms" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi

MFC界面开发帮助文档:BCG可视化设计器使用指南

蓝咒 提交于 2020-12-14 10:13:07
BCGControlBar ("Business Components Gallery ControlBar")是MFC扩展库,使您可以创建具有完全自定义选项(功能区、可自定义工具栏、菜单等)以及一组专业设计的丰富Microsoft Office和Microsoft Visual Studio的应用程序 GUI控件,例如图表、日历、网格、编辑器、甘特图和许多其他控件。 BCGControlBar库拥有500多个经过全面设计、测试和充分记录的MFC扩展类。 我们的组件可以轻松地集成到您的应用程序中,并为您节省数百个开发和调试时间。 BCGControlBar Pro for MFC v31.0正式版下载 Visual Designer允许您可快速创建和修改MFC应用程序的数字仪表板和图表,它生成描述仪表板和图表元素的布局和属性的XML文件,只要需要向最终用户提供交互式数字仪表板和/或图表,就可以在运行时加载和处理XML。 本指南将为大家介绍如何利用Designer工具。 先决条件 首先,您必须使用Application Wizard创建一个基于MFC或BCGControlBar Pro的应用程序,或者选择一个现有的(基于MFC或BCGPro的)应用程序。 注意 :如果选择纯MFC项目,则需要执行一些其他步骤从MFC迁移到BCGControlBar Pro。 开始使用设计器 运行位于

video 全屏,播放,隐藏控件。

喜你入骨 提交于 2020-12-13 20:02:14
requestFullscreen全屏具体实现 1.进入全屏 function full( ele) { if (ele.requestFullscreen) { ele.requestFullscreen(); } else if (ele.mozRequestFullScreen) { ele.mozRequestFullScreen(); } else if (ele.webkitRequestFullscreen) { ele.webkitRequestFullscreen(); } else if (ele.msRequestFullscreen) { ele.msRequestFullscreen(); } } ele :要全屏的元素,可以是 document.body 也可以是某一个div 思路: 1.判断该浏览器是否具有 requestFullscreen 方法 2.有,则直接执行 ele.requestFullscreen() ;没有则做浏览器兼容判断。 2.exitFullScreen退出全屏 function exitFullscreen( ) { if( document.exitFullScreen) { document.exitFullScreen(); } else if( document.mozCancelFullScreen) {