$代表jQuery对象,同时也是一个函数对象 $()和jQuery()是jQuery的核心函数,执行这两个元素返回的是一个DOM元素 $()是一个函数,等同于jQuery(),可在括号内传参数,传参后可获取元素...$(“.one”)表示获取class=“one”的元素,返回一个jQuery对象 $(”.one”).onclick表示class=”one”的点击事件 $.post() $.get() $.ajax...() 都是jQuery对象的方法 jQuery中,多个选择器是依次执行的,不是同时执行的 ,是在上一个选择器执行完的基础上,才开始执行下一个。...例如:$(“li:gt(0):lt(2)”) // 选择第二个和第三个li,gt(0)表示下标大于0的,lt(2)表示下标小于2的。...下标大于0为黑色区域,此时,下标为1的蓝色区域下标变为0,下标为3的粉色区域下标变为1,执行过滤选择下标为2后,即为红色框内,也就是最初的下标为1和2的元素,即第二个和第三个li元素(假设所有的颜色框均为
client 1 sorts (memory) 0 sorts (disk) 1 rows processed & 说明: 有关access和filter...的更多内容可以参考我的BLOG:http://blog.itpub.net/26736162/viewspace-2141522/
题目如下所示: 在Oracle中,执行计划里的access和filter有什么区别?...MGR" IS NOT NULL) 一般而言,access表示这个谓词条件的值将会影响数据的访问路径(表还是索引);filter表示谓词条件的值不会影响数据的访问路劲,只起到过滤的作用。...但是一旦重复匹配的较少,循环次数多,那么,filter操作将是严重影响性能的操作,可能会导致目标SQL几天都执行不完。...(二)多子节点: filter多子节点往往就是性能杀手,主要出现在子查询无法UNNEST查询转换,经常遇到的情况就是NOT IN子查询、子查询和OR连用、复杂子查询等情况。...DB笔试面试历史连接 http://mp.weixin.qq.com/s/Vm5PqNcDcITkOr9cQg6T7w About Me:小麦苗 ● 本文作者:小麦苗,只专注于数据库的技术,更注重技术的运用
sleep()方法(休眠)是线程类(Thread)的静态方法,调用此方法会让当前线程暂停执行指定的时间,将执行机会(CPU)让给其他线程,但是对象的锁依然保持,因此休眠时间结束后会自动恢复(线程回到就绪状态...,请参考第66题中的线程状态转换图)。...wait()是Object类的方法,调用对象的wait()方法导致当前线程放弃对象的锁(线程暂停执行),进入对象的等待池(wait pool),只有调用对象的notify()方法(或notifyAll(...)方法)时才能唤醒等待池中的线程进入等锁池(lock pool),如果线程重新获得对象的锁就可以进入就绪状态。
---- 单元测试 Unit test 在本地执行的单元测试,不需要运行在物理设备或模拟器上,可以测试一些与Android框架无关的代码。...Automating User Interface Tests Automating User Interface Tests用于测试UI界面,为用户提供高质量的用户界面和稳定的交互。...Testing UI for Multiple Apps :测试多终端行为的正确,如不同终端的app之间通信。使用uiautomator框架。...重复上述过程,模拟用户在多activity之间的操作。 验证结果, ViewAssertions的方法如match()验证控件中结果是否正确。...DataInteraction.perform()的参数为一个或多个 ViewAction对象。
前言 最近小编在探索端对端测试相关的topic,在Android端的自动化测试上,可供我们选择的库并不是很多,而其中小编使用最多的两个库分别是Espresso和UIAutomator。...然而,如果我们想设计一套自顶向下,设备、接口、代码层级均可自动化执行且有一定校验的框架或系统时,就会发现这两个完全不同语法的库融合一起后,可读性和可维护性几乎等于零。...因此,本文提出了一种基于Kotlin DSL写法的Espresso和UIAutomator融合方案,解决在不同库下的客户端自动化框架、用例的可读性、可维护性问题。...Espresso 在Espresso中,我们一般会处理三种类型的对象:匹配器、ViewAction和ViewAssertions。...).perform(ViewActions.click()) UIAutomator 相较于Espresso,黑盒的UIAutomator使用要复杂得多。
欲了解更多详细信息,请参阅Resource API和URL API参考文档。 标准URL Scheme 这是XWiki使用的默认URL格式。查看标准URL Scheme。...自定义URLs 有几种解决方案可以自定义XWiki URLs: 你可以通过修改XWiki的配置文件在一定程度上调整。短网址文档描述了各种选项。...你可以使用Rewrite Filter重写传入的URL和转换的URLs。短网址文档提供使用例子。 你可以实现一个新的URL Scheme。请参阅URL API。...这里是编写自定义class-rule的一个例子....例如,对于http://www.xwiki.org/xwiki/bin/view/Main/WebHome URL,会发生以下情况: URL路径包含/view/,因此ViewAction.java类执行
他们各自都需要再传入对应的参数分别如下: ViewMatcher,有withId、withText、withClassName等等方法来定位View控件 ViewAction,有click()、longClick...这里有ViewMatcher、ViewAction、ViewAssertion的Cheat Sheet。...@Before和@After是依照JUnit4的惯例,分别在用例执行之前和之后去注册和反注册。...执行原理 本文开头提到Espresso其中一个特点,无需主动写Sleep等待UI事件的执行和UI的绘制。...原因是,Espresso的用例运行过程是只有当UI线程IDLE和UI队列没有需要执行的事件时,Espresso的测试代码才会被执行。使用方无需写Sleep逻辑等待UI绘制完成。
当然 Android 工程创建完就自动引入了这个框架,说明肯定是有作用的,大概是自己程度不够,没察觉它能提高多少效率。...,如点击 ViewAssertions – 检查 View 的状态,类似单元测试中的断言 找到 View 有时候 View 可能没有对应的 R.id,或者虽然有但是不唯一。...View 上执行操作 // 执行点击 onView(...).perform(click()); // 执行多个操作 onView(...).perform(typeText("Hello"), click...先自定义一个 Matcher 类 private static Matcher withAdaptedData(final Matcher dataMatcher) {...View .perform(click()); Recycler View RecyclerView 的机制和过去的 ListView 这种不同,所以 onData() 方法也不适用了。
正如系列一中介绍的,ModernUI中包含了一些扩展的Javascript、CSS和Operation实体,其中也包含了一些非常有用的窗体组件。...本文介绍其中一个实现无刷新弹窗的组件的基本用法,该组件包含: Javascript:ModernUIPopup.js Operation: ModernUI_Popup_Execute:用于Ajax方式实现弹窗...ModernUI_PopupForm_Generate:用于生产弹窗HTML 主要功能: 可以进行html、Operation、Action三种类型的弹窗形式 只支持标准Form View弹窗,不支持...('autosubmit'); //初始化popup // popupOperation : 'ModernUI_Popup_Execute',默认的执行Operation...//operation : '',指定弹出Operation //view : '', 指定弹出view //viewAction : '', 指定弹出viewAction
,不通过页面也可以清晰的看到有哪些事件、状态。...当XML替换为Compose的时候,就可以只注重页面的实现了? 关于网域层 关于网域层的介绍很少,基本都是按照官方意思概括。因为他是可有可无的,甚至说对一般App来说都是不需要的。...为什么他是可有可无的呢?这里我说一下自己的理解。 网域层是位于页面层和数据层之间的,也就是Activity与Respository层之间的。...简单的说 比如现在有ARespository和BRespository,分别查询数据A和数据B,在业务A、B模块中需要各自查询数据A、B,在业务C模块和D模块中都需要将A、B数据通过业务逻辑处理(如拼接...写在最后 相信看了这篇文章,你对在Android中如何使用MVI有了一定的了解,但一定要切记,架构没有好坏之分,适合项目本身的架构就是好架构~ 期待我们下篇文章再见~
interface 上篇最重要的是介绍了去耦的工具之一依赖注入,本篇将继续介绍去耦工具:接口和适配器,本文是The Clean Architecture in PHP的第5篇。...construct( CustomerRepository $repo ) { $this->repository = $repo; } public function viewAction...$this->repository->getById( 1001 ); return $customer; } } 此处我们只是将对CustomerRepository从方法viewAction...转移到了构造函数,整个类CustomerController还是对CustomerRepository有依赖,并且由于类CustomerRepository实现上是从数据库读取数据,意味着CustomerController...使用接口来定义契约 另一种思考接口的角度是:接口是一种契约,定义了使用方和提供方之间的契约,只要满足契约,就ok。 让第三方库符合契约 我们自己来实现接口非常简单,但是如果是第三方代码怎么办呢?
记住,每一个App ID有一个唯一的CSR和配对的私钥。 解剖推送通知的基本原理 在进行任务3之前,需要理解一下你推送的通知,打开 newspush。...文本的提醒视图,并且有标准的提醒音效。 “link_url”实际上是一个自定义的字段。你可以添加类似的自定义字段到装载体中,并且它会被投送到你的应用。...可交互的通知是你通过注册通知时设置 categories 定义的.每一个通知分类都可以有多个预先自定义的交互。 一旦完成注册,就可以发送这个分类的通知.当接收到通知相应的交互就可以被用户获取。...对于 WenderCast 应用,你将定义一个自定义”View”动作的”News”分类,自定义”View”允许用户选择查看,如果用户选择就会在App中直接显示对应的消息详细文章。...let viewAction = UIMutableUserNotificationAction() viewAction.identifier = "VIEW_IDENTIFIER" viewAction.title
View层:对应于Activity与XML,只负责显示UI,只与Presenter层交互,与Model层没有耦合 Presenter层:主要负责处理业务逻辑,通过接口回调View层 Model层:..., viewAction: MainViewAction) { when (viewAction) { is MainViewAction.NewsItemClicked ->...MainViewAction.FetchNews -> fetchNews(state) } } } 如上所示,View通过Action与ViewModel交互,通过Action通信,有利于View与ViewModel之间的进一步解耦...,同时所有调用以Action的形式汇总到一处,也有利于对行为的集中分析和监控。...软件开发中没有银弹,所有架构都不是完美的,有自己的适用场景,读者可根据自己的需求选择使用。
类图: Subject(抽象被观察者):抽象主题角色把所有观察者对象的引用保存在一个集合里,并提供可以增加和删除观察者的接口。...还比较常用于GUI系统(图形用户接口),UI层与业务逻辑的解耦。总之,我们在需要使用监听和回调的需求时使用此模式。...不难发现都是存在监听或者回调的业务需求上,比如在自定义控件想获得它某个处理结果、又或者是统一通知所有界面干一些事情等等。下面就模拟一下这两种比较常用的情况。...View.onClickListener() { @Override public void onClick(View view) { System.out.println(“回调方法”); } }); view.performClick...在测试类中,我们模拟控件被执行时调用view.performClick()方法,就会通过回调注册的OnClickListener观察者的onClick方法会来通知观察者,所以回调就是一种观察者模式的具体的实现方式
架构主要分为以下几个部分 View层:对应于Activity与XML,只负责显示UI,只与Presenter层交互,与Model层没有耦合 Presenter层: 主要负责处理业务逻辑,通过接口回调View..., viewAction: MainViewAction) { when (viewAction) { is MainViewAction.NewsItemClicked...fetchNews(state) } } } 如上所示,View通过Action与ViewModel交互,通过 Action 通信,有利于 View 与 ViewModel 之间的进一步解耦...,同时所有调用以 Action 的形式汇总到一处,也有利于对行为的集中分析和监控 总结 -- 本文主要介绍了MVC,MVP,MVVM与MVI架构,目前MVVM是官方推荐的架构,但仍然有以下几个痛点 MVVM...,所有架构都不是完美的,有自己的适用场景,读者可根据自己的需求选择使用。
所以在presenter层,我们需要进行一项线程切换的工作,这样才能保证“所有的IO操作都应当在线程中完成,主线程只负责页面渲染的工作”这一优化准则。...简单解释一下,dataAction是我们的数据业务逻辑,viewAction是界面的显示逻辑,通过RxJava的传递和变换,dataAction会在由RxJava管理的IO线程—Schedulers.io...() 中执行,而viewAction则会在UI线程—AndroidSchedulers.mainThread()中执行。...包结构的通常分法有两种:一种是按功能模块分,把某一个功能的presenter, activity,view层接口放到一起;一种是按类型分,P层M层和V层分成三个包。...Q16:rxjava怎么实现队列像handler message那样,就是队列执行,不是并发执行? rxJava中的just方法和from方法都是以队列形式发出事件。
@Controller public class ViewAction { @GetMapping(path = "a") public String a() { return...自定义配置路径 如果我们希望指定一个自定义的路径,是否可以如SpringMvc那样,修改配置or代码设置映射完成呢? 在资源目录下,新加两个文件夹,分别是 o1, o2 ? 1....小结 文中给出了WebFlux的静态资源访问姿势,与SpringMVC有一些区别 url映射时,直接返回视图名,会提示Could not resolve view with name xxx 通过修改配置...方法来自定义资源路径映射 也可以针对单独的静态资源,借助@Value来手动路由 II....一灰灰Blog 尽信书则不如,以上内容,纯属一家之言,因个人能力有限,难免有疏漏和错误之处,如发现bug或者有更好的建议,欢迎批评指正,不吝感激 下面一灰灰的个人博客,记录所有学习和工作中的博文,欢迎大家前去逛逛
@Controller public class ViewAction { @GetMapping(path = "a") public String a() { return...自定义配置路径 如果我们希望指定一个自定义的路径,是否可以如 SpringMvc 那样,修改配置 or 代码设置映射完成呢?...小结 文中给出了 WebFlux 的静态资源访问姿势,与 SpringMVC 有一些区别 url 映射时,直接返回视图名,会提示Could not resolve view with name xxx...方法来自定义资源路径映射 也可以针对单独的静态资源,借助@Value来手动路由 II....一灰灰 Blog 尽信书则不如,以上内容,纯属一家之言,因个人能力有限,难免有疏漏和错误之处,如发现 bug 或者有更好的建议,欢迎批评指正,不吝感激 下面一灰灰的个人博客,记录所有学习和工作中的博文,
对于经典的 Android MVC 框架来说,如果只是简单的应用,业务逻辑写到 Activity 下面并无太多问题,但一旦业务逐渐变得复杂起来,每个页面之间有不同的数据交互和业务交流时,activity...接口的作用类似给层与层之间制定的一种通信协议,两个不同的层级相互交流,只要遵守这些协议即可,并不需要知道具体的实现是怎样 看到这里,有人可能就要问,这跟直接调用有什么区别,为什么要大费周章的给 view...理想的情况下,所有的数据请求都应当在线程中完成,主线程只负责页面渲染的工作 当然,Android 本身提供一些方案,比如下面这种: public void getString() { final...Action1 里,然后交由 rxJava,指定 Schedulers.io() 获取到的线程来执行。...这个框架的优点大概有以下几点: 每层各自独立,通过接口通信 实现与接口分离,不同场景(正式,测试)可以挂载不同的实现,方便测试和开发写假数据 所有的业务逻辑都在非UI线程中进行,最大限度减少IO操作对UI
领取专属 10元无门槛券
手把手带您无忧上云