2016-10-26 ALEX LIN
更新日志 Method Swizzle(方法调配、方法混合、方法调和、方法混写) 是 Objective-C 运行时的黑魔法之一。我们可以通过 Swizzle 的手段,在运行时对某些方法的实现进行替换,这是 Objective-C 甚至说 Cocoa 开发中最为华丽,同时也是最为危险的技巧之一。Swizzle 使用了 Objective-C 的动态派发,对于 NSObject 的子类是可以直接使用的。 通过此方案,可以为那些『完全不知道其具体实现的』黑盒方法增加日志记录功能,这非常有助于程序调试。然而,次做法只在调试程序时有用。很少有人在调试程序之外的场合用上述『Method Swillze』来永久改动某个类的功能。不能仅仅因为 继续阅读 »
2015-08-14 王财勇
我们下载了Github上的代码,并仔细阅读了其中的细节。最后我们对源代码做了一些修正(新代码已上传到Github),主要包括: 修复了代码运行中出现的一些bug 添加了一些函数,使代码更简洁 训练阶段我们采用了分批处理,优化了内存 参考论文《Extended Supervised Descent Method for Robust Face Alignment》,优化了源程序 在测试阶段,我们使用了逆的缩放和平移变换将得到的aligned_shape 转换为原始图片的特征点true_shape 添加了详细的注释,使之更容易明白。 more Dependency: Vlfeat library: http://www.vlfeat 继续阅读 »
2016-10-13 曹强
php
简介 在[PHP设计模式(七):设计模式分类][2]中我们提到过创建设计模式(Creation patterns),创建设计模式专注于设计对象(Object)和实例(Instance)的创建过程。 创建设计模式包括下面五种设计模式: 抽象工厂设计模式(Abstract Factory) 生成器模式(Builder) 工厂设计模式(Factory Method) 原型设计模式(Prototype Method) 单例设计模式(Singleton) 当程序逐渐扩展的时候,需要更多的新对象,新对象的创建不应该依赖于创建者,换句话说,新对象的创建过程,不应该依赖调用创建函数的对象。为了减少冗余,增加拓展性,工厂模式就是一种 继续阅读 »
2017-04-06 Eric Wang
缘起 每个人的大脑都有其自己的舒适区,比如说从家到公司开车上班,大脑会优先选择走熟悉的路线,而不是每天变个花样走陌生的路线,所以大脑其实是有惰性的,它总是会优先选择自己最熟悉、最不费力、也最简单的策略。长此以往,如果你不主动跳出舒适区的话,大脑自己是无法成长的。这一点小马(马克·扎克伯格,不是马云爸爸哦)也已经认识到了,不得不说,牛人就是牛人,尽管衣食无忧,此生不必奋斗了,但是依然在不断进步,让自己变得更加优秀。小马自己说“每年我都要给自己设立一个挑战,去学习新的东西,让自己在工作之外得到成长”。所以他特别为自己制定了每一年的挑战计划,列表如下: 2009年挑战每天戴领带上班 2010年挑战学习汉语 2011年挑战只吃自己亲手屠 继续阅读 »
2015-09-09 Jason Liao
function 里的 this 在不同的时候,会有不同的表现,一般会有以下四种情况 Invocation as a function Invocation as a method Invocation as a constructor Invocatuon with the apply() and call() method 继续阅读 »
2013-11-05 veryyoung
I have a class that needs to obtain a reference to it's application's AssetManager. This class does not extend any sort of android UI class, so it doesn't have a getContext() method, or anything similar. Is there some sort of static Context.getCurrentApplicationContext() type of method? To clarify: my class is inte 继续阅读 »
2013-11-28 veryyoung
顾名思义,装饰模式就是给一个对象增加一些新的功能,而且是动态的,要求装饰对象和被装饰对象实现同一个接口,装饰对象持有被装饰对象的实例,关系图如下: Source类是被装饰类,Decorator类是一个装饰类,可以为Source类动态的添加一些功能,代码如下: public interface Sourceable { public void method(); } public class Source implements Sourceable { @Override public void method() { System.out.println("the original 继续阅读 »
2018-04-04 findneo
note of https://www.ichunqiu.com/course/56927 Hacking三步曲 理解系统(Understanding) 系统性的基础课程学习,深入理解计算机系统运作机制。 破坏系统(Breaking) 学习与创造漏洞挖掘与利用技巧 重构系统(Reconstruction) 设计与构建系统防护 基础课程学习 核心基础课程——计算机的工作原理 体系结构 CPU的设计与实现 机器指令与汇编语言 指令的解码、执行 内存管理 CMU 18-447 Introduction to Computer Architecture https://www.ece.cmu.edu/~ece447/s15/dok 继续阅读 »
2018-03-04 Vaniot
工厂模式是一种创建型的设计模式,提供一种创建对象的方式。 more 简单工厂模式 简单工厂模式又称为静态工厂方法(Static Factory Method)模式。在简单工厂模式中,创建对象不会对客户端暴露创建的逻辑,使用一个共同的接口指向新创建的对象,由子类决定实例化的工厂类,创建的过程延迟到子类中进行。工厂模式常用于实例化对象的子类可能变化或者创建某个对象时需要许多的额外操作的场景,解决接口选择的问题。 - 接口类 ``` 继续阅读 »
2015-05-01 码农明明桑
近日,我们的应用,在编译的时候不幸的遇到这个错误 Conversion to Dalvik format failed: Unable to execute dex: method ID not in [0, 0xffff]: 65536 这才让我意识到原来我们的程序中,方法数已经超过了65536。在之前,已经知道了android系统的java虚拟机dalvik在执行java程序时,使用原生类型short来索引dex文件中的方法,因此方法数就呗限制在65536了。之前我一直以为,这个数量已经很大了,不会达到上限,结果今天就达到了。 不过这个东西呢,我们也是很容易的进行解决的,因为,就在去年不久前,google官方提供了多dex 继续阅读 »