自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

杏树林

热爱分享的移动医疗团队

  • 博客(41)
  • 收藏
  • 关注

原创 iOS 给模糊加点动画

苹果从iOS 7 开始大范围使用模糊效果。为什么要使用模糊,当然是为了提高体验效果。虽然模糊能带给人非常清新的视觉体验,不过也切忌在你的App中过度使用,因为过度使用或者使用不当都会分散用户的注意力或者惹恼用户。在iOS 8之前我们在App中实现模糊效果可能还有些麻烦,但是也可以通过Core Image、vImage、GPUImage等工具库来实现,使用起来可能会有些复杂和一些性能问题。在iOS 8

2016-08-01 16:54:34 976

原创 Learning Swift 3.0 - 从精通到重新入门

前言API命名简化C式API替换GCD apiCore Graphics api大写开头的enum变成小写取消NS前缀参数label表现一致隐式解包可选ImplicitlyUnwrappedOptional类方法去掉了C风格的For循环去掉了柯里化语法去掉了 --语法Swift Package Manager前言Swift 3.0是 Swift 加入到开源社区以来,第一次发

2016-07-04 11:52:51 7850

原创 加快AS的Gradle Build速度

随着项目的代码以及依赖库的日益增多,构建的速度却是越来越慢,Android Studio2.0 之后提供了Instant Run貌似福利来了,但经过一段时间的使用发现不尽如人意,最大的吐槽点是首次编译的速度真是慢的让人抓狂,编译当前的项目就得5分钟左右。。。所以,我对Instant Run的目前选择是从入门到放弃。。。转而寻求其他方法,将构建耗时从5分钟减少到1分钟多,在此分享给感兴趣的同学。一、创

2016-07-04 11:34:57 5309 1

原创 JavaScript中的this

什么是this那么问题来了如何使this确定bindFat Arrow鸣谢最近在学习ReactNative,免不了被坑在JS上,跟Java和Objective-C不同,JS方法里的this显得很另类,有点令人困惑。什么是this要说清this是什么,可以从Function.prototype.call()方法说起,这个方法近似于function调用的原始实现,它的方法签名是这样的:fun.

2016-07-04 11:02:03 992

原创 Effective Objective-C 2.0 读书笔记

第 1 章 熟悉 Objective-C第 2 章 对象消息运行时第 3 章 接口和 API 设计第 4 章 协议与分类第 5 章 内存管理循环引用普通的两个变量互相引用Block 循环引用NSTimer悬挂指针持有释放不匹配performselectorCoreFoundation - Foundationtry catch其他autoreleasepool blo

2016-06-06 12:27:32 5425

原创 关于文字集与编码

写Python2的人,很多人都见过下面这行ErrorTraceback (most recent call last): File "/Users/Jack/Documents/ApricotForestDoc/2_product_rnd/redspiderlily/mailfetcher.py", line 35, in <module> if is_reply_mail(subjec

2016-06-06 12:00:44 837

原创 redux-async-connect

单页应用通常情况下都需要在进入某一个页面的时候去获取该页面的数据,当然 React 可以很轻松地完成,最简单的可以在 componentWillMount 里写获取数据的代码:class MyComponent extends React.Component { ... componentWillMount() { fetchData() } ...

2016-05-09 15:00:24 6308 5

原创 Swift的协议默认实现

继承和组合的缺点带默认实现的协议小结继承和组合的缺点在开发工作中,继承总是用来在多个类之间共享代码。 设想一个场景,一个人类,可以说话和睡觉,而一个Worker,除了上述功能,还可以工作。 解决方案很简单,我们可以 Person 和 Worker 之间建立继承关系:class Person { func say() { print("hello") }

2016-05-09 11:52:07 5960

原创 OkHttp之Interceptors

简介OkHttp实现了强大的拦截器机制,它的强大之处在于你可以用它来实现请求监控、请求重写以及重试。以下为一个简单的拦截器实现:class LoggingInterceptor implements Interceptor { @Override public Response intercept(Interceptor.Chain chain) throws IOException

2016-05-09 11:42:58 2521 1

原创 java instrument原理和Aattach API

上一次分享中有一个疑问,就是目标jvm进程和代理程序,也就是卧底程序是一起运行的.还记得吗? 通过使用如下命令:java -javaagent:jar 文件的位置 [= 传入 premain 的参数 ]这个势必会造成一个困惑,就是如果目标jvm进程已经先开始运行了,难不成卧底就监控不了了吗?这就好比一个小偷要去人家偷东西,难不成房子还没竣工,小偷就要去蹲点吗, 这显然是不合理的。 jdk的开发团队也

2016-05-09 11:41:12 6980

原创 mysql在互联网应用设计和开发中的注意事项

MySql是开源数据库,在互联网界非常受欢迎,有着极为广泛的应用。这是由MySql的特点和互联网公司的使用场景决定的。首先从MySql的特点上看,MySql简单易用,有着极高的稳定性,同时简单查询时性能极高;MySql的功能很完备,常用的功能几乎都有;开源,功能可自己定制,使用成本低廉;可以支持多种不同用途的存储引擎,以应对不同的业务场景等。同时MySql又是脆弱的,一个复杂sql或者大表join就

2016-04-11 14:40:10 4444

原创 推荐系统的常用算法原理和实现

推荐系统的出现推荐系统的任务就是解决,当用户无法准确描述自己的需求时,搜索引擎的筛选效果不佳的问题。联系用户和信息,一方面帮助用户发现对自己有价值的信息,另一方面让信息能够展现在对他感兴趣的人群中,从而实现信息提供商与用户的双赢。推荐算法介绍基于人口统计学的推荐这是最为简单的一种推荐算法,它只是简单的根据系统用户的基本信息发现用户的相关程度,然后将相似用户喜爱的其他物品推荐给当前用户。系统首先会根据

2016-04-11 12:23:21 27073 2

原创 测试驱动开发(TDD)在海外组的实践总结

测试驱动开发(TDD, Test Driven Development)是什么?测试驱动开发是一套开发方法论, 有经验的开发人员都会对自己的代码编写测试, 而测试驱动试图将这一过程做到极致, “如果测试被证明是有价值的, 那么, 我们为什么不能更频繁的去做测试, 如果将测试时间提前有益于提高应用质量, 那么, 为什么不先做测试, 再编写应用.”测试驱动开发要求在编写某个功能之前先编写测试代码, 然后

2016-04-11 11:57:50 2154

原创 重新认识数据驱动

这两周干的最有意思的一件事,莫过于搞清楚数据录入时效性这个衡量指标了。先讲讲故事吧:故事起源于数据录入时效性的一个分析,可以看下面的图。以前我们认为通过所谓每天完成百分数这个数据可以实现对时效性的有效评估。说白了就是,当时的一个假设是,如果1天的当天数据完成100%,那么就意味着数据可以在一天内完成,处理时效是24小时。 录入数据时效性但是,真实的用于工业生产,你会发现,其实每天的数据不可能达到理

2016-04-11 11:36:09 727

原创 将版本信息显示在App图标上

在测试App版本升级功能或者需要多版本切换的时候,可能需要经常去确定当前App的版本号,如果中途打断很有可能会忘记了当前的版本号,并且App内部如果没有显示版本号的功能,就只能从头来了。 如果能让App的版本信息直接显示到图标上,测试的时候是不是就会更加直观,更加效率,更加苏胡。 就像酱紫:怎么做呢?在Xcode中Target的Build Phases中,可以添加一个Run Script的Bui

2016-04-11 11:29:22 1283

原创 RxJava之Schedulers详解

本来是想说说RxJava之转换器的,但是发现,如果不来讲讲Rx的Schedulers,好像总感觉少了点什么。因为RxJava让我们用的最爽的地方,莫过于这一块了。我们可以随意的进行线程切换,是那么的简洁优美,尤其是配合RxAndroid之后,我们可以随意的进行子线程和UI线程的切换。同时,我们也可以自己来定义Rx之线程池的实现,合理分配应用的线程,本来就是应用开发的重中之重。本节以模拟两个线程池为例

2016-04-11 11:24:33 5440 1

原创 更聪明的搜索

人们已经越来越离不开搜索,搜索最大的目的其实就是让人在短时间内得到想要的东西,简单的说就是提升效率。使用App也是在提升效率,淘宝、京东提升购物效率,微信、陌陌提升射交效率,猎聘、拉钩提升招聘效率…iOS中的Spotlight已经不新鲜了,个人使用习惯的不同可能让有些人不知道她的存在,在手机存储暴增的今天,手机里不装个几百个App可能有点对不住你128G的存储了,但如果还滑来滑去的找应用那

2016-03-15 17:58:37 708

原创 redux源码详解

redux是基于flux单向数据流的一种实现,功能很强大,源码很精炼,可以扩展出各种中间件,so 酷。createStore.js这个文件其实很简单,首先我们来看一下它接受的参数。function createStore(reducer, initialState){}这里的reducer就是 combineReducers后的rootReducer,当我们dispatch一个action的时候

2016-03-15 17:57:08 1095

原创 Pitfall in node crypto and base64 encoding

Base64 is a commonly used encoding for transmitting binary data in text format, although it is kind of standard encoding. But actually the implementations in different languages and libraries are not t

2016-02-29 11:55:24 1000

原创 iOS Runloop

什么是Runloop在iOS开发中,NSObject对象的两个方法performSelector:withObject:,performSelector:withObject:afterDelay 问后者afterDelay参数传0与前者有何异同? 要回答这个问题,就不得不提起Runloop。在没有Runloop机制的设计里,程序的流程是启动->执行任务->结束,而App为了持续捕获用户的输入、

2016-01-18 15:06:15 602

原创 Lambda表达式

通常程序是根据输入计算输出,有时候,输入的东西不仅是数据,也可以是一个功能(函数),就是说功能也可以看做是数据,JAVA语言中常用接口回调的的方法来实现功能的传入,例如Collections中的sort方法对List集合进行排序:Collections.sort(empList, new Comparator<Emp>() { @Override public int

2016-01-18 15:03:07 410

原创 服务端流量日志收集框架

目前,服务端的反向代理服务Nginx,针对每一次服务端的访问请求,都会进行日志记录。这些日志信息包括,“请求时间”,“请求来源IP”, “User-Agent”,“请求URL” “Http Status Code”, “请求响应时长”等参数。于是,通过分析这些Nginx访问日志,我们就可以了解到全站的访问请求状况。但是,我们有多台Nginx服务器,所有的访问日志被分散存储到不同的机器上。在过去,服务

2016-01-18 14:52:13 3051

原创 如何愉快地调试一个 React Native for Android APP

最近在关注React Native(以下简称RN),对于这个融合了js & iOS & Android的新物种,尝试和它近距离接触的过程中,发现与单独调试js或者native比起来,调试RN的过程确实很繁琐,怎么个繁琐法?假设你已经配置好了Android开发环境,clone your project,并且已经npm install 了全部的依赖包,到这个姿势就可以开始调试了。调试Android AP

2015-12-28 11:17:34 13230

原创 iOS9 sqlite3 执行查询语句十分缓慢的解决方案

一、问题来源我所就职的公司是一家医疗互联网企业,作为一名iOS开发,目前我参与开发迭代的是一款面向医生用户的APP,这款APP的主要功能之一就是随手记病历,前不久我们的运营同学接到用户反馈,在病历数量较多(达到数千份),一些操作十分卡顿。 这个问题很容易就解决了(一些耗时操作卡住了主线程),不过在解决这个问题的过程中,反而发现了更大了一个问题,在sqlite中iOS8和iOS9执行一些相同的查询语

2015-12-28 10:54:43 1580

原创 Jmeter开发插件分享

最近一直在用Jmeter做接口测试的工作,这款工具同时具备GUI和non-GUI的功能,也就是既可以方便测试人员用GUI进行接口测试用例的编写和分析,也能很容易的使用non-GUI的方式部署到持续集成环境中去,可谓一举两得。要做接口测试,输出结果的断言是必不可少的。Jmeter提供了很多的断言方式,如下图:这些断言可以在我们编写case时很有用,但是并不是能够很方便的满足我们对于测试的要求,后期维护

2015-12-28 10:49:21 3399 3

原创 关于HIPAA

最近因为工作的关系,必须系统的学习一下HIPAA,把学习结果给大家分享一下,如下:第一部分:什么是HIPAA特别词汇说明(terms): Portability:这里特别说明,根据wiki在社会保险(social security)方面的解释,所谓携带型是保存(preserve)、维护(maintain)和交换(transfer)三个词的合意总称,因为很没有中文对应意思,所以特此解释,后面还是翻译

2015-12-28 10:37:07 10969 1

原创 iOS图片编辑(CIFilter)

在iOS中开发过程中,如果你想对图片进行简单的处理,那么很简单,苹果帮我们封装了一套简单易用的API——CIFilter。 使用CIFilter你可以做到:调节图片亮度、对比度、饱和度等图片基本的操作;使用模糊、锐化、高反差等对图片进行滤镜处理。一、基本概念1、CIFilterCategory图片处理的方式方法种类繁多,在CIFiler中是如何对这么多的图片处理方式进行归类的呢?苹果采用的是Ca

2015-11-30 11:23:47 1895

原创 JS与Native交互初识

本文将介绍iOS客户端UIWebView与JavaScript进行交互,实现数据传输,界面切换,控件显示等功能:需求背景交互方式简化操作UIWebViewJavaScriptBridgeCordovaUIWebViewJavaScriptBridge的使用需求背景客户端开发的优缺点: 优点: 交互流畅,交互性强,对于复杂手势和精彩动画的支持到位,可以给用户更好的交互体验.

2015-10-26 11:22:56 1469

原创 Android 性能优化

上周四参加了MDCC大会的 Android,我比较关注的5R,做一个安静的app,图片缓存以及React Native For Android,其中很大一部分的内容都是讲的性能优化,后续还会给大家带来一篇React Native ,下面就来总结一下Android性能优化方面的内容!人类大脑与眼睛对一个画面的连贯性感知其实是有一个界限的,譬如我们看电影会觉得画面很自然连贯(帧率为24fps),用手机当

2015-10-19 10:57:15 541

原创 Git常用命令详解和最佳实践

我们的团队使用Git作为版本控制工具已经有半年多的时间了,大家对一些常规的操作都已经比较熟练,然而在使用过程中难免遇到这样那样的问题,今天来总结一下遇到过的一些问题和解决方案。一、git pull与git pull - - rebase使用pull从远程主机更新代码时,会获取到远程指定分支的更新并合并到本地指定的分支,一般情况下不需要指定,默认把本地当前分支对应的远程分支的更新获取到并跟本地的当前分

2015-10-12 10:00:00 1490

原创 WatchOS 2.0分析

前言Watch OS 2的新变化网络请求的变化SDK的Framework变动Extension Delegate与IOS App通信数据管理新增的特性视频播放音频录制音频播放ComplicationopenSystemURL使用钥匙链存储安全敏感的信息其他总结前言在上一期AppleWatch开发初探里,我们知道虽然AppleWatch是一个很优秀的产品,但是它的软件远没

2015-09-29 10:07:53 1297

原创 简述Fragment

经常看到咱们开发的小伙伴们说掉进Fragment的坑里,今天就来详细的说明一下FragmentFragment是在Android 3.0 以后引入的,如果你想在3.0以前使用那就只能引入v4包了,它很好的解决了Android的碎片问题,尤其是在平板上更能显示出Fragment的优势. Fragment既然这么好,如何加载呢?一种方法可以直接使用fragment布局,静态加载,另一种动态加载,

2015-09-20 15:24:19 921 1

原创 AppleWatch开发初探

目录 Apple Watch 简介 为什么要做Apple Watch App 基本概念 开始进行开发 iPhone App、WatchKit Extension和Watch App 三者的关系 主要类 WKInterfaceController WKInterfa

2015-09-07 17:45:04 1272

翻译 服务端 API 接口设计最佳实践

在移动互联网开发领域,我们经常需要针对移动设备,提供数据访问接口。在移动时代以前,接口设计并没有面对这么大的挑战,因为那时期的应用开发,前后端的区分并没有那么明显,需要专门设计接口的场景并不是很多。然而,进入移动互联网时代,几乎所有的App数据访问,都是走的接口形式。而且,针对已经发布了安卓、iOS客户端版本的接口的重大修改,变得几乎不可能。于是,预先设计正确的、良好的接口,就显得格外重要。

2015-09-07 16:49:46 5552 1

原创 浅析Android事件分发

对于Android的UI来说,可以铺满整个屏幕,但是手机的屏幕小,所以机制的Android设计师们果断了选择了分层的布局,也就是今天为什么会有Android事件分发! 说到Android开发我们不得不提到三个高大上的方法:事件分发(dispatchTouchEvent(MotionEvent ev))、事件拦截(onInterceptTouchEvent(MotionEvent ev))、事件响

2015-08-28 16:34:39 538

原创 iOS开发中宏的应用

标签: 宏 #define iOS开发什么是宏宏(#define)是一种抽象(Abstraction),它根据一系列预定义的规则替换一定的文本模式。一个标识符被宏定义后,该标识符便是一个宏名。这时,在程序中出现的是宏名,对于编译语言,在该程序被编译前,先将宏名用被定义的字符串替换,这称为宏替换,替换后才进行编译,宏替换是简单的替换。为什么要用到宏定义例如,在开发中,当我们在

2015-08-27 17:59:30 775

原创 Web开发工具之HBuilder初探

工欲善其事,必先利其器。作为一名web前端开发者,我们要想工作得心应手,势必离不开顺手的工具。Hbuilder作为web编辑器的新秀就是这样一个利器。下面来一探究竟。HBuilder是DCloud推出的一款支持HTML5的免费WEB开发IDE。HBuilder的编写用到了Java、C、Web和Ruby。它基于Eclipse,所以顺其自然地兼容的Eclipse的plugin。HBuilder本身主体是

2015-08-24 09:46:51 8331

原创 三阶贝塞尔曲线Interpolator的应用

前期知识储备贝塞尔曲线的介绍关于Interpolator影响动画的缓动函数想实现缓动函数中的动画效果,发现很多都是贝塞尔方程实现的 所以现在需要实现它贝塞尔曲线三阶方程贝塞尔曲线三阶方程 B(t)=(1−t)3P0+3(1−t)2tP1+3(1−t)t2P2+t3P3,t∈[0,1]B(t)=(1-t)^3P_0+3(1-t)^2tP_1+3(1-t)t^2P_2+t^3P_3 ,t

2015-08-17 11:11:44 4572

原创 ios开发_Runtime

1.背景、定义1.1 Apple开源的Runtime代码1.2 Objective-C会尽可能的将编译要做的事情推迟到运行时。 Objective-C 语言不仅需要一个编译环境,同时也需要一个运行时系统(runtime)来执行编译好的代码。1.3 对于下面的简单方法:[receiver message];编译器将会转化为:objc_msgSend(receiver, selector)//无参数

2015-08-14 11:09:05 582

原创 Android调试工具_ Stetho

Stetho是Facebook开源的一个Android平台调试工具。Stetho能实现在不root手机的情况下,通过Chrome查看App的布局,Sqlite,SharedPreference,Network等。此外它还支持创建Dump文件。使用Stetho很重要的一点是要明白Stetho是一个调试工具,理论上是只能用于Debug包的,如果应用到Release包上,你的app的数据就全部暴露出

2015-08-05 09:40:06 2404 3

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除