自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 多线程篇七

听到定时器,首先想到的是“闹钟”.到一个设置好的时间之后就执行某个指定好的代码.(在实际开发中非常常用,如网络通信【邮件发送】)你在抢演唱会门票,已经到了支付页面,但是网突然崩了,页面显示让你等待,这下怎么办!!对于我们来说是不能无限的等待下去的,我们需要一个等待期限最好是尽快处理,此处的等待时间就通过定时器来实现了.

2024-09-21 11:36:29 365

原创 多线程篇六

单例模式是最常见的设计模式顾名思义,单例模式指的就是单个实例的模式.(针对某些类只能使用一个对象的场景【如MySQL、JDBC、DataSource】)阻塞队列是一种特殊的队列,遵守”先进先出”原则.【典型的生产者消费者模型】

2024-09-18 11:28:27 1196

原创 多线程篇五——wait和notify

2.使用wait()时没有设置最大等待时间,而sleep()是在知道最大时限的情况下使用(通过异常唤醒,说明程序应该是出现特殊情况了).调用notify()方法后不会立即释放对象锁,要等到执行notify()方法的线程将程序执行完之后【退出同步代码块】才会释放对象锁.notify()要在同步方法或同步块中调用.它会通知可能等待该对象对象锁的其他线程,使得它们重新获取对象锁.1.wait()可通过notify()唤醒,sleep()通过Interrupt()唤醒。wait()方法的大任(唤醒等待的线程).

2024-09-12 01:16:23 630

原创 CSAPP LAB

丑话说在前头 不做不知道 一做吓一跳 是真的什么都不知道捏~yub刚开始想整tmux玩https://www.jikecloud.net/supports/docs/tmux-intro/ 发现字体颜色太暗了眼睛要麻了(懒得调)最后还是去了terminal。

2024-09-10 00:23:58 808

原创 多线程篇四——volatile关键字

由此我们可得读内存比读硬盘快,读寄存器比读内存快,但是CPU一旦涉及读/写内存速率很低.此时我们聪明得编译器就会帮忙了(虽然有时候会帮倒忙) 编译器可能会对代码做出优化,减少读内存的次数。由于修改flg是t2线程非t1线程本身,编译器没有正确的判定(提高效率不保证逻辑不变哈)以为flg未被修改就直接启动优化了,t1感受不到修改过后的flg的内存变化。" 按理来说修改flg的值不为0的时候会输出"game over!的操作,这样就出现了最开头介绍的小聪明编译器.big 胆就水灵灵优化上了😀。

2024-09-10 00:17:04 484

原创 RE算法学习

运算符是按位与运算符,用于对两个数的二进制表示进行位级别的与操作。当其中一个操作数是 31(二进制表示为 00011111)时,它可以用来保留一个整数的低 5 位(或者说对 32 取模).可以发现sub_4010A0函数中GetDlgItemText对应读入Name和Serial Number.运算符是取模运算符,用于计算一个数除以另一个数的余数,它适用于任何整数。因为 31 的二进制表示只有最低的 5 位为 1,所以对非负整数进行。的结果相当于对该整数进行。密文:128bits。

2024-09-06 14:33:16 335

原创 多线程篇三

想对线程安全做一个具体清晰的解释很困难,为什么这么说?当然是具体情况具体分析.(就像很多人都喜欢吃面条 有的人喜欢吃炸酱 有的人喜欢吃刀削【其他不具体拓展 因为饿了w】可以具体细分)但是!我们可以这样认为如果多线程环境下代码运行的结果是符合我们预期的 ,即使在单线程环境应得的结果,则说明这个线程是安全的.比如我(线程A)登录一个手游(一段代码),在我未退出游戏时,我们的游戏好友(线程B)也可以登录游戏组队打本.(打断我在游戏中的隐私)这就是不具备原子性听起来是不是和抢占式很像?真聪明hh。

2024-09-06 13:40:32 834

原创 多线程篇二

使用jconsole观察,t1线程为TIMED_WAITING状态(排队等工作 sleep引起),t2线程为BLOCKED状态(由于t1未执行完 产生锁竞争)我们知道一个线程在完成它的工作后才能进行自己的下一步工作,但在期间想穿插别的工作进来就需要控制线程结束的顺序来实现.1.如果线程正在工作中,此时调用thread线程就会阻塞,一直阻塞到thread线程执行结束位置.WAITING 线程在无限等待唤醒。2.如果thread线程已经执行结束了,此时调用join线程,就会直接返回,不会涉及阻塞.

2024-08-16 21:01:03 987

原创 操作系统复习提纲(2022慕课版)

由程序段、相关的数据段和PCB块三部分构成进程(实体)进程是程序的一次执行进程是一个程序及其数据在处理机上顺序执行所发生的活动进程是具有独立功能的程序在一个数据集合上运行的过程 是系统进行资源分配和调度的一个基本单位假脱机技术 外围设备同时联机操作作用:缓和CPU的高速性与I/O设备低速引入组成:输入井和输出井输入缓冲区和输出缓冲区输入程序和输出程序(模拟脱机操作 包括读和写过程)请求队列操作6、采用缓冲技术的主要目的 (P233)缓和CPU和I/O设备间速度不匹配的矛盾。

2024-08-12 15:31:37 876 1

原创 Java多线程

比如我去汉堡店打工,负责做美味蟹黄堡,客人太多,Boss又招新人负责分担相同的工作,Boss电脑被黑了,员工里只有我掌握了相关技术,那就只有我能解决问题.(即实现并发【兵分两路 充分利用多核CPU】 Java中的“并发”多指并行+并发 区别操作系统中的宏观和微观理解)(这个id式Java给这个线程分配的 不是系统api提供的线程id 更不是pcb中的id)当进行复杂任务时,会创建多个线程进行问题处理,不同线程有不同的小任务排队执行.debug启动有一个专门的窗口查看方法的调用栈,可以查看所有线程的信息.

2024-08-12 15:07:35 844

原创 洛谷菜鸟记录

1、next()方法在遇到有效字符前所遇到的空格、tab键、enter键都不能当作结束符,next()方法会自动将其去掉,只有当next()方法遇到有效字符之后,next()方法才将其后输入的空格键、Tab键或Enter键等视为分隔符或结束符,所以next()不能得到带有空格的字符串,只能得到部分字符串(空格前面的)。有可能在某个月的月初,津津手中的钱加上这个月妈妈给的钱,不够这个月的原定预算。每个月的月初妈妈给津津 300300 元钱,津津会预算这个月的花销,并且总能做到实际花销和预算的相同。

2024-08-12 00:43:53 313

原创 The Missing Semester of Your CS Education

前尝试打开 brightness 文件并写入,但是系统拒绝了 shell 的操作因为此时 shell 不是根用户。猜想正确工作的原因是“参数”和“输入”的区别(未经验证或查找资料):cat 程序将输入打印在屏幕上,是输入重定向,意思也是将文件中的内容作为程序的输入,而不是将文件的内容作为参数,因此二者效果相同。当有权限修改文件但无法修改文件所在目录时,即无法删除文件,只可将其制空。是通过 shell 执行的,而不是被各个程序单独执行。是参数,将该文件的内容作为输入;权限在运行,因此操作可以进行。

2024-08-12 00:42:23 475

原创 ret2csu

gadgets是一段对寄存器进行操作的汇编指令,比如pop ebp;pop eax;每一条指令对应着一段地址将这些gadgets部署到栈中,__ sp指针指向某gadget时发现对应地址中是一条指令而不是一条数据后就会将该地址弹给 __ ip指针, __ip指针会执行该地址中存放的汇编指令,完成对寄存器的操作.(某一gadget-0x1a得到上一gadget)

2024-08-12 00:41:40 337

原创 【BUUCTF】

【BUUCTF】后门函数直接打通即得flag【64位system函数栈对齐(timeout问题)但其实Got EOF while reading in interactive😓】关键词:8bite 16进一 末尾对齐(可看成循环:0 8)【之后详细补充】下附两种版本exp(😜)可见函数从0x401186开始,但timeout【64位栈对齐+1(但不一定保证+1后下一地址一定为栈指令如{move 好几字节})】可以看到和第二题思路一致(“/bin/sh"换成"cat flag.txt")

2024-08-12 00:39:50 340

原创 数据结构碎片

操作结果:构造一个空链表初始条件:线性表L已经存在操作结果:销毁线性表L初始条件:线性表L已经存在操作结果:将线性表L重置为空表初始条件:线性表已经存在操作结果:若L为空返回TRUE,否则返回FALSE初始条件:线性表已经存在操作结果:返回L中数据元素个数初始条件:线性表L已经存在,1

2024-08-10 10:18:05 518

原创 概率论与数理统计

加奇减偶奇数个事件前面是加 偶数个事件前面是减。

2024-08-10 10:16:45 418

原创 NepCTF 2023

有沙盒,只能使用open,read,write函数. goto 0009中0009是return ALLOW说明允许执行.​ 注意是call syscall函数而不是直接syscall 所以寄存器会有偏移。根据提示A同学 开始bing 结果 竟然 看过 (我有罪)五子棋 不会写脚本干下吧hh(求助chat也不是不行)不是我说 是真不会但是跟着复现cve 从中学到了很多。(其实可以做misc)题目提示flag在环境变量中。题目提示classic pwn。求助chat因为不会用。

2024-08-10 10:14:35 367

原创 Hot Time

萌新友好系列。

2024-08-10 10:12:44 501

原创 CSAPP阅读碎片

静态变量(即 C 语言中任何以 static 属性声明的变量)。符号解析的目的是将每个符号引用正好和一个符号定义关联起来。

2024-08-10 10:11:25 406

原创 awd pwn小技巧

工具修改的字节数少,0x100字节以下不修改文件头信息沙箱规则可以自己定义支持i386和amd64支持pie开启和未开启情况注:已在ubuntu16、18、20上测试过默认版本gcc编译出的程序,通过;暂不支持g++编译出的程序。sandboxs文件夹sandbox1.asm实例运行脚本命令第一个参数是想要patch的elf文件,第二个参数是沙箱规则文件,可以从sandboxs文件夹里选,假如想输出更多的中间过程可以在最后参数加上一个1。(已自动识别32位和64位)

2024-08-10 10:08:50 426

原创 Canary解决姿势

被折磨的有点难受 找个时间来斩杀(bushi)又是被虐的一天~有问题请指正~❀获取例题请在评论区留言或私信我⭐标志提示就算fork函数吧 多线程开攻**(1)先运行一下 pei’d配套checksec根据题目提示’have fun’和’welcome’在爆破的exp中会用作于覆盖节点​ 发现Canary和PIE都开 准备好爆破(如果有可以利用的字符串canary也可以绕过)​ 对应随机化 后续在IDA中只能利用其地址计算偏移(2)进IDA。

2023-06-28 23:10:06 399 1

原创 BUUCTF

进func()函数查看发现gets溢出及system函数对应flag内容 两种思路:(1)利用gets溢出返回至system地址得flag (2)溢出至v2位置修改v2==11.28125【IDA中找11.28125对应十六进制地址】【64位system函数栈对齐(timeout问题)但其实Got EOF while reading in interactive😓】 关键词:8bite 16进一 末尾对齐(可看成循环:0 8)可以看到和第二题思路一致(“/bin/sh"换成"cat flag.txt")

2023-05-31 14:53:48 161 2

原创 C的探索碎片2——操作符

制作不易 多多支持 互相学习🌟。

2023-02-08 22:31:32 173 3

原创 解密系列[基础篇]

编写不易😋含有诸多问题 请多多指教🌟多字节存储顺序两种编码区别:Big-Endian:高位字节存入低地址,低位字节存入高地址,依次排列。:低位字节存入低地址,高位字节存入高地址,反序排列 多字节数据存放顺序与CPU有关。微处理器中存放顺序有正序( Big-Endian)和逆序(Little-Endian) (也称大端存储和小端存储)之分。常见的Intel系列使用的编码方式属于Little-Endian类;

2023-01-31 21:34:15 310 6

原创 C的探索碎片1——关键字static作用

static修饰局部变量时将其生命周期延长但作用域未发生改变。static修饰全局变量和函数时将其外部链接属性变为内部链接属性,使其只能在所在文件中使用。

2023-01-08 16:22:46 156 2

空空如也

空空如也

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

TA关注的人

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