自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Scrapy介绍

简单介绍Scrapy爬虫框架以及如何安装和新建一个Scrapy项目...

2022-01-30 16:21:48 2232

原创 Windows基本架构

Windows架构Windows基本架构:主要分为R0-R3四个层级,其中R0(内核态)包括内存、进程、线程、I/O等管理,核心体,设备驱动程序,硬件抽象层(HAL);R3(用户态)包括NTDLL.DLL主要由服务进程、Win32应用程序以及win32子系统动态链接库构成。用户模式进程有如下四种基本的模型:固定的系统支持进程,比如登录进程和会话管理器,它们并不是Windows服务;服务进程宿纳的是Windows服务,比如Task Sechedular和Print Spooer服务。Windows服

2020-06-25 23:31:57 3885

原创 windows对象

执行体总共实现了42种对象类型。这些对象中有许多仅被用于其定义所在的执行体组件,无法通过Windows API直接访问。如驱动程序、设备和事件对。暴露给Windows API的执行体对象包含如下:Process 执行一组线程对象所必须的虚拟地址空间和控制信息;Thread 进程内部的一个可执行实体;Job 指一组进程,通过作业机制,可以像单个实体那样来管理它们;Section 共享内存的一个区域(在Windows中也称文件映像对象);Token 一个进程或者线程的安全轮廓(安全ID、用户权限等)

2020-06-25 23:30:47 330

原创 汇编笔记-(基本常用指令,函数调用规则,语句与结构反汇编)

堆栈堆栈指令push: 把32位操作数压入堆栈,压入成功后esp被减4.pop: 将32位操作数弹出堆栈,弹出之前esp被加4.可涉及堆栈操作的指令sub: 通常被减数放入寄存器中,第二个参数放在堆栈上;add: 第一个参数放在eax寄存器上,第二参数放在堆栈上;ret: 返回。类似于pop与jmp的组合指令。call: 调用函数。类似于push与jmp的组合指令。数据传送指令...

2020-05-02 17:12:22 345

原创 C++模板学习笔记(一)

函数模板定义函数簇给不同的模板参数;传递参数给函数函数参数时取决于模板参数,函数模板根据实例化的模板参数推断出相应参数类型;可以显示限定模板参数;定义默认参数模板时,可以引用前面模板参数和后面参数没有默认值参数;可以重载函数模板;重载函数模板为其他函数模板时,应确保调用时只能匹配一个;重载函数模板时,限制改变显式指定的模板参数;在调用之前确保编译器理解重载的函数模板版本;C++中,...

2020-03-28 21:11:46 153

原创 GLSL内置变量与函数

内置变量OpenGL渲染由以下几部分组成:顶点着色,细分控制着色,细分计算着色,几何着色,片元着色,计算着色。分别描述在各个阶段的内置变量。顶点着色阶段in int gl_VertexID;in int gl_InstanceID;out gl_PerVertex{ vec4 gl_Position; float gl_PointSize; float gl_ClipDistan...

2019-10-18 22:29:49 1063

原创 OpenCV学习笔记(二)

滑块处理通过调用函数接口实现视频播放的快进和倒退,源码如下:#include<opencv2/highgui.hpp>#include<opencv2/imgproc/imgproc.hpp>#include<iostream>#include<fstream>int gsliderPosition = 0;int grun = 1;...

2019-07-28 18:51:56 169

原创 OpenCV学习笔记(一)

OpenCV简介opencv是一个开源的计算机视觉库,设计目标是执行速度进,尽量快,主要关注实时应用。构建一个简单易用的计算机视觉框架,以帮助开发人员更见便捷地设计复杂的计算视觉相关应用程序。计算机视觉是将来自静止图像或视频的数据转换成一个决策或者一种新的表达方式的过程,所有的这些转换都是为了达到某个目标。opencv当初的三大目标:为基本的视觉应用提供开放且优化的源代码,以促进视觉研究的...

2019-07-28 12:04:18 171

原创 OpenGL学习笔记(一)

OpenGL简单实现初始化GLFW库。创建一个GLFW窗口以及OpenGL环境。渲染场景。将输出结果呈现给用户。初始化并创建窗口在使用GLFW之前,有必要设置一个错误处理机制,这样如果出现任何问题,GLFW及时进行处理。GLFW向用户程序报告错误的方法是采用回调函数。而回调函数的设置是通过glfwSetErrorCallback()来完成的。GLFWerrorfun* glfwS...

2019-06-07 23:34:24 1014

原创 有理样条曲线学习笔记(一)

曲线,曲面表示曲线表示方法隐式表示法:在xy平面上曲线可以使用f(x,y)=0的隐含地描述了曲线上点的x,y坐标之间所满足的关系,对于一条给定的曲线,除了差一个常数因子外,方程是唯一的。参数表示法:曲线上点的每个坐标分量均被表示为一个独立参数的显示函数,其形式如C(u)=(x(u),y(u)),故C(u)是一个独立变量u的矢值函数,尽管在[a,b]可以是任意的,但通常将其规划为[0,1].一...

2019-06-01 19:54:02 1178

原创 Docker学习笔记(一)

容器与虚拟机之间差异容器能与主机的操作系统共享资源,因而它的效率高出一个数量级。启动和停止容器均只需一瞬间。相比在主机上直接运行程序。容器的性能损耗非常低,甚至是零损耗。容器具有可移植性,这极有可能彻底解决由于运行环境的改变导致的问题。甚至有可能彻底终止开发者的抱怨。容器是轻量级的,这意味着开发者可以同时运行多个容器,并能模拟分布式系统在真实运行环境下的情况。运维工程师在一台主机...

2019-05-02 11:01:07 144

原创 Go-语言特性

自动垃圾回收垃圾回收,即所有的内存分配动作都会被在运行时记录,同时任何对该内存的使用也都会被记录,然后垃圾回收器会对所有已经分配的内存进行跟踪监测,一旦发现有些内存已经不再被任何人使用,就阶段性回收这些没人用的内存。Go语言没有C++“强大”的指针计算功能,因此可以很自然地包含垃圾回收功能。因为垃圾回收功能的支持,开发者无需大新所指向的对象失效的问题,因此Go语言中不需要delete关键字,也...

2019-03-28 10:51:39 138

原创 Git-工作流

在一个单独的仓库中,我可以存放项目的不同版本。这些仓库内的更改可以通过分支进行追踪。为了从我当前的分支切换到另一个分支,我会签出(checkout)我想要切换过去的分支。在切换前,Git将会强制要求我处理未提交的更改,要么提交,要么舍弃。提交过程会将我的更改持久存储到仓库,而储藏(stash)将会暂存更改,允许你随后拉取你刚刚储藏的工作并重新应用。并入和发布更改的过程使用了下面这些命令。我从远端...

2019-03-27 16:39:12 291

原创 Git-Pull Request

Pull Request是自己修改源代码后,请求对方仓库采纳该修改时的一种方法。Pull Request准备查看需要修改的源代码。Fork。访问仓库页面,点击Fork按钮创建自己的仓库。新建的仓库名为“自己的账户/仓库名”.clone。clone仓库所需的访问信息显示在右侧的中央部分。git clone https://github.com/jiangweixiao/first-pr.g...

2019-03-25 10:13:00 353

原创 Git-常见操作

Git仓库管理功能时GitHub的核心。Git属于分散型版本控制管理系统,是为版本管理而设计的软件。Subversion属于集中型版本管理控制系统。两者选择集中型:以Subversion为代表的集中型,将仓库集中存放在服务器之中,所以只存在一个仓库。集中型将所有数据集中放在服务器中,有便于管理的优点。但是一旦开发者所处的环境不能连接服务器,就无法获取最新的源代码,开发也就无法进行。服务器宕机时...

2019-03-24 22:19:37 102

原创 工具GitHub-简介

GitHub与Git的区别在Git中,开发者将源代码存入名叫“Git仓库”的资料库并加以使用。而GitHub则是在网络上提供Git仓库的一项服务。GitHub上公开的软件源代码全部都由Git进行管理。理解Git,就是熟练运用GitHub的关键所在。GitHub引起的变化在开发者之间引发化学反应的Pull Request(指开发者在本地对源代码进行更改后,向Github中托管的GIt仓库请求...

2019-03-24 17:10:03 178

原创 MySQL-复制

复制功能不仅有利于构建高性能的应用,同时也是高可用性、可扩展性、灾难恢复、备份以及数据仓储等工作的基础。MySQL支持两种复制方式:基于行的复制和基于语句的复制。基于语句的而复制(逻辑复制)在很早的版本就支持,基于行的复制在5.1版本中被支持。复制应用场景:数据分布,负载均衡,备份,高可用性和故障切换,MySQL升级测试复制步骤:在主库上把数据更改记录到二进制日志中。备库将主库上的日志...

2019-03-23 18:36:07 194

原创 MySQL-硬件优化

MySQL需要的四种基本资源:CPU,内存,硬盘和网络资源数据库并发问题:逻辑并发问题:应用程序可以看到资源的竞争,如表或行锁竞争用。这些问题通常需要好的策略来解决,如改变映月宫程序、使用不用功的存储引擎、改变服务器配置,或者使用不同的锁定提示或事务隔离级别。内部并发问题:比如信号、访问InnoDB缓冲池页面的资源争用。可以尝试通过改变服务器的设置、改变操作系统,或使用不同的硬件解决这些问题...

2019-03-23 11:32:35 401

原创 MySQL-高级特性

分区表分区表是一个独立的逻辑表,底层由多个物理子表组成。实现分区的代码实际上是对一对底层表的句柄对象的封装。对分区表的请求,都会通过句柄对象转化成对存储引擎的接口调用。MySQL实现分区表的方式-对底层表的封装-意味着索引也是按照分区的子表定义的,而没有全局索引。MySQL在创建表时通过使用PARTITION BY子句定义每个分区存放的数据。分区的主要目的时将数据按照一个较粗的力度分在不同的...

2019-03-22 20:27:08 233

原创 MySQL-数据类型及性能优化

性能优化:完成某件任务所需的时间度量。性能剖析性能剖析是测量和分析时间花费在哪里的主要方法。性能剖析一般有两个步骤:测量任务所花费的时间;然后对结果进行统计和排序,将重要的任务排到前面。性能剖析工具show status、show profile、检查慢查询日志的条目、show processlist;性能低下的原因资源被过度使用,余量已经不足以正常工作;资源没有被正确配置;资源已...

2019-03-21 22:34:40 123

原创 MySQL-存储引擎及基准测试

MySQL通常分为三层架构,第一层用于处理基于网络的客户端/服务器的工具或者服务都有的基础处理-连接处理、授权认证、安全;第二层用于查询解析、分析、优化、缓存以及所有的内置函数,所有跨存储引擎的功能都在这一层实现:存储过程、触发器、视图;第三层包含了存储引擎。存储引擎负责MySQL中数据的存储和提取。服务器通过API与存储引擎进行通信。这些接口屏蔽了不同引擎之间的差异,使得这些差异对上层的查询过程...

2019-03-21 11:27:38 225

原创 进程间通信机制

进程进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。创建进程apiWINBASEAPIBOOLWINAPICreateProcessA( _In_opt_ LPCSTR lpApplicationName, _Inout_opt_ LPSTR lpComman...

2019-03-14 21:39:41 300

原创 PE文件结构-目录项结构

目录项结构数据目录项位于可选PE头的最后一部分,向前四个字节说明了数据目录项的数量,而每个数据目录项的结构一致,分别包含RVA地址和数据项的大小。IMAGE_DATA_DIRECTORY STRUCT{ DWORD VirtualAddress ;数据的起始RVA DWORD isize ;数据块的长度}数据目录项通常共有16项,它们的详细说明如下:英文描述中文描述...

2019-03-09 11:50:24 969

原创 Linux命令及使用

一、 Linux基础常用发行版本:RedHat Linux或Fedora Core LinuxSlackeWare LinuxSuSE LinuxDebian Linux红旗LinuxBash命令行的优势通过上下键来调取过往执行的Linux命令命令或参数仅需输入前几位可以用tab键补全具有强大的批处理脚本具有适用的环境变量功能二、 认识Linux选择登录方式/etc/i...

2019-03-01 16:49:19 505

原创 C++多线程与并发

常见概念进程:程序在一个数据集合上的一次运行过程。一个程序在不同数据集合上运行,乃至一个程序在同样数据集合上面的多次运行都是不同的进程。进程是独立的,表现在内存空间、上下文环境线程:线程是进程中的实体,是被系统独立调度和执行的基本单位。任务:用户在一次接解题或一个事务处理过程中要求计算机系统所做工作的集合。它包括用户程序、所需的数据集合及控制命令。作业是由一系列有序的步骤组成的。C++11...

2019-02-14 16:03:31 217

原创 terminate、vim及gcc使用

终端的操作方式ctrl+shift+T新开一个标签ctrl+alt+T打开一个窗口alt+n切换一个标签vim三种模式命令模式:I行首插入,A行末插入 文本模式末行模式o向下一行插入O向上插入一行移动:h左移l右移k上移j下移M移动到中间行L移动到...

2019-02-13 10:01:14 204

原创 逆向工程-PE文件结构

pe通常由以下几部分组成,DOS文件、标准PE头、可选头、节表和相应的节。DOS文件头:_IMAGE_DOS_HEADER{ WORD e_magic; //MZ标记*,用于判断是否为可执行文件1 WORD e_cblp; //bytes on last page WORD e_cp; //pages of file WORD e_crlc; //relocations W...

2019-02-06 15:41:24 265

原创 逆向工程-语句分析

逆向工程函数分析:分析函数参数:将传入的参数分别用符号进行表示;分析局部变量:[ebp-4]分析全局变量:[0x12345678]功能分析//if语句汇编分析int a = 0;int b = 2;if (b &amp;amp;gt; a){ cout &amp;amp;lt;&amp;amp;lt; a;} 汇编逆向分析://提升堆栈00911E80 push ebp 00911E81 ...

2019-02-05 21:48:59 509

原创 boost-安装与使用

boost的获取:http://www.boost.org将获取到文件解压到指定文件夹中,双击文件目录下的bootstrap.bat并进行使用b2进行批处理。使用库时包含库目录和路径目录;打开工具-&gt;选项菜单,在项目和解决方案的VC++ 目录页,选择包含文件,加入d:\boost_1_xx_0(本教程使用该目录为boost的根目录)在项目和解决方案的VC++ 目录页,选择库文件,...

2019-02-04 22:40:28 2267

原创 逆向分析-汇编分析

汇编实现:1.参数入栈;2.函数调用;升栈;保护现场;填充缓冲区,执行操作;恢复现场,减低堆栈3.平衡栈;eg://保存原来栈底push ebp//提升栈mov ebp,espsub esp,0x40//保护现场push edipush esipush ebx//填充堆栈mov eax,0x0cccccccclea edi,[ebp-40]mov ecx,0x10...

2019-02-04 21:27:08 583

原创 编译器-三种调用方式

vc环境下三种常见调用方式如下:_cdecl:C/C++默认的调用方式,调用方平衡栈,不定参数的函数可以使用;_stdcall:被调用方平衡栈,不定参数的函数无法使用;_fastcall:寄存器方式传参,被调用方平衡栈,不定参数的函数无法使用。当参数个数为0,无法区分调用方式,使用_cdecl和_stdcall一样,而大部分是有参数的,_cdecl调用方式的函数在同一个作用域内多次使用,会...

2019-02-02 21:54:57 430

原创 逆向编程-入口地址了解

程序在进行入口函数地址执行之前,先将执行下列函数,为程序的运行准备环境。main函数被调用前先要调用的函数如下:getversion();获取当前运行平台的版本号。控制台程序运行在Windows模拟的dos下,因此这里获取的版本好为ms-dos的版本信息。_heap_init();用于初始化堆栈空间。在函数实现中使用HeapCreate申请堆空间,申请空间的大小由_heap_init传递...

2019-02-02 17:44:38 568

原创 Sql-视图

视图是虚拟的表。与包含数据的表不一样,视图只包含使用时动态检索数据的查询。视图:重用SQL语句;简化复杂的SQL操作。在编写查询后,可以方便地重用它而不必知道它的基本查询节;使用表的组成部分而不是整个表。保护数据。可以给用户授予表的特定部分的访问权限而不是整个表的访问权限。更改数据结构格式和表示。视图可返回与底层表的表示与格式不同的数据。视图的常见规程:与表一样,视图名字必须唯一。...

2019-02-01 15:52:57 123

原创 Sql-表的操作

表的创建表的创建一般有两种方法:使用具有交互式创建和管理表的工具;表也可以直接使用MySQL语句操作。创建表时必须提供以下信息:新表的名字,在关键字create table之后给出。表列的名字和定义,使用逗号隔开。eg:create table stuMessage(name char(32) not null, age tinyint not null, stu...

2019-02-01 15:28:54 117

原创 Sql-基础知识

常用概念数据库(database):保存有组织的数据的容器(通常是一个文件或一组文件)。表(table):一种结构化的文件,用于存储某种特定类型的数据,即某种特定类型数据的结构化清单。模式(schema):描述关于数据库和表的布局及特性的信息。列(column):表中的一个字段。所有表都是由一个或多个列组成的。行(row):表中的一个记录。主键(primary key):一列(或一组列...

2019-01-30 16:47:13 100

原创 Qt-主窗体

主窗体主窗体包含一个菜单栏,多个工具栏,多个锚件栏、一个状态栏以及一个中心部件。菜单栏菜单是一系列命令的列表。为了实现菜单、工具栏按钮、键盘快捷方式等命令的一致性,Qt使用动作来表示这些命令。Qt就是由一系列的QAction对东对象构成的列表。而菜单栏是包容菜单的面板,它位于主窗口顶部、主窗口标题栏下部。状态栏状态栏通常是显示GUI应用程序的一些状态信息,它位于主窗口的最底部。用户可以在...

2019-01-29 18:41:04 257

原创 Qt-布局的实现

三种窗口实现及基本布局实现:分割窗口QSplitter包含头文件#include&lt;QSplitter&gt;#include&lt;QTextEdit&gt;布局实现QSplitter* splitterMain= new QSplitter(Qt::Horizontal,0);QTextEdit* textLeft=new QTextEdit(QObject::tr("Le...

2019-01-28 21:55:48 594

原创 QT-QT::WindowsFlags

QT::WindowsFlags枚举类型有以下几种形式:Qt::Widget:QWidget构造函数的默认值,如果新的窗口部件没有父窗口部件,则它是一个独立的窗口,否则就是一个子窗口部件。Qt::Window:无论是否有父窗口部件,新窗口部件就是一个窗口,通常有一个窗口边框和一个标题栏。Qt::Dialog:新窗口部件是一个对话框,它是QDialog构造函数的默认值;Qt::Sheet:新...

2019-01-28 16:35:30 929

原创 Qt-QTableView、QTableWidget

Qt中QTableView与QTableWidget之间存在下面的区别:在在继承关系上面,QTableWidget继承自QTableView;使用数据模型上面setModel,QTableView可以进行数据模型设置,在QTableWidget中setModel是私有函数,不能使用该函数进行设置数据模型;在显示复选框setCheckState方面,QTableView没有进行实现复选框,Q...

2019-01-28 15:30:35 919

原创 汇编-debug使用

debug安装win7及之后版本系统不自带debug软件需要搭建相应的环境进行使用。下载DOSBox 和 debug软件,并安装DOSBox软件。运行DOSBox程序,输入 mount c 磁盘符(eg: D:),将debug复制到对应的磁盘中;切换到相应的磁盘符下(eg:D),运行debug,即进入相应debug环境中。debug常用命令debug有大量的命令,但常用的命令如下...

2019-01-26 11:50:41 171

空空如也

空空如也

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

TA关注的人

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