;

DI / 双向数据绑定中: 用户 -> 内存 : 浏览器提供有User Event触发事件的API,如click,change…等等等; 内存 -> 用户: 浏览器并没有提供数据监测的API,故任何内存数据变动(定时、异步请求、事件触发…导致的数据变动)都无法被Listen,自然也就没办法再处理callback了; 但我们可以基于这些大部分能够产生数据变动的事件进行封装(如:click、mouse-enter、Timeout…),在每次事件发生后,执行完事件后,检查一遍数据的变化,如果数据和上次的值有变化,则执行这个值(注册时)对应的callback(框架中),这个callback可能是view层的一个数据展现,也可能是一段处理function; 在检查数据变化的时候,由于你并不知道这个事件是对哪些数据进行了更改,以及这个事件有可能造成事件之外的其他任何地方的数据更改,所以必须进行一次大检查,将所有“注册”过的值全部检查一遍,一次检查称为一个周期,每次最少检查两遍,因为第二遍用来确认,前一遍的变动中是否有数据的变动,导致了其他数据的变动,如果第二次有变动的话,会再执行一遍,直到最后两次完全一致,则停止检查(其实就是个(递归(遍历))的过程),考虑到内存的消耗和死循环的风险,脏检查每个周期最多递归执行10遍,…

angular的脏检测 2017年10月22日
;

Object.defineproperty语法 在一个对象上定义新的属性 var o = {}; // 创建一个新对象 // Example of an object property added with defineProperty with a data property descriptor Object.defineProperty(o, "a", {value : 37, writable : true, enumerable : true, configurable : true}); // 对象o拥有了属性a,值为37 // Example of an object property added with defineProperty with an accessor property descriptor var bValue; Object.defineProperty(o, "b", {get : function(){ return bValue; }, set : function(newValue){ bValue = newValue; }, enumerable : true, configurable : true}); o.b = 38; 数据和视图联动 给对象o定义…

Object.defineproperty实现数据和视图的联动 2017年10月21日
;

// Converts canvas to an image function convertCanvasToImage(canvas) { var image = new Image(); image.src = canvas.toDataURL("image/png"); return image; } // Converts image to canvas; returns new canvas element function convertImageToCanvas(image) { var canvas = document.createElement("canvas"); canvas.width = image.width; canvas.height = image.height; canvas.getContext("2d").drawImage(image, 0, 0); return canvas; }

canvas与image互相转换 2017年10月20日
;

1.jsonp jsonp只支持GET方式,type设为POST,也会自动变为GET 2.iframe 可以使用创建一个隐藏的iframe来实现,与ajax上传图片原理一样,较麻烦 3.服务端设置Access-Control-Allow 在被请求的Response header中加入 header(‘Access-Control-Allow-Origin:*’); header(‘Access-Control-Allow-Methods:POST’); header(‘Access-Control-Allow-Headers:x-requested-with,content-type’); Access-Control-Allow-Origin:* 表示允许任何域名跨域访问 如果需要指定某域名才允许跨域访问,只需把Access-Control-Allow-Origin:*改为Access-Control-Allow-Origin:允许的域名 例如:header(‘Access-Control-Allow-Origin:http://www.client.com’);

ajax跨域总结 2017年10月18日
;

sudo apt-get update sudo apt-get install wget wget –version

wget 2017年10月18日
;

步骤一:修改全局配置文件 路径:/etc/mysql/my.cnf bind-address = 127.0.0.1 修改为: bind-address = 0.0.0.0 步骤二:针对特定用户授权 (xshell内执行sql语句始终无反馈,不得已发现在phpmyadmin内可手动修改) phpmyadmin找到user一栏,接下来’Change Login Information’选项host改为’any host’ 命令行模式下修改: update user set host = ‘%’ where user = ‘root’; //注意=两边的空格 select host,user from user; //查看结果 grant命令相关 1.格式 grant 权限 on 数据库对象 to 用户 grant 权限1,权限2,…权限n on 数据库名称.表名称 to 用户名@用户地址 identified by ‘连接口令’; 2.示例 权限1,权限2,…权限n代表select,insert,update,delete,create,drop,index,alter,grant,references,reload,shutdown,process,file等14个权限。 当权限1,权限2,…权…

mysql用户开启远程连接 2017年10月8日
;

“社会支持(social support)系统”,也称为“社会关系网”,是20世纪70年代提出来的心理学专业词汇,即个人在自己的社会关系网络中所能获得的、来自他人的物质和精神上的帮助和支援。 社会支持从性质上可以分为两类: 一类为客观的、可见的或实际的支持: 包括物质上的直接援助和社会网络、团体关系的存在和参与,后者是指稳定的婚姻(如家庭、婚姻、朋友、同事等)或不稳定的社会联系如非正式团体、暂时性的社会交际等的大小和可获得程度,这类支持独立与个体的感受,是客观存在的现实; 另一类是主观的、体验到的情感上的支持:指的是个体在社会中受尊重、被支持、理解的情感体验和满意程度,与个体的主观感受密切相关。有学者将其分别命名为社会支持的可利用度和自我感觉到的社会关系的适合程度,在进行心理学的科学评定时用以评定其的社会支持大小。

社会支持系统 2017年9月10日
;

无力感是主观与客观的矛盾,人常常想要达成一项主观的意志,但由于自己的身份,社会地位,各种因素的影响和干扰,你的实际行动往往未能达到预定的目标,这时候,人们心中往往会有淡淡的无力感,一闪即逝。

无力感 2017年9月10日
;

失态是人类特有的一种行为错位。简单的解释就是表现出被认为是不正常的行为举止。它与失常的区别在于,前者是意识清楚正常的,而后者是意识模糊的。失态这个行为,是在社交活动中表现的,独处的时候,它是无意义的。 失态的行为机制可能是条件反射,迅速的条件反射使主体来不及用意识去控制,而导致行为与主体思想意识的错位。

失态 2017年9月10日
;

文档:https://mp.weixin.qq.com/wiki

微信开发 2017年8月31日
;

1.方括号内的特殊符号除了方括号符号,其实可以不加转义符号,例如:/ab[.*]c/和/ab[\.\*]c/等效 参考:捕获,http://www.cnblogs.com/pmars/archive/2011/12/30/2307507.html

正则表达式(三)-补充 2017年8月25日
;

1.什么是 html 标签,html 实体 . html标签 描述 html实体 great than &gt; . 2.为什么需要转换 比如我们要在浏览器里显示代码,浏览器会把它当作 html 标签语言直接执行,解决方法就是将 html 标签转变为 html 实体再编写到代码中. 比如我们要显示<script>alert(1)</script>, 那么我们的代码中应该这样写:&lt;script&gt;alert(1)&lt;/script&gt;。 既然代码&lt;script&gt;alert(1)&lt;/script&gt;显示的是<script>alert(1)</script>, 那么如果要显示&lt;script&gt;alert(1)&lt;/script&gt;; 又应该写怎么样的代码呢? 道理很简单,一段文本,如果在页面中的显示跟代码不一致,那说明肯定是里面包含了html的关键字,比如上一段代码中就包含了关键字&,如果想要在浏览器中显示&(html关键字),则需要在代码中用它对应的实体来替换掉,&的实体为&amp;, 因此要显示&a…

html标签与实体详细说明 2017年8月23日
;

不懂正则引擎原理的情况下,同样可以写出满足需求的正则,但是不知道原理,却很难写出高效且没有隐患的正则。所以对于经常使用正则,或是有兴趣深入学习正则的人,还是有必要了解一下正则引擎的匹配原理的。 1.为什么要了解引擎匹配原理 一个个音符杂乱无章的组合在一起,弹奏出的或许就是噪音,同样的音符经过作曲家的手,就可以谱出非常动听的乐曲,一个演奏者同样可以照着乐谱奏出动听的乐曲,但他/她或许不知道该如何去改变音符的组合,使得乐曲更动听。 作为正则的使用者也一样,不懂正则引擎原理的情况下,同样可以写出满足需求的正则,但是不知道原理,却很难写出高效且没有隐患的正则。所以对于经常使用正则,或是有兴趣深入学习正则的人,还是有必要了解一下正则引擎的匹配原理的。 2.正则表达式引擎 正则引擎大体上可分为不同的两类:DFA和NFA,而NFA又基本上可以分为传统型NFA和POSIX NFA。 DFA Deterministic finite automaton 确定型有穷自动机 NFA Non-deterministic finite automaton 非确定型有穷自动机 Traditional NFA POSIX NFA DFA引擎因为不需要回溯,所以匹配快速,但不支持捕获组,所以也就不支持反向引用和$number这种引用方式,目前使用DFA引擎的语言和工具主要有…

NFA引擎匹配原理 2017年8月23日
;

零宽断言 环视/预查 反向引用 环视/预查(lookaround) (?<=…),(?<!…),(?=…),(?!…) 忽略量化词/非贪婪模式 (??,*?,+?,{m,n}?,{m,}?) 1.后向引用 使用小括号指定一个子表达式后,匹配这个子表达式的文本(也就是此分组捕获的内容)可以在表达式或其它程序中作进一步的处理。默认情况下,每个分组会自动拥有一个组号,规则是:从左向右,以分组的左括号为标志,第一个出现的分组的组号为1,第二个为2,以此类推。 组号分配说明: ①.分组0对应整个正则表达式 ②.实际上组号分配过程是要从左向右扫描两遍的:第一遍只给未命名组分配,第二遍只给命名组分配--因此所有命名组的组号都大于未命名的组号 ③.你可以使用(?:exp)这样的语法来剥夺一个分组对组号分配的参与权. 后向引用用于重复搜索前面某个分组匹配的文本。例如,\1代表分组1匹配的文本。 \b(\w+)\b\s+\1\b可以用来匹配重复的单词,像go go, 或者kitty kitty。这个表达式首先是一个单词,也就是单词开始处和结束处之间的多于一个的字母或数字(\b(\w+)\b),这个单词会被捕获到编号为1的分组中,然后是1个或几个空白符(\s+),最后是分组1中捕获的内容(也就是前面匹配的…

正则表达式(二)-进阶 2017年8月23日
;
魔术,切手指 2017年8月22日
;

结构 定界符:多种都可以,常用为// 原子:最少的一个匹配单位(放在定界符中),在一个正则表达式中,至少要有一个原子 元字符:元字符不能单独使用,修饰原子,是用来扩展原子功能和限定功能的,(写在定界符号中) 模式修正符号:修正,对模式(正则)修正,(写在定界符号右边) 备注: 1.正则表达式为一个字符串,单引号双引号有区别,优先使用单引号(双引号内认转义字符,单引号内不认转义字符) 2.定界符不仅局限于“//”。除了字母,数字和斜线“\”以外的任何字符都可以作为定界符,像“#”,“|”,“!”等都可以的。 3.打印字符指键盘上所有可以显示出来的字符,非打印值无法显示的字符,比如,回车,换行 4.\转义字符, (1)可以将有意义的字符转成没有意义的原子字符(将有意义变为原子)。 (2)可以将没有意义的字符转成有意义的原子(比如:\t,tab键) (3)所有没有意义的字符,加了转义也没有意义的,可加可不加(比如:/a/和/\a/,/@/和/\@/,/9/和/\9/),php有个函数专门识别那些属于有意义的字符 5.常用非打印字符 非打印字符 含义描述 \cx 匹配由x指明的控制字符。如\cM匹配一个Control-M或回车符。x的值必须为A~Z或a~z之一 \f 匹配一个换页符。等价于\x0c或\cL \n 匹配一个换行符。等价于\x0a或\cJ…

正则表达式(一)-基础 2017年8月21日
;

Cookie的机制 Cookie是浏览器(User Agent)访问一些网站后,这些网站存放在客户端的一组数据,用于使网站等跟踪用户,实现用户自定义功能。 Cookie的Domain和Path属性标识了这个Cookie是哪一个网站发送给浏览器的;Cookie的Expires属性标识了Cookie的有 效时间,当Cookie的有效时间过了之后,这些数据就被自动删除了。 如果不设置过期时间,则表示这个Cookie生命周期为浏览器会话期间,只要关闭浏览器窗口,Cookie就消失了。这种生命期为浏览会话期的 Cookie被称为会话Cookie。会话Cookie一般不保存在硬盘上而是保存在内存里。如果设置了过期时间,浏览器就会把Cookie保存到硬盘 上,关闭后再次打开浏览器,这些Cookie依然有效直到超过设定的过期时间。存储在硬盘上的Cookie可以在不同的浏览器进程间共享,比如两个IE窗 口。而对于保存在内存的Cookie,不同的浏览器有不同的处理方式。 Session的机制 Session是存放在服务器端的类似于HashTable结构(每一种Web开发技术的实现可能不一样,下文直接称之为HashTable)来存放用户数据,当浏览器第一次发送请求时,服务器自动生成了一个HashTable和一个Session ID用来唯一标识这个HashTable…

登录记住密码功能的实现 2017年8月19日
;

遗忘曲线由德国心理学家艾宾浩斯(H.Ebbinghaus)研究发现,描述了人类大脑对新事物遗忘的规律。人体大脑对新事物遗忘的循序渐进的直观描述,人们可以从遗忘曲线中掌握遗忘规律并加以利用,从而提升自我记忆能力。该曲线对人类记忆认知研究产生了重大影响。 德国心理学家艾宾浩斯(H.Ebbinghaus)研究发现,遗忘在学习之后立即开始,而且遗忘的进程并不是均匀的。最初遗忘速度很快,以后逐渐缓慢。

遗忘曲线 2017年8月19日
;

白名单,以deny为最后标准,有隐含的拒绝所有语句存在。 Order Allow,Deny 黑名单,以allow为最后标准,有隐含的允许所有语句存在。 Order Deny,Allow http://www.nowamagic.net/academy/detail/1225509

order allow,deny 2017年8月18日
;

需要有mysql_error()反馈信息 http://blog.csdn.net/ysynhtt/article/details/45115849 http://websec.ca/kb/sql_injection http://www.exploit-db.com/wp-content/themes/exploit/docs/33253.pdf

通过inser into进行注入 2017年8月16日
;

出于好奇,想看看取消root账号的全局权限是什么效果,结果竟然真的可以哦 sudo killall mysqld //干掉所有mysql进程 mysqld_safe –skip-grant-tables & //进入mysql安全模式 此时进入了mysql的console(控制台) mysql -p Enter password: //接着提示输入密码,此时会创建新密码,以前的密码依然可以用 接着进入了mysql控制台 mysql>use mysql //选择数据库 mysql>grant all privileges on *.* to baidu@localhost identified by ‘1’; //@前为账号名 mysql>flush privileges //更新权限 重启 service mysql restart

mysql误操作导致root账号权限丢失 2017年8月10日
;

按小时显示 select timestamp,count(*) as test from browserinfo group by date_format(timestamp, ‘%Y-%m-%d %H ‘); 查询今天,昨天,近7天,近30天,本月,上一月 select * from `browserinfo` where date_format(`timestamp`,’%Y-%m-%d’) = date_format(now(),’%Y-%m-%d’); //当天 select * from `browserinfo` where to_days(date_format(`timestamp`,’%Y-%m-%d’)) = to_days(now()); //当天,效果同上一条 select * from `browserinfo` where to_days(`timestamp`) = to_days(now()); //当天,效果同上两条 select * from `browserinfo` where to_days(now())-to_days(`timestamp`) <= 1; //昨天 select * from `browserinfo` where date_sub(curdate(), INTERVAL 7…

mysql 时间戳 按周、日、月 统计方法 2017年8月8日
;

从5.2版本开始,PHP原生提供json_encode()和json_decode()函数,前者用于编码,后者用于解码。 一、json_encode() <?php $arr = array (‘a’=>1,’b’=>2,’c’=>3,’d’=>4,’e’=>5); echo json_encode($arr); ?> 输出 {"a":1,"b":2,"c":3,"d":4,"e":5} 再看一个对象转换的例子: $obj->body = ‘another post’; $obj->id = 21; $obj->approved = true; $obj->favorite_count = 1; $obj->status = NULL; echo json_encode($obj); 输出 {  "body":"another post",  "id":21,  "approved":true,  "favorite_count":1,  "status"…

json_encode及json_decode用法说明 2017年8月1日
;
mysql 去除重复数据 2017年7月29日