答乎

答乎 查看完整档案

海外编辑福州软件职业技术学院  |  计算机科学 编辑BlueJay Mobile Health Inc  |  Web Developer 编辑 www.dotku.net 编辑
编辑

I'm cleaning the bugs now ...

个人动态

答乎 关注了问题 · 2020-05-03

谁能告诉我URL中这样的字符串是什么编码?类似 "p3x0X14x18x0X14o3w8..."

谁能破解一下这个字符串是什么内容?
另外这个字符串是什么编码?

p3x0X14x18x0X14o3w8w1p3p9p3p3x0X14x18x0X14z8p4q7q8x08x01o8q7x09x01w1w8x11q9q5o0x05x14x15x16pQ7x03x01q5w5x16x16q7q9x04z8p5x10x05x13x17x01o3w8w1v2v2v0u8v3

完整的地址是这样的

http://www.cccmhpie.org.cn/ENet/Systems/ImageData/ShowImage.aspx?queryStr=p3x0X14x18x0X14o3w8w1p3p9p3p3x0X14x18x0X14z8p4q7q8x08x01o8q7x09x01w1w8x11q9q5o0x05x14x15x16pQ7x03x01q5w5x16x16q7q9x04z8p5x10x05x13x17x01o3w8w1v2v2v0u8v3

关注 3 回答 2

答乎 提出了问题 · 2020-05-03

谁能告诉我URL中这样的字符串是什么编码?类似 "p3x0X14x18x0X14o3w8..."

谁能破解一下这个字符串是什么内容?
另外这个字符串是什么编码?

p3x0X14x18x0X14o3w8w1p3p9p3p3x0X14x18x0X14z8p4q7q8x08x01o8q7x09x01w1w8x11q9q5o0x05x14x15x16pQ7x03x01q5w5x16x16q7q9x04z8p5x10x05x13x17x01o3w8w1v2v2v0u8v3

完整的地址是这样的

http://www.cccmhpie.org.cn/ENet/Systems/ImageData/ShowImage.aspx?queryStr=p3x0X14x18x0X14o3w8w1p3p9p3p3x0X14x18x0X14z8p4q7q8x08x01o8q7x09x01w1w8x11q9q5o0x05x14x15x16pQ7x03x01q5w5x16x16q7q9x04z8p5x10x05x13x17x01o3w8w1v2v2v0u8v3

关注 3 回答 2

答乎 赞了回答 · 2020-05-03

解决为何 Chrome 浏览器总是会自动切到 HTTPS?

我也踩了这个坑,部署同一个服务,这个服务原先支持https并正常服务。后来修改了代码环境后重新部署,先测试80访问不到总是nginx 502,检查发现chrome 请求307了,curl正常就chrome不行。

搜索找到了主要参考这篇文章

浏览器HSTS策略
如果之前成功访问过https://abc.com,那么访问http://abc.com浏览器就会自动307重定向。

解决方案:

关注 2 回答 1

答乎 评论了文章 · 2019-04-20

何时使用Component还是PureComponent?

原文:When to use Component or PureComponent?

何时使用Component还是PureComponent?

我开始转向使用PureCompoent是因为它是一个更具性能的Component的版本。虽然事实证明这是正确的,但是这种性能的提高还伴随着一些附加的条件。让我们深挖一下PureComponent,并理解为什么我们应该使用它。

Component和PureComponent有一个不同点

除了为你提供了一个具有浅比较的shouldComponentUpdate方法,PureComponentComponent基本上完全相同。当props或者state改变时,PureComponent将对propsstate进行浅比较。另一方面,Component不会比较当前和下个状态的propsstate。因此,每当shouldComponentUpdate被调用时,组件默认的会重新渲染。

浅比较101

当把之前和下一个的propsstate作比较,浅比较将检查原始值是否有相同的值(例如:1 == 1或者ture==true),数组和对象引用是否相同。

从不改变

您可能已经听说过,不要在propsstate中改变对象和数组,如果你在你的父组件中改变对象,你的“pure”子组件不将更新。虽然值已经被改变,但是子组件比较的是之前props的引用是否相同,所以不会检测到不同。

因此,你可以通过使用es6的assign方法或者数组的扩展运算符或者使用第三方库,强制返回一个新的对象。

存在性能问题?

比较原始值值和对象引用是低耗时操作。如果你有一列子对象并且其中一个子对象更新,对它们的propsstate进行检查要比重新渲染每一个子节点要快的多。

其它解决办法

不要在render的函数中绑定值

假设你有一个项目列表,每个项目都传递一个唯一的参数到父方法。为了绑定参数,你可能会这么做:

<CommentItem likeComment={() => this.likeComment(user.id)} />

这个问题会导致每次父组件render方法被调用时,一个新的函数被创建,已将其传入likeComment。这会有一个改变每个子组件props的副作用,它将会造成他们全部重新渲染,即使数据本身没有发生变化。

为了解决这个问题,只需要将父组件的原型方法的引用传递给子组件。子组件的likeComment属性将总是有相同的引用,这样就不会造成不必要的重新渲染。

<CommentItem likeComment={this.likeComment} userID={user.id} />

然后再子组件中创建一个引用了传入属性的类方法:

class CommentItem extends PureComponent {
  ...
  handleLike() {
    this.props.likeComment(this.props.userID)
  }
  ...
}

不要在render方法里派生数据

考虑一下你的配置组件将从一系列文章中展示用户最喜欢的十篇文章。

render() {
  const { posts } = this.props
  const topTen = posts.sort((a, b) => b.likes - a.likes).slice(0, 9)
  return //...
}

每次组件重新渲染时topTen都将有一个新的引用,即使posts没有改变并且派生数据也是相同的。这将造成列表不必要的重新渲染。

你可以通过缓存你的派生数据来解决这个问题。例如,设置派生数据在你的组件state中,仅当posts更新时它才更新。

componentWillMount() {
  this.setTopTenPosts(this.props.posts)
}
componentWillReceiveProps(nextProps) {
  if (this.props.posts !== nextProps.posts) {
    this.setTopTenPosts(nextProps)
  }
}
setTopTenPosts(posts) {
  this.setState({
    topTen: posts.sort((a, b) => b.likes - a.likes).slice(0, 9)
  })
}

如果你正在使用Redux,可以考虑使用reselect来创建"selectors"来组合和缓存派生数据。

结束语

只要你遵循下列两个简单的规则就可以安全的使用PureComponent来代替Component:

- 虽然通常情况下易变性就是不好的,但是当使用`PureComponent`时问题会变得复杂。
- 如果你在`render`方法中创建一个新的函数,对象或者是数组那么你的做法(可能)是错误的。
查看原文

答乎 评论了文章 · 2019-04-19

何时使用Component还是PureComponent?

原文:When to use Component or PureComponent?

何时使用Component还是PureComponent?

我开始转向使用PureCompoent是因为它是一个更具性能的Component的版本。虽然事实证明这是正确的,但是这种性能的提高还伴随着一些附加的条件。让我们深挖一下PureComponent,并理解为什么我们应该使用它。

Component和PureComponent有一个不同点

除了为你提供了一个具有浅比较的shouldComponentUpdate方法,PureComponentComponent基本上完全相同。当props或者state改变时,PureComponent将对propsstate进行浅比较。另一方面,Component不会比较当前和下个状态的propsstate。因此,每当shouldComponentUpdate被调用时,组件默认的会重新渲染。

浅比较101

当把之前和下一个的propsstate作比较,浅比较将检查原始值是否有相同的值(例如:1 == 1或者ture==true),数组和对象引用是否相同。

从不改变

您可能已经听说过,不要在propsstate中改变对象和数组,如果你在你的父组件中改变对象,你的“pure”子组件不将更新。虽然值已经被改变,但是子组件比较的是之前props的引用是否相同,所以不会检测到不同。

因此,你可以通过使用es6的assign方法或者数组的扩展运算符或者使用第三方库,强制返回一个新的对象。

存在性能问题?

比较原始值值和对象引用是低耗时操作。如果你有一列子对象并且其中一个子对象更新,对它们的propsstate进行检查要比重新渲染每一个子节点要快的多。

其它解决办法

不要在render的函数中绑定值

假设你有一个项目列表,每个项目都传递一个唯一的参数到父方法。为了绑定参数,你可能会这么做:

<CommentItem likeComment={() => this.likeComment(user.id)} />

这个问题会导致每次父组件render方法被调用时,一个新的函数被创建,已将其传入likeComment。这会有一个改变每个子组件props的副作用,它将会造成他们全部重新渲染,即使数据本身没有发生变化。

为了解决这个问题,只需要将父组件的原型方法的引用传递给子组件。子组件的likeComment属性将总是有相同的引用,这样就不会造成不必要的重新渲染。

<CommentItem likeComment={this.likeComment} userID={user.id} />

然后再子组件中创建一个引用了传入属性的类方法:

class CommentItem extends PureComponent {
  ...
  handleLike() {
    this.props.likeComment(this.props.userID)
  }
  ...
}

不要在render方法里派生数据

考虑一下你的配置组件将从一系列文章中展示用户最喜欢的十篇文章。

render() {
  const { posts } = this.props
  const topTen = posts.sort((a, b) => b.likes - a.likes).slice(0, 9)
  return //...
}

每次组件重新渲染时topTen都将有一个新的引用,即使posts没有改变并且派生数据也是相同的。这将造成列表不必要的重新渲染。

你可以通过缓存你的派生数据来解决这个问题。例如,设置派生数据在你的组件state中,仅当posts更新时它才更新。

componentWillMount() {
  this.setTopTenPosts(this.props.posts)
}
componentWillReceiveProps(nextProps) {
  if (this.props.posts !== nextProps.posts) {
    this.setTopTenPosts(nextProps)
  }
}
setTopTenPosts(posts) {
  this.setState({
    topTen: posts.sort((a, b) => b.likes - a.likes).slice(0, 9)
  })
}

如果你正在使用Redux,可以考虑使用reselect来创建"selectors"来组合和缓存派生数据。

结束语

只要你遵循下列两个简单的规则就可以安全的使用PureComponent来代替Component:

- 虽然通常情况下易变性就是不好的,但是当使用`PureComponent`时问题会变得复杂。
- 如果你在`render`方法中创建一个新的函数,对象或者是数组那么你的做法(可能)是错误的。
查看原文

答乎 提出了问题 · 2018-11-17

安卓虚拟机只支持 FAT 格式吗?

我目前找到的资料都是用 mksdcard 工具来生成虚拟机的磁盘,貌似只支持 fat 格式,有其他格式可以在虚拟机中使用的吗?比较好奇,问一下~

关注 1 回答 0

答乎 提出了问题 · 2018-10-20

是否有可能一个客户端同时有多个 IP 访问一个网站?

比如一个客户端有多个网卡,这时候如果访问一个网站的时候,是否会出现多个 IP 来自同一个客户端访问的情况?虽然我觉得应该不可能(感觉让多个 IP 网卡访问一个网站很不靠谱,也没有必要),HTTP 一个服务器也应该最多只能一个客户端,一个 IP 地址吧?

关注 2 回答 1

答乎 回答了问题 · 2018-09-22

解决[linux]nohup npm start & 启动 node 应用后,怎么结束退出呢?

用 forever 管理也很方便

forever start -c “npm start” ./

然后 forever list 查看

forever stop pid 关闭

clipboard.png

关注 10 回答 8

答乎 回答了问题 · 2018-09-22

npm run dev 如果后台运行

forever start -c “npm start” ./

关注 5 回答 4

答乎 提出了问题 · 2018-09-06

有比 hashmap 更好的 key value 列表吗?

听说 hashmap 很占空间,访问效率不高,对于不需要修改删除的操作(比如用 gson 搭建 API)的场景,是否有更好的 <key, value> 之类的数据类型呢?

关注 5 回答 3

认证与成就

  • 获得 3 次点赞
  • 获得 79 枚徽章 获得 1 枚金徽章, 获得 18 枚银徽章, 获得 60 枚铜徽章

擅长技能
编辑

开源项目 & 著作
编辑

(゚∀゚ )
暂时没有

注册于 2014-12-03
个人主页被 1k 人浏览