// 原题https://leetcode.com/problems/merge-sorted-array/description/
/**
给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。
说明:
初始化 nums1 和 nums2 的元素数量分别为 m 和 n。
你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。
输入:
nums1 = [1,2,3,0,0,0], m = 3
nums2 = [2,5,6], n = 3
输出: [1,2,2,3,5,6]
这个题咋一看,好像挺简单,把两个数组合并,然后sort一下就可以了。
但实际上,我们发现,他是把第二个数组合并到第一个,第一个的数组的引用不能改变,最后返回的是第一个
// 我们需要三个指针
1.current用于记录当前填补到哪个位置了
2.m用于记录nums1数组处理到哪个元素了
3.n用于记录nums2数组处理到哪个元素了
从后往前比较,并从后往前插入
*/
/**
* @param {number[]} nums1
* @param {number} m
* @param {number[]} nums2
* @param {number} n
* @return {void} Do not return anything, modify nums1 in-place instead.
*/
var merge = function(nums1, m, nums2, n) {
let curent = nums1.length - 1;
while(current >= 0) {
if(n===0) {
return
}
if(m < 1) {
nums1[current--] nums2[--n]
continue;
}
if(n < 1) {
nums1[current--] = nums1[--m]
continue;
}
// 取大的填充到nums1的末尾
if(nums1[m-1] > nums2[n-1]){
nums1[current--] = nums1[--m]
} else {
nums1[current--] = nums2[--n]
}
}
};
https://blog.cloudflare.com/details-of-the-cloudflare-outage-on-july-2-2019/#appendix-about-regular-expression-backtracking
七月二日Cloudflare停运细节 七月CF的事故造成的影响很大,很多网站都变成了502。这篇文章是这次事故的验尸报告。主要原因有两个:复杂的正则,取消了CPU限制。作为改进,重新引入了CPU限制,并更换了能保证执行时间的正则引擎。最后介绍了有问题的正则原理
当用nginx代理的文件出现contentlength mismatch之后,有可能是nginx截断了返回。
在server中加入proxy_buffering = false
就可以让nginx正常返回
数组劫持
定义
数据劫持,也叫数据代理,指的是在访问对象的某个属性时,通过一段代码拦截这个行为,进行额外的操作或者修改返回结果。
实现方式
const obj={}
Object.defineProperty(obj, "name", {
get : function(){
// 读取属性触发
},
set : function(newValue){
// 设置属性触发
},
});
const proxy = new Proxy({}, {
get: function (target, key, receiver) {
// 读取属性触发
},
set: function (target, key, value, receiver) {
// 设置属性触发
}
});
场景
let current = 0;
Object.defineProperty(window, 'a', {
get () {
return ++current;
}
});
console.log(a === 1 && a === 2 && a === 3); // true
Proxy是针对对象的进行拦截的
const obj = {
a:0,
};
const proxy = new Proxy(obj, {
get: function(target, property) {
if(property==='a'){
return ++target[property];
}
}
});
console.log(proxy.a===1&&proxy.a===2&&proxy.a===3);
实际应用