blog
blog copied to clipboard
📝 My blog / notes
在公司主要写web移动端的项目,一开始较大的感触就是适配很麻烦,分ios和安卓,安卓生态又混乱得很,所以适配要做好了,不然这个设备好好的,有些设备却页面错乱。 在网上找了很多方案,踩了不少坑。 方案一: ```js (function (doc, win) { console.log("dpr:"+win.devicePixelRatio); var docEle = doc.documentElement, isIos = navigator.userAgent.match(/iphone|ipod|ipad/gi), dpr=Math.min(win.devicePixelRatio, 3); scale = 1 / dpr, resizeEvent = 'orientationchange' in window ? 'orientationchange'...
  the steps you take don't need to be big they just need to take you in the right direction `step` `by` `step`
### 前言 这个月利用空余时间写的xmxz在修了n多bug之后,在填了不少坑之后终于把他部署到云服务器上线了。对我这个技术菜简直就是挖坑,填坑,挖坑,填坑。。。。。。现在趁还记得一些,记录一下,免得下次忘了 ### nodejs写爬虫,论坛系统 说到nodejs,肯定离不开异步,我在项目中用的是 promise+async/await这一套异步方案 async/await是写异步代码的新方式,以前的方法有回调函数和Promise。 async/await是基于Promise实现的,它不能用于普通的回调函数。 async/await与Promise一样,是非阻塞的。 async/await使得异步代码看起来像同步代码,这正是它的魔力所在。 [了解回调函数是什么](https://www.zhihu.com/collection/119015788) [了解异步与同步,阻塞与非阻塞](https://www.zhihu.com/question/19732473/answer/20851256) [Async/Await替代Promise的6个理由](https://blog.fundebug.com/2017/04/04/nodejs-async-await/) [Async/Await详解](https://cnodejs.org/topic/5640b80d3a6aa72c5e0030b6) ### 购买,部署云服务器 1.服务器购买 我买的是京东云的学生机,选的是centos7.2(国内用centos多一点) 2.服务器登陆 通过ssh方式登陆服务器 $ ssh [email protected] //格式:ssh用户名@公网IP 3.[部署nodejs](https://help.aliyun.com/document_detail/50775.html) / [部署nodejs](http://www.jb51.net/article/118493.htm) ps:部署node环境我使用NVM安装多版本 ###...
我在github上creat一个新的repo 然后把这个repo拉到我的电脑本地 然后提交了几个commit 然后要把本地库的内容推送到远程,用git push命令(期间还尝试了github客户端push) 结果报错 ``` "Authentication failed. You may not have permission to access the repository. Open preferences and verify that you're signed in with an account that...
### 场景1 上下两个div的边距发生重叠,取最大的margin值 ```html .div1{ background-color: red; width: 100px; height: 100px; margin-bottom: 30px; } .div2{ background-color: green; width: 100px; height: 100px; margin-top: 20px; } ```  ### 场景2 下面的div内嵌了很多div,margin值依然被上面的div的margin重叠 ,取margin最大值(上面的div,30px)...
```js function foo() { var a = 2; function bar() { console.log( a ); } return bar; } var baz = foo(); baz(); // 2 ``` 在 foo() 执行后,通常会期待 foo()...
### 先来个经典数组操作题: 求斐波那契数列的前20 个数字。已知斐波那契数列中第一个数字是1 , 第二个是2 ,从第三项开始,每一项都等于前两项之和 ```js var fibonacci = []; fibonacci[0] = 1; fibonacci[1] = 2; for(var i = 2; i < 20; i++){ fibonacci[i] = fibonacci[i-1] +...
## 不用api `思路` 1.构建一个新的数组存放结果 2.for循环中每次从原数组中取出一个元素,用这个元素循环与结果数组对比 3.若结果数组中没有该元素,则存到结果数组中 `code` ```js Array.prototype.arrUnique_for = function () { let res = [this[0]]; let flag = false; for (let i = 1; i < this.length; i++)...
冒泡排序是与插入排序拥有相等的运行时间,但是两种算法在需要的交换次数却很大地不同。 在最好的情况,冒泡排序需要O(n^2)次交换,而插入排序只要最多O(n)交换。 冒泡排序的实现(类似下面)通常会对已经排序好的数列拙劣地运行O(n^2),而插入排序在这个例子只需要O(n)个运算 因此很多现代的算法教科书避免使用冒泡排序,而用插入排序替换之。冒泡排序如果能在内部循环第一次运行时,使用一个旗标来表示有无需要交换的可能,也可以把最好的复杂度降低到O(n)。在这个情况,已经排序好的数列就无交换的需要。若在每次走访数列时,把走访顺序反过来,也可以稍微地改进效率。有时候称为鸡尾酒排序,因为算法会从数列的一端到另一端之间穿梭往返。 冒泡排序算法的运作如下:(两个for循环差不多搞定) 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。 针对所有的元素重复以上的步骤,除了最后一个。 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 由于它的简洁,冒泡排序通常被用来对于程序设计入门的学生介绍算法的概念。 ```js function bubbleSort(arr){ if(arr.length
`定义`:发布—订阅模式又叫观察者模式,它定义对象间的一种一对多的依赖关系,当一个对象的状 态发生改变时,所有依赖于它的对象都将得到通知。 `现实中的发布订阅`:小明最近看上了一套房子,到了售楼处之后才被告知,该楼盘的房子早已售罄。好在售楼 MM 告诉小明,不久后还有一些尾盘推出,开发商正在办理相关手续,手续办好后便可以购买。 但到底是什么时候,目前还没有人能够知道。运用发布订阅:小明离开之前,把电话号码留在 了售楼处。售楼 MM 答应他,新楼盘一推出就马上发信息通知小明。小红、小强和小龙也是一 样,他们的电话号码都被记在售楼处的花名册上,新楼盘推出的时候,售楼 MM 会翻开花名册, 遍历上面的电话号码,依次发送一条短信来通知他们。 发送短信通知就是一个典型的发布—订阅模式,小明、小红等购买者都是 订阅者,他们订阅了房子开售的消息。售楼处作为发布者,会在合适的时候遍历花名册上的电话 号码,依次给购房者发布消息。 好处: 购房者不用再天天给售楼处打电话咨询开售时间,在合适的时间点,售楼处作为发布者 会通知这些消息订阅者。`说明发布—订阅模式可以广泛应用于异步编程中,这是一种替代传递回调函数的方案。` 购房者和售楼处之间不再强耦合在一起,当有新的购房者出现时,他只需把手机号码留 在售楼处,售楼处不关心购房者的任何情况,不管购房者是男是女还是一只猴子。 而售 楼处的任何变动也不会影响购买者,比如售楼 MM 离职,售楼处从一楼搬到二楼,这些 改变都跟购房者无关,只要售楼处记得发短信这件事情。`说明发布—订阅模式可以取代对象之间硬编码的通知机制,一个对象不用再显式地调 用另外一个对象的某个接口。` ### DOM 事件...