2018-08-04 14:29:09    71    0    0

今天我有一万个MMP要说!

驱动人生丧尽天良

如果你使用过驱动人生,而且windows更新后或者平时出现PAGE_FAULT_IN_NONPAGED_AREA,不用想了,就是他的锅!辣鸡流氓软件,不仅捆绑多,强行篡改主页,还TM毁我系统!

请搜索如何删除 LDrvPro.sys 和 LDrvPro64.sys
即使你电脑里现在没有这两个驱动文件

本来我想发票圈,但是为了让更多人看到,更多人能够通过搜索解决这个坑爹问题,所以我决定写在博客上!

以下为我解决此问题的流程:

在WINDOWS\Minidump目录下使用windbg.exe打开记录错误信息的DMP文件

由此发现是LDrvPro64引发的问题

制作PE启动盘

随便一个都行,推荐WePE,干净无捆绑,穷到用百度盘作为下来来源。。。

PE模式启动

打开C:\WINDOWS\System32\drivers目录,删除其下LDrvPro.sys 和 LDrvPro64.sys两个文件。

(但是当时我是懵逼的,我没有这两个文件。。。但是看之前得到的DMP错误信息,确实是这个问题引发了,我就假装自己已经删除了继续操作的)

复制null.sys文件两次,并重命名为LDrvPro.sys 和 LDrvPro64.sys。(这步heng)

然后运行之前下载好的SkyIAR_v2.73一次。(这一步可能没有什么用,应该可以去掉)

2018-07-20 17:12:54    858    3    6

Day1

T1

这道题目离线相信大家都比较熟悉了。
首先使用最短路算法得到每个点回家的最短距离dis。

然后坐车可以通过一个没水的边组成的连通块,所以我们把所有边按照海拔高度排序,逐个加入图中,每一个连通块的代价就是该连通块内最小的dis值。这个可以使用并查集。

那么对于在线的情况呢?我们把操作可持久化,先排序做一遍,然后每次查询就好了。这样使用可持久化并查集可以得到一个可观的部分分。

但是依旧看上去不太能够通过,我们把连通块合并的过程建立成一棵树,也就是并查集合并两个集合的时候,我们选择新建一个父节点,然后两个集合的根节点连向这个父节点。于是我们就得到了一颗连通块合并顺序树。在每个父节点记录这次合并的海拔高度。然后对于一个点的查询,我们就可以遍历这个点到根节点的路径上的每个点,然后就可以判断答案,这部分采用树上倍增优化一下,就可以做到NlogN了。

所以本题最终复杂度O(NlogN)

T2

首先冒泡排序的交换次数是等于逆序对个数的。
我们分析题目所写的下界12i=1N|ipi|的具体含义。比如排列231就是好的,而排列321就是不好的。

分析其中原因发现,每次交换必须使得两个数字离自己正确的位置都更近一步才行。
形象一点就是说,如果我们把pii看成一个由

2018-07-13 08:46:51    327    0    0

觉得一到暑假整个人就废了

还是需要一些ddl来挽救一下我颓废的日常

7.13

TODO

  • 准备7.16课件。
  • 准备7.17题目。

DDL

7.13 6pm.

update

  • 准备7.16课件。完成24页
  • 准备7.17题目。

7.14

  • 准备7.18课件。
  • 准备7.19题目。

7.15

  • 准备7.20课件。
  • 准备7.21题目。
2018-07-01 13:57:11    253    0    0

程序简介

  • 这是srCaPP的GUI界面部分,为一些常见的爬虫操作设计了简单易用的交互可视化使用方法,网页爬取部分由Core内核驱动。

  • 使用样例视频

代码架构

title

变量生成及运算

StringVar类

  • 字符串内容储存在一个vector当中,可以视为一个字符串集合,并且编写了一些易用的函数如集合的交、并、异或,对于每个字符串增加前缀,增加后缀,提取符合正则表达式的子串,保留符合正则表达式的字符串这样一些操作。

IntVar类

  • 继承于StringVar类,并且增加了对于数值的额外操作函数,实际上储存还是以字符串形式储存在vector当中。对于StringVar到IntVar的转换默认为把每个字符串转成数字然后再储存为字符串。增加了数值的加减乘除操作。

UrlVar类

  • 继承于StringVar类,并增加了对于网页链接的额外操作函数,实际上储存还是以字符串形式储存在vector当中。对于StringVar到IntVar的转换默认为把每个字符串补全http://开头。增加了链接的Http和Https之间的互相转换。

VarCreator类

  • 实际上是一个工厂,用于创建以上三类Var变量,并且可以保存每个变量的创建配置。calc()为获得这个配置下得到的Var类,第二次以同样配置获得的时候,会直接返回之前的Var类,以此提高效率,减少重复计算。recalc()用于强制递归重算每个相关变量,以保证在部分外部数据修改的时候,能够获得正确的答案。

浏览器内核

TinteractObject类

  • 配合Qchannel实现Qt与浏览器内核脚本的交互。

objRender类

  • 这个js类用于对于界面进行渲染,绘制各种各样的框。

objSelector类

2018-06-29 16:20:59    407    0    0

SGI STL 简介

  • SGI STL是STL(Standard Template Library)代码的经典实现版本,虽然很多编译器不直接使用这个版本,但是很多却在此基础之上进行改进的。
  • STL可以划分成六个主要部分分别是Containers(容器)、Iterators(迭代器)、Algorithms(算法)、Function Objects(函数对象)、Memory Allocation(空间配置器)、Adaptors(适配器)。

SGI STL的软件架构与各部件之间关联

空间配置器

  • 配置器负责空间配置与管理,考虑到小型区块可能造成内存碎片问题,SGI 采用两级配置器,第一级配置器直接使用 malloc() 和 free() 实现;第二级配置器使用 memory pool 自己进行内存池管理,提高了小型内存分配的效率。第二季配置器由16个管理大小分别为 8, 16, 24, 32,40, 48, 56, 64, 72, 80, 88, 96, 104, 112, 120, 128的小额区块的free-list组成。

函数对象

  • 函数对象是一种重载了 operator() 的 class 或 class template,可以为算法的某种策略。
  • 所有函数对象均为一元函数unary_function的派生类或者二元函数binary_function的派生类。
  • 如果按照类型划分,分为基础函数(加减乘除等)以及其用于修饰的适配器。可以通过修饰组合出多样的函数对象。

容器

  • 容器分为序列式容器和关联式容器。序列式容器有deque,heap,list,queue,slist,stack,vector。关联式容器有hash_map,hash_set,map,set
2018-04-21 10:20:50    207    1    1

建立一个线段树管理所有整点上的最优值。
每一个线段树节点存有一条 X 轴范围和自己管理范围相同的线段,每次插入把一个插入线段拆成 logN 段放入线段树内,也就是和普通线段树拆分区间一样,如果原来这个点上存有线段,则进行如下操作:

  • 当前线段完全在原线段上方,丢弃原线段保留当前线段。
  • 当前线段完全在原线段下方,丢弃现有线段。
  • 当前线段与原线段相交,交点在左儿子范围内,当前节点保留红色线段,绿色线段丢弃右半部分后往做儿子下传。
    title
  • 交点在右边的情况同理。
  • 交点在中间随意采用以上两种做法之一。

所以可以得知,如果有两个线段在一个线段树节点相交,最多会造成长为logN一条的连续下传。由于一条线段被加入logN个线段树节点之中,所以单词操作复杂度最多为O(log2N)

2018-04-03 14:24:54    143    0    0

ASmallPlugin

1. 安装需要的https证书 Download & run script


2. 如何安装这个浏览器插件 Install chrome extension

MacOS or Ubuntu

请先下载ASmallPlugin.crx,如果因Chrome浏览器拦截导致的无法下载,请下载ASmallPlugin.noSuffix并修改后缀名为crx

然后打开Chrome浏览器的[扩展程序页面]("chrome://extensions/")(右上方设置 --> 更多工具 --> 扩展程序)。

扩展程序

找到之前下载的crx文件,拖拽至该页面即可安装。
install

请点击添加扩展程序即可完成安装,安装完成后crx安装包可以删除。

如果你依旧安装不成功,请采用windows的安装方式。


Windows

请先下载ASmallPlugin.zip

现在完成后,解压到任意安装目录。

然后打开Chrome浏览器的[扩展程序页面]("chrome://extensions/")(右上方设置 --> 更多工具 --> 扩展程序)。

扩展程序

进入页面后勾选右上方开发者模式选项(你所看到的页面可能有所不一样,不过这个选项是有的)

title

title

然后点击加载已解压的扩展程序

title

并选择你的解压路径,选择完成后确认即可。

title

然后安装就完成了,之前解压的文件夹不可删除,否则会删除插件。


如何更新

MacOS or Ubuntu

请先下载最新版的ASmallPlugin.crx,如果因Chrome浏览器拦截导致的无法下载,请下载ASmallPlugin.noSuffix并修改后缀名为crx

然后打开Chrome浏览器的扩展程序页面(右上方设置 --> 更多工具 --> 扩展程序)。

扩展程序

找到之前下载的crx文件,拖拽至该页面并松手即可完成更新。


Windows

请先下载最新版的ASmallPlugin.zip

现在完成后,解压并覆盖原有文件,然后打开[扩展程序页面]("chrome://extensions/"),

2018-03-16 16:35:51    33    0    0
2018-03-16 16:35:51    18    0    0

本地存储

这里

Cookie相关操作

手动使用Cookie这里

JQuery调用看这里

MD5相关操作

直接调用就好了

信息收集参考

这里

OnLoad

参见

页面访问来源

document.referrer

参见

为什么有些没有referrer呢

  1. html5中,a标签的rel = noreferrer”, 可以让浏览器不发送referer

桌面通知

参考

div隐藏

JQuery渐变

JS插入DIV

2018-03-16 16:35:51    15    0    0

一开始想用

  1. window.onbeforeunload = function(){
  2. // do sth.
  3. }
  4. window.onunload = function(){
  5. // do sth.
  6. return "msg";
  7. }

发现前者完全起作用,alert不出来。

后来查了一下发现新的chrome为了防止网页太流氓不允许做除了返回警告信息以外的内容TAT。

然后发现一种新的姿势,自己弹出的窗口可以设置,并且可以猖狂的做事情,while(1)弹出都可以。

  1. var w = window.open('popup.html');
  2. w.onbeforeunload = function(){
  3. // do anything you want
  4. };

关不掉的页面233

  1. var w = window.open();
  2. function f(){
  3. var y = window.open();// do anything you want
  4. y.onbeforeunload = f;
  5. };
  6. w.onbeforeunload = f;

这实际上是A页面中的代码响应B页面的关闭消息而已,所以关掉A页面即可终止循环。