在实现一个功能,推荐好友注册。
大致意思是注册的时候带上手机号,后端验证下手机号,就ok了
对用户mobile进行页面间的传递,但又想把用户mobile进行加密后传递,这样更安全.
在这个过程中会出现一个问题,就是URL编码问题,如果不对URL进行编码直接加码,那么在解码时,如果字符串存在“+”这种特殊符号,在解码时会出它替换成“ ”,此时在解密就会无法解开,导致错误的结果。
解决方法:
加密后,进行URL编码,然后到另一页面后,进行URL解码,再解密
解决方法2:
先对字符进行URL编码,再加密,这时不会出现+号等字符,然后到另一页面后,再解密,然后再解码即可。
解决!
思路比较简单,就不贴代码了。
继续阅读 »
上一篇
CH13 Buffer-Local Abbreviations
这章就是说iabbrev也能用来修饰
你想记住某个新的snippet最好办法就是disable掉原来的命令,比如iabbrev return NOPENOPENOPE
CH14 Autocommand Groups
autocmd是不会替换原先的命令的,假如使用两次同样的命令,那触发autocmd时会进行两次命令
特别要注意在你source $MYVIMRC时,autocmd会再载入一次!
可以用augroup testgroup autocmd xxx augroup END,这时如果你运行下augroup testgroup autocmd yyy
继续阅读 »
Spring简介
Spring框架由Rod Johnson开发,Rod Johnson's twitter,Rod Johnson's 百度百科,2004年发布了Spring框架的第一版。Spring是一个从实际开发中抽取出来的框架,因此它完成了大量开发中的通用步骤,留给开发者的仅仅是与特定应用相关的部分,从而大大提高了企业应用的开发效率。
Spring总结起来优点如下
* 低侵入式设计,代码的污染极低
* 独立于各种应用服务器,基于Spring框架的应用,可以真正实现Write Once,Run Anywhere的承诺
* Spring的IoC容器降低了业务对象替换的复杂性,提高了组件之间的解耦
* Spring的AOP支持允
继续阅读 »
定义:定义一系列算法,把他们一个个封装起来,并且使他们可以相互替换。
需求:绩效为S的人年终奖有4倍工资,绩效为A的人年终奖有3倍工资,绩效为B的人年终奖有2倍工资。
var calculateBonus = function(performanceLevel, salary) {
if (performanceLevel === 'S') {
return salary * 4;
}
if (performanceLevel === 'A') {
return salary * 3;
}
if (performanceLevel === 'B') {
继续阅读 »
TL;DR 对已发布到远程仓库的分支进行衍合操作(rebase),会产生重复的提交记录,本文举例描述这个问题。
git merge 与 git rebase 命令都用来合并代码,如果不需要审查提交记录,两者都可以无脑操作,相互替换;如果要生成有条理的提交记录,前者会记录多条开发分支扰乱视线,因而推荐使用后者。但后者要是使用不当,会生成令人糊涂的提交记录。这点官方文档里有描述,但我嫌它所举例子有点牵强,所以自己举例说明。
继续阅读 »
变量引用
用set命令可以查看所有的变量
unset var命令可以清除变量var,var相当于没有定义过
readonly var可以把var变为只读变量,定义之后不能对var进行任何更改。
对shell变量的引用方式很多,用这些方式可以方便的获取shell变量的值,变量值的长度,变量的一个字串,变量被部分替换后的值等等。shell变量常见引用方式如下:
继续阅读 »
事件
在d3入门系列文章中我们介绍过d3选择器,其中有提到选择器为交互添加或移除事件监听器的方法selection.on,除了选择器事件外,D3还提供了很多种事件机制,本节我们详细介绍下d3的事件机制
选择器事件
添加事件监听
跟jQuery类似的方法监听事件,传递参数为当前数据d和索引i;
如果所选择的元素相同类型的一个事件监听已经注册了,新的监听替换老的;
selection.on('click',function(d,i){
….
});
为相同事件类型注册多个监听器,该类型可以跟一个可选的命名空间,如“click.foo”和“click.bar”。
selection.on('click.foo',fu
继续阅读 »
gulp的一个案例,主要是对gulpfile.js中的任务进行分割,完成清理、文件复制同时进行筛选压缩、以及html中js和css引用的替换等
more
gulpfile.js
```javascript
'use strict';
var gulp = require('gulp');
var config = {
pkg: require('./package.json'),
publicDir: ['./{public,public/}'],
resourcesDir: ['./{resources/,resources/}'],
apps: ['ads', 'analysis', 'h
继续阅读 »
Android兼容库从24.2.0开始,对support-v4做了分库处理,原有的support-v4库拆分成为了support-compat、support-core-ui、support-fragment等库,本着稳定的原则,一直到25.0.0才开始在项目中升级support-v4库,将原有的support-v4替换为support-core-ui(其实,项目中只用到了ViewPager,SwipeRefreshLayout而已)以减少apk体积。然而问题来了,编译时出错,提示存在重复的类库。为保证support库版本一致,我还统一定义并使用了各模块的support版本变量,使用gradle dependencies查看依赖的时
继续阅读 »
简介
首先上个图
{% asset_img preference.png %}
Preference控件的目的在于替换Android自带的Preference,在[QuickAF]中,Preference被设计为控件,可以在layout/Activity中随意使用,不必像自带的Preference,需要配合res/xml/xxx_preference、PreferenceFragment/PreferenceActivity使用。
继续阅读 »