1 | //防止多文件集成成一个文件后 前面的文件忘记写;的情况 |
JS-函数单一职责原则
函数违反单一原则最大一个后果就是会导致逻辑混乱。如果一个函数承担了太多的职责。
不妨试下:函数单一原则 – 一个函数只做一件事 。
埋头就是干:
1 | //图片预加载函数 |
遵循一个函数只做一件事后:
1 | //将背景图设置,和图片加载的src修改分开 |
Sass入门语法
一、变量
1 | $fontStack : Helvetica,sans-serif; |
二、嵌套
1 | nav { |
庞氏骗局
金融有一个很重要的原则,应该是金融守恒,金融是一个守恒零和游戏。资金在流动的过程中,价值不会无缘无故产生,也不会无缘无故消失。真正产生价值的应该是制造业。只有实业,在生产经营的过程中才产生财富。因此,金融和实业之间的关系应该是,金融帮助实业提高效率,实业帮助金融创造价值。
将新投资人的钱向老投资者支付利息和短期回报以造成骗局赚钱的假象从而吸引更多投资者进入骗局
庞氏骗局,一般人说就是“拆东墙补西墙”。利用新投资人的钱来向老投资者支付利息和短期回报,以制造赚钱的假象进而骗取更多的投资。而这种拆东补西的做法,本身不一定是错的。因为这就是金融。
拿了钱却做不到这个承诺回报的收益,那就是骗局了。
是否骗局,最大的导向点在于最上线。最上线如果一直稳如泰山,那就不是骗局
庞氏骗局在中国又称“拆东墙补西墙”,“空手套白狼”。简言之就是利用新投资人的钱来向老投资者支付利息和短期回报,以制造赚钱的假象进而骗取更多的投资。
Vue-作用域插槽
作用域插槽是一种特殊类型的插槽,用作一个 (能被传递数据的) 可重用模板,来代替已经渲染好的元素。
在子组件中,只需将数据传递到插槽,就像你将 prop 传递数据给子组件一样,传递到父组件:
1 | <div class="child"> |
在父级中,具有特殊特性 slot-scope 的 元素必须存在,表示它是作用域插槽的模板。slot-scope 的值将被用作一个临时变量名,此变量接收从子组件传递过来的 prop 对象:
1 | <div class="parent"> |
如果我们渲染上述模板,得到的输出会是:
1 | <div class="parent"> |
JS-检测字体
一、实现原理
根据用户设置的字体将某一个字符绘制在canvas上(fillText()),并提取像素信息(getImageData()),然后和默认字体进行比对,如果像素不一致,说明字体生效,说明字体不生效。
1 | let isSupportFontFamily = function(fontFamily) { |
JS-帆布指纹识别
一、利用canvas标签
一般情况下,网站或者广告联盟都会非常想要一种技术方式可以在网络上精确定位到每一个个体,这样可以通过收集这些个体的数据,通过分析后更加精准的去推送广告(精准化营销)或其他有针对性的一些活动。
Cookie技术是非常受欢迎的一种。当用户访问一个网站时,网站可以在用户当前的浏览器Cookie中永久植入一个含有唯一标示符(UUID)的信息,并通过这个信息将用户所有行为关联起来。
帆布指纹识别使用到了HTML5
1 | var canvas = document.createElement('canvas'); |
mysql-事务
事务控制语句
- BEGIN或START TRANSACTION;显式地开启一个事务;
- COMMIT或COMMIT WORK,COMMIT提交事务,并使已对数据库进行的所有修改称为永久性的;
- ROLLBACK或ROLLBACK WORK,结束用户的事务,并撤销正在进行的所有未提交的修改;
- SAVEPOINT identifier;SAVEPOINT允许在事务中创建一个保存点,一个事务中可以有多个SAVEPOINT;
- RELEASE SAVEPOINT identifier;删除一个事务的保存点,当没有指定的保存点时,执行该语句会抛出一个异常;
- ROLLBACK TO identifier;把事务回滚到标记点;
- SET TRANSACTION;用来设置事务的隔离级别。InnoDB存储引擎提供事务的隔离级别有READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ和SERIALIZABLE。
mysql-regexp
REGEXP 操作符
模式 | 描述 |
---|---|
^ |
匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配'\n' 或'\r' 之后的位置。 |
$ |
匹配输入字符串的结束位置。如果设置了RegExp 对象的 Multiline 属性,$ 也匹配 '\n' 或'\r' 之前的位置。 |
. | 匹配除"\n" 之外的任何单个字符。要匹配包括 '\n' 在内的任何字符,请使用象 '[.\n]' 的模式。 |
[...] |
字符集合。匹配所包含的任意一个字符。例如, '[abc]' 可以匹配 "plain" 中的'a' 。 |
[^...] |
负值字符集合。匹配未包含的任意字符。 |
* |
匹配前面的子表达式零次或多次。例如,zo* 能匹配"z" 以及 "zoo" 。* 等价于{0,} 。 |
+ |
匹配前面的子表达式一次或多次。例如,'zo+' 能匹配 "zo" 以及"zoo" ,但不能匹配 "z" 。+ 等价于{1,} 。 |
{n} |
n 是一个非负整数。匹配确定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o' ,但是能匹配 "food" 中的两个 o。 |
{n,m} |
m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。 |
1 | -- 查找name字段中以元音字符开头或以'ok'字符串结尾的所有数据 |
mysql-limit-offset
1 | select _column,_column from _table [where Clause] [limit N][offset M] |
limit N
: 返回 N 条记录offset M
: 跳过 M 条记录, 默认 M=0limit N offset M
:从第 M条记录开始, 返回N 条记录limit M,N
: 相当于limit N offset M
, 从第 M 条记录开始, 返回 N 条记录