永恒之蓝和xshell事件有如下的特征: 1. 永恒之蓝中黑客预留了一个没有注册的域名,用于防护事件不受控制时,启用该域名可以抑制事件的扩大 2....利用永恒之蓝进行勒索事件中黑客预留的域名是DGA域名,在某些条件下探测该DGA域名是否可以正常解析,若解析成功则不进行加密,若解析成功则不加密。...DGA一般都是通过硬编码写入到程序中,在没有能力对其逆向的情况下,我们可以分析网络流量来分析DNS请求的DGA域名。这样就需要了解哪些域名是DGA域名,这里面有多种方法与思路: 1....DGA域名有个特征,很多DGA并没有注册,黑客前期会生成大量的DGA域名,但是在某些情况下,如传输数据与命令或抑制事件时,会选择性的注册少量域名,这样的话可以对DNS解析不成功的域名进行记录,并将这些域名进行进行...,若其没有注册,且域名很随机可以判断为疑似DGA域名。
基于文本分析的代表工作有[9][10][11],[9]通过分析DGA域名与正常域名之间字符分布的差异,对IP产生的域名进行批量分类,[10]通过LSTM算法分析DGA域名与正常域名之间的差异,可以判定每个域名是否为...DGA域名, 由于DGA域名的请求过程中会产生大量NXDomain,[11]对NXDomain进行分类,有效识别DGA域名。...四、发展 DGA域名从最开始的伪随机字符串开始进入人们的视野,由于该方式产生域名的字符分布与正常域名的分布有明显区别,易被检测,攻击者转而使用基于字典的DGA域名算法,从字符分布上尽量拟合正常域名,极大地降低了字符的随机性...随着加密DNS的进一步部署,预计将来有更多DGA域名通过加密DNS协议进行传输,针对使用DGA域名botnet的检测将会更加困难,文章[7]利用pydig工具对DGA域名和正常域名发送请求,产生加密流量...域名迄今为止仍然作为一种主流与C2服务器通信的手段被广泛采用,由于笔者能力限制,无法给出产生这种现象的原因,到底是学术论文中的方法在实际使用中有效性弱,还是工业界的部署、处置方式不当,需要进一步进行探索
什么是 nginx 的 499 499 是 nginx 扩展的 4xx 错误,目的只是用于记录,并没有实际的响应。...什么情况下 nginx 记录 499 通过网上查询相关资料学习与了解,自己总结大致原因就是请求在指定的时间内没能拿到响应而关闭了连接。问题症结点为两处:1、指定的时间;2、程序处理的性能。...这里的客户端概念,我的理解是对请求连接过程中的下游服务而言的,例如浏览器与 nginx 之间的连接,浏览器为客户端;nginx 与其分发的服务而言,nginx 是客户端;php 处理程序中发起的 curl...上述的指定时间内的这个时间,一般是定义的处理超时时间,可能的原因就是这个时间设短了。 以发起 curl 请求为例,数据传输的最大允许时间用 -m 参数来指定。...4、程序处理逻辑性能不好 这一项需要查询程序的逻辑处理是否有过多的重复的或者冗余的过程了。
本文将针对DGA域名的检测,开展以下几个方面的内容: 1)针对开源DGA域名与正常域名进行初步的数据分析,查看正常域名与DGA域名的不同及其各自的数据分布; 2)尝试利用自然语言处理的方式对DGA域名进行可视化...对于DGA与正常域名,可以发现他们两者的几点不同:1)DGA的长度分布区间要比正常域名小,DGA长度分布区间为2-44,而正常域名的长度分布为1-63;2)DGA与正常域名的长度分布明显不同,DGA域名长度分布没有明显的分布规律...图3.7 DGA域名字符分布 对于DGA域名字符与正常域名字符分布,两者有一定的差别,比如正常域名在某些字符上,取值的概率比较小;DGA域名使用数字的概率比正常域名更高。...进行可视化的目的是希望能够在低维空间看到他们的具体分布,但图中的效果较差,可能的原因是降维过程中丢失了信息。...导致这种现象的原因应该是多方面的,可能在降维过程中信息产生了丢失。 3)选用深度学习的算法进行相关的分类工作,包括是否是DGA,以及DGA域名的家族分类,采用的模型有LSTM和CNN。
死锁产生原因 死锁的产生需要满足以下 4 个条件: 互斥条件:指运算单元(进程、线程或协程)对所分配到的资源具有排它性,也就是说在一段时间内某个锁资源只能被一个运算单元所占用。...解决死锁 死锁产生要满足以上 4 个必要条件,那么我们只需要改变其中的 1 个或多个条件就可以解决死锁的问题了,比如我们可以通过修改获取锁的顺序来改变环路等待条件。...在未修改获取锁的顺序前,程序的执行流程是这样的: 其中 ① 表示先执行,② 表示后执行。...而改变锁的获取顺序之后的执行流程是这样的: 此时线程 1 和线程 2 获取锁的顺序是一致的,都是先获取锁 A,再获取锁 B,此时它们的执行流程如下: 线程 1 先获取到锁 A; 线程 1 获取到锁...产生死锁需要同时满足 4 个条件:互斥条件、请求和保持条件、不可剥夺条件、环路等待条件,因此我们只需要破坏其中 1 个或多个条件就可以解决死锁的问题了。
激光熔覆是一个快速加热和快速冷却的过程。在短时间内,熔覆材料和基底需要先熔化成液态,再由液态转变成固态。在这个过程中,熔覆层受到外界的约束产生内应力,当内应力超过熔覆层的屈服强度时,就会产生裂纹。...图片 (1)热应力 由于熔覆层温度与室温有较大的温差,不同材料的热膨胀系数不同,熔覆层的冷却收缩率也不同,收缩率差异产生的应力就是热应力。...(2)组织应力 在整个激光熔覆过程中,熔覆材料和基体的表面熔化成液态金属,液态金属结晶成固态金属,熔覆层最终冷却凝固,由于微观组织的不均匀转变而产生的内应力。...(3)约束应力 其形成原因有二:一是由于激光熔覆是一个快冷快热的过程,熔池中先熔化的材料受热膨胀,受到周围冷却器基体的约束,产生压应力;其次,在固态冷缩过程中,加热的复合涂层在其他部分受到较冷基体的约束...研究表明,激光熔覆中韧性远小于脆性引起的拉应力是产生裂纹的主要原因。
产生死锁的原因主要是: (1) 因为系统资源不足。 (2) 进程运行推进的顺序不合适。 (3) 资源分配不当等。...如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则 就会因争夺有限的资源而陷入死锁。其次,进程运行推进顺序与速度不同,也可能产生死锁。...产生死锁的四个必要条件: (1) 互斥条件:一个资源每次只能被一个进程使用。 (2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。...(3) 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。 (4) 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。...这四个条件是死锁的必要条件,只要系统发生死锁,这些条件必然成立,而只要上述条件之 一不满足,就不会发生死锁。
然后,不稳定的刀具可以开始引起机床的共振,从而产生震纹。 纠正措施 选择较少切屑刃的切削刀具[2]。根据需要调整进给率以进行补偿。 或者 减少径向宽度的切削,以在切削中使用更少的切屑刃[3]。...2、切削路径的选择 使用传统的刀套和刀具路径时,切削力会上升,因为刀具啮合在方向变化期间增加。切削力在这些拐角处会导致机器产生共振,并在加工表面留下震纹。...或者 使用更好的刀具路径。这些刀具路径在整个切削过程中保持切削力恒定,消除了产生抖动的刀具负载峰值。持续啮合还可让您提高编程的进给速率和主轴速度,因为它消除了可能导致刀具断裂的负载峰值。...3、铣刀的直径不正确 对于拐角,请确保使用直径足够小的立铣刀,以穿过拐角的半径,而不会过切。例如,不要使用 0.5 直径切割 0.25 半径内角。...相反,请考虑使用较小的工具,例如 0.375"直径端铣刀,以加工一个光滑的角落。
要弄清闭包产生的原因,首先要明白作用域链的概念。...值得注意的是,每一个子函数都会拷贝上级的作用域,形成一个作用域的链条。...这里 num 会拿到父级作用域中的变量,输出2。因为在当前环境中,含有对函数 f2 的引用,f2 恰恰引用了window、f1和f2的作用域,因此f2可以访问到f1的作用域的变量。...闭包产生的本质就是,当前环境中存在指向父级作用域的引用。 那是不是只有返回函数才算是产生了闭包呢?...在这里是外面的变量f2存在着父级作用域的引用,因此产生了闭包,形式变了,本质没有改变。
当本地分支落后于远程分支 本地分支没有pull , 直接改代码并且进行commit 此时如果push的时候,会要求pull一下 pull完以后再进行push , 日志里就会出现这条 pull的过程其实就是...fetch+merge 的一个过程。...我们从 remote 分支中拉取新的更新,然后再合并到本地分支中去。...如果 remote 分支超前于本地分支,并且本地分支没有任何 commit 的,直接从 remote 进行 pull 操作,默认会采用 fast-forward 模式,这种模式下,并不会产生合并节点,也就是说不会产生多余的那条...log 信息 如果想之前那样,本地先 commit 后再去 pull,那么此时,remote 分支和本地会分支会出现分叉,这个时候使用 pull 操作拉取更新时,就会进行分支合并,产生合并节点和 log
金属切削加工过程中不可避免产生一些振动,做好影响振动的因素分析是解决振动问题的前提。铣削加工是断续加工,其动力学关系更加复杂,影响因素众多。...在实验研究总结出,产生振动的原因主要有以下方面:一是影响铣削加工振动的主要因素为主轴转速、轴向切削深度、进给速度和径向切削深度四个参量;二是这四个影响因素对铣削振动影响的权重排序依次为主轴转速、轴向切削深度...在实际生产中产生中振动的原因复杂多变,根据机加行业出现的振动现象及两种不同类型的振动表现形式(强迫振动和自激振动),原因分析大致如下: 1、强迫振动 (1)机床上回转件不平衡所引起的周期性变化的离心力...(3)切削过程本身不均匀性所引起的周期性变化的切削力。如车削多边形或表面不平的工件及在车床上加工外形不规则的毛坯工件。 (4)往复运动部件运动方向改变时产生的惯性冲击。...如平面磨削过程的方向改变或瞬时改变机床的回转方向。 (5)由外界其他振源传来的干扰力。在铸造车间四周,因空气锤的振动引起其他机床的强迫振动,甚至共振。
产生背景 简单的说:线程1 想要去拿一个由 线程2 持有的锁,由于synchronized 的锁是互斥锁,某一时刻只能被一个线程所持有,所以线程1 就拿不到锁。...图片 死锁原因 是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。 原因如下: 因为系统资源不足。...进程运行推进的顺序不合适,这种产生的最多。 资源分配不当。...产生背景: 在多线程环境下,争抢同是争抢对方资源(锁)就会产生该问题,即产生死锁。...java 死锁产生的四个必要条件 互斥使用,即当资源被一个线程使用(占有)时,别的线程不能使用 不可抢占,资源请求者不能强制从资源占有者手中夺取资源,资源只能由资源占有者主动释放。
c语言野指针产生的原因 1、指针变量未初始化,任何指针变量刚被创建时不会自动成为 NULL 指针,它的缺省值是随机的。...所以,指针变量在创建的同时应当被初始化,要么将指针设置为 NULL ,要么让它指向合法的内存。...指针在 free 或 delete 后未赋值 NULL ,它们只是把指针所指的内存给释放掉,但并没有处理指针本身。此时指针指向不可知的(随机的、不正确的、没有明确限制的)。...释放后的指针应立即将指针置为NULL,防止产生野指针。 int main() { char *p; p=(char*)malloc(10); printf("%s\n",p); if(p!...=NULL) { free(p); } free(p);//再次释放p时,因为前面已经被释放了一次,再次释放会报错 return 0; } 以上就是c语言野指针产生的原因,希望对大家有所帮助。
产生背景 线程同步(就是加锁)会有一个问题,就是产生死锁 所谓死锁 是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。...发生死锁的具体原因如下: 因为系统资源不足。 进程运行推进的顺序不合适。 资源分配不当。...举列说明场景: 死锁是因为多线程访问共享资源,由于访问的顺序不当所造成的,通常是一个线程锁定了一个资源A,而又想去锁定资源B;在另一个线程中,锁定了资源B,而又想去锁定资源A以完成自身的操作,两个线程都想得到对方的资源...,而不愿释放自己的资源,造成两个线程都在等待,而无法执行的情况。
A { private B b; } public class B { private A a; } 产生原因 如图所示 Spring的解决办法 为了解决此处闭环,重复循环创建依赖对象...,添加三级缓存进行提前暴露对象 spring解决这个问题主要靠巧妙的三层缓存,所谓的缓存主要是指这三个map singletonObjects成品对象 // Cache of singleton objects...总结 在实例化过程中,将处于半成品的对象地址全部放在缓存中,提前暴露对象,在后续的过程中,再次对提前暴露的对象进行赋值,然后将赋值完成的对象,也就是成品对象放在一级缓存中,删除二级和三级缓存。...如果不要二级缓存的话,一级缓存会存在半成品和成品的对象,获取的时候,可能会获取到半成品的对象,无法使用。...,如果没有三级缓存,那么就无法得到代理对象 三级缓存时为了解决AOP代理过程中产生的循环依赖问题。
后来发现: print(fen) 结果为: ['\ufeff诗名', '贼退示官吏并序\n'] \ufeff 这是哪来的呢?...网上搜索后发现原来是文本保存时包含了BOM(Byte Order Mark,字节顺序标记,出现在文本文件头部,Unicode编码标准中用于标识文件是采用哪种格式的编码)导致的,解决方法是使用 utf-8...结果为: ['诗名', '贼退示官吏并序\n'] ['贼退示官吏并序'] 以后保存 txt 文件时一定要注意不要带有 bom,如果已经包含了 bom 则可使用 notepad++ 编辑器转换为无BOM格式的文本文件...utf-8与utf-8-sig两种编码格式的区别: As UTF-8 is an 8-bit encoding no BOM is required and anyU+FEFF character in...UTF-8以字节为编码单元,它的字节顺序在所有系统中都是一样的,没有字节序的问题,也因此它实际上并不需要BOM(“ByteOrder Mark”)。
一、哈希冲突的产生原因 哈希是通过对数据进行再压缩,提高效率的一种解决方法。但由于通过哈希函数产生的哈希值是有限的,而数据可能比较多,导致经过哈希函数处理后仍然有不同的数据对应相同的值。...这时候就产生了哈希冲突。...二、产生哈希冲突的影响因素 装填因子(装填因子=数据总数 / 哈希表长)、哈希函数、处理冲突的方法 三、解决哈希冲突的四种方法 1.开放地址方法 (1)线性探测 按顺序决定值时,如果某数据的值已经存在,...(2)再平方探测 按顺序决定值时,如果某数据的值已经存在,则在原来值的基础上先加1的平方个单位,若仍然存在则减1的平方个单位。随之是2的平方,3的平方等等。直至不发生哈希冲突。...而拉链法中可取α≥1,且结点较大时,拉链法中增加的指针域可忽略不计,因此节省空间; (4)在用拉链法构造的散列表中,删除结点的操作易于实现。只要简单地删去链表上相应的结点即可。
模型出现过拟合现象的原因 发生过拟合的主要原因可以有以下三点: (1)数据有噪声 (2)训练数据不足,有限的训练数据 (3)训练模型过度导致模型非常复杂 下面我将分别解释这三种情况(这里按自己的理解解释...,显而易得效果是非常差的,也就产生了过拟合现象!...训练数据不足,有限的训练数据 当我们训练数据不足的时候,即使得到的训练数据没有噪声,训练出来的模型也可能产生过拟合现象,解释如下: 假设我们的总体数据分布如下: ?...这点和第一点俩点原因结合起来其实非常好理解,当我们在训练数据训练的时候,如果训练过度,导致完全拟合了训练数据的话,得到的模型不一定是可靠的。...好了,到这里本文要讲的内容已经讲完了,我根据自己的理解,试图通俗的讲解产生过拟合的原因,希望能够让更多的人有一个直观的理解~真心希望对大家有帮助,欢迎大家指错交流~
背景: 线程同步(就是加锁)会有一个问题,就是产生死锁 所谓死锁: 是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。...有两个人:一个产品(线程1),一个测试(线程2),同时扑向抢老坛酸菜(锁A)和小鸡炖磨茹(锁B),产品拿到老坛酸菜,测试拿到小鸡炖磨茹,同一时刻,产品伸要去拽测试怀里的小鸡炖磨茹,测试伸手去拽产品的老坛酸菜...发生死锁的具体原因如下: 因为系统资源不足。 进程运行推进的顺序不合适。 资源分配不当。...举列说明场景: 死锁是因为多线程访问共享资源,由于访问的顺序不当所造成的,通常是一个线程锁定了一个资源A,而又想去锁定资源B;在另一个线程中,锁定了资源B,而又想去锁定资源A以完成自身的操作,两个线程都想得到对方的资源...,而不愿释放自己的资源,造成两个线程都在等待,而无法执行的情况。
领取专属 10元无门槛券
手把手带您无忧上云