常见排序算法
[TOC]
[TOC]
前端导出按钮点击,下载从后端返回的Excel文件
req.url?param=x
)可以直接下载这种方式的缺点是,不能针对后端返回情况做处理。
1 | this.$ajax({ |
DNS (Domain Name System) 域名系统,是一个层次化、分散化的Internet连接资源命名系统。DNS维护着一个包含域名与对应资源例如IP地址的列表.
DNS最突出的功能是将易于记忆的域名(例如mozilla.org)翻译成为数字化的IP地址(例如151,106,5,172).这一从域名到IP地址的映射过程被成为DNS查询(DNS lookup),与之对应,DNS反向查询(rDNS)用来找到与IP地址对应的域名.
(1)同源策略[浏览器安全策略]
所谓同源是指"协议+域名+端口"三者相同,即便两个不同的域名指向同一个ip地址,也非同源。同源策略限制localStorege、IndexDB和Cookies访问。参考MDN
(2)跨域
协议、域名、端口任一不同则为跨域。跨域是浏览器行为,实际上请求已经到达服务器,只不过在返回的时候被浏览器限制了。
代理转发
例如使用 nginx 服务器代理
CORS
可以使用 CORS 来允许跨源访问。CORS 是 HTTP 的一部分,它允许服务端来指定哪些主机可以从这个服务端加载资源。
(1)七种基本数据类型 Boolean null 一个表明 null 值的特殊关键字 undefined 表示变量未定义时的属性 Number 整数或浮点数 BigInt 任意精度的整数,可以安全地存储和操作大整数 String Symbol 实例是唯一且不可改变的数据类型
(2)引用类型
1 | a := []int{1,2} |
❌:panic: runtime error: index out of range [1] with length 1
通常使用make 初始化一以下三种基本类型: 1
2
3slice := make([]int, 0, 100)
hash := make(map[int]bool, 10)
ch := make(chan int, 5)
与make 相比,new 的功能就很简单了,它只能接收一个类型作为参数然后返回一个指向该类型的指针:
1 | i := new(int) |
(1)runtime包
runtime.Gosched()
让出CPU时间片,重新等待安排任务
runtime.Goexit()
退出当前协程
runtime.GOMAXPROCS
Go运行时的调度器使用GOMAXPROCS参数来确定需要使用多少个OS线程来同时执行Go代码。默认值是机器上的CPU核心数。
(2)sync包
sync.WaitGroup 等待组,实现并发任务的同步
方法 | 功能 |
---|---|
Add(delta int) | 计数器+delta |
Done() | 计数器-1 |
Wait() | 阻塞直到计数器变为0 |
sync.Once (进阶)只执行一次,加载配置
sync.Map 并发安全的map,开箱即用
1 | var m = sync.Map{} |
sync.Mutex 互斥锁
sync.RWMutex 读写互斥锁,读写锁非常适合读多写少的场景
(3)select 多路复用
(4)协程、进程、线程
\[ \sigma (x) = \frac{1}{1+e^{-x}} \]
双曲正切函数 \[ tanhx =\frac{e^{x}-e^{-x}}{e^{x}+e^{-x}} \]
ReLU函数(Rectified Linear Unit) \[ relu(x)=max(0,x) \]
memberlist是一个Go库,它使用基于Gossip的协议管理集群成员和成员故障检测。