转载:https://sq.163yun.com/blog/article/169563599967031296 四.循环依赖的解决 果然! 当我将@SpyBean应用到存在有循环依赖的Bean上时,会导致如下异常: Bean with name userCouponService has been injected into other beans [bizOrderService,userCoupon TemplateService] in its raw version as part o…
转载:https://sq.163yun.com/blog/article/169561874192850944 众所周知,mock对于单元测试,尤其是基于spring容器的单元测试,是非常重要的.它可以帮助我们隔离其他模块的错误.外部依赖.慢操作.未实现功能等等,也可以帮助我们创建一些难以复现的场景等.       教育这边目前选择的mock框架底层是基于Mockito的.因为Mockito具有使用起来简单,学习成本很低,API简洁,测试代码可读性高,无须录制mock方法就能返回默认值等优点.…
转载:https://sq.163yun.com/blog/article/169564470918451200 三.间接依赖的bean的mock替换 对于前面提供的@Mock,@Spy+@InjectMocks的方案,通过了解其源码实现可以发现,存在无法解决间接依赖bean的mock替换问题.还是拿前面的OrderService和UserCouponService举例: 如果OrderService的实现类OrderServiceImpl直接依赖UserCouponService,所以可以通过…
JMockit是google code上面的一个java单元测试mock项目,她很方便地让你对单元测试中的final类,静态方法,构造方法进行mock,功能强大.项目地址在:http://jmockit.googlecode.com http://jmockit.org/.详细用法可以在上面找到答案. JMockit的测试方式可以通过下面2个途径实现 一.根据用例的测试路径,测试代码内部逻辑 对于这种情景,可以使用jmockit的基于行为的mock方式.在这种方式中,目的是测试单元测试及其依赖代…
<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <mockito.version>1.9.5</mockito.version> <powermock.version>1.5.5</powermock.version> </properties> ... <dependency> <…
新浪微博iOS客户端架构与优化之路   随着Facebook.Twitter.微博的崛起,向UGC.PGC.OGC,自媒体提供平台的内 容消费型App逐渐形成了独特的客户端架构模式.与电商和通讯工具类App不同,微博客户端具有多信息流.内容丰富多样.对数据量和延迟敏感等特点.微博的信息流承载着文字.网页.照片.视频.直播等多样的内容形式,所以复杂信息流对团队的开发效率.App的性能都带来了极大的挑战. 2016年6月24-25日,GMTC全球移动技术大会将在北京举行.本届大会,我们邀请到了新浪微…
Web前端性能优化WPO,相信大多数前端同学都不会陌生,在各自所负责的站点页面中,也都会或多或少的有过一定的技术实践.可以说,这个领域并不缺乏成熟技术理论和技术牛人:例如Yahoo的web站点性能优化黄金法则,以及大名鼎鼎的优化大师Steve Souders.本文并非一篇讨论性能优化技术方法的文章,而更多的是对中文站搜索List页面持续两年多的前端性能优化实践的思路总结.希望对正在从事这个领域研究的前端同学能有所帮助. 简单的说,我们的性能优化实践分为三个阶段:初探期.立规期.创新期, 每个阶段…
转 单元测试及框架简介 --junit.jmock.mockito.powermock的简单使用 2013年08月28日 14:33:06 luvinahlc 阅读数:6413 标签: 测试工具单元测试Junit实例Mockito 更多 个人分类: 单元测试 推荐一个新手学习Junit4的博客地址:http://www.cnblogs.com/eggbucket/archive/2012/02/02/2335697.html        点击打开链接 一.单元测试 单元测试概念: 所谓MT(M…
微博MySQL优化之路 数据库是所有架构中不可缺少的一环,一旦数据库出现性能问题,那对整个系统都回来带灾难性的后果.并且数据库一旦出现问题,由于数据库天生有状态(分主从)带数据(一般还不小),所以出问题之后的恢复时间一般不太可控,所以,对数据库的优化是需要我们花费很多精力去做的.接下来就给大家介绍一下微博数据库这些年的一点经验,希望可以对大家有帮助. 硬件层优化 这一层最简单,最近几年相信大家对SSD这个名词并不陌生,其超高的IOPS在刚出现在大家视野中的时候就让人惊艳了一把,而随着最近价格的不…
我们在做单元测试的时候,常常困扰于数据的持久化问题,很多情况下我们不希望单元测试影响到数据库中的内容,而且受数据库的影响有时我们的单元测试的速度会很慢,所以我们往往希望将持久化部分隔离开,做单元测试的时候不真正的将数据持久化.这种隔离我们一般使用抽象的方式,也就是利用接口或抽象类将持久化层隔离开,然后利用mock来模拟相应的接口或抽象类来完成相应的持久化类.MoQ就是这种Mock框架之一,MoQ使用了C#3.0,跟NMock相比MoQ使用起来更简单,而且是强类型的方式的,源码和dll可以到htt…
0 背景 早前严选 Android 工程,使用原生 Intent 方式做页面跳转,为规范参数传递,做了编码规范,使用静态方法的方式唤起 Activity public static void start(Context context, ComposedOrderModel model, String skuList) { Intent intent = new Intent(context, OrderCommoditiesActivity.class); ... context.startA…
CSS代码重构与优化之路   阅读目录 CSS代码重构的目的 CSS代码重构的基本方法 CSS方法论 我自己总结的方法 写CSS的同学们往往会体会到,随着项目规模的增加,项目中的CSS代码也会越来越多,如果没有及时对CSS代码进行维护,CSS代码不断会越来越多.CSS代码交错复杂,像一张庞大的蜘蛛网分布在网站的各个位置,你不知道修改这行代码会有什么影响,所以如果有修改或增加新功能时,开发人员往往不敢去删除旧的冗余的代码,而保险地增加新代码,最终的坏处就是项目中的CSS会越来越多,最终陷入无底洞.…
https://mzh.io/ Go ARM64 vDSO优化之路 2018-03-16  | Meng Zhuo 背景 Go怎么获取当前时间?问一个会Go的程序员,他随手就能写这个出来给你. import time time.Now() 这背后是一个系统调用,X86上调用SYSCALL来完成,ARM64上是SVC. // func walltime() (sec int64, nsec int32) TEXT runtime·walltime(SB),NOSPLIT,$24-12 MOVW $…
1.查询的模糊匹配 尽量避免在一个复杂查询里面使用 LIKE '%parm1%'——红色标识位置的百分号会导致相关列的索引无法使用,最好不要用. 兄弟连教育分享-SQL性能优化十条经验 解决办法: 其实只需要对该脚本略做改进,查询速度便会提高近百倍.改进方法如下: a.修改前台程序——把查询条件的供应商名称一栏由原来的文本输入改为下拉列表,用户模糊输入供应商名称时,直接在前台就帮忙定位到具体的供应商,这样在调用后台程序时,这列就可以直接用等于来关联了. b.直接修改后台——根据输入条件,先查出符…
一.存储格式介绍 Greenplum(以下简称 GP)有2种存储格式,Heap 表和 AO 表(AORO 表,AOCO 表). Heap 表:这种存储格式是从 PostgreSQL 继承而来的,目前是 GP 默认的表存储格式,只支持行存储. AO 表:  AO 表最初设计是只支持 append 的(就是只能 insert ),因此全称是Append-Only,在4.3之后进行了优化,目前已经可以 update 和 delete 了,全称也改为 Append-Optimized.AO 支持行存储(…
Mock 框架 Moq 的使用 Intro Moq 是 .NET 中一个很流行的 Mock 框架,使用 Mock 框架我们可以只针对我们关注的代码进行测试,对于依赖项使用 Mock 对象配置预期的依赖服务的行为. Moq 是基于 Castle 的动态代理来实现的,基于动态代理技术动态生成满足指定行为的类型 在一个项目里, 我们经常需要把某一部分程序独立出来以便我们可以对这部分进行测试. 这就要求我们不要考虑项目其余部分的复杂性, 我们只想关注需要被测试的那部分. 这里就需要用到模拟(Mock)技…
TVM 优化 ARM GPU 上的移动深度学习 随着深度学习的巨大成功,将深度神经网络部署到移动设备的需求正在迅速增长.与桌面平台上所做的类似,在移动设备中使用 GPU 既有利于推理速度,也有利于能源效率.但是,大多数现有的深度学习框架并不很好地支持移动 GPU.难点在于移动 GPU 架构和桌面 GPU 架构之间的区别.这意味着在移动 GPU 上进行优化需要特别努力.非平凡的额外工作最终导致移动 GPU 在大多数深度学习框架中支持不力. TVM 通过引入统一的 IR 堆栈,解决为不同硬件部署的困…
我前面几篇随笔介绍了关于几篇关于SqlSugar的基础封装,已经可以直接应用在Winform项目开发上,并且基础接口也通过了单元测试,同时测试通过了一些Winform功能页面:本篇随笔继续深化应用开发,着手在在.net6框架的Web API上开发应用,也就是基于.net core的Web API应用开发,这样可以应用在不同的前端接入上.本篇随笔主要介绍基于.net6框架的Web API的相关整合开发内容,内容涉及到Swagger的整合支持.SeriLog的支持.JWT鉴权和用户身份信息缓存.基类…
fox-mock 是基于Java Agent实现的自测,联调Mock利器.能解决你的这些问题: 开发过程中,依赖了下游多个接口,想跑个单测都必须得等下游把服务部署好 联调过程中,下游某个接口出问题,阻塞了整个流程 其他需要Mock方法返回值的场景 最大的优点: 无侵入式的Mock解决方案,支持应用启动前挂载和应用启动后attach挂载. 支持本地文件mock 支持对接配置中心管理mock数据 Github地址:https://github.com/yinjihuan/fox-mock 使用视频讲…
MoQ(基于.net3.5,c#3.0的mock框架)简单介绍 - 你听海是不是在笑 - 博客园 http://www.cnblogs.com/nuaalfm/archive/2009/11/25/1610755.html 模拟对象测试技术Mock(一) - Justina Chen - 博客园 http://www.cnblogs.com/RCFans/archive/2009/07/28/1533268.html (转)使用 NUnit Mocking .NET 对象 - 阿龍 - 博客园…
优化移动设备上SharePoint 2013网站 本文由SPFarmer翻译自Waldek Mastykarz的文章 移动市场在持续的增长.在不远的将来,使用移动设备浏览站点将会超过电脑.为了保证用户友好的体验,我们必须优化站点,以便在不同的设备上展示. SharePoint 2013 提供了一系列的选项来优化在移动设备上訪问面向公众的站点.依据你的实际情况,你能够选择一个或者一系列组合的选项. 年,使用移动设备訪问站点会超过电脑.移动设备有不同的尺寸和功能. 由于电脑的体验对于移动用户来说并不…
第一步 把自己的框架更新到github 上,为了提交地址给他人下载.这里就不详细介绍如何把项目更新到github上了 第二步 这个时候我们的项目已经挂在github上了我们需要给本地的项目新建一个Podspec描述文件 // 进入到项目目录下 cd xxx/xxx/xxx // 创建Podspec文件 pod spec create “你的Podspec名字” 此时你已经在项目目录下创建了一个Podspec文件了这个时候我们需要对他进行编辑注意:最好用xcode 去编辑 防止错误 只能输入英文标…
每日更新关注:http://weibo.com/hanjunqiang  新浪微博! 为了更方便的集成第三方框架有了cocopods 的, 当我们有了相对比较好的框架的时候如何更新到cocopods 供他人参考呢? 下面我一步一步带大家开源自己的框架. 第一步 把自己的框架更新到github 上,为了提交地址给他人下载. 这里就不详细介绍如何把项目更新到github上了 第二步 这个时候我们的项目已经挂在github上了 我们需要给本地的项目新建一个Podspec描述文件 // 进入到项目目录下…
Struts2框架下的文件上传机制:1.通过multipart/form-data form提交文件到服务器2.文件名是通过什么地方设置的?在strust2的FileUploadInterceptor中有下面这段代码,将参数写入写入到request的parameters中,再通过OGNL注入到Action中去.所以按照struts2约定,上传文件名以及上传文件类型和上传文件本身,都是以页面input的name来决定的. String[] fileName = multiWrapper.getFi…
写在前面 开发过程中会经常处理集合这种数据结构,简单点的处理方法都是使用内置的map实现.但是如果要应对大量数据,例如,存放大量电话号码,使用map占用内存大的问题就会凸显出来.内存占用高又会带来一些列的问题,这里就不展开说了.还有就是,大量数据存放于map,查找的哈希算法消耗也会很高.这时就该考虑对数据结构进行优化.之前浏览awesome-go时发现了一种叫bitset的数据结构,今天就介绍一下它. bitset 简介 首先这是一个数据结构.从名字set不难发现,这是一个集合的数据结构.bit…
SpringMVC 使用验证框架 Bean Validation(上) 对于任何一个应用而言在客户端做的数据有效性验证都不是安全有效的,这时候就要求我们在开发的时候在服务端也对数据的有效性进行验证. SpringMVC 自身对数据在服务端的校验(Hibernate Validator)有一个比较好的支持,它能将我们提交到服务端的数据按照我们事先的约定进行数据有效性验证,对于不合格的数据信息 SpringMVC 会把它保存在错误对象中(Errors接口的子类),这些错误信息我们也可以通过 Spri…
第三百九十节,Django+Xadmin打造上线标准的在线教育平台—Django+cropper插件头像裁剪上传 实现原理 前台用cropper插件,将用户上传头像时裁剪图片的坐标和图片,传到逻辑处理函数里,在逻辑处理函数里接收原始图片进行保存,然后接收用户的裁剪坐标,利用python的Pillow模块图像处理模块里的PIL(图像库),将原始图片根据用户裁剪坐标进行裁剪 有两个重点:第一要准备好cropper头像裁剪插件,第二python环境要安装好Pillow模块 htnl页面 编写htnl页…
为了更方便的集成第三方框架有了cocopods 的, 当我们有了相对比较好的框架的时候如何更新到cocopods 供他人参考呢? 下面我一步一步带大家开源自己的框架. 第一步 把自己的框架更新到github 上,为了提交地址给他人下载.这里就不详细介绍如何把项目更新到github上了 第二步 这个时候我们的项目已经挂在github上了我们需要给本地的项目新建一个Podspec描述文件 // 进入到项目目录下 cd xxx/xxx/xxx // 创建Podspec文件 pod spec creat…
3 router 框架优化 3.1 apt 生成代码量过大问题优化 思考框架本身,其实可以发现仅有 router 映射表是需要根据注解编译生成的,其他的全部代码都是固定代码,完全可以 sdk 中直接编码提供.反过来思考为何当初 sdk 开发需要编写繁重的 apt 生成代码,去生成这些固定的逻辑,可以发现 htrouterdispatch-process 工程是一个纯 java 工程,部分纯 java 类的提供在 htrouterdispatch.由于无法引用 Android 类,同时期望业务层接…
专访阿里巴巴研究员“赵海平”:Facebook的PHP底层性能优化之路 http://www.infoq.com/cn/articles/interview-alibaba-zhaohaiping…