首页   注册   登录
 msg7086 最近的时间轴更新

msg7086

  •   Kubisys Inc / Software Engineer
    V2EX 第 38436 号会员,加入于 2013-05-04 05:31:44 +08:00
    今日活跃度排名 2845
    关于 Amazon Lightsail DNS 服务的小坑
  •  1   
    Amazon Web Services  •  msg7086  •  192 天前  •  最后回复来自 msg7086
    16
    [分享] 被 Ubuntu 坑了
    Linux  •  msg7086  •  2017-02-22 01:45:12 AM  •  最后回复来自 msg7086
    41
    Amazon LightSail: Simple Virtual Private Servers on AWS
    Amazon Web Services  •  msg7086  •  2016-12-06 14:14:29 PM  •  最后回复来自 Goooogle
    57
    当一个人这样的时候,我该怎么办呢?
    水深火热  •  msg7086  •  2016-10-13 07:57:33 AM  •  最后回复来自 nikoukou
    17
    TeamViewer has been hacked 直接账号入侵然后银行转账什么的
    分享发现  •  msg7086  •  2016-06-13 15:09:59 PM  •  最后回复来自 v2wp
    26
    [分享] 低成本打造小型创业公司用大容量 NAS
  •  2   
    分享创造  •  msg7086  •  2016-05-22 05:09:56 AM  •  最后回复来自 msg7086
    20
    msg7086 最近回复了
    4 小时 31 分钟前
    回复了 laziji 创建的主题 分享创造 普通网站防暴力破解登录密码的新设计
    只看你的描述:
    1. 你的服务器端必须要保存生成的密钥,而且密钥无法防止离线破解。
    也就意味着我可以先生成 1000 个密钥,统一计算完,然后一次发 1000 个登录请求上去。
    2. 你的服务器端必须保存密钥,意味着可以直接进行 DDoS 攻击,直接打爆你生成密钥的存储系统。

    所以到最后,你还是得在密钥生成系统上加上延时和保护。
    那么也就回到一开始的解决方案:直接给登录系统加上延时和保护了。
    @xiaqi 也可以自建的,总之用别人的服务要小心。
    @daweii 同意。就应该一天工作 42 个小时,才像个奴隶的样子嘛。谁要敢说依劳动法工作,我们喷死他。
    感谢提醒,准备开始迁移自己的 Repo 了。
    11 小时 13 分钟前
    回复了 baskice 创建的主题 问与答 有无可能用挖矿替代登陆速率限制?
    手机用户会喷死你。
    13 小时 32 分钟前
    回复了 Bearsuny 创建的主题 Linux 请问在 Ubuntu 下, sh 程序占用 CPU 过高是什么原因导致的?
    SSH 端口不改倒是没事,做好正常的防护就行了。
    机器被黑了,原则上来说只有重装一条路,除非你特别有信心 root 账户没有被影响到。
    13 小时 42 分钟前
    回复了 angcz 创建的主题 问与答 请教大家两道算法题,实在是想不出来了・゚( ノд`゚)
    第二题的解题思路:

    首先是笨办法穷举,这个就不多说了。

    接下来看优化方法。
    首先我们知道最优解的大值在右边,小值在左边,那么小值可以覆盖大值左边的任意数据,大值可以覆盖小值右边的任意数据,而使得最优解不变。

    比如说 [0, -5, -10, -5, 0, 5, 10, 5, 0] 的最优结果与 [0, -5, -10, -10, -10, -10, 10, 5, 0] 的结果是相同的,和 [0, -5, -10, 10, 10, 10, 10, 5, 0]的结果也是相同的。我这里把这种做法叫做极值覆盖。

    那么解法就很简单了,生成两个极值覆盖数组,分别是小值向右覆盖,和大值向左覆盖:
    min_array = [0, -5, -10, -10, -10, -10, -10, -10, -10]
    max_arrray = [10, 10, 10, 10, 10, 10, 10, 5, 0]
    然后对于每个下标,求最大差值即可。

    代码如下:
    input = [-1, 10, -8, 8, -10, 1]

    min_array = input.dup
    max_array = input.dup
    1.upto(input.size-1) { |i| min_array[i] = [min_array[i-1], min_array[i]].min }
    (input.size-1).downto(1) { |i| max_array[i-1] = [max_array[i-1], max_array[i]].max }
    diff_array = input.size.times.map { |i| max_array[i] - min_array[i] }
    max_diff = diff_array.max
    p min_array
    p max_array
    p diff_array
    puts max_diff


    # [-1, -1, -8, -8, -10, -10]
    # [10, 10, 8, 8, 1, 1]
    # [11, 11, 16, 16, 11, 11]
    # 16

    时间复杂度三次线性遍历 O(n),空间复杂度两次复制数组 O(n)。

    接下来是继续优化空间复杂度。
    我们看到大值覆盖是没有必要去计算的,直接用原始输入数据求值就行了,所以优化成:
    min_array = input.dup
    1.upto(input.size-1) { |i| min_array[i] = [min_array[i-1], min_array[i]].min }
    diff_array = input.size.times.map { |i| input[i] - min_array[i] }
    max_diff = diff_array.max
    p min_array
    p diff_array
    puts max_diff

    # [-1, -1, -8, -8, -10, -10]
    # [0, 11, 0, 16, 0, 11]
    # 16

    时间复杂度两次线性遍历 O(n),空间复杂度一次复制数组 O(n)。

    再接下来我们发现小值覆盖也没有必要生成整个数组,而是只要记录至今为止的最小值即可,因为小值总是只会更小,后续计算不会涉及到历史值,因此优化成:

    min = input.first
    max_diff = 0
    input.each do |n|
    min = n if n < min
    max_diff = n - min if n - min > max_diff
    end
    puts max_diff

    # 16

    时间复杂度一次线性遍历 O(n),空间复杂度 O(1)。

    同类型的 Trapping Rain Water 可以用第一种优化方法扫描覆盖极值来求解,有兴趣可以去挑战一下。
    14 小时 18 分钟前
    回复了 angcz 创建的主题 问与答 请教大家两道算法题,实在是想不出来了・゚( ノд`゚)
    #10 @xwyam [-1, 10, -8, 8, -10, 1]
    14 小时 22 分钟前
    回复了 changwei 创建的主题 分享发现 你们都遇到过什么样的奇葩伸手党
    你们没见过因为字幕制作发布晚了几天就被人问候全家的吧? hhh
    14 小时 55 分钟前
    回复了 angcz 创建的主题 问与答 请教大家两道算法题,实在是想不出来了・゚( ノд`゚)
    第二题相当于是 Trapping Rain Water 的一个特例,最直观的做法是新开两个数组存覆盖结果,然后再相减。
    空间复杂度 O(1)不知道能不能实现,回头我想一下然后贴代码上来。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   鸣谢   ·   实用小工具   ·   2802 人在线   最高记录 3541   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.1 · 16ms · UTC 07:08 · PVG 15:08 · LAX 00:08 · JFK 03:08
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1