- 博客(201)
- 收藏
- 关注
原创 CE 搜索游戏背包技巧
4、重复以上步骤直到备选列表数量小于100。5、xdbg观察确定背包栏数组起始地址。1、游戏里移动或者交换第1格技能栏对象。3、第1格为空时,搜索数值0。6、分析背包栏数组的基址偏移。2、CE搜索变动的数值。
2024-04-21 07:47:13 86
原创 汇编语言学习笔记
CMP指令对标志位的影响如下:假想减法操作完成之后,CMP指令会根据运算结果修改溢出标志位、符号标志位、零标志位、进位标志位、辅助进位标志位和奇偶标志的值。12、NEG指令(negate):该指令通过将数字转换为相应的补码而求得其相反数(正数的原码、反码和补码相同,负数的反码=除符号位外,原码按位取反,负数的补码=负数的反码+1);8、XCHG指令(exchange data):该指令交换两个操作数的内容,注意它不接受立即操作数,除此之外,XCHG指令的操作数与MOV指令的操作数遵循同样的规则;
2024-04-19 22:00:26 838
原创 汇编指令笔记
jmp x ) 其中x表示跳转地址,也会导致esp=esp-4。jmp [esp] ) ,ret指令会导致ep=esp+4。2、pop x 除了将esp指向的数据弹出栈外,还有一个隐含作用:add esp, 4。1、push x 除了将x压入栈外,还有一个隐含作用:sub esp,4。
2024-03-28 23:08:30 87
原创 植物大战僵尸更改阳光代码
在执行了“是什么访问了这个地址“指令”后(一定要找mov指令),需要去掉mov指令中的偏移量得到地址A,然后将地址A添加到地址列表并继续搜索地址A。原理感觉和操作系统中的多级页面很相似,不知猜测是否准确。CE中需要不停地重复:搜索数值====>找出是什么访问了这个地址 这两个步骤,反复尝试直到找出绿色的静态基址即表示完成。
2024-03-27 07:54:09 171
原创 Windows PE文件常识
不同模块的基地址一般式不同的,但是也有特殊情况,如果两个的基地址相同,就有曹子系统来决定这两个模块在虚拟地址空间中的额具体位置。该概念属于操作系统中的概念——每个空间都有独立的4GB(32为环境下)或者2^64B的虚拟地址空间,在这个空间中定位的地址为虚拟内存地址,在PE中,进程本身的VA等于:进程的基地址+相对虚拟内存地址。此类地址是一种特殊地址,其计算方法不是从文件头或者内存某个某开的额基地址算起,而是从某个特定的位置算起,这种地址在PE结构中很少见,例如在资源表中就出现过这样的地址。
2024-03-15 23:28:03 344
原创 NAS与SAN的区别
二者的本质区别在于:对于用户而言,SAN提供的是块级数据传输和存储服务,NAS提供的是文件级的传输和存储服务。NAS与SAN都是网络存储系统,均负责管理存储资源。都通过网络向用户提供存储服务,具有较好的扩展性。摘自:《信息存储与IT管理》--吴晨涛著。
2024-03-14 12:53:44 341
原创 《凤凰架构》 -分布式事务章节 读书笔记
一致性:代表数据在任何时刻、任何分布式节点中看到的都是符合预期的,一致性概念在分布式研究中是有严肃定义和多种细分类型的概念(与分布式共识算法中的面向副本复制的一致性不同,此处指的是面向数据库状态的一致性)。TCC其实有点类似于2PC的准备阶段和提交阶段,但是TCC位于用户代码层面(即业务代码,写业务代码的程序员相对于基础库而言都是用户),而不是基础设施层面。SAGA事务:TCC事务是常见柔性事务中性能最高的,但是它并不能满足所有场景,因此有了SAGA事务。2、为每个子事务设计一个对应的补偿动作,命名为。
2024-02-24 15:09:43 1031
原创 《凤凰架构》-全局事务章节读书笔记
三阶段提交协议:三阶段提交协议把二阶段的准备阶段再细分为两个阶段,分为CanCommit和PreCommit,把提交阶段改为DoCommit阶段。新增的CanCommit阶段是一个询问阶段,协调者让每个参与者根据自身的状态评估该事务是否有可能顺利完成。在事务需要回滚的场景中,三阶段提交协议性能通常比二阶段要好得多,但在事务能够正常提交的场景下,三阶段提交协议多了一次询问,性能要比二阶段提交协议差,但是两者的性能都好不到哪去。(不再改变提交或者回滚的结果,只能等待崩溃的节点重新恢复)。
2024-02-24 11:34:14 492
原创 《凤凰架构》-本地事务章节 读书笔记
注:上面说的写锁和读锁均针对事务期间涉及到的数据,并不一定是表锁,更常见的形式是行级锁(大多数事务所涉及到的数据都是数据库的某些行,而不是整个数据库)(如果遇到了个不加任何锁的另一个事务2,写锁是无法阻止事务2读取数据的),这就是读未提交隔离级别中的脏读问题产生的根因。2、范围锁和排它锁:范围锁不仅禁止范围已有数据的修改操作,还能防止在该范围内新增或者删除数据,而排它锁是无法做到后者的。读已提交:加读写锁,写锁持续到整个事务结束,但读锁在查询操作完毕之后立即释放,因此存在不可重复读的问题。
2024-02-24 11:07:25 582
原创 预写日志的一点理解和总结
预写日志(WAL)被广泛应用于文件系统和存储行业,借鉴于数据库系统的事务概念*数据库事务的核心实现方式是二阶段提交协议),主要解决的问题是。1、磁盘提供的原子性保证:磁盘制造商需要保证任何 512 字节 (大多数磁盘扇区大小都是这个值)写入都会发生或不发生(永远不会半写)。2、先 写入被指对象(即用户数据),再写入指针对象(即元数据)(崩溃一致性的核心)。(西邮陈莉君翻译的那本)第42章。1、《数据密集型应用系统设计》
2024-02-23 10:50:20 397
原创 C语言的前置声明
另外需要注意的是当typedef定义的别名需要前置声明时,需要按照如下的方式进行声明,而不能直接写成 class 类别名 的形式。前置声明主要用于类与类之间的循环引用,且只是针对类型指针有效,对完整的类字段无效。提示类C是个不完整的类型,将其改为C*c即可通过编译。
2024-01-06 18:00:43 480
原创 浅析linux中的信号
例如,发生下列情况之一时,内核可向进程发送信号:用户键入中断字符(通常为 Control-C)、进程的子进程之一已经终止、由进程设定的定时器(告警时钟)已经到期、进程尝试访问无效的内存地址、在 shell 中,可使用 kill 命令向进程发送信号。不存在编号为0的信号,Kill函数对信号编号0有特殊的应用(将信号发送给当前进程所属进程组中的所有进程),POSIX.1将此类信号编号称为空信号。信号的生命周期比较明确:产生信号(也可以说是信号发出或者生成)、内核存储信号、内核发送信号、内核处理信号。
2023-11-24 16:19:52 223
原创 通俗理解信号量
具体实现方法有多种,可以是最暴力的循环sem_wait,也可以是信号量+原子变量实现:由最后一个完成的异步任务(原子变量初始化为异步任务的数量,每一个异步任务返回时减一次原子变量,原子变量自减为0时为最后返回的那个异步任务)调用sem_post()唤醒主线程。当进程释放受保护的资源时,会把信号量的值加1。并且为实现进程间通信的目的,信号量一般是在内核中实现的(不排除部分项目使用了用户态的信号量,但是大部分用户态的信号量只能实现线程间通信, 用户态的信号量若需要实现进程间通信,还得搭配内存映射)。
2023-11-16 21:51:42 148
原创 linux mount命令加速
但是该命令默认使用的协议是nfs4,这个协议如果读写块大小参数设置的不合适,mount后读取远程目录是极其慢的,因此需要更换协议为cifs。远程机IP之后跟的是用户名而不是绝对路径,mount会根据这个用户名自动去/home路径下匹配与用户名相同的文件夹。(因没有root权限,root用户暂未试过)。
2023-11-16 15:58:34 214
原创 git拉取项目所有分支
注意点:Windows上必须使用git自带的终端而不是powershell,否则上面 这个bash命令会执行失败的。2、进入成功拉去的分支生成的文件夹中,执行下面的命令即可完成拉拉取。1、执行git clone ,随便拉取一个分支。
2023-11-10 12:57:18 1019 1
原创 wsl中的ubuntu安装docker踩坑记
1、这是因为dockr daemon服务没有运行,使用service docker start启动docker daemon,虽然命令结果是ok,但使用service docker status发现docker还是没有成功启动,运行docker命令还是提示Cannot connect to the Docker daemon at unix:///var/run/docker.sock错误。4、 在root用户下运行docker命令即可。a文件末尾天剑如下一行即可。
2023-09-28 07:34:07 1662
原创 protobuf生成golang和grpc代码踩坑记
错误提示:seems to be defined in "*.proto", which is not imported by "*proto". To use it here, please add the necessary import.在编译product.proto文件时,需要将user.proto一起进行编译。否则编译出来的go文件会爆红。目前暂未处理过不同包的import问题,
2023-08-31 07:53:47 184
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人