fuRan's Code 皆無は真実、万事が許す。

【mac】原生mamp环境搭建

参考资料

MAC运行PHP
使用Homebrew安装Mysql全过程
报错 No such file or directory when I try to access my project on live server
报错 caching_sha2_password
php多版本管理
mac安装老版本php
重写mamp apache下php版本

【mac】通过git-svn操作用git命令操作svn

参考资料

安装
报错 Can’t locate SVN/Core.pm
基本操作
perl证书错误, Term::ReadKey

【柳比歇夫时间管理】 前端优化篇

前言

最近面试老被问CDN, 我心想这玩意不是以前用来引js文件的吗? 现在用npm + webpack代替了. 之前公司也只是用来配合oss做图片、视频这些资源的分发. 难道现在前端要自己实现内容分发系统? 后来被提及到可以做优化, 我印象中优化主要是靠code split做按需加载, 以及被弃用的dll.
so google it

【Node】Path模块填坑

Js里的调用栈(call stack)、消息队列(message queue) 、工作队列(job queue)、process.nextTick()、setImmediate()

消息队列(message queue)里的任务也被称作宏任务(macrotask)

I/O操作、fetch、event(onClick)、渲染任务都是宏任务

工作队列(job queue)里的任务也被称作微任务(microtask)

MutationObserver、和Promise属于微任务

process.nextTick()setImmediate()是node独有的插队方法

好的散列函数(hash function)有什么要求?

先说答案

  1. 确定性如果两个散列值是不相同的(根据同一函数),那么这两个散列值的原始输入也是不相同的。
  2. 散列碰撞(collision)散列函数的输入和输出不是唯一对应关系的,如果两个散列值相同,两个输入值很可能是相同的,但也可能不同。
  3. 不可逆性一个哈希值对应无数个明文,理论上你并不知道哪个是。

“船长,如果一样东西你知道在哪里,还算不算丢了。”
“不算。”
“好的,那您的酒壶没有丢。”

  1. 混淆特性输入一些数据计算出散列值,然后部分改变输入值,一个具有强混淆特性的散列函数会产生一个完全不同的散列值。

【笔记】命令式编程(Imperative)、声明式编程(Declarative)和函数式编程(Functional)

参考资料

先上参考资料
入门
进阶

nginx 开启 http2

起因

今天学网络相关的资料,看到http2对比http1.1,有以下几个好处

  • 多路复用 (Multiplexing)
  • 二进制分帧
  • 首部压缩(Header Compression)
  • 服务端推送(Server Push)

细节参考

一言蔽之, 快了很多~

【数据结构】链表(chain)学习笔记

简述

说链表我决定还是扯上数组一起,它们都是线性存储结构,区别在于数组在内存上是连续的,有序的.而链表则是通过节点内的指针指向下个节点,最后把所有节点串起来.就好比数组是长椅链表是板凳;你开辟一个长度为5的数组好比搬了一个5人坐的长椅过来,1个人坐是占那么多空间, 5个人坐亦然;表则是1个人坐就搬1个板凳,十分灵活. 且如果你现在中间插了一个人. 长椅组只能去找6人坐的新长椅了, 板凳组的只用再搬一个板凳就好了. 所以链表的插入成本是O(1).但是数组也有优势, 即通过标号搜索的成本是O(1),而链表需要从头(head)开始遍历,成本是O(n)

【数据结构】图(graph)学习笔记

简述

图是一种N对N的数据结构, 有有向图,加权图等等很多花样; 相关算法也很多除了常用的DFSBFS, 还有什么A*弗洛伊德算法迪杰斯特拉算法;实现方法也有诸如接邻矩阵接邻表十字链表. 萌新泪目T^T.
下面是用十字链表实现的双向加权图, 只实现了BFSDFS(backtrack),我也就算是入了个门, 挖了坑,以后学到了再填=- =

基础信息
寻路算法参考资料