- 博客(50)
- 资源 (23)
- 收藏
- 关注
原创 在Postman中使用rsa加密
1.使用这个项目实现加密:https://github.com/digitalbazaar/forge2.编译好的js文件:下载3.把js文件放到自己项目里面,保证通过http能访问到,cdn min.js的不好使,我已经试过了4.请求参数:{{password}}为postman的特殊语法,会被变量替换,password为需要加密的字段{ "base": {}, ...
2018-07-27 13:06:33
12813
7
原创 记录一次排查极光推送SDK死锁问题
线上服务稳定了好几个月,这两天抽风,总是有mysql数据行被锁,update会报错(Lock wait timeout exceeded; try restarting transaction)导致系统无法使用,害得我得一直在后台给用户解锁(通过mysql的kill命令)/(ㄒoㄒ)/~~极光sdk版本(接入sdk时从官方文档复制的,一直没更新,可谁没事会去更新这个呢):
2017-11-27 11:52:17
1853
原创 微博 JS SDK WB.login 获取当前登录用户信息
前提最近在做weibo登录不想用微博自带的控件实现调用WB.login发现这个方法的回调函数竟然是不带参数的无法获取当前登录用户的相关信息啊,QQ就好多了解决办法console.info(WB2)发现了一个oauthData属性查看oauthData发现一个uid属性,当然还有好多其他授权信息都在这 access_token,expires_in,remind_in
2015-03-16 12:35:51
2523
原创 华丽的分割线——JavaScript学习笔记
一直以来都在学习JavaScript,个人感觉都是小打小闹,没什么实在了,所谓的学习笔记吧。其实也就是在翻译,没什么总结能力。都快一年了一本书,也没搞完,好早最重要的基础部门都结束了。今日发现,这本书中文版都已出了,我还在这自己给自己做轮子干啥。继续将这本书看完,不再翻译了。
2013-09-04 22:52:09
1560
翻译 JavaScript学习笔记(四十六) 门面
门面(Façade)门面是一种简单的模式;它仅仅是给对象提供可选的接口。它是一种很好实践,让你的代码简短且不会处理太多的事情。遵循这个实践,你最终将获得比使用带有很多参数的超级方法(uber methods)更多的方法。有时2个或更多方法可能通常一起被调用。在这种情况下,额外创建一个方法包裹重复的调用时有意义的。比如,当处理浏览器事件时,你有下面的方法:stopPropagat
2013-09-02 21:25:34
897
翻译 JavaScript学习笔记(四十五) 策略
策略模式(Strategy)策略模式能够让你在运行时选择算法。你的代码使用者可以处理相同的接口但可以从一些可用的算法中挑选算法去处理他们具体的任务,依赖于他们打算做什么的环境。一个使用策略模式的示例将是处理表单验证。你可以通过validate()方法创建一个验证器(validator)对象,这个方法将会被调用,不管表单的具体类型并始终返回相同的结果——一个没有验证的数据的list和
2013-08-28 23:10:59
953
翻译 JavaScript学习笔记(四十四) 装饰器
装饰器模式(Decorator)在装饰器模式中,可以在运行时给一个对象动态的添加额外的功能。当和静态类打交道的时候(static classes),这可能是一个挑战。但在JavaScript中,对象是可变的,所以给对象添加额外功能的的过程在JavaScript中本身就不是问题。装饰器一个方便的功能就是期望行为(expected behavior)的定制和配置。你从你的简单对象开始,
2013-08-26 22:32:26
1543
翻译 JavaScript学习笔记(四十三) 迭代器
迭代器(Iterator)在迭代器模式中,你有一个对象包含了一些集合数据(aggregate data)。这些数据在内部可能存在一个非常复杂的数据结构中,但你想提供简单的方法去访问结构中的每个元素。你的代码使用者就不需要去了解你是如何组织你的数据;他们需要就是使用单独的元素。在迭代器模式中,你的对象需要提供一个next()方法。顺序调用next()将会返回下一个连续的元素,“下
2013-08-21 21:32:03
826
翻译 JavaScript学习笔记(四十二) 工厂
工厂(Factory)工厂的目的就是创建对象。它通常用一个类或者类的静态方法实现,有以下几个目的:重复执行创建相似对象的操作提供一种方法让工厂的使用者在编译时创建对象而不用知道具体的类型(class)第二点在静态类语言(static class languages)中更加重要,它可能对创建事先不知道的类的(在编译期间)实例是非常重要的。在Java中,这部分的实现是非常简单的
2013-08-20 22:24:34
877
翻译 JavaScript学习笔记(四十一) 单例
设计模式(Design Patterns)Gang of Four书中提到的设计模式(design patterns)提供了关于面向对象软件设计常见问题的解决方案。它们已经存在很长时间了并且被证明在很多情况下是有用的。这也是为什么熟悉它们并讨论它们是有帮助的。虽然这些设计模式是独立于语言的和实现无关的,它们已经被研究了很多年,主要从强类型静态类型语言的观点,比如C++和Java。
2013-08-19 22:09:35
1043
翻译 JavaScript学习笔记(四十) 借用方法
借用方法(Borrowing Methods)有时候你可能只需要一个已经存在的对象的一个或两个方法。你想复用他们,但你真的不想和那个对象够成父子(parent-child )关系。你只想使用你需要的方法,而不要继承其他的你永远也不会需要的方法。通过借用方法模式,这是可能的,得益于function的方法call()和apply()。你已经在前面见过这种模式了,在extendDeep()实
2013-08-01 23:13:08
1396
翻译 JavaScript学习笔记(三十九) 混合
混合(Mix-ins)将通过复制属性继承想法再深入一些,让我们考虑一下"混合(min-in)"模式。你可以从任意个数对象复制并将它们混合到一个新对象,而不是从一个对象复制。实现是简单的,仅仅是遍历传给函数的参数并复制每个对象的每个属性。function mix() { var arg, prop, child = {}; for (arg = 0; arg <
2013-08-01 22:18:00
859
翻译 JavaScript学习笔记(三十八) 复制属性继承
复制属性继承(Inheritance by Copying Properties)让我们看一下另一个继承模式—复制属性继承(inheritance by copying properties)。在这个模式中,一个对象从另一个对象获取功能,简单的通过复制它。下面是简单的函数extend()的实现一个例子:function extend(parent, child) { var i
2013-07-31 22:53:20
1044
翻译 JavaScript学习笔记(三十七) 原型继承
原型继承(Prototypal Inheritance)让我们以一种叫做原型继承(prototypal inheritance)模式开始"现代"无类的的模式("modern" classless patterns)的讨论。在这个模式中不包含类;这里对象从其它对象继承。你可以这样想:你有一个想复用的对象,并且你想创建第二个对象并从第一个对象获取函数。下面就是你如何做到这个:/
2013-07-30 21:50:20
954
翻译 JavaScript学习笔记(三十六) Klass
Klass许多JavaScript类库模仿(emulate)类,介绍一种新的语法糖(sugar syntax)。实现不同但通常有一些共同点,包括下面这些:被确定为类的构造方法的方法有一个命名的规范,比如initialize,_init或者其它类似的并且会被自动调用类从其它类继承在子类中可以访问到父类(parent class or superclass)注意:在这个章节中,我们
2013-07-28 23:10:17
1426
翻译 JavaScript学习笔记(三十五) 经典继承五-临时构造函数
经典继承五-临时构造函数(Classical Pattern #5—A Temporary Constructor)接下来这个模式解决了相同的原型的问题通过打断child原型和parent原型之间的直接关系,同时也能从原型链获益。下面是这种模式的一个实现,你有一个空的函数F()作为一个在child和parent之间的代理,F()的prototype属性指向parent的prototype。
2013-07-22 22:00:50
1494
翻译 JavaScript学习笔记(三十四) 经典模式四-共享原型
经典模式四-共享原型(Classical Pattern #4—Share the Prototype)不像前面的经典继承模式需要调用两次parent构造函数,下面这个模式根本不需要调用parent构造函数。经验法则复用的成员应该添加到原型(prototype)而不是this。因此为了继承这个目的,任何值得继承的东西都应该在原型中。那么你可以设置child的原型和parent的
2013-07-22 21:23:43
931
翻译 JavaScript学习笔记(三十三) 经典模式三 借用构造方式并设置原型
经典模式三 借用构造方便并设置原型(Classical Pattern #3—Rent and Set Prototype)组合前面两种模式,你首先借用parent构造方法,然后设置child的原型指向parent构造函数的新实例:function Child(a, c, b, d) { Parent.apply(this, arguments);}Child.prototyp
2013-06-27 21:29:17
1152
翻译 JavaScript学习笔记(三十二) 经典继承模式二-借用构造方法
经典模式二-借用构造方法(Classical Pattern #2—Rent-a-Constructor)接下来这个模式解决了从子(child)构造函数向父(parent)构造函数传递参数的问题。它借用parent构造函数,传递被绑定给this的child对象和所有参数:function Child(a, c, b, d) { Parent.apply(this, argument
2013-06-26 22:25:18
1379
翻译 JavaScript学习笔记(三十一) 经典继承模式
使用经典继承得到期望的结果(Expected Outcome When Using Classical Inheritance)这个经典继承实现目的就是让使用Child()构造函数创造的对象获得从另一个构造函数Parent()而来的属性。虽然这个讨论是关于经典继承模式(classical patterns),我们避开使用"类"(class),而说长一点的"构造函数"(constructor
2013-06-25 22:27:44
1240
翻译 JavaScript学习笔记(三十) 代码复用模式
代码复用模式(Code Reuse Patterns)代码复用是一个重要而且有趣的话题,因为应该尽量少写代码而尽可能的复用现有的代码——你或者其他人已经写好的代码。尤其是好的,测试过的,可维护的,可扩展的并且有文档的代码。当谈论代码复用的时候,心中想的的第一件是就是继承(inheritance),接下来有很多内容专注于这个主题。你将会看到一些方法去实现经典(Classical)继承
2013-06-21 21:33:49
887
翻译 JavaScript学习笔记(二十九) method()方法
method()方法JavaScript很可能让那些习惯了从类的角度思考的程序猿感动疑惑。这也是为什么一些程序猿选择让JavaScript更类一些(class-like)。其中一种尝试就是method()方法,这种方法让JavaScript更class-like的方法不是一个被推荐的方式,然而它是一种有趣的模式,并且你可能在一些程序中无意间碰到过。使用构造方法看起来就像在Jav
2013-06-06 22:11:10
3588
1
翻译 JavaScript学习笔记(二十八) 链式模式
链式模式(Chaining Pattern)链式模式可以让你调用一个对象的方法一个接着一个,不需要将前一个操作的返回值赋值给变量并且也不需要将你的调用分成多行:myobj.method1("hello").method2().method3("world").method4();当你创建的方法没有有意义的返回值时,你可以让它们返回this——它们正在工作的对象的实例。这能够让这个对象的
2013-06-05 22:01:06
1273
翻译 JavaScript学习笔记(二十七) 常量
对象常量(Object Constants)在JavaScript中没有常量,通常在许多现代环境中可能会给你提供一个const语句去创建一个常量。一种解决办法,一个常见的解决办法就是使用命名规范,让不应该被改变的变量名称全部大写。这个命名规范在JavaScript内置对象身上就被使用:Math.PI; // 3.141592653589793Math.SQRT2; // 1.
2013-06-05 21:27:17
1228
翻译 JavaScript学习笔记(二十六) 静态成员
静态成员(Static Members)静态的属性和方法就是那些在所有实例间都相同的属性和方法。在基于类的语言中,静态成员通常使用特殊的语法创建,然后就可以被使用,它们就像是像类的自身成员一样。比如:一些MathUtils一个静态方法max()可能这样被调用 MathUtils.max(3, 5),这是一个public静态成员的例子,可以不必创建对象的实例就可以使用。也可以有priva
2013-05-29 22:17:21
1255
翻译 JavaScript学习笔记(二十五) 沙箱模式
沙箱模式(Sandbox Pattern)沙箱模式可以避免命名空间的一些缺点(namespacing pattern),比如:依赖一个唯一全局的变量作为程序的全局符号。在命名空间模式中,没有办法存在两个版本程序或者类库在相同的页面中运行,因为它们都需要相同的全局符号,比如:MYAPP长的带点的名称去输入和运行时解析,比如:MYAPP.utilities.array顾名思义,沙箱
2013-05-28 22:20:13
2985
翻译 JavaScript学习笔记(二十四) 模块创建构造函数
模块创建构造函数(Modules That Create Constructors)在前面的例子中,创建了一个MYAPP.utilities.array对象,但有时候使用构造函数创建你的对象更方便,你也可以使用模块模式实现它。唯一的不同就是在包裹模块的立即执行函数返回一个函数而不是对象。下面这个例子就是模块模式创建一个构造函数 MYAPP.utilities.ArrayMYAPP.
2013-05-02 22:13:51
981
翻译 JavaScript学习笔记(二十三) 私有的属性和方法
私有的属性和方法(Private Properties and Methods)JavaScript中没有特殊的语法去声明private,protected和public的属性和方法,不像Java和其它语言。所有的对象成员都是public的:var myobj = { myprop: 1, getProp: function () { return this
2013-04-23 23:18:22
974
翻译 JavaScript学习笔记(二十二) 声明依赖
声明依赖(Declaring Dependencies)JavaScript类库通常都是模块化和使用命名空间的,这样可以让你只包含你需要的模块。比如:在 YUI2有一个全局变量 YAHOO,作为一个命名空间,然后模块作为全局变量的属性,比如YAHOO.util.Dom(DOM模块)和 YAHOO.util.Event(Event模块)。在你的函数或者模块的顶部是声明你的代码需要依赖
2013-03-13 22:39:42
840
翻译 JavaScript学习笔记(二十一) 对象创建模式-命名空间模式
在JavaScript中创建对象是非常简单的,你可以使用对象字面量(object literal)或者使用构造函数(方法)(constructor)。在这章里,我们会超出这些,看到一些额外的对象创建模式。JavaScript语言是简单而直接的,通常没有特别的语法实现你在其它语言中使用的功能,比如命名空间(namespaces)、模块(modules)、包(packages),私有属性(pr
2013-03-13 21:53:46
1060
翻译 JavaScript学习笔记(十九) 柯里化(Curry)
柯里(Curry)在接下来,我们会讨论的主题是柯里化(currying)和部分函数应用(partial function application),在我们深入这个主题之前,让我们首先看看什么是部分函数用法。函数应用(Function Application)在一些纯函数编程语言中,一个函数不被描述为调用(called or invoked),而是应用(applied)。在Jav
2013-01-29 22:09:40
4525
翻译 JavaScript学习笔记(十八) 配置对象
配置对象(Configuration Objects)配置对象模式是一种可以提供简洁API的一种方式,特别是当你正在构建一个类库或者其它会被别其它程序使用的代码。这是一个不争的事实,软件需求在开发和维护时都会改变。当你开始工作的时候,心中有一些需求,但后来会增加更多的需求,这是经常发生的。想象一下你正在写一个函数叫做addPerson(),接受一个first和second名字并
2013-01-23 21:57:41
1760
翻译 JavaScript学习笔记(十七) 方法的属性
方法的属性(Function Properties)函数是对象,所以它们可以有属性。事实上,它们有很多可以使用的属性;比如:每个函数,无论你用什么样的语法形式创建的,都会自动得到一个 length 的属性,包含了函数期待的参数的个数;function func(a, b, c) {}console.log(func.length); // 3你可以在任何时候给你的函数添加自定义的
2012-12-23 21:12:57
904
翻译 JavaScript学习笔记(十六) 初始化时分支
初始化时分支(Init-Time Branching)初始化时分支(也叫做载入时分支(load-time branching))是一种优化的模式;当你知道某一个明确的条件在整个程序生命周期中都不会发生改变,那么只判断这一次条件就会变的有意义;浏览器嗅探(Browser sniffing)(或者功能探测(feature detection)))都是典型的例子。比如,当你已经嗅
2012-10-21 21:32:27
1210
翻译 JavaScript学习笔记(十五) 对象即时初始化
对象即时初始化(Immediate Object Initialization)另一种可以防止全局作用域"污染",和前面的数的立即执行函数类似,就是对象即时初始化(Immediate Object Initialization)模式;这种模式使用一个带init()方法的对象,init()在对象创建后被立即执行;这个init()方法会完成所有的初始化工作:({// here you
2012-10-08 15:58:34
2678
翻译 JavaScript学习笔记(十四) 立即执行函数
立即执行函数(Immediate Functions)立即执行函数模式是一种语法,可以让你的函数在定义后立即被执行,比如:(function () {alert('watch out!');}());这种模式本质上就是函数表达式(命名的或者匿名的),在创建后立即执行;立即执行函数(immediate function)术语不是在ECMAScript标准中定义的,但它很短有助于描述和
2012-10-03 13:50:50
23554
3
翻译 JavaScript学习笔记(十三) 返回函数和"自定义"函数
返回函数(Returning Functions)函数是对象,所以它们可以被当做返回值;这意味着一个函数不一定要返回某种数据或数据的数组作为它的返回值;一个函数可以返回另一个更加专业的函数,或者依赖于输入返回一个合适的函数;这里有个例子:一个函数做了一些工作,可能是一些一次性的初始化的工作,然后在返回值上继续工作,返回值恰巧是另外一个函数,可以被执行:var setup
2012-10-03 05:49:51
1523
翻译 JavaScript学习笔记(十二) 回调模式(Callback Pattern)
函数就是对象,所以他们可以作为一个参数传递给其它函数;当你将introduceBugs()作为一个参数传递给writeCode(),然后在某个时间点,writeCode()有可能执行(调用)introduceBugs();这种情况下,introduceBugs()被称为回调函数(callback function)或简称为回调(callback:):function writeCo
2012-09-27 23:20:16
12555
1
翻译 JavaScript学习笔记(十一) 函数name属性和函数的提升
另一个考虑使用函数声明模式是因为一个只读的name属性;重申一遍,这个属性不是标准规定的,但在很多环境中都是可以访问的;对于函数声明和命名的函数表达式,name属性是被定义的;未命名的函数表达式,取决了具体的实现,可能是未定义(IE)或者定义为空字符串(Firefox,WebKit)。function foo() {} // declarationvar bar = func
2012-09-26 23:56:23
2461
1
翻译 JavaScript学习笔记(十) 函数声明VS函数表达式
我们应该在什么时候使用函数声明或函数表达式呢?当你在语法上不能使用函数声明的时候,你就可以使用函数表达式;比如:传递一个函数作为参数或者在对象字面量中定义一个函数:// this is a function expression,// pased as an argument to the function `callMe`callMe(function () {// I a
2012-09-26 21:57:02
1017
Beginning.PhoneGap
2012-01-17
JSON字符串格式化,JSON文件查看
2011-08-18
java web 标签大全.CHM
2011-05-10
常见算法.chm C语言和Java语言双重描述 面向对象面向过程通通有用
2011-03-25
汇编零起点教学.chm 汇编零起点教学
2011-03-01
J2EE6.0.chm J2EE6.0 API
2011-03-01
javascript参考手册.chm javascript参考手册
2011-03-01
css2.0.chm 最全最完整的css参考文档
2011-03-01
OllyDBG 附教程 快速上手
2010-10-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人