自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(149)
  • 收藏
  • 关注

原创 Python编程-爬虫原理与简单实践

一个简单的爬虫是比较初级入门并且也十分有实用价值的东东,例如可以获取一下每天的天气,喜欢看电影的可以爬一爬电影的榜单,复杂一点的可以根据已有的电影爬取封面、信息等。爬虫就是一个这样的东西,可以实现批量的获取我们想要的信息,取代了手工的点点点和选择等操作。开题我们知道html网页是由标签组成,通常同级并列的信息是位于同一类标签下,例如下面的一个电影网站左侧是新上映的电影,包...

2019-11-09 11:54:28 1909 1

转载 逆向与破解-操作数定位方式实例

汇编指令时逆向的基本,我们看到的最基本的都是汇编指令,存在部分反汇编工具支持将代码转换为类C代码。前文已经转载过一篇涉及操作码和对应的功能的文章,这次则是操作数的定位方式。以下为原文。计算机只容许使用bx、si、di、bp寄存器做间接和相对寻址其中bx为基址存储器,si、di为变址存储器内存寻址方式:确定访问内存存储单元偏移地址的方式称为寻址方式。直接寻址:[偏移地址]...

2019-11-01 17:34:53 968

转载 逆向与破解-windows异常处理机制

以前看到过的很棒的一个讲解SEH的,非常的详细和简单易懂,不需要特别纠结具体的结构和处理的方法,初期对过程有一定的掌握就可以。以下为原文深入解析结构化异常处理(SEH) - by Matt Pietrek尽管以前写过一篇SEH相关的文章《关于SEH的简单总结》, 但那真的只是皮毛,一直对Windows异常处理的原理似懂非懂, 看了下面的文章 ,一切都豁然开朗.1997年文章,Window...

2019-11-01 16:46:57 2330

转载 逆向与破解-汇编指令

在转载之前补充两句,在汇编指令中几个大类是计算指令,转移指令和标记指令。其中计算是大头,包括加减乘除移位,与或非,异或等,其次是多种跳转方式,根据计算结果导致的标志位变化不同,跳转也有多种方式,以下是几个有关的提示。不是所有的寻址方式都可以用到每个指令中,有很多指令仅支持部分的寻址方式。 其中DST,SRC分别是目的操作数和源操作数的缩写,OPR则是operand即操作数的意思 &lt...

2019-10-31 18:09:31 1418

原创 逆向与破解-基础理论

虽然很早就喜欢想要学习,但最早接触逆向的时候还是研一,那个时候的一本《加密与解密》真的给了我特别大的帮助,它的基础讲的通俗易懂,小例子程序也很到位,可以让新手或有点基础的迅速掌握基本的理论和工具使用。回过头来现在已经搞了将近以一年多的恶意代码检测和WEB安全相关的东西,不过逆向并没有落下,因为恶意代码检测也涉及了不少系统的核心原理,例如堆栈,异常处理机制,程序调试等。工欲善其事,必先利其器...

2019-10-31 17:53:52 4976

原创 网络与安全-总结归纳

这次是想梳理梳理网络与安全中的一些基本概念和涉及的东西,不得不说这是一个非常大的框架,涉及的东西是在是太多,一方面是自己查缺补漏一下,另一方面是清晰一下脉络。为了不显得那么杂乱,简单将其分为三个小部分:网络通信,网络资源与网络安全。(该篇文章不会描述具体的内容,仅是归纳一下已知的关键的点,因为是临时整理所以还有很多没想到的,随时会补充)网络通信网络通信是网络中最基本的数据传输,两个网...

2019-10-29 17:26:56 634

原创 word技巧-分节符和连续页码,页眉页脚加线

word的页码也是一个让人头疼的地方需求:1. 在word页脚处显示连续的页码2. word中需要分为多段,每段都有自己的页码序号在word中有一个叫做分节符的占位符,可以实现序号分节它的作用比分页符大一些,在分页的同时可以开始新的序号对于删除行开始的回车 或者是分页符等 可以点在前面 然后按delete键删除 常规手段是删不掉的1. 连续序号注意顺...

2019-10-25 20:47:33 6053 1

原创 word技巧-大纲与目录

这个月在忙毕设,就暂时没有更新。我发现md真的是太幸福了,很多同学也用latex写论文,而word虽然方便,但是一遇到问题真的是让人抓心挠肺。根据近来一段时间使用word的遇到的问题和解决办法,特意写下这篇笔记。大纲word的大纲大家并不陌生,它是用来规定段落等级的。说白了也就是哪个是一级段落,哪个是二级,我们使用默认的演示一下,自带的标题实际上就是三个大纲级别的想要...

2019-10-25 19:42:10 5266

转载 语言处理方法-Word2Vec详解

NLP之——Word2Vec详解2013年,Google开源了一款用于词向量计算的工具——word2vec,引起了工业界和学术界的关注。首先,word2vec可以在百万数量级的词典和上亿的数据集上进行高效地训练;其次,该工具得到的训练结果——词向量(word embedding),可以很好地度量词与词之间的相似性。随着深度学习(Deep Learning)在自然语言处理中应用的普及,很多人误以...

2019-10-05 10:58:52 1151

原创 c# 防止闪烁之双缓冲和虚拟模式

在C#界面编程中,通常在大量的绘制和添加控件的过程中出现闪烁的问题,常见的闪烁的原因很容易理解:当我们添加控件时触发WM_PAINT消息,导致窗体需要重绘。步骤大致如下:使用窗体的背景色擦除窗口表面 绘制窗体图像 绘制其上的控件和图像当我们的主窗口的内容或大小改变,都会触发Paint事件重绘。该操作会使画面重新刷新一次,而每次刷新过程中,每一个图元(跟图像显示有关的元器件)都会重绘...

2019-10-05 09:50:23 1031

原创 数据结构与算法-初识树和图

对于很多人来说,字典和数组是非常熟悉也经常用的数据结构。链表也还算比较常用。他们的特点如下:1.字典和数组都是线性结构2.字典和数组,链表都是按照位置来存储数据的,例如字段是通过哈希计算下标,数组是使用下标,链表则是一个一个的链接在一起3. 字典和数组,链表都是实现的几乎都是一对一的结构,既数据之间的关系的关系是一一对应。树我们可以看出,上述的数据结构几乎是一对...

2019-10-02 12:16:27 934

转载 Windows平台shellcode编写原理

在漏洞利用代码也即是shellcode的编写中,存在诸多的技巧。尤其是对于windows而言,库和函数的定位都需要手动获取,不像linux使用系统调用号那样的方便。这是我看到一个写的非常详细,非常通俗易懂的教学文章,详细的讲解了开发一个windows下shellcode的整体流程,如何定位库和函数的地址,如何处理字符串等,只要稍微有些基础就能够看懂其中的原理,写的非常赞。来源:http:/...

2019-09-26 16:42:46 810

原创 正则表达式-进阶之定位与断言(python使用re模块及注意事项)

换一个高级点的在线工具(http://tool.chinaz.com/regex/),包含常用匹配和着色显示,很不错。python中的调用方法import retxt = u'<a href="//csdn.net/488732" title="首页" class=""></a>'par = re.compile(pattern=u"href=\"(\/...

2019-09-25 20:10:17 1978

原创 正则表达式-初级使用

正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。正则表表达式的用途多在于数据的筛选,匹配,提取,举例子:文件夹下众多文件的过滤,提取网页标签内容,匹配输入的电话号ip地址等。我会用自己使用正则的理解,简单、通俗的解释一下。(首先给一个在线测试的网站吧,...

2019-09-24 20:36:50 386

原创 Python编程-pypyodbc无驱动和无法打开注册表等错误的解决办法

在使用pypyodbc过程中,可能发生以下几个错误,解决办法记录如下:1. 没有Microsoft Access Driver(*.mdb)等驱动网上常见的解决办法是创建数据源,使用控制面板-管理工具-数据源管理器添加和创建数据库打开之后,添加对应的驱动和数据库就可以选择现有的和创建新的都可以这个方法有时候并不一定可行,因为我们可能没有这个驱动,最好的办...

2019-09-23 19:35:49 1922

原创 Python编程-连接和操作mdb accdb数据库,pypyodbc的安装和使用

对于我们需要存储服务的编程来说,数据库是一个可靠的伙伴。数据库提供了非常便利的存储功能,并且可以通过sql语句快捷的增删改查。在python中有多种方法可以操作数据库,例如MySQLdb,pymysql,pypyodbc等,其实操作起来都差不多。一般操作数据库的流程为:我们连接后打开数据库,就可以使用sql语句操作数据库,切记不要忘记关闭,否则操作可能无法保存。在众多库中,这个流程...

2019-09-23 18:55:40 7716 2

原创 数据结构与算法-散列表冲突的解决办法

我们上文以字典作为例子,描述了散列表这种结构。它以函数H(哈希函数)作为纽带,连接一对键值,通过H(键)计算得出数组的下标用于存储键值对。它的优势是可以绑定键值,允许我们通过键来访问特定的值,并且寻找的复杂度不精准的来说是O(1)。但是我们发现了问题,我们的数组是有限长度的,但是输入在某些情况下,不同的键可能会得到同样的下标,即产生了冲突。如这两个图所示,键值1和存储之后,键值...

2019-09-20 20:30:12 910

原创 数据结构与算法-链表

链表链表也是一个非常基本的数据结构,跟数组有很大的不同。我们知道数组是占用连续内存的线性结构ADD就是该数组的首地址,访问元素可以使用ADD【下标】。然而我们可以发现数组占用连续的空间,需要扩容的时候需要开辟更大的连续空间然后复制过去,并且当我们移除 插入元素时,需要遍历数组将元素进行前移补位和后移空位。数组虽然访问方便,但是对于这样的操作是在是太不友好了。为了,出现了链表结构...

2019-09-14 16:40:38 360

原创 数据结构与算法-散列表

散列表我们前面已经说过数组这个数据结构,他非常的方便,使用连续的内存和下标来操作元素。但是这难以满足一些其他的需求,比如我们需要将两个对象进行一一对应,没错我们常用的字典就是其中的一种类型。字典这种结构使用键(key)---值(value)的对应关系,我们可以根据键获得对应的值。a = {"liu":98,"zhang":99}a["liu"]# 98我们可以...

2019-09-14 16:40:29 445

原创 Python编程-随机数和随机数组生成, list和array的互相转换

在python编程中,随机数是一个某些时候非常有用的功能。随机数的产生涉及numpy.random模块和random模块本文可能无法涉及所有的情况,但是常用的情况都会简单说一下:首先是random模块,注意引用import random1 随机单个数字随机范围的整数 上界和下界import randomrandom.randint(12, 20)# 14...

2019-09-09 18:06:38 4437

原创 Python编程-当前时间的获取,显示和计算操作

python一般来说随意搞点小东西是不需要涉及到时间的,一般用到的地方可能是界面显示或者提示 文件保存的名字或日志内容Python的时间可以按照自己的任意格式要求进行调整,不仅如此它还支持日期之间的计算。相关库 import datetime演示的程序如下:import datetime# 获取当前时间datetime.datetime.now()# date...

2019-09-07 20:21:08 1548

原创 Python编程-五种常用的字符串连接方式

字符串是我们在python中非常常用的,输入输出,显示,保存等都会用到。在Python中支持多种字符串的拼接方式,甚至还有意想不到的乘法方式,我们接下来逐个演示这些方法1. 直接+str1 = "Hello "str2 = "World"str1+str2# 'Hello World'这是最常见的,如果一个是字符串一个是数字,那么需要str转换一下:str1 =...

2019-09-06 09:54:08 558

原创 数据结构与算法-队列

今天可能要多说几句,因为又遇到点事有点感触哈。出去开会结果讲的大多数都是个我的专业无关的专题,专家讲的那些名词别说不了解,听都没听过。我就突然联想到平时的学习,既然我们作为某个领域的人,就一定要了解领域里的相关专业术语。要不无论是跟其他人交流,或者是出去学习,人家拿出来一个术语,咱还不知道就很难受。先不说知不知道的问题,对术语的了解一定程度上可以判断一个人对该领域的研究和学习是否深入...

2019-09-06 09:32:49 434

原创 python界面编程-PyQT5界面编程简单原理

PyQT5作为一个界面库,使用起来确实很方便,它是类似于基于对象的编程方法,通过创建对象,控制对象属性,绑定事件等完成一个完整的界面设计我们已经看过他的设计器,再次介绍一下:左侧的控件时现成的,可以拖到主界面直接用控件可以通过属性控制大小,位置,图标,文字等。对于这种面向对象的界面设计方法,界面时非常容易的弄的,关键是背后的代码。我们先随意布局一个按钮 一个列表 一个...

2019-09-03 23:40:10 7639

原创 python界面编程-PyQT5安装和使用 界面设计器

按道理来说python不应该拿来设计界面,本来他也不是这个擅长的,完全可以用WPF等使用python封装代码,但是也是实际用到了,就想一整套下来全用python。据了解主流的界面库有pyqt和tkinter,但是看pyqt内置界面编辑器,控件布局很方便,所以这里就记录一下。我们分四个步骤说明:pyqt库下载和安装 界面设计器和布局 py生成器 界面原理1pyqt库下载和安装...

2019-08-31 20:58:45 2542 2

原创 超级简单的方法 实现在python的一个py脚本中调用另外一个py脚本中的类或函数

也是前两天遇到的问题,一般来说遇到这样的问题是像我似的,把代码都写到一个文件里,后来做别的东西跟它衔接的时候发现需要用里面的函数,但是又觉得从这个文件拷贝函数到那个文件太low了...而且不利于维护和修改,所以就上网查了查这个跟调用python库不一样,python库时直接安装在python环境中,并且支持直接import引入,现在的情况是这个样子:我有mainfile和fu...

2019-08-29 20:12:16 9142

原创 数据结构与算法-栈

数据结构的数组已经简单的说了,本来中间应该是链表的,但是还是决定先说栈的知识,先将一整套的流程理一遍,然后在切换到链表上。数据结构其实可以分为物理结构和逻辑结构,像数组由于是在内存中连续存储的,所以支持下标访问,这就是物理结构,因为该特性是由自身的物理存储方式而带来的。那么逻辑结构就大相径庭了,它是依靠逻辑关系来控制的结构。固然任何数据都需要存储和分布,我举一个简单的例子你就会理解。...

2019-08-28 19:19:22 586

原创 数据结构与算法-排序算法(鸡尾酒排序-特殊情况的排序方法)

说起来排序,始终会出现这样的问题这是一个普通的数组,如果我们想从小到大排序的话,无论是简单的选择排序还是冒泡排序都会有额外的工作。举例子,使用冒泡排序:第一轮显然现在已经是有序的了,但是冒泡排序还需要进行七轮,虽然不会移位,但是还是会逐个比较,这明显是额外的,多余的工作。这就是这次要说的重点,算法这东西学的是原理,考的是应用,要会的是根据实际情况调整,优化,使得算...

2019-08-27 19:56:49 460

原创 数据结构与算法-数组的插入、删除、与查找(高效的二分查找法)

在前文我们简单的聊了聊数组的初步的原理,数组是如何获取元素的,数组又是如何在内存中存储的。除此之外就是我们今天要说的,数组的一些应用方式。我们可能各种语言常见一些函数 int[] array (这里以int数组举例子)插入函数 array.Insert(int index,int item)删除函数 array.Remove(int item)删除函数 array.Removea...

2019-08-26 19:57:25 2256

原创 数据结构与算法-使用下标访问的数据结构(数组)

这个是正好是前面讲了一些排序算法,也用到了不少次数组了,所以就在这里想直接说一下。数据结构有很多,每个都有自己的优点,因为每一个结构的产生都是因为实际的需要。学习数据结构需要,需要牢牢记住一句话:结构决定功能每一种结构的特点,决定了他们的用途,功能。还是用java举例子,我么常用的数组class Untitled { public static void main(Stri...

2019-08-22 18:56:00 1182

原创 数据结构与算法-排序算法(计数排序)

这其实是一个"投机取巧"地方法,应用的范围不是那么宽,还没有涉及到更深的思想,所以就放在前面来讲。我们的排序问题实际上就是大的跟小的按照顺序输出。排序的结果很显然是1235677思考这样一个问题,我们输出的实际上就是数字的大小和数目。我们事先可以维护一个已经排序好的数字,然后根据遍历数组,按照数字的个数输出,不就是排好序的了吗我们遍历数组,开始统计7 1...

2019-08-21 19:54:36 522

原创 数据结构与算法-时间复杂度与空间复杂度

这两个词是编写算法时需要考虑的,在实际的场景中,可能老板就跟你说他要实现一个什么功能,让你实现一个O(n)的算法,此时我们是这个表情??一个算法中需要考虑到的有两点,一个是执行的速度,另外一个则是执行占得资源。距离子来说查询数据库,然后将查到的数据进行排序我们的实现:先获取所有数据,然后从内存中筛选,选择一个冒泡排序(O(n^2))路人A的实现:利用查询语句从数据库获取筛选后的数据...

2019-08-21 18:53:40 452

原创 数据结构与算法-排序算法(选择排序)

冒泡排序真的是太烦了,需要一直两两比较,将最大的浮动到上面的位置去,可能有人在想,我为什么不记住最大或最小的位置,遍历完成之后只需要交换最大或最小的和对应的位置不就可以了,省去了来回串来串去的烦恼。确实是这个道理,这个方法就是选择排序。我们使用例子演示一下首先从第一位遍历 我们假设当前最小的是第一个第一位跟第二位比较,第二位更小,记录的序号更新为1最小值变为...

2019-08-20 20:07:13 394

原创 数据结构与算法-排序算法(冒泡排序)

排序是一个我们经常遇到的问题,这也是一个非常基本的问题,例如我们平时大小个站队?搜索数据之后的排序,常见的还是数字的排序等等(该图像素材来源于网络)那么想象我们站队的时候是怎么排序的,来时看到谁最高就让谁站到第一位,然后再找第二高的,以此类推。我们看出高低也是互相比较得出的,计算机也可以使用这个方法,首先找到最高的,然后是第二高的,这种方法就是冒泡排序,因为他是按照大小一个一个的得到结果,就...

2019-08-19 20:22:40 1073 1

原创 数据结构与算法-为什么要学数据结构和算法(开篇)

最近的发论文和毕业耽误了一段时间,不过并没有停止学习,这段时间学习了小灰漫画算法和网络安全的一些书籍。以前的我总是浮于表面(不是说我浮躁),看到什么东西或者有什么想法,就会想如何用编程实现这么一个目标。这么长时间走过来,虽然这个语言那个语言的学着,然后造出来点有用的东西,最后才发现这些其实都是弯路。对于学编程而言,你学会了一门语言实际上就很容易的触类旁通其他的语言,所以出刚开始的时候只要选...

2019-08-19 18:18:12 720 2

原创 Java-第六章 异常处理

编程执行过程中很可能出现错误,比如文件不存在,除以0等问题都有可能影响程序的正常运行导致非常规终止,通常将可能出现异常的语句放入try{}语句中,将出现错误后需要执行的语句放入到catch{}语句中,将无论是否发生异常都要执行的语句放在finally{}语句中。当程序执行出现异常的时候,系统会抛出一个异常,从try{}中跳出到catch{}中进行捕捉。不过不管有没有异常产生,finall...

2019-05-31 23:20:47 357

原创 Java-第七章 多线程和异步操作

先说大概有三种方法,一个是继承thread类 一个是Runable接口 另一个是继承继承Callable接口。用多线程只有一个目的,那就是更好的利用cpu的资源,因为所有的多线程代码都可以用单线程来实现。但其实从理解来讲,如果我们需要做很多的事情时,一个事情耗时,那么其他的任务就需要等待,造成了堵塞。最明显的就是在当前界面编程模型中,界面是在主线程中的,当你在主线程处理费事的东西,那么界...

2019-05-31 23:16:42 5178 1

原创 Java-第六章 异常处理

编程执行过程中很可能出现错误,比如文件不存在,除以0等问题都有可能影响程序的正常运行导致非常规终止,通常将可能出现异常的语句放入try{}语句中,将出现错误后需要执行的语句放入到catch{}语句中,将无论是否发生异常都要执行的语句放在finally{}语句中。当程序执行出现异常的时候,系统会抛出一个异常,从try{}中跳出到catch{}中进行捕捉。不过不管有没有异常产生,finall...

2019-05-31 23:12:22 267

原创 linux vscode 安装与配置 简单的程序例子

linux vscode 安装与配置 简单的程序例子关于vscode 这里说三个要点(1)下载与安装(2)插件(3)编译配置下载与安装首先去官网下载文件https://code.visualstudio.com/docs?dv=linux64有32位和64位版本的,并且有不同的压缩包下载一个tar包就可以,然后复制到linux磁盘上高级点的可...

2019-04-28 08:55:29 83168 6

原创 vs创建c语言项目

vs创建c语言项目已知用c# 做一些简单的开发,以前虽然也捅咕过C和C++,但是好久不上手了,现在用VS都不知道怎么创建C项目。首先打开VS程序,选择新建一个项目然后在里面选择C++,新建win32控制台程序下面的哪些名字和路径,改了项目名就行,其他的也不用管,没必要随后进入了创建向导这是一个关键点,选择空项目和控制台应用程序,创建完成项目接下来我们...

2019-04-28 08:43:33 35433 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除