11 2019 档案

摘要:程序中会使用数据结构;例如:顺序表、链表、二叉树; 数据结构在底层中本质上只有两种:数据之间挨着和不挨着; 1.关于Vector 1】本质就是一个数组 2】可以动态扩充容量 3】支持下标方法,查询性能好 4】新增数据和删除数据较差 比如在A和B之间插入一个元素,B后面的所有数据都要后移 2.实现Ve 阅读全文
posted @ 2019-11-29 11:21 L丶银甲闪闪 阅读(375) 评论(0) 推荐(0)
摘要:1.new和delete 程序的内存分为不同的区; 全局变量区中的变量在程序编译时决定,不需要管理内存; 局部变量一般存放在栈中,当用到时放入栈中,不用时栈中的地址处变成垃圾数据,也不需要管理; 而用malloc在堆中申请的内存在使用完后要调用free函数来释放; 1)关于malloc和free m 阅读全文
posted @ 2019-11-29 11:19 L丶银甲闪闪 阅读(377) 评论(0) 推荐(0)
摘要:1.冒泡排序 代码: void Sort(int* arr,int nLength) { int i; int k; for(i=0;i<nLength-1;i++) { for(k=0;k<nLength-1-i;k++) { if(arr[k]>arr[k+1]) { int temp = ar 阅读全文
posted @ 2019-11-27 10:20 L丶银甲闪闪 阅读(254) 评论(0) 推荐(0)
摘要:1.继承和虚函数 1)没有继承时虚函数表 Base结构,里面有3个函数:Function1、Function2、Function3; 虚表: 2)单继承无函数覆盖 Base结构: Function1、2、3; Sub结构继承Base: Function4、5、6; 虚表: 子类对象的虚表中包含子类和 阅读全文
posted @ 2019-11-27 10:17 L丶银甲闪闪 阅读(246) 评论(0) 推荐(0)
摘要:1.关于虚函数 在名函数前加关键字“virtual”的函数为虚函数; 例如:class Base { public: void Function_1() { printf("Function_1...\n"); } virtual void Function_2() //虚函数 { printf(" 阅读全文
posted @ 2019-11-27 10:15 L丶银甲闪闪 阅读(358) 评论(0) 推荐(0)
摘要:1.使用#include分离函数的定义与实现 c语言可以在xxx.h中定义函数,然后在xxx.cpp中实现函数; 在需要用到这些函数时,只要用#include引入xxx.h即可,这样就不用将所有代码全部写在一个cpp中; 将函数定义与实现分离,代码会有更好的可读性但不是必须的 ; xxx.h str 阅读全文
posted @ 2019-11-27 10:12 L丶银甲闪闪 阅读(242) 评论(0) 推荐(0)
摘要:1.构造函数 通过结构体创建一个对象时,需要先声明结构体变量、再给结构体每个成员赋值(也就是所谓的初始化); 如果能够在声明变量时就直接给结构成员赋值会更加方便;构造函数就是为了达到这一目的; 构造函数: 结构体中的Person函数就是构造函数 struct Person { int age; in 阅读全文
posted @ 2019-11-27 10:09 L丶银甲闪闪 阅读(400) 评论(0) 推荐(0)
摘要:1.用结构作参数 struct Base{ int x; char y; }; int fun(Base b){ return b.x + b.y; } int main(int argc, char* argv[]) { Base b; b.x = 1; b.y = 2; fun(b); getc 阅读全文
posted @ 2019-11-27 10:03 L丶银甲闪闪 阅读(224) 评论(0) 推荐(0)
摘要:1.主要思路 新建一个测试用的dll,在dll的入口函数中添加一个在加载阶段执行的函数Init(); 给目标程序添加一个新节,将导入表移动到新节中; IAT表不能移动,因为程序在调用dll中的函数时,都是call的IAT表的绝对地址;然后在IAT表中找到真实的函数地址; 如果移动了IAT表,需要修复 阅读全文
posted @ 2019-11-21 10:26 L丶银甲闪闪 阅读(1020) 评论(1) 推荐(0)
摘要:例如: 有一个游戏修改器;其中有一个按钮“自动打怪”;点击时游戏会实现相应的功能; 对于游戏程序来说,自动打怪操作本质上就是call调用一个函数; 但是修改器和游戏是两个独立的程序,游戏无法直接调用修改器中的函数; 可以考虑将修改器中的函数封装成一个dll,然后想办法将dll放到游戏的4gb空间,这 阅读全文
posted @ 2019-11-21 10:24 L丶银甲闪闪 阅读(665) 评论(0) 推荐(0)
摘要:1.关于绑定导入 一般情况下,在程序加载前IAT表和INT表中的内容相同,都是程序引用的dll中的函数的函数名或序号; 加载完成后IAT表中将替换为函数的真正地址; 但在加载前IAT表中直接写绝对地址是可以实现的; 加载前在IAT表中保存绝对地址的优点:启动程序快; 在启动程序时需要:申请4gb内存 阅读全文
posted @ 2019-11-19 18:17 L丶银甲闪闪 阅读(722) 评论(0) 推荐(0)
摘要:1.关于IAT(import address table)表 当exe程序中调用dll中的函数时,反汇编可以看到,call后面并不是跟的实际函数的地址,而是给了一个地址; 这些连起来就是一张表,就是IAT表; 1)内存镜像中的dll中函数的调用; 例如:一个exe中调用系统提供的dll中的Messa 阅读全文
posted @ 2019-11-19 11:48 L丶银甲闪闪 阅读(1933) 评论(0) 推荐(1)
摘要:1.移动重定位表 目的:将测试用的DllHello.dll的重定位表移动到一个新增的节中,如果dll还能正常使用说明移动成功; 主要步骤: 1】新增一个节; 新增一个节表 ->判断是否有足够的空间存放新节表,条件是最后一个节表后面到SizeOfHeaders之间是否有80个字节; 新增一个节 ->紧 阅读全文
posted @ 2019-11-15 08:39 L丶银甲闪闪 阅读(778) 评论(0) 推荐(0)
摘要:1.为什么要移动pe结构中的表 1】这些表是编译器生成的,里面存储了非常重要的信息; 比如,导出表中粗存了该pe文件有哪些导出函数并且这些函数的地址在哪; 2】在程序启动的时候,系统会根据这些表做初始化的工作: 比如,将用到的DLL中的函数地址存储到IAT表中. 3】为了保护程序,可以对.exe的二 阅读全文
posted @ 2019-11-13 17:55 L丶银甲闪闪 阅读(885) 评论(1) 推荐(0)
摘要:1.创建一个用来试验的目标dll 头文件: #if !defined(AFX_HELLO_H__87AA4900_2935_4604_AFB2_7CD004B103D8__INCLUDED_) #define AFX_HELLO_H__87AA4900_2935_4604_AFB2_7CD004B1 阅读全文
posted @ 2019-11-09 13:00 L丶银甲闪闪 阅读(1321) 评论(0) 推荐(0)
摘要:1.程序的加载 1)exe程序的加载过程 操作系统会给程序分配一个独立的4gb的虚拟空间;地址从0开始到ffffffff; 其中高2g是内核来使用的,程序无法直接读写高2g的内存,如果想操作该内存需要遵守一定的格式也就是所谓的驱动程序; 然后像贴图一样将程序加载到这段空间; 首先将exe从Image 阅读全文
posted @ 2019-11-08 17:48 L丶银甲闪闪 阅读(643) 评论(0) 推荐(0)
摘要:1.master和worker nginx启动后,会有2种进程:worker和master;worker可能有多个; master进程负责管理分配任务,worker进程负责实际工作; worker工作机制: 当客户端发送一个请求后,master接收请求,然后后分配给worker; 分配的机制为争抢; 阅读全文
posted @ 2019-11-08 10:36 L丶银甲闪闪 阅读(573) 评论(0) 推荐(0)
摘要:1.关于高可用 配置负载均衡时,请求通过nginx分发到多个tomcat; 如果其中一个tomcat宕机,将不会被分发请求; 这样保证了稳定性; 但是,nginx也有宕机的可能,会导致请求无法到达tomcat; 配置高可用集群就是为了解决这一问题,也就是nginx宕机了还能正常完成请求; 简单的高可 阅读全文
posted @ 2019-11-08 10:35 L丶银甲闪闪 阅读(426) 评论(0) 推荐(0)
摘要:1.关于nginx动静分离 Nginx 动静分离简单来说就是把动态跟静态请求分开; 不能理解成只是单纯的把动态页面和静态页面物理分离; 严格意义上说应该是动态请求跟静态请求分开; 可以理解成使用 Nginx处理静态页面, Tomcat 处理动态页面; 动静分离从目前实现角度来讲大致分为两种: 一种是 阅读全文
posted @ 2019-11-07 15:47 L丶银甲闪闪 阅读(606) 评论(0) 推荐(0)
摘要:预期效果:在浏览器中请求a.html,该请求可以被分发到2个tomcat服务器中,以此来分担压力; 1.配置tomcat 在linux服务器中安装2个tomcat; 修改tomcat目录下的server.xml,使tomcat1监听8080端口,tomcat2监听8081端口; 在两个tomcat的 阅读全文
posted @ 2019-11-07 10:31 L丶银甲闪闪 阅读(282) 评论(0) 推荐(0)
摘要:1.安装tomcat 下载安装包; 上传到linux; tar -xvf解压; firewall-cmd 开放端口; 到解压目录bin目录下执行./startup.sh运行; 2.实现思路 预期效果:在浏览其中输入www.123.com跳转到tomcat主页面; linux对外暴露的是ngnix,不 阅读全文
posted @ 2019-11-07 10:30 L丶银甲闪闪 阅读(332) 评论(0) 推荐(0)
摘要:1.常用命令 查看版本号: ./nginx -v 启动nginx:在/usr/local/nginx/sbin 目录下执行 ./nginx 关闭nginx:在/usr/local/nginx/sbin 目录下执行 ./nginx -s stop 重加载nginx:在/usr/local/nginx/ 阅读全文
posted @ 2019-11-07 10:29 L丶银甲闪闪 阅读(664) 评论(0) 推荐(0)
摘要:ngnix官网: http://nginx.org/ 1.安装 openssl 、 zlib 、 gcc 依赖 命令: yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel 问题: Error: Packa 阅读全文
posted @ 2019-11-07 10:28 L丶银甲闪闪 阅读(207) 评论(0) 推荐(0)
摘要:1.什么是Ngnix Nginx ("engine x") 是一个高性能的 HTTP 和反向代理服务器,特点是占有内存少,并发能力强; Ngnix的主要功能: 反向代理; 负载均衡; 动静分离; 2.正向代理 Nginx 不仅可以做反向代理,实现负载均衡。还能用作正向代理来进行上网等功能。 正向代理 阅读全文
posted @ 2019-11-07 10:27 L丶银甲闪闪 阅读(193) 评论(0) 推荐(0)
摘要:例如:一个HelloDll.dll 其导出表信息如下: 该dll有4个函数; 用.def的方式导出; 其中有个匿名函数; 1.分析 导入dll中的函数有两种方式: 1】通过序号 2】通过函数名 例如:显式链接dll时使用的库函数“GetProcAddress”实现了用函数的查找; myPlus = 阅读全文
posted @ 2019-11-01 11:15 L丶银甲闪闪 阅读(1129) 评论(0) 推荐(0)