首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

记录一下fail2ban不能正常工作的问题 & 闲扯安全

在加载配置这个事情上,许多linux应用程序只需要发一个信号,应用自己就完成配置重载,无需重启中断服务,但是依然有很多程序并不支持。...ban ip,然后我今天花了很长时间都没办法让他工作起来,我写了一个简单的规则ban掉尝试暴力登录phpmyadmin的ip,60秒内发现3次ban一个小时。...我通过fail2ban-regex测试工具测试的时候结果显示是能够正常匹配的,我也试了不是自己写的规则,试了附带的其他规则的jail,也是快速失败登录很多次都不能触发ban,看fail2ban的日志更是除了启动退出一点其他日志都没有...后面我把配置还原,重启服务,这次我注意到重启服务之后整个负载都高了起来,fail2ban-server直接是占满了一个核,这种情况居然持续了十几分钟的样子,简直不能忍。...这下我清楚了应该是这个问题没跑了。

3.2K30

在vue的v-for循环中,key为什么不能用index?

am Yimwu' } ] } ]}虚拟 DOM 的作用当我们能够在 JS 中模拟出 DOM 结构后,我们就可以通过 JS 来对 DOM 操作进行优化了,怎么优化呢,这个时候...v-for 中 key 值是否可以为 index答案当然是不可以,举个例子,我们来看下面两个 vdom,从 num 值我们可以发现,新、旧两个 vdom 是两个顺序相反的数组生成的 vdom,安装正常的方式...props 不同,即 num 不同,因此会触发对应的响应式值的更新机制,而且在这个过程中还会调用多个更新相关的钩子函数,如果定义的属性非常多的话,触发更新将会导致非常大的性能损耗,因此,在使用 v-for...算法的学习,体会到了前端对于性能的极致追求,通过通读 vdom 源码,基本能够从更加深刻的角度去理解采用 VDOM 的目的,以及 key 值在 diff 算法中的真正作用,也能够从更加底层的角度理解为什么不推荐使用...index 作为 key 这个 Best Practices!

99310

字面跳动前端面试题:React Hook为什么不能放在if循环嵌套函数里面?

想象一下,如果你把 Hook 放在if/循环/嵌套函数里,那么每次条件改变或循环迭代,Hook 都可能被重新创建,这就有点乱了,对吧?...在if/循环/嵌套函数 中调用 Hook,可能会导致它们的调用顺序和次数不一致,从而引发一些奇怪的问题,比如状态不稳定、内存泄漏等。...而放在条件或循环中的 Hook,其依赖项可能并不会随着条件的改变而改变,这就可能导致组件无法正确地重新渲染。...因此,在编写 React 函数组件时,一定要遵循 Hook 规则,只在顶层使用 Hooks,并且不要在循环、条件或嵌套函数中调用。...不要在循环、条件语句或子函数中调用useState、useEffect等。 * 只能在React函数组件或者自定义 Hook 调用 Hook ,不能在其他JavaScript函数中调用。

35110

一个困扰我122天的技术问题,我好像知道答案了。

这个程序还是不是死循环呢? 执行之后你会发现,这个程序居然正常结束了,但是你不知道为什么,你只能大喊一声:卧槽,绝了! ? 或者你说你知道,因为输出语句里面有 synchronized 关键字。...上面这个程序还是不是死循环呢? 执行之后你会发现,这个程序居然正常结束了,但是你还是不知道为什么,你只能再次大喊一声:卧槽,真TM绝了! ?...这个地方的 while 循环和上面的如出一辙。所以你知道为什么这个程序为什么不会正常结束了吗? 你不仅知道了,而且你还可以回答的比 volatile 更深入一点。...根据这个回答,我解释一下为什么我们的测试程序没有死循环。...这个程序在我的机器上正常结束了。我真不知道为什么,写出来的目的是万一有读者朋友知道的原因的话,请多多指教。

88910

ArrayList的删除姿势你都掌握了吗

问了个问题普通for循环ArrayList为什么不能删除连续重复的两个元素?其实这个描述是不正确的。正确的应该是普通for循环正序删除,不能删除连续的元素所以就产生了这个文章。 ?...System.out.println(Thread.currentThread().getStackTrace()[1].getMethodName()+":"+list.toString()); } 下面我们来分析下为什么这些方法为什么有的可以正确删除元素...这个方法检查modCount 和expectedModCount的值。...正序删除不能删除连续元素的原因 可以删除但是结果不正确的方法for循环正序删除(deleteByOrder) 先来张图吧,看图更直观。...使用迭代器的remove()方法删除(推荐做法) 迭代器循环,使用迭代器的remove()方法删除(deleteByIterator)这个比较简单我们直接看迭代器的删除 关键代码就一行 expectedModCount

52230

【多线程】线程池源码(1)

遇到「新的任务」后 如果工作线程数 < 核心线程数,那么直接加1个worker 如果线程池是正常工作状态,并且工作队列能够添加任务,此时需要第二轮判断 如果线程池因为某种原因不正常了,并且能够成功从工作队列中删除任务...,那么直接采取拒绝策略 如果此时工作线程数为0,此时需要新建一个线程(并且这里创建的是非核心线程)来执行这个任务,为什么是null呢,因为已经把任务放在工作队列里面了。...一进来就是一个死循环这个循环最主要的目的是「确认线程池状态是否正常」。...又是一个死循环,首先得到工作线程数如果超过了边界,比如超过了容量、核心线程数或者最大线程数,就不用添加worker了,银行实在是办理不了新的顾客了;当工作线程数正常的情况下,「通过CAS来增加工作线程数...如果增加工作线程失败,那就是其它线程增加了该数量,如果此时线程池的「运行状态发生了改变」,则重复外层循环,否则就「自旋直到成功增加工作线程数。」

30130

ArrayList的删除姿势你都知道了吗

问了个问题普通for循环ArrayList为什么不能删除连续重复的两个元素?其实这个描述是不正确的。正确的应该是普通for循环正序删除,不能删除连续的元素所以就产生了这个文章。 ?...System.out.println(Thread.currentThread().getStackTrace()[1].getMethodName()+":"+list.toString());     } 下面我们来分析下为什么这些方法为什么有的可以正确删除元素...这个方法检查modCount 和expectedModCount的值。     ...正序删除不能删除连续元素的原因 可以删除但是结果不正确的方法for循环正序删除(deleteByOrder) 先来张图吧,看图更直观。...使用迭代器的remove()方法删除(推荐做法) 迭代器循环,使用迭代器的remove()方法删除(deleteByIterator)这个比较简单我们直接看迭代器的删除 关键代码就一行 expectedModCount

79440

一步步教你编写不可维护的 PHP 代码

可维护的代码意味着能够在堆积如山的代码中快速定位到特定的部分,能够快速明白它是如何工作的并且在不破坏一些东西的情况下进行修改。你不能这样做。不能让别人能轻易地搜索到某些东西或者在他们期待的地方找到。...你的代码不能 “看起来” 不可维护(因为别人会怀疑的), 它必须 “是” 不可维护。 代码在维护人员看起来应该是正常的,但要在他们最意想不到的时候给他们一个惊喜。 最佳实践 禁止代码约定。...为什么会有头脑正常的人会花时间来写无关紧要的测试来证实代码能否正常运行?有些事情在生活中就像 - 天空是蓝色的,太阳从东方升起,你的代码是能够正常运行的,因此非常感谢。...它可以保证代码的可维护性所以你不能遵守这个规定。PHP 之父 Rasmus Lerdorf 说过:“PHP 就是模板引擎”。...引用相关 即使你非常正常的定义来一些东西,但并不意味着你不能以有趣的方式来使用它。

82840

【C语言总集篇】分支与循环篇——从不会到会的过程

没错,它的结果就是什么都不发生,但是大家应该都有过忘记密码的体验,我们在输错密码时系统会提示我们密码错误,我们能不能按照这个逻辑在switch语句中表示出来呢?...那废话不多说,我们一起来看看运行结果: 这个结果跟大家推测的结果有出入吗?为什么会是这个结果呢?...for语句 1.for循环的语句结构 在开始for循环之前,我们先来探讨一个问题,为什么在C语言中已经有while循环了,还要加入for循环呢?...下面我们来运行一下: 这里我们可以看到,程序进入了死循环为什么会这样呢,我们来看看这个代码的运行流程: 从执行流程中我们可以看到,通过goto语句,每次在运行到a=5时就会跳转到循环外,从a=0开始进入循环判断...,判定结果肯定为真,然后进入循环,这样就导致了程序无法走出for循环,这就是为什么运行结果是一个死循环

26910

WPF 的 Dispatcher 为什么要创建一个隐藏窗口?

然而 C 不满足于只看到这个结论,他更期望知道为什么 WPF 一定要创建这个隐藏的窗口。其实对这个问题我也不知道答案,但在和他深入的探讨以及不断寻找资料的过程中,我们逐渐得知了缘由。...而 PostThreadMessage 则一样会正常将消息加入到此线程的消息队列中。...如果使用 Message-Only 窗口,那么无论谁来写消息循环,只要写消息循环的这名开发者在消息处理中调用了 DispatchMessage 函数,那么窗口就可以正常处理消息。...而开发者们为什么要自己去开消息循环呢?这不就是众所周知的“模态”吗???弹模态对话框的本质就是开了一个新的消息循环处理消息的同时,阻塞原来的消息循环。...就能完成 Invoke 那些操作的处理,而开发者们绝对不会忘了调用这个函数(否则你的程序根本无法工作)。

18920

【多线程】线程池源码(2)

一进来也是一个死循环,可以先聚焦「什么时候会退出循环」,肯定是「不正常的情况」下会退出 当线程池状态不处于RUNNING或者SHUTDOWN的时候,或者是当线程处于SHUTDOWN但是工作队列中没有任务...除了不正常的情况,接下来就是从工作队列中获取任务,不过是根据timed的来决定是用poll() 还是take() 。...❝可以看到,只有上述不正常的情况下退出循环,任务返回null,进而导致runWorker() 中的while循环退出,最后整个线程池关闭。否则都是会一直在getTask() 这里死循环。...❞ 到这里,为什么说线程池能够节省资源呢,是因为其实它创建的线程的消耗只是体现在了Worker类的创建中,把其它要完成的任务放在工作队列里面,然后getTask() 获取任务,最后执行任务(调用task.run...()) 拒绝策略 这个是在最开始execute() 的时候调用的 ?

24430

IO流为什么必须手动关闭,不能像其他的对象坐等GC回收?

有的同学在做一个读取临时文件数据的工作,当读完文件内容,准备将其删除的时候,有时候会正常,但有时候会提示:操作无法完成,因为文件已在 Java™ Platform SE binary 中打开,编译器也会提示...今天我们就一起来聊聊这个话题,以及如何正确的关闭 IO 流操作。 二、为什么 IO 流需要手动关闭?...可能有的同学又发出疑问,我平时本地测试的时候没有发现这个问题,为什么部署到线上就出这个提示的呢?...五、小结 本位主要围绕【为什么 IO 流必须手动关闭,不能像其他的方法坐等 GC 处理】这个话题进行一次内容的整合和总结,同时也给出了推荐的正确关闭 IO 流的写法。...六、参考 1、csdn - 演员12138 - IO流为什么必须手动关闭,不能像其他的方法坐等GC处理 2、csdn - 思想永无止境 - Java之关闭流

56230
领券