自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Renderdoc部分Python接口说明

Renderdoc插件开发部分接口说明

2022-05-05 21:33:10 1106

原创 可执行文件详解

目录生成可执行文件可执行文件的结构可执行文件的ELF Header可执行文件的section可执行文件的segment生成可执行文件可执行文件也是ELF文件,这里同样从ELF文件的观点分析可执行文件的结构使用如下两端代码来模拟多个文件生成一个可执行文件的过程//add.cextern int times;int add(int n1, int n2) { times++; return n1 + n2;}//main.c#inclu.

2021-03-26 20:57:42 4505

原创 可重定位文件详解

可重定位文件是一个ELF格式的二进制文件,这里从ELF文件格式入手分析可重定位文件的结构。生成可重定位文件使用代码如下#include<stdio.h>int main(){ printf("hello world\n"); return 0;}生成文件指令gcc -E hello.c -o hello.igcc -S hello.i -o hello.sgcc -c hello.s -o hello.o可重定位文件分析解析文件头.

2021-03-26 20:49:44 2355

原创 ELF文件详解

ELF文件类型ELF是一种文件格式,全名为可执行和可链接格式(Executable and Linkable Format)。ELF文件主要有以下三类:可重定位文件(relocatable file) 它保存了一些可以和其他目标文件链接并生成可执行文件或者共享库的二进制代码和数据。一般为.o文件,静态链接库属于可重定位文件。 可执行文件(excutable file)它保存了适合直接加载到内存中执行的二进制程序。 共享库文件(shared object file)一种特殊的可重定位目标文件,

2021-03-14 22:00:01 3672

原创 剑指 Offer 58 - II. 左旋转字符串

题目链接:https://leetcode-cn.com/problems/zuo-xuan-zhuan-zi-fu-chuan-lcof/思路:创建一个新字符串,先加n~s.size()-1部分,再加0~n-1部分即可。class Solution {public: string reverseLeftWords(string s, int n) { string temp = ""; for(int i = 0;i<n;i++)

2021-03-05 20:59:56 71

原创 151. 翻转字符串里的单词

题目链接:https://leetcode-cn.com/problems/reverse-words-in-a-string/思路:使用一个数组保存每一段字符串,最后合并即可。用空间换取时间。class Solution {public: string reverseWords(string s) { vector<string> list; string temp = ""; for(int i = 0;i<s.si

2021-03-05 20:58:50 69

原创 剑指 Offer 05. 替换空格

题目链接:https://leetcode-cn.com/problems/ti-huan-kong-ge-lcof/思路:创建一个新的字符串,遍历原来字符串,到空格替换为%20即可。class Solution {public: string replaceSpace(string s) { string new_s = ""; for(int i = 0;i<s.size();i++) { if(s[i

2021-03-05 20:57:28 65

原创 541. 反转字符串 II

题目链接:https://leetcode-cn.com/problems/reverse-string-ii/思路:根据题意,每2k长度的字符串,交换前k个字符,则可以按照2k为单位来划分字符串。用count记是当前的第几段,每段交换前k个字符,然后拼接后续k个字符。当最后不足2k,则看是否小于k。若小于则全部反转,否则反转前k个即可。class Solution {public: string reverseStr(string s, int k) { int t

2021-03-05 20:56:29 81

原创 344. 反转字符串

题目链接:https://leetcode-cn.com/problems/reverse-string/思路:反转字符串,则交换两边字符的位置,直到中间位置重合即可。class Solution {public: void reverseString(vector<char>& s) { char temp; for(int i = 0,j = s.size()-1;j-i>=1;i++,j--) {

2021-03-05 20:55:17 64

原创 383. 赎金信

题目链接:https://leetcode-cn.com/problems/ransom-note/思路:利用unorder_map结构,键存放字母,值为字母出现的顺序。遍历magazine和ransomNote,当map的值小于0,说明不可构造。class Solution {public: bool canConstruct(string ransomNote, string magazine) { unordered_map<char,int> ma

2021-03-05 20:52:42 62

原创 454. 四数相加 II

题目链接:https://leetcode-cn.com/problems/4sum-ii/思路:将4组数字分成两组分别进行计算。首先用一个map存储A[i]+B[j]的结果,其中A[i]+B[j]作为键。A[i]+B[j]的值出现的次数作为值。这样是为了统计同样值出现的次数。然后另0-(C[i]+D[j]),如果在map中,map对应的值即为这一组4个数求和为0出现的次数。然后累加上所有满足条件的组数即可。class Solution {public: int fourSumCou

2021-02-25 22:24:53 129

原创 1. 两数之和

题目链接:https://leetcode-cn.com/problems/two-sum/思路:使用map结构。target-nums[i] 算出另外一个值,如果在map中,则返回下标即可。否则将这个数加入map,重复操作。class Solution {public: vector<int> twoSum(vector<int>& nums, int target) { unordered_map <int,int> m

2021-02-25 21:41:08 52

原创 202. 快乐数

题目链接:https://leetcode-cn.com/problems/happy-number/思路:检查计算sum是否已经出现过一次,出现则说明进入了无限循环,不是快乐数,否则不停计算即可。使用unordered_set数据结构很方便查找插入。class Solution {public: int getSum(int n){ int sum = 0; while(n) { sum = sum + (n%

2021-02-25 21:39:39 56

原创 349. 两个数组的交集

题目链接:https://leetcode-cn.com/problems/intersection-of-two-arrays/思路:使用set集合,set中元素最多出现一次,遍历完数组之后进行vector赋值即可。class Solution {public: vector<int> intersection(vector<int>& nums1, vector<int>& nums2) { vector<

2021-02-25 21:38:18 69

原创 242. 有效的字母异位词

题目链接:https://leetcode-cn.com/problems/valid-anagram/思路:对字符串排序后依次比较即可。class Solution {public: bool isAnagram(string s, string t) { if(s.length() != t.length()) return false; sort(s.begin(),s.end()); s

2021-02-25 21:36:59 78

原创 142. 环形链表 II

题目链接:https://leetcode-cn.com/problems/linked-list-cycle-ii/思路:提供一个效率稍差但好想的解法。具体如下:首先利用双指针判断有没有环。假如有环的话就遍历链表,同时将遍历过的节点存储进向量中,当下次遍历的节点在向量中时,说明是入环节点。/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next;

2021-02-25 21:35:25 51

原创 206. 反转链表

思路:这里考虑用双指针。两个指针一个代表将要交换到前面的节点(node2),一个代表当前交换完后的尾部节点(node1)。每次先将链表尾部接上,即node1->next = node2->next,然后将node2插入到head的前面,最后更新head指向的位置即可。/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * Li

2021-02-20 21:51:46 154

原创 707. 设计链表

思路:链表的几种基本操作,这里采用设置虚拟头节点的方法来简化操作。list->val头节点的数据存放链表长度,本题需要注意的是节点序号索引从0开始,因此 list->val-1 是索引的范围。class MyLinkedList {public: typedef struct ListNode{ int val; struct ListNode *next; ListNode() : val(0),next(NULL){}

2021-02-20 21:49:48 69

原创 203. 移除链表元素

思路:增设一个虚拟头节点virtualHead,然后双指针同时遍历,当后一个节点的值等于val时,前一个指针的下一个节点指向后一个节点的下一个节点,然后重新赋值查找节点即可。/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(i

2021-02-20 21:47:08 62

原创 142. 环形链表 II

思路:暴力解法。首先利用双指针判断有没有环。假如有环的话就遍历链表,同时将遍历过的节点存储进向量中,当下次遍历的节点在向量中时,说明是入环节点。/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {pub

2021-02-20 21:44:56 62

原创 59. 螺旋矩阵 II

题目给你一个正整数n,生成一个包含1到n2所有元素,且元素按顺时针顺序螺旋排列的n x n正方形矩阵matrix。思路:本题主要难点在于正常填充元素时,边界条件的判断。这里采用模拟填充顺序的方法,设置x,y变量代表将要填充的坐标,direction表示此时的填充方向,direction为0~3表示向右,向下,向左,向上填充。当触及到边界条件时,direction就做一次改变,指向下一个方向。当向右填充,则y++,x不变。其余方向类似。需要注意的是当到达边界时,这意味...

2021-02-19 21:12:09 105

原创 209. 长度最小的子数组

题目给定一个含有n个正整数的数组和一个正整数 target 。找出该数组中满足其和 ≥ target 的长度最小的 连续子数组[numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。示例 1:输入:target = 7, nums = [2,3,1,2,4,3]输出:2解释:子数组[4,3]是该条件下的长度最小的子数组。示例 2:输入:target = 4, nums = [1,4,4]输出...

2021-02-19 21:08:34 108

原创 27. 移除元素

题目给你一个数组 nums和一个值 val,你需要 原地 移除所有数值等于val的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。说明:为什么返回数值是整数,但输出的答案是数组呢?请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。你可以想象内部操作如下:// nums 是以“引用”方式传递的。也就是说,不...

2021-02-19 21:07:04 64

原创 35. 搜索插入位置

题目给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5输出: 2示例2:输入: [1,3,5,6], 2输出: 1示例 3:输入: [1,3,5,6], 7输出: 4示例 4:输入: [1,3,5,6], 0输出: 0思路:利用二分查找的思想,进行查找,假如该值在数组中,则返回查找下标即可,否则未查找到,最后一次更新中.

2021-02-19 21:05:04 46

原创 数据访问--文件

目录用于输入和输出的类File类Directory类FileInfo类DirectoryInfo类流使用流的类FileStream对象StreamWriter对象StreamReader对象读写压缩文件监控文件系统用于输入和输出的类File类 静态方法 说明 Copy() 将文件从源位置复制到目标位置 Create() 在指定的路径上创建

2021-02-07 16:03:49 302

原创 ARM反汇编基础

目录ARM反汇编ARM处理器指令样例分析ARM反汇编ARM处理器ARM 处理器一般有37个寄存器,其中包括:31个通用寄存器,包括PC(程序计数器)在内,都是32位寄存器 6个状态寄存器,都是32位的寄存器ARM处理器有7种不同的处理器模式:User:用户模式 FIQ:快速中断模式 IRQ:普通中断模式 Svc:管理模式 Abort:数据访问中止模式 Und:未定义指令中止模式 Sys:系统模式在任意一种处理器模式下,可见寄存器一般为15个通用寄存器,.

2021-01-29 22:09:16 1133 2

原创 C#入门4

目录类定义接口构造函数和析构函数类的成员定义字段定义方法定义属性类的进阶内容隐藏基类方法调用重写或隐藏基类方法嵌套的类型定义接口的实现在类中实现接口类使用class关键字定义class MyClass{ //Class members;}使用public声明公共类,这样的类可由其他项目中的代码来访问public class MyClass{ //Class members;}使用abstract声明抽象类

2021-01-25 15:16:17 259 2

原创 C#入门3

目录函数定义参数数组引用参数输出参数函数重载本节介绍一下函数函数定义static <returnType> <functionName>(<paramType> <paramName>,...){ ...... return returnValue;}esp:执行一行代码的函数可以使用C#6引入的一个功能,表达式体方法来实现,使用=>static <returnType&.

2021-01-14 21:32:56 55

原创 C#入门2

目录类型转换隐式显示高级变量枚举结构数组字符串处理修改单个字符替换文本删除文本去除空格添加空格替换大小写本篇主要介绍一下高级的变量类型类型转换隐式Type A中的值都包含在Type B中,A可以隐式的替换为Type B显示类型转换注意值是否有溢出,可以使用checked/unchecked关键字,如checked((byte)var)如果有溢出就会报错 Convert中的类型转换函数高级变量枚举用enum定义枚.

2021-01-12 11:39:15 117

原创 外挂的定义、分类及实现原理

外挂的定义一般意义上的外挂即是通过非正常手段破坏游戏的正常数据以达到某些非法目的工具。除了常见的诸如修改角色伤害,金币数量等的外挂,包括模拟器和脚本严格来说都属于外挂。外挂的分类以上两类外挂的核心区别是是否需要依赖游戏客户端,辅助版需要,而破解版多不需要。辅助版外挂1、专用插件这类外挂属于定制型,只针对特定游戏。在Android下为so文件形式,在ios下为dylib文件形式。2、通用工具a、内存修改器用来搜索、修改游戏的内存数据。b、变速器可加快/减慢.

2021-01-12 10:26:38 9646

原创 C#入门1

介绍一下简单的变量类型以及基础的程序控制结构简单变量类型note:string类型字符数量没有上限,使用可变大小的内存 给字符串赋字面值,不可赋多行字符串,如果要换行输出,需要加\n;如 myString = "This string has a \nline break" 字符串是引用类型,可以赋null值,表示不引用字符串(或其他) 指定一字不变的字符串可以用@,即""内的所有字符都包含在字符串中,包括行末字符和原本需要转义的字符。如下两个字面值等价: @"C:\temp.

2021-01-11 21:42:15 64

原创 概述手游安全

手游安全情况概述一款手游通常包含:代码、资源和数据配置。代码是实现游戏逻辑的最核心部分;资源负责将游戏呈现在玩家面前(通常包括:图片、声音、动画、3D模型和渲染等);数据配置则存储游戏中各式各样的属性数值信息(数据配置包括:装备属性、战斗属性、角色属性、商品属性和怪物属性等数值配置信息)常见的游戏面临的风险静态修改文件 动态修改游戏逻辑 篡改协议 游戏盗号 恶意发言 工作室静态修改文件游戏文件被静态修改并重新打包、签名修改游戏资源通过影响游戏逻辑,使游戏调用.

2021-01-06 18:33:01 368

原创 Android adb提示非内部或外部命令处理方法

在cmd命令行中使用adb命令提示非内部或外部命令,一般处理有下面两种方法方法一首先如果不知道sdk的安装路径,可以通过android stduio中查看,如下从sdk的位置中找到下面三个文件,复制文件至命令行打开后显示的目录下即可。如C:\User\Admin>路径方法二修改环境变量此电脑(右击)→ 属性→ 高级系统设置→ 高级→ 环境变量 → 系统变量→ Path(双击或者点击下方的编辑按钮)点击“新建”按钮,将 adb.exe 所在路径添...

2021-01-06 17:16:26 1411

原创 346. 数据流中的移动平均值

给定一个整数数据流和一个窗口大小,根据该滑动窗口的大小,计算其所有整数的移动平均值。详细题目可查看leetcodehttps://leetcode-cn.com/problems/moving-average-from-data-stream/解题思路题目表述的不是很清晰,最后输出的结果是滑动窗口内部的数字的平均数。具体做法是使用一个队列,当队列长度小于滑动窗口值时,计算队列内的平均数即可。当队列长度大于滑动窗口值时,弹出适合数量的队首元素(滑动窗口取的是队列尾部的元素),然后计算均值即可。

2021-01-05 17:54:10 599

原创 622. 设计循环队列

循环队列的一个好处是我们可以利用这个队列之前用过的空间。在一个普通队列里,一旦一个队列满了,我们就不能插入下一个元素,即使在队列前面仍有空间。但是使用循环队列,我们能使用这些空间去存储新的值。你的实现应该支持如下操作:MyCircularQueue(k): 构造器,设置队列长度为 k 。Front: 从队首获取元素。如果队列为空,返回 -1 。Rear: 获取队尾元素。如果队列为空,返回 -1 。enQueue(value): 向循环队列插入一个元素。如果成功插入则返回真。deQueue()

2021-01-05 17:51:02 139

原创 61. 旋转链表

具体题目描述可以查看leetcode:61. 旋转链表题目描述:给定一个链表,旋转链表,将链表每个节点向右移动k个位置,其中k是非负数。思路:先遍历一次链表,把尾指针指向开头形成环,再到相应位置剪开链表即可。需要注意的是在什么位置剪开,假如移动k步,k比链表长度小的话,需要从开头向下找的是len-k步,假如k比len大,则每多len个长度相当于一步未移动,因此把多的len步排除,最后走的是len - (k-(k/len)*len)步。/** * Definition for si...

2020-12-25 03:07:44 127

原创 138. 复制带随机指针的链表

具体描述可以查看leetcode给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。要求返回这个链表的深拷贝。我们用一个由n个节点组成的链表来表示输入/输出中的链表。每个节点用一个[val, random_index]表示:val:一个表示Node.val的整数。random_index:随机指针指向的节点索引(范围从0到n-1);如果不指向任何节点,则为null。思路:由于是深拷贝,不能利用原节点,需要重新申请...

2020-12-25 02:03:23 121

原创 430. 扁平化多级双向链表

题目:具体图解可在leetcode查看多级双向链表中,除了指向下一个节点和前一个节点指针之外,它还有一个子链表指针,可能指向单独的双向链表。这些子列表也可能会有一个或多个自己的子项,依此类推,生成多级数据结构,如下面的示例所示。给你位于列表第一级的头节点,请你扁平化列表,使所有结点出现在单级双链表中。思路:深度遍历多级链表并用一个数组记录遍历节点,同时用一个辅助数组记录当前节点的遍历状态,为0说明反向遍历找下一个节点时忽略,为1则说明下一次遍历从该处开始。这样每次深度遍历到空指针时就回溯数.

2020-12-25 01:19:45 155

原创 用 Rand7() 实现 Rand10()

用 Rand7() 实现 Rand10(已有方法rand7可生成 1 到 7 范围内的均匀随机整数,试写一个方法rand10生成 1 到 10 范围内的均匀随机整数。不要使用系统的Math.random()方法。示例 1:输入: 1输出: [7]示例 2:输入: 2输出: [8,4]示例 3:输入: 3输出: [8,1,10]提示:rand7已定义。传入参数:n表示rand10的调用次数。进阶:rand7()调用次数的...

2020-12-13 21:58:56 618

原创 pyhon入门--简单知识点

字符串修改字符串大小写s.title() 首字母大写s.upper() 全部大写s.lower() 全部小写+可以合并字符串: “ada”+”lovelace” çè “adalovelace” 中间没有空格删除空白s.rstrip() 删除末尾多余空白s.lstrip() 删除开头空白s.strip() 同时剔除两端空...

2019-03-21 14:58:00 370

空空如也

空空如也

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

TA关注的人

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