这几天公司做一个项目,遇见了一个需要拖拽表格顺序的项目。
但是UI用的又是element。是没有这个功能的,所以自己就手写了一个插件。
发在了github上面。如果有需要用到的朋友可以移步下面。
打开github链接

let a = {}
let b = { a }
let a.b = b

经验分享
这样的循环依赖的对象,需要每次递归的时候保留上一次递归的层级。
并判断这次递归的内容中,有没有上一次的内容。
如果有的话,就直接返回上一次的内容就行了。中断了递归。
代码如下: 

/**
 * @param { object } obj
 * @returns { object }
 */
const deepCopy = (obj, stack = []) => {
  let target = null
  if (typeof obj === 'object') {
    if(stack.includes(obj)) {
      return obj
    } else {
      stack.push(obj)
    }
    if (Array.isArray(obj)) {
      target = []
      obj.forEach(item => {
        target.push(deepCopy(item, stack))
      })
    } else if (obj) {
      target = {}
      for (const [key, value] of Object.entries(obj)) {
        target[key] = deepCopy(obj[key], stack)
      }
    } else {
      target = obj
    }
  } else {
    target = obj
  }
  return target
}
export default deepCopy

/**
 * @param { object } obj
 * @returns { object }
 */
const deepCopy = (obj) => {
  let target = null
  if (typeof obj === 'object') {
    if (Array.isArray(obj)) {
      target = []
      obj.forEach(item => {
        target.push(deepCopy(item))
      })
    } else if (obj) {
      target = {}
      for (const [key, value] of Object.entries(obj)) {
        target[key] = deepCopy(obj[key])
      }
    } else {
      target = obj
    }
  } else {
    target = obj
  }
  return target
}

见阿里云教程

按照阿里云步骤走完,如果提醒远程连接计算机端口已关闭的话。可能是没开放端口

  需要更改防火墙的策略。
  #查看防火墙当前配置

iptables -L -n

#允许所有请i去

iptables -P INPUT ACCEPT

清空默认所有规则

iptables -F

清空自定义所有规则

iptables -X

计数器置0

iptables -Z

允许127.0.0.1访问本地服务

iptables -A INPUT -i lo -j ACCEPT

允许访问外部服务

iptables -A INPUT -m state –state ESTABLISHED -j ACCEPT

允许 ping

iptables -A INPUT -p icmp -m icmp –icmp-type 8 -j ACCEPT

开启 ssh 端口

iptables -A INPUT -p tcp –dport 22 -j ACCEPT

开启 pptpd 端口

iptables -A INPUT -p tcp –dport 1723 -j ACCEPT

  哎嘿,昨天我搞了半天连不上。后来看了很多教程。才知道是我防火墙未放行。
  很多网上的教程并未提及防火墙放行这一步步骤。

  补充,并提醒一下

  每次如果更改了DNS和ip段配置后。都要运行这个命令来生效哦
  sysctl -p // 生效配置
  service iptables save // 保存防火墙配置
  service iptables restart // 重启防火墙

  如果更改,或添加pptpd账号。也是需要重启pptp的。
  service pptpd restart // 重启pptp

距离SRS还有12天大概的样子吧。如果不出意外的话。

说实话个人感觉挺慌的

术前紧张。肯定有的。害!!

但愿未来能够一切顺利吧

emj

0%