写在前面前段时间一直在填坑,再加上域名备案没下来,解析不了,所以一直没搞个人主页的事情。昨天域名备案终于下来了,今天把个人主页的事结束。 话不多说,上链接: 引用站外地址 小李同学|WebSite xxfer.cn 主页描述主界面本来想用这张背景的,最后还是换了,两个都挺好看的! 时间胶囊和工具 可以看时间这种,还有一些自己平时觉得还用的工具页,其实这个完全能作为浏览器的标签页了。 音乐界面 整体就是这样,主页本来就是做个导航页,所以不想搞得很复杂。 最终版本(换了一张背景) 部署考量刚开始,想着用自己的服务器,用宝塔去搭,主要这个完全是个静态网页(动态资源很少)。可最后想想还是用GitHub,主要有以下几点考虑: 个人主页和博客,包括之后要建的“秘密空间”(记录自己的CTF学习总结),都是相对公开的,所以访问量会比较高。虽然服务器设置了一些安全措施,但是我自知才疏学浅,很多 ...
写在前面前段时间考试比较多,今天终于有空可以整理有关Git分支的管理使用技巧,相信大家对Git应该都不陌生,所以直接进入正题。 如果大家觉得看书面材料太无聊,推荐大家视频学习: 引用站外地址 Git核心原理 技术蛋老师 蛋蛋老师的视频真心不错,大家可以学习了这个视频以后再看下面的内容,别忘了关注 + 一键三连。其实我觉得蛋老师的视频已经足够大家学习一阵子了。 这篇图解Git操作,一篇就够写得很不错,还有图例。 什么是分支?在任何代码管理工具中, 分支都是一个非常重要的概念。分支是主线某个状态的一个复制, 在不影响主线情况下, 可以有新的变化。 实际生活中,我们的工作一般都是在一条主线(master/main)上进行,每一次提交会形成一个commit对象。客户提出了一个新的需求,而这个需求的开发需要一段时间才能完成。为了不影响主线的稳定性和持续进行。 我们会怎么做?我们可以把整个 ...
写在前面现代社会离不开网络,购物等都会选择在 Web 中进行。而且我们会发现只要登录以后,很长一段时间就不需要重新登录了,今天有空将Web中部分校验机制的知识做一个梳理(本人彩笔,如果有总结的不对的,勿喷,并请大佬评论指正,我会及时修改)。 Cookie在 Cookie 之前,先有HTTP。1991 年 HTTP 0.9 诞生了,当时只是为了满足大家浏览 web 文档的要求 ,所以只有 GET 请求,浏览完就走了,两个连接之间是没有任何联系的,所以说HTTP是一种无状态的协议,因为它诞生之初就没有这个需求。 HTTP 协议一种无状态的协议:对于事务处理没有记忆能力,每次客户端和服务端会话完成时,服务端不会保存任何会话信息。每个请求都是完全独立的,服务端无法确认当前访问者的身份信息,无法分辨上一次的请求发送者和这一次的发送者是不是同一个人。所以服务器与浏览器为了进行会话跟踪(知道是谁在访问我),就必须主动的去维护一个状态,这个状态用于告知服务端前后两个请求是否来自同一浏览器。而这个状态需要通过 cookie 或者 session 去实现。 比如我们现在日常的网上购物,需要记录用户的购物车 ...
前言不仅仅是企业中,我们平时开发时,也可以使用工作流提高开发效率。其实计算机的各种技术的逻辑都来自于生活,所以也比较好理解。 简介CICD 是 持续集成(Continuous Integration)和持续部署(Continuous Deployment)简称。指在开发过程中自动执行一系列脚本来减低开发引入 bug 的概率,在新代码从开发到部署的过程中,尽量减少人工的介入。 持续集成(Continuous Integration)现代应用开发的目标是让多位开发人员同时处理同一应用的不同功能。但是,如果企业安排在一天内将所有分支源代码合并在一起(称为“合并日”),最终可能造成工作繁琐、耗时,而且需要手动完成。这是因为当一位独立工作的开发人员对应用进行更改时,有可能会与其他开发人员同时进行的更改发生冲突。如果每个开发人员都自定义自己的本地集成开发环境(IDE),而不是让团队就一个基于云的 IDE 达成一致,那么就会让问题更加雪上加霜。 持续集成(CI)可以帮助开发人员更加频繁地(有时甚至每天)将代码更改合并到共享分支或“主干”中。一旦开发人员对应用所做的更改被合并,系统就会通过自动构建应用 ...
实验二:银行家算法实验目的 理解死锁概念,了解导致死锁的原因 掌握死锁的避免算法,理解安全状态和不安全状态的概念 理解银行家算法,并应用银行家算法避免死锁 实验内容假定有多个进程对多种资源进行请求,设计银行家算法的数据结构和程序结构,判定是否存在资源分配的安全序列。使用 C 语言或Python 语言编写程序实现这个算法并进行测试 要求: 至少5个进程 至少3类资源 结果中包含一个安全的请求和一个不安全的请求 程序流程图 程序代码本次使用了 C 语言进行程序编写,开发环境:Ubuntu 20.04,主要代码如下,完整代码在本文最后: 结构体与变量最大需求矩阵1int Max[20][20]; // Max[i][j]表示进程i对j类资源的最大需求 已分配矩阵1int Allocation[20][20]; // Allocation[i][j]表示已分配给进程i的j类资源数 需求矩阵1int Need[20][20]; // Need[i][j]表示进程i当前所需的j类资源数 现可分配资源矩阵1int Available[20]; // Av ...
实验三:内存管理实验目的 加深对分页存储管理的原理的理解 深入理解分页存储管理如何分配和回收内存 深入理解分页存储管理中的地址变换 实验内容假定页面大小为 4K,物理内存 128M,设计并实现一个内存分配和回收的程序,使用 C 语言或 Python 语言编写程序实现这个程序并进行测试。 要求: 至少5个进程 要求有空块管理 要求有一个逻辑地址到物理地址的变换 程序流程图 程序代码完整代码在最后 结构体与变量块大小和数量12#define COUNT 32768 //块数量 128M/4K#define SIZE 4096 //块大小 4*1024 位视图12int BLOCK[COUNT]; //物理块状态 0空闲1占用 使用位视图记录空块int BlankBlockNum=COUNT; //空块数量 进程12345678typedef struct ProcessList //进程属性{ int ID; //进程号 int Size; //进程大小 int Pages; //所需页数 int Page[100]; //页表 struct Proces ...
实验一:多级反馈队列调度算法实验目的通过模拟多级反馈队列进程调度算法,加深对进程调度算法、分时系统、时间片、进程优先级、进程状态、进程控制的理解。 实验内容用C语言或Python编写一个程序,模拟多级反馈队列调度算法的执行过程,要求: 队列4级,每一级的队列长度都为 10,第一级的时间片为 T,第二级的时间片为 2T,第三级的时间片为4T,第四级的时间片为 8T;(T的大小自己定) 立即抢占的调度算法; 要有:在调度n级(n>1)队列时,有新来的进程进入系统。 程序流程图 程序代码本次使用了C语言进行程序编写,开发环境:Ubuntu 20.04,主要代码如下: 结构体与变量进程12345678typedef struct Node{ int ArrivalTime; // 到达时间 int WorkTime; // 服务时间 int number; // 到达顺序 int flag; // 0等待,1运行完成 struct Node *next;} Process; 多级队列1234567typedef struct QueueList& ...
WebCheckin友好的签到题,《原神》是一款由米哈游开发的开放世界冒险角色扮演游戏,于2022年9⽉28⽇正式发售。游戏的背景设定在⼀个名为提瓦特的幻想世界,玩家将扮演一个被神秘力量分离的旅行者,通过自定义外貌、技能和装备,探索这个充满奇幻和冒险的世界。网页打开发现没有什么东西,考虑查看源码,发现右键和F12被禁⽤,那么采⽤其他方式进⾏源码查看: 1234view-source: urlcurl url浏览器禁⽤js脚本浏览器相关插件等方式 Ez_PHPinclude文件包含,使用伪协议php://filter进行读取即可。使⽤数组绕过经典MD5判断,路径中无意义的部分不会影响最后的读取 随后获得base64加密的flag,解密即可。 NormalBypassNormalShell原题代码: 12345678910111213141516<?phperror_reporting(0);highlight_file(__FILE__);if ((string)$_GET['username'] !== (string)$_GET[ ...
JK编码根据⼀连串j和k组成的序列不难想到01序列,再由题⽬描述中提到的每个字母和数字都有⼀定的重要程度(即权重)不难猜到哈弗曼编码,再由题目给出的乱序序列 jkhafum_no…的前几个字母可以看到哈夫曼的英⽂,进⼀步得到验证。之后编写哈夫曼解码程序即可。 逆转裁判由题目描述与提示,将图片文件逐字节逆序,在⼗六进制编辑器中搜索flag字符串即可,或者直接使用十六进制编辑器打开后搜索galf,也能达到相同目的。 第二条古则打开⽂件会见到⼀串不可理解的东⻄,然⽽题⽬要求从不可理解的事物中得到理解。说明答案就在其中。根据提示“B站可能会倒闭,但绝不会变质。“,上B站搜索phony(对,就是那个被特意加粗的单 词),你会看到很多的MV,但只有⼀个MV是以镜面对称的形式呈现的。只有这个MV和题干中的理解镜子中的伪物是相对应的,而且封面也是很明显的镜面字。接下来打开它,一直看到标题出现的时候,会发现那是镜面字的生成过程,而题干中出现了大量的括号……而且最重要的是,上下两行的括号正好是对应相反的。那还等什么,把括号对应着拼起来。然后你就得到了⼀串01的序列,每五个隔断一次。将它们作为二进制数字转换 ...
题目一大帝的密码武器题⽬描述: 公元前⼀百年,在罗马出⽣了⼀位对世界影响巨大的人物,他生前是罗马三巨头之⼀。他率先使⽤了⼀种简单的加密函,因此这种加密方法以他的名字命名。 加密后:FRPHQZSX 目标:得到明文信息 解题思路 凯撒密码就是将明文信息进行移位; 密钥就是1-26作为移位的依据; 因为题目并没有给出对应密钥,所以需要遍历密钥空间,将所有可能的明文信息列出来,根据分析得到真正的明文即可; 代码如下: 1234567891011121314151617def caesar(ciphertext): result = '' result_list = [] ciphertext = ciphertext.lower() #遍历密钥空间[1:26] for number in range(1, 26): for i in range(len(ciphertext)): ascii = ord(ciphertext[i]) - number if 97 <= a ...